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

下载本文档

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

文档简介

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

2、操作系统是Linux。 我们在Host上开发程序,并在这个平台上运转交叉编译器Cross Complier,编译我们的程序,而由Cross Complier生成的程序将在Target上运转 需求交叉编译的缘由: 首先,在工程的起始阶段,目的平台尚未建立,因此需求做交叉编译,以生成我们所需求的Boot loader以及kernel(由于Bootloader和kernel的源码需求经过交叉编译后才可以在目的平台上运转); 其次,当目的平台能启动之后,由于目的平台上资源的限制,当我们编译大型程序时,依然能够需求用到交叉编译。如何建立交叉编译工具链构建交叉工具链通常有以下3种方法:1分步骤手工编译分步

3、编译和安装交叉编译工具链所需求的库和源代码,最终生成交叉编译工具链。2经过脚本编译经过crosstool脚本工具来实现一次编译生成交叉编译工具链3直接获取交叉编译工具链直接经过网上下载曾经制造好的交叉编译工具链。ftp:.ukftp:ftp:Linux内核代码 linux-2.6.10.tar.gz glibc库 glibc-2.3.2.tar.gz工具程序 binutils-2.15.tar.bz2内核线程包 glibc-linuxthreads-2.3.2.tar.gz编译器 gcc-3.3.6.tar.gz配置开发板PXA270嵌入式系统的宿主机交叉编译环境arm-linux.tar.g

4、z提供ARM系统开发的交叉编译器/usr/local/arm-linux/binvi /etc/profilepathmunge /usr/local/arm-linux/bincp arm-linux.tar.gz /usr/localcd /usr/localtar -xzf arm-linux.tar.gz目的机与主机的通讯方式1、minicomminicom 很像Windows 下面的超级终端,我們用minicom 作为目的板的终端显示视窗;经过串口控制目的板 2、从菜单中选择Serial Port Setup配置minicom1、#minicom -s3、“A以设置“Serial D

5、evice。假设运用串口1,那么输入/dev/ttyS0。假设运用串口2,那么输入/dev/ttyS1。4、“E键进入设置“bps/par/Bits波特率界面,再按“I以设置波特率为115200设置被保管到“/etc/minirc.dfl目的板上电后,目的板的启动过程显示在minicom;CTR+A+szmodern2 NFS效力NFS效力可以使网络上的同为Linux或Unix系统主机共享文件系统。NFS可以将远程文件系统载入在本地文件系统下。远程的硬盘、目录和光驱都可以变本钱地主机目录树中的一个子目录。载入后与处置本人的文件系一致样运用即可。不只方便,也节省了反复保管文件的空间、传输文件的时

6、间及网络带宽。NFS特点NFS系统也是运用C/S体系构造,就是有效力器端与客户端效力器端提供共享的文件系统,必需把文件系统输出(export)出去客户端那么要把文件系统载入到本人的系统下运用NFS,需求在效力器端设置输出,在客户端设置载入NFS效力器端配置(1)封锁防火墙(2)配置共享目录-客户端主机IP范围(3)主机IP(4)启动NFS效力NFS客户端(1)设置客户端IP地址(2)挂载共享目录mount -t nfs 主机ip:共享目录 挂载点本卷须知:封锁防火墙,主机与客户端在同一ip段详细配置步骤效力器端1封锁防火墙详细配置步骤2配置NFS效力器详细配置步骤2-1设置共享目录和主机范围详

7、细配置步骤2-2设置其他选项详细配置步骤2-3设置其他选项详细配置步骤3)设置NFS效力器的IP详细配置步骤4启动NFS效力详细配置步骤客户端1配置ip详细配置步骤2挂载NFS/etc/exports它的根本格式是Directory host (权限选项、用户映像、)Directory:表示计划共享的目录称号;Host:共享这个目录的主机称号;权限选项:定义平安选项;权限选项1ro:只读,只允许客户机挂载这个文件系统为只读方式。2rw:明确指定共享目录为读/写权限。用户映像来限定某些用户对NFS共享文件的运用权限no_root_squash:其他平安选项1Insecure :以非平安端口的方式

