今天早上看了一上午的bootloader简单源码,终于捋顺了bootloader的执行过程,之前只是知道bootloader代码会先被irom中的代码拷贝到iram中一部分,然后执行这部分代码,会把整个bootloader代码拷贝到sdram中,最终在sdram执行剩下的代码,而这段代码会把kernel拷贝到sdram的某个地址,最终引导起来整个内核。但是我今天早上看代码的时候看到一个问题,我所有的代码都是自己动手实现的,只要一步一步按照顺序来,不就可以实现么?为什么还要拷贝来拷贝去的。感觉直接按照跳转的方式,跳转值进行指令的跳转就行,但是想过之后,我意识到自己真是无知了。比如说在irom中执行的时候,会有一次跳转到iram中某一个地址,当然pc是肯定可以直接跳转到指定的任何一个地址,但是在这个地址中没有存放指令码,这时候,肯定是一个有去无回的过程,不仅这样,这个pc跳到这里后,就会很迷茫,前不着村,后不着店的,不知道自己的所去所从,就会死到这里。只有先把代码拷贝到将要跳转的地址中,pc指针才会顺着跳转后的指令继续执行,也就是说每一个指令都要负责人,确保执行完这个指令后,一定要有另一个指令去接纳pc。这样pc才会一直活在我的代码中。今天早上看了一上午的bootloader简单源码,终于捋顺了bootloader的执行过程,之