当前位置: 首页 > news >正文

Keil(ARMCC)编译改为Cmake(GNU)编译

1. 环境介绍:

  1. 某款ARM-M4芯片(应该芯片通用)
  2. cmke+GNU+Ninja(CLion)

2. 必备:

  1. 芯片启动文件   startup_xxxx.s
  2. 链接文件    xxxx_flash.ld
  3. CMakeLists.txt

3. 具体修改步骤

第一步:观察启动文件

首先:使用任意打开工具打开芯片启动文件,观察启动文件是使用什么语法写的(ARM)/(GNU) 

以下为对照表

两种开发环境下的汇编代码,有较多不同的点,主要是符号及伪操作的不同。

ARM汇编的伪操作符

GNU汇编的伪操作符

INLCUDE

.include

NUM EQU 25

.equ NUM, 25

EXPORT

.global

IMPORT

.extern

DCD

.long

IF: DEF:

.ifdef

ELSE

.else

ENDIF

.endif

OR

|

SHL

<<

RN

.req

GBLA

.global

NUM SETA 16

.equ NUM , 16

MACRO

.macro

MEND

.endm

END

.end

AREA WORD, CODE, READONLY

.text

AREA BLOCK, DATE, READWRITE

.data

CODE32

.arm

CODE16

.thumb

LTORG

.ltorg

%

.fill

ENTRY

ENTRY:

ldr x0,=0xff

ldr x0,=0xff

 第二步:修改启动文件

如果你的启动文件是GNU汇编文件,恭喜你不需要修改启动文件,如果不出意外链接文件也不需要修改。


如果你的启动文件是ARM汇编文件,有几种解决方案:

第一种解决方案

如果用的芯片为大厂生产或者市面流行的芯片,可以通过网络或者寻找原厂进行找寻GNU版本的启动文件与链接文件。

例如STM32这款芯片的任意型号的芯片,在STM官网都有任意版本的启动与链接文件。

第二种解决方案

如果实在找不到,那没办法,就只能手动修改启动文件与链接文件,我们根据上面的对应表进行修改,

ARM版本

GNU版本

相关文章:

  • 行业白皮书2025 | 益企研究院:AI时代的存储基石
  • 多源最短路:Floyd算法の暴力美学
  • 读书笔记-如何有效求助-1/2--求助行为的有效姿态
  • PyBluez2 的详细介绍、安装指南、使用方法及配置说明
  • F1C200S编译
  • STM32基础教程——PWM驱动舵机
  • Maya到SubstancePainter再到UE5
  • Android电话监听器的设计与实现:深入解析Service与TelephonyManager
  • 细胞内与细胞间网络整合分析!神经网络+细胞通讯,这个单细胞分析工具一箭双雕了(scTenifoldXct)
  • [ ] 前后端连接 结合常见故障场景和解决
  • 【区块链 + 文化版权】精灵高中 IP 服务项目 | FISCO BCOS 应用案例
  • 大模型适配昇腾300I DUO服务器出现的错误
  • 【BFS染色问题】P1162填涂颜色例题+核心逻辑
  • 企业级基于SpringBoot的MQTT的构建和使用
  • Qt开发:QFontDialog的使用
  • Android开发BasePagerAdapter
  • 第四章:优化字符串的使用:案例研究_《C++性能优化指南》notes
  • springboot整合couchbase(集群)
  • 3. 轴指令(omron 机器自动化控制器)——>MC_GearOut
  • 计算机二级WPS Office第七套WPS演示
  • 陈雯出任外交部离退休干部局局长,此前为外交部办公厅副主任
  • 古龙逝世四十周年|中国武侠文学学会与多所高校联合发起学术纪念活动
  • 阿曼宣布美国与胡塞武装达成停火协议
  • 共生与伴生:关于人工智能时代艺术评论的对象与主体的思考
  • 为什么所有动物里,只有人类幼崽发育得这么慢?
  • 工人日报关注跟着演出去旅游:票根经济新模式兴起,让过路客变过夜客