构建嵌入式Linux系统.ppt

上传人:小飞机 文档编号:4983396 上传时间:2023-05-27 格式:PPT 页数:30 大小:291KB
返回 下载 相关 举报
构建嵌入式Linux系统.ppt_第1页
第1页 / 共30页
构建嵌入式Linux系统.ppt_第2页
第2页 / 共30页
构建嵌入式Linux系统.ppt_第3页
第3页 / 共30页
构建嵌入式Linux系统.ppt_第4页
第4页 / 共30页
构建嵌入式Linux系统.ppt_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《构建嵌入式Linux系统.ppt》由会员分享,可在线阅读,更多相关《构建嵌入式Linux系统.ppt(30页珍藏版)》请在三一办公上搜索。

1、2023年5月27日,教学内容,第一章 嵌入式系统概述第二章 学习板硬件及开发环境的建立第三章 构建嵌入式Linux系统第四章 嵌入式Linux设备驱动第五章 嵌入式Linux串口和网络编程第六章 嵌入式Linux图形编程,2023年5月27日,第三章 构建嵌入式Linux系统,3.1 嵌入式Linux系统的构建流程3.2 Bootloader3.3 Linux内核3.4 根文件系统3.5 构建9200的嵌入式Linux系统,2023年5月27日,3.1 嵌入式Linux系统的构建流程,嵌入式Linux的组成嵌入式Linux的构建,2023年5月27日,嵌入式Linux的组成,嵌入式Linux

2、由以下三个部分组成为:Bootloader(引导加载器)内核根文件系统,2023年5月27日,嵌入式Linux的构建,在嵌入式Linux的构建中,Bootloader和Linux内核一般都有相对成熟的代码。主要的工作有两步:第一步是根据本系统硬件平台的状况进行移植;第二步是交叉编译源代码进行编译,形成运行时需要的映象(Image)文件。,2023年5月27日,嵌入式Linux的构建,Bootloader的移植,2023年5月27日,嵌入式Linux的构建,Linux内核的移植,2023年5月27日,嵌入式Linux的构建,Linux内核的启动并不依赖于根文件系统(rootfs),但是要保证Li

3、nux内核的正常运作,还是需要根文件系统的支持。在构建系统的过程中需要为系统生成根文件系统的映像文件,让Linux内核在启动的时候挂接(mount)根文件系统。,2023年5月27日,3.2 Bootloader,嵌入式linux的引导方式Bootloader的作用,2023年5月27日,嵌入式linux的引导方式,启动加载(Boot Loader)模式:启动加载模式也称为“自主”(Autonomous)模式。在这种情况下,Boot Loader 从目标机上的某个固态存储设备上将操作系统加载到 RAM 中运行,整个过程并没有用户的介入。下载(Downloading)模式:在下载模式中,目标机上

4、的 Boot Loader 将通过串口连接或网络连接等通信手段从主机(Host)下载文件。工作于这种模式下的 Boot Loader 通常都会向它的终端用户提供一个简单的命令行接口。,2023年5月27日,嵌入式linux的引导方式,根据所使用的存储介质和开发阶段的不同,可以采用不同的系统引导方式:使用可固化存储设备(如FLASH)使用磁盘设备通过网络引导,2023年5月27日,Bootloader的作用,Bootloader是系统启动后首先运行的程序,对于嵌入式linux操作系统的Bootloader,其最基本的功能是加载linux的内核并运行。Bootloader一般还具有以下的功能:通讯

5、功能 FLASH相关功能 用户接口功能,2023年5月27日,3.3 Linux内核,Linux内核配置和编译的流程Linux内核配置Linux内核的编译,2023年5月27日,Linux内核配置和编译的流程,Linux内核从配置到安装大致有如下步骤:配置内核:最常见的命令为 make menuconfig 建立依赖关系:最常见的命令为 make dep 编译内核:最常见的命令为 make 或 make zImage 编译内核模块:最常见的命令为 make modules 安装内核模块:最常见的命令为 make modules_install 安装内核:最常见的命令为 make install

6、,2023年5月27日,Linux内核配置和编译的流程,在内核源代码目录下输入“make XXXconfig”等命令之一就可以对内核进行配置:make config提供了一个命令行界面,然后对每一个内核选项依次询问用户的选择。make menuconfig提供了一个基于终端curses 的图形界面配置菜单。(apt-get install libncurses5-dev)make xconfig提供了一个基于GTK 的X Window 图形界面配置菜单。make oldconfig和make config类似,不过它只提示用户设置之前没有配置过的选项。,#make ARCH=arm CROSS

