当前位置: 技术问答>linux和unix
linux为什么能在不同的cpu上运行
来源: 互联网 发布时间:2016-03-23
本文导语: 以前做过2410的linux移植,现在又做pxa270的,我发现过程都是一样的,下载的源码除了版本以外应该都是一样的,编译器除了版本外也都是arm-linux-gcc,可2410和pxa270的架构和指令集都不一样啊,为什么都能运行呢?还有...
以前做过2410的linux移植,现在又做pxa270的,我发现过程都是一样的,下载的源码除了版本以外应该都是一样的,编译器除了版本外也都是arm-linux-gcc,可2410和pxa270的架构和指令集都不一样啊,为什么都能运行呢?还有就是如果指令集是一样的话,是不是只要编译出来的linux内核可以在2410上执行也可以在2440上执行啊?是不是只是在make menuconfig的时候选择了用什么处理器就能区别开所编译的zImage是提供给哪个核的cpu运行,那linux的核里面说包含的那些和cpu有关的代码都做了些什么呢?谢谢各位能回答。或者和我交流更欢迎 email gw.km@163.com qq 8028537
|
Linux的source tree已经将于架构相关和无关的代码分开。 对于不同CPU架构的代码都在arch里面
用C语言写的与架构无关的代码当然可以运行在不同的架构下,只要用对应的编译器来编译
对于不同架构的CPU, Linux是提供了不同的代码,分开放在arch目录里, 其实在编译的时候是选用了arch下对应的目录
指令集相同的CPU,理论上用对应的编译器编译出来的bzImage都能够在上面跑,但就算是指令集相同,不能保证CPU里面的集成的硬件是相同,特别是什么复位后的程序入口地址,各种寄存器等等有可能是不同的
用C语言写的与架构无关的代码当然可以运行在不同的架构下,只要用对应的编译器来编译
对于不同架构的CPU, Linux是提供了不同的代码,分开放在arch目录里, 其实在编译的时候是选用了arch下对应的目录
指令集相同的CPU,理论上用对应的编译器编译出来的bzImage都能够在上面跑,但就算是指令集相同,不能保证CPU里面的集成的硬件是相同,特别是什么复位后的程序入口地址,各种寄存器等等有可能是不同的
|
linux分为三部分
启动代码uboot
硬件相关部分bsp
核心部分这部分硬件无关
linux可以是嵌入式的
所以只要把硬件相关的bsp提供就可以在不同的cpu上跑
启动代码uboot
硬件相关部分bsp
核心部分这部分硬件无关
linux可以是嵌入式的
所以只要把硬件相关的bsp提供就可以在不同的cpu上跑