0导言
为了习惯不同的运用场合,一起考虑到计算机体系的灵活性、可伸缩性以及可裁剪性,一种以运用为中心、以计算机技能为根底、软硬件可裁剪的嵌入式操作体系随之诞生。这种嵌入式体系能适用于对功用、可靠性、本钱、体积、功耗要求严厉的运用体系。而在很多嵌入式操作体系中,Linux以其体积小、可削减、运转速度快、网络功用优秀、源码揭露等长处而被广泛选用。特别是2.6内核版别的Linux更是在实时功用方面有了很大的进步,因而在工业操控场合得到了越来越多的注重和运用。
本文正是在这一布景下,为依据S3C2410的嵌入式渠道(扩大了多种外围设备,包含:LCD、A/D、网络芯片等等)构建出一个依据Linux2.6.16内核的嵌入式体系开发渠道,以满意风力发电监控体系开发的需求。
1体系构架
本体系的硬件渠道是以32位高功用嵌入式处理器S3C2410A作为体系的CPU,其作业频率最高为203 MHz,具有强壮的处理才干。别的,还扩展有多种外围设备,如:分辨率为640×480的26万色TFT液晶显示屏、串口、USB口、网口、64MB Flash、64MB SDRAM等等。能够充沛满意风力发电监控体系开发的需求。
本硬件渠道的软件构架首要分为以下几个部分:BSP层、操作体系层以及运用层,图1所示是其软件构架图。本体系的硬件渠道是由嵌入式微处理器及其外围设备所构成的。硬件笼统层(BSP)是存储在硬件渠道ROM或Flash上的担任与硬件底层沟通的硬件驱动程序,首要担任对体系进行初始化,并将搜集的硬件信息传递到接下来运转的操作体系内核中去。操作体系内核经过BSP来办理体系硬件资源,并为上层软件供给进程调度、内存办理、文件体系、设备驱动等服务。运用层首要担任与用户进行沟通。
在完结体系的构架规划今后,就能够针对硬件渠道进行详细的构建了,其作业首要包含以下几个部分:BootLoader移植、内核移植以及文件体系的树立等,其间内核移植包含网络设备、LCD和USB等驱动的移植。文中针对本体系的规划给出了相关程序的移植。
2 Boot Loader移植
Boot Loader (引导加载程序)是体系加电后运转的榜首段代码。这段小程序用于初始化硬件设备和树立内存空间的映射图,从而将体系的软硬件环境带到一个适宜的状况,以便为终究调用操作体系内核准备好正确的环境。
现在,较盛行的BootLoader首要有U-boot和Vivi等。本规划首要是以S3C2410为操控器的硬件渠道,因而能够选用带有网络功用的Vivi作为体系的Boot Loader。作为引导程序的Vivi一般分为stage1和stage2两大部分。stage1首要是依据CPU的体系结构进行设备初始化等作业,一般都用言简意赅的汇编言语来完结,而stage2则一般用C言语来完结,这样能够完结愈加杂乱的功用,且代码会具有更好的可读性和可移植性。为了使Vivi更合适本体系的硬件渠道,规划时需求对其进行部分修正。
(1)修正编译器
首要要把Vivi中Makefile的有关编译的选项指向安装好的3.4.1版别的穿插编译东西链,将编译所需的Linux文件夹“UNUX-INCLUDE-DIR=”指向穿插编译器地点的文件夹“LINUX-INCLUDE-DIR=/usr/local/arm/3.4.1/include”,并将“CROSS-COMPILE=”项修正为“CROSS-COMPILE=/usr/local/arm/3.4.1/bin/arm-linux-”。
(2)修正发动参数
接着依据硬件渠道的实际状况要修正Vivi中Flash分块状况。本体系将Flash划分红四个部分:榜首部分用来寄存体系的Vivi:第二部分用来寄存Vivi以及Linux操作体系的发动参数;第三部分用来寄存嵌入式Linux操作体系;终究一部分用来寄存文件体系。详细的地址及块巨细分配如表1所列。
修正完以上两项就能够对Vivi进行编译了,之后经过JTAG将生成的二进制代码烧写到Flash的榜首部分,即完结了Vivi的移植。
3内核移植
内核移植和BootLoader移植相同要依据规划的硬件渠道来进行。依据本嵌入式体系硬件渠道的规划,需修正内核Makefile文件、设置Flash分区、装备与编译内核等,并完结网络设备、LCD以及USB等驱动的移植,下面简略介绍一下针对本硬件渠道的相关移植作业。
(1)内核编译与移植
在穿插编译内核之前,要先对编译选项进行装备。履行“make menuconfig”指令,进人Syetem Type选项,挑选对S3C2410体系板的支撑,然后装备File System和Block device,接下来运用“make dep”指令设置依靠联系,之后便能够运用“make zImage”指令进行编译。编译内核穿插编译时刻相对较长。终究会生成一个文件zImage,这便是编译成功后的ARM Linux内核文件。将编译好的内核镜像文件写入到Flash中,即完结了内核的移植。
(2)网络设备移植
体系中选用CS8900A作为网络芯片,最高支撑10 Mb/s的传输率,它运用S3C2410的nGCS3作为片选线,IRQ_EINT9作为外部中止信号线。其驱动移植办法如下:
1)在linux/driver/net/arm目录下参加芯片的驱动程序文件cs8900.h和cs8900.c:
2)在SMDk2410_init函数中完结相应寄存器设置;在cs8900_probe()函数中对S3C2410的网络操控寄存器进行设置:参加_raw_writel(0x221ldll0,S3C2410_BWSCON);和_raw_writel(0x1f7c,S3C2410_BANKCON3);两个句子;
3)将网卡的物理地址(0x19000000)映射到vSMDK2410_ETH_IO所指向的虚拟地址上去,即在/arch/arm/mach-s3c2410/mach-smdk2410.c文件中的smdk2410_iodesc []结构数组中增加如下内容:{vSMDK2410_ETH_IO,0x19000000,SZ_1M,MTl_DEVICE};
4)装备网络设备驱动的Makefile、Kconfig文件,并仇人文件做部分修正。
(3) LCD移植
在2.6.16内核中现已包含了S3C2410的LCD驱动程序,因而,移植的首要作业是要依据驱动程序及LCD屏的实际状况进行初始化。S3C2410自带5个LCD操控器,每个操控器有不同的功用,必需对每个操控器的参数进行相应的设置才干顺畅地发动LCD,这些参数包含:液晶屏类型(TFT屏或CSTN屏)、色彩位数、笔直度、水平度、操控信号线的极性以及液晶屏的分辨率等等。
本体系选用的是SHARP 8.0英寸的TFT液晶屏。参阅该液晶屏手册,依据实际状况设置各个寄存器的参数如表2所列。
设置好液晶屏的参数后,再在渠道初始化函数smdk2410_devices[]_initdata中发动液晶屏。终究,修正drivers/video目录下的Kconfig和drivers/video目录下的Makefile文件。
4文件体系树立
每种操作体系都有合适自己的文件体系,如:Windows一般选用FAT32或NTFS文件体系格局,Linux选用EXT2或EXT3文件体系格局,而嵌入式Linux操作体系是树立在一种称为YAFFS2(YAFF文件体系的改进版)的针对嵌入式Linux的文件体系之上。因而可依据本体系的硬件渠道规划及所选用的Linux内核。构建出YAfTS2文件体系,过程如下:
(1)在内核中树立YAFFS2目录fs/yaffs2,并把下载的YAFFS2代码(能够从网上下载开源的YAFFS2的源码)复制到该目录下面;
(2)修正Kconfig和Makefile,使其能够装备YAFFS2;
(3)在YAFFS2目录中生成Makefile和Kconfig文件;
(4)依据表1在内核中修正NAND分区;
(5)装备内核时,应选中MTD支撑和YAFFS2支撑;
(6)编译内核并将其下载到开发板的Flash中;
(7)制造根文件体系下载到Flash的指定地址(地址如表1所示)。
至此,就建立好了风力发电监控体系开发所需求的软硬件渠道。图2所示是依据建立好的渠道并运用Qt/Embeded开发的风力发电监控体系的截图。
5结束语
本文依据一个特定的方针渠道,介绍了怎么构建依据Linux 2.6.16的嵌入式开发渠道,介绍了移植的首要技能和整个流程,并在Qt/Embedd下开发了风力发电监控软件。把握这些移植和开发技能,关于开发嵌入式Linux运用体系十分重要,一起关于开发其它类型的嵌入式体系也具有必定的参阅含义。