嵌入式系统开发环境的建立_第1页
嵌入式系统开发环境的建立_第2页
嵌入式系统开发环境的建立_第3页
嵌入式系统开发环境的建立_第4页
嵌入式系统开发环境的建立_第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

armlinux系统开发流程1、开发目标硬件系统2、建立交叉编译工具3、开发bootloader4、移植linux内核5、开发一个文件系统6、开发相关硬件驱动程序7、开发上层应用程序8、烧写bootloader、内核、文件系统等。嵌入式系统开发环境的建立第1页嵌入式交叉编译环境介绍交叉编译就是在一个平台上生成另一个平台上可执行代码。这里说平台分别指是主机平台Host和目标平台Target。就我们在ARM平台上移植Linux来说,Host是一台普通PC机,它经过串口或网络接口与Target通信;Target是arm-linux平台(这里说arm指是平台所使用CPU是ARM9处理器,linux指是运行操作系统是Linux)。我们在Host上开发程序,并在这个平台上运行交叉编译器CrossComplier,编译我们程序,而由CrossComplier生成程序将在Target上运行嵌入式系统开发环境的建立第2页

需要交叉编译原因:首先,在项目标起始阶段,目标平台还未建立,所以需要做交叉编译,以生成我们所需要Bootloader以及kernel(因为Bootloader和kernel源码需要经过交叉编译后才能够在目标平台上运行);其次,当目标平台能开启之后,因为目标平台上资源限制,当我们编译大型程序时,依然可能需要用到交叉编译。嵌入式系统开发环境的建立第3页怎样建立交叉编译工具链构建交叉工具链通常有以下3种方法:1.分步骤手工编译分步编译和安装交叉编译工具链所需要库和源代码,最终生成交叉编译工具链。2.经过脚本编译经过crosstool脚本工具来实现一次编译生成交叉编译工具链3.直接获取交叉编译工具链直接经过网上下载已经制作好交叉编译工具链。ftp:.ukftp:ftp:Linux内核代码linux-2.6.10.tar.gzglibc库glibc-2.3.2.tar.gz工具程序binutils-2.15.tar.bz2内核线程包glibc-linuxthreads-2.3.2.tar.gz编译器gcc-3.3.6.tar.gz嵌入式系统开发环境的建立第4页配置开发板PXA270嵌入式系统宿主机交叉编译环境arm-linux.tar.gz提供ARM系统开发交叉编译器/usr/local/arm-linux/binvi/etc/profilepathmunge/usr/local/arm-linux/bincparm-linux.tar.gz/usr/localcd/usr/localtar-xzfarm-linux.tar.gz嵌入式系统开发环境的建立第5页目标机与主机通讯方式嵌入式系统开发环境的建立第6页1、minicomminicom很像Windows下面超级终端,我們利用minicom作为目标板终端显示视窗;经过串口控制目标板嵌入式系统开发环境的建立第7页2、从菜单中选择SerialPortSetup配置minicom1、#minicom-s嵌入式系统开发环境的建立第8页3、“A”以设置“SerialDevice”。假如使用串口1,则输入/dev/ttyS0。假如使用串口2,则输入/dev/ttyS1。嵌入式系统开发环境的建立第9页4、“E”键进入设置“bps/par/Bits”(波特率)界面,再按“I”以设置波特率为115200嵌入式系统开发环境的建立第10页设置被保留到“/etc/minirc.dfl”嵌入式系统开发环境的建立第11页目标板上电后,目标板开启过程显示在minicom;CTR+A+s---zmodern嵌入式系统开发环境的建立第12页2NFS服务NFS服务能够使网络上同为Linux或Unix系统主机共享文件系统。NFS能够将远程文件系统载入在当地文件系统下。远程硬盘、目录和光驱都能够变成当地主机目录树中一个子目录。载入后与处理自己文件系统一样使用即可。不只方便,也节约了重复保留文件空间、传输文件时间及网络带宽。嵌入式系统开发环境的建立第13页NFS特点NFS系统也是使用C/S体系结构,就是有服务器端与客户端服务器端提供共享文件系统,必须把文件系统输出(export)出去客户端则要把文件系统载入到自己系统下使用NFS,需要在服务器端设置输出,在客户端设置载入嵌入式系统开发环境的建立第14页NFS服务器端配置(1)关闭防火墙(2)配置共享目录----客户端主机IP范围(3)主机IP(4)开启NFS服务NFS客户端(1)设置客户端IP地址(2)挂载共享目录mount-tnfs主机ip:共享目录挂载点注意事项:关闭防火墙,主机与客户端在同一ip段嵌入式系统开发环境的建立第15页详细配置步骤服务器端1)关闭防火墙嵌入式系统开发环境的建立第16页详细配置步骤2)配置NFS服务器嵌入式系统开发环境的建立第17页详细配置步骤2-1)设置共享目录和主机范围嵌入式系统开发环境的建立第18页详细配置步骤2-2)设置其它选项嵌入式系统开发环境的建立第19页详细配置步骤2-3)设置其它选项嵌入式系统开发环境的建立第20页详细配置步骤3)设置NFS服务器IP嵌入式系统开发环境的建立第21页详细配置步骤4)开启NFS服务嵌入式系统开发环境的建立第22页详细配置步骤客户端1)配置ip嵌入式系统开发环境的建立第23页详细配置步骤2)挂载NFS嵌入式系统开发环境的建立第24页/etc/exports它基本格式是Directoryhost(权限选项、用户映像、)Directory:表示打算共享目录名称;Host:共享这个目录主机名称;权限选项:定义安全选项;嵌入式系统开发环境的建立第25页权限选项1)ro:只读,只允许客户机挂载这个文件系统为只读模式。2)rw:明确指定共享目录为读/写权限。用户映像来限定一些用户对NFS共享文件使用权限no_root_squash:其它安全选项1)Insecure:以非安全端口方式访问,即默认用户端口是1024或者更高,而NFS服务器默认安全服务器端口应该是低于1024。2)Sync:依据请求进行同时。嵌入式系统开发环境的建立第26页例:vi/etc/exports/home/ls0(rw,insecure,no_root_squash)表示共享目录为/home/ls,允许访问客户机地址为0主机,权限为可读可写(rw),非安全方式访问(insecure),让客户机根用户在服务器上拥有根权限。嵌入式系统开发环境的建立第27页例:vi/etc/exports/home/ls*(rw)表示共享目录为/home/ls,允许任意主机访问,权限可读可写嵌入式系统开发环境的建立第28页

