新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 利用U-Boot实现uClinux向S3C44B0的移植

利用U-Boot实现uClinux向S3C44B0的移植

作者:时间:2012-04-10来源:网络收藏

3.3 内核的

3.3.1 -dist源码包的准备

的官方网站下载uclinux-dist源码包。源码包中包含了uClinux内核、uClibc库和busybox等 uClinux下的用户应用程序,本文中下载的是uClinux-dist-20041215.tar.gz,在linux系统下解压后会生成一个 uClinux-dist目录,该目录包含了编译uClinux内核需要的所有文件。在uClinux-dist目录中包含有linux-2.2.x、 linux-2.4.x、linux-.2.6.x三个子目录,就是三种版本的uClinux内核的源码,我们的目的是把uClinux-2.6.9版本到目标平台上,所以我们还需要从http://www.kernel.org上下载linux-2.6.9.tar.bz2,从http: //www.uClinux.org上下载linux-2.6.9-uc0.patch,从Samsung的网站http: //www.oprensrc.sec.samsung.com上下载补丁文件linux-2.6.9-uc0.hsc0.patch。在Linux系统下解压内核Linux-2.6.9.tar.bz2并打上补丁文件linux-2.6.9-uc0.patch和linux-2.6.9-uc0- hsc0.patch,将打上补丁的2.6.9内核改名为linux-2.6.x并替换在uClinux-dist包中的linux-2.6.x,完成前的准备工作。

3.3.2 uClinux-dist源码的修改

按照如下步骤添加的相关文件:

# cp uClinux-dist/vendors/Samsung/4510b –r uClinux-dist/vendors/Samsung/44b0,将源代码包中已经有的Samsung的4510b的文件复制一份并改名为44b0 ,这一过程也可以直接用鼠标完成;

# cp linux-2.6.x/arch/armnommu/configs/s3c44b0x_defconfig

vendors/Samsung/44b0/config.linux-2.6.x,该步骤是将s3c44b0x_defconfig文件复制到44b0目录下,该步骤同样可以复制、粘贴完成;

虽然已经给linux-2.6.9内核打了补丁文件,但是我们依然需要对源代码进行修改才能顺理的编译通过,文件的修改如下:

(1) 修改linux-2.6.x/arch/armnommu/arch/kernel/vmlinux.lds.S,添加以下内容:

(.got)?Global offset table */
romfs_start = .;
romfs.o
romfs_end = .;

这样修改的目的是把romfs文件系统连接到内核映象中。

(2) 修改linux-2.6.x/arch/armnommu/kernel/setup.c, 添加变量romfs_start,romfs_end及修改

其设置如下:
default_command_line
extern int _stext, _text, _etext, _edata, _end;
extern int romfs_start,romfs_end;
char *from = default_command_line;
sprintf(default_command_line, root=/dev/ram0 initrd=0x%08lx,%ldk keepinitrd, (unsigned
long)romfs_start,((unsigned long)romfs_end - (unsigned long)romfs_start)>>10);

(3) 修改vendors/Micetek/44b0/rc文件中 /bin/expand /etc/ramfs.img /dev/ram1;

(4) 添加串口驱动程序,添加文件linux-2.6.x/drivers/serial/serial_s3c44b0.c和linux-2.6.x /include/asm-armnommu/arch-s3c44b0/uart.h,因为在linux-2.6.9内核中对的支持并不是很好,系统只是提供了一个简易的串口驱动,所以需要添加串口驱动。

3.3.3 内核的配置与编译

在编译内核之前需要进行配置,可以通过三种方式对内核进行配置:在uClinux-dist目录下运行make config/make menuconfig/make xconfig,其中make config是在字符界面下,make menuconfig是在字符界面下的菜单界面,make xconfig为图形界面,三种配置方式是一致的,xconfig界面比较友好,容易掌握,但它却没有menuconfig菜单稳定,而且在有些机器上运行不起来,本文是使用make menuconfig完成的。运行make menuconfig时, 程序会依次出现开发平台、内核、文件系统、应用程序的配置界面, 可以根据自己的需要进行配置。配置时大部分选项可以使用其缺省值,只有小部分需要用户根据需求进行选择,进行内核配置时,有3种选择,它们分别代表的含义如下:
“Y” - 将该功能编译进内核;
“N” -不将该功能编译进内核;
“M” -将该功能编译成可以在需要时动态插入到内核中的模块;

将与核心其它部分关系较远且不经常使用的部分功能代码编译成为可加载模块,有利于减小内核的长度,减小内核消耗的内存,简化该功能相应的环境改变时对内核的影响,许多功能都可以这样处理,例如网卡的支持、对FAT等文件系统的支持等。

在配置好内核后依次执行以下命令:
make dep; make clean; make lib_ only; make user_ only; make romfs; make image; make编译完成之后,会在uClinux-dist/linux-2.6.x/下会生linux.bin,在uClinux-dist/images /下会生成linux.data、linux.text、image.bin等目标文件。在编译中可能会产生错误,需要根据错误信息进行调试修改。



评论


相关推荐

技术专区

关闭