[RISC-V MCU 应用开发] 关于CH32V系列MCU FLASH地址的分配

[复制链接]
 楼主| LIzs6 发表于 2024-1-17 19:29 | 显示全部楼层 |阅读模式
来源:https://www.cnblogs.com/liaigu/p/17784283.html
关于在MRS开发环境下,针对CH32V系列MCU FLASH分配,具体方法如下:
比如开辟一段空间,存放数组等数据,首先在ld文件中修改FLASH分配,如下图:
  1. .consumer_flash1 :
  2.     {
  3.         . = ALIGN(4);
  4.     }AT>FLASH1
  5.    
  6.     .consumer_flash2 :
  7.     {
  8.         . = ALIGN(4);
  9.     }AT>FLASH2
3364365a7b9c2e814d.png

其次,在程序中使用分配好的FLASH1和FLASH2,如下图,将两个数组分别放到FLASH1区域和FLASH2区域。然后打印查看对应的地址和数据,发现没有问题,说明操作成功。
  1. const uint8_t __attribute__((section(".consumer_flash1"))) user_data1[20] = {4,2,3,4,5,6,7,8,9,0xa,0xb,0xc,0xd,0xe,0x0};
  2. const uint8_t __attribute__((section(".consumer_flash2"))) user_data2[20] = {5,2,3,4,5,6,7,8,9,0xa,0xb,0xc,0xd,0xe,0x0};
  3.    
  4. printf("%x\r\n", user_data1);
  5. printf("%d\r\n", user_data1[0]);

  6. printf("%x\r\n", user_data2);
  7. printf("%d\r\n", user_data2[0]);
2833265a7b9ecc7950.png
最后可通过编译器查看分配空间是否合理,如下,分配合理。
1277565a7ba02bb3ba.png

hudi008 发表于 2024-2-2 20:20 | 显示全部楼层
CH32V系列MCU的Flash地址分配可以通过在链接文件(ld文件)中进行修改来实现。
bestwell 发表于 2024-2-2 20:42 | 显示全部楼层
使用编译器查看分配的空间是否合理
fengm 发表于 2024-2-2 21:12 | 显示全部楼层
CH32V系列MCU是由南京深鉴微电子设计的一款基于RISC-V架构的32位微控制器。其内部通常包含了一定容量的Flash储存器用于存储程序和数据。
youtome 发表于 2024-2-2 21:42 | 显示全部楼层
程序的执行起点,通常设为0x08000000。
saservice 发表于 2024-2-2 22:13 | 显示全部楼层
Flash的地址分配通常包括文本段(用于存储执行的代码)、只读数据段(存储常量数据)、数据复制段(用于某些特定场景的数据存储)等。而SRAM则主要用于存储运行时的变量、堆栈以及中断向量表等。
hudi008 发表于 2024-2-3 07:57 | 显示全部楼层
链接脚本中定义的FLASH区域,可以将其划分为多个段,如.text、.data、.bss等。每个段都有自己的起始地址和长度。
olivem55arlowe 发表于 2024-2-3 08:30 | 显示全部楼层
建议查阅CH32V系列MCU的官方文档
mmbs 发表于 2024-2-3 21:39 | 显示全部楼层
用户的应用程序代码和数据通常会被编译链接并下载到一个特定的地址区间,该区间在BOOT区之后。
根据不同的产品型号和配置,此区域的大小可以从几十KB到几百KB不等。
dspmana 发表于 2024-2-5 16:58 | 显示全部楼层
对于FLASH地址的分配,通常情况下,CH32V系列MCU的闪存(FLASH)映射到处理器的存储空间内,并且按照特定的地址范围分布。
mickit 发表于 2024-2-5 17:27 | 显示全部楼层
CH32V307这款MCU支持Flash和SRAM的大小配置,具体配置项包括:192 KB Flash 和 128 KB SRAM、224 KB Flash 和 96 KB SRAM、256 KB Flash 和 54 KB SRAM等。
mikewalpole 发表于 2024-2-5 17:58 | 显示全部楼层
在程序中可以使用__attribute__((section(".consumer_flash1")))或__attribute__((section(".consumer_flash2")))来指定变量存储到哪个区域。
cr315 发表于 2024-2-18 11:40 | 显示全部楼层
通常,FLASH地址的分配会在MCU的启动文件(如ld文件)中进行配置。这些配置决定了程序在FLASH中的存放位置以及FLASH的分区情况。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

145

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部

7

主题

145

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部