freescale(nxp) 9s12g的bootloader升级app问题请教
最近在学习freescale的9s12g的开发,遇到一个程序升级想不明白,想请教下各位大神:
我目前的想法是:
bootloader的代码单独放到一个16K的flash区域A,app放另一个16K的flash区域B,启动时如果需要升级,就将接收到的s19文件,根据解析出来的记录的地址,将数据写到相应的地址上。
目前的困惑是:
1、bootloader和app是分为2个工程,还是一个工程呢?如果是分2个工程,app工程建立后也是需要初始化,然后跳到main函数执行的,那这个跟bootloader工程的main函数不会冲突吗? 对比bootloader和app工程的s19文件,有的记录地址是一样的,但是代码内容不一样,那这种冲突要怎么解决呢?
2、如果将bootloader和app整合在一个工程呢里,升级时,只要解析到的s19文件的记录地址是bootloader所在的区域,就不去擦写,其余的记录都擦写,这样可行吗? 因为bootloader区域是始终不擦写的,那bootloader里是否有硬编码 app工程的跳转地址呢? 如果有的话,跳转应该就会有问题了吧?
还请有经验的大神指点一二。