《嵌入式Linux开发教程.ppt》由会员分享,可在线阅读,更多相关《嵌入式Linux开发教程.ppt(25页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、嵌入式Linux开发入门郑灵翔郑灵翔郑灵翔郑灵翔郑灵翔郑灵翔Agenda嵌入式系统开发模式嵌入式Linux系统的构成主要任务与流程利用Skyeye仿真开发板开发板使用嵌入式应用程序开发与调试厦门大学通讯工程系厦门大学通讯工程系厦门大学通讯工程系厦门大学通讯工程系郑灵翔郑灵翔郑灵翔郑灵翔嵌入式系统开发模式厦门大学通讯工程系厦门大学通讯工程系厦门大学通讯工程系厦门大学通讯工程系最小硬件系统郑灵翔郑灵翔郑灵翔郑灵翔嵌入式Linux系统的构成形成根文件系统厦门大学通讯工程系厦门大学通讯工程系厦门大学通讯工程系厦门大学通讯工程系BootLoader和嵌入式Linux郑灵翔郑灵翔郑灵翔郑灵翔构建嵌入式Li
2、nux系统的主要任务内核部分内核裁剪编译内核裁剪编译底层驱动开发底层驱动开发应用程序部分构建基本的嵌入式构建基本的嵌入式LinuxLinux文件系统文件系统应用程序开发与移植应用程序开发与移植厦门大学通讯工程系厦门大学通讯工程系厦门大学通讯工程系厦门大学通讯工程系郑灵翔郑灵翔郑灵翔郑灵翔嵌入式Linux系统的开发流程 建立交叉编译环境 Bootloader开发Linux内核的裁剪构造根文件系统 驱动移植/开发应用程序移植开发和调试 厦门大学通讯工程系厦门大学通讯工程系厦门大学通讯工程系厦门大学通讯工程系郑灵翔郑灵翔郑灵翔郑灵翔实验:用skyeye运行嵌入式Linux下载skyeye测试包运行嵌
3、入式Linux厦门大学通讯工程系厦门大学通讯工程系厦门大学通讯工程系厦门大学通讯工程系郑灵翔郑灵翔郑灵翔郑灵翔自已动手创建嵌入式Linux工具链http:/http:/内核文件系统:busybox厦门大学通讯工程系厦门大学通讯工程系厦门大学通讯工程系厦门大学通讯工程系郑灵翔郑灵翔郑灵翔郑灵翔Linux内核裁减系统类型设置 选择开发板类型 默认的内核命令行参数配置Ramdisk设置串口驱动配置文件系统配置网络驱动配置其他驱动配置厦门大学通讯工程系厦门大学通讯工程系厦门大学通讯工程系厦门大学通讯工程系郑灵翔郑灵翔郑灵翔郑灵翔指明启指明启指明启指明启动动内核加内核加内核加内核加载镜载镜像像像像为为可
4、可可可读读写写写写rwrw说说明根文件系明根文件系明根文件系明根文件系统统所在的路径所在的路径所在的路径所在的路径root=root=例:例:例:例:root=/dev/ramroot=/dev/ram强强制指定用于启制指定用于启制指定用于启制指定用于启动动内核内核内核内核时时的所使用的内存数的所使用的内存数的所使用的内存数的所使用的内存数mem=nnKMGmem=nnKMG例:例:例:例:mem=64Mmem=64M用于指定用于指定用于指定用于指定Initial RamdiskInitial Ramdisk的地址以及大小的地址以及大小的地址以及大小的地址以及大小initrd=initrd_s
5、tart,sizeinitrd=initrd_start,size例:例:例:例:initrd=0 xa1000000,initrd=0 xa1000000,0 x010000000 x01000000用于指定内核启用于指定内核启用于指定内核启用于指定内核启动动完成后第一个运行的完成后第一个运行的完成后第一个运行的完成后第一个运行的initinit程序程序程序程序路径名路径名路径名路径名init=init=例:例:例:例:init=/linuxrcinit=/linuxrc内核启内核启内核启内核启动时动时打印打印打印打印输输出消息的出消息的出消息的出消息的设备设备。ttySttyS表表表表示使
6、用第示使用第示使用第示使用第n n个串口个串口个串口个串口输输出。出。出。出。选项选项(optionsoptions)用)用)用)用于定于定于定于定义义串口配置。默串口配置。默串口配置。默串口配置。默认认配置是配置是配置是配置是9600n89600n8。console=ttyS,optionsconsole=ttyS,options例:例:例:例:console=ttyS0,115200console=ttyS0,115200默认的内核命令行参数配置厦门大学通讯工程系厦门大学通讯工程系厦门大学通讯工程系厦门大学通讯工程系郑灵翔郑灵翔郑灵翔郑灵翔Linux内核裁减DEMO厦门大学通讯工程系厦门大
7、学通讯工程系厦门大学通讯工程系厦门大学通讯工程系郑灵翔郑灵翔郑灵翔郑灵翔利用BusyBox构造根文件系统根文件系统目录树结构BusyBox简介BusyBox编译与安装构造根文件系统映像(将被加载为Initrd)SkyEye仿真厦门大学通讯工程系厦门大学通讯工程系厦门大学通讯工程系厦门大学通讯工程系郑灵翔郑灵翔郑灵翔郑灵翔根文件系统目录树结构目目目目录录内容内容内容内容/顶层顶层根目根目根目根目录录。其它目。其它目。其它目。其它目录录都在都在都在都在这这个根目个根目个根目个根目录录下下下下 /bin /bin基本命令可基本命令可基本命令可基本命令可执执行文件的存放位置行文件的存放位置行文件的存放
8、位置行文件的存放位置 /sbinsbin系统管理类命令可系统管理类命令可系统管理类命令可系统管理类命令可执执行文件的存放位置行文件的存放位置行文件的存放位置行文件的存放位置 /dev /devdev dev 是是是是设备设备(device)(device)的英文的英文的英文的英文缩缩写。写。写。写。这这是个十分重要的目是个十分重要的目是个十分重要的目是个十分重要的目录录。它包含了所。它包含了所。它包含了所。它包含了所有有有有LinuxLinux系系系系统统中使用的外部中使用的外部中使用的外部中使用的外部设备设备文件。要注意的是文件。要注意的是文件。要注意的是文件。要注意的是这这里的里的里的里的
9、设备设备文件不文件不文件不文件不是指是指是指是指设备设备的的的的驱动驱动程序,而是指程序,而是指程序,而是指程序,而是指访问访问外部外部外部外部设备设备的接口文件。的接口文件。的接口文件。的接口文件。/usrusr用用用用户应户应用程序和文档目用程序和文档目用程序和文档目用程序和文档目录录 /etc /etc这这个目个目个目个目录录下存放系下存放系下存放系下存放系统统的配置文件。的配置文件。的配置文件。的配置文件。/lib /libliblib是是是是库库(librarylibrary)英文)英文)英文)英文缩缩写。写。写。写。这这个目个目个目个目录录用于存放系用于存放系用于存放系用于存放系统
10、动态链统动态链接接接接库库。所有。所有。所有。所有动态链动态链接程序都要用到接程序都要用到接程序都要用到接程序都要用到这这个目个目个目个目录录下的下的下的下的库库文件。文件。文件。文件。/proc /proc这这是是是是LinuxLinux的一个特殊文件系的一个特殊文件系的一个特殊文件系的一个特殊文件系统统,主要用于存放内核及,主要用于存放内核及,主要用于存放内核及,主要用于存放内核及进进程信息程信息程信息程信息 /tmptmp临时临时文件目文件目文件目文件目录录,许许多程序都需要用到此目多程序都需要用到此目多程序都需要用到此目多程序都需要用到此目录进录进行行行行读读写操作写操作写操作写操作
11、/varvar系系系系统统日志和一些服日志和一些服日志和一些服日志和一些服务务程序程序程序程序临时临时文件的存放目文件的存放目文件的存放目文件的存放目录录厦门大学通讯工程系厦门大学通讯工程系厦门大学通讯工程系厦门大学通讯工程系郑灵翔郑灵翔郑灵翔郑灵翔BusyBox简介嵌入式Linux中,最常用的一个软件工具包。(The Swiss Army Knife of Embedded Linux)集成了100多条Linux常用命令代码优化,生成的可执行文件的大小通常只有几百K字节。支持多种体系结构,支持静态或动态链接 厦门大学通讯工程系厦门大学通讯工程系厦门大学通讯工程系厦门大学通讯工程系郑灵翔郑灵翔
12、郑灵翔郑灵翔构造根文件系统映像参见教材P131136(详述了所有实验操作步骤)6.3.3 Busybox6.3.3 Busybox与根文件系统的构造与根文件系统的构造步骤步骤1.1.配置配置BusyboxBusybox2.2.编译安装编译安装BusyboxBusybox3.3.构造根文件系统构造根文件系统4.4.创建根文件系统映像文件创建根文件系统映像文件DEMO厦门大学通讯工程系厦门大学通讯工程系厦门大学通讯工程系厦门大学通讯工程系郑灵翔郑灵翔郑灵翔郑灵翔开发板使用厦门大学通讯工程系厦门大学通讯工程系厦门大学通讯工程系厦门大学通讯工程系郑灵翔郑灵翔郑灵翔郑灵翔Linux下的串口终端minic
13、om厦门大学通讯工程系厦门大学通讯工程系厦门大学通讯工程系厦门大学通讯工程系郑灵翔郑灵翔郑灵翔郑灵翔U-boot使用使用minicom连接开发板设置环境变量(参见教材小节P138)setenv setenv 变量名变量名 变量值变量值setenv ethaddr 11:22:33:44:55:66setenv ethaddr 11:22:33:44:55:66setenv ipaddrsetenv ipaddrsetenv serveripsetenv serverip保存环境变量到flashsaveenvsaveenv厦门大学通讯工程系厦门大学通讯工程系厦门大学通讯工程系厦门大学通讯工程系郑
14、灵翔郑灵翔郑灵翔郑灵翔加载内核在PC机上启动tftp服务(参见教材P77)copy zImage,initrd到tftp目录通过minicom(串口终端)控制开发板,利用u-boot加载内核和initrd厦门大学通讯工程系厦门大学通讯工程系厦门大学通讯工程系厦门大学通讯工程系郑灵翔郑灵翔郑灵翔郑灵翔NFS文件系统内核设置(参见小节P161)内核命令行内核命令行(P128,162)(P128,162)root=/dev/nfs nfsroot=192.168.0.1:/nfsroot root=/dev/nfs nfsroot=192.168.0.1:/nfsroot ip=192.168.0.
15、2:192.168.0.1:192.168.0.1:255.ip=192.168.0.2:192.168.0.1:192.168.0.1:255.255.255.0:eth0:rw console=ttyS0,115200 255.255.0:eth0:rw console=ttyS0,115200 mem=64Mmem=64MPC机的NFS服务设置(P162)厦门大学通讯工程系厦门大学通讯工程系厦门大学通讯工程系厦门大学通讯工程系郑灵翔郑灵翔郑灵翔郑灵翔构建嵌入式Linux系统的主要任务内核部分内核裁剪编译内核裁剪编译底层驱动开发底层驱动开发应用程序部分构建基本的嵌入式构建基本的嵌入式Lin
16、uxLinux文件系统文件系统应用程序开发与移植应用程序开发与移植厦门大学通讯工程系厦门大学通讯工程系厦门大学通讯工程系厦门大学通讯工程系郑灵翔郑灵翔郑灵翔郑灵翔嵌入式应用程序开发步骤交叉编译arm-linux-gccarm-linux-gccmake CC=arm-linux-gccmake CC=arm-linux-gcc将应用程序加入文件系统DEMO厦门大学通讯工程系厦门大学通讯工程系厦门大学通讯工程系厦门大学通讯工程系郑灵翔郑灵翔郑灵翔郑灵翔嵌入式应用程序调试PC机算法验证嵌入式系统上利用gdbserver进行交叉调试DEMO 厦门大学通讯工程系厦门大学通讯工程系厦门大学通讯工程系厦门大学通讯工程系