keil运行c语言输入函数,keil 编译器V6 定义函数在ram中运行-和在指定地址定义常量,keil编译器...

博客介绍了如何将项目从Keil V5迁移到V6以提高编译速度,同时展示了V5和V6中在指定地址定义常量及将函数定位到RAM中运行的不同方法。升级CMSIS包到5.0以上,调整函数和常量的内存布局,以及更新链接文件是关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

keil 编译器V6 定义函数在ram中运行-和在指定地址定义常量,keil编译器

之前一直是用v5编译,编译速度慢,换成V6编译速度差不多快50% ,而且arm后期只维护v5编译器不在更新v5编译器。切换到V6编译器大势所趋,把之前v5且换到v6需要如下更改:

1. CMSIS包需要更新到5.0以上

2. v5在指定地址定义常量: const uint32_t AppStartCfg[2] __attribute__((at(0x0))) = {0xffffffff,0xaaaaaaaa};

v6在指定地址定义常量: const uint32_t AppStartCfg[2] __attribute__((section(".ARM.__at_0x0")))= {0xffffffff,0xaaaaaaaa};

3, 在定义函数在RAM中运行:(做BootLoader时,freescal单片机要求flash操作相关函数必须在ram中运行)

v5编译器:

#pragma arm section code = "RAMCODE"

static uint8_t ExecRamCmd (uint8_t *cmd, uint8_t len)

{

}

#pragma arm section

然后添加链接文件:

RW_m_data m_data_start m_data_size { ; RW data

*.o(RAMCODE)

.ANY (+RW +ZI)

}

v6编译器:

#pragma clang section text = "RAMCODE"

static uint8_t ExecRamCmd (uint8_t *cmd, uint8_t len)

{

}

#pragma clang section

同样V5修改链接文件

http://www.dengb.com/Cyy/1374930.htmlwww.dengb.comtruehttp://www.dengb.com/Cyy/1374930.htmlTechArticlekeil 编译器V6 定义函数在ram中运行-和在指定地址定义常量,keil编译器 之前一直是用v5编译,编译速度慢,换成V6编译速度差不多快50% ,而且...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值