嵌入式ARM9系统

2024-08-08

嵌入式ARM9系统(通用8篇)

嵌入式ARM9系统 篇1

引言

嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。[1]嵌入式Linux系统资源有限、专用性强,在部署到嵌入式平台之前必须对其进行裁剪、定制,减小嵌入式Linux系统体积,提高运行效率。

由于Linux具有内核小、效率高、源代码开放和强大的网络支持等一系列独特优势,嵌入式Linux将在未来的嵌入式发展中占最大的优势,其巨大的市场潜力已经吸引了众多的厂商进入这一领域。目前,国外的著名厂商,例如I B M、D E L L等,几乎都在嵌入式Linux操作系统的研究、开发和推广方面投入了巨资。国内有一些公司,例如华恒、共创软件联盟、中软、红旗、万禾等,也开始积极从事嵌入式Linux操作系统的研究、开发和推广。随着微电子技术的不断创新和发展,嵌入式系统 (E m b e d d e d Systems) 作为计算机应用的一个重要领域,已深入到社会的方方面面,越来越被人们所关注。嵌入式系统出现于60年代晚期,它最初被用于控制机电电话交换机,如今已经广泛地应用于工业制造、过程控制、通讯、航空航海、军事装备等相关行业,而且深入到信息家电、娱乐、社会文化等各个领域,掀起了一场数字化的技术革命。随着多媒体技术与I n t e r n e t应用的迅速普及,消费电子 (Consumptive electron) 、计算机 (Computer) 、通讯 (Comunication) 等3C一体化趋势日趋明显,极大地推进了嵌入式技术的发展,使嵌入式技术再度成为研究与应用的热点。

1 交叉编译环境的创建

基于Linux操作系统的应用开发环境一般是由目标系统硬件 (开发板) 和宿主PC机所构成。目标硬件开发板用于运行操作系统和系统应用软件, 而目标板所用到的操作系统的内核编译、应用程序的开发和调试则需要通过宿主PC机来完成 (所以称为交叉编译) 。双方之间一般通过串口、并口或以太网接口建立连接关系。交叉编译工具是嵌入式开发的基础,完善的工具链可以保证项目开发的进度和质量。交叉编译工具可以通过两种方式获得,一种是直接从网上下载已经制作好的交叉编译工具,另一种就是自己制作交叉编译工具,制作方式是: (1) 下载源码,准备补丁; (2) 设置环境变量, 指定交叉编译器的安装目录; (3) 内核头文件的设置; (4) 二进制工具包binutils的设置; (5) 编译器gcc的设置; (6) C链接库glibc的设置;最后是完整编译器的设置。本文用的交叉编译工具为arm-linux-gcc4.0.2, 将交叉编译器解压到相应的目录下, 命令为#t a r-z x c f armlinuxgcc4.0.2.tar.bz2, 要注意解压后的路径。

本文所使用的嵌入式系统目标平台是SamSung公司基于ARM920T内核的嵌入式处理S3C2410, ARM2410开发板支持W I N C E、L i n u x、U C O S以及N U C L E U S嵌入操作系统。面向手持式设备以及高性价比,低功耗的应用,内部集成LCD, USB等控制器。Linux内核采用2.6版本的内核,它吸收了一些新技术,在性能,可靠性和可扩展性方面有较大提高。本设计基于fedora-12进行开发。

2 嵌入式linux系统组成

嵌入式Linux系统从软件方面来说主要包括以下几个部分,Bootloader (引导程序) ,内核启动参数,内核 (kernel) 和根文件系统四个部分,在Flash中存储的示意图如图1所示。[2]

2.1 bootloader的移植

Bootloader指系统启动后,在操作系统内核之前运行的一小段程序。Bootloader主要完成硬件检测和系统引导, 操作系统的主要功能之一是管理系统硬件设备, 屏蔽硬件细节, 向其上的应用提供标准接口, 易于应用程序的编写和移植。我们可以初始化硬件设备,建立内存空间的映射图,从而为最终调用操作系统内核准备好正确的环境。Bootloader是依赖于硬件而实现的,但是不管事什么样的开发板,都是遵循以下流程:先关闭中断,设置cpu的速度和时钟频率,初始化RAM,将代码从F L A S H中复制到R A M中,设置堆栈,这样就搭建了一个C运行环境,之后跳转到C入口点,就是初始化驱动设备,设置linux内核参数,启动linux。[3]下载u-boot压缩包,经过解压修改和设置一些参数后,通过J T A G接口烧写到开发板的Flash中。

2.2 linux内核的移植

linux内核源码树[4]

/include子目录包含了建立内核代码时所需的大部分包含文件, 这个模块利用其他模块重建内核。

/init子目录包含了内核的初始化代码, 这是内核工作开始的起点。

/arch子目录包含了所有硬件结构特定的内核代码, 如i386和alpha。

/drivers子目录包含了内核中所有的设备驱动程序, 如块设备和SCSI设备。

/fs子目录包含了所有的文件系统的代码, 如ext2和vfat等。

/net子目录包含了内核的联网代码。

/m m子目录包含了所有内存管理代码。

/ipc子目录包含了进程间通信代码。

/kernel子目录包含了主内核代码

2.2.1 内核源码下载

标准的linux内核源码可以从http://www.kernel.org/pub/linux/kernel/v2.6/下载,也可以从镜像ftp站点获得,笔者用的是linux-2.6.26.tar.gz,将其解压到相应的目录下,命令为#tar–zxvf linux-2.6.26.tar.gz。armlinux是针对标准linux内核为arm做的补丁,也可以直接下载针对linux内核打好arm补丁的源码。

2.2.2 内核配置

内核配置通常是对内核的各个功能进行取舍配置,将配置的方案保存到configure文件中。在交叉编译内核之前,对编译选项的配置是很重要的,本文中选择对S3C2410开发板的支持,选择File System支持,对于File System应确保如下支持:

(1) proc file system support

(2) ROM file system support

(3) Second extended fs support

然后配置块设备,使其支持R A M disk。在编译内核的时候,就会根据此配置进行取舍编译。在编译目录下通过make menuconfig命令进入内核配置界面。

修改内核目录树根下的Makefile时,指定目标平台为arm, 指定交叉编译器,可向Makefile中添加如下内容:

2.2.3 内核编译

编译内核使其生成内核映像,编译内核有非压缩和压缩两种方式。[5]压缩方式,内核从R O M中启动,将被压缩的内核压缩到R A M,然后再执行内核,有点是可以将内核事先烧写至flash中,而无需手工下载,这种方式使用m a k e zimage来编译内核。

#make dep//设置依赖关系

#make zIamge//编译内核

交叉编译内核时间相对较长,编译完成后会形成一个文件zImage, 这就是编译成功后的ARMLinux内核。

2.3 根文件系统的制作

根文件系统一直是linux系统不可或缺的组件,在嵌入式linux中,内核在启动期间进行的最后操作之一就是安装根文件系统。Busybox是构建嵌入式根文件的软件,用它制作根文件系统简单,设置灵活。根文件系统一般都包括:1)基本的文件系统结构,包含一些必需的目录,比如:/dev,/proc, /bin, /etc, /lib, /usr, /tmp;2)基本运行程序所需要的库函数,如:lib/uc-libc;3)基本的系统配置文件,如:rc, inittab等脚本文件;4)必要的设备文件,如:/dev/tty, /dev/fd0;5) 基本的应用程序,如:sh, ls, cp, mv等;根文件系统制作就是生成包含上述各种文件系统的过程。[6]

2.3.1 安装busybox

从网站http://www.busybox.net/下载busybox-1.17.4.tar.bz2,使用tarzxvf busybox-1.17.4.tar.bz2解压,进入busybox-1.17.4.o目录后执行make munuconfig命令可进入配置界面。修改busybox根目录下的makefile使用交叉编译器。将A R C H?=$ (S U B A R C H) 修改为A R C H?=a r m,将C R O S S_C O M I L E?修改为CROSS_COMILE?=arm_linux-,修改后执行make命令编译busybox。然后安装busybox。

2.3.2 创建根文件

开发板的根文件系统在主机上的目录为/home/work/lsq, 在此目录下使用mkdir命令创建dev, etc, home, lib, mnt, proc, root, sys, tmp目录。在/etc目录下存放配置文件;创建etc/inittab文件,init进程根据/etc/inittab文件来创建其他子进程;创建etc/fstab文件,fstab文件描述系统中各种文件系统的信息,应用程序读取这个文件,然后根据其内容进行自动挂载的工作。

2.3.3 制作yaffs2文件系统映像文件

制作文件系统映像文件,就是将一个目录下的所有内容按照一定的格式存放到一个文件中,这个文件可以直接烧写到存储设备中。

在yaffs源码中有个utils目录,里面有mkyaffsimage和mkyaffs2image的源代码,前者制作yaffs映像文件,后者制作yaffs2映像文件,将下载的yaffs2解压,在目录/Dovelopment下有两个文件夹;进入yaffs2/utils目录,加入两个文件:nand-ecc.c和yaffs_packed-tagsl.c;修改makefile文件

MKYAFFSSOURCES=mkyaffsimage.c yaffs_packedtagsl.c nand-ecc.c然后执行make生成mkyaffs2image工具,复制工具到/usr/local/bin目录下, 执行#mkyaffsimage2 lsq/pyaffs2.img命令可生成文件系统映像文件,执行#gzip–pyaffs2img最终生成嵌入式linux根文件系统的映像文件为pyaffs2-.img.gz。根文件系统制作完成。

3 下载并执行映像文件

