程序烧写,升级

2019-07-21 00:26发布

很奇怪的问题!求助
片子:stm32f407IE,片上Flash 只有512k
主角:ZH816.bin(项目最终程序) , Test.bin(测试文件) ,和 boot工程(以后程序升级用的)。
工具:jFlash5.10,keil5
目的:将 ZH816.bin 烧写到0x0800 0000地址,并使之运行。


问题一:
          ZH816 和 Test 两个工程都编译通过,用keil直接下载到板子里面也都可以正常运行。keil download到板子里面默认的是 .axf文件(是吧?ps:我测试过),现在我想利用jFlash将ZH816.bin文件烧写到板子里面,那么现在问题来了: Test.bin (大小15K,裸板程序) 烧写没问题,手动复位板子后可以正常运行,但是 ZH816.bin (大小252k)烧写后,程序烧写进去了,外设初始化也都完成了,但是main函数中开的任务一个没跑起来,就是说ucos没有反应!不知为何


问题二:
          抛开问题一(彻底的)。现在我的boot程序放在0x0800 0000(片上flash开始处),其main函数只执行一句话,while(1){ iap_load_app(FLASH_APP1_ADDR); },其中FLASH_APP1_ADDR = 0x0801 0000 ,上电直接加载0x0801 0000 处的程序。问题来了:当我将Test.bin 通过jFlash烧写到0x0801 0000 处后,复位,两套程序(boot和Test)正常运行,但是我将ZH816烧到0x0801 0000处后,死机,ZH816的main函数都没进来。


恳请哪位大神指点,希望两个问题的原因是同一个。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。