我在基于MCU200T进行开发的时候希望在系统中存在一个几MB大的只读存储空间。在程序运行之前就把存储空间里面写入好数据,在程序运行期间只会从中读取数据。
在MCU_FLASH、PSRAM和SD卡几个方案中我首先选择了考察MCU_FLASH,并得知应该是可以通过APB总线访问QSPI0寄存器的方式读取这颗FLASH的。所以现在的疑问就是如何在程序运行之前把数据从PC端写入这颗FLASH?
这颗FLASH是不是同时也是存放CPU运行代码的地方?所以PC想访问这个FLASH应该也是通过JTAG下载器?而如何放入用户数据才会让两者不会相互干涉呢?
不知道这篇求助贴能否得到胡灿老师的垂青,我在论坛中注意到您曾回答过不少关于FLASH的问题。
老师请问RISCV的编译器能否为外部文件开辟空间呢,我想从外部的一个文本文件读入信息,然后编译,但是仿真会卡在读文件那步。
请问你后来是怎么解决的呀Orz
1.里面的错误是因为你们定义的是局部变量,这个编译后是放在stack里面的,stack空间是有限的,所以会溢出。
2.是的
3.如果放的数据是只读的话,那就定义一个全局常量,编译的时候就会放到rodata段里面
4.直接访问定义的全局常量。
老师请问RISCV的编译器能否为外部文件开辟空间呢,我想从外部的一个文本文件读入信息,然后编译,但是仿真会卡在读文件那步。
1.里面的错误是因为你们定义的是局部变量,这个编译后是放在stack里面的,stack空间是有限的,所以会溢出。
2.是的
3.如果放的数据是只读的话,那就定义一个全局常量,编译的时候就会放到rodata段里面
4.直接访问定义的全局常量。
非常感谢胡老师
1、“把需要存储的数据定义在程序里面一起编译”
请问怎么实现?在C代码里还是在IDE里?我们队曾经把一个过大的文本放在字符串变量里,然后得到了这样的报错信息:
2、“链接的时候选择flash存储”
是RV-Tools——SDK Configuration Tools里的Download选项吗?

3、rodata段如何设置?这是跟第一张图里报错信息里的ram region类似的一个region吗?
4、这样存放进flash的数据如何读取?
谢谢胡老师!!
1.里面的错误是因为你们定义的是局部变量,这个编译后是放在stack里面的,stack空间是有限的,所以会溢出。
2.是的
3.如果放的数据是只读的话,那就定义一个全局常量,编译的时候就会放到rodata段里面
4.直接访问定义的全局常量。
“所以现在的疑问就是如何在程序运行之前把数据从PC端写入这颗FLASH?”
那就把需要存储的数据定义在程序里面一起编译,然后链接的时候选择flash存储,就是存储在flash的,只读数据的话,就放在rodata段就行。
谢谢胡老师!请问可以进一步看一下评论里的问题嘛
1、“把需要存储的数据定义在程序里面一起编译”
请问怎么实现?在C代码里还是在IDE里?我们队曾经把一个过大的文本放在字符串变量里,然后得到了这样的报错信息:
2、“链接的时候选择flash存储”
是RV-Tools——SDK Configuration Tools里的Download选项吗?

3、rodata段如何设置?这是跟第一张图里报错信息里的ram region类似的一个region吗?
4、这样存放进flash的数据如何读取?
谢谢胡老师!!
“所以现在的疑问就是如何在程序运行之前把数据从PC端写入这颗FLASH?”
那就把需要存储的数据定义在程序里面一起编译,然后链接的时候选择flash存储,就是存储在flash的,只读数据的话,就放在rodata段就行。