单片机的开发也属于交叉编译吧

单片机(限指不运行OS的)的开发也属于交叉编译吧。不明白为什么基本上几乎所有的单片机开发此类书籍在都不提及这个概念,却在ARM-OS开发类书籍中这个概念遍地开花,难道仅仅为了凸显ARM稍复杂点的开发技术?何必呢。。。不一视同仁吗
主要是今天给人刚从单片机转ARM9开发的人讲课,还要我解释一下交叉编译,我觉得这个问题那些出版单片机开发书籍的作者或者曾经上课的老师,都应该稍微解释一下这个概念。

交叉编译
由于计算机的指令集与ARM上的指令集不一样。所以当程序能正常在PC上执行时,不一定能正常地在ARM上执行。
一般交叉编译的过程是这样的:PC调试的程序 =====> 调试可用,通过交叉编译器将代码指令转换成对应的ARM平台代码指令 ====> 移植到ARM平台上使用。

而单片机的过程也有些像。你像这类高深的问题不会出现在单片机上。其实你要明白什么是编译。
编译就是将 高级的语言转换成机器能识别的语言。这个过程就叫编译。
单片机的C语言在平台上能运行,是因为有仿真软件。而经过编译之后,就变成单片机能执行的代码了。
而ARM不一样。PC中Linux下,程序也能执行,但不是仿真。他是真正的运行。但你移植到ARM平台就不一定能执行,需要转化代码的指令。这个转换过程你可以当成是交叉编译。

其实说白了吧。没多大区别,就是转换成他们能执行的代码就对了。但只是单片机不这样叫。因为单片机的代码是没办法直接在PC上跑的。只能通过仿真软件跑。

希望我的回答对你有所帮助。
温馨提示:内容为网友见解,仅供参考
第1个回答  2018-06-14
呵,要是讲究的话就是不同系统之间的编译才算交叉编译,在同一系统下的编译就不算交叉,主要体现在仿真功能上,比如用keil开发51单片机,在windows上直接编译并下载到51内存中模拟运行,从头至尾都没有跨越第二个操作系统,PC是window,单片机无系统,由pc直接控制;而开发arm9的linux系统,如果用的是windows平台开发,那就要安装相应的交叉编译软件,用window的软件编译生成在linux下运行的代码,就是交叉编译了,但如果电脑用的不是windows系统,而是uboot版的linux系统,那就不算交叉编译了,是直接编译,也叫本地编译,uboot编译源代码生成linux下运行的hex,并没有交叉。交叉编译只是刚开始引进arm时还没有uboot,只能在windows上编译linux下运行的代码,那就是交叉了,但是51单片机上运行ucos系统,按理说也是交叉编译,因为pc机并不是在ucos系统上编译,但人们都不怎么提,但是51单片机上运行没有系统的代码,那就肯定不是交叉,没有系统,跟谁交叉

单片机的开发也属于交叉编译吧
交叉编译 由于计算机的指令集与ARM上的指令集不一样。所以当程序能正常在PC上执行时,不一定能正常地在ARM上执行。一般交叉编译的过程是这样的:PC调试的程序 ===> 调试可用,通过交叉编译器将代码指令转换成对应的ARM平台代码指令 ===> 移植到ARM平台上使用。而单片机的过程也有些像。你像这类高深...

交叉编译器的举例
交叉编译1、在Windows PC上,利用ADS(ARM开发环境),使用armcc编译器,则可编译出针对ARM CPU的可执行代码。2、在Linux PC上,利用arm-linux-gcc编译器,可编译出针对Linux ARM平台的可执行代码。3、在Windows PC上,利用cygwin环境,运行arm-elf-gcc编译器,可编译出针对ARM CPU的可执行代码。4、...

gcc编译器可以用于单片机的开发吗
可以的,需要交叉编译。我们公司就在做这个。原来使用sdcc做的编译器,现在改为gcc了。

如何在mac上进行单片机开发
在非Windows上开发嵌入式,需要考虑的是交叉编译器buildtools和工具链toolschain,至于代码编辑理论上任意文本编辑器都行。具体方便使用的当然是eclipse,需要cdt版,再去下载gcc等,调试使用的是openocd。本人最近因项目版权问题的需要转为使用开源开发软件,编写和调试stm32都是用的eclipse。具体的可以百度关...

如何在单片机装Linux系统
2.开发系统逐步使用Ubuntu或者其他linux发行版,熟悉linux的基本操作,脚本,交叉编译 3.看深入理解linux内核,lld第三版,熟悉驱动和内核的基本知识,可以重点看自己熟悉外设的驱动,如spi。4.可以在熟悉的单片机上移植一个os,不一定是linux,如果是stm32可以移植freertos,这个网上很多资料,然后结合资源...

学c语言需要用什么配置的电脑
还有一个是做单片机开发,这个要看单片机的开发环境,像51这类windows环境的,对电脑要求很低。还有一类是要在Linux下交叉编译的像MIPS,就需要跑虚拟机,配制要高一点。作为开发,时间就是金钱,欲工其事必先利其器,配一台配置高的肯定是没错的,还有一个,c开发可能要用到各种硬件,比如USB转串口...

如何学习嵌入式
除此以外,网络上还提供了很多专用的写Flash的工具,开发者可以根据自己的需要选用。(现在明白了我在学的那个BF533为什么先下个flashProgramer.dxe先了)什么是arm-elf-gcc?arm-elf-gcc是一个交叉C语言编译器。我们在PC平台下编译程序,编译器运行的处理器同生成的代码将要运行的处理器相同。但是,在PC 机上编译ARM...

嵌入式c语言和c语言的异同
的,而是目标板。所以嵌入式开发就一定会有交叉编译这个环节(简单一点理解就是,在PC下编程,然后交叉编译一下,让程序能运行在PC外的其他平台上,比 如ARM开发板什么的)稍微做一下类比:普通编程开发===CPU(比如奔腾)===windows操作系统 嵌入式开发===嵌入式处理器(比如ARM)===嵌入式操作系统...

我在学习单片机,但遇到很多芯片资料看不懂,有哪位高手可以教教我如何...
以上只不过是大概的框架,在实际的开发中还会涉及很多东西,比如:交叉编译、makefile、shell脚本等等,所以说学习嵌入式的周期较长,门槛较高,自学的话更是需要较强的学习能力和专业功底。只要能坚持下来一定会取得成功!华清远见的嵌入式专业教材比较专业,也很出名,高校图书馆以及外面书店都有卖,你可以...

谁能教教我怎么学单片机,先学什么,怎么入门?
裸机驱动,就理解为单片机就好了,性质是一样的,只不过这里不像51和STM32使用IDE进行编译和链接,而是自己使用交叉编译工具配合Makefile手动的编译链接。uboot入门,学习通用的引导流程,熟悉ubootcmd,bootcmd,环境变量,flash烧写等。 kernel驱动,这里的kernel驱动和裸机驱动还是很大区别的,单片机驱动相对来说说仅仅只是看懂SO...

相似回答