Bootloader是什么?Bootloader,为引导加载程序,是嵌入式系统加电后运行第一段代码,相当于PC机BIOS。Bootloader位置:通常固化在硬件上某个固态存放设备上,加电后自开启。基于ARM处理器核CPU在复位时通常都从地址0x00000000取它第一条指令。在这个地址处安排就是Bootloader。Bootloader是在操作系统运行之前执行一段小程序。经过这段小程序,我们能够初始化硬件设备、建立内存空间映像表,从而建立适当系统软硬件环境,为最终调用操作系统内核做好准备。

3BootloaderBootloader参数系统内核根文件系统从低地址到高地址方向Flash嵌入式系统开发环境的建立第29页

几个公布BootloaderBootloader是严重地依赖于硬件而实现。每种不一样体系结构处理器都有不一样Bootloader。不过Bootloader发展也趋于支持各种体系结构,如现在比较成熟vivi、RedBoot和U-Boot等。ftp://ftp.denx.de/pub/u-boot/嵌入式系统开发环境的建立第30页Bootloader操作模式大多数Bootloader都有两种不一样操作模式:“开启加载”模式和“下载”模式。其区分对于开发人员才有意义。从最终用户角度看,Bootloader作用就是用来加载操作系统,而并不存在所谓开启加载模式与下载模式区分。嵌入式系统开发环境的建立第31页1、开启加载(Bootloading)模式 即Bootloader从目标机上某个固态存放设备上将操作系统加载到RAM中运行,整个过程并没有用户介入。 开启加载模式是Bootloader正常工作模式,在嵌入式产品公布时侯,Bootloader必须工作在这种模式下。嵌入式系统开发环境的建立第32页2、下载(Downloading)模式

