硬汉嵌入式论坛

 找回密码
 立即注册
查看: 913|回复: 3
收起左侧

[技术讨论] 基于系统bootloader的串口IAP升级,设置读保护后卡死

[复制链接]

1

主题

4

回帖

7

积分

新手上路

积分
7
发表于 2022-7-27 13:08:48 | 显示全部楼层 |阅读模式
参考了 "基于系统bootloader的串口IAP方式固件升级"   ,平常使用flymcu下载程序,下载时会一直发送0x7F命令,以下代码可以实现一键升级。测试时候用的挺好,不过产品最终增加了读保护的功能,设置了读保护之后,跳转到内置bootloader就会死机。
请问有没有什么好的解决方案?



[C] 纯文本查看 复制代码
/**判断是否自动进入ISP模式,更新程序**/
void CheckISPMode(uint8_t _byte)
{
	//FLYMCU 下载时会发送0x7F命令,可以实现一键下载功能
	if(_byte == 0x7F)
	{
		gIspCnt++;
		if(gIspCnt >= 9)
		{

			JumpToApplication(0x1FFFF000); /* STM32F1的系统BootLoader地址 */
			//JumpToApplication(0x1FFFB000); /*  GD32F1的系统BootLoader地址 */
			//g_JumpInit = 0xAA550520;
			//NVIC_SystemReset();
		}
	}
	else
	{
		gIspCnt = 0;
	}
}


回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
111540
QQ
发表于 2022-7-27 16:29:09 | 显示全部楼层
使用STM32CubeProg下载是否正常。
回复

使用道具 举报

1

主题

4

回帖

7

积分

新手上路

积分
7
 楼主| 发表于 2022-7-28 16:57:28 | 显示全部楼层
eric2013 发表于 2022-7-27 16:29
使用STM32CubeProg下载是否正常。

没有启用读保护的时候可以正常下载,启用之后就报错了。
回复

使用道具 举报

1

主题

4

回帖

7

积分

新手上路

积分
7
 楼主| 发表于 2022-7-29 23:31:55 | 显示全部楼层
eric2013 发表于 2022-7-27 16:29
使用STM32CubeProg下载是否正常。

经过测试,大概知道了原因。启用读保护之后跳转到系统bootloader是正常,但是如果要下载程序就必须解除读保护,芯片在解除读保护之后会产生一个复位,此时如果boot0是高电平,则可以进入bootloader继续下载程序,但是因为我是软件跳转到系统bootloader的,boot0状态没有改变,所以解除读保护之后(flash清空)就卡死了。
综上,使用跳转到系统bootloader的方式测试还行,不能用于生产。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-11-1 07:21 , Processed in 0.223690 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表