位置:51电子网 » 技术资料 » 控制技术

基于2.6.19内核的小型Linux系统制作移植

发布时间:2008/6/3 0:00:00 访问次数:301

引言

  arm9s3c2410微处理器与linux的结合越来越紧密,逐渐在嵌入式领域得到广范的应用。目前,在便携式消费类电子产品、无线设备、汽车、网络、存储产品等都可以看到s3c2410与linux相结合的身影。

  s3c2410微处理器是一款由samsung公司为手持终端设计的低价格、低功耗、高性能,基于arm920t核的微处理器。它带有内存管理单元(mmu),采用0.18mm工艺和amba新型总线结构,主频可达203mhz。同时,它支持thumb 16位压缩指令集,从而能以较小的存储空间获得32位的系统性能。

  在众多嵌入式操作系统中,linux目前发展最快、应用最为广泛[1]。性能优良、源码开放的linux具有体积小、内核可裁减、网络功能完善、可移植性强等诸多优点,非常适合作为嵌入式操作系统。一个最基本的linux操作系统应该包括:引导程序、内核与根文件系统三部分。

  与linux2.4内核相比,2.6内核吸收了最新的技术,在性能、可测量性、器件支持和可用性方面有了大幅度提高;支持更多的体系结构、处理器、总线、接口和设备;标准化了内部接口;简化了扩展或添加新设备的步骤等。

  本文着重介绍如何制作一个基于linux-2.6.19内核的小型linux操作系统,并将它移植到s3c2410开放板上。内容包括交叉编译环境的建立,引导程序、2.6.19内核、根文件系统的修改、配置、编译、移植等。

  系统的制作移植

  建立交叉编译环境

  要移植、开发小型linux系统,首先要在安装了redhat9或更高版本linux操作系统的主机上配置交叉开发环境。交叉开发是指在开发主机上安装开发工具,编辑、编译目标板的引导程序、内核和文件系统,使其能在目标板上运行。

  针对本次开发,需要安装arm-linux-gcc-3.4.1以及armv4l-tools工具链。在安装完毕后,切记要将两者的路径分别添加到系统路径$path中。

  引导程序

  对于计算机系统来说,从开机上电到操作系统启动需要一个引导程序。嵌入式linux系统同样离不开引导程序,这个引导程序叫做bootloader[1]。通过这段小程序,可以初始化硬件设备、建立内存空间的映射表,从而建立适当的系统硬件环境,为最终调用操作系统内核做好准备。

  vivi[4]是韩国mizi公司为其arm9系列产品而研发的bootloader,小而灵巧,这里选用它作为小型linux系统的bootloader。

  首先要修改vivi源代码中的flash分区信息,新的分区信息如表1所示。

  根据表1,在vivi源码arch/s3c2410/smdk.c文件中作出相应的修改。

  然后在配置菜单中导入smdk2410的默认配置,编译成功将在vivi源代码目录下生成所需的bootloader文件,文件名为vivi。

  接着,便可把vivi下载到目标板flash的相应位置。

  内核

  ·修改内核

  首先,修改内核源码linux-2.6.19下的makefile文件,指定目标代码类型与编译器:subarch :=arm;cross_compile:=/usr/local/arm/3.4.1/bin/arm-linux-。

  然后,在linux-2.6.19/arch/arm/mach-s3c2410/common-smdk.c中根据表1修改内核中的flash分区信息。这里提醒读者,2.6.16(含)以前内核的源码中没有flash分区信息,所以需要增加新的分区信息;而在2.6.17(含)以后内核的源码中已含flash分区信息,需要的只是修改分区信息。

  内核flash分区信息必须与vivi的flash分区信息相一致。因为,vivi的flash分区中的地址是内核及文件系统下载到nand flash的真正地址;而内核在启动时读的却是内核flash分区设定的地址;所以,若两者不同,则很可能导致不能正常启动内核或读取文件系统。

  最后,修改linux-2.6.19/drivers/mtd/nand/s3c2410.c,禁止nand flash差错检测:chip->eccmode = nand_ecc_none;。

  ·内核的配置编译

  在配置菜单中导入内核对smdk2410的默认配置,再在此基础上选择所需的功能。如nand flash及mtd设备的支持,cramfs文件系统的支持等。

  配置完毕,在终端输入编译命令“make”进行编译。