下载linux内核映像和根文件系统映像文件到目标板

#tftp 30008000 zImage/*下载linux内核映像到目标板内存*/

#fftp 300800000 pyaffs2.img.gz/*下载根文件系统映像到目标板内存*/

#g o 3 0 0 0 8 0 0 0/*启动目标板linux*/。

重启开发板,能看到嵌入式linux系统在超级终端完整的打印信息,说明嵌入式linux系统成功的移植到S3C2410上去了。

4 总结

文章研究了基于a r m-l i n u x和S3C2410的嵌入式系统设计,详细地介绍了移植的基本方法,重点说明了移植过程的关键步骤。这对于嵌入式linux系统的应用以后的发展具有重要意义。

参考文献

[1]曹玥.Linux内核分析及在S3C2440上移植过程[J].科技广场.2010, (1) :173-175

[2]邓俊华, 杜玉晓.基于S3C2410处理器的Linux移植[J].技术交流.2009 25 (8) :53-55

[3]王志诚.基于ARM9的嵌入式Linux操作系统的移植[J].陶瓷.2010 (3) :50-52

[4]黄义文.Linux操作系统内核裁剪的分析[J].中国民航飞行学院学报.2010 (3) :56-59

[5]赵炯.Linux内核完全剖析[M].北京:机械工业出版社.2006

[6]孙纪坤, 张小全.嵌入式Linux系统开发技术详解[M].北京:人民邮电出版社.2006

嵌入式ARM9系统 篇2

摘要:针对近景大视场图像采集,提出了一种基于ARM9芯片S3C2410的多路视频采集系统。使用四个CMOS摄像头(OV7660)进行图像的采集,摄像头输出8位RawRGB格式的图像数据流。系统利用一片FPGA接受摄像头的输出时序,并参考这个时序控制SRAM地址将4个CMOS摄像头的一帧图象数据缓存于4个8位的SRAM中,然后通知ARM读取。ARM以32位总线同时读取图象数据后,将RawRGB格式的图像数据转换成常用的RGB格式,然后显示在LCD 上。

关键词:精简指令计算机内核;图像采集;CMOS摄像头;现场可编程门阵列;LINUX;QT

中图分类号:TN911.73文献标识码:B

Design of a Multi-channel Video Acquisition System Based on ARM9

CAO Hong, LU Rong-sheng, MA Cheng

(Hefei University of Technology, Anhui 23001, China)

Abstract: To achieve the requirement of image acquisition of close and large range visual field, it designs a multi-channel video acquisition system based on ARM9 chip S3C2410. It adopts four CMOS cameras (OV7660) to capture image, and the camera exports image data stream which is 8-bit RawRGB format. The system uses a FPGA chip to design timing controller, which receives the export timing of cameras. It refers this timing to control SRAM addresses, which saves one frame image data from four cameras to four 8-bit SRAM chips. Then ARM reads the image data from four SRAM chips at the same time with 32-bit data bus, and the format of image data is changed from RawRGB to RGB. At last, ARM processes the image data and displays them on the LCD.

Keywords: ARM;image collection;CMOS Camera;FPGA;LINUX;QT

引 言

视频监控系统是安全防范系统的重要组成部分,也是一种防范能力较强的综合系统。视频监控系统以其直观、方便、信息内容丰富广泛应用于许多领域。而在近景大视场图像采集的应用中,采用多路视频同时进行采集,可以获得更多的近景图像信息。传统的多路图像采集的方法是多个通道输入,然后通过通道的切换来完成对多个静态场景图像信息的采集。这对于一般的应用已经足够,但是对于多路动态场景的实时监控,就有一些力不从心。举例来说,在车载环视显示系统的应用中就要求多路动态场景的实时同步采集,来最终完成一个大视场的拼接。并且对所采集到的图像,在时间上要求同步。使用视频通道切换的方法,在切换到一个通道时,会造成另外几个通道图像信息的丢失。这样,因为几路图像数据在时间上不同步,合成的时候很难获得很好的效果。所以本文在这里提出一种嵌入式的多路视频采集的方法,以成本较低CMOS摄像头为图像采集设备。以ARM9芯片S3C2410为主控制器,并配以LINUX系统。利用一片FPGA和4片8位的SRAM完成四路CMOS摄像头的同步采集和缓存。并以FPGA配合ARM外部总线时序,完成图像数据的读取。最后由ARM对所采集到的数据进行处理和显示。

1 系统组成与工作原理

整个系统可以分为三个模块:图像采集模块,图像存储模块,ARM。系统结构框图如图1 所示。图像采集模块主要由4片CMOS摄像头组成,摄像头的初始化由ARM通过SCCB总线完成[1]。图像存储模块由4片SRAM和1片FPGA组成。由FPGA控制SRMA的地址,将CMOS输出的图像数据流存储进SRAM中。ARM部分加载LINUX系统,读取到图像数据后,对图像进行转换后,最终显示在液晶屏上。

本系统的设计难点在于如何保证图像数据读取单元和CMOS 摄像头的严格同步以及高速数据流(24 MHz) 的实时处理。系统采用一片FPGA设计时序控制器, 协同CMOS 传感器、ARM以及帧存储器

(SRAM)之间的工作流程,很好地解决了系统同步和

高速数据流实时处理的问题。

整个系统上电后,由ARM通过GPIO口模拟SCCB总线设置4个CMOS摄像头的工作状态,使其输出8位的RawRGB图象格式数据。初始化完成后,摄像头开始工作,由FPGA根据同步信号控制帧缓存(SRAM)地址,把4个摄像头的数据信号分别写入4个不同的SRAM中。到4个摄像头都写完一帧后,FPGA给中断通知ARM读取数据。ARM收到中断后,通过对两个DATABUF的控制,切换SRAM的数据总线到ARM这边。再通过地址同步信号和读开始完成信号,与FPGA配合,由FPGA控制SRAM地址,通过32位总线同时读取4片SRAM中的数据。数据读完后,ARM再将总线切换回来,FPGA继续根据同步信号将图像数据写入SRAM中。而ARM则完成采集到数据的处理和显示。

2 硬件电路设计

2.1 图像传感器

本系统选用OmniVision 公司的OV7660彩色CMOS 摄像头作为图像输入单元,该摄像头集光学镜头与CMOS 图像传感器于一体,简化了系统的设计,它能够通过SCCB 接口控制其工作状态、工作方式及图像输出格式等;芯片运用专有的传感器技术,能够消除普通的光电干扰,输出清晰、稳定的彩色图像[1]。

单个CMOS 摄像头同FPGA和ARM 的接口电路如图2 所示,摄像头输出场同步信号VSYNC、行同步信号HREF、像素时钟PCL K 及RawRGB图像数据,FPGA 由行、场同步信号生成系统的时序,实现系统与CMOS 摄像头的同步,并将图像数据写入帧存储器中。同时,在系统上电时,由ARM控制GPIO口模拟SCCB总线,根据需要设置CMOS摄像头的工作参数。

2.2 ARM控制器

ARM选用Samsung公司的S3C2410,它采用了ARM920T内核,0.8μm工艺的CMOS标准宏单元和存储器单元。S3C2410提供了丰富的内部设备:分开的16KB的指令Cache和16KB的数据Cache,MMU虚拟存储器管理,LCD控制器(支持STN&TFT),支持NAND FLASH系统引导,系统管理器(片选逻辑和SDRAM控制器)等等[2]。

本系统为S3C2410外加了64M的SDRAM,64M的NAND FLASH,网络接口等等,进一步为LINUX的系统移植创造条件。外接的帧存储器挂接在S3C2410的片选3上,通过对S3C2410相应存储控制器的正确配置,可以方便地读取帧存储器中的数据。

2.3 帧存储器模块

帧存储器模块的SRAM选用的是ISSI公司的CMOS静态随机存储器IS63LV1024,8位数据总线,大小为128K字节(大于RawRGB一帧数据的大小),一共4片。其外部电路主要分为两部分:一部分是写入的部分,数据端分别接4个CMOS摄像头。另一部分是读出的部分,4片8位的SRAM组成32位总线,外接到S3C2410的片选3上。读写的地址控制全部由FPGA负责。

IS63LV1024只有一个外部总线,为了防止读写两部分的总线冲突,在两部分的总线之间加上三态缓冲,由ARM控制总线的切换。

3 设计仿真

本系统中FPGA起到桥接的作用,主要的功能是完成读写帧存储器的地址控制。在写的过程中由FPGA根据CMOS摄像头提供的同步信号将4个摄像头所采集到的数据分别写入4片SRAM中。FPGA采用行、列两个计数器为帧存储器提供地址信号。OV7660的行同步信号HREF 和像素时钟PCL K分别作为行、列计数脉冲,场同步信号VSYNC和HREF 则作为行、列计数器的清零信号端。在VSYNC变为低电平时,行计数器开始计数,每一个HREF 脉冲行计数器加1 ;在HREF 变为高电平时,列计数器开始计数,每一个PCL K脉冲列计数器加1。行、列计数器的输出分别作为帧存储器的高位和低位地址信号,在三个同步信号的控制下,依次将像素数据存入帧存储器,这样就保证了帧存储器中每一个单元与图像的一一对应关系,也就保证了系统与CMOS 摄像头的严格同步[3]。

在读的部分,FPGA根据地址同步信号(ARM的片选信号)控制地址,配合好ARM读帧存储器的时序,帮助ARM顺利的读取4个摄像头所采集到的4帧的图像数据。整个过程的仿真图形如图3所示。

4系统软件设计

4.1嵌入式系统的搭建

