例如這樣
如果不能的話,我在CSDN(關(guān)于CH32V系列MCU FLASH地址的分配_單片機(jī)flash地址分配-CSDN博客)上看到了這樣操作的,
請(qǐng)問這是在做什么?
您好,ld文件中對(duì)于FLASH的配置主要是零等待區(qū)域的配置,CH32V307零等待區(qū)域最大可配置288K。關(guān)于剩下的非零等區(qū)域,也是可以使用的,可以將數(shù)組或者對(duì)運(yùn)行速度沒有要求的函數(shù)放在非零等區(qū)域,你在CSDN看到的應(yīng)該就是將數(shù)組放在非零等待區(qū)域的方法。
那意思是我能使用同時(shí)使用 128K RAM + 480K flash的組合(將LD 改為128K + 480K)對(duì)嗎(假設(shè)我對(duì)程序速度沒有太大要求的話)??
您好,如我前面所講,F(xiàn)LASH主要設(shè)置的是零等待區(qū)域的長(zhǎng)度,此處你設(shè)置為192K就可以了,非零等待區(qū)域可以直接用,不需要你此處設(shè)置為480K。
您好,可能是我沒有表述清楚,我的意思是,當(dāng)我的程序編譯后超過了我在Ld中設(shè)置的最大flash時(shí),編譯器會(huì)報(bào)錯(cuò),例如下面這種情況
我是需要手動(dòng)將部分程序移動(dòng)到非零等待區(qū)嗎?(您所說的直接使用是指這樣嗎)還是說能通過編譯器的設(shè)置讓編譯器”知道“還有非零等待區(qū)的flash沒有使用。
一般來說,你的程序不會(huì)有370k這么大。所以,將性能不敏感的只讀數(shù)據(jù)(而不是代碼)放到Flash尾部的非零等待區(qū),是明智的選擇。
當(dāng)然,這么做,你就需要自定義Linker Script了。
您好,@ylEmm...,不好意思,前面理解有問題,若這樣的話,你FLASH直接設(shè)置成480K就好了,但是最好還是在程序中做一下選擇,將部分真的沒有速度要求的函數(shù)或數(shù)組放在非零等待區(qū)域。