网站首页 爱站云资源网 值得一看 正文
Linux内核发行的一般都是通用版本,代码可以兼容很多的硬件平台,因为内核代码中包含大部分硬件平台的驱动程序,
用户可以自己定制内核包含哪些设备的驱动,就像开关一样,可以打开/关闭一些编译选项来支持不同的硬件平台。
内核移植就是根据你自己选择的硬件平台来重新编译内核支持对应的硬件,使之可以在该硬件平台上运行,如果
缺少相应的硬件驱动程序或其他内核模块,可以自己进行相应的开发加入到内核中一起编译最终实现对硬件的支持。
linux移植有哪些步骤
1、获得内核源码:从Linux内核的官网可获得相应的内核源码,这里以2.6.31.1为例。
2、解压源码,进入目录:
#tarxjvflinux-2.6.31.1.tar.bz2
#cdlinux-2.6.31.1
3、修改MAKefile的183行:
ARCH?=arm<—指定系统硬件架构
CROSS_COMPILE?=arm-linux-<—指定交叉编译器
4、修改时钟:
修改arch/arm/mach-s3c2440/mach-smdk2440.c的163行
staticvoid__initsmdk2440_map_io(void)
{
s3c24xx_init_io(smdk2440_iodesc,ARRAY_SIZE(smdk2440_iodesc));
s3c24xx_init_clocks(12000000);<—输入时钟为12MHz
s3c24xx_init_uarts(smdk2440_uartcfgs,ARRAY_SIZE(smdk2440_uartcfgs));
}
这个一定要设置对,否则会打印出乱码。
5、修改机器码(根据实际情况,这个要和bootloader的匹配):
修改:arch/arm/tools/mach-types的379行:
s3c2440………………………XXX<—后面那个数就是机器码(我用的天嵌开发板的机器码是168)
6、配置:
#makemenuconfig<—进入图形化配置界面
在配置菜单中选择这一项:"LoadanAlternateConfigurationFile",输入2440的默认配置文件:arch/arm/configs/s3c2410_defconfig,这个文件就是S3C24XX系列开发板板级支持包(BSP)然后选择OK,按回车。
进入"SystemType"选项单,里面的选项保持默认在"S3C24XXMachine"选项中只配置这几项(其他的选项取消):
S3C2410Machine--->
[*]SMDK2410/A9M2410
S3C2440Machine--->
[*]SMDK2440
[*]SMDK2440withS3C2440cpumoudle
配置完后,回到主菜单,选择这一项"SaveanAlternateConfigurationFile",输入要保存的
配置文件名称:.config(默认)或自己取名:TQ2440_config,退出,编译内核:#makezImage
说明:以后移植过程中的配置、编译,都是按这个步骤进行,但是只需要保存一次配置文件,以后就不需要再保存配置文件了,配置完后可以直接退出。
编译完后,会在arch/arm/boot下生成zImage内核镜像文件,可以修改该目录下的Makefile,在第57行下面添加:
@cp-farch/arm/boot/zImagezImage
@echo'Kernel:$@isready'
这样执行makezImage后,就把生成的zImage拷到内核根目录下。
如果希望在在执行makedistclean时,也同时把zImage删除,可以修改内核根目录下Makefile的第1247行,在后面加上:
-typef-print|xargsrm-frmzImage
把zImage镜像烧进NandFlash跑一下,看是否正常打印出信息,如果第一步能正常引导内核,那就开始进行。然后添加驱动。
注意,系统启动最后可能会出现这个错误:
Kernelpanic-notsyncing:Attemptedtokillinit!
然后出打印出一些很乱的东西。因为用4.x.x版本的交叉编译器使用EABI,但内核默认是不支持EABI编译的,所以编译出的系统会报错,但用3.x.x版本的编译器就不会出现这个问题。解决办法是,配置内核支持EABI编译:
KernelFeatures--->
[*]UsetheARMEABItocompilethekernel
[*]AllowoldABIbinariestorunwiththiskernel(EXPERIMENTA)6
嵌入式linux移植
嵌入式Linux系统的移植主要有U-Boot、Linux内核、文件系统这三部分。Uboot是在系统上电时开始执行,初始化硬件设备,准备好软件环境,然后才调用Linux操作系统内核。文件系统是Linux操作系统中用来管理用户文件的内核软件层。文件系统包括根文件系统和建立于Flash内存设备之上文件系统。根文件系统包括系统使用的软件和库,以及所有用来为用户提供支持架构和用户使用的应用软件,并作为存储数据读写结果的区域。可将Linux系统移植过程大致需要分成6个步骤:1)准备工作,包括下载源码、建立交叉编译环境等。交叉开发是指在开发主机上安装开发工具,编辑、编译目标板的引导程序、内核和文件系统,使其能在目标板上运行。2)配置和编bootloader(引导装载程序)。通过这段小程序,可以初始化硬件设备、建立内存空间的映射表,从而建立适当的系统硬件环境,为最终调用操作系统内核做好准备。3)配置和编译Linux内核,对其进行相应的裁剪,修改内核以支持相关的硬件设备。4)为大容量NANDFlash移植YAFFS文件系统,并将该文件系统加入Linux内核中;5)制作RAMdisk来挂载根文件系统。Linux系统中的文件和设备是通过文件系统来组织的。文件系统的存在使得数据和设备可以被有效而透明地存取访问。一个linux的最简根文件系统应该包括支持linux系统正常运行的基本内容,包括系统使用的软件和库,以及所有用来为用户提供基本支持的架构和指令。6)烧写、调试系统;如果调试出错,则需要重新配置,返回上述步骤(2)。嵌入式linux系统移植包含哪三部分内容
linux移植mqtt
首先,xserver有很多不同实现,我先默认是比较通用的x111.最主要的可能是软件依赖问题,根据我折腾lfs的经验,如果你改动过一些依赖库,就可能无法启动2.有可能是硬件原因,x11在硬件支持方面不是非常全面,如果是非常特殊的显卡,可能不支持。
猜你喜欢
你 发表评论:
欢迎- 搜索
- 最新留言
- 文章归档
-
- 2021年4月 (38)
- 2021年3月 (102)
- 2020年10月 (2)
- 2020年9月 (3)
- 2020年8月 (6)
- 2020年7月 (33)
- 2020年6月 (42)
- 2020年5月 (41)
- 2020年4月 (46)
- 2020年3月 (51)
- 2020年2月 (81)
- 2020年1月 (69)
- 2019年12月 (100)
- 2019年11月 (98)
- 2019年10月 (82)
- 2019年9月 (113)
- 2019年8月 (55)
- 2019年7月 (52)
- 2019年6月 (5)
- 2019年5月 (39)
- 2019年4月 (36)
- 2019年3月 (103)
- 2019年2月 (49)
- 2019年1月 (107)
- 2018年12月 (39)
- 2018年11月 (8)
- 2018年10月 (57)
- 2018年9月 (10)
- 2018年8月 (27)
- 2018年7月 (13)
- 2018年6月 (61)
- 2018年5月 (21)
- 2018年4月 (46)
- 2018年3月 (7)
- 2018年2月 (12)
- 2018年1月 (40)
- 2017年12月 (50)
- 2017年11月 (39)
- 2017年10月 (36)
- 2017年9月 (34)
- 2017年8月 (30)
- 2017年7月 (143)
- 2017年6月 (41)
- 标签列表
本文暂时没有评论哦(●'◡'●)