为了加快开发速度,在S3C2410上移植了LINUX系统,版本为2.4.18。开发环境为Red Hat 9.0,bootloader使用的Uboot1.12,交叉编译工具为arm-linux-gcc2.95.3。整个系统的移植包括了bootloader的移植,LINUX内核的裁减,编译和移植,文件系统的制作等等[4]。在这里不一一详细介绍。

4.2 CMOS摄像头的初始化

现在的CMOS 图像传感器芯片大都采用SCCB 作为控制总线,通过它用户可以很方便地对芯片进行编程操作以控制采集图像的格式和质量。然而在构架系统时,大多的控制器并没有SCCB 接口,因此需要用普通的I/ O 接口来模拟SCCB[5]。配置时,主要是写OV7660的内部寄存器,使芯片输出格式正确的图像数据。

4.3 图像的采集

由于使用使用了LINUX系统,整个帧存储器部分可以作为一个模块使用专有驱动程序。整个驱动程序主要分为两个部分。首先是初始化部分,主要完成的是:帧存储器片选控制器的配置,外部帧存储器的挂接,模拟SCCB总线初始化CMOS摄像头。其次是中断部分,得到FPGA给中断后,切换总线,给FPGA开始读的信号,然后使阻塞的读过程恢复,从而正确的读去数据到内存中。具体过程如图4所示。

4.4 图像的处理及显示

本系统所设置CMOS摄像头所输出的图像是RawRGB格式的图像,这样采集的图像信息在每个像素的位置上只有一种颜色分量可以获得,要复原另外两种缺少的颜色分量,就必须通过相邻的像素进行估算,这个过程就叫CFA插值。它所输出的图像格式也叫Bayer格式,即奇数扫描行分别采集和输出R、G、R、G……,偶数行分别采集和输出G、B、G、B……,其一般格式如图5所示。

在本系统的设计中,是要将采集到的图像传输到显示器上进行显示,因此需要将采集到的图像信息转化为便于显示的RGB格式。在格式转化方式的选择上,使用双线性差值法将CMOS图像传感器输出的Bayer格式的图像信息转化为RGB格式。其基本原理是将每个像素位置上缺少的另外两种彩色分量通过以它本身为中心的邻域内具有相同分量的像素平均值获得[6]。

Qt是一个跨平台的C++图形用户界面库,由挪威TrollTech公司出品,目前包括Qt,基于Framebuffer的Qt Embedded。在本系统中界面以及图像的显示部分选择的就是QTE。它有着很好的移植性,并且对于图像的显示和保存有着很好的接口,在这里不再详细的说明。

5 结束语

本系统使用一片FPGA将4个CMOS摄像头的数据缓存于4个片外的帧存储器中,再以中断驱动ARM同时读取,充分利用了ARM体系结构的32外围总线。同时通过使CMOS摄像头输出8位的RawRGB格式,减小了采集的图象大小,缓解了总线传输的压力。为近景大视场的图像采集提供了一种新的方法。

参考文献

[1] OV7660 Color CMOS VGA (VarioPixelTM) CAMERA-CHIPTM Datasheet[S]. [ EB/ OL ] . www.ovt.com ,2004-05.

[2]S3C2410A Datasheet[S] [ EB/ OL ] . www.samsungsemi.

com ,2003-03.

[3]惠颖,罗海波,肖传民等. 基于ARM 的实时图像采集压缩系统设计与实现[J]. 电子器件,2007,30(4):1341-1344.

[4]刘勇,聂强,聂大鹏等. 基于S3C2410的LINUX全线移植文档[Z].www.google.com

[5]马超,刘政林,邹雪城.SCCB 在ARM9 嵌入式平台上的实现[J]. 计算机与数字工程,2006,34(7):134-137.

[6]Bahadir K. Gunturk,John Glotzbach,Yucel Altunbasak et. Demosaicking: color filter array interpolation[J]. Signal Processing Magazine, IEEE, 2005,22:44-54

嵌入式ARM9系统 篇3

关键词:S3C2440,嵌入式Linux,视频采集,实验结果

引言

随着嵌入式技术和网络技术的迅猛发展, 利用嵌入式系统实现远程视频会议、远程视频监控和可视视频电话等应用已成为可能[1]。为了实现这些应用, 视频数据的采集是其中的一个重要环节。针对这一点, 本文基于S3C2440的ARM9芯片和嵌入式linux操作系统, 利用V4L2 (Video for Linux Two) 内核应用编程接口函数, 实现了USB摄像头的视频数据采集。

1 系统组成

1.1 硬件结构

硬件部分采用ARM9学习板TX2440进行开发设计。TX2440学习板使用Samsung公司生产的基于ARM920T内核的S3C2440微处理器, 其片内资源丰富, 主频可达400MHz[2]。TX2440学习板还配有64MB的SDRAM和256MB的NAND Flash作为存储设备, 扩展了USB接口、LCD触摸屏接口、SD卡接口、以太网口、RS232串行口、JTAG接口等, 足够开发设计所使用。系统中的视频采集设备采用中芯微公司生产的ZC301P-DSP芯片USB摄像头, Linux2.6.31版本内核对此型号摄像头提供了完美的驱动支持。图1为系统的硬件结构图。

1.2 软件系统组成

整个软件系统都是基于嵌入式Linux2.6.31版本内核上, 使用V4L2 (Video for Linux Two API) [3]规范编写视频采集程序, 软件系统设计主要分为以下几个部分:

1.2.1系统引导代码U-boot的移植与编译, Linux2.6.31版本内核的移植与编译, 文件系统的制作。其中移植内核的工作主要是修改相应驱动源码并配置内核支持相应设备。

1.2.2基于V4L2视频采集模块的设计。

1.2.3测试模块的设计。

3 USB摄像头视频采集

Linux2.6.28以上的内核版本对ZC301P芯片USB摄像头提供了很完备的驱动支持, 驱动源码位于drivers/media/video/gscpa目录下的zc3xx.c文件。使内核支持USB摄像头、V4L2等设备已在内核配置中完成。

V4L2是Linux操作系统中关于视频设备的内核驱动, 给视频设备提供统一的应用程序编程接口。其最大的优势是可以自定义设备驱动缓存数量[3], 以前Linux操作系统下的嵌入式视频采集大多基于V4L, 而V4L2较V4L有较大的改动, 多数驱动都在向V4L2迁移, 它具有更好的扩展性和灵活性, 已成为Linux操作系统2.6系列版本的标准接口。V4L2常用函数有open () , close () , ioctl () 。图2为V4L2视频采集流程图。

具体采集过程如下:

3.1 打开设备并获得文件描述符。采用阻塞方式打开, 采集端未获得视频信息, 驱动不会把缓存 (DQBUFF) 里的信息返回给应用程序。

fb=open (“/dev/video0”, O_RDWR, 0)

3.2 设备初始化。视频输入信息的获取, 使用ioctl命令VID-IOC_G_INPUT, 对应的结构体v4l2_input;视频采集设备所支持格式的获取, 使用ioctl命令VIDIOC_ENUM_FMT, 对应的结构体v4l2_fmtdesc;设备驱动功能的获取, 使用ioctl命令VIDIOC_QUERYCAP, 对应的结构体v4l2_capability;另外还可以判断视频采集设备是否支持裁剪、缩放等功能, 本设计使用的USB摄像头不带这样的功能。

3.3 设置视频数据格式。利用V4L2可以设置采集数据的长、宽, 图像格式 (JPEG、YUYV) 等。调用ioctl (fd, VIDIOC_S_FMT, &fmt) 函数生效, 如设置成功, ioctl函数返回0, 调用ioctl (fd, VIDIOC_G_FMT, &fmt) 函数获取所设置的格式。

3.4 请求V4L2驱动分配视频缓冲区并获取其物理地址。申请到的视频缓冲区位于内核空间, 利用v4l2_requestbuffers结构体设置想要使用缓冲区的数目, 也就是缓存队列里保存多少张视频图片, 这也是V4L2的一大优势, 通过反复试验, 缓冲区数目小于5能达到较好的采集效果, 本设计设置的视频缓冲区个数为4个, 并调用ioctl (fd, VID-IOC_REQBUFS, &req) 函数使设置生效。再调用calloc函数将申请的内存空间转换为物理空间, 并返回一个指向起始地址的指针。

3.5 查询视频缓冲区的相关信息, 如视频缓冲区使用状态、视频缓冲区在内核空间中的偏移地址、缓冲区长度等, 调用ioctl (fd, VID-IOC_QUERYBUF, &buf) 函数来实现。

由于申请到的视频缓冲区位于内核空间, 应用程序是无法访问的。要想获得视频缓冲区的数据, 可以通过read/write方式、用户指针方式、内存映射这三种方式来获取。本设计使用内存映射方式, 这样可以避免频繁的I/O操作, 从而提高采集效率。

mmap (NULL, buf.length, PROT_READ|PROT_WRITE, MAP_SHARED, fd, buf.m.offset)

3.6 投放所有申请到的视频缓冲区到输入队列中, 调用ioctl (fd, VIDIOC_QBUF, &buf) 函数来实现。若执行成功, 系统就会将申请到的视频缓冲区投入视频输入队列, 在启动视频设备拍摄图像后, 相应的视频数据被保存到视频输入队列相应的视频缓冲区中。

3.7 启动视频采集。

ioctl (fd, VIDIOC_STREAMON, &type)

3.8 获取视频数据。从视频缓冲区的输出队列中取得一个已经保存有一帧视频数据的视频缓冲区, 以便应用程序处理, 调用函数ioctl (fd, VIDIOC_DQBUF, &buf) 来实现。如果需要实现视频数据的循环采集, 还需将缓冲重新放入队列尾。