下载方式:在这种模式下,目标机上Bootloader将经过串口连接或网络连接等通信伎俩从主机下载文件。

下载内容及存放:主要是下载内核映像和根文件系统映像等。从主机下载文件通常首先被Bootloader保留到目标机RAM中,然后再被Bootloader写到目标机上FLASH类固态存放设备中。嵌入式系统开发环境的建立第33页下载模式应用场所:Bootloader这种模式通常在第一次安装内核与根文件系统时被使用;另外,以后系统更新也会使用到这种工作模式。用户应用接口:工作于这种模式下Bootloader通常都会向它终端用户提供一个简单命令行接口。如在U-BOOT下,将出现“#”提醒符;在vivi下出现“vivi>”提醒符。嵌入式系统开发环境的建立第34页下载(Downloading)模式示例嵌入式系统开发环境的建立第35页Bootloader开启过程大多数BootLoader开启都分为stage1和stage2两大部分。依赖于处理器体系结构和板级初始化代码,通常都放在stage1中,用汇编语言实现而stage2则通惯用C语言来实现,这么能够实现更复杂功效,而且代码会含有更加好可读性和可移植性。嵌入式系统开发环境的建立第36页BootLoaderstage1通常包含以下步骤(以执行先后次序):硬件设备初始化。为加载BootLoaderstage2准备RAM空间。拷贝BootLoaderstage2到RAM空间中。设置好堆栈跳转到stage2C入口点。

Stage1主要工作是硬件初始化,并准备第二阶段C语言运行环境关闭处理器内部指令/数据cache等设置CPU速度和时钟频率RAM初始化初始化led等为了取得更加快执行速度,通常把阶段2代码加载到RAM空间中来执行。准备RAM空间考虑原因:阶段2代码大小、堆栈、页大小(4KB倍数)、安排位置等。嵌入式系统开发环境的建立第37页BootLoaderstage2通常包含以下步骤(以执行先后次序):初始化本阶段要使用到硬件设备。检测系统内存映射(memorymap)。将kernel映像和根文件系统映像从flash上读到RAM空间中。为内核设置开启参数。调用内核。stage2代码通惯用C语言来实现,方便于实现更复杂功效和取得更加好代码可读性和可移植性。与普通C语言应用程序不一样是,在编译和链接bootloader这么程序时,我们不能使用glibc库中任何支持函数。Stage2主要目标是运行Linux内核,在此之前需要完成硬件和内存初始化工作。Bootloader调用Linuxkernel方法是直接跳转到内核第一条指令处。在跳转时必须满足以下条件:1)、CPU存放器设置:R0为0;R1为机器类型ID;R2为开启参数,标识列表在RAM中起始基地址。2)、CPU模式:CPU必须设置为SVC模式,必须禁止中止(IRQs和FIQs)。3)、MMU和Cache设置:MMU必须关闭;指令Cache能够打开也能够关闭;数据Cache必须关闭。嵌入式系统开发环境的建立第38页viviBootloader源码分析vivi是韩国Mizi企业开发Bootloader,适合用于ARM9处理器。vivi有两种工作模式,在开启时能够选择。在vivi开启时,经过串行口发出以下信息:PressReturntostarttheLinuxnow,anyotherkeyforvivi按回车键开启LinuxOS,按其它键进入vivi命令接口模式,能够使用vivi提供命令进行一些操作。嵌入式系统开发环境的建立第39页vivi源代码目录结构vivi源代码包含目录有:arch、Documentation、drivers、init、include、lib、scripts、test、util等10目录,共300多个文件。各个目录内容以下:1、arch(architecture)目录它下面文件为与CPU硬件相关初始化代码,此目录包含了所用vivi支持CPU。普通只包含S3C2410x文件。2、Documentation目录其下文件为vivi使用指南。3、drivers目录存放为MTD(memorytechnologydevice内存技术设备)(数据存放媒质)设备读写控制文件和串行口操作文件,对串行口支持xmodem和ymodem协议。4、include目录存放全部头文件,包含S3C2410微处理器和S3C2410开发板头文件。嵌入式系统开发环境的建立第40页5、init目录该目录下是系统初始化文件main.c、version.c,后者是vivi版本信息,main.c为vivi整个初始化结构。6、lib目录该目录下是公共应用及接口代码,如时钟功效文件time.c,堆栈初始化文件heap.c等文件。7、scripts目录该目录存放是系统配置需要脚本文件,如menuconfig和configue文件。8、CVS目录全部目录下面都有一个CVS目录,存放是该目录路径和它子目录。嵌入式系统开发环境的建立第41页vivi源代码文件与功效结构vivi源代码文件:1、vivi/arch/s3c2410/head.s2、一段过渡,实现循环调用,main返回后重新复位 LDR SP, DW_STACK_START MOV FP, #0 MOV A2, #0 BL MAIN MOV PC, #FLASH_BASE;main返回后重新复位3、vivi/init/main.c嵌入式系统开发环境的建立第42页viviBootloader接口命令命令功能Load下载flash或RAM命令PartMTD分区操作命令param设置、查看参数命令Boot开启系统命令flashFlash管理命令vivi>loadflashkernelxvivi>bootnand0x80000flasherase0x800000xc0000嵌入式系统开发环境的建立第43页vivi源码修改移植 vivi移植方法步骤: 对vivi进行修改移植 对vivi进行配置 对vivi进行编译 下载、运行vivi嵌入式系统开发环境的建立第44页1、修改vivi/Makefile(1)修改交叉编译库和头文件

