始创于2000年 股票代码:831685
咨询热线:0371-60135900 注册有礼 登录
  • 挂牌上市企业
  • 60秒人工响应
  • 99.99%连通率
  • 7*24h人工
  • 故障100倍补偿
您的位置: 网站首页 > 帮助中心>文章内容

Linux 2.6 内核的嵌入式系统应用(2)

发布时间:  2012/9/8 16:24:47

二、应用研究

 

在S3C2410开发板上移植嵌入式Linux 2.6.11.7内核系统(QQ:小默862693539),应用于构建H.264多媒体系统(QQ:小默862693539)。

 

1、建立交叉编译环境

 

在RedHat9的主机上进行内核移植开发,首先需要建立交叉编译环境。由于2.6内核中采用了一些新的特性和指令,需要采用较新的工具集,采用binutils-2.15、gcc-3.4.2、glibc-2.2.5、linux-2.6.8、glibc-linuxthreads-2.2.5来建立交叉编译工具链,建立之后将工具链路径加入系统(QQ:小默862693539)路径$PATH中。

 

2、内核修改

 

Linux 2.6.11.7内核加入了对S3C2410芯片的支持,不再需要任何补丁文件。修改内核源码中Makefile的交叉编译选项ARCH=arm,CROSS_COMPILE=arm-linux-.针对硬件配置,需要在arch/arm/mach-s3c2410/devs.c或者smdk2410.c中添加FLASH的分区信息s3c_nand_info,如表1.

 

表1 NAND FLASH分区表

 

分区名 起始地址 大 小

 

Vivi 0x00000000 0x00020000

 

Param 0x00020000 0x00010000

 

Kernel 0x00030000 0x001c0000

 

Root 0x00200000 0x00200000

 

Usr 0x00400000 0x03c00000

 

然后在s3c_device_nand中增加。dev={.platform_data= &s3c_nand_info},在arch/arm/mach-s3c2410/mach-smdk2410.c中的__initdata部分增加&s3c_device_nand,使内核在启动时初始化NAND FLASH信息。

 

3、内核编译加载

 

对内核进行适当的配置是一个量体裁衣的过程。由于2.6内核会根据本地系统(QQ:小默862693539)配置进行初始设置,可以导入内核源码默认s3c2410的配置文件,方便加载内核基本配置,然后再选择所需选项。对MTD配置选择支持MTD设备驱动以及NAND FLASH驱动;选择支持要用到的各类文件系统(QQ:小默862693539)(DEVFS、TMPFS、CRAMFS、YAFFS、EXT2、NFS)以及网络设备和协议,本系统(QQ:小默862693539)加载了网络芯片CS8900以及USB支持;在H.264多媒体系统(QQ:小默862693539)中还需要加载Frame buffer以支持LCD显示功能。使用交叉编译工具编译内核源码后, 会在arch/arm/boot/下生成名为zImage的内核映像,在Boot loader的命令提示模式下使用下载命令完成内核加载到开发板的存储设备FLASH中。编译过程(相对以前版本的编译过程,2.6内核编译有所简化):

 

make mrproper

 

make menuconfig(字符界面,或者用make xconfig图形界面,但需要Qt库的支持,而make gconfig则需要GTK库的支持)

 

make

 

make bzImage

 

4、文件系统(QQ:小默862693539)

 

Linux采用文件系统(QQ:小默862693539)组织系统(QQ:小默862693539)中的文件和设备,为设备和用户程序提供统一接口。Linux 支持多种文件系统(QQ:小默862693539),本系统(QQ:小默862693539)使用CRAMFS格式的只读根文件系统(QQ:小默862693539),而将FLASH中的USER区使用支持可读写的YA FFS文件系统(QQ:小默862693539)格式,方便添加自己的应用程序。

 

在根文件系统(QQ:小默862693539)中,为保护系统(QQ:小默862693539)的基本设置不被更改,采用CRAMFS格式。采用DEVFS来实现基本设备的建立挂载,同时使用BusyBox也是一个缩小根文件系统(QQ:小默862693539)的办法,提供了系统(QQ:小默862693539)的基本指令;还需要建立一些必备的目录,添加所需配置文件,如fstab、inittab等;还有一个重要的工作就是添加系统(QQ:小默862693539)应用必备的动态函数库。使用生成工具mkcramfs 将整个根文件目录里的内容制作成映像文件。

 

mkcramfs rootfs rootfs.ramfs

 

YAFFS文件系统(QQ:小默862693539)格式的支持需要将驱动加入到内核代码树下fs/yaffs/,修改内核配置文件,就可以在内核编译中加载对该文件系统(QQ:小默862693539)的支持。使用mkyaffs工具将NAND FLASH分区格式化为YAFFS分区,将mkyaffsimage生成的应用程序镜像烧写进YAFFS分区,在启动时通过写入fstab自动加载YAFFS分区即可。

 

5、网络设备驱动

 

系统(QQ:小默862693539)中采用CS8900A的10M网络芯片,它使用S3C2410的nGCS3和IRQ_EINT9,相应修改linux/arch/arm/mach-s3c2410/irq.c,并在mach-smdk2410.c的smdk2410_iodesc[]中增加{SMDK2410_ETH_IO,S3C2410_CS2, SZ_1M, MT_DEVICE},内核源码中加入芯片的驱动程序drivers/net/arm/cs8900.h和cs8900.c,并且配置网络设备驱动的Makefile和Kconfig文件,加入CS8900A的配置选项,这样可以在内核编译时加载网络设备的驱动。

 

在Linux2.6应用的同时,也要看到其与以前版本内核比较存在的一些问题。在内核的编译时间、内核镜像大小、内核占用RAM空间大小、系统(QQ:小默862693539)启动时间相对Linux2.4而言都存在不同程度的不足,但在硬件条件日益进步的现今可以接受,而且一部分也是由于功能加强必然带来的。虽然Linux并非一个真正的实时操作系统(QQ:小默862693539),但2.6内核的改进能够满足大部分的应用需求,所以Linux2.6内核将会在嵌入式系统(QQ:小默862693539)领域大展身手。


本文出自:亿恩科技【www.enkj.com】

服务器租用/服务器托管中国五强!虚拟主机域名注册顶级提供商!15年品质保障!--亿恩科技[ENKJ.COM]

  • 您可能在找
  • 亿恩北京公司:
  • 经营性ICP/ISP证:京B2-20150015
  • 亿恩郑州公司:
  • 经营性ICP/ISP/IDC证:豫B1.B2-20060070
  • 亿恩南昌公司:
  • 经营性ICP/ISP证:赣B2-20080012
  • 服务器/云主机 24小时售后服务电话:0371-60135900
  • 虚拟主机/智能建站 24小时售后服务电话:0371-60135900
  • 专注服务器托管17年
    扫扫关注-微信公众号
    0371-60135900
    Copyright© 1999-2019 ENKJ All Rights Reserved 亿恩科技 版权所有  地址:郑州市高新区翠竹街1号总部企业基地亿恩大厦  法律顾问:河南亚太人律师事务所郝建锋、杜慧月律师   京公网安备41019702002023号
      1
     
     
     
     

    0371-60135900
    7*24小时客服服务热线