3.9 关闭视频设备

在Linux2.6.31版本内核目录includelinux下的videodev2.h头文件中定义了相应的ioctl命令。表1中列出了比较常用的控制命令及结构体。

4 系统测试

4.1 LCD实时显示视频数据

视频采集完毕后, 需要验证采集效果, 本设计使用LCD的实时显示和SD卡本地存储来验证。利用LCD实时显示视频数据, 就需要在Linux下对LCD进行操作, 对LCD的操作可以通过终端设备层的封装来输出内容或通过frame buffer[1]直接在显存上“绘制”图像。本设计使用frame buffer直接在显存上“绘制”图像, 那么需要的视频图像必须是16位深度的RGB位流。而zc301p芯片的USB摄像头采集到的图像数据是用JPEG格式进行编码的, 应用程序需要调用libjpeg库函数对每一帧图像进行JPEG解码, 以便获得24位深度的RGB位流。JPEG解压缩后, 再把24位深度的RGB位流转换成16位深度的RGB位流, 就可利用frame buffer在LCD上显示数据了。

在程序设计时分开了JPEG图像数据处理部分与LCD显示部分, 把处理JPEG数据部分作为了一个新的线程, 得到比较流畅的显示效果, 图3为LCD显示效果。

4.2 SD卡的本地存储

为了在PC端查看采集的视频数据, 本系统还进行了视频图像的“.jpg”格式存储, 存储设备是2GB的SD卡。对SD卡驱动的移植和它的自动挂载分别在内核移植和文件系制作过程中已经完成, 以便插上SD卡后系统会马上识别并将它自动挂载。在应用程序中, 使用Linux操作系统下的文件操作把图像发送到SD卡的挂载目录, SD卡目录下存储的jpg图像如图4, 从PC端提取SD卡中的jpg图像效果如图5。对于SD卡中存储的视频数据, 还可以调用Mplayer中的Mencoder编码器[4], 将多幅jpg图像合成AVI等格式的视频流, 实现视频数据的PC端回放。

5 结论

本文介绍了一种基于ARM-LINUX平台的视频采集系统的设计方案, 采用Linux下关于视频设备的最新操作规范V4L2对视频数据进行采集, 并进行了LCD显示和SD卡存储的测试, 测试结果表明采集到的视频图像清晰, 显示流畅, 可用于安防监控交通抓拍等领域

参考文献

[1]韦东山.嵌入式LINUX应用程序完全手册[M].北京:人民邮电出版社, 2008.

[2]杨水清.ARM嵌入式Linux系统开发技术详解[M].北京:电子工业出版社, 2008.

[3]Bill Dirks.Video for Linux Two API Specification:Revision0.24[S].Michael H Schimek.

嵌入式ARM9系统 篇4

相对于传统检测方法的不足,卟啉传感器由于其优良光敏特性[3]和对于微量气体的快速、准确响应成为毒气检测的理想传感器。卟啉阵列传感器采用金属卟啉作为传感器的气体敏感膜,与不同气体接触后,金属卟啉分子间键、程度和张力不同,吸收光谱改变也不同,出现颜色变化差异,可唯一地表征气体特征信息,实现毒气的颜色“指纹“信息检测[4,5]。同时,基于传感器的嵌入式ARM-Linux技术发展迅速,具有良好的硬件平台和编程环境,可方便定制开发基于卟啉传感器的毒气检测系统。基于此[6],本文设计了以卟啉阵列为传感器、嵌入式ARM9为核心控制、PIC16F877为辅助控制的痕量毒气检测系统。

1 系统总体设计

1.1 系统组成

基于嵌入式的毒气检测系统总体结构如图1所示,主要包括前端传感检测装置、下位机MCU和上位机嵌入式ARM9。前端传感装置采用金属卟啉传感器阵列,利用其与气体接触出现颜色变化的原理产生光谱信息;下位机MCU主要实现对反应环境的监控;上位机嵌入式ARM9实现对下位机的控制、光谱信息获取、处理、存储和显示等。

1.2 工作流程

系统上电后,进入LCD触摸屏界面,通过功能菜单打开摄像头,采集反应前图像信息,开启微泵采集待测气体进入反应室,同时打开流量、湿度、温度传感器监测气体实时情况,待其与卟啉传感阵列充分反应后采集反应后图像。进入处理界面,将反应前后图像信息进行处理,得出待测气体特征信息并实时显示与存储。

2 系统硬件设计

系统硬件主要由嵌入式ARM9主控制系统和微控制系统MCU组成,如图2所示。嵌入式主控系统以S3C2440A为核心,主要包括图像采集、系统显示、存储和主从通信模块;MCU辅助控制系统以PIC16F877为核心,主要包括气体采集控制、条件监控、可控光源等模块。

2.1 主控硬件设计

(1)图像采集模块

毒气检测系统采用OV9650获取卟啉传感阵列光谱信息,OV9650产生CAMVSYNC、CAMHREF、CAMPCLK信号输入到CPU,控制完成每一帧图像数据的采集。OV9650数据接口D[9:2]与S3C2440A的CAMIF数据接口CAM-DATA[7:0]相连接,完成图像数据的采集,其接口连接如图3所示。

(2)系统显示模块

毒气检测系统采用NEC 3.5英寸的320×240的TFT型LCD,亮度好、对比度高,对于卟啉阵列颜色图像采集和显示具有优越性。Linux操作系统为不同型号的LCD提供了相应的framebuffer底层驱动,支持Qt/Embedded等嵌入式图形软件,而且完成了对触摸屏的良好支持。

(3)存储模块

以S3C2440A为中心,扩展了Nand Flash(256 M×8 bi的K9F2G08),在系统中用作存储Bootloader、内核和文件系统;SDRAM(2片32 M×16 bit的HY57V561620)缓存空间大。检测过程中图像数据量庞大,外扩SD卡作为存储介质。

(4)主从通信模块

嵌入式ARM9和PIC16F877以RS232串口实现通信。

2.2 MCU硬件设计

2.2.1 气体采样控制模块

毒气检测系统采用泵吸式采集反应气体;采用PWM脉宽调速,把恒定直流电压调制成频率一定脉宽可调的脉冲电压序列;气泵外接5 V直流电压,通过PIC16F877输出PWM高低电平控制回路通断,改变电机的平均驱动电压而实现调速。其平均电压如下:

其中,T为脉冲周期,ton为导通时间,ρ为占空比。在电源Ui与PWM周期T固定的条件下,Uout可随ρ的改变而平滑调节,从而实现对气泵两端有效电压的调节。

2.2.2 条件监控模块

卟啉传感器和毒气的反应环境状况直接影响着气体的特征图谱,需要监测毒气温度、湿度和流量动力学因素,为此设计了相应驱动及转换电路。温度传感器采用数字温度传感器DS18B20,检测到温度后直接将12 bit数字信号串行传输到PIC16F877;流量传感器采用AWM3300,工作电压10 V,输出信号1~5 V;湿度传感器采用HIH4000,输出电压信号为供电电压、湿度和温度的函数,由式(2)得到RH0,温度补偿后得到实际湿度RH;式(3)中的t为当前实际温度。采用MAX197两个模拟通道对流量、湿度转换后传输给MCU。

2.2.3 可控光源模块

单个LED作为近朗伯体发光能较低,光通量只有几十流明,而采用LED阵列可增加光源发光面积和光通量,提高卟啉传感器图像质量。可控光照模块由发光二极管阵列和柔光板组成,系统光源模型如图4(a)所示,点光源照度分布如图4(c)所示,光源S在面元ds产生照度为E,如式(4),I为光源发光强度,r为光源与受照面元距离,θ为面元和光束倾角。当光源S处于光轴方向(即θ=0)时,受照面光照度分布与空间光强分布近似,如式(5)。

同时,LED光强实际分布如式(6),I0为理想光强,m为经验参数。

由式(5)、式(6)可得光照度函数如下:

LED为非相干光源,因此,当两个LED间距为d时,对平面某一面元光照度为其叠加,同时转换为三维坐标,如式(8)。

根据叠加原理,卟啉传感器N×M(N、M为偶数)阵列在面元ds上光照度如式(9),保证了卟啉传感器受照均匀。

3 系统软件设计

3.1 嵌入式主控程序设计

嵌入式上位机采用Linux系统和Qt/Embedded开发平台,毒气检测系统软件架构主要包括应用程序、Linux操作系统和GUI开发环境Qt/Embedded、ARM9硬件平台。

3.1.1 平台构建

本文选用Fedora 12.0为嵌入式开发系统,使用arm-Linux-gcc-4.3.2编译器,采用Qt/Embedded 4.5.3为图形界面开发工具。

3.1.2 驱动程序设计

S3C244A经过SCCB总线初始化OV9650图像传感设备、分配内存、调用request_irq()登记摄像头中断、查询信号VSYNC、完成卟啉阵列图像数据采集。

Linux系统下,毒气检测系统应用程序直接对显示frambuffer进行读写和I/O操作。通过对LCD触摸屏初始化,将触摸点坐标信息传递给Qt/Embedded图形界面应用程序,执行对应功能并实时显示结果,其流程如图5所示。

SD驱动程序包括检测、初始化和读写程序,提供文件系统接口函数API,应用程序通过这些接口函数完成SD卡数据操作。

3.1.3 GUI模块设计

图形界面采用Qt designer进行系统界面设计,根据其“信号与槽”通信机制,完成界面设计和代码编写。毒气检测系统具体GUI界面如图6所示。

