请问CH32V208WBU6编译WebServer+BLEUART时出现这种情况是Flash不够用了吗?

Flash不是有400+k 吗?


image.png

应该不是存不下的问题,我试了试在BLE-UART的基础上加了个ETH-DHCP的代码也通过不了,提示超范围,是不是需要设置哪里?

LD文件我的配置如下:

FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 160K

RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 32K



section `.highcode' will not fit in region `FLASH'


没人么?


您好,关于FLASH的大小,其中零等待运行区域最大可配160K,剩下都是非零等待区域,若用于存放运行代码,速度会慢一些,具体配置见下图,在CH32V208数据手册有关于FLASH说明。此外,根据你截图报错信息,FLASH及RAM大小应该是超了,注意控制一下函数代码段大小以及注意一下程序中定义的数组变量,防止超过FLASH、RAM大小以及堆栈溢出等情况。后续若有问题,可通过邮箱和我沟通(lzs@wch.cn)。CH32V208DS0数据手册下载链接如下:

CH32V208 DS0:https://www.wch.cn/downloads/CH32V208DS0_PDF.html?

image.png


我开始以为零和非零等待的都可以放代码,只是非零的慢一点。原来只有零的160k才能放代码。非零的 480k-160k=320k 等于没用。而且这个160k是以RAM为代价的。如果设置64K RAM,Flash就只有128K。这个大小哪里够?一个BLE的例程就这么大。更不用说Ethernet,USB,CAN,应用程序等等了。都是空间使用大户。CH583都有448K啊。这不是大倒退么。我对这个芯片有很大期望。一有卖的马上打样了电路板。看来样板还没到就得放弃。




您好,不好意思,确认了一下,非零等待区域也可以存放代码,只是慢一些,前面回复有点问题,让你产生了误解,不好意思


多谢澄清。还有进一步的问题:


  1. 非零等待到底慢多少?是1等待,还是2等待,有没有个比较?

  2. 如何把一些有速度要求的代码放在零区,其余的放在非零区?如果改 Linker Script?

  3. RAM/Flash 大小可以改变(64/128, 48/144, 32/160)。这个特性还是第一次看到。似乎片子里面有32K的空间,既可以当RAM又可以当Flash。有没有大神解释一下这到底怎么回事?例如说有没有速度上的取舍?Flash大小的增减,加上零/非零区,这个地址可以看成是连续的吗?


只有登录才能回复,可以选择微信账号登录