1)修改编译器路径 CROSS_COMPILE=2)修改编译器库文件路径: ARM_GCC_LIBS=3)增加交叉编译时头文件搜索路径:LIBC_INCLUDE_DIR=(2)Linux内核包含文件LINUX_INCLUDE_DIR=编译vivi用到交叉编译工具版本是cross-2.95.3.tar.bz2

嵌入式系统开发环境的建立第45页

2、修改Flash分区信息(vivi/arch/s3c2410/smdk.c)

#ifdefCONFIG_S3C2410_AMD_BOOTmtd_partition_tdefault_mtd_partitions[]={ { name: "vivi", offset: 0, size: 0x0000, flag: 0 },

{ name: "param", offset: 0x0000, size: 0x00010000, flag: 0 },{ name: "kernel", offset: 0x00030000, size: 0x000C0000, flag: 0 },{ name: "root", offset: 0x00100000, size: 0x00140000, flag: MF_BONFS }};#endif嵌入式系统开发环境的建立第46页

二、对vivi进行配置 运行vivi配置程序menuconfig: make menuconfig 开启对vivi配置主菜单,依据自己目标系统逐项进行设置,设置完后退出保留即可。 嵌入式系统开发环境的建立第47页

三、对vivi进行编译 在vivi目录下执行以下命令:

make clean make