3.2 微控制系统程序设计

微控制系统在Microchip MPLAB IDE V8.00环境下完成编译和调试。系统上电后,初始化PWM寄存器、串口控制器、A/D转换器、湿度温度流量传感器,进入主程序等待串口中断。嵌入式主机发送命令后,串口中断子程序接收命令并存储于command之中,主程序判断接收标志receive_flag是否置位,然后解析command中命令类型,进入相应的子程序,执行电操作功能。毒气检测完毕后,嵌入式上位机发送结束指令,MCU关闭设备,系统进入低功耗模式。

4 实验结果及分析

以庚醛为例,开启系统,采集卟啉传感阵列反应前图像信息,将浓度为45 ppb的庚醛气体泵入检测系统,待其与卟啉传感器充分反应,采集反应后图像信息,将反应前后原始图像阵列信息进行图像校正、滤波、分割、信息提取及模板化等图像处理得到其特征值模板,如图7(a)、(b)所示。作差得到庚醛差谱特征信息模板,如图7(c)所示。图7(d)横坐标表示36点阵RGB分量组合R1B1G1…R36B36G36,纵坐标表示对应的△R、△G、△B值,由此可知庚醛的作用点主要有6个,与图7(c)中特征点匹配,点位置特定。随着浓度变化,对应特征点的色谱信息出现差异,可实现同种气体不同浓度检测,同时能实现ppb级低浓度毒气检测。如表1所示(表中括号三个值分别对应特征点的差值△R、△G、△B分量信息)。由此,说明了检测系统采用差谱特征信息识别气体的可行性,同时能实现对不同浓度毒气的定量识别性。

系统对6种有毒有害气体进行了检测,其结果如图8所示。图8(a)~(f)分别对应其光谱特征信息模板,每种气体的特征信息(特征点点数、位置及RGB色谱信息值)存在差异性,与相应目标气体存在一一对应关系,这说明了检测系统的“指纹”特征性,可实现对不同气体的定性识别。图8中对6种气体各试验了25次,重复正确性高,说明了检测系统稳定性好;每种气体特征点RGB值趋于稳定的时间(3 min-5 min),表明系统能实现毒气的快速检测,保证了检测系统的实时性。

本文利用金属卟啉传感器对特定痕量目标物气体反应的特异性及敏感性,基于嵌入式ARM-Linux及QT开发工具,开发了相应毒气检测装置,实现了信息检测、处理及显示等功能。试验表明,该系统实现了对低浓度(ppb级)毒气的快速、稳定检测,能对多种有毒气体实现定性定量的检测。

摘要:基于卟啉阵列传感器和毒气接触发生化学反应导致其色谱变化的“指纹”特性原理,提出了一种以嵌入式ARM9 S3C2440A为核心、以Linux为操作系统、QT/Embedded为开发工具并利用卟啉化学传感器的痕量毒气检测装置。阐述了系统总体设计,实现了卟啉传感阵列光谱信号采集、信号处理、反应环境监控等主要功能模块及控制软件。

关键词:Linux,ARM9,QT/Embedded,卟啉传感器,毒气检测

参考文献

[1]COTTE R I,JUSTES D R,NANITA S C,et al.Analysis ofgaseous toxic industrial compounds and chemical warfareagent stimulants by atmospheric pressure ionization massspectrometry[J].Analyst,2006,131(4):579-589.

[2]TSAI M Y,YOST M G,WU C F.Line profile reconstruction:validation and comparison of reconstruction methods[J].Atmos Environ,2001,35:4791-4799.

[3]LEONHARDT J W.A new ppb-gas analyzer by means ofGCion mobility spectrometry(GC-IMS)[J].Journal of Radioa-nalytical and Nuclear Chemistry,2003,257(1):133-139.

[4]郭东敏,杨建华,李秉玺.可视嗅觉系统分析与设计[J].传感器技术学报,2006,19(3):565-568.

[5]AVIJIT S,KENNETH S S.Shape selective discrimination ofsmell organic Molecules[J].J Am Chem Soc,2000,122:11565-11566.

嵌入式ARM9系统 篇5

FCT[1] (Function Circuit Test) 指的是对被测板 (DUT) 提供模拟的运行环境, 使DUT工作于设计状态, 从而获取输出, 进行验证DUT的功能状态的测试方法。简单地说, 就是对DUT加载合适的激励, 测量输出端响应是否合乎要求。

F C T作为P C B A (P r i n t e d C i r c u i t B o a r d Assembly) 的一种测试手段, 在生产测试工序中, 位于ICT之后, 在FT之前。FCT关注的是PCBA上的器件是否工作正常。

作为安防产品的功能测试, 我们需要模拟被测产品的输入, 监控其输出是否符合设计要求。这就需要测试台有至少一个主控板来实现这些功能。安防产品的总类繁多, 功能复杂, 以往我们针对每个被测产品都从头设计一个测试板, 作为信号模拟和输出分析。这样每次测试台的开发周期都比较长, 开发工作量很大, 涉及到元器件选型, 布板, 制板, 硬件调试, 软件编写等, 因此设计一个标准的测试平台是十分有意义的。

1 设计原理

1.1 系统总体构架

安防产品的功能测试有其行业的特殊性, 因为安防产品一般可以分为防盗报警类, 视频监控类, 门禁控制类, 以及后来拓展出来的智能家居类产品, 这些产品是有一定的共性的, 比如防盗报警类产品有多防区报警接口, 电话或无线报警输出;视频监控类一般都有摄像头接口, 视频音频输出;门禁产品一般都有485总线扩展接口, 读卡器接口等;智能家居类产品都有无线射频模块, 液晶屏显示等。根据这些产品的共性, 我们可以进行模块化设计, 把测试平台分为不同的模块, 对应被测板的功能, 这样在具体设计时就可以删减模块进行测试台定制。

根据对以往项目的分析, 以及以后产品的发展方向, 列出了测试台需要实现的模块功能, 其中包括[2]:

1) 主控模块, 有一个功能强大的主控芯片, 作为测试系统的总体控制核心, 与其他模块进行通讯, 并对信号进行处理分析, 需要支持以太网, USB, RS232/485/SPI/IIC等。

2) 继电器模块, 用于多路继电器控制, 用于模拟报警信号输入, 按键动作等。

3) I/O模块, 用于模拟数字信号输入输出。

4) AD模块, 用于电压电流的测量。

5) 电源模块, 用于提供被测板电源, 并可控。

6) 隔离模块, 用于隔离测试系统和被测板。

7) 视频模块, 用于模拟视频输入信号, 可以生产Color Bar标准视频源, 支持PAL/NTSC制式。

8) 音频模块, 用于模拟音频信号输入, 并可对音频信号进行解码分析。

9) 显示模块。人机接口在PC端显示。

系统框架图如图1所示。

1.2 硬件选型与设计

1.2.1 主控板的设计

主控芯片需要有快速的处理能力, 并需要有多种接口, 支持以太网, USB, RS232/485/SPI/IIC等。经比较市面上主流的芯片, 选定ARM9核心的AT91SAM9260[3]为主控芯片。该芯片有丰富的外设满足要求:

1) 3个32位PIO控制器, 提供96个可编程IO输出。

2) 可扩展总线接口 (EBI) , 支持SDRAM, NAND等。

3) 1个USB2.0全速host接口和1个USB2.0全速device接口。

4) 10/100以太网卡接口。

5) 支持多种通讯接口, 4个USART, 2路SPI。

M C U通过E B I总线连接扩展存储器件, 根据需求, 外部扩展了1片4Banksx4Mx16Bit SDRAM, HY57V561620, 1片128MbitNorflash M29W128F用于存储程, 1片128Mx8bitNANDFlash HY27UA081G1M用于存储数据和程序。

同时根据需求分析, 主板需要提供丰富的外设接口以连接各附属板, 比如IIC接口和附属板通讯;多路USART接口和PC机和被测板通讯;按键, LED灯和液晶接口以连接测试台界面;以及常用的串口如485, SPI等。

1.2.2 附属板卡设计

根据设计需求, 需要设计继电器卡, 模拟采集 (AD) 卡, 电源板卡, IO板卡, 隔离板卡, 音频采集卡, 视频发生卡等。各板卡与主控板卡之间通过串行通讯连接。

附属板卡比较多, 这里不再一一详细介绍, 以AD板卡设计为例介绍:

AD[4]板卡主要是实现静态电压电流测量, 这个可以由多种多样AD采集芯片实现。AD板卡的设计难点是测试系统和被测系统的隔离。在功能测试台中, 需要把被测系统隔离起来, 这样被测板的故障就不会影响到测试系统。对于AD板来说, 就需要设计一套隔离系统, 并且分别提供电压。我们用继电器实现隔离, 如图2所示。

设计的AD板卡的功能如下:

多通路AD测量, 板上16通路AD, 均实现共模, 差模测量。

外部可扩展AD通道 (I2C接口) 。

两路输入电源切换, 一路交 (直) 流电流测量。

交流电压测量。

AD板的外部接口如图3所示。

1.3 软件设计

系统软件可以分为两大部分, 嵌入式软件设计和PC端软件设计。嵌入式软件是AT91SAM9260的嵌入式软件开发, 各板卡的驱动程序。PC端软件是运行在PC机上的人机接口界面设计。

1.3.1 嵌入式软件设计

这里选在在IAR Embedded Workbench[5]上开发嵌入式软件, IAR是一套开发工具, 用于对汇编、C或C++编写的嵌入式应用程序进行编译和调试。支持各种嵌入式处理器:MCS-51、ARM全系列、AVR、Dragonball、PIC、6502等, 是一套完整的集成开发环境, 包括工程管理器、编辑器、编译工具和C-SPY调试器。

