Linux/Mac嵌入式开发环境的搭建

  1. 交叉编译环境
  2. 微处理器的下载格式
  3. 烧写

对于嵌入式开发,windows平台通常都有像Keil这样比较完善的集成开发环境,但是如果你要在Mac OS,Linux这类的平台做嵌入式开发,就需要自己准备好相应的开发环境了。对于嵌入式开发,主要分为两步,编译和烧写。

其中编译就需要用到交叉编译,不像做主机应用开发,交叉编译对嵌入式开发来说是逃不开的,因为我们不太可能在嵌入式设备上来做软件的编译工作。

而烧写着需要确定使用的是什么接口(JTAG,SWD,UART),确定了接口就可以使用对应的烧写工具来将编译的到的程序写入设备。

交叉编译环境

要进行交叉编译首先就要下载对应的交叉编译器,值得庆幸的是,arm的官网上已经提供了预编译的交叉编译工具链的下载。当然如果你认为自己动手去编译一个编译器是相当有趣的事情你也可以直接下载GCC源码来编译你自己的交叉编译工具链。

ARM预编译工具链下载

从ARM官网上我们可以下载到支持arm全系列微处理器的编译器,当然如果你是想编译8051等类型的MCU下跑的程序的话,可以使用SDCC(Small Device C Compiler),这是一个开源的C语言编译器,支持的平台包括Intel MCS51系列的微控制器(8031, 8032, 8051, 8052等)、Maxim DS80C390系列、Freescale HC08系列(hc08, s08)、Zilog Z80系列(z80, z180, gbz80, Rabbit 2000/3000, Rabbit 3000A, TLCS-90)、Padauk和STMicroelectronics STM8等。

SDCC

因为编译器已经是预编译好的,因此我们下载后可以直接进行使用,网上大量的资料用冗长的篇幅对交叉编译环境进行了描述,另很多人觉得交叉编译是一件复杂而且困难的事,但其实交叉编译和我们编译一个能在主机上跑的程序是没有任何区别的,唯一的区别可能就是它们使用的编译器不一样。

就像我们使用其它任何软件一样,编译器下载下来后,通常需要配置环境变量,使得我们能够执行敲击arm-xxx-gcc等类似的命令就能够进行编译,甚至你已经配置了相应的Makefile,直接make就能让我们下载的编译器工作起来对源码进行编译。对这样的环境变量的配置对于一个开发人员来说应该是驾轻就熟的。与在windows下不同,如果在linux或在Mac OS上直接在Home目录下的.bash_profile文件中配置就可以了,通常如下:

PATH=YourCompilerPath/bin:${PATH}

到这一步,如果你在命令行敲./arm-xxx-gcc -v能够正常执行的话,那么恭喜你,你的交叉编译环境可以说就配置好了。是不是很意外,原来交叉编译环境的配置就这么简单?一点没错。

有了交叉编译工具后,我们就需要用它对源码进行编译。这对于熟悉GCC的同学来说同样不是一件空难的事,但是在这里仍然有需要强调且应该引起重视的东西。对于GCC编译器来说它还包含着一些配置,这些配置包含编译时所连接的标准库文件的默认搜索位置,头文件的默认搜索位置,默认工作目录等等,这些在做主机程序开发中通常是被我们忽略的东西。

对于编译时的搜索路径设置问题有两种解决方案。

  1. 通过GCC编译参数传递给编译器
  2. 直接配置在环境变量中

微处理器的下载格式

通过gcc交叉编译工具链编译得到的是elf的linux下的通用可执行文件格式,这样的文件是无法直接下载到微处理器执行的,通常需要转换为hex或bin文件。

hex文件:hex文件包含了程序的地址信息和数据信息,因其数据采用ASCII码存储,文件大小较大
bin文件:只包含了程序的数据信息,以原始的数据存储形式存储,但因不包含地址信息,下载时须制定下载地址

将elf文件转化为hex或bin文件的方法如下:

elf转hex:

  1. formelf工具:formelf –i32combined –output=formelf_file.hex output.elf
  2. objcopy工具: arm-none-eabi-objcopy -O ihex output.elf arm_file.hex

elf转bin:

  1. objcopy工具: arm-none-eabi-objcopy -O binary output.elf arm_file.hex

烧写

烧写这一步就很简单了,如果使用的是JTAG或SWD接口,可以使用J-Link工具进行下载,其操作界面如下:

JLink下载

如上图所示,下载是一目了然的,下载完成后我们可以通过JTAG调试信息或SoC上的预期状态来判断我们烧写的程序是否执行成功以及正确与否。


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 yxhlfx@163.com

文章标题:Linux/Mac嵌入式开发环境的搭建

本文作者:红尘追风

发布时间:2019-03-04, 08:44:23

原始链接:http://www.micernel.com/2019/03/04/Linux:Mac%E4%B8%8A%E5%B5%8C%E5%85%A5%E5%BC%8F%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录