8、访问,即默许用户端口是1024或者更高,而NFS效力器默许的平安的效力器端口应该是低于1024的。2Sync:根据恳求进展同步。例:vi /etc/exports/home/ls 0 (rw, insecure, no_root_squash)表示共享的目录为/home/ls,允许访问的客户机地址为0的主机,权限为可读可写rw,非平安方式访问insecure,让客户机的根用户在效力器上拥有根权限。例:vi /etc/exports/home/ls *(rw)表示共享的目录为/home/ls,允许恣意主机访问,权限可读可写 Bootloader是什么?Bootloader,为引导加载程序,是嵌入

9、式系统加电后运转的第一段代码,相当于PC机的BIOS。 Bootloader的位置:通常固化在硬件上的某个固态存储设备上,加电后自启动。基于 ARM处置器核的CPU在复位时通常都从地址 0 x00000000取它的第一条指令。在这个地址处安排的就是Bootloader。Bootloader是在操作系统运转之前执行的一段小程序。经过这段小程序,我们可以初始化硬件设备、建立内存空间的映像表,从而建立适当的系统软硬件环境,为最终调用操作系统内核做好预备。 3 BootloaderBootloader参数系统内核根文件系统从低地址到高地址方向Flash 几种发布的BootloaderBootloade

10、r是严重地依赖于硬件而实现的。每种不同体系构造的处置器都有不同的Bootloader。不过Bootloader的开展也趋于支持多种体系构造,如如今比较成熟的vivi、RedBoot和U-Boot等。ftpftp.denx.de/pub/u-boot/Bootloader操作方式大多数Bootloader都有两种不同的操作方式:“启动加载方式和“下载方式。其区别对于开发人员才有意义。从最终用户的角度看,Bootloader的作用就是用来加载操作系统,而并不存在所谓的启动加载方式与下载方式的区别。1、启动加载Bootloading方式即Bootloader从目的机上的某个固态存储设备上将操作系统加

11、载到 RAM 中运转,整个过程并没有用户的介入。启动加载方式是 Bootloader的正常任务方式,在嵌入式产品发布的时侯,Bootloader必需任务在这种方式下。2、下载Downloading方式下载方式:在这种方式下,目的机上的Bootloader将经过串口衔接或网络衔接等通讯手段从主机下载文件。下载内容及存储:主要是下载内核映像和根文件系统映像等。从主机下载的文件通常首先被Bootloader保管到目的机的RAM中,然后再被 Bootloader写到目的机上的FLASH 类固态存储设备中。下载方式运用场所:Bootloader的这种方式通常在第一次安装内核与根文件系统时被运用;此外,以

12、后的系统更新也会运用到这种任务方式。用户运用接口:任务于这种方式下的Bootloader通常都会向它的终端用户提供一个简单的命令行接口。 如在U-BOOT下,将出现“#提示符;在vivi 下出现“vivi提示符。下载Downloading方式例如Bootloader启动过程大多数 Boot Loader 启动都分为 stage1 和 stage2 两大部分。依赖于处置器体系构造和板级初始化的代码,通常都放在 stage1 中,用汇编言语实现而 stage2 那么通常用C言语来实现,这样可以实现更复杂的功能,而且代码会具有更好的可读性和可移植性。Boot Loader 的 stage1 通常包括

13、以下步骤(以执行的先后顺序):硬件设备初始化。为加载 Boot Loader 的 stage2 预备 RAM 空间。拷贝 Boot Loader 的 stage2 到 RAM 空间中。设置好堆栈跳转到 stage2 的 C 入口点。Stage1主要任务是硬件初始化,并预备第二阶段的C言语运转环境 封锁处置器内部指令/数据cache等设置CPU的速度和时钟频率RAM初始化初始化led等为了获得更快的执行速度,通常把 阶段2 的代码加载到 RAM 空间中来执行。 预备RAM空间思索的要素:阶段2代码大小、堆栈、页大小4KB的倍数、安排位置等。Boot Loader 的 stage2 通常包括以下步

14、骤(以执行的先后顺序):初始化本阶段要运用到的硬件设备。检测系统内存映射(memory map)。将 kernel 映像和根文件系统映像从 flash 上读到 RAM 空间中。为内核设置启动参数。调用内核。 stage2 的代码通常用 C 言语来实现,以便于实现更复杂的功能和获得更好的代码可读性和可移植性。与普通 C 言语运用程序不同的是,在编译和链接 boot loader 这样的程序时,我们不能运用 glibc 库中的任何支持函数。Stage2的主要目的是运转Linux内核,在此之前需求完成硬件和内存初始化任务。Bootloader调用Linux kernel的方法是直接跳转到内核的第一条

