GD32F130 后32K Flash代码执行问题

[复制链接]
6238|27
手机看帖
扫描二维码
随时随地手机跟帖
molave20a|  楼主 | 2015-7-31 01:55 | 显示全部楼层 |阅读模式
目前有个项目用的是GD32F130G8U6这颗芯片,手册里说后32K FALSH执行速度比较慢,所以目前工程中大部分代码定义在前32K FLASH里面,后32K FLASH用于存放一些常量等,如 const uint8_t test_string[]="1234567890".

在调试中发现,若执行了后32K的代码(如引用了上面这个数组),有时候会导致串口中断异常,如UART RX接收100KBytes的数据,会漏掉3个Bytes左右。若引用了这个数组之后,再等10s左右开始收数据,则不会丢字节。

快被这个问题整崩溃了~~求大神支招!
dbayj| | 2015-8-4 12:43 | 显示全部楼层
只能尽量优化代码,能存在前面就存在前面,不要为了用flash而用flash,后面的闲着也罢。

使用特权

评论回复
shdjdq| | 2015-8-5 09:00 | 显示全部楼层
不知道速度到底差多少?

使用特权

评论回复
myxiaonia| | 2017-4-8 15:39 | 显示全部楼层
因为gd32使用sram映射spi flash,前32k是由sram全部映射的,正是因为是sram才没有像stm32等其他flash会有等待设置,但是32k后面只有2k的sram来缓存,当访问地址是32k后面的,此时缓存中保持的又不是这个地址,相当于有mmu的cpu访问cache不命中会访存,gd32是访问spi flash,想想会有多慢,而且也不知道是不是整页访问的

使用特权

评论回复
评论
CharryW 2018-7-19 10:13 回复TA
这波分析很到位,学习了 
vivilzb1985| | 2017-4-11 20:09 | 显示全部楼层
myxiaonia 发表于 2017-4-8 15:39
因为gd32使用sram映射spi flash,前32k是由sram全部映射的,正是因为是sram才没有像stm32等其他flash会有等 ...

这个分析非常细致的,,赞一个

使用特权

评论回复
shdjdq| | 2017-4-11 20:36 | 显示全部楼层
GD的MCU有优点,也有缺点。但这个缺点也太大了些。为什么就不能全部映射到RAM?

使用特权

评论回复
whtwhtw| | 2017-4-12 10:12 | 显示全部楼层
shdjdq 发表于 2017-4-11 20:36
GD的MCU有优点,也有缺点。但这个缺点也太大了些。为什么就不能全部映射到RAM? ...

RAM多贵啊,全部映射就没有价格优势了

使用特权

评论回复
whtwhtw| | 2017-4-12 10:13 | 显示全部楼层
另外想问一下,是不是所有GD32都是映射一半的flash存储器到sram?

使用特权

评论回复
shdjdq| | 2017-4-12 13:11 | 显示全部楼层
还有一个无法忍受的缺点:写FLASH太慢,如果掉电保存的数据比较多,就没有办法了。

使用特权

评论回复
myxiaonia| | 2017-4-13 13:56 | 显示全部楼层
shdjdq 发表于 2017-4-12 13:11
还有一个无法忍受的缺点:写FLASH太慢,如果掉电保存的数据比较多,就没有办法了。 ...

写还行吧,擦还要慢

使用特权

评论回复
desertsailor| | 2017-4-15 09:08 | 显示全部楼层
后32K就是**肋,太慢,没什么用。

使用特权

评论回复
firstblood| | 2017-4-18 23:40 | 显示全部楼层
这个除开执行速度上有差异的,还有啥?

使用特权

评论回复
smilingangel| | 2017-4-22 12:21 | 显示全部楼层
这个最好是优化代码的

使用特权

评论回复
洗澡哥2011| | 2017-9-5 10:58 | 显示全部楼层
楼主后续怎么处理呢?问题解决了吗?

使用特权

评论回复
lin1612| | 2017-9-8 16:10 | 显示全部楼层
你用GD32F330这个IC吧,跟130是pin对pin的,程序直接用130的不用改,我最近跑ucos代码40多K,也出现刷屏慢的现象,直接换到330上面就可以了,330价格比130还便宜一丢丢

使用特权

评论回复
shenmu2012| | 2017-9-16 13:36 | 显示全部楼层
合理利用就成,没啥必须要纠结的

使用特权

评论回复
最强芯| | 2017-9-16 17:47 | 显示全部楼层
lin1612 发表于 2017-9-8 16:10
你用GD32F330这个IC吧,跟130是pin对pin的,程序直接用130的不用改,我最近跑ucos代码40多K,也出现刷屏慢 ...

回复赞

使用特权

评论回复
imdx| | 2018-7-21 12:33 | 显示全部楼层
洗澡哥2011 发表于 2017-9-5 10:58
楼主后续怎么处理呢?问题解决了吗?

解决方法就是GD32F130当32kB器件用,需要64kB器件用GD32F330

使用特权

评论回复
座机呀| | 2018-7-21 22:54 | 显示全部楼层
GD32F1x0_ScatterLoading_V3.1.0
你可能需要这个

使用特权

评论回复
baimiaocun2015| | 2018-7-22 15:39 | 显示全部楼层
这个主要是涉及到地址的操作的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

7

帖子

1

粉丝