OpenEdv-开源电子网

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

stm32的bootloader问题

[复制链接]

43

主题

152

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2013-8-11
在线时间
57 小时
发表于 2016-8-18 18:56:25 | 显示全部楼层 |阅读模式
1金钱
我用的stm32f103CBT6的芯片sram只有20k,没有加外部ram,在bootloader的时候接受从串口发来的数据存在sram里,之后再烧到flash,但是我的需要更新的app程序超过了20k(bin文件),这怎么解决?

最佳答案

查看完整内容[请看2#楼]

谁让你一下子接收整个文件了?把文件分割成多块(例如每块2KB),通过协议逐块接收然后刷到单片机的flash里面不就得了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

27

主题

711

帖子

0

精华

版主

Rank: 7Rank: 7Rank: 7

积分
12487
金钱
12487
注册时间
2015-11-5
在线时间
2141 小时
发表于 2016-8-18 18:56:26 | 显示全部楼层
谁让你一下子接收整个文件了?把文件分割成多块(例如每块2KB),通过协议逐块接收然后刷到单片机的flash里面不就得了
回复

使用道具 举报

11

主题

1044

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3720
金钱
3720
注册时间
2011-5-23
在线时间
2012 小时
发表于 2016-8-18 19:04:03 | 显示全部楼层
FLASH容量上M的怎么办?
RT-Thread RTOS 音频,WIFI,蓝牙
回复

使用道具 举报

43

主题

152

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2013-8-11
在线时间
57 小时
 楼主| 发表于 2016-8-19 10:58:14 | 显示全部楼层
FreeRTOS 发表于 2016-8-18 18:56
谁让你一下子接收整个文件了?把文件分割成多块(例如每块2KB),通过协议逐块接收然后刷到单片机的flash里 ...

您看下我的这个思路:文件是从串口一下整体发过来的,那我串口中断接收的时候,收到2k的数,就先刷到flash里,然后如果USART->DR中还有数就再接受2k刷到flsh里,这样下去直到USART->DR中没数。
但是有个疑惑:我的stm32的串口还没读取串口的数的时候,那些数都存到了哪里?
回复

使用道具 举报

27

主题

711

帖子

0

精华

版主

Rank: 7Rank: 7Rank: 7

积分
12487
金钱
12487
注册时间
2015-11-5
在线时间
2141 小时
发表于 2016-8-19 12:25:50 | 显示全部楼层
本帖最后由 FreeRTOS 于 2016-8-19 12:28 编辑
miss_lion 发表于 2016-8-19 10:58
您看下我的这个思路:文件是从串口一下整体发过来的,那我串口中断接收的时候,收到2k的数,就先刷到flas ...

你好像还没想通,我的意思是说你必须按照某个协议来做一个上位机,然后单片机也必须严格按照相同的协议跟上位机通信

例如一个10KB的文件,上位机必须将这个10KB的文件分割,至于如何分割你自己用上位机设计,例如分割成10份1KB的块,单片机每次只能接收1个块(严格按照协议来传输),由于1块是1KB,那么单片机接收到第一块之后就要停止接收,必须先把第一块数据刷到flash里面或者外部存储器(如25Q64),第一块处理完了再开启串口接收,按照协议让上位机发送第二块。。。如此类推

由于用串口传输有数据出错的可能性,因此建议传输协议必须加个校验,单片机每接收完一块数据之后一定要进行校验,只有校验通过了才处理,校验不通过就让上位机重发

如果你自己不会设计上位机,据我了解有个叫xmodem的东东,你可以按照它的现成协议传输,反正思想是一样的

拿来长岛冰茶换我半晚安睡
回复

使用道具 举报

43

主题

152

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2013-8-11
在线时间
57 小时
 楼主| 发表于 2016-8-30 10:20:53 | 显示全部楼层
FreeRTOS 发表于 2016-8-19 12:25
你好像还没想通,我的意思是说你必须按照某个协议来做一个上位机,然后单片机也必须严格按照相同的协议跟 ...

我是用的网络模块从服务器拿的包,我往服务器放包的时候提前先分割好了。我从服务器顺序下载安装。谢谢您的耐心回复
回复

使用道具 举报

27

主题

711

帖子

0

精华

版主

Rank: 7Rank: 7Rank: 7

积分
12487
金钱
12487
注册时间
2015-11-5
在线时间
2141 小时
发表于 2016-8-30 12:56:16 | 显示全部楼层
miss_lion 发表于 2016-8-30 10:20
我是用的网络模块从服务器拿的包,我往服务器放包的时候提前先分割好了。我从服务器顺序下载安装。谢谢您 ...

我们公司也是把升级文件放到服务器,服务器会自动把文件进行分块而不需要手动分割,对于单片机而言就是按块号码来下载升级的
拿来长岛冰茶换我半晚安睡
回复

使用道具 举报

43

主题

152

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2013-8-11
在线时间
57 小时
 楼主| 发表于 2016-8-31 12:08:22 | 显示全部楼层
FreeRTOS 发表于 2016-8-30 12:56
我们公司也是把升级文件放到服务器,服务器会自动把文件进行分块而不需要手动分割,对于单片机而言就是按 ...

我是统一包的大小,这样要下载到芯片内的地址就可以确定,然后用的文件分割软件手动分割,其实大同小异
回复

使用道具 举报

3

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
136
金钱
136
注册时间
2015-3-21
在线时间
20 小时
发表于 2016-9-24 15:17:57 | 显示全部楼层
收一页写一页
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-24 21:35

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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