OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3855|回复: 29

IAP升级,来pick你最喜欢的选项吧

[复制链接]

82

主题

589

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1255
金钱
1255
注册时间
2017-11-18
在线时间
296 小时
发表于 2019-1-18 17:57:12 | 显示全部楼层 |阅读模式
做IAP升级方案时候,你们是把IAP程序烧写到Flash从前面地址开始还是后面某个地址开始呢?
A.前面,从0x08000000开始
B.后面,比如0x080x0000

pick A还是B呢?我选择B~
小伙伴们快快来pick你们最喜爱的选项吧~~
没有脑袋
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

9

主题

796

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2038
金钱
2038
注册时间
2017-8-2
在线时间
522 小时
发表于 2019-1-22 17:38:03 | 显示全部楼层
我们公司都是写在前面的。开始升级时先将原程序拷贝至最后,假定8000000-8004000为boot程序,应用程序为8004000-8010000,则在开始升级程序时,将原应用程序放至8010000-8016000。然后开始拷贝新程序至8004000-8010000,若升挂则将原应用程序放至8004000-8010000。若成功则删除原应用程序。如果应用程序太大就不能用这个办法了
回复 支持 1 反对 0

使用道具 举报

3

主题

1155

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7464
金钱
7464
注册时间
2015-1-15
在线时间
1368 小时
发表于 2019-1-18 18:26:52 | 显示全部楼层
A,一般B升级挂了就无法继续升级了,除非你又是搞多套APP备份,感觉麻烦
一分耕耘一分收获。
回复 支持 反对

使用道具 举报

70

主题

6763

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13129
金钱
13129
注册时间
2012-11-26
在线时间
3814 小时
发表于 2019-1-18 18:28:33 | 显示全部楼层
聪明人都选A
回复 支持 反对

使用道具 举报

2

主题

685

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3448
金钱
3448
注册时间
2017-7-4
在线时间
869 小时
发表于 2019-1-18 21:31:01 | 显示全部楼层
B。那些说升挂的问题,是自己程序设计问题,设计有问题放哪里都会成砖头。
回复 支持 反对

使用道具 举报

0

主题

168

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
286
金钱
286
注册时间
2018-12-31
在线时间
12 小时
发表于 2019-1-19 10:20:10 | 显示全部楼层
我喜欢从后面
回复 支持 反对

使用道具 举报

82

主题

589

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1255
金钱
1255
注册时间
2017-11-18
在线时间
296 小时
 楼主| 发表于 2019-1-19 11:50:27 | 显示全部楼层
yklstudent 发表于 2019-1-18 18:26
A,一般B升级挂了就无法继续升级了,除非你又是搞多套APP备份,感觉麻烦

是吗?那你IAP放在开头,有什么比较方便调试应用程序的方法吗?
没有脑袋
回复 支持 反对

使用道具 举报

82

主题

589

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1255
金钱
1255
注册时间
2017-11-18
在线时间
296 小时
 楼主| 发表于 2019-1-19 11:50:58 | 显示全部楼层

要讲理由,摆事实哦~说说看你的想法
没有脑袋
回复 支持 反对

使用道具 举报

82

主题

589

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1255
金钱
1255
注册时间
2017-11-18
在线时间
296 小时
 楼主| 发表于 2019-1-19 11:51:21 | 显示全部楼层

理由呢?
没有脑袋
回复 支持 反对

使用道具 举报

70

主题

6763

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13129
金钱
13129
注册时间
2012-11-26
在线时间
3814 小时
发表于 2019-1-19 13:43:46 | 显示全部楼层
Acuity 发表于 2019-1-18 21:31
B。那些说升挂的问题,是自己程序设计问题,设计有问题放哪里都会成砖头。

逗        
学无止境
回复 支持 反对

使用道具 举报

70

主题

6763

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13129
金钱
13129
注册时间
2012-11-26
在线时间
3814 小时
发表于 2019-1-19 13:44:09 | 显示全部楼层

他意思喜欢从后面ML
学无止境
回复 支持 反对

使用道具 举报

17

主题

587

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4467
金钱
4467
注册时间
2013-6-27
在线时间
565 小时
发表于 2019-1-19 15:16:01 | 显示全部楼层
本帖最后由 DongInker 于 2019-1-19 15:23 编辑

A  烧写一半突然异常(烧写一半停电,掉线) 重新引导下就可以烧写了(比如上电长按某个按键强制进入boot),
毕竟拆机烧写很郁闷。至于调试程序我都是使用串口进行命令交互的,
发现设备有问题就开启相应打印级别的信息打印跟踪问题。
让我们的思维驾驭在电的速度之上!
回复 支持 反对