引言

  arm9s3c2410微处理器与linux的结合越来越紧密,逐渐在嵌入式领域得到广范的应用。目前,在便携式消费类电子产品、无线设备、汽车、网络、存储产品等都可以看到s3c2410与linux相结合的身影。

  s3c2410微处理器是一款由samsung公司为手持终端设计的低价格、低功耗、高性能,基于arm920t核的微处理器。它带有内存管理单元(mmu),采用0.18mm工艺和amba新型总线结构,主频可达203mhz。同时,它支持thumb 16位压缩指令集,从而能以较小的存储空间获得32位的系统性能。

  在众多嵌入式操作系统中,linux目前发展最快、应用最为广泛[1]。性能优良、源码开放的linux具有体积小、内核可裁减、网络功能完善、可移植性强等诸多优点,非常适合作为嵌入式操作系统。一个最基本的linux操作系统应该包括:引导程序、内核与根文件系统三部分。

  与linux2.4内核相比,2.6内核吸收了最新的技术,在性能、可测量性、器件支持和可用性方面有了大幅度提高;支持更多的体系结构、处理器、总线、接口和设备;标准化了内部接口;简化了扩展或添加新设备的步骤等。

  本文着重介绍如何制作一个基于linux-2.6.19内核的小型linux操作系统,并将它移植到s3c2410开放板上。内容包括交叉编译环境的建立,引导程序、2.6.19内核、根文件系统的修改、配置、编译、移植等。

  系统的制作移植

  建立交叉编译环境

  要移植、开发小型linux系统,首先要在安装了redhat9或更高版本linux操作系统的主机上配置交叉开发环境。交叉开发是指在开发主机上安装开发工具,编辑、编译目标板的引导程序、内核和文件系统,使其能在目标板上运行。

  针对本次开发,需要安装arm-linux-gcc-3.4.1以及armv4l-tools工具链。在安装完毕后,切记要将两者的路径分别添加到系统路径$path中。

  引导程序

  对于计算机系统来说,从开机上电到操作系统启动需要一个引导程序。嵌入式linux系统同样离不开引导程序,这个引导程序叫做bootloader[1]。通过这段小程序,可以初始化硬件设备、建立内存空间的映射表,从而建立适当的系统硬件环境,为最终调用操作系统内核做好准备。

  vivi[4]是韩国mizi公司为其arm9系列产品而研发的bootloader,小而灵巧,这里选用它作为小型linux系统的bootloader。

  首先要修改vivi源代码中的flash分区信息,新的分区信息如表1所示。

  根据表1,在vivi源码arch/s3c2410/smdk.c文件中作出相应的修改。

  然后在配置菜单中导入smdk2410的默认配置,编译成功将在vivi源代码目录下生成所需的bootloader文件,文件名为vivi。

  接着,便可把vivi下载到目标板flash的相应位置。

  内核

  ·修改内核

  首先,修改内核源码linux-2.6.19下的makefile文件,指定目标代码类型与编译器:subarch :=arm;cross_compile:=/usr/local/arm/3.4.1/bin/arm-linux-。

  然后,在linux-2.6.19/arch/arm/mach-s3c2410/common-smdk.c中根据表1修改内核中的flash分区信息。这里提醒读者,2.6.16(含)以前内核的源码中没有flash分区信息,所以需要增加新的分区信息;而在2.6.17(含)以后内核的源码中已含flash分区信息,需要的只是修改分区信息。

  内核flash分区信息必须与vivi的flash分区信息相一致。因为,vivi的flash分区中的地址是内核及文件系统下载到nand flash的真正地址;而内核在启动时读的却是内核flash分区设定的地址;所以,若两者不同,则很可能导致不能正常启动内核或读取文件系统。

  最后,修改linux-2.6.19/drivers/mtd/nand/s3c2410.c,禁止nand flash差错检测:chip->eccmode = nand_ecc_none;。

  ·内核的配置编译

  在配置菜单中导入内核对smdk2410的默认配置,再在此基础上选择所需的功能。如nand flash及mtd设备的支持,cramfs文件系统的支持等。

  配置完毕,在终端输入编译命令“make”进行编译。

相关IC型号
版权所有:51dzw.COM
深圳服务热线:13692101218  13751165337
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!