因为程序比较庞大, 这里移植了PowerPac[6]实时操作系统及其文件系统, IAR PowerPac能提供抢占和循环这两种方式的任务调度, 能处理无限多的任务、信号量、邮箱和软件定时器, 并可设置255种不同的优先级别。IAR PowerPac能实现完全的中断, 0中断时延是其一个重要的特点。IAR PowerPac还能实现可嵌套的中断, 并且能达到非常快的上下文切换速度。IAR PowerPac文件管理系统能兼容MS-DOS/MS-Windows系统, 支持FAT12、FAT16和FAT32格式, 以及支持多种设备驱动和多种存储媒介, 包括:RAM盘、MMC卡、SD卡、CompactFlash卡、硬盘接口、SMC卡以及NOR/NAND闪存, 其高度模块化的结构使得对内存的消耗降至最小。

通过Power Pac, 实现了软件的标准化和模块化, 加入文件系统, 测试程序可以方便的自我升级, 并且可以存储测试数据。开发界面如图4所示。

1.3.2 PC端软件

PC端软件是测试台的人机接口界面, 承担着测试项, 测试过程和结果的显示, 测试数据的分析, 测试和保存等。因为是工人操作的界面, 需要良好的可操作性, 并且可扩展。我们使用Labview开发PC端软件。

NI公司的Developer Suite (开发者套件) 是一个开放的、灵活的、适应多种需求的虚拟仪器软件开发平台。LabVIEW 2009:是NI公司的旗舰产品, 强大、开放、图形化的虚拟仪器软件开发环境。由于LabVIEW[7][8]采用的是图形化的编程方法, 可以快速、高效地与测量和控制硬件通信, 并进行数据分析及处理。

软件正常运行时有四个状态, 分别为初始状态、测试状态、测试成功状态、测试失败状态。

这四个状态的转换依赖于下位机发送的命令。

软件初始状态:

1) 开始运行软件;

2) 用户将测试台复位或者测试过程将上盖打开 (由测试台指令控制) 。

正常测试状态:

1) 当收到开始测试0101项时, 软件进入测试状态;

2) 在测试过程中弹出对话框或者清除对话框都是由测试台控制;

3) 在测试过程中测试台可以命令软件进入初始状态 (软件复位) 。

测试失败状态:

1) 任何一项测试失败后进入测试失败状态;

2) 在测试失败时, 测试台等待计算机指令 (一般会弹出对话框询问) ;

3) 测试失败状态下测试台可以命令软件进入初始状态;

4) 测试失败状态下软件可以继续进入测试状态, 但是测试结果失败;

5) 当执行继续测试时, 在完成全部测试后, 测试台命令软件显示FAIL。

测试成功状态:

1) 当测试项全部通过测试;

2) 测试台发指令给软件进入初始状态, 以等待下一个新的测试。

定义17字节的通讯帧, 作为嵌入式软件和PC软件的通讯。帧格式如图5所示。

其中REGISTER ADDRESS代表不同的测试项, 其地址分配如下:

0101~0F0F:最大允许255个完整测试项目, 其中:

0X1X:表示开始测试一个项目, 相应的主测试状态为TESTING。

0X2X:表示传送测试结果数据, 数据为一个字长的整形数0~65536, 显示在子项测试结果左侧。

0X3X:表示子项测试成功, 在子项测试结果中显示OK。

0X4X:表示子项测试失败, 在子项测试结果中显示FAILED

软件运行界面如图6所示。

2 结束语

该通用测试平台以AT91SAM9260为控制核心, 覆盖了功能测试领域的大部分功能, 并且有一个统一且友好的人机接口界面, 实现了从硬件到软件的标准化和模块化, 大大节省了研发周期和成本。经证实, 该系统可以稳定、可靠、精确地实现功能测试。

参考文献

[1]吴平峰, 代宣军.PCB测试技术的介绍[J].现代机械.

[2]魏伟, 胡玮, 王永清, 嵌入式硬件系统接口电路设计[M].化学工业出版社, 2010.6.

[3]AT91SAM9260Preliminary, www.atmel.com[16].

[4]MAX188Product Datasheet, 2002.

[5]徐爱钧, IAR EWARM V5嵌入式系统应用编程与开发[M].北京航空航天大学出版社, 2009.9.

[6]Chang DaWei, Chang Ruci Chuan.OS Protal;an economic appraoac for making an embedded kernel extensible[J]., 2003, (67) :19-30.

[7]陈锡辉, 张银鸿, LabVIEW8.20程序设计从入门到精通[M].清华大学出版社, 2007.

嵌入式ARM9系统 篇6

关键词:ARM9,嵌入式操作系统,调度算法

0 引言

嵌入式系统[1,2,3]朝着嵌入式网络的方向发展,从根本上改变了其结构。本课题将进行结构设计创新,ARM芯片的接口扩展设计尽可能达到小型化,整个设计成型设备能以ARM芯片为核心进行数据的处理与交换,全系统数据交换采用内部总线。这样的数据处理方式和程序扩展会有很大的好处,能更好地应用于移动终端、新型家电和远程监控等小型化产品中,可以预见这类应用将有一个质的改变。

而这种改变,目前市场只是在3G手机中得到应用,但手机终端在操作系统方面更多地是考虑提供一个3G业务应用平台。本课题在系统设计方面将做大量的操作系统剪裁,通信控制程序本身就是操作系统,这样可以大大节省Nand Flash等硬件资源,并可根据用户的特点进行设备的定制与扩展,这将有利于在汽车制造和工业控制领域中发挥作用。

在操作系统中的通信功能,信息处理与资源共享是计算机发展的最大诱因。因此通信功能在各个系统中都有使用,但各个通信的协议方式大都是各有特点的内部协议。本研究中可将TCP/IP的协议栈包含在系统程序中,并且可在链路层对特定的通信协议进行转换,能迅速与不同系统进行互联互通,使得本系统以嵌入式以太网的形式涉足于工业控制、建筑物自动化建设中。

1 调度算法[4,5,6,7,8,9,10,11,12]

调度算法是指在有限的处理单元上对具有某些已知特征的任务集执行顺序的设计。在嵌入式实时系统中,任务的执行要面对两种限制:时间限制和资源限制。实时任务要求系统有良好的响应时间以满足截止时间,在嵌入式系统中只有有限的RAM和CPU等资源,所以调度的好坏在很大程度上决定了系统的性能。

1.1 RMS调度算法

RMS算法是在1973年由C.L.Liu和J.Layland提出的。该算法是基于统计任务执行频率的一种任务调度方法。RMS算法将最高优先级赋予最高执行频率的任务,以单调的顺序对余下的任务分配优先级。分析中,RMS算法作了以下假设:

(1)所有任务都是周期性的;

(2)任务间不需要同步,没有共亨资源,没有任务间数据交换等问题;

(3)CPU必须总是执行优先级最高且处于就绪态的任务,即须用可剥夺型内核调度法。

由于采用抢占式的凋度方式,高优先级的任务就绪后立即抢占正在运行的较低优先级的任务。设系统中有n项不同的任务,由于RMS算法要求调度的独立的周期性任务总能满足其截止时间,即要求系统中的所有任务必须满足硬实时条件,于是有下列不等式成立:

式(1)中:Vk为任务k最长执行时间,Tk是任务k的执行周期,即任务k所需的CPU时间利用率。当系统中的任务数n趋于无穷大时,s(n)的值为Ln2,即0.693。于是,若要使所有的任务都满足硬实时要求,则有:

亦即所有有时间限制的任务的总CPU时间利用率应低于70%。其实,系统设计中,使CPU的时间利用率达到100%并不好。如果那样,程序就没有修改的余地了,也无法增加新的功能。实际情况下,CPU的时间利用率应在60%-70%以下。RMS算法的优点是灵活性强、开销小、可调度件测试简单。但在某些情况下,执行频率最高的任务并非最重要的任务。

1.2 EDF调度算法

抢占式EDF调度算法是一种动态优先级驱动的调度算法,其中分配给每个任务的优先级根据它们当前对最终截止时问的要求而定。当前请求的截止时间最近的任务具有最高的优先级,而请求截止时间最远的任务被分配最低优先级。这个算法能够保证在出现某个任务的截止时问不能满足之前,不存在处理器的空闲时间。C.L.Liu和J.Layland证明了对于一个具有n个任务的集合,截止时间驱动的调度算法的可行条件为:

任务的最长响应时间Tr是可测的,须满足Tr小于截止时间,任务才能被调度。对于Tr可用下式表达:

式(4)中:Tnn_i为任务i的执行时间;Tlok_i为任务i的闭锁时间;Tspd_i为任务i的调度开销时间;Trdy_i为任务j再次就绪的时间;max{T/Trdy_i}·Tnn_j为低优先级任务i被高优先级任务j剥夺后,高优先级任务占用的总时间。

抢占式EDF调度算法最大的优势在于,当系统的负载相对较低时非常有效,对于任何给定的任务集,只要处理器的利用率不超过100%,就能够保证它的可调度性。EDF的劣势在于不能解决过载问题,当系统负载较重时,可能引起大量任务错过截止时间,导致CPU的时间大量花费在调度上,这时系统的性能很低。

1.3 改进调度算法

在嵌入式实时系统中资源非常有限,所以开销要尽可能减小;而RMS和EDF调度算法的问题就在于它们的开销———运行开销和调度开销。本文以ARM9为例,结合Linux的调度算法,对ARM9内核的任务调度算法进行改进,使其成为抢占式与时间片轮转调度相结合的调度算法,而系统的开销并无多大改变。

