1、嵌入式Linux开发入门,郑灵翔 ,厦门大学通讯工程系,Agenda,嵌入式系统开发模式 嵌入式Linux系统的构成 主要任务与流程 利用Skyeye仿真开发板 开发板使用 嵌入式应用程序开发与调试,厦门大学通讯工程系,嵌入式系统开发模式,最小硬件系统,厦门大学通讯工程系,嵌入式Linux系统的构成,形成根文件系统,BootLoader和嵌入式Linux,厦门大学通讯工程系,构建嵌入式Linux系统的主要任务,内核部分 内核裁剪编译 底层驱动开发 应用程序部分 构建基本的嵌入式Linux文件系统 应用程序开发与移植,厦门大学通讯工程系,嵌入式Linux系统的开发流程,建立交叉编译环境 Boot
2、loader开发 Linux内核的裁剪 构造根文件系统 驱动移植/开发 应用程序移植开发和调试,厦门大学通讯工程系,实验:用skyeye运行嵌入式Linux,下载skyeye测试包 运行嵌入式Linux,厦门大学通讯工程系,自已动手创建嵌入式Linux,工具链:arm-linux-gcc-3.x http:/www.handhelds.org/download/projects/toolchain/ 内核:linux-2.6.x http:/www.kernel.org/pub/linux/kernel/v2.6/ 文件系统: busybox v 1.x ,厦门大学通讯工程系,Linux内核裁
3、减,系统类型设置 选择开发板类型 默认的内核命令行参数配置 Ramdisk设置 串口驱动配置 文件系统配置 网络驱动配置 其他驱动配置,厦门大学通讯工程系,默认的内核命令行参数配置,厦门大学通讯工程系,Linux内核裁减,DEMO,厦门大学通讯工程系,利用BusyBox构造根文件系统,根文件系统目录树结构 BusyBox简介 BusyBox编译与安装 构造根文件系统映像(将被加载为Initrd) SkyEye仿真,厦门大学通讯工程系,根文件系统目录树结构,厦门大学通讯工程系,BusyBox简介,嵌入式Linux中,最常用的一个软件工具包。(The Swiss Army Knife of Emb
4、edded Linux ) 集成了100多条Linux常用命令 代码优化,生成的可执行文件的大小通常只有几百K字节。 支持多种体系结构,支持静态或动态链接,厦门大学通讯工程系,构造根文件系统映像,参见教材P131136(详述了所有实验操作步骤) 6.3.3 Busybox与根文件系统的构造 步骤 配置Busybox 编译安装Busybox 构造根文件系统 创建根文件系统映像文件 DEMO,厦门大学通讯工程系,开发板使用,厦门大学通讯工程系,Linux下的串口终端minicom,厦门大学通讯工程系,U-boot使用,使用minicom连接开发板 设置环境变量(参见教材6.4.2小节P138) s
5、etenv 变量名 变量值 setenv ethaddr 11:22:33:44:55:66 setenv ipaddr 192.168.0.2 setenv serverip 192.168.0.1 保存环境变量到flash saveenv,厦门大学通讯工程系,加载内核,在PC机上启动tftp服务(参见教材P77) copy zImage,initrd到tftp目录 通过minicom(串口终端)控制开发板,利用u-boot加载内核和initrd,厦门大学通讯工程系,NFS文件系统,内核设置(参见6.6.3小节P161) 内核命令行(P128,162) root=/dev/nfs nfsro
6、ot=192.168.0.1:/nfsroot ip=192.168.0.2:192.168.0.1:192.168.0.1:255.255.255.0:eth0: rw console=ttyS0,115200 mem=64M PC机的NFS服务设置(P162),厦门大学通讯工程系,构建嵌入式Linux系统的主要任务,内核部分 内核裁剪编译 底层驱动开发 应用程序部分 构建基本的嵌入式Linux文件系统 应用程序开发与移植,厦门大学通讯工程系,嵌入式应用程序开发步骤,交叉编译 arm-linux-gcc make CC=arm-linux-gcc 将应用程序加入文件系统 DEMO,厦门大学通讯工程系,嵌入式应用程序调试,PC机算法验证 嵌入式系统上利用gdbserver进行交叉调试 DEMO,