变电站智能图像采集的嵌入式操作系统的开发设计
时间:2020-10-18 07:59:12 来源:达达文档网 本文已影响 人
[摘要]介绍嵌入式处理器和操作系统。并基于SAMSUNG的S3C2410硬件平台和嵌入式Linux软件操作系统,详细说明了在构造嵌入式系统中所要进行的建立环境及移植工作,包含交叉编译环境建立,启动程序VIVI,嵌入式Linux的内核以及文件系统YAFFS的移植,使得ARM-Linux系统能够正常启动,通过在超级终端里输入命令对系统进行控制。建立嵌入式的操作系统,对实践具有一定的意义。
[关键词]嵌入式 Linux 操作系统开发
中图分类号:TP2 文献标识码:B 文章编号:1671-7597(2008)0820022-02
近几年,电力行业一直在致力于无人/少人值守变电站的推广应用。越来越多的电力局把远程图像监控系统作为无人/少人值守变电站管理的重要手段。
一、图像采集系统发展现状
图像采集作为图像监控系统(黎洪松,1997;刘文黔,2003)的主要部分,作为整个系统的原始信号源,其主要功能是完成目标景物到图像信息的转换过程。其物理变换是一个光电变换过程。在这个变换过程中摄像器件承担了主要任务。目前主要的方法:
1.本地模拟信号采集
2.基于PC插卡的图像采集系统
3.基于嵌入式技术的网络数字监控系统
随着芯片、网络技术的进步,现在出现了基于嵌入式技术的网络系统监控系统。嵌入式系统也由于软件硬件可裁剪、本身体积小、实时性高、稳定性好、支持网络等优点,成为工控领域的新热点。基于嵌入式技术的监控系统有效地将嵌入式技术和图像技术结合在一起,可以很好地解决基于PC的监控系统中存在的问题。在监控现场利用嵌入式技术,采用专用芯片和嵌入式操作系统,把摄像头输出的信号进行图像压缩编码处理、网络通信、自动控制等,支持网络传输和网络管理,有效地提高了系统的实时性和稳定性,把图像采集压缩和网络传输功能集成到一个体积很小的设备内,直接连入无线网,省掉各种复杂的电缆,安装方便,使得监控范围达到前所未有的广度。
本文就设计开发了一款应用于变电站图像采集的嵌入式网络数字监控系统。
二、嵌入式软、硬件开发平台及其开发设计
从本开始介绍ARM嵌入式处理器的选型及其操作系统的选用和移植,嵌入式远程无线视频监控系统的设计。介绍嵌入式处理器,嵌入式操作系统及其监控系统的总体结构,系统相关硬件及系统软件总体框架,从整体上介绍系统移植过程。
(一)嵌入式软、硬件开发平台
本设计嵌入式硬件平台选择ARM9系列的S3C2410开发板。软件部分使用开源的Linux操作系统。
(二)开发环境建立
本文软件开发环境(马忠梅等,2004)主要是指ARM体系结构的交叉编译环境,源代码可从网络上下载,按照Readme和Makefile文件操作即可,交叉编译软件主要包括:
1.ARM-Linux compiler and linker
编译代码的工具,生成在ARM上运行的代码,本文采用是2.95.2版本。
2.Bin utilities
主要包含一些辅助开发工具,GNU的链接器ld、汇编代码编译器as、用来将文件打包重组的ar等工具。
3.Glibc Library
包含编译器使用的C函数库和针对Linux的线程库。
嵌入式系统通常是一个资源受限的系统,因此直接在嵌入式系统的硬件平台上编写软件比较困难,目前一般采用的方法是在通用计算机上编写程序,本文采用的是宿主机+目标板的开发模式,宿主机为PC+Red Hat9.0,目标板为三星公司的S3C2410+嵌入式Linux,版本为2.4.18-rmk7。
宿主机(HOST)目标板(TARGET)的开发模式如图1示:
(三)引导装载程序的设计与实现
引导装载程序(Bootloader)通常是在硬件上执行的第一段代码,被用作系统从硬件启动到操作系统启动的过渡,是嵌入式系统中必不可少的一段程序,它相当于PC机中的BIOS和Loader,用于初始化硬件和启动操作系统。
将引导装载程序装到目标闪存中,将进行下面的初始化工作:
1.初始化CPU速度;
2.初始化内存,包括启用内存库、初始化内存配置寄存器等;
3.初始化串行端口;
4.初始化网络接口;
5.启用指令/数据高速缓存;
6.设置堆栈指针;
7.设置参数区域并构造参数结构和标一记(这是为了内核在标识跟设备,页面大小,内存大小以及更多内容时要使用引导参数);
8.执行POST(加电自检)来标识存在的设备并报告任何问题;
9.伪电源管理提供挂起/恢复支持。
最后,等待准备接收来自主机命令、内核和文件系统。本系统所采用的Bootloader是VIVI,来自韩国MIZI公司,源代码完全开放,可在网上下载。
(四)内核设计与实现
ARM-Linux内核(纪纯杰,2002)作为系统的核心,负责管理系统的进程、内存、设备驱动程序、文件系统和网络系统TCP/IP网络等的支持与实现,是模块化的机制,决定着系统的各种性能,可以配置和建立自己的内核。
ARM-Linux内核编译的主要步骤:
1.安装内核源代码
本文所采用的Linux-2.4.18-rmk7.tangz,是基于2.4.18内核和rmk7补丁,将其拷贝到/src/arm目录下,利用下面的命令将其解压缩到当前目录:
tar xzvf Linux-2.4.18-rmk7.tar.gz
解压缩完毕之后,ARM-Linux源代码目录为//src/arm/linux-2.4.18,然后设置内核源代码目录下的Makefile文件,主要设置两个地方:ARCH和CROSSCOMPILED
ARCH:= arm; 表示目标板为arm
CROSS_ COMPILE; 交叉编译工具的地址,本文安装路径为:
usr/arm/2.95.2/bin/arm-linux
2.配置内核
由于ARM-Linux内核采用模块化的组织结构,因此可以根据自身硬件的实际情况来增减内核的功能模块。另外,内核代码在系统运行时会常驻内存,而且减少内核中不必要的功能模块,可以减少系统的漏洞,从而可以获得更多的用户内存空间,大大提高系统的运行速度,增加系统的稳定性和可靠性。
3.编译内核
make dependfig:读取上一步配置过程生成的配置文件,来创建对应于配置的依赖关系树,从而决定哪些需要编译而哪些不需要;
make clean:删除前面步骤留下的文件,避免在编译过程中出错;
make:编译内核。
4.建立内核映像
make zImage生成的内核代码zlmage在目录\arch\arm\boot下,约600K
(五)文件系统YAFFS的移植与实现
本文采用NAND Flash是K9F56080C, YAFFS源代码从网站下载。
1.由于内核中没有YAFFS,所以需要自己建立YAFFS目录,并把下载的YAFFS代码复制到该目录下面。
Yaffs文件系统源代码相关文件及功能描述:
yaffs_ ecc.c ECC校验算法
yaffs_ fileem.c测试flash
yaffs_ fs.c文件系统接口函数
yaffs_guts.c Yaffs文件系统算法
yaffs_mtdifc NAND函数
yaffs_ ramem.c Ramdisk实现在内核的/arch/arm /mach-s3c2410/dcvs.c加如下3个头文件:
#inc 1 ude
#inc 1 ude
#inc 1 ude
2.修改fs/makefile,添加如下内容:
Obj$(CONFIG_YAFFS_ FS)+=yaffs/
3.在YAFFS目录中Makef le文件的内容为:
Yaffs-obj:=Yaffs_ fs.o yaffs- guts.o yaffs_ mtdif.o yaffs_ ecc.o
EXTRA_CFLAGS +=$(YAFFS_ CONFIGS)_ DCONFIG_ KERNEL_ 2 4
4.修改NAND分区。在mach-smdk241 O.c中找到找到mdk,default nand_part结构,修改nand分区,此分区要结合vivi里面的分区来进行设置,如下:
Static struct mtd_partition partition_info64k
{name:"vivi", Offset: 0,size: 000020000},
{name: "param",offset: 000020000, size:0x00010000},
{name: "kernel",offset: 0x00030000,size:0x001c0000},
{name: "root ",offset: 2*SZ_1M, size: 4*SZ_1M},
{name: "usr",offset: 6*SZ_1M, size: 003000001
};
5.配置内核时选中MTD和YAFFS支持,
6.编译内核并将内核下载到开发板的Flash中。
Yaffs文件系统测试:
(1)内核启动;
(2)在内核里面添加proc文件系统的支持,#cat /proc/filesystems
看到有关yaffs的信息: vfat dcvfs yaffs。
(3)在flash上建立YAFFS为根文件系统启动,改变在内核中改变启动参数:
param set linux cmd_line"noinitrd root=/dev/mtdblock3 init=/linuxrc
console=ttySAC0"
重新启动,嵌入式板就可以从flash启动YAFFS根文件系统了。
三、小结
本文介绍了嵌入式处理器和操作系统。由于嵌入式系统自身的特点使得其有独特的软件开发方法,需要构造适合的软件开发环境。我们的嵌入式平台所选用的SAMSUNG的S3C2410硬件平台,软件是嵌入式Linux操作系统,详细说明了在构造嵌入式系统中所要进行的建立环境及移植工作,包含交叉编译环境建立,启动程序VIVI,嵌入式Linux的内核以及文件系统YAFFS的移植,使得ARM-Linux系统能够正常启动,通过在超级终端里输入命令对系统进行控制。然后在对系统调试完之后,可将其固化在Flash里面,上电后即可自动运行。基于嵌入式的图像采集与无线传输的图像监控系统的研究,是适应当前嵌入式技术发展和实际市场需求而进行研究的。
参考文献:
[1]黎洪松,数字视频技术及其应用[M],北京:清华大学出版社,1997.67-87.
[2]纪纯杰、贺晓能,LINUX内核分析及常见问题解答[M].北京:人民邮电出版社, 20027(1):65-67.
[3]刘文黔,视频监控技术简介.现代通信,2003. (9):18-19.
[4]周立功等,ARM微控制器基础与实战.第一版.北京:航空航天大学出版社,20051-5.
[5]吴明晖,基于ARM的嵌入式系统开发与应用.第1版.北京:人民邮电出版社,2004.32-45.
[6]马忠梅等,ARM-Linux嵌入式系统教程,北京:航空航天大学出版社,2004:9-15.
作者简介:
张宝喜,男,中冶东北建设电装公司施工生产部,高级工程师。