使用道具 举报

3

主题

1155

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7464
金钱
7464
注册时间
2015-1-15
在线时间
1368 小时
发表于 2019-1-19 19:01:16 | 显示全部楼层
美丽的时光机器 发表于 2019-1-19 11:50
是吗?那你IAP放在开头,有什么比较方便调试应用程序的方法吗?

把你的IAP程序放置到APP中编译与下载,那样调试就可以了
不过你直接APP下载也可以调试,只不过别擦除FLASH就可以了
一分耕耘一分收获。
回复 支持 反对

使用道具 举报

2

主题

685

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3448
金钱
3448
注册时间
2017-7-4
在线时间
869 小时
发表于 2019-1-19 23:29:20 | 显示全部楼层
DongInker 发表于 2019-1-19 15:16
A  烧写一半突然异常(烧写一半停电,掉线) 重新引导下就可以烧写了(比如上电长按某个按键强制进入boot) ...

不是所有产品都有按键的。boot、app设计原则:
1、boot放前面,app放后面;
2、boot只做拷贝工作;
3、app接收升级包并保存到备份区,复位后,boot起来拷贝备份区到app区。
这种方式还有个好处就是灵活,boot可以做得很小很小;固件小直接使用内部flash作备份区,固件大外观spi flash作备份区。
做好校验,断电、中断。。。怎么升级都没事。
回复 支持 反对

使用道具 举报

2

主题

685

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3448
金钱
3448
注册时间
2017-7-4
在线时间
869 小时
发表于 2019-1-19 23:38:42 | 显示全部楼层
Acuity 发表于 2019-1-18 21:31
B。那些说升挂的问题,是自己程序设计问题,设计有问题放哪里都会成砖头。

IAP就是boot?理解成APP了!
回复 支持 反对

使用道具 举报

17

主题

587

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4467
金钱
4467
注册时间
2013-6-27
在线时间
565 小时
发表于 2019-1-20 17:17:17 | 显示全部楼层
本帖最后由 DongInker 于 2019-1-20 17:18 编辑
Acuity 发表于 2019-1-19 23:29
不是所有产品都有按键的。boot、app设计原则:
1、boot放前面,app放后面;
2、boot只做拷贝工作;


我说的是电脑键盘按键哦,靠串口接收解码规则。
让我们的思维驾驭在电的速度之上!
回复 支持 反对

使用道具 举报

2

主题

685

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3448
金钱
3448
注册时间
2017-7-4
在线时间
869 小时
发表于 2019-1-21 00:16:47 | 显示全部楼层
DongInker 发表于 2019-1-20 17:17
我说的是电脑键盘按键哦,靠串口接收解码规则。

我们公司做的产品,单片机不是挂电脑,通过usb或者串口挂在嵌入式Linux端,没有键盘。
回复 支持 反对

使用道具 举报

82

主题

589

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1255
金钱
1255
注册时间
2017-11-18
在线时间
296 小时
 楼主| 发表于 2019-1-21 13:12:12 | 显示全部楼层
DongInker 发表于 2019-1-19 15:16
A  烧写一半突然异常(烧写一半停电,掉线) 重新引导下就可以烧写了(比如上电长按某个按键强制进入boot) ...

串口命令交互,厉害!
没有脑袋
回复 支持 反对

使用道具 举报

82

主题

589

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1255
金钱
1255
注册时间
2017-11-18
在线时间
296 小时
 楼主| 发表于 2019-1-21 13:16:36 | 显示全部楼层
yklstudent 发表于 2019-1-19 19:01
把你的IAP程序放置到APP中编译与下载,那样调试就可以了
不过你直接APP下载也可以调试,只不过别擦除FLA ...

也是  等发布时候再修改偏移重新编译就好,就稍微麻烦而已
没有脑袋
回复 支持 反对

使用道具 举报

82

主题

589

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1255
金钱
1255
注册时间
2017-11-18
在线时间
296 小时
 楼主| 发表于 2019-1-21 13:18:35 | 显示全部楼层
Acuity 发表于 2019-1-19 23:29
不是所有产品都有按键的。boot、app设计原则:
1、boot放前面,app放后面;
2、boot只做拷贝工作;

学习了  谢谢!
没有脑袋
回复 支持 反对

使用道具 举报

2

主题

685

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3448
金钱
3448
注册时间
2017-7-4
在线时间
869 小时
发表于 2019-1-21 21:56:05 | 显示全部楼层
DongInker 发表于 2019-1-20 17:17
我说的是电脑键盘按键哦,靠串口接收解码规则。