15、指令处。在跳转时必需满足以下条件:1)、CPU存放器的设置:R0为0;R1为机器类型ID;R2为启动参数,标志列表在RAM中的起始基地址。 2)、CPU方式: CPU必需设置为SVC方式,必需制止中断(IRQs和FIQs)。3)、 MMU 和 Cache的设置:MMU 必需封锁;指令 Cache 可以翻开也可以封锁; 数据 Cache 必需封锁。vivi Bootloader源码分析vivi是韩国Mizi公司开发的Bootloader,适用于ARM9处置器。vivi有两种任务方式,在启动时可以选择。在vivi启动时,经过串行口发出如下信息:Press Return to start the L

16、inux now, any other key for vivi按回车键启动Linux OS,按其它键进入vivi命令接口方式,可以运用vivi提供的命令进展一些操作。vivi源代码目录构造vivi源代码包含的目录有:arch、Documentation、drivers、init、include、lib、scripts、test、util等10目录,共300多个文件。各个目录内容如下:1、archarchitecture目录它下面的文件为与CPU硬件相关的初始化代码,此目录包含了所用vivi支持的CPU。普通只包含S3C2410 x的文件。2、Documentation目录其下文件为vivi运

17、用指南。3、drivers目录 存放的为MTD(memory technology device内存技术设备) 数据存储媒质设备读写控制文件和串行口操作文件,对串行口支持xmodem和ymodem协议。4、include目录存放一切的头文件,包括S3C2410微处置器的和S3C2410开发板的头文件。5、init目录该目录下是系统初始化文件main.c、version.c,后者是vivi版本信息,main.c为vivi整个初始化的构造。6、lib目录该目录下是公共运用及接口代码,如时钟功能文件time.c,堆栈初始化文件heap.c等文件。7、scripts目录该目录存放的是系统配置需求的脚本

18、文件,如menuconfig和configue文件。8、CVS目录一切的目录下面都有一个CVS目录,存放的是该目录的途径和它的子目录。vivi源代码文件与功能构造vivi源代码文件:1、vivi/arch/s3c2410/head.s2、一段过渡,实现循环调用,main前往后重新复位LDRSP,DW_STACK_STARTMOVFP,#0MOVA2,#0BLMAINMOVPC,#FLASH_BASE ; main前往后重新复位3、vivi/init/main.cvivi Bootloader接口命令命 令功 能Load下载flash或RAM命令PartMTD分区操作命令param设置、查看参数

19、命令Boot启动系统命令flashFlash管理命令viviload flash kernel xviviboot nand 0 x80000flash erase 0 x80000 0 xc0000vivi源码的修正移植vivi的移植方法步骤:对vivi进展修正移植对vivi进展配置对vivi进展编译下载、运转vivi1、修正vivi/Makefile1修正交叉编译库和头文件1修正编译器途径CROSS_COMPILE= 2修正编译器库文件途径:ARM_GCC_LIBS= 3添加交叉编译时头文件的搜索途径: LIBC_INCLUDE_DIR=2Linux内核包含文件 LINUX_INCLUDE

20、_DIR=编译vivi用到的交叉编译工具版本是cross-2.95.3.tar.bz2 2、修正Flash的分区信息vivi/arch/s3c2410/smdk.c#ifdef CONFIG_S3C2410_AMD_BOOTmtd_partition_t default_mtd_partitions = name:vivi,offset:0,size:0 x00020000,flag:0, name:param,offset:0 x00020000,size:0 x00010000,flag:0, name:kernel,offset:0 x00030000,size:0 x000C0000,

21、flag:0, name:root,offset:0 x00100000,size:0 x00140000,flag:MF_BONFS;#endif二、对vivi进展配置运转vivi配置程序menuconfig:makemenuconfig启动对vivi配置的主菜单,根据本人的目的系统逐项进展设置,设置完后退出保管即可。三、对vivi进展编译在vivi目录下执行以下命令: makecleanmake make clean是去除以前编译时生成的一切目的文件和暂时文件。假设没有错误,编译后会生成vivi的目的文件vivi.bin。四、对vivi进展下载利用JTAG口将vivi下载到目的板的 fla

