RISC-V MCU中文社区

【求助】 [求助] 如何通过PC向MCU_FLASH写入数据,如何在E203运行中恰当读取这一FLASH

发表于 开源蜂鸟E203 2021-08-02 15:58:11
7
2704
6

我在基于MCU200T进行开发的时候希望在系统中存在一个几MB大的只读存储空间。在程序运行之前就把存储空间里面写入好数据,在程序运行期间只会从中读取数据。

在MCU_FLASH、PSRAM和SD卡几个方案中我首先选择了考察MCU_FLASH,并得知应该是可以通过APB总线访问QSPI0寄存器的方式读取这颗FLASH的。所以现在的疑问就是如何在程序运行之前把数据从PC端写入这颗FLASH?

这颗FLASH是不是同时也是存放CPU运行代码的地方?所以PC想访问这个FLASH应该也是通过JTAG下载器?而如何放入用户数据才会让两者不会相互干涉呢?


不知道这篇求助贴能否得到胡灿老师的垂青,我在论坛中注意到您曾回答过不少关于FLASH的问题。

喜欢6
用户评论 (7)
  • zehfa

    2023-09-28 22:45:09 zehfa 1#

    老师请问RISCV的编译器能否为外部文件开辟空间呢,我想从外部的一个文本文件读入信息,然后编译,但是仿真会卡在读文件那步。

    请问你后来是怎么解决的呀Orz

  • 2021-08-12 14:02:08 2#

    胡灿

    1.里面的错误是因为你们定义的是局部变量,这个编译后是放在stack里面的,stack空间是有限的,所以会溢出。

    2.是的

    3.如果放的数据是只读的话,那就定义一个全局常量,编译的时候就会放到rodata段里面

    4.直接访问定义的全局常量。

    老师请问RISCV的编译器能否为外部文件开辟空间呢,我想从外部的一个文本文件读入信息,然后编译,但是仿真会卡在读文件那步。

  • 2021-08-04 11:50:35 3#

    胡灿

    1.里面的错误是因为你们定义的是局部变量,这个编译后是放在stack里面的,stack空间是有限的,所以会溢出。

    2.是的

    3.如果放的数据是只读的话,那就定义一个全局常量,编译的时候就会放到rodata段里面

    4.直接访问定义的全局常量。

    非常感谢胡老师

  • 胡灿

    2021-08-04 11:28:51 胡灿 4#

    1、“把需要存储的数据定义在程序里面一起编译”

    请问怎么实现?在C代码里还是在IDE里?我们队曾经把一个过大的文本放在字符串变量里,然后得到了这样的报错信息:

     

    2、“链接的时候选择flash存储”

    RV-Tools——SDK Configuration Tools里的Download选项吗?

    3rodata段如何设置?这是跟第一张图里报错信息里的ram region类似的一个region吗?

     

    4、这样存放进flash的数据如何读取?

     

    谢谢胡老师!!

    1.里面的错误是因为你们定义的是局部变量,这个编译后是放在stack里面的,stack空间是有限的,所以会溢出。

    2.是的

    3.如果放的数据是只读的话,那就定义一个全局常量,编译的时候就会放到rodata段里面

    4.直接访问定义的全局常量。

  • 2021-08-04 11:18:43 5#

    胡灿

    “所以现在的疑问就是如何在程序运行之前把数据从PC端写入这颗FLASH?”

    那就把需要存储的数据定义在程序里面一起编译,然后链接的时候选择flash存储,就是存储在flash的,只读数据的话,就放在rodata段就行。

    谢谢胡老师!请问可以进一步看一下评论里的问题嘛

  • 2021-08-04 11:18:15 6#

    1、“把需要存储的数据定义在程序里面一起编译”

    请问怎么实现?在C代码里还是在IDE里?我们队曾经把一个过大的文本放在字符串变量里,然后得到了这样的报错信息:

     

    2、“链接的时候选择flash存储”

    RV-Tools——SDK Configuration Tools里的Download选项吗?

    3rodata段如何设置?这是跟第一张图里报错信息里的ram region类似的一个region吗?

     

    4、这样存放进flash的数据如何读取?

     

    谢谢胡老师!!

  • 胡灿

    2021-08-04 09:18:49 胡灿 7#

    “所以现在的疑问就是如何在程序运行之前把数据从PC端写入这颗FLASH?”

    那就把需要存储的数据定义在程序里面一起编译,然后链接的时候选择flash存储,就是存储在flash的,只读数据的话,就放在rodata段就行。

未通过实名认证

懒的都不写签名

积分
问答
粉丝
关注
  • RV-STAR 开发板
  • RISC-V处理器设计系列课程
  • 培养RISC-V大学土壤 共建RISC-V教育生态
RV-STAR 开发板