有些场合,单片机是通过串口或者USB挂在嵌入式Linux端,没有按键。
回复 支持 反对

使用道具 举报

19

主题

246

帖子

0

精华

高级会员

Rank: 4

积分
608
金钱
608
注册时间
2017-9-21
在线时间
171 小时
发表于 2019-1-22 16:07:25 | 显示全部楼层
当然是A,APP怎么出错只要每次开机都是先进BootLoader再选择是否加载APP就能保证你永远都可以更新APP,不然真的会变成砖头
回复 支持 反对

使用道具 举报

82

主题

589

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1255
金钱
1255
注册时间
2017-11-18
在线时间
296 小时
 楼主| 发表于 2019-1-22 16:35:56 | 显示全部楼层
哆啦A萌 发表于 2019-1-22 16:07
当然是A,APP怎么出错只要每次开机都是先进BootLoader再选择是否加载APP就能保证你永远都可以更新APP,不然 ...

我选择B就是因为我弄了两个app进去,然后IAP在Flash后面,每次更新程序都只更新app2,以后就运行在app2,当升级挂了重启就进入app1运行,这样就能保证基本业务了
没有脑袋
回复 支持 反对

使用道具 举报

3

主题

312

帖子

0

精华

高级会员

Rank: 4

积分
907
金钱
907
注册时间
2011-10-19
在线时间
196 小时
发表于 2019-1-22 16:47:59 | 显示全部楼层
我想知道F4系列Flash后面扇区单个扇区大小是128KB,怎么将BootLoader放后面?
回复 支持 反对

使用道具 举报

82

主题

589

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1255
金钱
1255
注册时间
2017-11-18
在线时间
296 小时
 楼主| 发表于 2019-1-23 09:17:46 | 显示全部楼层
323232 发表于 2019-1-22 17:38
我们公司都是写在前面的。开始升级时先将原程序拷贝至最后,假定8000000-8004000为boot程序,应用程序为800 ...

好方法~学习了!
没有脑袋
回复 支持 反对

使用道具 举报

2

主题

685

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3448
金钱
3448
注册时间
2017-7-4
在线时间
869 小时
发表于 2019-2-16 21:37:45 | 显示全部楼层
323232 发表于 2019-1-22 17:38
我们公司都是写在前面的。开始升级时先将原程序拷贝至最后,假定8000000-8004000为boot程序,应用程序为800 ...

应用程序太大,外挂spi flash。
回复 支持 反对

使用道具 举报

6

主题

315

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1669
金钱
1669
注册时间
2018-1-29
在线时间
160 小时
发表于 2019-2-17 20:45:20 | 显示全部楼层
美丽的时光机器 发表于 2019-1-19 11:50
是吗?那你IAP放在开头,有什么比较方便调试应用程序的方法吗?

我选A,我是先把BootLoader烧进FLASH,调试APP程序时,把APP程序的起始地址偏移量修改一下,在代码中把中断向量重新映射一下,就能在KeilMDK下调试了!
你们不是这样弄的吗?
回复 支持 反对

使用道具 举报

9

主题

796

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2038
金钱
2038
注册时间
2017-8-2
在线时间
522 小时
发表于 2019-2-18 08:42:41 | 显示全部楼层
Acuity 发表于 2019-2-16 21:37
应用程序太大,外挂spi flash。

几块钱的成本 公司可以讨论上半天.....       尤其是加了成本    外在又不会增加什么新功能的情况下.....你懂的
猪猪熊呢?
回复 支持 反对

使用道具 举报

2

主题

685

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3448
金钱
3448
注册时间
2017-7-4
在线时间
869 小时
发表于 2019-2-18 23:59:48 | 显示全部楼层
323232 发表于 2019-2-18 08:42
几块钱的成本 公司可以讨论上半天.....       尤其是加了成本    外在又不会增加什么新功能的情况下..... ...

那由得他们讨论,我只给方案供选择。我们公司程序复杂的就是外挂spi flash存储。
回复 支持 反对

使用道具 举报

2

主题

685

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3448
金钱
3448
注册时间
2017-7-4
在线时间
869 小时
发表于 2019-2-19 00:00:49 | 显示全部楼层
323232 发表于 2019-2-18 08:42
几块钱的成本 公司可以讨论上半天.....       尤其是加了成本    外在又不会增加什么新功能的情况下..... ...

不对,没什么功能用内部flash足够了。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-23 19:07

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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