22、sh空间0 x00000-0 x20000。然后对目的板加电,使vivi启动运转,察看运转情况。Jflash-s3c2410 /t=其中,Flash 类型有如下选项: 1:SMDK2410:K9S3208 4MB 2:SMDK2410:K9S6408 8MB 3:SMDK2410:K9S2808 16MB 4:SMDK2410:K9S5608 32MB 5:SMDK2410:K9S1208 64MB 6:SMDK2410:AM29LV800BB在烧写过程中,有3次提示,要求用户选择:1在“Select the function to test :后面输入“ 0 ,表示对型号为K9S1208的F

23、lash芯片进展烧写,烧写类型为程序。2在“Input target block number: 后面输入“ 0 ,表示从偏移地址0处开场烧写。经过数分钟的烧写之后,将vivi烧写到Flash之中。再次出现提示:在“Select the function to test : 后面输入“ 2 ,退出vivi烧写。并封锁开发板电源,拔下JTAG衔接线。在完成vivi烧写之后,运用串口线,经过串口将宿主机与开发板衔接起来。在宿主机上翻开超级终端minicom窗口,再按下“Backspace回格键不放,接通开发板电源。这时我们经过超级终端minicom窗口可以察看到嵌入式系统开发板上Linux系统的启

24、动过程,并在出现提示符“ vivi 时停住假设Linux系统有启动,但没有 “ vivi 提示符出现,那么需求再一次按住键盘上的“Backspace 回格键不放,对开发板“Reset重启。进入vivi提示形状1对Flash分区在“vivi 提示符下用命令“bon part 对Flash进展分区:Bon part 0 192k 1M其中,从地址0处开场为vivi,地址192k192*1024196608处开场为内核,地址1M1*1024*10241048576处开场为文件系统。由于对Flash进展了重新分区,原来烧写在Flash中从地址0处开场的引导加载程序vivi亦被擦除了,因此,这时不能掉电

25、,也不能重启开发板,必需紧接着重新烧写vivi程序。(2)vivi load flash vivi x当出现:Ready for downloading using xmodem.Waiting.然后,按下Ctrl+A+S ,弹出一个对话框3烧写内核当vivi烧写终了后,需求重新启动开发板,使刚刚的分区及引导程序生效。重新启动开发板时,操作过程如前所述,按下“Backspace回格键不放的同时,重新启动开发板系统,出现提示符“ vivi 。vivi load flash kernel x4烧写文件系统紧接着上面的操作,在提示符“vivi下,输入命令:vivi load flash root x

26、Linux内核Linux内核主要功能进程管理内存管理文件管理设备管理网络管理 Linux内核构造Linux配置与编译编译内核的步骤:下载内核源码 修正内核目录树根下的的Makefile,指明交叉编译器 设置环境变量 配置内核产生.config文件 输入内核配置命令(make menuconfig),进展内核选项的选择 编译内核下载Linux内核1、确定处置器类型 Linux内核源代码支持20多种微处置器类型,在编译之前要先确定微处置器类型。ARCH:= armCROSS_COMPILE=arm-linux-Linux2.4 内核还没有包含S3C2410处置器Linux2.6内核曾经支持。2、确

27、定配置方法内核支持 4种不同的配置方法,每种方法是读取一个根目录下隐藏的配置文件 “ .config 。这 4 种方式如下。 make config:基于文本的最为传统的配置界面,不引荐运用。 make menuconfig:基于文本选单的配置界面,字符终端下引荐运用。 make xconfig:基于图形窗口方式的配置界面,Xwindow 下引荐运用。 make oldconfig:自动读入“.config配置文件,并且只需求用户设定前次没有设定过的选项。 【例】以 make menuconfig 为例进展S3C2410系统的内裁剪核配置。# make menuconfig 弹出内核裁剪配置窗口 “System Type -子项的界面在完成配置之后,就可以保管退出,如图 所示。内核编译make zImagearch/$ARCH/boot目录中。 文件系统 文件系统是嵌入式Linux系统必备的一个组成部分,是系统文件和运用文件存储的地方。 文件目录/bin目录下需求包含常用的用户命令,如sh等。/sbin目录要包含一切系统命令,如reboot等 。/etc目录下是系统配置文件。/boot目录下是内核映像/dev目录含有系统一切的特殊设备文件/lib目录包含系统一切的库文件/mnt目录只用于挂接,可以是空目录/proc目录是/p

温馨提示

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

最新文档

评论

0/150

提交评论