内核移植.docx
《内核移植.docx》由会员分享,可在线阅读,更多相关《内核移植.docx(11页珍藏版)》请在冰点文库上搜索。
内核移植
根据bootlorder里面的分区情况进行更改,平台时钟要看你的开发板上外接的晶振是多少,机器码和nandflash的分区呢,就要看你的vivi在开发板上显示的信息作相应的更改。
步骤:
第一步,应该是修改对硬件平台的支持。
首先,应该是arm架构,arm-linux-gcc的编译方式的支持
第二步,就是平台时钟和机器码了,只有选择了相对应得平台时钟才能正常的工作。
第三步,就是对硬件分区的支持了,也可以说是nandflash驱动的移植。
第四步,是对yaffs2的文件系统的支持。
注:
在linux内核的移植中,你所要更改的大部分设置都在arch/arm目录下。
1.先添加对arm的支持
geditMakefile
ARCH?
=$(SUBARCH)
CROSS_COMPILE?
=
改成:
ARCH?
=arm
CROSS_COMPILE?
=arm-linux-
2.修改平台时钟频率
geditarch/arm/mach-s3c2440/mach-smdk2440.c
找到数字16930000改为12000000
3.修改机器码
geditarch/arm/tools/mach-types
将S3C2440后面的数字改为1999
将MINI2440后面的数字改为362
4.移植nandflash驱动
geditarch/arm/plat-s3c24xx/common-smdk.c
nandflash的分区,就要看你的vivi在开发板上显示的信息作相应的更改了,
将开发板连接上电脑,启动超级终端/secureCRT,选则q后,
进入supervivi模式,
输入以下命令:
paramshow 查看机器码
part show 查看分区
5. 在arch/arm/tools/mach-type中s3c2440的机器码一定要与vivi中的一致
Vivi中paramshow–显示一小参数
6.修改MTD分区
在arch/arm/plat-s3c24xx/common-smdk.c中修改
例如:
Staticstructmtd_partitionsmdk_default_nand_part[]={
[0]={
.name=”vivi”,
.size=0x00040000,
.offset=0x00000000,
}
[1]={
.name=”param”,
.offset=0x00040000,
.size=0x00020000,
}
[2]={
.name=”kernel”,
.offset=0x00060000,
.size=0x00200000,
}
[3]={
.name=”root”,
.offset=0x00260000,
.size=0x3fd80000,
}
};
注:
多余的要删除!
!
注:
最后的,要去掉
Param项可以注释掉的/**/
Vivi中partshow–显示以下参数
bootloader中的分区要与内核中的分区完全一致,包括分区名、起始地址、分区大小,以保
证内核、文件系统能够烧写到nandflash中。
7.接下来就是对内核的定制了,
首先复制一下对于S3C2410/2440的通用配置
注意:
在执行makemenuconfig之前一定要先执行下面这一步
cp-rfarch/arm/configs/s3c2410_defconfig.config
makemenuconfig
make menuconfig 报错make menuconfig' requires the ncurses libraries解决方法
可执行如下命令apt-getinstalllibncurses*
或sudoapt-getinstallncurses-dev
(0)在配置中添加自己的信息
(1)支持EABI
KernelFeatures --->
[*]UsetheARMEABItocompilethekernel
[*] AllowoldABIbinariestorunwiththiskernel(EXPERIMENTA)
(2)支持NandFlash
DeviceDrivers--->
<*>MemoryTechnologyDevice(MTD)support--->
[*] MTDpartitioningsupport
<*>NANDDeviceSupport--->
<*> NANDFlashsupportforS3C2410/S3C2440SoC
[] S3C2410NANDHardwareECC //这个一定bu要选上,因为
NandFlashCapacitySelect(256MNandForTX-24)。
(3)进行内核的初步裁剪
systemtype->
找到S3C2400Machines--->
S3C2410Machines--->
S3C2412Machines--->
S3C2440Machines--->
S3C2442Machines--->
S3C2443Machines--->
除了S3C2410Machines中的第一项和S3C2440Machines中全部选项留下外,
其余的全部去掉。
(4)接着去掉软浮点检测
geditdrivers/mtd/nand/s3c2410.c
找到chip->ecc.mode=nand_ECC_SOFT改为NONE
(5)接着就是添加yaffs2的文件系统的支持(即为内核打上yaffs2的补丁),当然你也可以选别的。
首先,如果选择yaffs2的话,
在网上下载一个yaffs2源码,解压后进入
执行./patch-ker.shc/home/test/linux-2.6.32.2/
后面是你自己的linux源码的位置,注意最后面的/一定不要忘了
此时进入linux-2.6.32.2/fs目录,可以看到已经多了一个yaffs2目录(这样在makemenuconfig中才会有YAFFS2SystemSupport选项)。
其次,配置和编译带YAFFS2支持的内核
在Linux内核源代码根目录运行:
makemenuconfig,移动上下按键找到FileSystems,如图,按回车进入该子菜单
再找到“Miscellaneousfilesystems”菜单项,按回车进入该子菜单,如图
出现如下图菜单,找到“YAFFS2filesystemsupport”,并按空格选中它,这样我们就在内核中添加了yaffs2文件系统的支持,按“Exit”退出内核配置。
添加完成后。
8.makezImage内核就算移植完成了。
如果遇到什么问题的话,就具体问题具体分析了。