版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、II Abstract With the development of the information technology, embedded systems has been broadly appliedd in each fielld of famllily aand iindusttry. AAnd tthe iincreaasinglly widde rannge off appplicattions,the complexxity of eembeddded ssystemms iss connstanttly iincreaasing. Noww,the embeedded o
2、perratingg sysstem has beccome oone off the most imporrtant part of thhe embbeddedd systtem. In the embeddded ooperatting ssystemms,Thee Linuux opeeratinng sysstem has bbecomee morre andd morre attenedd,becauuse off its open sourcce,smaall coore,goood peerformmance;whats morre,Linnux2.66 intrroducee
3、s many nnew ffeaturres tthat make it an eexcelllent and suitaable operaating systtem ffor eembeddded computiing. Undouubtedlly, tthe eembeddded LLinux operratingg sysstemwiill bbring largge ecconomiic vaalue and appplicattion pprospeects. This tthesiss is accoomplisshed basedd on the autoomaticc met
4、ter rreadinng syystem for a ppower companyy in Nanjjing, and the main conttributtion is tto inntroduuce ttranspplantaation of the embeddded Linux ssystemm, as welll as tthe drriver devellopmennt of correespondding pperiphheral devicce. TThis ppaper accompllish the transsplanttationn of the embeedded
5、 Linuux syystem baseed onn AT991SAM99260EKK,and includiing buuild tthe deeveloppment platfform,bbuild the eembeddded crross-ccompille envvironmment; Baseed on thee anaalysiss of the bootting and loadiing pprocesssBoootLoadder oof thhe emmbeddeed system,impleementss the transsplanttationn of UUboot o
6、n thhe plaatformm. Aftter thhe dettailedd anallysis of thhe kernel struucturee andd boooting proccess of LLinux systtem, accorrding to the termiinal hardwware platforrm,anaalyze the proccess of ttranspplantaation and cut of the Linuxx kerrnel. In accorrdancee witth the appplicaation requuiremeents,w
7、we seelect the YAFFFS2 aas ouur rooot ffile syeteem,andd dettaileddly introduuce tthe pprocesss off thee impplemenntatioon off thee YAFFFS2 file systtem. Finallly,deevelopp thee driverss of the relaated equippment, esppeciallly tthe LLCD(UCC1698UU), iimprovve thhe orriginaal waay off direct accesss
8、GPIIO porrt,andd combbiningg the GPIO and fframebbufferr to ddeveloop thee new driveer. Thhe framebuuffer is thhe cacche foor dissplay, writte datta to the ccache, the contrrollerr willl autoomaticcally read the daata ffrom the cachee andd dissplay. Thee devvelopmment of GGUI bbased on Qt/Emmbeddeed
9、 neeed tthe supportt of frammebufffer ttechnoology. Butt forr thee typpe off LCDD, thhe diisplayy conntrolller ccan nnot automatticallly reead tthe ddata from the cachhe, uuse tthe kkernell timmer tto uppdate the frammebufffer ffor real-tiime diisplayy and devellop thhe GUII of ttest bbased on Qtt/E
10、mbeedded. Key worrds: eembeddded Liinux ssystemm, ARMM9,YAFFFS2,ddriverr,FrammeBufffer I 摘要 随着信息技术的的不断发展,嵌嵌入式系统已已经广泛应用用于工业和家家庭的各个领领域。其复杂性也随之不断断增加,嵌入入式操作系统统成为了嵌入入式系统中最最重要的组成成部分之一。 在嵌入式操作系系统中,Liinux 操操作系统得到到了越来越多多的关注,LLinux 系统开源、具具有精简的内核以及及优异的性能能。另外,LLinux22.6 包含含许多新的特特性,为其在在嵌入式领域域的应用提供了更多更更好的支持,嵌嵌入式
11、Liinux系统统将会有巨大大的市场价值值以及应用前前景。 本文基于南京某某电力公司自自动抄表系统统,对负荷控控制管理终端端平台进行了了 Linuux 系统移植以及对 LLCD 等外外围设备的驱驱动开发。本本系统的 CCPU 采用用 ATMEEL 公司的的以 ARMM926T为内核的 ATT91SAMM9260EEK 处理器器。采用了基基于 2.66 内核版本本的嵌入式 ARM Linuxx,最终完成基于 ARRM9 的嵌嵌入式 Liinux 系系统移植开发发。具体包括括搭建开发平平台,建立嵌嵌入式交叉编译环境;在分分析嵌入式系系统引导加载载程序 BoootLoaader 的的基础上,结结合本
12、目标板板修改 Ubboot源码并进行 UUboot 的编译和移移植;通过分分析嵌入式 Linuxx 系统的内内核结构和启启动流程,实实现了针对本目标标板的内核源源码修改、编编译以及移植植;同时按照照应用需求,选选择 YAFFFS2 文文件系统作为根文文件系统,并并给出根文件件系统实现的的过程;最后后开发终端外外围设备相应应的驱动程序,重点围围绕 LCDD(UC16998U)展开开,改进原来来直接读写 GPIO 口的驱动方方式,采取直接读写 GPPIO 和帧帧缓冲相结合合的方式开发发新的驱动程程序。帧缓冲冲是一块显示示缓存,通过过向该缓存中写入数数据,显示控控制器就会自自动的从中读读取数据并显显
13、示出来,在在 LCD 设备上基于于Qt 的图形用用户界面的开开发也需要帧帧缓冲技术的的支持。但对对于本类型的的 LCD,显显示控制器并并不能自动完成缓缓冲区数据读读取,本文从从软件的角度度借助内核定定时器最终完完成缓冲区更更新并实时显示,最后后开发基于 Qt/Emmbeddeed 的用户户图形测试界界面。 关键词: 嵌嵌入式 Liinux 系系统,ARMM9 ,YAFFSS2 文件系系统,驱动,帧帧缓冲 IIII 目录 第一章 绪论论 1 1.1 选题题背景以及研研究内容 11 1.1.1 选题背景 1 1.1.2 研究内容 2 1.2 课题题来源以及论论文的主要工工作 4 第二章 搭建建嵌入
14、式 LLinux 开发平台 5 2.1 开发发平台硬件参参数 55 2.2 开发发宿主机交叉叉编译环境的的建立 55 2.2.1 aarm-noone-Liinux-ggnueabbi-gccc 的安装 6 2.2.2 TTFTP 和和 NFS 的配置 6 2.3 本章章小结 66 第三章 BoootLoaader 的的设计与移植植 77 3.1 BoootLoadder 概述述 7 3.2 BoootLoadder 的操操作模式 8 3.3 Ubooot 的源源码结构 8 3.4 Ubooot 的编编译及其在目目标板上的移移植 9 3.4.1 UUboot 的源码修改改以及编译 9 3.4.
15、2 UUboot 的移植12 3.5 本章章小结 13 第四章 Liinux 内内核的编译及及其移植14 4.1 嵌入入式操作系统统选择 14 4.2 Linnux 内核核结构及启动动过程15 4.2.1 LLinux 内核的启动动过程 115 4.3 Linnux 内核核源码的修改改、编译及移移植17 4.3.1 基于目标板板修改 Liinux 内内核源码 117 4.3.2 根据需求裁裁剪 Linnux 内核核22 4.3.3 LLinux 内核的移植植 225 4.4 本章章小结 27 第五章 嵌入入式 Linnux 根文文件系统 29 5.1 嵌入入式 Linnux 的文文件系统的结结
16、构 29 5.2 文件件系统选择及及编译工具简简介 30 5.2.1 根文件系统统选择 30 5.2.2 BBusyboox 简介 30 5.2.3 BBusyboox 简介函函数库及其安安装 31 5.3 YAFFFS2 文文件系统移植植的实现 331 5.3.1 YYAFFS22 文件系统统的创建 31 5.3.2 YYAFFS22 文件系统统的移植 34 5.4 本章章小结 35 第六章 嵌入入式 Linnux 设备备驱动程序36 6.1 嵌入入式 Linnux 设备备驱动程序概概述 36 6.1.1 嵌入式 Liinux 驱驱动程序简介介 366 6.1.2 设备驱动程程序框架 37
17、6.2 初始始集中器 LLCD 设备备驱动程序分分析 39 6.3 改进进的基于帧缓缓冲的 LCCD 驱动程程序 41 RResearrch onn Systtem Trranspllantattion aand Drriver Developpment of Emmbeddeed Linnux Baased oon ARM9 Thesis Submiitted to Naanjingg Univversitty of Postss and Telecommmuniccationns forr the Degreee of Master of Enngineeering By Nie Hepp
18、ing Superviisor: Prof. Qiu Xiaohhui April 22013 京京邮电大学硕硕士研究生学学位论文 第一章 绪论 3 为了满足集中器器的要求,充充分发挥集中中器承上启下下的作用,我我们选择嵌入入式 Linnux 操作作系统做为集中器的的操作系统。主主要的研究内内容如下: (1)根据终端端需要对嵌入入式 Linnux内核进进行修改。 确定了操作系统统,在对 LLinux源源码以及启动动流程的基础础上,还要对对选择的嵌入入式 Linnux系统进行定制以以达到我们的的要求。比如如涉及到的集集中器的通信信方式方面,集集中器远程抄抄表的通信方式既有有无线方式,又又包含有线
19、方方式13144。无线方式主要要和手持终端端进行近距离离的通信,比如红外外通信、蓝牙牙通信等。有有线方式包括括各种串行总总线技术(RRS232、RS4855、CAN总线等)、电力力线载波、公公共电话网等等。相比其他他有线通信方方式,RS4485 通信信方式支持多多节点、远距离以及及灵敏度高,且且只对接口的的电气特性做做出规定,不不涉及接插件件、电缆或协协议,在此基础上用户户可以建立自自己的高层通通信协议,RRS485 已成为工业业应用中数据据传输的首选选15-17。所以本集中器器也应支持 RS4855 通信方式式,这就需要要对内核源码码进行修改以以驱动终端外围的 RS4485 端口口。 (2)
20、YAFFFS2 文件件系统选择 下一步要选择一一个合适的文文件系统来管管理文件。YYAFFS 文件系统是是专门针对 NAND 闪存设计的嵌入式式文件系统,目目前有 YAAFFS 和和 YAFFFS2 两个个版本,因为为 YAFFFS2 能更更好的支持大容量的 NNAND FLASHH 芯片,同同时考虑集中中器的进一步步的发展,需需要大容量的的 NANDD FLASH 来来满足业务需需求,在这里里我们选择 YAFFSS2 文件系系统。 (3)围绕 UUC16988U 开发基基于帧缓冲技技术的驱动程程序 成功编译和移植植 BoottLoadeer 以及嵌嵌入式 Liinux 内内核和文件系系统后,
21、嵌入入式 Linnux 系统统就可以正常启动动和运行。为为了驱动外设设能正常工作作,还要针对对本集中器所所有外设,开开发相应的驱动程序,本本文以 LCCD 设备为为例来讨论驱驱动的开发过过程。针对本本目标板的 LCD,对对原来采用的直接读读写 GPIIO 口驱动动的方式进行行改进,采用用基于直接读读写 GPIIO 口驱动动与帧缓冲驱动相结合的方方式进行。在在驱动支持帧帧缓冲技术的的基础上,在在 LCD 设备上就可可以开发基于于Qt/Embeedded 或者 MinniGui、GtkFBB 的图形用用户界面,相相比于靠描点点绘制的图形形用户界面,界面会较友好,有有层次感,更更方便用户和和集中器的
22、交交互,用户体体验较好,同同时可移植性性也较强。除此之外外,基于 QQt/Embbeddedd 或者 MinniGui、GtkFBB 更方便开开发高级图形形界面或图形形用户程序。FrrameBuuffer 译作帧缓冲冲,是基础图图形设备,是是一种专门为为开发高级图图形界面或者图形应用程序序提供基本函函数库的驱动动程序接口。在在此技术中,显显示设备会被被抽象成为一一段内存缓冲区,我我们通过不停停的向内存缓缓冲区中写入入数据, 显示控制器器就自动的从从中读取数据并显示出来来18199,这样就屏蔽了了显示设备底底层的差异,对对应用程序的的开发人员来来讲,就不需要对底层层的驱动深入入了解,应用用程序开
23、发人人员的开发效效率也会提高高。通过阅读读本 LCDD京邮电大学学硕士研究生生学位论文 第一章章 绪论 1 第一章 绪论 1.1 选题背背景以及研究究内容 1.1.1 选选题背景 传统电力网供电电系统依靠人人力对商业用用电和生活用用电进行抄读读,不仅人工工成本高,而而且报表生成周期期长、效率低低,根据报表表的统计结果果分析用户需需求也因此比比较慢,不能能及时反映系统用电量量的需求分布布情况,致使使抄表结果对对供应系统网网络的优化缺缺乏参考价值值,不但降低供电效率率,而且还会会影响供电质质量12。此外,传统抄抄表方式依靠靠人力抄表,抄抄取电量数据的耗时较较长,且无法法实时的监控控所有用户电电表数
24、据,这这样就使得所所获取的电表表数据不精确,所获得得的整个电网网数据的可统统计性比较弱弱,针对电网网的改良,此此数据的参考考价值也不高3-5。与此同时,传传统抄表系统统对电网中漏漏电、窃电现现象也不能进进行正确的评评估与确认,抄表时还需需要抄表人员员到用户家中中抄读电表数数据,这无疑疑给用户带来来一定的麻烦烦,耗费大量的人力财财力,可能还还会引起用户户的反感和不不安,还有可可能给犯罪分分子以可乘之之机6。 鉴于传统人力抄抄表和数据分分析系统的上上述局限,迫迫使人们寻找找一种高效率率、高可靠性性的抄表方式,以以便能够及时时的获得所有有用户某个时时间的用电数数据,完成对对用电数据的的计算和分析。
25、自动抄表系统(Autommatic Meteer Reeadingg-AMR)7是在传统人工抄抄表方式不能能满足生产和生活需要的情情况下产生的的,一般是指指利用微电子子、计算机网网络、传感等等技术自动读读取和处理表数据,将将城市居民水水、电、气信信息进行综合合处理的系统统8。现在发展中的的自动抄表系系统具有如下特点点910: (1)高效率 电力网网依靠人工对对工农业生活活用电进行数数据采集,消消耗大量人力力物力,抄表表周期相对比较长长,效率极其其低。而自动动抄表系统可可以替代大量量的人力物力力,节约了资资源,获得了一定的经经济效益。 (2)数据处理理的周期缩短短 使用自自动抄表系统统,即使是无
26、无人值守的情情况下,都可可以每天定点定时的监控区区域范围内的的用户用电情情况,获得用用电数据,同同时也可以对对所获得的数数据存储和分析处理,整整个过程基本本不受人工干干预,比起人人工统计抄表表数据或者是是生成数据报报表,数据处理周期大大大缩短。 (3)精确度高高 参考性强强 传统人人工抄表方式式依靠人力抄抄取电量数据据,只能逐个个的进行抄IIV 6.3.1 帧缓冲驱动动简介 41 6.3.2 改进的基于于帧缓冲的 LCD 设设备驱动设计计444 6.3.3 帧缓冲驱动动程序的测试试 47 6.4 本章章小结 48 第七章 总结结与展望 49 参考文献51 附录 1 程程序清单 53 附录 2
27、攻攻读硕士学位位期间撰写的的论文54 致谢55 京邮邮电大学硕士士研究生学位位论文 第二章 搭建嵌入入式 Linnux 开发发平台 5 第二章 搭建嵌嵌入式 Liinux 开开发平台 2.1 开发平平台硬件参数数 集中器采用 AATMEL 公司的 ATT91SAMM9260EEK 作为处处理芯片,AAT91SAAM92600EK 是一款 ARM9926EJ-S 内核的的工业级芯片片,带有 UUSB2.00 协议的 USSB HOSST 和 Deviice 接口口,支持全功能的 9 线串口口等。 开发板硬件资源源: 由 AT91SSAM92660EK 数数据手册可得得核心板资源源参数: AT91
28、1SAM92260EK(ARM9226EJ-SS),主频 1880M(达到到 200MMIPS),工工业级; 8K 字字节的高速数数据缓存器,8K 字节的高速指令缓冲区; 64M Bytess NANDD FLASSH; 32M Bytess SDRAAM; 串口 一个 DDEBUG 口; 三个标准准 RS2332 口; 三个标准准 RS4885 口; 网口 一个 1100M 网网口; USB 接口口 一个 UUSB HOOST(USSB 2.00 Fulll Speeed)接口; 一个 UUSB Deevice(USB 22.0 Fuull Sppeed)接接口; 其他设备 160*160
29、LLCD 显示示设备; RTC 实时时钟钟(带电池); 按键键盘盘; 2.2 开发宿宿主机交叉编编译环境的建建立 交叉编译是嵌入入式开发过程程中的一项重重要技术,一一般的嵌入式式目标系统没没有足够的资资京邮电大学学硕士研究生生学位论文 第一章章 绪论 4 的数据手册,UUC16988U 的显示示控制器并不不能自动更新新这段内存缓缓存区,不能能实时的将缓缓冲区的数据更新到到屏幕。为了了在本 LCCD 上开发发出基于 QQt/Embbeddedd 的图形用用户界面,方方便用户和集中器的交交互,在这里里借助内核的的定时器将帧帧缓冲区的数数据实时更新新至屏幕,完完成基于 FrameeBuffeer 的
30、驱动动开发。 1.2 课题来来源以及论文文的主要工作作 针对嵌入式 LLinux 系统移植存存在的问题,结结合南京某公公司负荷控制制管理终端平平台的开发工作,本文的的章节安排如如下: 第一章是绪论内内容,结合本本课题选题背背景引出本文文研究内容。 第二章重点介绍绍搭建嵌入式式 Linuux开发平台台,建立交叉叉编译环境,为为后续 BoootLoaader、kernel 及文件系统统的编译和移移植做准备。 第三章对 BoootLoaader 的的结构,启动动流程进行了了分析;针对对选用的 UUboot 不支持所选选YAFFS2 文件系统烧烧写的问题进进行了研究,修修改 Ubooot 源码码并重新
31、编译译,最终将编编译生成的Uboot 镜镜像移植到本本目标板中,修修改后的 UUboot 可稳定在目目标板中运行行。 第四章分析 LLinux 内核的源码码结构以及启启动过程20211,结合本目标板板,对内核源源代码进行修改:根据据需要为 LLinux 内核添加分分区表信息;在 Linnux 内核核源码中添加加 RS4885 模式串口设备驱动代代码,使得目目标板支持 RS4855 远程通信信方式,;将将 YAFFFS2 文件件系统的相关关补丁添加到内核源源码;修改内内核根目录下下的 Makkefilee 文件并对对内核进行裁裁剪,使生成成的内核既满足我们的要要求,占用空空间又小;最最后借助于
32、TFTP 软件在目标标板进行移植植。 第五章介绍嵌入入式文件系统统结构,尤其其是 YAFFFS2 文文件系统,介介绍了文件系系统制作工具 Busybbox,并详详细给出了该该文件系统的的编译和移植植过程。当 Linuxx系统启动时时,可以成功功的挂载 YAFFFS2 文文件系统并能能稳定的运行行。 第六章分析嵌入入式设备驱动动开发流程,重重点对驱动程程序中的帧缓缓冲技术进行行了研究。针对本目标板,采采取直接读写写 GPIOO 口和帧缓缓冲相互结合合的方式来开开发驱动,并并且在该 LLCD设备上,改善原原来采用的描描点方式绘制制的图形用户户界面,采取取基于 Qtt/Embeedded 的图形用户
33、界面,也需要要支持帧缓冲冲技术。但本本目标板上的的 LCD 设备显示控控制器并不支支持缓冲区的的自动更新,在这这里我们借助助内核定时器器完成自动更更新并实时的的显示到 LLCD 界面面上。最终开开发了基于 Qtt/Embeedded 的用户图形形界面验证该该帧缓冲驱动动的可靠性、稳稳定性,结果果表明该驱动可以稳定的的运行于嵌入入式 Linnux系统中中。 第七章总结与展展望,对本文文所完成的工工作进行了总总结;并展望望嵌入式领域域的未来。京京邮电大学硕硕士研究生学学位论文 第二章 搭建嵌入入式 Linnux 开发发平台 6 源供编译过程使使用,就需要要借助主机,在在主机中完成成编译,采用用交叉
34、编译技技术,可以利利用主机足够的资源源编译成功后后移植到目标标机上运行。Linux下的交叉编译环境包括: (1)针对目标标系统的编译译器 (2)针对目标标系统的二进进制编译工具具 (3)目标系统统的标准 cc 库 (4)目标系统统的 Linnux 内核核头文件 2.2.1 aarm-noone-Liinux-ggnueabbi-gccc 的安装 本系统中 Ubboot、kerneel、文件系系统的编译工工具链都是统统一的,所选选择的都是arm-nonne-Linnux- ggnueabbi- gccc,我们在在这里选择下下载制作好的的交叉编译链链,然后稍作作修改就能为我们所用。下下载的压缩包包
35、:arm-2008qq1-1266-arm-none-Linuxx-gnueeabi-ii686-ppc-Linnux-gnnu.tarr。 解压后里面的 arm-nnone-LLinux-gnueaabi-gccc 就是我我们要用的交交叉编译链。 在/etc/bbash.bbashrcc 中修改 PAATH 环境境变量,添加加工具链的路路径:$ eexportt PATHH=$PATTH: /home/tteen/aarm- llinu/aarm-20008q1/bin,保保存退出,重重新登录 rroot 时时新的环境变变量就会生效效。 2.2.2 TTFTP 和和 NFS 的配置 在进行移
36、植内核核镜像文件和和根文件系统统时,Ubooot 通过过 TFTPP 协议将二二者下载到目目标板的 SDRAMM 中,因此此要在宿主机机上设置 TTFTP 服服务器。当利利用 NFSS 文件系统统共享文件时时,还需在宿主机上上设置 NFFS 服务器器。在本系统统中,宿主机机的 IP 为 10.110.1033.38,网网关为10.10.1103.200 ,子网掩掩码为 2555.2555.255.0 ,目标标板的 IPP 为 10.110.1033.39 。 NFS 目录/home/tteen/nnfsrooot。 2.3 本章小小结 本章首先介绍了了硬件开发平平台参数,然然后详细阐述述了交叉
37、编译译环境搭建的的过程,同时时在Linux 主主机上配置了了 TFTPP 和 NFS 服务器,为为后续嵌入式式源码编译、调调试以及最终终镜像移植做好准备。京邮邮电大学硕士士研究生学位位论文 第三章 BBootLooader 的设计与移移植 7 第三章 BoootLoadder 的设设计与移植 3.1 BoootLoadder 概述述 在嵌入式 Liinux系统统中,通常可可分为四个层层次,这四个个层次自上而而下依次是:用户应用程序,文件系统统,操作系统统内核,引导导加载程序。其其中引导加载载程序是系统统加电后运行行的第一段软件代码码,由固件中中的 Booot 代码和和 BoottLoadeer
38、 两大部部分组成。其其中 BoootLoadder 运行在操作系统之之前,为操作作系统的调用用做准备。在在调用操作系系统之前,BBootLooader 完成的工作主要有初始始化目标板软软硬件设备、建建立内存映射射图、设置好好系统软硬件件环境22。图 3.1给出了整个 BBootLooader 的工作流程程。 经过矢量表跳转转,进入特权模式,关闭闭中断 一个事件引起 boot(例例如上电、复位、看看门狗超时) 初始化处理 清除指令和 ccache 重定位Ubooot后半部代代码到内存,跳转执执行 建立堆栈和初始始化数据段 初始化并检查硬硬件系统其他部件(串口口、网口) 重定位 Ubooot 后半
39、半部代码到内存,跳转转执行 建立堆栈和初始始化数据段,初始化并检检查硬件系统(串口、网网口) 显示各种检测信信息及 booot 菜单单 寻找内核并引导导,依次寻找找下列设备(串口、网网口、flaash) 将操作系统内核核引导到 SDRAAM 操作系统内核拷贝到 flaash? 拷贝到 fflash 跳转到 SDRRAM中操作系统入口口 N 图 3.1 BootLLoaderr 工作流程程图 Y 京邮电大学学硕士研究生生学位论文 第一章章 绪论 2 读,不能获得某某一个时刻所所有用户的用用电统计数据据。这样得到到的数据参考考性不大,不不方便供电部门对用电电进行合理的的分配管理。正正是基于自动动抄
40、表系统如如此多的优势势,近年来无无论是国内还是国外外,对自动抄抄表系统的研研究一直是热热点之一。一一般自动抄表表系统由主站站、集中器、采集器、终终端电能表以以及数据传输输通道构成,一一般远程电力力抄表系统的的系统架构如如图 1.1 所所示: 图 1.1 自自动抄表系统统架构 我们在这里研究究的是自动抄抄表系统中的的集中器,因因为集中器的的开发是远程程抄表系统开开发的核心任务之之一11,集中器在整个个系统中的地地位十分重要要,相当于人人体脊椎,起起承上启下作用。集中器器向上连接着着主站服务器器,负责接收收并下达主站站服务器命令令,对电网的的数据进行监控或者抄抄读采集器数数据;向下连连接着采集器器
41、或者是终端端电表,读取取采集数据或或终端电表数据进行存存储并上传至至主站服务器器以便进行数数据处理。除除此之外,集集中器还应具具有显示、统计以及报报警功能等,以以便能实现现现场调试检查查与设置12;同时,集中器器也可以和不不同的接口设备进进行相连,如如图 1.11 中的手持持终端。鉴于于集中器在整整个自动抄表表系统中的关关键地位,无论是对对硬件平台还还是软件平台台,对集中器器系统进行改改进都是积极极的意义。本本文以南京某电力公司司的集中器为为背景,展开开对集中器的的软件部分的的研究。 1.1.2 研研究内容 本文研究的集中中器,硬件平平台是南京某某电力公司提提供的,该集集中器采用的的处理芯片是
42、是ATMEL 公公司生产的 AT91SSAM92660EK,内内存 32MM,配有一个个 160*160 的的 LCD(UC16998U)。京京邮电大学硕硕士研究生学学位论文 第三章 BBootLooader 的设计与移移植 8 3.2 BoootLoadder 的操操作模式 一般来讲,BoootLoaader 有有两种操作模模式,包括启启动加载模式式和下载模式式。这种操作作模式的划分是对于于开发人员来来说的。 (1)启动加载载模式 即自主模式,整整个启动过程程无需用户的的介入,BoootLoaader 自自主将操作系系统从目标机机上的存储设备中加加载到目标板板的 SDRRAM 中运运行。这种
43、自自主启动加载载模式,是最最终发布版本本,也是我们用户在在日常生活中中所看到的启启动模式。 (2)下载模式式 在该模式下,目目标机的 BBootLooader 将通过串口口或者网口等等方式与宿主主机通信并下下载文件(包括内核镜镜像文件、根根文件系统镜镜像等)。从从宿主机下载载的文件通常常首先保存在在目标机的内存中,然后后根据实际情情况在内存中中执行或者写写到目标板上上的 FLAASH 等非非易失存储设设备中。当 BoootLoadder 工作作在此模式下下时,通常需需要向它的终终端用户提供供相应的命令令接口23。 本系统中使用的的是 Ubooot,既支支持启动加载载模式,又可可以通过用户户的介
44、入进入入下载模式。在两种模式间,用用户可以根据据需要进行切切换。Ubooot 在启启动时,首先先默认进入的的是启动加载载模式,但是在启启动 Ubooot 后、加加载内核镜像像文件之前,Uboot 会提供一定时间等待用户的干预,该时间是由由宏 CONNFIGBOOOTDELLAY 定义义的,若用户户进行了干预预,则会切换换到下载模式,反之继续执执行加载内核核镜像文件。 3.3 Ubooot 的源源码结构 Uboot,全全称 Uniiversaal Booot Loaader,是是遵循 GPPL 条款的的开放源码项项目。其源码码目录以及编译形式与 Linuxx内核及其的的相似。除此此之外,Ubbo
45、ot 可可靠性高、稳稳定性强、适适用性好,支持多个处理器器系列、多种种嵌入式操作作系统内核;同时对开发发人员来说,强强大的网络技技术支持,丰富的开开发调试文档档,尤其是丰丰富的设备驱驱动源码,使使得开发使用用都较为方便便。所以本项目中选择择 Ubooot 作为目目标板的 BBootLooader。 从网上下载 UUboot 源码包:u-boot-1.3.44,在 Linnux 系统统中解压就可可得到全部的的 Ubooot源程序。顶层目目录下还有很很多个子目录录,针对不同同的硬件平台台,这些目录录分别存放和和管理不同的源程序。下下面列出了几几个主要子目目录。 Common:与环境、命命令、控制台
46、台等相关的通通用的多功能能函数的集合合,多是对下下一层驱动程序的进一步步安装。 京邮电大学学硕士研究生生学位论文 第三章 BBootLooader 的设计与移移植 10 里面可以看到相相关的支持,如如图 3.22 所示: 其中at91ssam92660ek_nnandfllash_cconfigg,说明是从从NAND FLASHH开始启动,这这也符合终端端的硬件要求,因因为在目标板板上只有NAAND FLLASH。 因为要求使用YYAFFS22文件系统,在在Uboott的help writee命令里面,缺缺少YAFFFS2文件系系统的烧写信息,可知知本Ubooot不支持YAFFFS2文件件系统
47、的烧写写,所以要对对源码进行相相关的更改才才能达到我们的要求求。 (1)在commmon/ccmd_naand.c中中增加naand wrrite.yyaffs22.的的使用说明。 U_BOOT_CMD(nnand, 5, 1, do_nnand, nandd - NANND subb-systtemn, infoo - showw avaiilablee NANDD deviicesnn nandd deviice ddev - showw or sset cuurrentt deviicen nandd readd.jfffs2 - addrr off|partiition sizen n
48、andd writte.jfffs2 - addrr off|partiition size - reaad/wriite ssize bytess starrtingn at ooffsett offf to/from memorry adddress addrrn 添加加部分 nand rread.yyaffs addr off ssize - readd the sizee bytte yafffs immage sstartiingn att offsset ooff tto memmory aaddresss adddrnn nannd wriite.yaaffs aaddr oof
49、f siize - writee the sizee bytte yafffs immage sstartiingn at offfset off from memorry adddress addrrn (2)然后在MMakefiile中的do_nnand函数数添加烧写的的文件系统为为YAFFSS2的语句,其其实是if语句的一个分支, else iff ( s != NUULL & !strrcmp(ss, .YYAFFS) iif (reead) 图 3.2 at91ssam9266 家族 京邮电大学学硕士研究生生学位论文 第三章 BBootLooader 的设计与移移植 11 nand_
50、read_optioons_t opts; memseet(&oppts, 00, sizzeof(oopts); opts.buffeer = (u_chaar*) aaddr; opts.lengtth = ssize; opts.offseet = ooff; opts.readooob = 1; opts.quiett = quiett; ret = nandd_readd_optss(nandd, &oppts); ellse nandd_writte_opttions_t optts; memseet(&oppts, 00, sizzeof(oopts); opts.buffeer
51、 = (u_chaar*) aaddr; opts.lengtth = ssize; opts.offseet = ooff; opts.noeccc = 1; opts.writeeoob = 1; opts.blockkalignn = 1; opts.quiett = qquiet; opts.skipffirstbblk = 1; ret = nandd_writte_optts(nannd, &oopts); (3)在incclude/nand.h中进行如如下修改,在在nand_writee_optiions结构构体中增加sskipfiirstbllk成员,类型为int型型。 str
52、ruct nnand_wwrite_optioons u_char *bufffer; int padd; int bloockaliign; int skiipfirsstblk;/增加的的成员。 ; (4)在driivers/mtd/nnand/nnand_uutil.cc修改nandd_writte_optts函数,增增加对skiipfirsstblk成成员的支持: int nannd_wriite_oppts(naand_innfo_t *memiinfo, constt nandd_writte_opttions_t *oppts) 京邮电大学学硕士研究生生学位论文 第三章 BBoo
53、tLooader 的设计与移移植 12 intt imgllen = 0; intt resuult; intt skippfirsttblk = optss-skiipfirsstblk;增加相应的的支持。 同时在本函数中中的 reaadlen = memminfo-oobbblock;语句前添加加判断语句, if (sskipfiirstbllk) mmtdofffset += eraasesizze_bloockaliign; sskipfiirstbllk = 00; ccontinnue; 经过上述更更改,Ubooot 已经经支持了 YYAFFS22 文件系统统的烧写,下下一步就是编
54、编译 Ubooot,在编译之前还要要在 Makkefilee 文件中指指定我们前面面已经安装好好的交叉编译译器,如下: ifeq ($(ARCHH),armm) CROSS_CCOMPILLE = aarm- nnone-LLinux- gnueeabi- gcc 然后就可以进行行Uboott的编译了,在在Uboott的目录下, rootteeen-Leenovo:/homee/teenn/u-booot-1.3.4# make at91ssam92660ek_NNANDFLLASH_cconfigg rootteeen-Leenovo:/homee/teenn/u-booot-1.3.4#
55、make 在本目录下会生生成以下 33 个文件: u-boot.bin,u-booot 以及 u-bboot.ssrec,三三者都是可执执行文件,只只是生成的格格式不一样。其其中 u-booot.binn 是二进制制的,也是我我们所需要的的烧入 NAANDFLAASH 中的的文件,u-boot 和u-boot.srec 分别是 ELLF 格式和和 Motoorola S-Reccord 格格式。 3.4.2 UUboot 的移植 BootLoaader 的的移植是借助助于 SAMM-BA 软软件来完成的的,通过终端端上的 USSB devvice 口口完成移植。首先移植植 Boottstrap
56、p,即之前生生成的 naandflaash_att91samm9260eek.binn,将其烧写写到NANDFLAASH 的 0 x0000000000 地 址 处 , 然 后 开 始 移 植 Ubooot.binn 文 件 , 因 为nandflaash_att91samm9260eek.binn 是从 NANNDFLASSH 的 0 x200000 地地址处开始读读取,所以将将 Ubooot烧写到 NANNDFLASSH 的 0 x200000 地地址处。烧写写完毕后,UUboot 就可以启动动并运行了。因因为京邮电大大学硕士研究究生学位论文文 第三章 BBootLooader 的设计与移
57、移植 9 Driverss:通用的设设备驱动程序序,比如网卡卡驱动、串口口驱动以及 USB 总线的驱动动等。 Board:和和具体开发板板相关的文件件,比如本目目标板为 aatmel 系列,在该该目录下有 atmell家族的芯片的地地址分配有关关的文件等。 Fs:支持文件件系统的文件件,Ubooot 支持的的 crammfs、fat、YAFFSS、jffs22、regissterfss 等文件系统。 Cpu:涉及与与平台相关 cpu,比比如 i3886、arm9220t 和 nioss 等,每个个特定的子目目录都包括start.SS、cpu.cc、interrrupt.c。startt.S 主
58、要要负责设置系系统工作模式式和堆栈,是是第一个 UUboot 启动时执行的文件。其其中 cpuu.c 负责责初始化 ccpu、设置置指令 caache 和和数据 caache 等等;inteerruptt.c 设置系统的各种终终端和异常,例例如开关中断断、软件中断断和快速中断断等; Includee:主要包括括头文件以及及开发板相关关配置文件,还还有一些通用用的函数。对对于开发人员,Ubooot 的配置置方式较为繁繁琐,它没有有类似配置内内核时使用的的 makee conffig的可视视化菜单,每一项的配配置都需要手手动修改配置置文件,开发发板的配置文文件都放在该该目录下的/confiigs目
59、录里面。 Net:与网络络相关的代码码,比如 BBOOTP 协议、TFTTP 协议和和 NFS 文件系统的的实现。 3.4 Ubooot 的编编译及其在目目标板上的移移植 3.4.1 UUboot 的源码修改改以及编译 基于 ARM 的嵌入式系系统的启动都都需要引导程程序,引导过过程可以有两两种,一种是是先运行小型的 boootstraap 完成 loww leveel 的初始始化,再调用用 Ubooot 等功能能强大的引导导程序进行全全面的初始化,设置操操作系统内核核的加载地址址和运行参数数等等;另外外一种就是直直接使用 UUboot 等引导程序两步合合成一步完成成。在这里我我们使用第一一种
60、方法,首首先编译和移移植 Boootstraap。 本系统中用到的的 AT911 Boottstrapp 是由 ATMMEL 官网网提供的,适适用于 ATTMEL AAT91 芯芯片,下载 AT911 Boottstrapp 的源码包包。因为本系系统是从 NNANDFLLASH 上上启动,所以以进入 Boootstrrap的/boardd/at911sam92260ek/nandfflash 目录下,修修改 Makkefilee 文件,指指定交叉编译译器为我们之之前准备好的 arrm-nonne-Linnux-gnnueabii-gcc,然然后保存退出出,在该目录录下,直接 make 就能生成
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论