7、_COMPILE=arm-linux-menuconfig,2023年5月27日,Linux内核配置,内核都会在配置完后生成一个.config文件,还会产生大量的符号连接和头文件,这些在其余的创建过程中会用到。.config 文件中保存了根据在menuconfig中的选择定义的相应变量,在Linux内核目录下的Makefile文件中将会包含这个文件。,重要的内核选项包括:Code maturity level options(内核成熟级别选项)Loadable module support(可加载模块支持)General setup(通用设置)Memory technology devices

8、(内存技术设备)Block devices(块设备)Network device support(网络设备支持)Character devices(字符设备)Filesystems(文件系统)Console drivers(控制台驱动),2023年5月27日,Linux内核的编译,建立内核依赖关系(不再需要这个步骤):#make dep编译内核:#make zImage 或者#make单独地编译内核模块:#make modules 如果编译成功,所生成的内核映像文件将放置在arch/$ARCH/boot目录下,对于ARM 架构来说就是 arch/arm/boot 目录。,2023年5月27日,

9、3.4 根文件系统,Linux下的文件系统嵌入式Linux的文件系统介绍Linux的根文件系统,2023年5月27日,Linux下的文件系统,在UNIX系统中,文件系统是最基本的资源。在系统内核和文件系统之间制定一个标准的接口而实现的,不同文件结构之间可以通过该接口方便地交换数据。Linux正是使用这种方式,在系统内核和文件系统之间提供了一种标准接口VFS(virtual file system,虚拟文件系统)。Linux下的文件系统,由虚拟文件系统和实际的文件系统两个层次组成。目前常用的有EXT2、CRAMFS、JFFS2、NFTL、NFS和RAM 磁盘文件系统等。,2023年5月27日,L

10、inux下的文件系统,2023年5月27日,嵌入式Linux的文件系统介绍,在嵌入式Linux中,常见的文件系统有以下几种:EXT2/3(扩展文件系统2/3)ROMFS(Read Only Memory File System,只读文件系统)CRAMFS(Compress Read Access Memory File System,压缩只读文件系统)JFFS2(Jounaling FlashFilesystem 2,日志文件系统2)NFS(Net File System,网络文件系统)YAFFS(Yet Another FlashFile System,另一种FLASH文件系统),2023年

11、5月27日,Linux的根文件系统,Linux 的根文件系统的主要目录:/bin:包含基本的用户命令工具程序/sbin:包含基本的系统管理程序/boot:包含内核映像及启动相关文件/etc:(excutive time config)包含系统配置文件和脚本/lib:包含系统库和内核模块/usr:用户程序及库目录/home:用户主目录/root:root 用户主目录/dev:设备文件目录,目录下的每个文件代表一个设备/opt:额外软件包所在目录/mnt:文件系统临时挂装目录/var:包含运行时改变的文件,例如lock 和log 文件/proc:内核创建和使用的虚拟文件系统,存放运行时系统信息/t

12、mp:临时文件目录,2023年5月27日,3.5 构建9200的嵌入式Linux系统,0 x1000 0000,0 x1001 FFFF,大小:0 x20000 128KB,boot.bin,0 x1002 0000,0 x1003 FFFF,大小:0 x20000 128KB,0 x1004 0000,0 x1005 FFFF,大小:0 x20000 128KB,u-boot环境变量,Linux Kernel,0 x1006 0000,0 x1045 FFFF,大小:0 x400000 4MB,cramfs根文件系统,0 x1046 0000,0 x1085 FFFF,大小:0 x40000

13、0 4MB,用户可用空间,0 x1086 0000,0 x10FF FFFF,大小:0 x7A0000 8MB-384KB,Bootloader,第一级,第二级,JFFS2 or YAFFS,文件系统,rootfs根文件系统,Linux 2.6.38 内核,(只读),(可读可写),16MB NorFlash,2023年5月27日,1 boot.bin的移植,#define BOOT_VERSIONBoot 1.1 for CUGB#define SRC 0 x10020000/u-boot压缩文件在Flash中的地址#define DST 0 x21f00000/u-boot.bin运行地址#

14、define LEN 0 x020000/u-boot压缩文件长度,作用,初始化硬件:CPU CLK;SDRAMC;EBI,运行u-boot.bin,从Flash中解压至SDRAM中,A 修改boot/main.c文件,B 修改boot/Makefile文件,指定交叉编译器,C 执行make命令开始交叉编译,步骤,BootLoader,2023年5月27日,2 u-boot的移植,作用,进一步初始化硬件:USB;Ethernet,运行Linux Kernel,提供下载、文件烧写等工具:loadb;tftp;cp.b;erase;nand;bootm,A 下载 u-boot-1.3.4 源码包,