以嵌入式通信控制系统中常用的数据采集任务为例,可将ARM9就绪表中的8个进程设为数据采集专用的进程。对于这8个进程,采用时间片轮转的任务调度算法,在TCB控制块中增加一项变量counter作为任务调度的权值。如果就绪队列中有优先级比这8个进程高的任务,则无条件让出CPU使用权,系统执行任务切换程序。如果当前就绪队列中优先级最高的进程属于数据采集专用的8个进程之一,则顺序遍历所有就绪的数据采集专用进程,计算其时间片counter的值,取出时间片最大的进程运行。若遇到时间片大小相同的进程,则取出优先级高的进程运行。改进后的任务调度算法如下:

#define TASK_COUNTER 30

#define OSPRIO_ACQ 5

Void OSMYSCHED(){

#if OS_CRITICAL_METHOD==3

OS_CPU_SR cpu_sr;

#endif

INT32 x,y,z,w;

OS_ENTER_CRITICAL();

//进入临界区,关中断

if(y!=OSPRIO_ACQ)

OSPRIOHIGHRDY=(INT32)((y<<3)+x);

else{

w=0;

z=OSRDYTBL[y];

while(z){

if((OSTCBPRIOTBL)[(INT32)((y<<3)+z)]->counter>w)

w=OSTCBPRIOTBL[(INT32)((y<<3)+2)]->counter;

OSPRIOHIGHRDY=(INT32)((y<<3)+z);

Z=OSUNMAPTBL[z];

}

}

if(w==0){

z=OSRDYTBL[y];

while(z){

OSTCBPRIOTBL[((y<<3)+z)]->counter

=TASK_COUNTER;//重新计算

z=OSUNMAPTBL[z];

}

OSPRIORDY=(INT32)((y<<3)+x);

}

If(OSPRIORDY!=OSPRIOCUR){

OSTCBRDY=OSTCBPRIOTBL[OSPRIORDY];

OS_EXIT_CRITICAL();//退出临界区,开中断

RMS算法和EDF算法能够保证在出现某个任务的最终期限不能满足之前,不存在处理器的空闲时间。因为EDF算法最大的优势之一在于,对于任何给定的任务集,只要处理器的利用率低于100%,任务的可调度性就能够保证。EDF算法还有两个特点:第一,任务调度基于最终截止时间,能够最大限度地保证实时性;第二,资源利用率高。改进的RMS算法和EDF算法将完整地继承这些优点。当然,改进的算法本身会占用一定的系统资源,但这不与RMS算法和EDF算法的优点相矛盾,也是在实现过程中难以避免的合理消耗。

2 结束语

嵌入式操作系统的性能优劣该如何评价,至今没有一个通行的标准,如果直接从任务的完成结果来衡量则不够量化。嵌入式操作系统的特殊性决定了对其评价的复杂性,因其应用广泛且类型各异,这就很难用单一的指标来衡量。而且多数嵌入式操作系统都是经过剪裁或定制为完成某个特定需求而研制甚至其应用成本都是考量因素之一,要想“量化”且尽可能全面的评定一个嵌入式操作系统的优劣,首先要看哪些因素影响着嵌入式操作,即哪些因素是最值得关注的。以下三个因素最为关键,第一,响应时间;第二,“任务死期”;第三,任务运行顺序。确立了以上三个标准,系统性能评价便有了依据,考察改进EDF算法的实时性也有了参考。一个系统的最快响应时间决定了该系统的“灵敏”程度,对于很多嵌入式操作系统来说,这往往是第一需要关注的。传统的任务调度方法,如优先级抢占算法,虽然能最大限度地发挥系统的速度,但当优先级反转现象发生时,其速度优势就会彻底丧失。而改进EDF算法的最快响应时间就是PS算法的周期系统的,是可以预期并保证的。对于不同的系统,最小时间片还可以进行调整,以满足不同的需要。任务“死期”则更是优先级抢占方法所不能满足的,甚至包括上面提到的两种“协议”也无法满足。而改进EDF算法则能从根本上满足该需求。任务顺序对于系统运行的影响还是比较小,改进EDF算法同样能有效地给予保证。可以看出,改进的任务调度算法首先具有“可量化性”。这样便可在系统应用或研发的开始做到防患于未然,或根据需要做合理的调整,确保有的放矢,以全面均衡地满足影响实时性的相关因素。其次,改进的RMS算法和EDF算法本身的特点决定了其对系统资源的高利用率,系统资源利用率高,就可以充分发挥系统性能,提高系统处理任务的吞吐量,缩短任务全部完成所需时间,从宏观上看,就是提升了系统整体的实时性。

参考文献

[1]Burchard A,Liebeherr J,Oh YF,Son SH.New strategies for assigning real-time tasks tomultiprocessor systems.IEEE Trans.on Computers,1995.44(12):1429-1442.

[2]Liu C L,Layland J W.Scheduling algorithms for multiprogramming in a hard real time environment[J].Journal of the ACM(S0004-5411).1973:47-61.

[3]Amd C.Heursch.Preemption concept,Rhealstone Benchmark and scheduler analysis of Linux Real-Time&Embedded Computing Confeernce,Milan,2001November:27-28.

[4]B.Andersson,J.Jonsson.Fixed-prlority preemptive multiProcessor scheduling:To partition or not to Partition.In:Proc.of the lnternational Conferenceon Real-Time Computing Systems and Applications.Cheju Island.Korea.2000:337-346.

[5]Bini E,Buttazzo GC,Buttazzo G.The space of rate monotonic schedulability.In:Proc.of the23rd IEEE Real-Time Systems Symp.(RTSS2002).Austin Texas:IEEE Computer Society Press,2002:169-180.

[6]J P Lehoczky,L Sha,J K Stronsnider.Enhanced aperiodic responsiveness in hard real-time environments.In:Proc of the8th IEEE Real-Time System Symposium San Jose,California:IEEE Computer Society Press,1987:210-217.

[7]Too-Seng Tia,Jane W-S Liu,M Shankar.Aperiodic request scheduling in fixed-priority preemptive scheduling Department of Computer Science,University of Illinois at Urbanar-Champaign,Tech Rep:UIUCDCSR,1994:1840-1859.

[8]Abeni L,Buttazzo G.Integrating multimedia applications in Hard Real-Time Systems.In:Proceedings of the19th IEEE Real-Time Systems Symposium.Los Alamitos.CA:IEEE Computer Society Press.1998:34-35.

[9]C L Liu,J W Layland1Scheduling algorithms for multiprogramming in a hard real-time environment Journal of the Association for Computing Machinery,1973.20(1):46-61.

[10]J P Lehoczky,L Sha,Y Ding.The rate monotonic scheduling algorithm:Exact characterization and average case behavior.In:Proc of the10th IEEE Real-Time System Symposium.Santa Monica,California:IEEE Computer Society Press.1989:116-171.

[11]A K Mok.Fundamenta.design problems of distributed systems for the hard real-time environment[PhD dissertation].Massachusetts Institute of Technology.1983.

基于ARM9嵌入式网关的设计 篇7

在工业控制和通讯设备中, 更多的是符合RS-232标准的串行口设备。因此这些设备都是通过RS-232或RS-485总线与PC机进行数据通行和数据管理的。这种方式不仅需要很大的人力和物力, 而且传输的距离有限, 不能实现远程控制, 可以在设备中嵌人TCP/IP协议栈, 通过工业网关自动分配IP地址, 实现对各个设备的远程监视和远程控制。

近些年, 互联网以其便捷、高速传输数据的特点越来越受到人们的青睐。以太网/互联网等网络架构逐渐在通信、自动化控制领域被广泛的采用, 以TCP/IP网络传输通信协议为代表, 成熟度较高的开放式网络通信技术, 正向各种自动化系统进行渗透, 连接并控制所有设备。而32位处理器ARM的出现, 使得嵌入式监控设备实现TCP/IP协议成为现实。

LINUX作为一种开源免费的操作系统由于它集成了TCP/IP协议栈, 所以网络编程模块就变的很容易了, 用SOCKET编程就变的灵活容易了。而LINUX又能很好的在ARM上进行移植, 所以本设计用了LINUX操作系统。

本设计就是通过移植了LINUX操作系统的ARM9来读取串口、并口、USB等传送过来的数据, 并且通过移植Boa web服务器使ARM上的数据可以通过以太网很好的传送到任何地方的宿主机上。这样就可以通过一台宿主机控制多太工业设备, 并且能过在很远的地方对设备进行控制, 大大的减轻了在工业领域中人力和物力的消耗。

(二) 系统硬件平台设计

1. 系统总体结构的设计

系统的工作原理是就是通过移植了LINUX操作系统的ARM9来读取串口、并口、USB等传送过来的数据, 并且通过移植Boa web服务器使ARM上的数据可以通过以太网很好的传送到任何地方的宿主机上。这样就可以通过一台宿主机控制多太工业设备, 并且能过在很远的地方对设备进行控制, 大大的减轻了在工业领域中人力和物力的消耗。, 系统的结构框图1所示。

2. 通信模块的设计

用RTL8019芯片设计的以太网控制器, 可以通过RJ-45连上以太网, 从而实现把工业设备上的数据传送到远程监控端得浏览器上。如图2所示为网络通信部分的结构框图。

RTL8019AS芯片的引脚SA0~SA19为地址总线;SD0~SD15为数据总线;引脚INT0接S32C410芯片的外部中断信号;引脚AEN是地址使能脚, 作为芯片的选通信信号, 将中断接到CPU的n GCS3地址映射到bank3。

引脚TPIN+, TPIN-、TPOUT+, TPOUT-作为媒体接口管脚, 是接收IP数据报所需要用到的管脚, 在设计网卡芯片电路时通过一个隔离变压器和RJ-45的网络外接口相连, 外部主机通过以太网网线与RJ-45接口进行连接, 实现数据交换。

隔离变压器的TD+管脚连接网卡芯片的TPOUT+引脚;TD-连接TPOUT-;RD+连接TPIN+;RD-连接TPIN-。8019通过隔离变压器与RJ-45连接, 实现与主机进行接收和发送IP数据报等工作。

3. 串口部分的设计

串口部分设计使用了2路UART, 其中, 一路通过电平转换芯片MAX232, 把3.3V的逻辑电平转换为RS-232-C的逻辑电平进行传输, 实现ARM与PC机之间的通信, 通过超级终端可在PC机上进行调试;另一路串行接口使用MAX1485进行电平转换, 实现从RS-485上接收现场总线发送的信息。

(三) 系统软件部分设计

1. 操作系统的移植

Linux操作系统可应用于多种硬件平台, 具有良好的移植性、高的可靠性、优秀的网络功能、完备的文件系统以及丰富的API, 为嵌入式网关提供了强大的软件支持。因此, 本文选择Linux作为嵌入式网关的操作系统。操作系统的移植过程如下:

制作Linux映像文件

(1) 在linux系统下安装arm-linux-gcc交叉编译软件, 这里采用cross-2.95.3.tar.gz工具包。

(2) 将linux-jx2410.tar.gz拷贝到/home/cvtech/目录下, 执行下面命令

(3) 将生成的内核映像文件z Image复制到/tftpboot目录下

往ARM9上移植linux操作系统

(1) 配置linux系统的tftp服务。

(2) 将文件系统映像文件拷贝到/tftpboot下。

(3) 将硬件电路连接好, 下载ramdiak.gz和z Image映像文件通过网线下载到ARM9中。 (tftp 30800000 ramdiak.gz, tftp 30008000 z Image) 。

(4) go 30008000, 就进入了arm9的linux系统。这样就将linux内核下载到了ARM9上了, 通过LCD可以看到linux操作系统的界面。

2. Boa Web服务器的移植

Boa Webserver是一个运行在类UNIX系统中的高性能网络服务器。可以接收来自客户机的POST和GET方法, 支持CGI后台服务程序。移植过程如下:

4. 动态Web页面的CGI技术

通用网关接口 (CGI) 是Web服务器与外部应用扩展程序交互的一种标准接口, 规定了Web服务器调用调用其它可执行程序的接口标准, 提供了WEB服务器执行外部程序的通道。CGI程序是独立于Web Server的一个外部程序, 经编译成可执行文件在服务端运行。

本系统中, CGI程序主要是将以太网传送过来的数据动态的显示在浏览器上, 并且具有, 配置设备的IP地址、网关地址、子网掩码等设置。

5. 串口通信模块的设计

在linux下, 串口被当做文件对待, 每个串口都赋予了一个文件描述符。因此, 从串口读写数据, 就像读写文件一样简单。在linux中打开和预置一个串行设备的基本步骤:

(1) 用open打开设备文件。此时需要使用O_NONBLOCK和O_NOCTTY打开标志。O_NONBLOCK标志使得open不等待并立即返回, O_NOCTTY指明串行设备不是控制终端。

(2) 使用tcgetattr获取当前设备方式。

(3) 设置termios成员c_iflag、c_oflag、c_cflag、c_lflag。

(4) 使用cfsetispeed和sfserospeed通信设置波特率。

(5) 使用tcsetattr设置设备工作方式。

(6) 使用read和write读写串口终端。

(7) 输入输出处理完毕, 用close关闭串口。

串口通信的流程图如图3所示。

(四) 结束语

本文介绍了以S3C2410处理器为核心、用RTL8019AS作为网络接口芯片的嵌入式网关的软、硬件设计方法。本系统可用于对工业设备的远程监控控制, 具有很好的应用前景。

摘要:系统是一种以S3C2410处理器为核心, 结合RTL8019AS网络接口芯片开发硬件系统, 并在此系统上移植了Linux操作系统和Boa Web服务器的嵌入式工业网关, 实现了对工业设备的远程监控和控制。

关键词:ARM9,Linux,Boa Web服务器,CGI

参考文献

[1]王进德.嵌入式Linux程序设计与应用案例[M].北京:中国电力出版社, 2007.

[2]郑慕德.嵌入式微型计算机系统实例教程——ARM与Linux[M].北京:科学出版社, 2006.

[3]张思民.嵌入式系统设计与应用[M].清华大学出版社, 2008.

[4]刘洪涛, 孙天泽.嵌入式系统技术与设计[M].北京:人民邮电出版社, 2009.

嵌入式ARM9系统 篇8

操作系统的移植是指通过对操作系统的改造, 使同一个操作系统可以在不同的硬件平台上运行。如果一个系统可以在不同硬件平台上运行, 那么这个系统就是可移植的。Linux操作系统就可以通过移植, 运行在ARM等多种硬件平台上。考虑到嵌入式系统是“硬件可裁减”的, 以及不同的用户需求, 我们需要对已有的内核代码进行裁减移植。

一般情况下的Linux内核的剪裁及移植, 主要是针对操作系统中关于具体硬件以及除去不需要的功能模块, 如一些不会用到的外设支持、驱动程序、协议、网络支持、文件格式等。Linux内核具有很好的模块性和伸缩性, 在资源要求严格的情况下经过合理的裁减可获得明显的效果[1]。

Linux内核支持很多的硬件体系结构如ARM, Power PC等, 但由于新的硬件设备不断出现, 根据新的硬件平台移植内核是嵌入式系统构建的必须工作。

2.交叉编译环境的建立

Linux下的交叉编译环境主要包括以下几个部分:

针对目标系统的编译器gcc;针对目标系统的二进制工具binutils;目标系统的标准c库glibc;目标系统的Linux内核头文件, GDB调试工具。

交叉编译环境的建立主要是在Linux下创建以上工具。

这里重点介绍gcc建立过程:

1) .下载arm-linux-gcc.3.3.2.tgz软件包到宿主机Linux操作系统上。

2) .在终端下解压安装交叉编译器, 命令如下:

tar xvzf arm-linux-gcc.3.3.2.tgz/usr/local/arm

3) .修改环境变量:为了方便的使用arm-lin u x-g cc编译器系统, 最好把armlinux工具链目录加入到环境变量PATH中, 即修改/etc/profile文件, 在PATH变量中加入pathmunge/usr/local/arm/3.3.2/b in语句。

3.内核移植

以Linux-2.4.18版本为例, 下面是对几个关键配置文件的移植。其它相关的初始化处理器, 关闭外围设备时钟, 中断处理需要编写相应的程序加入到内核代码中[2]。

1) .根目录下设置目标平台和交叉编译器

修改根目录中的Makefile文件。这个Makefile文件的任务有两个:产生vmlinux文件和产生内核模块。为了达到此目的, Makefile将递归进入内核的各个子目录中, 分别调用位于这些子目录中的Makefile。

打开最上层目录下的Makefile文件, 这个文件中修改后的内容如下所示:

(1) 指定目标平台:ARCH:=arm

(2) 指定交叉编译器:CROSS_COMPLE=arm-linux-

关键点:设置目标平台和交叉编译器。

2) .根据电路设置TEXTADDR

因为2.4.18版本的内核还没有包含S3C2410X处理器, 所以要手动增加下面内容:

ifeq ($ (CONFIG_ARCH_S3C2410) , y)

TEXTADDR=0xC0008000

MACHINE=s3c2410

endif

TEXTADDR决定内核起始运行地址, 即image.ram应下载的位置。根据我们的电路设计, 这个地址是OxC0008000。这里Ox C0008000的含义是:从地址Ox C0000000开始, 总共32M的空间。

关键点:有任何新加的功能都要告知Makefile。

6) .修改a r c h/a r m/m m目录下m marmv.c文件

移植前:init_maps->bufferable=0;

移植后:init_maps->bufferable=1;

4.编译内核

下面介绍内核编译的步骤:

(1) make clean

清除以前内核所产生的所有的目标文件、模块文件、核心以及一些临时文件, 它不产生任何文件。

(2) make dep

寻找依存关系, 产生两个文件.depend和.hdepend。其中.hdepend表示每个.h文件都包含哪些嵌入文件。而.depend文件有多个, 在每个会产生目标文件的目录下都有, 它表示每个目标文件都依赖哪些嵌入文件。

(3) make menuconfig

该命令是用来调用菜单式的配置内核界面。

(4) make zImage

最后此命令是用来编译内核, 生成压缩的Linux内核目标代码z Image文件, 编译成功后此代码可在/kernel/arch/arm/b o o t/下找到。

到此, 即生成了可烧写的内核zImage。

(5) 下载到开发板

至此, linux的移植工作已经完成, 我们可以通过电脑的超级终端看到启动的相关信息。

5.结束语

本文详细阐述了Linux2.4.18内核移植到S3C2410处理器的过程与关键点, 实践表明, 移植后的内核可以稳定在S3C2410处理器上运行。

参考文献

[1]徐英慧, 马忠梅等.ARM9嵌入式系统设计—基于S3C2410与Linux[M].北京:北京航空航天大学出版社.2007.

上一篇:实践集成下一篇:主要素质