嵌入式系统软件开发环境的建立
2024-06-03
来源:步旅网
第23卷第6期 2010年11月 机电产品开发与 崭 Devellopment&Innovation of Machinery&Electrical Products Vo1.23,NO.6 NOV.,201 0 文章编号:1002—6673(2010)06一-091—03 嵌入式系统软件开发环境的建立 于剑锋 (东莞职业技术学院机电工程系,广东东莞523808) 摘要:介绍了嵌入式Linux移植的方法和过程,给出了嵌入式开发环境下基于硬件平台ARM9的bootload— er、Linux内核移植的实现方案,该方案可为嵌入式系统的应用研究提供操作系统层面的支持。 关键词:嵌入式;ARM9;Linux 中图分类号:TP273 文献标识码:A doi:10.3969/j.issn..1002—6673.2010.06.035 0引言 对于嵌入式系统的开发,由于没有足够的资源在本 机(即目标系统)运行开发工具和调试工具,所以嵌入 1.1交叉编译环境建立 首先在宿主机上建 立交叉编译调试的开发环 境.下载交叉编译工具, 并解压在用户主目录下: #tar ixvf arm-linux- gcc一-3.4.1.Aar.bz2 式系统的软件开发采用一种交叉编译调试的方式,即宿 主机一目标机模式。 开发时使用宿主机上的交叉编译、汇编及连接工具 形成可执行的二进制代码(这种可执行代码并不能在宿 图1宿主机一目标机模式 导出/usr/lo.,eal/arm/3.4.1,bin到环境变量 vi/ete/p:,rofile 主机上执行,而只能在目标板上执行),然后把可执行 文件下载到目标机上运行。 嵌入式开发过程中另一个重要的步骤是调试目标机 在出现pathmunge的语句段后添加pathmunge/usr/ local/a]rm/3.4.1/bi“ #Path manipulation 上的应用程序。调试时的方法很多,可以使用串口,以 太网口等,宿主机和目标板的处理器一般都不相同,对 于本系统来说,宿主机为AMD处理器,而目标板为 SAMSUNG¥3C2410。进行嵌人式开发前第一步的工作 if『,SEUID =,01:then pathmunge/sbin pathmunge/usr/sbin pathmunge/usr/loca1/sbin pathmunge/usr/loea1/arm/3.4.1/bin 就是要在PC机安装Linux操作系统作宿主机,操作系 统选用了虚拟机Vmware Federa 8。 1嵌入式Linux系统移植 本系统硬件平台采用广州友善之臂计算机科技有限 公司设计生产SBC2410 V6开发板,它基于三星公司 ARM9处理器¥3C2410X,具有高性能、低功耗、接口 保存对profile的修改后,执行source/etc/profile就 0K了 可以运行aITU一-linu.一gcc—v则有如下显示: [e ̄ttlii, vi htc/ptmle f r口。‘.1“, ur|-4 ̄'Icc・v Reading specs I ron^sr/1 II/lrl/3.4.1/lii ̄b/Ic6rm-linux/3.4.1/s ̄cs C0tfitured ̄ith:/lork/cro3stooI.o.z;/b,ila/ar,-“nux/lcc-3.4.1llixl-2.3.2/tcc・ 3.4.1/confipte--tnrpt ̄rrl|nux ost:i686 stJc-lin x1nu ̄retix=/usr1] 丰富和体积小等优良特性。主机PC的开发环境为: VMware6.0+Fedora Linux8 Kernel version 2.6.23:gcc编 oc^I/lrI,3.4.1--with-headers:,u¥r/10cII,|rl,3.4.I/arr'llnnx/i ̄clutln・1IIh・loca I’refIx:,usr/I。cIl,.r_/3.4.t/nr,-Ilnux--dl,b| ̄".his—enIbIe-.threads-'poslx—’ n曩blo-s ¨ers:£  ̄.-enable*exn.ntextt"-enable-lnqua|ns=c.c¨"-e.blo-shared --enablr' ̄99--.able-qoq-"loq 译器为gee4.1.1:交叉编译器为arm—linux—gee3.4.1。宿 主机~目标机模式如图1所示。 Thread● lel:Do5ix |ec version 3.4.1 收稿日期:2010—09—27 1.2 V_Vi的移植 本系统采用的Bootloader是韩国MIZI公司为其 ARM9系列产品研发的vivi。在Linux下采用ilfash2410 作者简介:于剑锋(1979一),男,工学硕士,助教。研究 方向:数控与制造技术。已发表论文四篇。 91 ・制造业信息化・ 工具,将vivi写进Flash,之后再对其进行分区和配置. 且必须与内核的分区设置相对应,否则出错。 ilfash2410是Linux下通过JTAG接口烧写到BIOS 到Nand Flash的工具。使用JTAG接口下载程序,通过 一条JTAG电缆线连接ARM板和主机的并口,然后打 开扳子的电源开关。 #cd/usr/yu/Jflash 注:该目录下包含了Jlfash的源代码,运行“make clean”删除已经编译好的程序.运行“make”重新编译. 接着执行以下命令烧写ViVi,#JJlfash—s3e2410 ViVi/t-5。 注:Jflash针对于不同的Flash有不同的参数.本 系统采用64M的Flash,所以选择t=5。打开超级终端, 对vivi进行分区,并做相关配置。分区信息见表1。 分区配置完成之后,取下JTAG烧写板,插上USB 92 (2)修改配置内核,主要需要修改3个文件:①在 arch/arm/orach—s3c2410/devs.c文件中,指明分区信息以 及Nand Flash芯片支持:②在arch/arm/mach—s3c2410/ mach—smdk2410.C文件中进行修改,kernel启动时依据 对分区的设置进行初始配置;③在drivers/mtd/nand/ s3c2410.c文件中,在这里选择禁止内核ECC校验。具 体过程,这里不再赘述。之后对内核进行配置,如修改  ̄/Keonfig,以支持启动时挂载devfs文件系统,配置内 核产生文件.config等。 在linux2.6.14中没有提供s3c2410的驱动.在lin. ux2.6.14/drivers/input/touchscreen目录下新建s3c2410_ts. C驱动文件。 需要修改linux2.6.14/drivers/input/touchscreen目录下 的makefile文件.在文件的最后添加: obj一¥(CONFIG_TOUCHSCREEN一¥3C2410) += s3c241Ots.0 _还需修改linux2.6.14/drivers/input/touchscreen/Kcon. ifg、mach—smdk2410.C、devs.h,devs.c等文件,经过这些 修改,触摸屏驱动就已经完成。另外可以根据不同的需 求配置界面。进行有针对性的定制。 (3)编译内核,配置完成之后,编译生成。 1.4文件系统 YAFFS是一种13志型系统,在设计时充分考虑了 NAND闪存特点,提供了一种专门、高速的文件系统, 且能支持多种操作系统,是很好的选择。 通常/lib目录下的内容是系统启动需要的连接文件, 库中的文件和编译Busybox的编译器用到的库文件的版 本应该一致.否则编译出的程序不能运行。把Busybox 编译生成的程序的库文件复制gg/lib目录下,在/etc/pro ifle中指定库文件的路径,这样Linux根文件系统具备 了基本功能,把my_rootfs目录下根文件系统制作一个 映像文件下载到ARM板上,进入my_rooffs目录层,使 用以下命令。 #mkyaffsing my_rootfs my rooffs.img就生成了yaffs映 像文件,使用USB下载到板子上,这样嵌入式Linux操 作系统建立起来了。 2结束语 文中阐述了在基于ARM920T核的S3C24l0处理器 为核心的ARM9平台上移植Linux操作系统的环境和过 程,对移植的难点进行了重点分析,这对ARM9平台 上的嵌入式Linux移植具有较好的实用价值和参考价 值,同时对于其它平台上的嵌入式Linux移植的方法也 具有一定的借鉴意义。 (下转第95页) ・制造业信息化・ 工具,例如Oracle SQLLoader和DB2的autoloader等, l 统是不太可能的。数据源系统在交付后,会不时的增删 这样可以保证较高的装载效率。 f 和修改,而这会导致数据源的定义发生变化。往往要花 I 大量的时间去寻找原因。 r 2数据质量控制 ETL过程要有处理这些质量有问题数据的保证。首 先一定要正面这些脏数据,是丢弃还是处理,无法逃 质量问题原因:“不要绝对的数据准确.但要知道为 I 避。如果没有质量保证,那么在这个过程中,错误会逐 什么不准确。”这是在构建数据仓库过程中对数据准确性 J 渐放大,最后导致数据质量失控。其次必须有一个对质 的要求。确实,对绝对的数据准确谁也没有绝对的把握。 0首先在数据源那里。已经很难保证数据质量了,这一点 是事实。导致数据质量问题的原因可以分为下面几类: 量的度量方法,高质还是低质,不能靠感官感觉。理论 上要求输入输出的指标应该完全一致,但是对于有误差 l 的数据,必须找到原因。具体建议为:l ,2.1数据格式错误 例如缺失数据、数据值超出范围或是数据格式非法 (1)提供框架:在质量度量方法的前提下,可以建 立一个数据验证框架提供框架。数据验证不是一次性工 等。要知道对于同样处理大数据量的数据源系统,他们 { 作,而是每次ETL过程中都必须做的。因此必须有一个 通常会舍弃一些数据库自身的检查机制。例如字段约束 l等。他们尽可能将数据检查在入库前保证,但是这一点 l框架,自动化验证过程,并提供扩展手段,让实施人员 能够增加验证范围。 是很难确保的。这类情况诸如身份证号码、手机号、非 :日期类型的日期字段等。 }(2)规范流程:有一种ETL数据质量问题是由于人 2.2数据一致性 工处理导致的,其中最主要原因是流程不规范。规范流 l 程是提高实施效率的关键工作。 同样,数据源系统为了性能的考虑,会在一定程度 0(3)加强稽核:数据质量的控制,最后的手段还是 上舍弃外键约束,这通常会导致数据不一致。例如在每 须靠稽核。只有经过稽核和业务的验证,才能说数据质 月的帐务表中会出现一个用户表中没有的SERVICE—ID, l有些代码在代码表中找不到等。 f量是得到保证和控制的。所以开发人员必须要有一定的 :数据敏感性,要知道什么样的数据才是在合理范围之 2.3业务逻辑的合理性 内,要在前端业务人员发现不合理之前找到原因,把数 由于各种原因,数据源会存在违反业务逻辑的数 f 据质量可能引起的问题降至最低。 据,例如用户开户日期晚于用户销户日期,停机用户仍 }{I 然产生话费等。 :3结束语 l 2.4规则错误 一 方面设计人员对数据源系统理解的不充分,导致 J数据仓库系统已经成为企业保证持续发展的有效手 段,数据仓库的建立和实施是一件复杂的系统工程。本 规则理解错误。另一方面是规则的描述,规则是依附于 }文讨论了建立数据仓库过程中的重要环节--ETL模块设 目标字段的,但是规则不能总是用文字描述,必须有严 格的数学表达方式。 计原理和方法,以及发生数据质量的原因及控制方法。: ETL工具在不断发展,业界成熟的ETL商用工具,如 l daItastage和powermart,总体呈现出通用化、高效化、智 +2.5 ETL开发错误 即时规则很明确,ETL开发的过程中也会发生一些 错误。例如对于一个分段值,开区间闭区间是需要指定 能化三大发展趋势。ETL过程是企业数据集成的必然而 I又艰苦的历程,也是揭示数据潜在价值的唯一途径。 的,但是常常开发人员没注意,一个大于等于号写成大 参考文献:l 于号就导致数据错误。在整体ETL流程没有完成之前。 【I1】W.H.Inmon.数据仓库管理[M].电子工业出版社,2000,5. 通常会手工运行ETL过程.发生的错误可能是误删了数 据、重复装载数据等。 l 1 [:2]程跟上.基于公共仓库模型的ETL系统的研究和应用[D].南京:南 京航空航天大学,2005. 2.6数据质量控制 构建一个数据仓库系统,要做到完全理解数据源系 [l3]Zhang X F,Sun W W,Wang W,et a1.Generating incremental ETL pro— clesses aut。matically【J].c。mputer and c。mputational Sciences,2006. [2]苗忠良.Qtopia编程之道.博客http://miaoz1.spaces.1ive.COi ̄l [3】韦东山.嵌入式Linux应用开发完全手册[M].北京:人民邮电出版 社.2008. (上接第92页) 参考文献: …1于明,范书瑞,曾祥烨.ARM9嵌入式系统设计与开发教程[M】.北 京:电子工业出版社.2006.4 [4]赖于树.ARM微处理器与应用开发[M1.北京:电子工业出版社,2007. 95