springboot lucene:嵌入式linux内核移植及根文件系统制作(skyeye模拟)
来源:百度文库 编辑:中财网 时间:2024/05/04 15:55:40
软件:内核版本2.6.25.14(fc9原装版本)、busybox-1.14.3、cross-3.4.1参考:http://www.dzkf.cn/html/qianrushixitong/2009/0213/3643.html(在此对作者进行感谢)注:由于虚拟机出来点问题,又重新做了一遍,内核也不想升级了,直接使用了2.6.25.14,bootloader使用最新的u-boot-2009.08-rc2(移植见我的其他文章)。 一、内核移植1、修改MakefileARCH ?= arm
CROSS_COMPILE ?= arm-linux-2、修改NandFlash 分区信息(arch/arm/plat-s3c24xx/common-smdk.c)static struct mtd_partition smdk_default_nand_part[] = {
[0] = {
.name = "uboot",
.size = SZ_1M,
.offset = 0,
},
[1] = {
.name = "kernel",
.offset = SZ_1M,
.size = SZ_3M,
},
[2] = {
.name = "root",
.offset = SZ_4M,
.size = SZ_4M * 10,
},
[3] = {
.name = "user",
.offset = SZ_4M * 11,
.size = SZ_4M * 5,
},
};3、内核devfs支持(fs/Kconfig)在902 行menu "Pseudo filesystems"下面添加如下代码:
config DEVFS_FS
bool "/dev file system support (OBSOLETE)"
default y
config DEVFS_MOUNT
bool "Automatically mount at boot"
default y
depends on DEVFS_FS4、复制编译配置文件。cp arch/arm/configs/s3c2410_defconfig .config5、make menuconfig在配置菜单中,选择system type-->s3c2410 machines 中的smdk2410其他的arch-machines 全部取消。6、make7、制作uImagemkimage -A arm -O linux -T kernel -C none -a 30008000 -e 30008040 - n "linux-2.6.25.14" -d zImage uImage8、Skyeye模拟使用tftp或nfs协议加载内核,发现问题:rtc,网卡,lcd需要自己移植。9、rtc移植(参考http://www.linuxdiyf.com/viewarticle.php?id=85575)(1).修改文件mach-smdk2410.c(arch/arm/mach-s3c2410/mach-smdk2410.c),在数组smdk2410_devices[]中添加&s3c_device_rtc.
(2).在/etc目录下创建rtc设备文件rtc.
mknod rtc –c 10 135(制作根文件系统时需要)
(3).重新编译内核。看看启动信息。(skyeye好像不能模拟rtc芯片,所以实际的设置功能实现不了)。10、网卡cs8900a移植参见:http://www.dzkf.cn/html/qianrushixitong/2009/0213/3643_2.html(不再细述)但要注意,2.6.25.14内核移植时会有错误,修改方法是对那个错误的函数添加声明(extern)即可。11、lcd移植参见:http://blog.chinaunix.net/u2/63560/showart_520838.html对文章里的函数做如下修改即可static struct s3c2410fb_display gyh2410_lcd_cfg __initdata = { { /* Config for 240x320 LCD */ .lcdcon5 = S3C2410_LCDCON5_FRM565 | S3C2410_LCDCON5_INVVLINE | S3C2410_LCDCON5_INVVFRAME | S3C2410_LCDCON5_PWREN | S3C2410_LCDCON5_HWSWP, .type = S3C2410_LCDCON1_TFT, .width = 320, .height = 240, .pixclock = 100000, /* HCLK/10 */ .xres = 320, .yres = 240, .bpp = 16, .left_margin = 16, .right_margin = 6, .hsync_len = 9, .upper_margin = 4, .lower_margin = 6, .vsync_len = 16, }}; static struct s3c2410fb_mach_info gyh2410_fb_info __initdata = { .displays = &gyh2410_lcd_cfg, .num_displays = 1, .default_display = 0, .gpccon = 0xaa955699, .gpccon_mask = 0xffc003cc, .gpcup = 0x0000ffff, .gpcup_mask = 0xffffffff, .gpdcon = 0xaa95aaa1, .gpdcon_mask = 0xffc0fff0, .gpdup = 0x0000faff, .gpdup_mask = 0xffffffff, .lpcsel = ((0xCE6) & ~7) | 1<<4,}; s3c24xx_fb_set_platdata(&gyh2410_fb_info);不知什么原因,用原作者的方法对2.6.24.4和2.6.25.14均不成功。至此使用skyeye仿真时基本没有问题了。(除了skyeye没有实现usb模拟的一点错误)二、根文件系统制作参考:http://www.dzkf.cn/html/qianrushixitong/2009/0213/3643_3.html和http://blog.chinaunix.net/u1/38994/showart_2017679.html基本步骤按前一篇文章。但是编译器使用的3.4.1,后一篇文章的所有内容都是必须修改的。我使用高版本的编译器时内核不能启动生成的文件系统(可能与软浮点有关)。三、应用程序移植写了个简单的C程序,使用静态链接可以,动态的怎么都不行,ldd分析不出所需库。写了个简单的字符驱动程序,不行。(insmod出错)
CROSS_COMPILE ?= arm-linux-2、修改NandFlash 分区信息(arch/arm/plat-s3c24xx/common-smdk.c)static struct mtd_partition smdk_default_nand_part[] = {
[0] = {
.name = "uboot",
.size = SZ_1M,
.offset = 0,
},
[1] = {
.name = "kernel",
.offset = SZ_1M,
.size = SZ_3M,
},
[2] = {
.name = "root",
.offset = SZ_4M,
.size = SZ_4M * 10,
},
[3] = {
.name = "user",
.offset = SZ_4M * 11,
.size = SZ_4M * 5,
},
};3、内核devfs支持(fs/Kconfig)在902 行menu "Pseudo filesystems"下面添加如下代码:
config DEVFS_FS
bool "/dev file system support (OBSOLETE)"
default y
config DEVFS_MOUNT
bool "Automatically mount at boot"
default y
depends on DEVFS_FS4、复制编译配置文件。cp arch/arm/configs/s3c2410_defconfig .config5、make menuconfig在配置菜单中,选择system type-->s3c2410 machines 中的smdk2410其他的arch-machines 全部取消。6、make7、制作uImagemkimage -A arm -O linux -T kernel -C none -a 30008000 -e 30008040 - n "linux-2.6.25.14" -d zImage uImage8、Skyeye模拟使用tftp或nfs协议加载内核,发现问题:rtc,网卡,lcd需要自己移植。9、rtc移植(参考http://www.linuxdiyf.com/viewarticle.php?id=85575)(1).修改文件mach-smdk2410.c(arch/arm/mach-s3c2410/mach-smdk2410.c),在数组smdk2410_devices[]中添加&s3c_device_rtc.
(2).在/etc目录下创建rtc设备文件rtc.
mknod rtc –c 10 135(制作根文件系统时需要)
(3).重新编译内核。看看启动信息。(skyeye好像不能模拟rtc芯片,所以实际的设置功能实现不了)。10、网卡cs8900a移植参见:http://www.dzkf.cn/html/qianrushixitong/2009/0213/3643_2.html(不再细述)但要注意,2.6.25.14内核移植时会有错误,修改方法是对那个错误的函数添加声明(extern)即可。11、lcd移植参见:http://blog.chinaunix.net/u2/63560/showart_520838.html对文章里的函数做如下修改即可static struct s3c2410fb_display gyh2410_lcd_cfg __initdata = { { /* Config for 240x320 LCD */ .lcdcon5 = S3C2410_LCDCON5_FRM565 | S3C2410_LCDCON5_INVVLINE | S3C2410_LCDCON5_INVVFRAME | S3C2410_LCDCON5_PWREN | S3C2410_LCDCON5_HWSWP, .type = S3C2410_LCDCON1_TFT, .width = 320, .height = 240, .pixclock = 100000, /* HCLK/10 */ .xres = 320, .yres = 240, .bpp = 16, .left_margin = 16, .right_margin = 6, .hsync_len = 9, .upper_margin = 4, .lower_margin = 6, .vsync_len = 16, }}; static struct s3c2410fb_mach_info gyh2410_fb_info __initdata = { .displays = &gyh2410_lcd_cfg, .num_displays = 1, .default_display = 0, .gpccon = 0xaa955699, .gpccon_mask = 0xffc003cc, .gpcup = 0x0000ffff, .gpcup_mask = 0xffffffff, .gpdcon = 0xaa95aaa1, .gpdcon_mask = 0xffc0fff0, .gpdup = 0x0000faff, .gpdup_mask = 0xffffffff, .lpcsel = ((0xCE6) & ~7) | 1<<4,}; s3c24xx_fb_set_platdata(&gyh2410_fb_info);不知什么原因,用原作者的方法对2.6.24.4和2.6.25.14均不成功。至此使用skyeye仿真时基本没有问题了。(除了skyeye没有实现usb模拟的一点错误)二、根文件系统制作参考:http://www.dzkf.cn/html/qianrushixitong/2009/0213/3643_3.html和http://blog.chinaunix.net/u1/38994/showart_2017679.html基本步骤按前一篇文章。但是编译器使用的3.4.1,后一篇文章的所有内容都是必须修改的。我使用高版本的编译器时内核不能启动生成的文件系统(可能与软浮点有关)。三、应用程序移植写了个简单的C程序,使用静态链接可以,动态的怎么都不行,ldd分析不出所需库。写了个简单的字符驱动程序,不行。(insmod出错)
嵌入式Linux开发一定要了解内核吗?
嵌入式linux文件系统如何加载,以及如何创建
Linux内核编译,步骤及截图.
请问,“嵌入式Linux的Kernel的定制与移植”怎么翻译???
如何学习嵌入式linux
如何学习嵌入式Linux?
嵌入式linux开发问题
LINUX内核UML图
怎样更新linux内核
linux 内核 最新版
怎样修改linux内核?
关于linux内核
linux内核编译
linux arm 移植
怎样卸装linux文件系统?
嵌入式WEB SERVER移植到板子上
Linux文件系统与dos文件系统的异同
如何升级linux的内核?
linux最新内核版本是多少?
linux最新内核版本是多少?
linux内核代码的问题~
linux内核代码的问题~
linux内核代码的问题~
linux内核指的是什么?