Linux 内核2.6.32.26 在sc32442处理器上的移植
来源:互联网 发布:关晓彤人品知乎 编辑:程序博客网 时间:2024/04/30 03:42
Linux 内核2.6.32.26 在sc32442处理器上的移植
1.首先,下载内核源码压缩包
http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.32.26.tar.bz2
解压缩到/home/hu/development文件夹内
2.打开根目录下的Makefile文件修改
ARCH ?= $(SUBARCH)
CROSS_COMPILE ?=
为
ARCH := arm
CROSS_COMPILE := arm-unknwon-linux-gnueabi-
3.修改nand分区信息
要让内核知道nand flash的分区信息,设置成跟bootloader一致。
在arch/arm/plat-s3c24xx/common-smdk.c中修改smdk_default_nand_part[],注意这个一定
要跟bootloader的一致。在我的板子中修改如下:
static struct mtd_partition smdk_default_nand_part[] = {
[0] = {
.name = "uboot",
.size = 0x000000040000,
.offset = 0,
},
[1] = {
.name = "Kernel",
.offset = 0x000000060000,
.size = 0x000000200000,
},
[2] = {
.name = "root",
.offset = 0x000000260000,
.size = 0x000004000000,
}
};
4.修改机器码
在u-boot的移植中,我们已经设置了MACH_TYPE为MACH_TYPE_SMDK2440, 查看u-boot里include/asm-arm/mach-types.h文件,发现
#define MACH_TYPE_SMDK2440 1008
而 linux 内核源码的 arch/arm/tools/mach-types 文件有如下定义:
smdk2440 MACH_SMDK2440 SMDK2440 1008
因此我们也需修改内核机器码使其为1008
修改 arch/arm/mach-s3c2440/mach-smdk2440.c : //修改文件最后面
将 MACHINE_START(S3C2440, "SMDK2440")修改为:MACHINE_START(SMDK2440, "SMDK2440")
修改arch/arm/kernel/head.S //在ENTRY(stext)下添加如下代码(红色部分)
ENTRY(stext)
mov r0, #0
mov r1, #0x3f0 // MACH_TYPE_SMDK2440 值 1008 换成十六进制就是 0x3f0
ldr r2, =0x30000100 //Linux kernel parameter
5.打补丁,添加yaffs2文件系统支持
下载yaffs补丁:cvs-root.tar.gz (用搜索引擎一搜就能搜到)
tar xzvf cvs-root.tar.gz
cd cvs/yaffs2/
./patch-ker.sh c /home/hu/development/linux-2.6.32.26
6.配置内核
调用自带的一个默认配置单, 该配置单在内核源码的 “arch/arm/configs/”
目录下面,名为:“s3c2410_defconfig”,该配置文件里面选择了几乎所有的和 S3C24XX 系列
CPU 相关的 配置选项,我们完全可以在该配置单的基础上进行配置。
内核代码顶层目录下,执行make menuconfig 进入菜单选项
最下面一项load an alternate configuration file
输入路径arch/arm/configs/s3c2410_defconfig
(1).General setup --->
[*] Configure standard kernel features (for small systems) --->
选上这项,否则文件系统中的一些选项不会出现
(2). System Type ---->
[*] S3C2410 DMA support
S3C2440 Machines --->
[*] SMDK2440
[ ] SMDK2440 with S3C2440 CPU module
S3C2442 Machines --->
[*] SMDK2440 with S3C2442 CPU module
(3).[*] Enable loadable module support --->
[*] Module unloading
(4).Device Drivers --->
<*> Memory Technology Device (MTD) support --->
[*] MTD partitioning support
<*> NAND Device Support --->
<*> NAND Flash support for Samsung S3C SoCs
[ ] Samsung S3C NAND driver debug
[ ] Samsung S3C NAND Hardware ECC
< > Real Time Clock --->
(5).File systems----->
Miscellaneous filesystems --->
<*>YAFFS2 file system support
(6).kernel Features----->
[*]Use the ARM EABI to compile the Kernel
(7).Boot options --->
设置默认启动参数为:
root=/dev/mtdblock2 init=/linuxrc console=ttySAC0 rootfstype=yaffs mem=64M rw
退出之前要到最上级菜单,选最后一项save an alternate configuration file
输入.config然后再确认,退出
7.编译内核
内核顶层目录下执行make zImage
则在arch/arm/boot/ 下生成镜像文件 zImage
- Linux 内核2.6.32.26 在sc32442处理器上的移植
- SC32442上linux-2.6.32.26内核的ax88180官方驱动2.2.0的移植
- 在基于or1200处理器的SoC上移植linux
- Linux-2.6.30内核在TE2410上的移植
- Linux-2.6.32.2内核在mini2440上的移植
- Linux-2.6.30.4在2440上的移植之内核
- Linux-2.6.32.2内核在mini2440上的移植(一)---内核移植
- Linux-2.6.32.2内核在mini2440上的移植(十六)---基于中断的按键驱动移植
- Linux-2.6.32.2内核在mini2440上的移植(十六)---基于中断的按键驱动移植
- Linux-2.6.32.2内核在mini2440上的移植(十六)---基于中断的按键驱动移植
- Linux-2.6.32.2内核在mini2440上的移植(九)---触摸屏驱动移植
- Linux-2.6.32.2内核在mini2440上的移植(二)---yaffs2文件系统移植
- Linux-2.6.32.2内核在mini2440上的移植(三)---DM9000网卡驱动移植
- Linux-2.6.32.2内核在mini2440上的移植(六)---LCD驱动移植
- Linux-2.6.32.2内核在mini2440上的移植(八)---触摸屏驱动移植
- Linux-2.6.32.2内核在mini2440上的移植(九)---触摸屏驱动移植
- .Linux-2.6.32.2内核在mini2440上的移植(十一)---移植SD卡驱动
- Linux-2.6.32.2内核在mini2440上的移植(十二)---移植I2C EEPROM驱动
- 电容屏驱动,输入设备注册,I2C设备注册,中断注册,虽然没有完全调试成功
- 微软10款最差产品
- 64位操作系统 IIS7 使用 32位 应用程序池,error 503 Service Unavailable
- 微软需担心谷歌操作系统的10大原因
- graphics
- Linux 内核2.6.32.26 在sc32442处理器上的移植
- IOs开发Objective-C基础之──多态
- 【收藏】windows快捷键大全(史上最全)
- ubuntu下lighttpd编译安装
- 高手与菜鸟,思想与技术
- XP访问ubuntu文件夹
- C++的GUID的生成代码
- 如何在Linux中让I2C驱动支持Sub Address的两种方法
- java applet画一棵树