Ⅰ ARM体系的cpu编译内核时$make menuconfig 与 $make menuconfig ARCH =arm CROSS_COMPILE=arm-linux-区别
你可以看一下makefile的内容。
make menuconfig 是执行makefile里面的menuconfig目标.
如果后面ARCH =arm CROSS_COMPILE=arm-linux-的话表明: 编译出来的目标是针对ARM体系结构的。因为是针对ARM体系结构,所以需要使用交叉编译器。使用CROSS_COMPILE=xxx来指定交叉编译器。
CROSS_COMPILE=arm-linux- 意思是制定交叉编译器为arm-linux-XXX。 如:makefile里面会指定CC为arm-linux-gcc。
Ⅱ 为什么要配置内核为何要重新编译内核
为什么要配置内核?
编译前当然要配置一下内核啊,make menuconfig ,生成默认配置文件 .config ,这个文件是设置 cpu 体系,及很多驱动选项的,你没配置这个,怎么可能编译那
新下载的内核都是没有默认 .config 需要你找到一个默认的config 文件,比如 arch/arm/configs/ 下是 arm cpu 很多的默认配置,当然你也可以把你以前的 config 文件拷贝到新内核目录下。
.config 是配置编译内核的最初步骤,你要编译驱动程序,就必须要了解这个,多上网查下资料
然后重新编译
为何要重新编译内核?
Linux作为一个自由软件,在广大爱好者的支持下,内核版本不断更新。
新的内核修订了旧内核的bug,并增加了许多新的特性。如果用户想要使用这些新特性,或想根据自己的系统度身定制一个更高效,更稳定的内核,就需要重新编译Linux内核。
通常,更新的内核会支持更多的硬件,具备更好的进程管理能力,运行速度更快、 更稳定,并且一般会修复老版本中发现的许多漏洞等,经常性地选择升级更新的系统内核是Linux使用者的必要操作内容。
为了正确的合理地设置内核编译配置选项,从而只编译系统需要的功能的代码,一般主要有下面四个考虑:
(1)自己定制编译的内核运行更快(具有更少的代码)
(2)系统将拥有更多的内存(内核部分将不会被交换到虚拟内存中)
(3)不需要的功能编译进入内核可能会增加被系统攻击者利用的漏洞
(4) 将某种功能编译为模块方式会比编译到内核内的方式速度要慢一些
这样就了解为什么要编译Linux内核了。
Ⅲ arm嵌入式linux系统为什么要在Linux主机上编译后下载到开发板呢为什么
单片机很少跑操作系统,arm嵌入式系统如果不跑操纵系统,当然用IAR,KEIL等等集成开发环境也可以编译出来程序,但是如果要跑操作系统,目前主流的都是跑的基于linux内核的操作系统。
既然使用的是基于linux的系统,那在linux下用交叉编译环境编译出程序就是自然而然的。就好像你要写一个windows下运行的程序,自然首选是在windows下开发。
搭建linux的编译环境很简单。即使是windows的系统,装个虚拟机,安装一下交叉编译环境,也就可以了。
搭建windows编译环境的方法基本都是先安装一个类linux环境的软件,比如cgwin,然后和linux下步骤基本相同,没多大区别。
你想用windows的环境,应该是对linux不熟悉吧。但是,学习linux是做嵌入式省不了的,是必须的。我也是这么一步一步走来的,推荐从单片机裸奔(无操作系统)过渡到ARM linux的一本书《linux c 一站式学习》
Ⅳ arm嵌入式linux系统为什么要在Linux主机上编译后下载到开发板呢为什么
同学不要把单片机和嵌入式化成等同。单片机只不过是嵌入式里面的一个小分支。
你问这个问题说明你对软件的编译原理还不够深入。
简单来说就是单片机的IDE已经集成了很多步骤,编译,链接,以及调试功能,更重要的是单片机编程需要的接口是比较平台化的比如说在8位机上的程序涉及到寄存器的操作,到其他单片机就要重头开发,
用到的函数也不同,linux应用编程其实用的是linux平台的c库以及linux的API,这些在Windows是没有的,除非你自己配置环境。而单片机说白了,基本都是根据某款单片机到各个论坛去或者芯片厂商去要接口实现函数,开发中很少用到C库中的函数。
而在PC的linux中是有开源的内核代码,以及编译环境,linux中的编译器可以找到需要实现的头文件以及动态库和静态库。在开发的过程中也需要有单独的调试工具,比如GDB等。
当然你可以在Windows下从网上下载好对应的linux内核源码以及编译器,配置好路径,也可以实现在Windows下进行编译运行,但这样会遇到很多的兼容性问题,而且你的做法不是主流,实际开发这么搞会带来很多麻烦
Ⅳ KEIL FOR ARM芯片跟头文件哪里下载啊
是这样的,ARM只是个内核,以ARM为内核做出来的MCU才是芯片,所以ARM官方不会提供具体芯片的资料,因为他们根本不做芯片
你在新建工程之后,选择芯片的时候,不要选择ARM,因为那只是对内核的编译编辑,麻烦的很,直接选你的芯片。
比如如果是STM32F417.。。就去 ST Micro...下面找。
比如如果是S3C2440.。。就去 Samsung下面找。
比如如果是LPC2138.。。就去 NXP下面找
如果你用的芯片都没有,再去ARM里找内核,然后网上去找芯片的资料,自己做驱动和头文件。