in what case we should change "startup.a51"! thank you !
I suppose the flip answer would be "whenever you want it to do something differently". The most common reason to change the file to to change the memory initialization parameters to fit your particular system. The system will initialize xdata, idata, etc, set up the reentrant stacks if you use that feature, set the page of xdata where pdata exists, and so on. Unless your project just happens to match the memory configuration in the supplied file, you'll probably want to change it. Or perhaps you don't want the memory initialized at all, and so you do away with almost all of the code. In my own current project, we've got some additional code in there that is involved with the boot loader and our banking hardware. Things that happen before main() go in startup.a51.