皮皮网

皮皮网

【zepto 源码】【摩卡世界全套源码】【h站论坛源码】armcc 源码

时间:2024-12-29 17:57:14 分类:知识

1.MDK-armARM编译工具
2.如何制作arm-linux-gcc编译工具
3.一文看懂hex文件、bin文件、axf文件的区别

armcc 源码

MDK-armARM编译工具

       MDK-arm是一款针对ARM架构设计的专用编译工具链,以前被称为ARM RealView编译工具。它主要包括以下组件:

       ARM C/C++ 编译器(armcc),用于将C/C++源代码转化为高效且快速的zepto 源码ARM汇编语言。

       Microlib,一个轻量级的标准库,专为微控制器设计,简化了程序开发过程。

       ARM Macro汇编器(armasm),用于处理汇编语言指令,提升程序执行效率。

       ARM链接器(armLink),负责将编译后的目标模块进行链接,确保程序的完整性。

       ARM工具(Librarian and FromELF),提供了额外的功能,如调试支持和符号表管理。摩卡世界全套源码

       使用MDK-arm,工程师可以利用C或C++编写应用程序,同时享受ARM编译器带来的高效编译和符号信息嵌入,便于uVision或在线调试器进行调试。此外,ARM RVCT编译器以其在代码密度方面的卓越性能而备受赞誉,能生成最小代码量,降低硬件成本,支持ISO标准C/C++语言,h站论坛源码并支持-bit ARM、-bit Thumb和混合/-bit Thumb2指令集的优化编译。

       ARM公司持续优化其编译器,不仅在代码密度和性能上有所提升,还引入了诸如Microlib等新特性,以满足不断变化的开发需求。