15、D 修改Makefile文件,指定交叉编译器,ifeq($(ARCH),arm)CROSS_COMPILE=arm-softfloat-linux-gnu-,E make distclean(仅一次);make at91rm9200dk_config(仅一次);make,步骤,B 解压源码包至/home/at9200/u-boot/下,C 根据硬件修改相关文件,include/configs/at91rm9200dk.h;cpu/arm920t/start.S,F gzip c u-boot.bin 压缩u-boot.bin文件,BootLoader,2023年5月27日,3 bootload

16、er烧写及使用,烧写,裸板烧写,在已有u-boot的板上烧写:,J1跳线至C,DBG串口提示CCC.,用串口的Xmodem协议下载9200loader.bin,自动执行9200loader.bin后,用串口的Xmodem协议下载u-boot.bin,自动运行u-boot程序,用u-boot提供的loadb、tftp等命令下载待烧写的文件(如)至SDRAM,再用cp.b命令烧写文件至Flash,用u-boot提供的loadb、tftp等命令下载待烧写的文件(如)至SDRAM,再用cp.b命令烧写文件至Flash,BootLoader,2023年5月27日,4 u-boot的使用,常用命令,tft

17、p 21000000 XXXX.YYY 或 loadb 21000000,erase 10000000 1001FFFF 或 erase 1:0 NorFlash操作命令,cp.b 21000000 10000000 20000 NorFlash操作命令,boot;bootm;go.,printenv;setenv;saveenv 环境变量有关命令,nand read;nand write;nand info NandFlash操作命令,nfs;nboot;tftpboot;ping 网络相关操作命令,help;?;查看帮助命令,protect off all 或 protect off 1:

18、0 或 protect off 10000000 1001FFFF,BootLoader,2023年5月27日,1.下载Linux内核源码包(Linux-2.6.38)和针对at91的补丁包(2.6.38-at91.patch.gz),2.解压内核源码包再打上补丁:tar zxvf,zcat 2.6.38-at91.patch.gz|patch p1,3.修改Makefile文件,ARCH?=armCROSS_COMPILE?=arm-none-linux-gnueabi-,注释掉#LDFLAGS_BUILD_ID=$(patsubst-Wl$(comma)%,%,4.根据硬件修改相关文件:a

19、rch/arm/mach-at91/board-rm9200dk.c,arch/arm/mach-at91/at91rm9200_device.c,5.make distclean;make at91rm9200dk_defconfig(这两条命令执行一次即可),6.make menuconfig,7.make 在arch/arm/boot/生成zImage和Image,8.mkimage-n linux-2.6.38-A arm-O linux-T kernel C none-a 0 x20008000-e 0 x20008040-d arch/arm/boot/zImage uImage2

20、638,9.用u-boot 烧写uImage2638至Flash,设置env的启动参数,Linux Kernel,2023年5月27日,根文件系统,1 交叉编译busybox(准备Linux命令工具),A 下载busybox源码包(busybox-1.7.2),B 解压busybox源码包,C make menuconfig,D 编辑Makefile,ARCH=armCROSS_COMPILE=arm-linux-,E make,F make install 讲交叉编译的busybox文件和目录安装到_install下,2 制作根文件系统,C mkcramfs rootfs rootfs.cr

21、amfs 将准备好的根文件系统打包,A 将_install目录下的目录和文件拷贝至rootfs下(cp arf*././rootfs),B 建立rootfs下必需的目录和文件(库文件要使用CROSS_COMPILE下的库),D 用u-boot将rootfs.cramfs烧写至NorFlash,E 设置Linux引导参数,使Linux根挂载至rootfs.cramfs所在分区,root=/dev/mtdblock3 init=/linuxrc console=ttyS0,115200 mem=64M,2023年5月27日,烧写Firmware,1 裸板烧写Bootloader,A、J1跳线跳至“

22、C”侧,B、打开SecureCRT或超级终端,用Xmodem协议下载9200loader.bin,C、用Xmodem协议下载u-boot.bin,下载完后u-boot自动运行 u-boot,D、u-boot tftp 21000000 boot.bin/或串口下载用loadb 21000000,E、u-boot protect off all,F、u-boot erase 10000000 1001FFFF,G、u-boot cp.b 21000000 10000000 20000/写入boot.bin,H、u-boot tftp 21000000,I、u-boot erase 1002000

23、0 1003FFFF/擦除,J、u-boot cp.b 21000000 10020000 20000/写入,2 有u-boot情况下烧写Bootloader、Kernel、RootFS,K、断电,把J1跳线插回另一侧,烧写Bootloader方法同前(1.D-1.J),烧写Kernel:erase 10060000 1045FFFF;tftp 21000000 uImage2638;,cp.b 21000000 10060000 400000;,烧写RootFS:erase 100460000 1085FFFF;tftp 21000000 rootfs_new.cramfs;,cp.b 21000000 10460000 400000;,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号