首页 > 其他 > 详细

RISC-V MCU CH32V103将常量定义到指定的Flash地址

时间:2021-08-11 23:46:22      阅读:24      评论:0      收藏:0      [点我收藏+]

Keil MDK开发ARM 内核的MCU时,将常量定义到指定的Flash地址中,使用 _attribute_( at(绝对地址) )即可,如:

const u32 myConstVariable_1[128] __attribute__((at(0x08001000))) = {0x12345678,0x22221111};//定位在flash中,其他flash补充为0 

沁恒RISC-V MCU,通过Mounriver Studio(MRS)开发时,暂时不支持_attribute_( at(绝对地址) )命令。可通过如下步骤实现:

1、编辑ld链接文件,添加SECTIONS段

	.flash_test_address :
	{
		. = ALIGN(4);              /*4字节对齐*/
		. = ORIGIN(FLASH)+0x1000;  /*ORIGIN(FLASH)为 MEMORY定义的FLASH的起始地址(CH32V103为0x08000000),指定到从FLASH起始的0x1000长度的位置*/
		KEEP(*(SORT_NONE(.test_address_1)))  /*链接时*KEEP()可以使得被标记段的内容不被清除*/
		. = ALIGN(4);
	} >FLASH AT>FLASH 

如需将变量定义到Flash的最后,将此段添加到 .text段后面,注意指定的Flash地址要大于程序编译大小。

2、函数中使用__attribute__((section(".xxx")))定义常量

const uint8_t myConstVariable_1 __attribute__((section(".test_address_1"))) = 0x12;

编译查看map文件,常量地址如下

技术分享图片

RISC-V MCU CH32V103将常量定义到指定的Flash地址

原文:https://www.cnblogs.com/wahahahehehe/p/15130152.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!