ARM汇编语言程序设计基础第12章嵌入式Linux软件设计.ppt
《ARM汇编语言程序设计基础第12章嵌入式Linux软件设计.ppt》由会员分享,可在线阅读,更多相关《ARM汇编语言程序设计基础第12章嵌入式Linux软件设计.ppt(58页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 第第12章章 嵌入式嵌入式Linux软件设计软件设计12.1 移植的基本概念移植的基本概念n移植是嵌入式Linux软件设计中用得最多的一个概念,广义上讲移植包括软件移植和硬件移植。从狭义上讲,移植就是指软件移植,即将一个软件从一个平台迁移到另一个与其不同的平台上工作。通常情况下,移植分为以下3种情况。n1、从一个硬件平台移植到另一个硬件平台、从一个硬件平台移植到另一个硬件平台n2、从一个操作系统移植到另一个操作系统、从一个操作系统移植到另一个操作系统n3、从一种软件库环境移植到另一种软件库环、从一种软件库环境移植到另一种软件库环境境12.2 Bootloader的移植的移植nBootload
2、er是操作系统和硬件的纽带,它负责初始化硬件,引导操作系统内核,检测各种参数给操作系统内核使用。事实上,一个功能完备的大型Bootloader,就相当于一个小型的操作系统。在嵌入式领域中,操作系统移植的关键在于Bootloader的移植以及操作系统内核与硬件相关部分的移植。12.2.1 关键文件的修改关键文件的修改n1.vivi顶层Makefile文件的修改nvivi作为Linux系统的启动代码,在编译配置时需要用到函数库,包括交叉编译器库和头文件,交叉编译开关选项设置,还包括Linux内核代码中的库和头文件,所以,通常需要修改vivi工程管理文件Makefile。n2.vivi中与硬件相关的
3、初始化n与具体运行在哪一个处理器平台上相关的文件都存放在vivi/arch/目录下,本系统使用S3C2410 x处理器,对应的目录为s3c2410。其中head.s文件是vivi启动配置代码,加电复位运行的代码就是从这里开始的。n3.对不同Flash启动的修改nvivi能从NorFlash或NandFlash启动,因此启动程序、Linux内核及根文件系统,甚至还包括图形用户界面都需要存放在NorFlash或NandFlash中。n4.内核启动参数设置n经过修改后,S3C2410 x开发板能从NandFlash中启动运行Linux,也能从NorFlash中启动,所以相应地也要修改启动命令.n5.
4、Flash驱动的实现n移植vivi的最后一步就是实现Flash驱动,程序员需要根据自己系统中具体Flash芯片的型号及配置来修改驱动程序,使Flash设备能够在嵌入式系统中正常工作。12.2.2 串口设置示例串口设置示例n串口作为一种常用的通信方式,在嵌入式开发中起到极其重要的作用,几乎所有的嵌入式设备都提供了串口的支持,并且都在Bootloader中就给出了支持,以为下一步开发提供方便,比如操作系统内、文件系统等下载等。n对vivi而言,串口的初始化是在vivi初始化的第一个阶段进行,具体是在arch/s3c2410/head.s文件中设置,且一般串口波特率设置为115200Buad。有关S
5、3C2410数据手册中的串口相关寄存器的功能和波特率设置见6.1节,比如,若希望波特率设置为115200,而PCLK又等于40MHz,那么UBRDIVn就应该设置为:nUBRDIVn=(int)(40000000/(11520016)1=(int)(21.7)-1=20n其中,PCLK=50700000,UBRDIV0的值向下取整。12.2.3 Bootloader的交叉编的交叉编译译n为了进行交叉编译,需要修改vivi目录下的Makefile文件,将其中的编译器要由gcc改为交叉编译器arm-linux-gcc。然后使用make命令,系统将根据Makefile文件自动完成整个编译。编译完成后
6、,系统将自动在vivi的根目录下生成一个名为“vivi”的二进制目标文件,用于下载到嵌入式目标设备的Flash中。12.2.4 Bootloader的下载的下载nBootloader的下载(又叫做烧录)是利用JTAG口进行的,操作平台可以是Windows或桌面Linux,只是两者用的工具软件不同而已,这里以Windows操作平台以及sjf2410工具软件为例进行介绍。在下载之前,需要将生成的可执行文件从桌面Linux下转移到Windows的某个目录下(如d:vivi)。n利用Jflash线将PC机和嵌入式目标板的JTAG口正确连接。这里要注意,Jflash线和Wiggler线的形状非常相似,不
7、要混淆。n启动sjf服务,安装giveio.sys驱动。打开sjf目录下的loaddrv.exe,将弹出LoadDrv窗口.n然后再依次点击install和start按钮,就会提示“servicealreadyruning”,也就是驱动已经安装成功.n在DOS环境下手动运行sjf2410命令:sjf2410/f:vivi,其中“/f:是”参数而不是目录.nvivi下载成功后,用串口将PC和嵌入式目标板连接起来,并启动Windows中的超级终端.12.3 嵌入式嵌入式Linux内核的移植内核的移植n内核是嵌入式Linux系统的核心部分,因为Linux与Windows不同,前者的内核和文件系统、图
8、形用户系统(GUI窗口系统)可以分开,它们的开发、移植、下载甚至运行都是可以分开的。内核移植是一个比较复杂的任务,当然也是嵌入式系统开发中非常重要的一个过程。内核移植一般包括内核配置、内核编译和内核下载3大步骤。12.3.1 内核移植的准备内核移植的准备 n移植内核首先要准备好编译内核的编译器即交叉编译工具链,然后从相关的网站()下载要移植的内核源代码代码(基本上都是C语言编写)。12.3.1 内核移植的准备内核移植的准备n3.arch/arm目录下目录下Config.in 修改修改nConfig.in文件是用来设置后面介绍的menuconfig配置菜单的,它们是一一对应关系。这里把嵌入式目标
9、板的CPU平台加在相应的地方,这样在配置Linux内核时就能够选择是否支持该平台了。最初标准的内核中没有S3C2410的相关信息,所以需要在该文件中进行有效的配置,以加入支持S3C2410处理器的相关信息。12.3.1 内核移植的准备内核移植的准备n4.arch/arm/boot目录下目录下Makefile 修改修改n编译出来的内核存放在该目录下。这里用来指定内核解压到实际硬件内存系统中的物理地址。一般如果内核无法正常启动,很可能是这里的地址设置不正确。n5.arch/arm/boot/compressed目录下目录下Makefile 修改修改n该文件从vmlinux中创建一个压缩的vmlin
10、uz镜像文件。该文件中用到的SYSTEM、ZTEXTADDR、ZBSSADDR、和ZRELADDR是从arch/arm/boot/Makefile文件中得到的。12.3.1 内核移植的准备内核移植的准备n6.arch/arm/boot/compressed目录目录下添加下添加head-s3c2410.sn7.arch/arm/def-configs目录目录n 这里定义了一些平台的这里定义了一些平台的config文件,文件,比如比如lart和和assert等。把配置好的等。把配置好的S3C2410的配置文件复制到这里即可。的配置文件复制到这里即可。12.3.1 内核移植的准备内核移植的准备n8.
11、arch/arm/kernel目录下目录下Makefile 修改修改n该文件主要用来确定文件类型的依赖关系。n9.arch/arm/kernel目录下的文件目录下的文件debug-armv.s 修改修改n在该文件中添加如下代码,目的是关闭外围设备的时钟,以保证系统正常运行。12.3.1 内核移植的准备内核移植的准备n10.arch/arm/kernel目录下的文件目录下的文件entry-armv.s 修改修改n在适当的地方加入如下代码,此为CPU初始化时的处理中断的汇编代码。n11.arch/arm/mm目录下的相关文件目录下的相关文件n此目录下的文件是和ARM平台相关的内存管理内容,只有mm
12、-armv.c文件需要移植。12.3.1 内核移植的准备内核移植的准备n12.arch/arm/mach-s3c2410目录下目录下的相关文件的相关文件n这个目录在版本的内核中是不存在的,但在高版本中已经添加了对这款处理器的支持。不过发布的内核只是对处理器的基本信息提供支持,有关开发板的外设,例如USB、电源管理等都要用户自己添加。12.3.2 关键文件的修改关键文件的修改n1.设置目标平台和指定交叉编译器设置目标平台和指定交叉编译器n在源代码的最上层根目录下的Makefile文件中,指定所移植的硬件平台,以及所使用的交叉编译器。n2.arch/arm目录下目录下Makefile 修改修改n内
13、核系统的启动代码是通过此文件产生的。n3.arch/arm目录下目录下Config.in 修改修改nConfig.in文件是用来设置后面介绍的menuconfig配置菜单的,它们是一一对应关系。这里把嵌入式目标板的CPU平台加在相应的地方,这样在配置Linux内核时就能够选择是否支持该平台了n4.arch/arm/boot目录下目录下Makefile 修改修改n编译出来的内核存放在该目录下。这里用来指定内核解压到实际硬件内存系统中的物理地址。一般如果内核无法正常启动,很可能是这里的地址设置不正确。n5.arch/arm/boot/compressed目录下目录下Makefile 修改修改n该文
14、件从vmlinux中创建一个压缩的vmlinuz镜像文件。该文件中用到的SYSTEM、ZTEXTADDR、ZBSSADDR、和ZRELADDR是从arch/arm/boot/Makefile文件中得到的。n6.arch/arm/boot/compressed目录下添目录下添加加head-s3c2410.sn7.arch/arm/def-configs目录目录n 这里定义了一些平台的config文件,比如lart和assert等。把配置好的S3C2410的配置文件复制到这里即可。n8.arch/arm/kernel目录下目录下Makefile 修改修改n该文件主要用来确定文件类型的依赖关系。n9
15、.arch/arm/kernel目录下的文件目录下的文件debug-armv.s 修改修改n在该文件中添加如下代码,目的是关闭外围设备的时钟,以保证系统正常运行。n10.arch/arm/kernel目录下的文件目录下的文件entry-armv.s 修改修改n在适当的地方加入如下代码,此为CPU初始化时的处理中断的汇编代码。n11.arch/arm/mm目录下的相关文件目录下的相关文件n此目录下的文件是和ARM平台相关的内存管理内容,只有mm-armv.c文件需要移植。n12.arch/arm/mach-s3c2410目录下的相目录下的相关文件关文件n这个目录在版本的内核中是不存在的,但在高版
16、本中已经添加了对这款处理器的支持。不过发布的内核只是对处理器的基本信息提供支持,有关开发板的外设.12.3.3 内核的配置与裁剪内核的配置与裁剪n配置内核与裁剪是移植内核过程中很重要的一步,也是非常复杂的一步,配置时一定要小心,否则操作系统将无法运行。配置内核的目的是裁剪掉不必要的文件和目录,获得一个最简的、又能满足用户开发的操作系统,以解除嵌入式开发过程中所遇到的存储空间有限的困扰。n通常有4种主要的配置内核的方法。n 1.make confign2.make oldconfign3.make menuconfign4.make xconfig12.3.4 内核的编译内核的编译n编译内核通常
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ARM 汇编语言 程序设计 基础 12 嵌入式 Linux 软件设计
限制150内