欢迎来到天天文库
浏览记录
ID:10011307
大小:99.52 KB
页数:58页
时间:2018-05-12
《第12章 嵌入式linux软件设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第12章嵌入式Linux软件设计12.1移植的基本概念移植是嵌入式Linux软件设计中用得最多的一个概念,广义上讲移植包括软件移植和硬件移植。从狭义上讲,移植就是指软件移植,即将一个软件从一个平台迁移到另一个与其不同的平台上工作。通常情况下,移植分为以下3种情况。1、从一个硬件平台移植到另一个硬件平台2、从一个操作系统移植到另一个操作系统3、从一种软件库环境移植到另一种软件库环境12.2Bootloader的移植Bootloader是操作系统和硬件的纽带,它负责初始化硬件,引导操作系统内核,检测各种参数给操作系统内核使用。事实上,一个功能
2、完备的大型Bootloader,就相当于一个小型的操作系统。在嵌入式领域中,操作系统移植的关键在于Bootloader的移植以及操作系统内核与硬件相关部分的移植。12.2.1关键文件的修改1.vivi顶层Makefile文件的修改vivi作为Linux系统的启动代码,在编译配置时需要用到函数库,包括交叉编译器库和头文件,交叉编译开关选项设置,还包括Linux内核代码中的库和头文件,所以,通常需要修改vivi工程管理文件Makefile。2.vivi中与硬件相关的初始化与具体运行在哪一个处理器平台上相关的文件都存放在vivi/arch/目录
3、下,本系统使用S3C2410x处理器,对应的目录为s3c2410。其中head.s文件是vivi启动配置代码,加电复位运行的代码就是从这里开始的。3.对不同Flash启动的修改vivi能从NorFlash或NandFlash启动,因此启动程序、Linux内核及根文件系统,甚至还包括图形用户界面都需要存放在NorFlash或NandFlash中。4.内核启动参数设置经过修改后,S3C2410x开发板能从NandFlash中启动运行Linux,也能从NorFlash中启动,所以相应地也要修改启动命令.5.Flash驱动的实现移植vivi的最后
4、一步就是实现Flash驱动,程序员需要根据自己系统中具体Flash芯片的型号及配置来修改驱动程序,使Flash设备能够在嵌入式系统中正常工作。12.2.2串口设置示例串口作为一种常用的通信方式,在嵌入式开发中起到极其重要的作用,几乎所有的嵌入式设备都提供了串口的支持,并且都在Bootloader中就给出了支持,以为下一步开发提供方便,比如操作系统内、文件系统等下载等。对vivi而言,串口的初始化是在vivi初始化的第一个阶段进行,具体是在arch/s3c2410/head.s文件中设置,且一般串口波特率设置为115200Buad。有关S3
5、C2410数据手册中的串口相关寄存器的功能和波特率设置见6.1节,比如,若希望波特率设置为115200,而PCLK又等于40MHz,那么UBRDIVn就应该设置为:UBRDIVn=(int)(40000000/(115200×16))–1=(int)(21.7)-1=20其中,PCLK=50700000,UBRDIV0的值向下取整。12.2.3Bootloader的交叉编译为了进行交叉编译,需要修改vivi目录下的Makefile文件,将其中的编译器要由gcc改为交叉编译器arm-linux-gcc。然后使用make命令,系统将根据Mak
6、efile文件自动完成整个编译。编译完成后,系统将自动在vivi的根目录下生成一个名为“vivi”的二进制目标文件,用于下载到嵌入式目标设备的Flash中。12.2.4Bootloader的下载Bootloader的下载(又叫做烧录)是利用JTAG口进行的,操作平台可以是Windows或桌面Linux,只是两者用的工具软件不同而已,这里以Windows操作平台以及sjf2410工具软件为例进行介绍。在下载之前,需要将生成的可执行文件从桌面Linux下转移到Windows的某个目录下(如d:vivi)。①利用Jflash线将PC机和嵌入式
7、目标板的JTAG口正确连接。这里要注意,Jflash线和Wiggler线的形状非常相似,不要混淆。②启动sjf服务,安装giveio.sys驱动。打开sjf目录下的loaddrv.exe,将弹出LoadDrv窗口.③然后再依次点击install和start按钮,就会提示“servicealreadyruning”,也就是驱动已经安装成功.④在DOS环境下手动运行sjf2410命令:sjf2410/f:vivi,其中“/f:是”参数而不是目录.⑤vivi下载成功后,用串口将PC和嵌入式目标板连接起来,并启动Windows中的超级终端.12.
8、3嵌入式Linux内核的移植内核是嵌入式Linux系统的核心部分,因为Linux与Windows不同,前者的内核和文件系统、图形用户系统(GUI窗口系统)可以分开,它们的开发、移植、下载甚至运
此文档下载收益归作者所有