makeclean是去除以前编译时生成全部目标文件和暂时文件。 假如没有错误,编译后会生成vivi目标文件vivi.bin。嵌入式系统开发环境的建立第48页 四、对vivi进行下载 利用JTAG口将vivi下载到目标板flash空间(0x00000---0x0)。 然后对目标板加电,使vivi开启运行,观察运行情况。Jflash-s3c2410<vivi文件名>/t=<flash_type>其中,Flash类型有以下选项:1:SMDK2410:K9S32084MB2:SMDK2410:K9S64088MB3:SMDK2410:K9S280816MB4:SMDK2410:K9S560832MB5:SMDK2410:K9S120864MB6:SMDK2410:AM29LV800BB嵌入式系统开发环境的建立第49页在烧写过程中,有3次提醒,要求用户选择:(1)在“Selectthefunctiontotest:”后面输入“0”,表示对型号为K9S1208Flash芯片进行烧写,烧写类型为程序。(2)在“Inputtargetblocknumber:”后面输入“0”,表示从偏移地址0处开始烧写。嵌入式系统开发环境的建立第50页经过数分钟烧写之后,将vivi烧写到Flash之中。再次出现提醒:嵌入式系统开发环境的建立第51页在“Selectthefunctiontotest:”后面输入“2”,退出vivi烧写。并关闭开发板电源,拔下JTAG连接线。在完成vivi烧写之后,使用串口线,经过串口将宿主机与开发板连接起来。嵌入式系统开发环境的建立第52页在宿主机上打开超级终端minicom窗口,再按下“Backspace”(回格)键不放,接通开发板电源。这时我们经过超级终端minicom窗口能够观察到嵌入式系统开发板上Linux系统开启过程,并在出现提醒符“vivi>”时停住(假如Linux系统有开启,但没有“vivi>”提醒符出现,则需要再一次按住键盘上“Backspace”(回格)键不放,对开发板“Reset”重启)。进入vivi提醒状态嵌入式系统开发环境的建立第53页(1)对Flash分区在“vivi>”提醒符下用命令“bonpart”对Flash进行分区:Bonpart0192k1M其中,从地址0处开始为vivi,地址192k(192*1024=196608)处开始为内核,地址1M(1*1024*1024=1048576)处开始为文件系统。嵌入式系统开发环境的建立第54页因为对Flash进行了重新分区,原来烧写在Flash中从地址0处开始引导加载程序vivi亦被擦除了,所以,这时不能掉电,也不能重启开发板,必须紧接着重新烧写vivi程序。(2)vivi>loadflashvivix当出现:Readyfordownloadingusingxmodem...Waiting...然后,按下Ctrl+A+S,弹出一个对话框嵌入式系统开发环境的建立第55页(3)烧写内核当vivi烧写完成后,需要重新开启开发板,使刚才分区及引导程序生效。重新开启开发板时,操作过程如前所述,按下“Backspace”(回格)键不放同时,重新开启开发板系统,出现提醒符“vivi>”。vivi>loadflashkernelx4)烧写文件系统紧接着上面操作,在提醒符“vivi>”下,输入命令:vivi>loadflashrootx嵌入式系统开发环境的建立第56页Linux内核Linux内核主要功效进程管理内存管理文件管理设备管理网络管理嵌入式系统开发环境的建立第57页Linux内核结构嵌入式系统开发环境的建立第58页Linux配置与编译编译内核步骤:下载内核源码修改内核目录树根下Makefile,指明交叉编译器设置环境变量配置内核产生.config文件输入内核配置命令(makemenuconfig),进行内核选项选择编译内核下载Linux内核嵌入式系统开发环境的建立第59页1、确定处理器类型Linux内核源代码支持20各种微处理器类型,在编译之前要先确定微处理器类型。ARCH:=armCROSS_COMPILE=arm-linux-Linux2.4内核还没有包含S3C2410处理器Linux2.6内核已经支持。嵌入式系统开发环境的建立第60页2、确定配置方法内核支持4种不一样配置方法,每种方法是读取一个根目录下隐藏配置文件“.config”。这4种方式以下。makeconfig:基于文本最为传统配置界面,不推荐使用。makemenuconfig:基于文本选单配置界面,字符终端下推荐使用。makexconfig:基于图形窗口模式配置界面,Xwindow下推荐使用。makeoldconfig:自动读入“.config”配置文件,而且只要求用户设定前次没有设定过选项。

嵌入式系统开发环境的建立第61页【例】以makemenuconfig为例进行S3C2410系统内裁剪核配置。#makemenuconfig弹出内核裁剪配置窗口嵌入式系统开发环境的建立第62页“SystemType---→”子项界面嵌入式系统开发环境的建立第63页在完成配置之后,就能够保留退出,如图所表示。嵌入式系统开发环境的建立第64页内核编译makezImagearch/$(ARCH)/boot”目录中。

嵌入式系统开发环境的建立第65页文件系统文件系统是嵌入式Linux系统必备一个组成部分,是系统文件和应用文件存放地方。嵌入式系统开发环境的建立第66页文件目录/bin 目录下需要包含惯用用户命令,如sh等。/sbin 目录要包含全部系统命令,如reboot等。/etc 目录下是系统配置文件。/boot 目录下是内核映像/dev 目录含有系统全部特殊设备文件/lib 目录包含系统全部库文件/mnt 目录只用于挂接,能够是空目录/

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论