构建嵌入式Linux系统.ppt

上传人:xin****828 文档编号:6303946 上传时间:2020-02-22 格式:PPT 页数:30 大小:460.55KB
返回 下载 相关 举报
构建嵌入式Linux系统.ppt_第1页
第1页 / 共30页
构建嵌入式Linux系统.ppt_第2页
第2页 / 共30页
构建嵌入式Linux系统.ppt_第3页
第3页 / 共30页
点击查看更多>>
资源描述
2020年2月22日1 教学内容 第一章嵌入式系统概述第二章学习板硬件及开发环境的建立第三章构建嵌入式Linux系统第四章嵌入式Linux设备驱动第五章嵌入式Linux串口和网络编程第六章嵌入式Linux图形编程 2020年2月22日2 第三章构建嵌入式Linux系统 3 1嵌入式Linux系统的构建流程3 2Bootloader3 3Linux内核3 4根文件系统3 5构建9200的嵌入式Linux系统 2020年2月22日3 3 1嵌入式Linux系统的构建流程 嵌入式Linux的组成嵌入式Linux的构建 2020年2月22日4 嵌入式Linux的组成 嵌入式Linux由以下三个部分组成为 Bootloader 引导加载器 内核根文件系统 2020年2月22日5 嵌入式Linux的构建 在嵌入式Linux的构建中 Bootloader和Linux内核一般都有相对成熟的代码 主要的工作有两步 第一步是根据本系统硬件平台的状况进行移植 第二步是交叉编译源代码进行编译 形成运行时需要的映象 Image 文件 2020年2月22日6 嵌入式Linux的构建 Bootloader的移植 2020年2月22日7 嵌入式Linux的构建 Linux内核的移植 2020年2月22日8 嵌入式Linux的构建 Linux内核的启动并不依赖于根文件系统 rootfs 但是要保证Linux内核的正常运作 还是需要根文件系统的支持 在构建系统的过程中需要为系统生成根文件系统的映像文件 让Linux内核在启动的时候挂接 mount 根文件系统 2020年2月22日9 3 2Bootloader 嵌入式linux的引导方式Bootloader的作用 2020年2月22日10 嵌入式linux的引导方式 启动加载 BootLoader 模式 启动加载模式也称为 自主 Autonomous 模式 在这种情况下 BootLoader从目标机上的某个固态存储设备上将操作系统加载到RAM中运行 整个过程并没有用户的介入 下载 Downloading 模式 在下载模式中 目标机上的BootLoader将通过串口连接或网络连接等通信手段从主机 Host 下载文件 工作于这种模式下的BootLoader通常都会向它的终端用户提供一个简单的命令行接口 2020年2月22日11 嵌入式linux的引导方式 根据所使用的存储介质和开发阶段的不同 可以采用不同的系统引导方式 使用可固化存储设备 如FLASH 使用磁盘设备 通过网络引导 2020年2月22日12 Bootloader的作用 Bootloader是系统启动后首先运行的程序 对于嵌入式linux操作系统的Bootloader 其最基本的功能是加载linux的内核并运行 Bootloader一般还具有以下的功能 通讯功能FLASH相关功能用户接口功能 2020年2月22日13 3 3Linux内核 Linux内核配置和编译的流程Linux内核配置Linux内核的编译 2020年2月22日14 Linux内核配置和编译的流程 Linux内核从配置到安装大致有如下步骤 配置内核 最常见的命令为makemenuconfig建立依赖关系 最常见的命令为makedep编译内核 最常见的命令为make或makezImage编译内核模块 最常见的命令为makemodules安装内核模块 最常见的命令为makemodules install安装内核 最常见的命令为makeinstall 2020年2月22日15 Linux内核配置和编译的流程 在内核源代码目录下输入 makeXXXconfig 等命令之一就可以对内核进行配置 makeconfig提供了一个命令行界面 然后对每一个内核选项依次询问用户的选择 makemenuconfig提供了一个基于终端curses的图形界面配置菜单 apt getinstalllibncurses5 dev makexconfig提供了一个基于GTK的XWindow图形界面配置菜单 makeoldconfig和makeconfig类似 不过它只提示用户设置之前没有配置过的选项 makeARCH armCROSS COMPILE arm linux menuconfig 2020年2月22日16 Linux内核配置 内核都会在配置完后生成一个 config文件 还会产生大量的符号连接和头文件 这些在其余的创建过程中会用到 config文件中保存了根据在menuconfig中的选择定义的相应变量 在Linux内核目录下的Makefile文件中将会包含这个文件 重要的内核选项包括 Codematurityleveloptions 内核成熟级别选项 Loadablemodulesupport 可加载模块支持 Generalsetup 通用设置 Memorytechnologydevices 内存技术设备 Blockdevices 块设备 Networkdevicesupport 网络设备支持 Characterdevices 字符设备 Filesystems 文件系统 Consoledrivers 控制台驱动 2020年2月22日17 Linux内核的编译 建立内核依赖关系 linux 2 6 x不再需要这个步骤 makedep编译内核 makezImage或者 make单独地编译内核模块 makemodules如果编译成功 所生成的内核映像文件将放置在arch ARCH boot目录下 对于ARM架构来说就是arch arm boot目录 2020年2月22日18 3 4根文件系统 Linux下的文件系统嵌入式Linux的文件系统介绍Linux的根文件系统 2020年2月22日19 Linux下的文件系统 在UNIX系统中 文件系统是最基本的资源 在系统内核和文件系统之间制定一个标准的接口而实现的 不同文件结构之间可以通过该接口方便地交换数据 Linux正是使用这种方式 在系统内核和文件系统之间提供了一种标准接口 VFS virtualfilesystem 虚拟文件系统 Linux下的文件系统 由虚拟文件系统和实际的文件系统两个层次组成 目前常用的有EXT2 CRAMFS JFFS2 NFTL NFS和RAM磁盘文件系统等 2020年2月22日20 Linux下的文件系统 2020年2月22日21 嵌入式Linux的文件系统介绍 在嵌入式Linux中 常见的文件系统有以下几种 EXT2 3 扩展文件系统2 3 ROMFS ReadOnlyMemoryFileSystem 只读文件系统 CRAMFS CompressReadAccessMemoryFileSystem 压缩只读文件系统 JFFS2 JounalingFlashFilesystem2 日志文件系统2 NFS NetFileSystem 网络文件系统 YAFFS YetAnotherFlashFileSystem 另一种FLASH文件系统 2020年2月22日22 Linux的根文件系统 Linux的根文件系统的主要目录 bin 包含基本的用户命令工具程序 sbin 包含基本的系统管理程序 boot 包含内核映像及启动相关文件 etc excutivetimeconfig 包含系统配置文件和脚本 lib 包含系统库和内核模块 usr 用户程序及库目录 home 用户主目录 root root用户主目录 dev 设备文件目录 目录下的每个文件代表一个设备 opt 额外软件包所在目录 mnt 文件系统临时挂装目录 var 包含运行时改变的文件 例如lock和log文件 proc 内核创建和使用的虚拟文件系统 存放运行时系统信息 tmp 临时文件目录 2020年2月22日23 3 5构建9200的嵌入式Linux系统 0 x10000000 0 x1001FFFF 大小 0 x20000128KB boot bin 0 x10020000 0 x1003FFFF 大小 0 x20000128KB u boot bin gz 0 x10040000 0 x1005FFFF 大小 0 x20000128KB u boot环境变量 LinuxKernel 0 x10060000 0 x1045FFFF 大小 0 x4000004MB cramfs根文件系统 0 x10460000 0 x1085FFFF 大小 0 x4000004MB 用户可用空间 0 x10860000 0 x10FFFFFF 大小 0 x7A00008MB 384KB Bootloader 第一级 第二级 JFFS2orYAFFS 文件系统 rootfs根文件系统 Linux2 6 38内核 只读 可读可写 16MBNorFlash 2020年2月22日24 1boot bin的移植 defineBOOT VERSION Boot1 1forCUGB defineSRC0 x10020000 u boot压缩文件在Flash中的地址 defineDST0 x21f00000 u boot bin运行地址 defineLEN0 x020000 u boot压缩文件长度 作用 初始化硬件 CPUCLK SDRAMC EBI 运行u boot bin 从Flash中解压u boot bin gz至SDRAM中 A修改boot main c文件 B修改boot Makefile文件 指定交叉编译器 CROSS COMPILE usr local arm 2 95 3 bin arm linux C执行make命令开始交叉编译 步骤 BootLoader 2020年2月22日25 2u boot的移植 作用 进一步初始化硬件 USB Ethernet 运行LinuxKernel 提供下载 文件烧写等工具 loadb tftp cp b erase nand bootm A下载u boot 1 3 4源码包 D修改Makefile文件 指定交叉编译器 ifeq ARCH arm CROSS COMPILE arm softfloat linux gnu Emakedistclean 仅一次 makeat91rm9200dk config 仅一次 make 步骤 B解压源码包至 home at9200 u boot 下 C根据硬件修改相关文件 include configs at91rm9200dk h cpu arm920t start S Fgzip cu boot bin u boot bin gz压缩u boot bin文件 BootLoader 2020年2月22日26 3bootloader烧写及使用 烧写 裸板烧写 在已有u boot的板上烧写 J1跳线至C DBG串口提示CCC 用串口的Xmodem协议下载9200loader bin 自动执行9200loader bin后 用串口的Xmodem协议下载u boot bin 自动运行u boot程序 用u boot提供的loadb tftp等命令下载待烧写的文件 如boot bin u boot bin gz 至SDRAM 再用cp b命令烧写文件至Flash 用u boot提供的loadb tftp等命令下载待烧写的文件 如boot bin u boot bin gz 至SDRAM 再用cp b命令烧写文件至Flash BootLoader 2020年2月22日27 4u boot的使用 常用命令 tftp21000000XXXX YYY或loadb21000000 erase100000001001FFFF或erase1 0NorFlash操作命令 cp b210000001000000020000NorFlash操作命令 boot bootm go printenv setenv saveenv 环境变量有关命令 nandread nandwrite nandinfo NandFlash操作命令 nfs nboot tftpboot ping网络相关操作命令 help 查看帮助命令 protectoffall或protectoff1 0或protectoff100000001001FFFF BootLoader 2020年2月22日28 1 下载Linux内核源码包 Linux 2 6 38 和针对at91的补丁包 2 6 38 at91 patch gz 2 解压内核源码包再打上补丁 tar zxvflinux 2 6 38 tar gz zcat2 6 38 at91 patch gz patch p1 3 修改Makefile文件 ARCH armCROSS COMPILE arm none linux gnueabi 注释掉 LDFLAGS BUILD ID patsubst Wl comma 4 根据硬件修改相关文件 arch arm mach at91 board rm9200dk c arch arm mach at91 at91rm9200 device c 5 makedistclean makeat91rm9200dk defconfig 这两条命令执行一次即可 6 makemenuconfig 7 make在arch arm boot 生成zImage和Image 8 mkimage n linux 2 6 38 Aarm Olinux Tkernel Cnone a0 x20008000 e0 x20008040 darch arm boot zImageuImage2638 9 用u boot烧写uImage2638至Flash 设置env的启动参数 LinuxKernel 2020年2月22日29 根文件系统 1交叉编译busybox 准备Linux命令工具 A下载busybox源码包 busybox 1 7 2 B解压busybox源码包 Cmakemenuconfig D编辑Makefile ARCH armCROSS COMPILE arm linux Emake Fmakeinstall讲交叉编译的busybox文件和目录安装到 install下 2制作根文件系统 Cmkcramfsrootfsrootfs cramfs将准备好的根文件系统打包 A将 install目录下的目录和文件拷贝至rootfs下 cp arf rootfs B建立rootfs下必需的目录和文件 库文件要使用CROSS COMPILE下的库 D用u boot将rootfs cramfs烧写至NorFlash E设置Linux引导参数 使Linux根挂载至rootfs cramfs所在分区 root dev mtdblock3init linuxrcconsole ttyS0 115200mem 64M 2020年2月22日30 烧写Firmware 1裸板烧写Bootloader A J1跳线跳至 C 侧 B 打开SecureCRT或超级终端 用Xmodem协议下载9200loader bin C 用Xmodem协议下载u boot bin 下载完后u boot自动运行u boot D u boot tftp21000000boot bin 或串口下载用loadb21000000 E u boot protectoffall F u boot erase100000001001FFFF G u boot cp b210000001000000020000 写入boot bin H u boot tftp21000000u boot bin gz I u boot erase100200001003FFFF 擦除 J u boot cp b210000001002000020000 写入u boot bin gz 2有u boot情况下烧写Bootloader Kernel RootFS K 断电 把J1跳线插回另一侧 烧写Bootloader方法同前 1 D 1 J 烧写Kernel erase100600001045FFFF tftp21000000uImage2638 cp b2100000010060000400000 烧写RootFS erase1004600001085FFFF tftp21000000rootfs new cramfs cp b2100000010460000400000
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!