STM32F107 串口IAP遇到问题(已经搞一个星期了) 请求技术...
如题我采用stm32f107串口做IAP固件升级,BOOT程序写好 测试bin文件小于11k下载运行良好,bin文件到20k以上时使用超级终端就更新失败。这是我boot程序
https://pan.baidu.com/s/1gdrc5az
boot程序配置
1、
2、#define ApplicationAddress 0x8010000
3、int main(void)
{
FLASH_Unlock();
NVIC_SetVectorTable(0x08000000,0x00);
__disable_irq();//关闭中断
IAP_Init();//串口初始化
if (ucUpdateFlag==1)//升级标志一直为1
{
Main_Menu();//更新固件
}
}
4、程序跳转
if (((*(__IO uint32_t*)ApplicationAddress) & 0x2FFE0000 ) == 0x20000000)
{
SerialPutString("Execute user Program\r\n\n");
JumpAddress = *(__IO uint32_t*) (ApplicationAddress + 4);
Jump_To_Application = (pFunction) JumpAddress;
__set_MSP(*(__IO uint32_t*) ApplicationAddress);
Jump_To_Application();
}
APP程序配置
1、
2、下面是测试程序bin文件使用jlink下载测过都可以良好运行。
希望大家帮帮我多谢!
试一下我的。
https://pan.baidu.com/s/1sjufXaH xulay 发表于 2014-11-5 15:54
试一下我的。
https://pan.baidu.com/s/1sjufXaH
你的不知道怎么用 本帖最后由 xulay 于 2014-11-5 16:20 编辑
说不定 发表于 2014-11-5 16:16
你的不知道怎么用
hex是bootloader,用jlink烧进去,exe是pc端iap烧录程序。
有人能帮我找原因吗 先确认是更新失败,还是执行失败?
还有,前面更新程序,如果是接收到所有数据存到RAM,然后再写FLASH,RAM满了的原因? MouseCat 发表于 2014-11-5 22:44
先确认是更新失败,还是执行失败?
还有,前面更新程序,如果是接收到所有数据存到RAM,然后再写FLASH,RA ...
经过测试原来的LED程序我咋其中加入大量数组使用 使得生成BIN文件达到56k,还是能更新。其他的不能更新的 原因确定是跳转后进入硬件错误中断。是地址跳转错误 真是奇怪了 MouseCat 发表于 2014-11-5 22:44
先确认是更新失败,还是执行失败?
还有,前面更新程序,如果是接收到所有数据存到RAM,然后再写FLASH,RA ...
你好,如何检测是否RAM溢出了昵
Total ROSize (Code + RO Data) 56876 (55.54kB)
Total RWSize (RW Data + ZI Data) 1672 ( 1.63kB)
Total ROM Size (Code + RO Data + RW Data) 56916 (55.58kB)
上面这样的程序能够更新成功,下面的程序就是跳转时进入硬件错误中断
Total ROSize (Code + RO Data) 40540 (39.59kB)
Total RWSize (RW Data + ZI Data) 22048 (21.53kB)
Total ROM Size (Code + RO Data + RW Data) 47040 (45.94kB)
说不定 发表于 2014-11-6 09:33
你好,如何检测是否RAM溢出了昵
Total ROSize (Code + RO Data) 56876 (55.54kB ...
问题解决了吗?bootloader程序中
int32_t Ymodem_Receive (uint8_t *buf)函数中的定义 是否定义的最大字节数?为
(PACKET_1K_SIZE + PACKET_OVERHEAD) * FILE_SIZE_LENGTH 大约16K的升级包
uint8_t packet_data, file_size,
for (i = 0, file_ptr ++; (*file_ptr != ' ') && (i < FILE_SIZE_LENGTH);)
我认为应该是这里出了问题 大于16K 会出问题
还有就是bootloader堆栈的大小 要注意下 MDK不熟悉 没找到堆栈的大小 品读记忆 发表于 2014-11-12 17:08
问题解决了吗?bootloader程序中
int32_t Ymodem_Receive (uint8_t *buf)函数中的定义 是否定义的最大字 ...
我问题没找到是什么原因后来去官网重新下载移植就ok了
页:
[1]
2