如何制作arm-linux-gcc编译工具

       ä¸€ã€ä¸‹è½½æºæ–‡ä»¶

       æºä»£ç æ–‡ä»¶åŠå…¶ç‰ˆæœ¬ï¼š

       binutils-2..tar.bz2, gcc-core-4.4.4.tar.bz2 gcc-g++-4.4.4.tar.bz2 Glibc-2.7.tar.bz2 Glibc-ports-2.7.tar.bz2 Gmp-4.2.tar.bz2 mpfr-2.4.0.tar.bz2mpc-1.0.1.tar.gz Linux-2.6..tar.bz2 (由于我在编译出错的过程中,根据出错的信息修改了相关的C代码,故而没有下载相应的补丁)

       ä¸€èˆ¬ä¸€ä¸ªå®Œæ•´çš„交叉编译器涉及到多个软件,主要包括bilinguals、cc、glibc等。其中,binutils主要生成一些辅助工具;gcc是用来生成交叉编译器,主要生成arm-linux-gcc交叉编译工具,而glibc主要提供用户程序所需要的一些基本函数库。

       äºŒã€å»ºç«‹å·¥ä½œç›®å½•

       ç¼–译所用主机型号 fc.i,虚拟机选的是VM7.0,Linux发行版选的是Fedora9,

       ç¬¬ä¸€æ¬¡ç¼–译时用的是root用户(第二次用一般用户yyz), 所有的工作目录都在/home/yyz/cross下面建立完成,首先在/home/yyz目录下建立cross目录,然后进入工作目录,查看当前目录。命令如下:

       åˆ›å»ºå·¥å…·é“¾æ–‡ä»¶å¤¹ï¼š

       [root@localhost cross]# mkdir embedded-toolchains

       ä¸‹é¢åœ¨æ­¤æ–‡ä»¶å¤¹ä¸‹å»ºç«‹å¦‚下几个目录:

       setup-dir:存放下载的压缩包;

       src-dir:存放binutils、gcc、glibc解压之后的源文件;

       Kernel:存放内核文件,对内核的配置和编译工作也在此完成;

       build-dir :编译src-dir下面的源文件,这是GNU推荐的源文件目录与编译目录分离的做法;

       tool-chain:交叉编译工具链的安装位;

       program:存放编写程序;

       doc:说明文档和脚本文件;

       ä¸‹é¢å»ºç«‹ç›®å½•ï¼Œå¹¶æ‹·è´æºæ–‡ä»¶ã€‚

       [root@localhost cross] #cd embedded- toolchains

       [root@localhost embedded- toolchains] #mkdir setup-dir src-dir kernel build-dir tool-chain program doc

       [root@localhost embedded- toolchains] #ls

       build-dir doc kernel program setup-dir src-dir tool-chain

       [root@localhost embedded- toolchains] #cd setup-dir

       æ‹·è´æºæ–‡ä»¶ï¼š

       è¿™é‡Œæˆ‘们采用直接拷贝源文件的方法,首先应该修改setup-dir的权限

       [root@localhost embedded- toolchains] #chmod setup-dir

       ç„¶åŽç›´æŽ¥æ‹·è´/home/yyz目录下的源文件到setup-dir目录中,如下图:

       å»ºç«‹ç¼–译目录:

       [root@localhost setup-dir] #cd ../build-dir

       [root@localhost build -dir] #mkdir build-binutils build-gcc build-glibc

       ä¸‰ã€è¾“出环境变量

       è¾“出如下的环境变量方便我们编译。

       ä¸ºç®€åŒ–操作过程。下面就建立shell命令脚本environment-variables:

       [root@localhost build -dir] #cd ../doc

       [root@localhost doc] #mkdir scripts

       [root@localhost doc] #cd scripts

       ç”¨ç¼–辑器vi编辑环境变量脚本envionment-variables:[root@localhost scripts]

       #vi envionment-variables

       export PRJROOT=/home/yyz/cross/embedded-toolchains

       export TARGET=arm-linux

       export PREFIX=$PRJROOT/tool-chain

       export TARGET_PREFIX=$PREFIX/$TARGET

       export PATH=$PREFIX/bin:$PATH

       æˆªå›¾å¦‚下:

       æ‰§è¡Œå¦‚下语句使环境变量生效:

       [root@localhost scripts]# source ./environment-variables

       å››ã€å»ºç«‹äºŒè¿›åˆ¶å·¥å…·ï¼ˆbinutils)

       ä¸‹é¢å°†åˆ†æ­¥ä»‹ç»å®‰è£…binutils-2..1的过程。

       [root@localhost script] # cd $PRJROOT/src-dir

       [root@localhost src-dir] # tar jxvf ../setup-dir/binutils-2..1.tar.bz2

       [root@localhost src-dir] # cd $PRJROOT/build-dir/build-binutils

       åˆ›å»ºMakefile:

       [root@localhost build-binutils] #../../src-dir/binutils-2..1/configure --target=$TARGET --prefix=$PREFIX

       åœ¨build-binutils目录下面生成Makefile文件,然后执行make,make install,此过程比较缓慢,大约需要一个分钟左右。完成后可以在$PREFIX/bin下面看到我们的新的binutil。

       è¾“入如下命令

       [root@localhost build-binutils]#ls $PREFIX/bin

一文看懂hex文件、bin文件、axf文件的简洁选号网源码区别

       在STM开发中,遇到的hex文件、bin文件与axf文件都是可烧写至板子运行的文件。它们有何区别?让我们先回顾C语言编译过程。

       编译过程包括预处理、编译、汇编和链接四个阶段。在STM开发中,虽然我们通常使用MDK或类似IDE进行编译,实际编译过程大致相同。headset工程源码流程

       以LED程序为例,编译过程包括:源代码 -> 目标代码 -> 可执行代码。IDE提供便捷操作,如单击编译按钮即可完成整个流程。

       IDE或工具集的编译工具一般位于安装目录的bin文件夹。如MDK的编译工具位于安装路径下的bin文件夹。

       回归主题,MDK编译过程使用安装路径下的编译工具完成。同样,我们可在cmd命令窗口通过armcc命令执行编译。

       不同文件格式用途各异。axf文件是默认生成的文件,包含代码数据与调试信息,用于MDK中的调试。Hex文件记录代码存储地址,便于下载器使用。Bin文件由axf文件生成,是最小可运行文件,仅包含直接代码映像。

       文件大小:axf文件最大,hex文件次之,bin文件最小。

       hex文件通过FlyMcu工具烧录,bin文件则使用STMCubeProgrammer和STLINK进行下载。

       至此,关于文件格式的区别与烧录方法已简要说明。对文件内容有兴趣的朋友,可进一步深入分析。

       总结,hex、bin、axf文件在STM开发中各有用途,理解其区别有助于更高效地进行项目开发。编程学习是一个持续的过程,希望每位学习者都能不断进步。