|
我就简单的描述一下情况,这个问题困扰两天都没解决,感觉有点迷茫了,请大神指点一下,非常感谢。
也写入的函数如下:
- void boot_write_one_page(void)
- {
- unsigned int i;
- DataUnionByte TempData;
- eeprom_busy_wait();
- boot_page_erase(address); /* 擦除一页 */
- boot_spm_busy_wait(); /* 等待擦除完成*/
- for (i=0;i<DATA_BUFFER_SIZE;i+=2)
- {
- TempData.databuff8[0]=databuff.databuff8[i];
- TempData.databuff8[1]=databuff.databuff8[i+1];
- boot_page_fill_safe(i,TempData.databuff16);
- }
- boot_page_write_safe(address); /* 写入一页 */
- boot_rww_enable_safe();
- }
复制代码
用的是atmega32单片机,主要问题是,在用bootloader写入程序之后,通过jmp 0x0000直接跳到app区的代码开始执行,但是结果是当通过bootloader烧入程序之后,程序并没有运行。
下面说一下我用的工具等情况:
开发环境是atmelstudio 6(avrstudio 6)
bootloader 上位机用的是avrubd,来自邵子扬老师
通过开发环境生成hex文件,然后通过bootloader上位机烧入hex文件,上位机提示烧写成功,下位机无反映。通过flash读取函数读出来的数据与写入的一致,!也就是写入的数据是没有问题的。
静候大神指点,有什么地方不明确的地方欢迎提出,谢谢! |
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|