CH32V307VCT6能不能使用480K的程序空间?

例如这样
image.png


如果不能的话,我在CSDN(关于CH32V系列MCU FLASH地址的分配_单片机flash地址分配-CSDN博客)上看到了这样操作的,image.pngimage.png
请问这是在做什么?


您好,ld文件中对于FLASH的配置主要是零等待区域的配置,CH32V307零等待区域最大可配置288K。关于剩下的非零等区域,也是可以使用的,可以将数组或者对运行速度没有要求的函数放在非零等区域,你在CSDN看到的应该就是将数组放在非零等待区域的方法。


那意思是我能使用同时使用 128K RAM + 480K flash的组合(将LD 改为128K + 480K)对吗(假设我对程序速度没有太大要求的话)? 


您好,如我前面所讲,FLASH主要设置的是零等待区域的长度,此处你设置为192K就可以了,非零等待区域可以直接用,不需要你此处设置为480K。


您好,可能是我没有表述清楚,我的意思是,当我的程序编译后超过了我在Ld中设置的最大flash时,编译器会报错,例如下面这种情况QQ_1722686535593.png
我是需要手动将部分程序移动到非零等待区吗?(您所说的直接使用是指这样吗)还是说能通过编译器的设置让编译器”知道“还有非零等待区的flash没有使用。


一般来说,你的程序不会有370k这么大。所以,将性能不敏感的只读数据(而不是代码)放到Flash尾部的非零等待区,是明智的选择。

当然,这么做,你就需要自定义Linker Script了。


您好,@ylEmm...,不好意思,前面理解有问题,若这样的话,你FLASH直接设置成480K就好了,但是最好还是在程序中做一下选择,将部分真的没有速度要求的函数或数组放在非零等待区域。


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