




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
armlinux系统开发流程1、开发目标硬件系统2、建立交叉编译工具3、开发bootloader4、移植linux内核5、开发一个文件系统6、开发相关硬件的驱动程序7、开发上层应用程序8、烧写bootloader、内核、文件系统等。armlinux系统开发流程1、开发目标硬件系统嵌入式交叉编译环境简介交叉编译就是在一个平台上生成另一个平台上的可执行代码。这里说的平台分别指的是主机平台Host和目标平台Target。就我们在ARM平台上移植Linux来说,Host是一台一般的PC机,它通过串口或网络接口与Target通信;Target是arm-linux平台(这里说的arm指的是平台所使用的CPU是ARM9处理器,linux指的是运行的操作系统是Linux)。我们在Host上开发程序,并在这个平台上运行交叉编译器CrossComplier,编译我们的程序,而由CrossComplier生成的程序将在Target上运行嵌入式交叉编译环境简介交叉编译就是在一个平台上生成另一个平台
需要交叉编译的原因:首先,在项目的起始阶段,目标平台尚未建立,因此需要做交叉编译,以生成我们所需要的Bootloader以及kernel(因为Bootloader和kernel的源码需要经过交叉编译后才可以在目标平台上运行);其次,当目标平台能启动之后,由于目标平台上资源的限制,当我们编译大型程序时,依然可能需要用到交叉编译。需要交叉编译的原因:如何建立交叉编译工具链构建交叉工具链通常有以下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如何建立交叉编译工具链构建交叉工具链通常有以下3种方法:ft配置开发板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配置开发板PXA270嵌入式系统的宿主机交叉编译环境arm-目标机与主机的通讯方式目标机与主机的通讯方式1、minicomminicom很像Windows下面的超级终端,我們利用minicom作为目标板的终端显示视窗;通过串口控制目标板1、minicomminicom很像Windows下面的2、从菜单中选择SerialPortSetup配置minicom1、#minicom-s2、从菜单中选择SerialPortSetup配置min3、“A”以设置“SerialDevice”。如果使用串口1,则输入/dev/ttyS0。如果使用串口2,则输入/dev/ttyS1。3、“A”以设置“SerialDevice”。如果使用串口4、“E”键进入设置“bps/par/Bits”(波特率)界面,再按“I”以设置波特率为1152004、“E”键进入设置“bps/par/Bits”(波特率)界设置被保存到“/etc/minirc.dfl”设置被保存到“/etc/minirc.dfl”目标板上电后,目标板的启动过程显示在minicom;CTR+A+s---zmodern目标板上电后,目标板的启动过程显示在minicom;2NFS服务NFS服务可以使网络上的同为Linux或Unix系统主机共享文件系统。NFS可以将远程文件系统载入在本地文件系统下。远程的硬盘、目录和光驱都可以变成本地主机目录树中的一个子目录。载入后与处理自己的文件系统一样使用即可。不只方便,也节省了重复保存文件的空间、传输文件的时间及网络带宽。2NFS服务NFS服务可以使网络上的同为Linux或UniNFS特点NFS系统也是使用C/S体系结构,就是有服务器端与客户端服务器端提供共享的文件系统,必须把文件系统输出(export)出去客户端则要把文件系统载入到自己的系统下使用NFS,需要在服务器端设置输出,在客户端设置载入NFS特点NFS系统也是使用C/S体系结构,就是有服务器端与NFS服务器端配置(1)关闭防火墙(2)配置共享目录----客户端主机IP范围(3)主机IP(4)启动NFS服务NFS客户端(1)设置客户端IP地址(2)挂载共享目录mount-tnfs主机ip:共享目录挂载点注意事项:关闭防火墙,主机与客户端在同一ip段NFS服务器端配置NFS客户端mount-tnfs主具体配置步骤服务器端1)关闭防火墙具体配置步骤具体配置步骤2)配置NFS服务器具体配置步骤2)配置NFS服务器具体配置步骤2-1)设置共享目录和主机范围具体配置步骤2-1)设置共享目具体配置步骤2-2)设置其他选项具体配置步骤2-2)设置其他选项具体配置步骤2-3)设置其他选项具体配置步骤2-3)设置其他选项具体配置步骤3)设置NFS服务器的IP具体配置步骤3)设置NFS具体配置步骤4)启动NFS服务具体配置步骤4)启动NFS服务具体配置步骤客户端1)配置ip具体配置步骤客户端具体配置步骤2)挂载NFS具体配置步骤2)挂载NFS/etc/exports它的基本格式是Directoryhost(权限选项、用户映像、)Directory:表示打算共享的目录名称;Host:共享这个目录的主机名称;权限选项:定义安全选项;/etc/exports权限选项1)ro:只读,只允许客户机挂载这个文件系统为只读模式。2)rw:明确指定共享目录为读/写权限。用户映像来限定某些用户对NFS共享文件的使用权限no_root_squash:其他安全选项1)Insecure:以非安全端口的方式访问,即默认用户端口是1024或者更高,而NFS服务器默认的安全的服务器端口应该是低于1024的。2)Sync:根据请求进行同步。权限选项例:vi/etc/exports/home/ls0(rw,insecure,no_root_squash)表示共享的目录为/home/ls,允许访问的客户机地址为0的主机,权限为可读可写(rw),非安全方式访问(insecure),让客户机的根用户在服务器上拥有根权限。例:例:vi/etc/exports/home/ls*(rw)表示共享的目录为/home/ls,允许任意主机访问,权限可读可写例:
Bootloader是什么?Bootloader,为引导加载程序,是嵌入式系统加电后运行的第一段代码,相当于PC机的BIOS。Bootloader的位置:通常固化在硬件上的某个固态存储设备上,加电后自启动。基于ARM处理器核的CPU在复位时通常都从地址0x00000000取它的第一条指令。在这个地址处安排的就是Bootloader。Bootloader是在操作系统运行之前执行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映像表,从而建立适当的系统软硬件环境,为最终调用操作系统内核做好准备。
3BootloaderBootloader参数系统内核根文件系统从低地址到高地址方向FlashBootloader是什么?3BootloaderBoo
几种发布的BootloaderBootloader是严重地依赖于硬件而实现的。每种不同体系结构的处理器都有不同的Bootloader。不过Bootloader的发展也趋于支持多种体系结构,如现在比较成熟的vivi、RedBoot和U-Boot等。ftp://ftp.denx.de/pub/u-boot/几种发布的BootloaderBootloader是严重地Bootloader操作模式大多数Bootloader都有两种不同的操作模式:“启动加载”模式和“下载”模式。其区别对于开发人员才有意义。从最终用户的角度看,Bootloader的作用就是用来加载操作系统,而并不存在所谓的启动加载模式与下载模式的区别。Bootloader操作模式大多数Bootloader都有两1、启动加载(Bootloading)模式 即Bootloader从目标机上的某个固态存储设备上将操作系统加载到RAM中运行,整个过程并没有用户的介入。 启动加载模式是Bootloader的正常工作模式,在嵌入式产品发布的时侯,Bootloader必须工作在这种模式下。1、启动加载(Bootloading)模式2、下载(Downloading)模式
下载方式:在这种模式下,目标机上的Bootloader将通过串口连接或网络连接等通信手段从主机下载文件。
下载内容及存储:主要是下载内核映像和根文件系统映像等。从主机下载的文件通常首先被Bootloader保存到目标机的RAM中,然后再被Bootloader写到目标机上的FLASH类固态存储设备中。2、下载(Downloading)模式下载模式应用场合:Bootloader的这种模式通常在第一次安装内核与根文件系统时被使用;此外,以后的系统更新也会使用到这种工作模式。用户应用接口:工作于这种模式下的Bootloader通常都会向它的终端用户提供一个简单的命令行接口。如在U-BOOT下,将出现“#”提示符;在vivi下出现“vivi>”提示符。下载模式应用场合:Bootloader的这种模式通常在第一次下载(Downloading)模式示例下载(Downloading)模式示例Bootloader启动过程大多数BootLoader启动都分为stage1和stage2两大部分。依赖于处理器体系结构和板级初始化的代码,通常都放在stage1中,用汇编语言实现而stage2则通常用C语言来实现,这样可以实现更复杂的功能,而且代码会具有更好的可读性和可移植性。Bootloader启动过程大多数BootLoaderBootLoader的stage1通常包括以下步骤(以执行的先后顺序):硬件设备初始化。为加载BootLoader的stage2准备RAM空间。拷贝BootLoader的stage2到RAM空间中。设置好堆栈跳转到stage2的C入口点。
Stage1主要工作是硬件初始化,并准备第二阶段的C语言运行环境关闭处理器内部指令/数据cache等设置CPU的速度和时钟频率RAM初始化初始化led等为了获得更快的执行速度,通常把阶段2的代码加载到RAM空间中来执行。准备RAM空间考虑的因素:阶段2代码大小、堆栈、页大小(4KB的倍数)、安排位置等。BootLoader的stage1关闭处理器内部指令BootLoader的stage2通常包括以下步骤(以执行的先后顺序):初始化本阶段要使用到的硬件设备。检测系统内存映射(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必须关闭。BootLoader的stage2BootloaderviviBootloader源码分析vivi是韩国Mizi公司开发的Bootloader,适用于ARM9处理器。vivi有两种工作模式,在启动时可以选择。在vivi启动时,通过串行口发出如下信息:PressReturntostarttheLinuxnow,anyotherkeyforvivi按回车键启动LinuxOS,按其它键进入vivi命令接口模式,可以使用vivi提供的命令进行一些操作。viviBootloader源码分析vivi是韩国Mizivivi源代码目录结构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开发板的头文件。vivi源代码目录结构vivi源代码包含的目录有:arch、5、init目录该目录下是系统初始化文件main.c、version.c,后者是vivi版本信息,main.c为vivi整个初始化的结构。6、lib目录该目录下是公共应用及接口代码,如时钟功能文件time.c,堆栈初始化文件heap.c等文件。7、scripts目录该目录存放的是系统配置需要的脚本文件,如menuconfig和configue文件。8、CVS目录所有的目录下面都有一个CVS目录,存放的是该目录的路径和它的子目录。5、init目录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.cvivi源代码文件与功能结构vivi源代码文件:viviBootloader接口命令命令功能Load下载flash或RAM命令PartMTD分区操作命令param设置、查看参数命令Boot启动系统命令flashFlash管理命令vivi>loadflashkernelxvivi>bootnand0x80000flasherase0x800000xc0000viviBootloader接口命令命令功vivi源码的修改移植 vivi的移植方法步骤: 对vivi进行修改移植 对vivi进行配置 对vivi进行编译 下载、运行vivivivi源码的修改移植 vivi的移植方法步骤: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
1、修改vivi/Makefile编译vivi用到的交叉编译
2、修改Flash的分区信息(vivi/arch/s3c2410/smdk.c)
#ifdefCONFIG_S3C2410_AMD_BOOTmtd_partition_tdefault_mtd_partitions[]={ { name: "vivi", offset: 0, size: 0x00020000, flag: 0 },
{ name: "param", offset: 0x00020000, size: 0x00010000, flag: 0 },{ name: "kernel", offset: 0x00030000, size: 0x000C0000, flag: 0 },{ name: "root", offset: 0x00100000, size: 0x00140000, flag: MF_BONFS }};#endif 2、修改Flash的分区信息(vivi/arch/s3c
二、对vivi进行配置 运行vivi配置程序menuconfig: make menuconfig 启动对vivi配置的主菜单,根据自己的目标系统逐项进行设置,设置完后退出保存即可。 二、对vivi进行配置
三、对vivi进行编译 在vivi目录下执行以下命令:
make clean make
makeclean是清除以前编译时生成的所有目标文件和临时文件。 如果没有错误,编译后会生成vivi的目标文件vivi.bin。 三、对vivi进行编译 四、对vivi进行下载 利用JTAG口将vivi下载到目标板的flash空间(0x00000---0x20000)。 然后对目标板加电,使vivi启动运行,观察运行情况。Jflash-s3c2410<vivi文件名>/t=<flash_type>其中,Flash类型有如下选项:1:SMDK2410:K9S32084MB2:SMDK2410:K9S64088MB3:SMDK2410:K9S280816MB4:SMDK2410:K9S560832MB5:SMDK2410:K9S120864MB6:SMDK2410:AM29LV800BBJflash-s3c2410<vivi文件名>/在烧写过程中,有3次提示,要求用户选择:(1)在“Selectthefunctiontotest:”后面输入“0”,表示对型号为K9S1208的Flash芯片进行烧写,烧写类型为程序。(2)在“Inputtargetblocknumber:”后面输入“0”,表示从偏移地址0处开始烧写。在烧写过程中,有3次提示,要求用户选择:经过数分钟的烧写之后,将vivi烧写到Flash之中。再次出现提示:经过数分钟的烧写之后,将vivi烧写到Flash之中。再次出在“Selectthefunctiontotest:”后面输入“2”,退出vivi烧写。并关闭开发板电源,拔下JTAG连接线。在完成vivi烧写之后,使用串口线,通过串口将宿主机与开发板连接起来。在“Selectthefunctiontotest在宿主机上打开超级终端minicom窗口,再按下“Backspace”(回格)键不放,接通开发板电源。这时我们通过超级终端minicom窗口可以观察到嵌入式系统开发板上Linux系统的启动过程,并在出现提示符“vivi>”时停住(如果Linux系统有启动,但没有“vivi>”提示符出现,则需要再一次按住键盘上的“Backspace”(回格)键不放,对开发板“Reset”重启)。进入vivi提示状态在宿主机上打开超级终端minicom窗口,再按下“Backs(1)对Flash分区在“vivi>”提示符下用命令“bonpart”对Flash进行分区:Bonpart0192k1M其中,从地址0处开始为vivi,地址192k(192*1024=196608)处开始为内核,地址1M(1*1024*1024=1048576)处开始为文件系统。(1)对Flash分区由于对Flash进行了重新分区,原来烧写在Flash中从地址0处开始的引导加载程序vivi亦被擦除了,因此,这时不能掉电,也不能重启开发板,必须紧接着重新烧写vivi程序。(2)vivi>loadflashvivix当出现:Readyfordownloadingusingxmodem...Waiting...然后,按下Ctrl+A+S,弹出一个对话框由于对Flash进行了重新分区,原来烧写在Flash中从地址(3)烧写内核当vivi烧写完毕后,需要重新启动开发板,使刚才的分区及引导程序生效。重新启动开发板时,操作过程如前所述,按下“Backspace”(回格)键不放的同时,重新启动开发板系统,出现提示符“vivi>”。vivi>loadflashkernelx4)烧写文件系统紧接着上面的操作,在提示符“vivi>”下,输入命令:vivi>loadflashrootx(3)烧写内核Linux内核Linux内核主要功能进程管理内存管理文件管理设备管理网络管理Linux内核Linux内核主要功能Linux内核结构Linux内核结构Linux配置与编译编译内核的步骤:下载内核源码修改内核目录树根下的的Makefile,指明交叉编译器设置环境变量配置内核产生.config文件输入内核配置命令(makemenuconfig),进行内核选项的选择编译内核下载Linux内核Linux配置与编译编译内核的步骤:1、确定处理器类型Linux内核源代码支持20多种微处理器类型,在编译之前要先确定微处理器类型。ARCH:=armCROSS_COMPILE=arm-linux-Linux2.4内核还没有包含S3C2410处理器Linux2.6内核已经支持。1、确定处理器类型ARCH:=armCROSS_COMPI2、确定配置方法内核支持4种不同的配置方法,每种方法是读取一个根目录下隐藏的配置文件“.config”。这4种方式如下。makeconfig:基于文本的最为传统的配置界面,不推荐使用。makemenuconfig:基于文本选单的配置界面,字符终端下推荐使用。makexconfig:基于图形窗口模式的配置界面,Xwindow下推荐使用。makeoldconfig:自动读入“.config”配置文件,并且只要求用户设定前次没有设定过的选项。
2、确定配置方法【例】以makemenuconfig为例进行S3C2410系统的内裁剪核配置。#makemenuconfig弹出内核裁剪配置窗口【例】以makemenuconfig为例进行S3C24“SystemType---→”子项的界面“SystemType---→”子项的界面在完成配置之后,就可以保存退出,如图所示。在完成配置之后,就可以保存退出,如图所示。内核编译makezImagearch/$(ARCH)/boot”目录中。
内核编译文件系统文件系统是嵌入式Linux系统必备的一个组成部分,是系统文件和应用文件存储的地方。文件系统文件系统是嵌入式Linux系统必备的一个组成部分,文件目录/bin 目录下需要包含常用的用户命令,如sh等。/sbin 目录要包含所有系统命令,如reboot等。/etc 目录下是系统配置文件。/boot 目录下是内核映像/dev 目录含有系统所有的特殊设备文件/lib 目录包含系统所有的库文件/mnt 目录只用于挂接,可以是空目录/proc 目录是/proc文件系统的主目录,包含了系统的启动信息/usr 目录含有用户选取的命令。文件目录/bin 目录下需要包含常用的用户命令,如sh等。上述目录还包含适当的文件和子目录(1)目录/binbin中包含命令文件:date、sh、login、mount、umount、cp、ls、ftp、ping。(2)目录/sbinsbin包含命令文件mingetty、reboot、halt、sulogin、update、init、fsck、telinit和mkfs。上述目录还包含适当的文件和子目录(1)目录/bin(3)目录/etcetc包含配置文件HOSTNAME、bashrc、fstab、group、inittab、nsswitch、pam.d、passwd、pwdb.conf、rc.d、securetty、shadow、shells以及lilo.conf。(3)目录/etc(4)目录/devdev包含设备文件console、hda1、hda2、hda3、kmem、mem、null、tty1和ttyS0。5)目录/liblib包含库文件libc.so.6、ld-linux.so.2、libcom_err.so.2、libcrypt.so.2、libpam.so.0、libpam_misc.so.2、libuuid.so.2、libnss_files.so.2、libtermcap.so.2和security。(4)目录/dev制作文件系统的镜像文件嵌入式Linux支持多种文件系统。这些文件系统的总体架构是一样的,都是采用目录树的结构。在嵌入式中常见的文件系统有cramfs、romfs、jffs、yaffs等。制作文件系统的镜像文件嵌入式Linux支持多种文件系统。制作cramfs文件系统cramfs文件系统是一种经压缩的、极为简单的只读文件系统,因此非常适合嵌入式系统。不同的文件系统都有相应的制作工具,制作cramfs文件系统需要用到的工具是mkcramfs。制作cramfs文件系统cramfs文件系统是一种经压假设用户已经设置了一个文件系统,在目录“/fs/root/”下,如下所示:
#lsrootbindevetclibprocsbinusr使用mkcramfs工具了,命令格式为:
mkcramfs[系统文件目录名]
[生成的镜像文件名]/projects/cramfs在嵌入式Linux中busybox是构造文件系统最常用的软件工具包/downloads假设用户已经设置了一个文件系统,在目录“/fs/root/”演讲完毕,谢谢观看!演讲完毕,谢谢观看!armlinux系统开发流程1、开发目标硬件系统2、建立交叉编译工具3、开发bootloader4、移植linux内核5、开发一个文件系统6、开发相关硬件的驱动程序7、开发上层应用程序8、烧写bootloader、内核、文件系统等。armlinux系统开发流程1、开发目标硬件系统嵌入式交叉编译环境简介交叉编译就是在一个平台上生成另一个平台上的可执行代码。这里说的平台分别指的是主机平台Host和目标平台Target。就我们在ARM平台上移植Linux来说,Host是一台一般的PC机,它通过串口或网络接口与Target通信;Target是arm-linux平台(这里说的arm指的是平台所使用的CPU是ARM9处理器,linux指的是运行的操作系统是Linux)。我们在Host上开发程序,并在这个平台上运行交叉编译器CrossComplier,编译我们的程序,而由CrossComplier生成的程序将在Target上运行嵌入式交叉编译环境简介交叉编译就是在一个平台上生成另一个平台
需要交叉编译的原因:首先,在项目的起始阶段,目标平台尚未建立,因此需要做交叉编译,以生成我们所需要的Bootloader以及kernel(因为Bootloader和kernel的源码需要经过交叉编译后才可以在目标平台上运行);其次,当目标平台能启动之后,由于目标平台上资源的限制,当我们编译大型程序时,依然可能需要用到交叉编译。需要交叉编译的原因:如何建立交叉编译工具链构建交叉工具链通常有以下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如何建立交叉编译工具链构建交叉工具链通常有以下3种方法:ft配置开发板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配置开发板PXA270嵌入式系统的宿主机交叉编译环境arm-目标机与主机的通讯方式目标机与主机的通讯方式1、minicomminicom很像Windows下面的超级终端,我們利用minicom作为目标板的终端显示视窗;通过串口控制目标板1、minicomminicom很像Windows下面的2、从菜单中选择SerialPortSetup配置minicom1、#minicom-s2、从菜单中选择SerialPortSetup配置min3、“A”以设置“SerialDevice”。如果使用串口1,则输入/dev/ttyS0。如果使用串口2,则输入/dev/ttyS1。3、“A”以设置“SerialDevice”。如果使用串口4、“E”键进入设置“bps/par/Bits”(波特率)界面,再按“I”以设置波特率为1152004、“E”键进入设置“bps/par/Bits”(波特率)界设置被保存到“/etc/minirc.dfl”设置被保存到“/etc/minirc.dfl”目标板上电后,目标板的启动过程显示在minicom;CTR+A+s---zmodern目标板上电后,目标板的启动过程显示在minicom;2NFS服务NFS服务可以使网络上的同为Linux或Unix系统主机共享文件系统。NFS可以将远程文件系统载入在本地文件系统下。远程的硬盘、目录和光驱都可以变成本地主机目录树中的一个子目录。载入后与处理自己的文件系统一样使用即可。不只方便,也节省了重复保存文件的空间、传输文件的时间及网络带宽。2NFS服务NFS服务可以使网络上的同为Linux或UniNFS特点NFS系统也是使用C/S体系结构,就是有服务器端与客户端服务器端提供共享的文件系统,必须把文件系统输出(export)出去客户端则要把文件系统载入到自己的系统下使用NFS,需要在服务器端设置输出,在客户端设置载入NFS特点NFS系统也是使用C/S体系结构,就是有服务器端与NFS服务器端配置(1)关闭防火墙(2)配置共享目录----客户端主机IP范围(3)主机IP(4)启动NFS服务NFS客户端(1)设置客户端IP地址(2)挂载共享目录mount-tnfs主机ip:共享目录挂载点注意事项:关闭防火墙,主机与客户端在同一ip段NFS服务器端配置NFS客户端mount-tnfs主具体配置步骤服务器端1)关闭防火墙具体配置步骤具体配置步骤2)配置NFS服务器具体配置步骤2)配置NFS服务器具体配置步骤2-1)设置共享目录和主机范围具体配置步骤2-1)设置共享目具体配置步骤2-2)设置其他选项具体配置步骤2-2)设置其他选项具体配置步骤2-3)设置其他选项具体配置步骤2-3)设置其他选项具体配置步骤3)设置NFS服务器的IP具体配置步骤3)设置NFS具体配置步骤4)启动NFS服务具体配置步骤4)启动NFS服务具体配置步骤客户端1)配置ip具体配置步骤客户端具体配置步骤2)挂载NFS具体配置步骤2)挂载NFS/etc/exports它的基本格式是Directoryhost(权限选项、用户映像、)Directory:表示打算共享的目录名称;Host:共享这个目录的主机名称;权限选项:定义安全选项;/etc/exports权限选项1)ro:只读,只允许客户机挂载这个文件系统为只读模式。2)rw:明确指定共享目录为读/写权限。用户映像来限定某些用户对NFS共享文件的使用权限no_root_squash:其他安全选项1)Insecure:以非安全端口的方式访问,即默认用户端口是1024或者更高,而NFS服务器默认的安全的服务器端口应该是低于1024的。2)Sync:根据请求进行同步。权限选项例:vi/etc/exports/home/ls0(rw,insecure,no_root_squash)表示共享的目录为/home/ls,允许访问的客户机地址为0的主机,权限为可读可写(rw),非安全方式访问(insecure),让客户机的根用户在服务器上拥有根权限。例:例:vi/etc/exports/home/ls*(rw)表示共享的目录为/home/ls,允许任意主机访问,权限可读可写例:
Bootloader是什么?Bootloader,为引导加载程序,是嵌入式系统加电后运行的第一段代码,相当于PC机的BIOS。Bootloader的位置:通常固化在硬件上的某个固态存储设备上,加电后自启动。基于ARM处理器核的CPU在复位时通常都从地址0x00000000取它的第一条指令。在这个地址处安排的就是Bootloader。Bootloader是在操作系统运行之前执行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映像表,从而建立适当的系统软硬件环境,为最终调用操作系统内核做好准备。
3BootloaderBootloader参数系统内核根文件系统从低地址到高地址方向FlashBootloader是什么?3BootloaderBoo
几种发布的BootloaderBootloader是严重地依赖于硬件而实现的。每种不同体系结构的处理器都有不同的Bootloader。不过Bootloader的发展也趋于支持多种体系结构,如现在比较成熟的vivi、RedBoot和U-Boot等。ftp://ftp.denx.de/pub/u-boot/几种发布的BootloaderBootloader是严重地Bootloader操作模式大多数Bootloader都有两种不同的操作模式:“启动加载”模式和“下载”模式。其区别对于开发人员才有意义。从最终用户的角度看,Bootloader的作用就是用来加载操作系统,而并不存在所谓的启动加载模式与下载模式的区别。Bootloader操作模式大多数Bootloader都有两1、启动加载(Bootloading)模式 即Bootloader从目标机上的某个固态存储设备上将操作系统加载到RAM中运行,整个过程并没有用户的介入。 启动加载模式是Bootloader的正常工作模式,在嵌入式产品发布的时侯,Bootloader必须工作在这种模式下。1、启动加载(Bootloading)模式2、下载(Downloading)模式
下载方式:在这种模式下,目标机上的Bootloader将通过串口连接或网络连接等通信手段从主机下载文件。
下载内容及存储:主要是下载内核映像和根文件系统映像等。从主机下载的文件通常首先被Bootloader保存到目标机的RAM中,然后再被Bootloader写到目标机上的FLASH类固态存储设备中。2、下载(Downloading)模式下载模式应用场合:Bootloader的这种模式通常在第一次安装内核与根文件系统时被使用;此外,以后的系统更新也会使用到这种工作模式。用户应用接口:工作于这种模式下的Bootloader通常都会向它的终端用户提供一个简单的命令行接口。如在U-BOOT下,将出现“#”提示符;在vivi下出现“vivi>”提示符。下载模式应用场合:Bootloader的这种模式通常在第一次下载(Downloading)模式示例下载(Downloading)模式示例Bootloader启动过程大多数BootLoader启动都分为stage1和stage2两大部分。依赖于处理器体系结构和板级初始化的代码,通常都放在stage1中,用汇编语言实现而stage2则通常用C语言来实现,这样可以实现更复杂的功能,而且代码会具有更好的可读性和可移植性。Bootloader启动过程大多数BootLoaderBootLoader的stage1通常包括以下步骤(以执行的先后顺序):硬件设备初始化。为加载BootLoader的stage2准备RAM空间。拷贝BootLoader的stage2到RAM空间中。设置好堆栈跳转到stage2的C入口点。
Stage1主要工作是硬件初始化,并准备第二阶段的C语言运行环境关闭处理器内部指令/数据cache等设置CPU的速度和时钟频率RAM初始化初始化led等为了获得更快的执行速度,通常把阶段2的代码加载到RAM空间中来执行。准备RAM空间考虑的因素:阶段2代码大小、堆栈、页大小(4KB的倍数)、安排位置等。BootLoader的stage1关闭处理器内部指令BootLoader的stage2通常包括以下步骤(以执行的先后顺序):初始化本阶段要使用到的硬件设备。检测系统内存映射(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必须关闭。BootLoader的stage2BootloaderviviBootloader源码分析vivi是韩国Mizi公司开发的Bootloader,适用于ARM9处理器。vivi有两种工作模式,在启动时可以选择。在vivi启动时,通过串行口发出如下信息:PressReturntostarttheLinuxnow,anyotherkeyforvivi按回车键启动LinuxOS,按其它键进入vivi命令接口模式,可以使用vivi提供的命令进行一些操作。viviBootloader源码分析vivi是韩国Mizivivi源代码目录结构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开发板的头文件。vivi源代码目录结构vivi源代码包含的目录有:arch、5、init目录该目录下是系统初始化文件main.c、version.c,后者是vivi版本信息,main.c为vivi整个初始化的结构。6、lib目录该目录下是公共应用及接口代码,如时钟功能文件time.c,堆栈初始化文件heap.c等文件。7、scripts目录该目录存放的是系统配置需要的脚本文件,如menuconfig和configue文件。8、CVS目录所有的目录下面都有一个CVS目录,存放的是该目录的路径和它的子目录。5、init目录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.cvivi源代码文件与功能结构vivi源代码文件:viviBootloader接口命令命令功能Load下载flash或RAM命令PartMTD分区操作命令param设置、查看参数命令Boot启动系统命令flashFlash管理命令vivi>loadflashkernelxvivi>bootnand0x80000flasherase0x800000xc0000viviBootloader接口命令命令功vivi源码的修改移植 vivi的移植方法步骤: 对vivi进行修改移植 对vivi进行配置 对vivi进行编译 下载、运行vivivivi源码的修改移植 vivi的移植方法步骤: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
1、修改vivi/Makefile编译vivi用到的交叉编译
2、修改Flash的分区信息(vivi/arch/s3c2410/smdk.c)
#ifdefCONFIG_S3C2410_AMD_BOOTmtd_partition_tdefault_mtd_partitions[]={ { name: "vivi", offset: 0, size: 0x00020000, flag: 0 },
{ name: "param", offset: 0x00020000, size: 0x00010000, flag: 0 },{ name: "kernel", offset: 0x00030000, size: 0x000C0000, flag: 0 },{ name: "root", offset: 0x00100000, size: 0x00140000, flag: MF_BONFS }};#endif 2、修改Flash的分区信息(vivi/arch/s3c
二、对vivi进行配置 运行vivi配置程序menuconfig: make menuconfig 启动对vivi配置的主菜单,根据自己的目标系统逐项进行设置,设置完后退出保存即可。 二、对vivi进行配置
三、对vivi进行编译 在vivi目录下执行以下命令:
make clean make
makeclean是清除以前编译时生成的所有目标文件和临时文件。 如果没有错误,编译后会生成vivi的目标文件vivi.bin。 三、对vivi进行编译 四、对vivi进行下载 利用JTAG口将vivi下载到目标板的flash空间(0x00000---0x20000)。 然后对目标板加电,使vivi启动运行,观察运行情况。Jflash-s3c2410<vivi文件名>/t=<flash_type>其中,Flash类型有如下选项:1:SMDK2410:K9S32084MB2:SMDK2410:K9S64088MB3:SMDK2410:K9S280816MB4:SMDK2410:K9S560832MB5:SMDK2410:K9S120864MB6:SMDK2410:AM29LV800BBJflash-s3c2410<vivi文件名>/在烧写过程中,有3次提示,要求用户选择:(1)在“Selectthefunctiontotest:”后面输入“0”,表示对型号为K9S1208的Flash芯片进行烧写,烧写类型为程序。(2)在“Inputtargetblocknumber:”后面输入“0”,表示从偏移地址0处开始烧写。在烧写过程中,有3次提示,要求用户选择:经过数分钟的烧写之后,将vivi烧写到Flash之中。再次出现提示:经过数分钟的烧写之后,将vivi烧写到Flash之中。再次出在“Selectthefunctiontotest:”后面输入“2”,退出vivi烧写。并关闭开发板电源,拔下JTAG连接线。在完成vivi烧写之后,使用串口线,通过串口将宿主机与开发板连接起来。在“Selectthefunctiontotest在宿主机上打开超级终端minicom窗口,再按下“Backspace”(回格)键不放,接通开发板电源。这时我们通过超级终端minicom窗口可以观察到嵌入式系统开发板上Linux系统的启动过程,并在出现提示符“vivi>”时停住(如果Linux系统有启动,但没有“vivi>”提示符出现,则需要再一次按住键盘上的“Backspace”(回格)键不放,对开发板“Reset”重启)。进入vivi提示状态在宿主机上打开超级终端minicom窗口,再按下“Backs(1)对Flash分区在“vivi>”提示符下用命令“bonpart”对Flash进行分区:Bonpart0192k1M其中,从地址0处开始为vivi,地址192k(192*1024=196608)处开始为内核,地址1M(1*1024*1024=1048576)处开始为文件系统。(1)对Flash分区由于对Flash进行了重新分区,原来烧写在Flash中从地址0处开始的引导加载程序vivi亦被擦除了,因此,这时不能掉电,也不能重启开发板,必须紧接着重新烧写vivi程序。(2)vivi>loadflashvivix当出现:Readyfordownloadingusingxmodem...Waiting...然后,按下Ctrl+A+S,弹出一个对话框由于对Flash进行了重新分区,原来烧写在Flash中从地址(3)烧写内核当vivi烧写完毕后,需要重新启动开发板,使刚才的分区及引导程序生效。重新启动开发板时,操作过程如前所述,按下“Backspace”(回格)键不放的同时,重新启动开发板系统,出现提示符“vivi>”。vivi>loadflashkernelx4)烧写文件系统紧接着上面的操作,在提示符“vivi>”下,输入命令:vivi>loadfl
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 无人机物流配送在2025年无人机物流配送技术创新与专利分析报告
- 2025年智慧城市智能建筑系统集成创新应用效果深度报告
- 有效利用资源的成本控制方法
- 2025年教育精准扶贫项目实施对农村学校学生学业发展的评估
- 2023年监理工程师之合同管理通关试题库(有答案)
- 2023年版高中物理知识点总结
- 2023年电大职业技能考核绩效与薪酬实务
- 2023甘肃省安全员《B证》考试题库及答案
- 2025版轨道交钢板租赁合同范本
- 二零二五年度苗木种植与生态园林景观规划设计施工一体化劳务分包合同
- 青光眼患者的日常用药与护理
- 部编版三语下22《我们奇妙的世界》核心素养分层作业学习任务单(含答案)
- 粉尘清扫记录-带说明
- 风险防控预防事故培训
- 高血压非药物治疗
- 山东黄金集团有限公司省内井下一线产业工人招聘笔试试题及答案2021
- 高速公路养护施工安全作业指导书
- 武大电气继电保护试验报告(90分)
- 标准工时测量模特法
- LS 8010-2014植物油库设计规范
- GB/T 6070-2007真空技术法兰尺寸
评论
0/150
提交评论