当前位置: 代码迷 >> 驱动开发 >> linux上写的程序怎么下载到无操作系统硬件上运行
  详细解决方案

linux上写的程序怎么下载到无操作系统硬件上运行

热度:100   发布时间:2016-04-28 11:17:42.0
linux上写的程序如何下载到无操作系统硬件上运行
问题有点怪怪。

开发实验箱是UPNET-2410 ,一般无操作系统开发在WINDOWS下用。ADS1.2进行编写代码。然后编译链接成elf再转BIN文件。最后通过串口下载到FLASH



现在我想在linux上编写代码,或者说我想脱离 ADS1.2。linux上面的交叉编译工具链都有,用ECLIPSE作为编译器(也可以自己写makefile)。就是生成是elf,有没有什么转换到bin的。



大牛们,有没有好的开发工具套装,或者模式拿出来分享下。学习嵌入式不久。需要大家经验相传。。先谢过了


------解决方案--------------------
要编译成相应CPU能直接运行的目标文件,并且还不能用到系统的相关。
我记得在编译连接的时候分步有办法不连接系统的那些东西(elf)
------解决方案--------------------
1. GNU工具链中有objcopy这个工具,可以实现你要求的elf->bin的功能。
(objcopy的作用是拷贝一个目标文件的内容到另一个目标文件中,可以适用于很多格式,其中包括binary)

2. 你不想使用ADS1.2,OK,你可以直接使用gcc工具链。我们工作中用的环境是:Windows操作系统 + cygwin + gcc for arm。当然,在linux下开发就省去了cygwin这个软件,它就是windows下的linux环境,方便gcc工具运行而已。当然,除非你的目标机也移植了linux操作系统,否则,你所能调用的函数就只能是部分的C标准库函数而已(例如memcpy, strcpy等),与操作系统有关的函数一律不能调用,像malloc/free,printf等。

3. 关于程序下载,开发板有配套的工具。当然,也有通用的工具,我们使用的是Sophia下载调试系统,它是针对ARM芯片的,能下载多种格式的文件,包括ELF。如果目标机上和宿主机都跑了linux,那么还可以通过网络的方式来下载。

4. 如果是目标机是linux系统,也就是进行嵌入式的linux开发,宿主机才选择linux,主要是方便开发和调试;如果目标机是无操作系统的,那么还是建议在windows下开发,因为一般的IC厂商都是提供windows下的在线调试工具和程序烧写工具,但是,如同我第2点所说,程序的构建还是可以使用cygwin+gcc工具链的。

------解决方案--------------------
静态链接,然后使用arm-linux-objcopy工具转换成bin文件;特别要指出的是浮点问题,如果你的应用里需要浮点数处理,就需要仔细匹配交叉编译器和你的处理器了。ARM处理器的浮点处理方案有好几种,需要仔细区分。

动态链接是需要OS支持的功能,不能裸机使用。
  相关解决方案