开发工具,仿真器,烧录器,编译器,交叉编译器到底是啥关系?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了开发工具,仿真器,烧录器,编译器,交叉编译器到底是啥关系?相关的知识,希望对你有一定的参考价值。
我描述一个工程,请大家分析一下我需要用到哪些东西。
做一个嵌入式的控制类电子产品。
1.产品硬件电路板上用PPC。
2.PPC上跑操作系统QNX或Linux或Vxworks
4.在操作系统上实现一些上层应用,如实现一些控制算法,通讯协议如CAN,ethernet等。
那么开发的时候,人员是这么分配的,
第一周期,硬件人员A根据需求设计硬件电路板;软件人员A采购到PPC开发板,并在上面做操作系统移植
这时硬件人员A不需要调试开发工具,只需要一个适合的画图软件(高级一点的带器件仿真测试也可以);
√ 问题1:软件人员在PPC开发板上进行操作系统移植时,需要哪些工具呢?
首先要有一个在PC机上跑的支持该PPC型号的编译器,连接器,调试器,我晓得ARM是用ADS或MDK
这个工具应该有一个集成开发环境的吧,没有标准的集成开发环境吗?记得有一个免费的Eclipse 的IDE。但是它能集成的东西天南海北,不懂。一个芯片系列没有专用的集成开发环境和编译器等吗?
√问题2:就是要让PPC跑起来,能实现最简单的指示灯1亮和灭。安装在我们windows系统上的软件是什么?要包括哪些东西?PPC上带不带操作系统与我们电脑上安装的开发工具有关系吗?
√问题3:电脑上执行通过的程序,通过什么东西下载到开发板上呢?这里的下载器和仿真器有啥区别?是不是如果是一个成熟的程序,批量生产的时候只需要一个烧录器就可以了,这个烧录器是针对被烧写的flash型号的,跟ppc架构本身没有直接关系。
如果我们的程序需要修改调试,这就要一个可以仿真的仿真器?这样就可以设置成单步调式等,程序边运行边看电路板上的现象。
第二个周期将开发板上跑好的程序和移植好的操作系统放到硬件人员A开发的电路板上,操作系统移植已经完成。
√问题4:这个时候要在电路板上实现上层功能是不是需要在操作系统上安装一个编译器,就像windows中要开发一些软件功能,要安装一个vc一样?这个时候,如果我们在PPC上上的是Linux操作系统,就需要在此操作系统上安装一个
linux版本的vc(如果有的话)。然后我们就可以将PPC当成电脑那样编程了?或者用linux下直接可以用的shell语言或者是vim,emac等在PPC下编程。(这里假设ppc电路板有VGA接口)。
或者说直接在windows电脑上安装一个与PPC上相同的linux操作系统,上层应用直接在电脑上编写,通过远程下载,或者是USB下载到PPC上,这个应该跟烧写不一样了,应该用普通的USB线就可以了,这个应该相当于应用程序部分,不会放到flash中。
√ 问题5:这个时候会不会涉及到交叉编译器呢,因为不是老说架构不同吗?要死了,神人们?难道说同一版本型号的linux还分x86架构linux,然后PPC架构的linux,比如我直接安装在我电脑上的是X86架构linux,移植到PPC上的linux就是PPC架构linux,这样在我电脑上用linux环境下的编译器编完程序,执行完毕后,不能直接在PPC上运行,需要在电脑上的linux上装一个可以交叉编译的编译器,能够生成PPC架构的linux程序?
开发工具,仿真器,烧录器,编译器:开发工具=仿真器,烧录器,编译器。仿真器只能烧录一些简单的IC,数量少还行。烧录器=编程器:功能就比较强大了,有万用型 量产型 单一型,烧录器其实很简单就是把你编译的程序通过烧录器这个媒体转化写到芯片Flash里面,我是搞烧录的,我为自己代言 参考技术A 房东太多的此长啊,不拉。
开发工具,仿真器,燃烧器,编译器:开发工具仿真器,燃烧器和编译器。仿真器只能烧一些简单的IC,少数还行。燃烧器的程序员更强大的通配符量单一类型的刻录机其实很简单,就是你编译程序写入片内Flash内的介质燃烧器改造,我从事烧伤,我为自己代言
2019年7月18日星期四(交叉工具链)
一、交叉工具链?
1、什么是交叉工具链?
我们已经学习过的编译器是gcc编译器,gcc可以将高级语言转换目标程序。
gcc编译器特点:在Ubuntu编译,在Ubuntu运行。 -> 在同一个平台上编译运行,这个gcc编译器又称之为本地编译。
这个gcc编译器是Ubuntu中自带,gcc所的路径:/usr/bin/gcc。
其实交叉工具链就是一个编译器,但是交叉工具链在Ubuntu中是没有的,所以想使用交叉工具链,就必须要自己移植。
交叉工具链面向平台不是Ubuntu,而是ARM平台。交叉工具链特点:在Ubuntu中编译,在ARM平台运行。
结论:gcc编译出来的程序只能在Ubuntu中运行,而是交叉工具链编译出来的程序只能在ARM平台上运行。
2、什么是交叉编译?
本地编译就是在主机A上编译,在主机A上运行。
交叉编译就是在主机A上编译,在主机B上运行。
二、如何移植交叉工具链到ARM平台?
工具链:arm-2009q3.tar.bz2
1. 先将arm-2009q3.tar.bz2放置到共享目录下
2. 为交叉工具链创建一个新的目录,并给权限
sudo mkdir /usr/arm
sudo chmod 777 /usr/arm
3. 在linux下将arm-2009q3.tar.bz2直接解压到安装路径下即可。
tar jxvf arm-2009q3.tar.bz2 -C /usr/arm
4. 交叉编译器是哪个?
/usr/arm/arm-2009q3/bin/arm-none-linux-gnueabi-gcc
三. 使用交叉工具链和本地gcc编译器编译的区别?
1. 本地编译
gcc test.c -o test -> 生成一个test的文件。
file test -> 查看test这个文件的属性。
test: ELF -> 代表该文件是可以执行。
32-bit -> 32位
LSB executable -> 代表当前该文件可以执行的。
Intel 80386 -> (x86平台),说明该文件只能在x86平台运行。
2. 交叉编译
/usr/arm/arm-2009q3/bin/arm-none-linux-gnueabi-gcc test.c -o test -> 生成一个test的文件。
file test -> 查看test这个文件的属性。
test: ELF -> 代表该文件是可以执行。
32-bit -> 32位
LSB executable -> 代表当前该文件可以执行的。
ARM -> (ARM平台),说明该文件只能在ARM平台运行。
四、为工具链生成一个新的链接文件。
[email protected]:/usr/arm/arm-2009q3/bin$ sudo ln -s arm-none-linux-gnueabi-gcc arm-linux-gcc
结果:
lrwxrwxrwx 1 root root 26 Jul 18 02:12 arm-linux-gcc -> arm-none-linux-gnueabi-gcc
-rwxr-xr-x 2 gec gec 207948 Oct 16 2009 arm-none-linux-gnueabi-gcc
练习1:安装交叉工具链
练习2:为工具链取新的名字"arm-linux-gcc"
练习3:在任何的路径下都可以使用"arm-linux-gcc"
练习4:自己使用"arm-linux-gcc"编译一个程序,看看不是ARM架构!
以上是关于开发工具,仿真器,烧录器,编译器,交叉编译器到底是啥关系?的主要内容,如果未能解决你的问题,请参考以下文章