构建嵌入式Linux系统.ppt
(30页)
本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦!
19.9 积分
教学内容第一章 嵌入式系统概述第二章 学习板硬件及开发环境的建立第三章 构建嵌入式Linux系统第四章 嵌入式Linux设备驱动第五章 嵌入式Linux串口和网络编程第六章 嵌入式Linux图形编程 *第三章 构建嵌入式Linux系统3.1 嵌入式Linux系统的构建流程3.2 Bootloader3.3 Linux内核3.4 根文件系统3.5 构建9200的嵌入式Linux系统 *3.1 嵌入式Linux系统的构建流程嵌入式Linux的组成嵌入式Linux的构建 *嵌入式Linux的组成嵌入式Linux由以下三个部分组成为:Bootloader(引导加载器)内核根文件系统 *嵌入式Linux的构建 在嵌入式Linux的构建中,Bootloader和Linux内核一般都有相对成熟的代码。主要的工作有两步: 第一步是根据本系统硬件平台的状况进行移植; 第二步是交叉编译源代码进行编译,形成运行时需要的映象(Image)文件。 *嵌入式Linux的构建Bootloader的移植 *嵌入式Linux的构建 Linux内核的移植 *嵌入式Linux的构建 Linux内核的启动并不依赖于根文件系统(rootfs),但是要保证Linux内核的正常运作,还是需要根文件系统的支持。 在构建系统的过程中需要为系统生成根文件系统的映像文件,让Linux内核在启动的时候挂接(mount)根文件系统。 *3.2 Bootloader嵌入式linux的引导方式Bootloader的作用 *嵌入式linux的引导方式启动加载(Boot Loader)模式: 启动加载模式也称为“自主”(Autonomous)模式。在这种情况下,Boot Loader 从目标机上的某个固态存储设备上将操作系统加载到 RAM 中运行,整个过程并没有用户的介入。下载(Downloading)模式: 在下载模式中,目标机上的 Boot Loader 将通过串口连接或网络连接等通信手段从主机(Host)下载文件。工作于这种模式下的 Boot Loader 通常都会向它的终端用户提供一个简单的命令行接口。 *嵌入式linux的引导方式 根据所使用的存储介质和开发阶段的不同,可以采用不同的系统引导方式:使用可固化存储设备(如FLASH)使用磁盘设备通过网络引导 *Bootloader的作用 Bootloader是系统启动后首先运行的程序,对于嵌入式linux操作系统的Bootloader,其最基本的功能是加载linux的内核并运行。 Bootloader一般还具有以下的功能:通讯功能 FLASH相关功能 用户接口功能 。省略部分。 *4 u-boot的使用常用命令tftp 21000000 XXXX.YYY 或 loadb 21000000erase 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:0 或 protect off 10000000 1001FFFFBootLoader *1. 下载Linux内核源码包(Linux-2.6.38)和针对at91的补丁包(2.6.38- at91.patch.gz)2. 解压内核源码包再打上补丁:tar –zxvf linux-2.6.38.tar.gzzcat 2.6.38-at91.patch.gz | patch –p13. 修改Makefile文件ARCH ?= armCROSS_COMPILE ?= arm-none-linux-gnueabi-注释掉#LDFLAGS_BUILD_ID = $(patsubst -Wl$(comma)%,%,……4. 根据硬件修改相关文件:arch/arm/mach-at91/board-rm9200dk.carch/arm/mach-at91/at91rm9200_device.c ……5. make distclean ; make at91rm9200dk_defconfig (这两条命令执行一次即可)6. make menuconfig7. make 在arch/arm/boot/生成zImage和Image 8. mkimage -n 'linux-2.6.38' -A arm -O linux -T kernel –C none -a 0x20008000 -e 0x20008040 -d arch/arm/boot/zImage uImage26389. 用u-boot 烧写uImage2638至Flash,设置env的启动参数Linux Kernel *根文件系统1 交叉编译busybox (准备Linux命令工具)A 下载busybox源码包(busybox-1.7.2)B 解压busybox源码包C make menuconfigD 编辑MakefileARCH = armCROSS_COMPILE = arm-linux-E makeF make install 讲交叉编译的busybox文件和目录安装到_install下2 制作根文件系统C mkcramfs rootfs rootfs.cramfs 将准备好的根文件系统打包A 将_install目录下的目录和文件拷贝至rootfs下(cp –arf * ./../rootfs)B 建立rootfs下必需的目录和文件(库文件要使用CROSS_COMPILE下的库)D 用u-boot将rootfs.cramfs烧写至NorFlashE 设置Linux引导参数,使Linux根挂载至rootfs.cramfs所在分区root=/dev/mtdblock3 init=/linuxrc console=ttyS0,115200 mem=64M *烧写Firmware1 裸板烧写BootloaderA、J1跳线跳至“C”侧 B、打开SecureCRT或超级终端,用Xmodem协议下载9200loader.bin C、用Xmodem协议下载u-boot.bin ,下载完后u-boot自动运行 u-boot>D、u-boot> tftp 21000000 boot.bin //或串口下载用loadb 21000000E、u-boot> protect off allF、u-boot> erase 10000000 1001FFFFG、u-boot> cp.b 21000000 10000000 20000 //写入boot.binH、u-boot> tftp 21000000 u-boot.bin.gzI、 u-boot> erase 10020000 1003FFFF //擦除J、 u-boot> cp.b 21000000 10020000 20000 //写入u-boot.bin.gz2 有u-boot情况下烧写Bootloader、Kernel、RootFSK、 断电,把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; * 关 键 词: 嵌入 linux 构建 系统
天天文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。