打印

GD32F130R8T6发现严重BUG

[复制链接]
5111|32
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xhaity|  楼主 | 2021-1-11 23:00 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
当程序超过32K时,一条指令时间超长,用8M内部振荡器,一条指令长达20us;花了2周时间查问题,已经确定是mcu问题,还有谁遇到过?

使用特权

评论回复
沙发
99520| | 2021-1-12 00:38 | 只看该作者
flash部分,这个不是bug,也不严重,这个叫“特性”,你仔细看看官方手册里面写了

使用特权

评论回复
板凳
imdx| | 2021-1-12 07:06 | 只看该作者
本帖最后由 imdx 于 2021-1-12 08:04 编辑

这不是bug,这是特性,用户手册上写得明明白白。GD32F130只有前面32k闪存是0等待的。64kB器件的后32kB访问有很长的延时,至于多长的延时,手册没有说。
简单来说,你把GD32F130C8T6当做一个32kB的器件来用就行了。
手册上还没有明确的一点是:对于FLASH不大于32kB的型号,比如32kB,16kB的型号,是否全部FLASH都是0等待?
猜测应该是全部0等待,否则对于16kB的型号,只有前面8kB是0等待那就没法用了。希望GD的FAE看到能给澄清一下。

使用特权

评论回复
地板
xhaity|  楼主 | 2021-1-12 11:01 | 只看该作者
imdx 发表于 2021-1-12 07:06
这不是bug,这是特性,用户手册上写得明明白白。GD32F130只有前面32k闪存是0等待的。64kB器件的后32kB访问 ...

谢谢,看到了,第一次遇到这个问题,没仔细看这句话;GD32F130 整个系列前32K是0等待,小于32k的mcu全0等待。

使用特权

评论回复
5
xdqfc| | 2021-1-12 11:31 | 只看该作者
看看这个标题。

使用特权

评论回复
6
xhaity|  楼主 | 2021-1-12 15:07 | 只看该作者
本帖最后由 xhaity 于 2021-1-12 15:10 编辑

  高达64KB字节的片上闪存可用于存储指令或数据;
  在闪存的前32K字节空间内,CPU执行指令零等待;
  从闪存的32K ~ 64K地址空间内取数据有比较长的延迟;

从User_Manual 看有这三句话, 比较长的延迟,是什么话啊,找不到任何参数, 从目前分析, 后32k就是加了一个串行的data flash,可以当作code flash用,具体有多少延迟,“它妈”也不知道; 而且是说取数据,没有说取指令; 也许二货说的取数据包括取指令

使用特权

评论回复
7
fcccc| | 2021-1-12 18:24 | 只看该作者
AT32没有这个问题,建议试试

使用特权

评论回复
8
fuhelian| | 2021-1-12 20:18 | 只看该作者
芯片内部就是用的串行flash,前32k上电后加载到ram里面运行,所以说芯片里面有一个大于32k的ram,雅特力也采用类似架构,所以ram大小可以自己设定

使用特权

评论回复
9
xhaity|  楼主 | 2021-1-12 23:30 | 只看该作者
fuhelian 发表于 2021-1-12 20:18
芯片内部就是用的串行flash,前32k上电后加载到ram里面运行,所以说芯片里面有一个大于32k的ram,雅特力也 ...

可能性不大,如果加载到ram运行的话,系统总线频率不可能从72MHz修正到48MHz

使用特权

评论回复
10
weifeng90| | 2021-1-13 09:09 | 只看该作者
这个和FLASH特性有关系

使用特权

评论回复
11
chenyilin| | 2021-1-13 10:27 | 只看该作者
imdx 发表于 2021-1-12 07:06
这不是bug,这是特性,用户手册上写得明明白白。GD32F130只有前面32k闪存是0等待的。64kB器件的后32kB访问 ...

可以通过查看数据手册,有说明 code区和data区分别是多少,不同的IC 的code 区域大小是不一样的

使用特权

评论回复
12
发呆二极管| | 2021-1-13 10:35 | 只看该作者
chenyilin 发表于 2021-1-13 10:27
可以通过查看数据手册,有说明 code区和data区分别是多少,不同的IC 的code 区域大小是不一样的 ...

gd的片子慢的flash区也是code区,都能跑程序,只是速度太慢被很多人当成data用了而已。

使用特权

评论回复
13
发呆二极管| | 2021-1-13 10:36 | 只看该作者
fcccc 发表于 2021-1-12 18:24
AT32没有这个问题,建议试试

AT32也有零等待和非零等待,都一样的……

使用特权

评论回复
14
发呆二极管| | 2021-1-13 10:39 | 只看该作者
本帖最后由 发呆二极管 于 2021-1-13 10:49 编辑
xhaity 发表于 2021-1-12 23:30
可能性不大,如果加载到ram运行的话,系统总线频率不可能从72MHz修正到48MHz  ...

别可能性不大……很遗憾,gd就是在你所说的可能性较小的那个区间,gd众所周知就是这样的硬件架构。
零等待的片子都是通过ram跑程序实现的。国产mcu里就at和gd是这样的。
刚开始用gd的时候我也踩这个坑了,习惯就好。1x0系列全是前32k零等待,后32k非常慢,所以你就当32k用就好了。

使用特权

评论回复
评论
xhaity 2021-1-15 15:39 回复TA
众所周知,还是道听途说,还是有专门文档说明? 不要听推广人员瞎说,市场推广人员,为了推广产品可以胡诌乱扯,技术文档可以要负法律责任,做技术的人,要讲事实,哪里有文档讲了这个众所周知的硬件架构? 
15
fcccc| | 2021-1-13 11:11 | 只看该作者
发呆二极管 发表于 2021-1-13 10:36
AT32也有零等待和非零等待,都一样的……

AT32这个速度还是可以的非零等待96Mhz

使用特权

评论回复
16
发呆二极管| | 2021-1-13 11:13 | 只看该作者
fcccc 发表于 2021-1-13 11:11
AT32这个速度还是可以的非零等待96Mhz

嗯,是的,at32的NZW速度确实也可以,比gd快多了……

使用特权

评论回复
17
fcccc| | 2021-1-13 11:33 | 只看该作者
大多数芯片的flash如果以较低速度运行,是不用插入等待周期的.
不知道楼主这个8M时钟为何还这么长时间.

使用特权

评论回复
18
发呆二极管| | 2021-1-13 11:40 | 只看该作者
fcccc 发表于 2021-1-13 11:33
大多数芯片的flash如果以较低速度运行,是不用插入等待周期的.
不知道楼主这个8M时钟为何还这么长时间. ...

一般130都是8m的hse倍频到72m运行,而不管频率多少,gd1x0在32k之后的flash,速度慢的就是没法用。

使用特权

评论回复
19
edan_lee| | 2021-1-14 15:04 | 只看该作者
对标的STM32是不是也有这样的问题呢?

使用特权

评论回复
20
chenjun89| | 2021-1-14 18:57 | 只看该作者
这个片子的FLASH特性就这样

使用特权

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

本版积分规则

1

主题

6

帖子

0

粉丝