买的LM3S811开发板中自带boot_serial中,自动检测某个GPIO引脚(该引脚的作用是接收更新程序的信号)是被屏蔽掉的。出厂的芯片中的boot_serial只检测2K(默认的应用程序起始位置)处是否存在有效的堆栈指针和复位向量,如果有的话则执行应用程序,如果没有则调用接收更新程序的代码(当然刚出厂的芯片2K后是不会有应用程序的,所以刚出厂的芯片第一次连串口用LM Flash Programmer下载程序是没有问题的),但是第一次用串口下载程序后(从2K处写)就不满足再调用接收更新程序的代码的条件了(2K处已经有了有效的堆栈指针和复位向量),所以就不能下载程序了。我想问的是为什么芯片在出厂时不把检测某个GPIO口作为更新程序的信号打开呢?如果想多次下载程序,芯片第一次必须下载自己定义的boot_serial,这样的话,每个芯片就必须下载两次程序(一个改写后的boot_serial,一个自己的应用程序,感觉写两次很麻烦),有没有好的解决办法呢?谢谢了。
此帖出自
小平头技术问答
1. 我想问的是为什么芯片在出厂时不把检测某个GPIO口作为更新程序的信号打开呢?
出厂时并不知道客户用哪个GPIO方便,这个是可以自定义的。
2. 如果想多次下载程序,芯片第一次必须下载自己定义的boot_serial,这样的话,每个芯片就必须下载两次程序(一个改写后的boot_serial,一个自己的应用程序,感觉写两次很麻烦),有没有好的解决办法呢?谢谢了。
811没有内置ROM Software,出厂烧在flash的bootloader,应该是引导到从0开始的flash地址的,并不是2k地址开始,也就是说,你使用出厂的bootloader烧写完程序后,出厂的bootloader就被覆盖了。
dustdevil系列以后的产品,内置ROM中有bootloader,可以通过程序设定检测某个GPIO来触发下载程序。
一周热门 更多>