实习报告--linux系统移植目录目录 (2)1. 实习目的 (3)2. 基础知识 (3)2.1 硬件设备 (3)2.2 linux系统的基础知识 (4)2.2.1 linux系统简介 (4)2.2.2 linux系统的基础命令 (6)3. 实习内容 (11)3.1 linux操作系统的安装与设置 (11)3.2 linux开发环境的搭建与移植 (13)3.2.1 开发环境搭建 (13)3.2.2 系统编译 (14)3.2.3 系统定制 (17)3.2.2 linux系统的USB模块移植 (21)3.3 基于硬件平台的应用 (23)4. 结论 (29)1. 实习目的近年来,随着计算机技术、通信技术的迅速发展,特别是互联网的迅速普及和3C(计算机、通信、消费电子)合一的加速,微型化和专业化成为发展的新趋势,嵌入式系统的开发已经成为了信息产业的热点。
基于ARM硬件平台及linux操作系统的嵌入式产品应用开发已成为主流。
而在嵌入式开发过程中,针对目标平台的操作系统移植成为影响嵌入式产品开发进度的一个关键因素。
基于上述现状,本次实习主要是学习嵌入式开发的基础--linux系统的移植。
主要的实习内容有:(1)linux操作系统的安装与设置:包括VMware的安装,linux操作系统的安装及设置;(2)linux开发环境的构建和移植:包括交叉编译工具的安装,x-loader及u-boot 的配置与编译,linux内核的配置与编译,文件系统的生成以及系统定制;(3)linux基本操作命令的使用;(4)基于硬件平台及linux移植的应用。
通过以上实习,初步掌握linux系统的一些基础知识以及linux系统移植的过程,为以后的进一步学习打下基础。
2.基础知识2.1 硬件设备DevKit8000评估套件是深圳市天漠科技有限公司推出的基于德州仪器(TI)OMAP3530处理器的评估套件。
OMAP3530处理器集成600MHz的ARM Cortex-A8内核及430MHz的具有高级数字信号处理算法的DSP核,并提供了丰富的外设接口。
DevKit8000外扩了CPU外设接口中的网口、S-VIDEO接口、音频输入输出接口、USB OTG、USB HOST、SD/MMC接口、串口、SPI接口、IIC接口、JTAG接口、CAMERA接口、TFT屏接口、触摸屏接口、键盘接口和总线接口,并扩展出了HDMI接口。
DevKit8000评估套件为开发者使用OMAP3530处理器提供了完善的软件开发平台,支持linux-2.6.28及WinCE 6.0操作系统,并包含完善的底层驱动程序,方便用户快速评估OMAP35x处理器、设计系统驱动及其定制应用软件,并提供有成熟的操作系统google android 及angstrom(GPE)的发布版本,DVI输出可达到720P的显示标准,方便用户体验OMAP3530处理器的强大的数据运算处理能力。
其功能模块图如下:2.2 linux系统的基础知识2.2.1 linux系统简介(1)linux的含义严格的来讲,linux不算是一个操作系统,只是一个linux系统中的内核,即计算机软件与硬件通讯之间的平台;linux的全称是GNU/linux,这才算是一个真正意义上的linux 系统。
GNU是Richard Stallman组织的一个项目,世界各地的程序员可以变形GNU程序,同时遵循GPL协议,允许任何人任意改动。
但是,修改后的程序必须遵循GPL协议。
(2)linux系统结构完整的系统由x-loader、u-boot、kernel和rootfs四部分组成,系统结构如下图所示:系统各组成部分特性及作用介绍如下:1、x-loader是一级引导程序,系统上电后由CPU内部ROM自动拷贝到内部RAM并执行主要作用为初始化CPU,拷贝u-boot到内存中,然后把控制权交给u-boot;2、u-boot是二级引导程序,主要用于和用户进行交互,提供映像更新、引导内核等功能;3、kernel使用最新2.6.x内核,根据DevKit8000进行定制;4、rootfs采用开源文件系统,体积小,功能强大。
(3)linux的特点linux之所以流行,是因为它拥有如下几方面的特点:①开放性开放性是指系统遵循世界标准和规范,特别是遵循开发系统互联(OSI)国际标准。
凡是,遵循国际标准开发的硬件和软件,都彼此兼容,可以方便的实现互联。
②稳定性linux的稳定性是众所周知的,由于它没有太多的UI界面,所以他相对其他操作系统较稳定。
③多用户多用户是指系统资源可以被不同用户各自拥有使用,即每个用户对自己的资源,多任务文件系统,系统设备等。
有特定的使用权。
而彼此之间却不相互影响。
linux和Unix都具有多用户的特定。
④设备独立性设备独立性是指操作系统把所有外部设备统一当成文件来看待,只要安装它们的驱动程序,任何用户都可以像使用文件一样,操纵、使用这些设备,而不必知道他们的具体存在形式。
具有设备独立性的操作系统,通过把每一个外围设备看做一个独立的文件来简化增加新设备的工作。
当需要向系统添加新设备时,系统管理员就在内核中增加必要的连接。
这种连接(也称做设备驱动程序)保证每次调用设备提供服务时,内核都可以使用相同的方式来处理他们。
当新的及更好的外设被开发并交付给用户,这些设备都连接到内核后,用户就能够不受限制的立即使用它们。
设备独立性的关键在于内核的适应能力。
其他的操作系统只允许一定数量或者一定种类的外部设备连接。
而设备独立性的系统,能够容纳任意种类及任意数量的设备,因为每一个设备都是通过其与内核的专用连接独立进行访问的。
⑤丰富的网络功能完善的内置网络是linux的一大特点。
linux在通信和网络功能方面优越于其他操作系统。
其他操作系统不包含如此紧密地和内核结合在一起的连接网络的能力,也没有内置这些联网特性的灵活性。
而linux为用户提供了完善的、强大的网络功能。
⑥可靠的系统安全性linux采用了许多安全技术措施,包括对读/写进行权限控制、带保护的子系统、审计跟踪、核心授权等,这为网络多用户环境中的用户提供了安全性。
⑦良好的可移植性可移植性是指系统从一个平台移植到另一个平台它仍能按其自身的方式运行的能力。
linux是一种可移植的系统,它能够从微型计算机到大型计算机的任何环境中和任何平台上运行。
可移植性为运行linux的不同计算机平台与其他任何机器进行准确而又有效的通信提供了手段,不需要增加任何特殊的和昂贵的通信接口。
⑧支持多种文件系统linux能够支持多种文件系统。
目前支持的文件系统有EXT2、EXT3、ISOFS、MSDOS、UMSDOS、NFS、SYSV、Minix、SMB、UFS、NCP、V FAT、NTFS、AFFS等数十种。
linux最常用的文件系统是EXT4。
(4)linux与windows具体特点比较2.2.2 linux系统的基础命令(1)文件或目录操作命令1. 查看当前目录:pwd2. 目录跳转:cd例:跳转到 /home/pds目录:cd /home/pds返回上级目录:cd ..进入当前目录的下级子目录:cd home3. 列出文件和目录仅显示目录下的文件名和目录名:ls显示目录下的文件名和目录名,包括隐藏文件:ls -a显示目录下的文件名和目录名的详细信息:ls -l分页显示查询结果(|是管道命令,shift+\ ):ls -l | more说明:管道命令就是将上一个命令的结果交给| 后面的命令。
4. 建立空目录:mkdir例:建立空目录文件夹pds:mkdir pds5. 删除空目录:rmdir例:删除空目录文件夹pds:mkdir pds6. 建立空文件:touch例:建立空文件 emptyfile:touch emptyfile7. 复制目录cp -r 源目录目标目录例:将/root/pds目录及目录下的所有文件及文件夹,复制到 /root/andgoo 下:cp -r /root/pds /root/andgoo复制后的目录结构为:/root/andgoo/pds ……8. 复制文件cp 源文件绝对路径目标目录例:cp /root/pds/emptyfile /root/andgoo9. 删除文件:rm 文件绝对路径例:删除emptyfile 文件:rm /root/andgoo/emptyfile提示是否删除,输入 y ,然后回车10. 删除当前目录下所有内容,不包括当前目录本身rm -rf *命令解释:r 递归;f 强制11. 修改文件名:mv 原文件名修改后文件名例:将emptyfile 文件修改为mvfile:mv emptyfile mvfile12. 移动文件:mv 目标文件目标路径例:将em 文件移动到 /root 目录下:mv em /root/13. 移动目录及目录下的文件:mv 源目录目标目录例:将 /root/pds 目录及目录下的内容移动到 /root/andgoo 下:mv /root/pds /root/andgoo移动后目标目录结构为:/root/andgoo/pds……/root 目录下不再有/pds 目录14. 建立连接:ln -s 源文件路径连接名称例:为/etc/inittab 文件建立连接,连接名为 inittab:ln -s /etc/inittab inittab说明:用命令 ls -l 可以看出连接文件所指向的源文件15. 查找文本内容:grep “查找的内容”目标文件路径例:1. 在 /root/test.java 文件里面查找是否出现HelloWorld 字符:grep "HelloWorld" /root/test.java2. 在多个文件中查找是否出现 HelloWorld 字符(目标文件间用空格隔开):grep "HelloWorld" /root/test.java /root/pds/testjava.java 3.查找结果返回行数(加-n ):grep -n "HelloWorld" /root/test.java16. 目标文件搜索1. 按名称查找:find 搜索目录 -name 目标文件名例:在/root 目录下查找名称为 test 的文件:find /root -name test2. 查找一段时间内被存取/ 修改的文件或目录:例:1./home 目录下,十分钟内被读取过的文件或目录:find /home -amin -102./home 目录下,十小时内被读取过的文件或目录:find /home -atime -103./home 目录下,十分钟内被修改过的文件或目录:find /home -cmin -104./home 目录下,十小时前被修改过的文件或目录:find /home +ctime -10说明:a 为 access ;c 为change;+ 为前;- 为内3. 按大小查找例:查找 /home 目录下大于10k的文件:find /home -size +10k说明:+ 为大于;- 为小于(2)解压缩命令1 .tar解包:tar xvf FileName.tar打包:tar cvf FileName.tar DirName2 .gz解压1:gunzip FileName.gz解压2:gzip -d FileName.gz压缩:gzip FileName3 .tar.gz 和 .tgz解压:tar zxvf FileName.tar.gz压缩:tar zcvf FileName.tar.gz DirName 4 .bz2解压1:bzip2 -d FileName.bz2解压2:bunzip2 FileName.bz2压缩: bzip2 -z FileName5 .tar.bz2解压:tar jxvf FileName.tar.bz2压缩:tar jcvf FileName.tar.bz2 DirName 6 .bz解压1:bzip2 -d FileName.bz解压2:bunzip2 FileName.bz压缩:未知7 .tar.bz解压:tar jxvf FileName.tar.bz压缩:未知8 .Z解压:uncompress FileName.Z压缩:compress FileName9 .tar.Z解压:tar Zxvf FileName.tar.Z压缩:tar Zcvf FileName.tar.Z DirName 10 .zip解压:unzip FileName.zip压缩:zip FileName.zip DirName11 .rar解压:rar x FileName.rar压缩:rar a FileName.rar DirName12 .lha解压:lha -e FileName.lha压缩:lha -a FileName.lha FileName13 .rpm解包:rpm2cpio FileName.rpm | cpio -div 14 .deb解包:ar p FileName.deb data.tar.gz | tar zxf -.tar .tgz .tar.gz .tar.Z .tar.bz .tar.bz2 .zip .cpio .rpm .deb .sl p .arj .rar .ace .lha .lzh .lzx .lzs .arc .sda .sfx .lnx .zoo .cab .kar . cpt .pit .sit .sea解压:sEx x FileName.*压缩:sEx a FileName.* FileNamesEx只是调用相关程序,本身并无压缩、解压功能,请注意!15 gzip 命令减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间。