嵌入式Linux操作系统
实 验 指 导 书
王林 编著
安徽电子信息职业技术学院
软件学院
2009年8月
精彩文档
实用标准文案
本书根据高职高专人才培养的新要求编写而成。全书共分三个部分: 第一部分:Linux基础知识,包括Linux的安装、基本命令的使用、程序的
开发和调试方法。
第二部分:嵌入式Linux开发环境的搭建,这部分是基于THUGA-1实验箱来
进行的,主要内容有嵌入式Linux内核的编译、根文件系统的制作、内核和根文件系统的下载和烧写。
第三部分:基于嵌入式Linux环境的一些应用,主要有跑马灯程序、音频和
视频实验部分。
精彩文档
实用标准文案
目 录
实验一 Linux的安装 .................................................................................................... 4 实验二 VMware tools的安装 ..................................................................................... 5 实验三 Linux基本命令的使用(一) ....................................................................... 6 实验四 Linux基本命令的使用(二) ..................................................................... 7 实验五 Linux基本命令的使用(三) ..................................................................... 8 实验六 文本编辑器vi的使用 .................................................................................... 9 实验七 使用GCC编译C语言程序 ......................................................................... 10 实验八 使用GDB调试程序 ..................................................................................... 11 实验九 makefile的编写 ............................................................................................. 12 实验十 嵌入式Linux开发环境建立及内核编译 ............................................... 14 实验十一 嵌入式Linux根文件系统制作 ................................................................. 18 实验十二 嵌入式Linux内核和根文件系统的下载和烧写 ............................. 19 实验十三 嵌入式Linux驱动程序添加 ................................................................. 24 实验十四 嵌入式Linux下的音频实验 ................................................................. 26 实验十五 嵌入式Linux下的视频实验 ................................................................. 27
精彩文档
实用标准文案
实验一 Linux的安装
【实验目的】
一、掌握虚拟机软件VMware的安装方法
二、掌握Fedora Core 4 Linux发行版的安装 【实验内容】
一、准备如下安装文件:
1. VMware.Workstation.5.5中文版(虚拟机)带注册机 2. FC4-i386-disc1.iso 3. FC4-i386-disc2.iso 4. FC4-i386-disc3.iso 5. FC4-i386-disc4.iso 6. FC4-i386-rescuecd.iso 二、VMware软件的安装
1. 双击安装文件,按照提示进行下一步 2. 需要输入注册码时,运行注册机目录下的keygen..exe,点击generate,serial框中的即为注册码。
3. 安装完成后,运行汉化补丁目录下的HF_Vmware5.5进行汉化 三、Fedora Core 4 Linux发行版的安装
1. 在VMware软件中,新建虚拟机->下一步,选择典型->下一步,选择linux->下一步,选择linux安装的位置->下一步,使用桥接网络->下一步,完成
2. 编辑虚拟机->设置,选择cdrom1,使用iso映像,选中FC4-i386-disc1.iso,确定
3. 启动此虚拟机,进入linux安装界面 4. 选择skip,跳过光盘检测
5. 按next,选择简体中文,按next,下一步 6. 安装类型选择定制,下一步
7. 选择手工分区,下一步,弹出警告框,选择是
8. 新建,选择文件类型为swap,大小为1000MB,确定。
9. 新建,选择文件类型为ext3,挂载点为/,大小为“使用全部可用空间”,确定,分区结果如下图所示:
精彩文档
实用标准文案
10. 下一步,下一步,选择无防火墙,弹出警告框,点击继续
11. 下一步,设置用户口令,输入两次,必须相同,至少为6个字符 12. 下一步,选择软件包组界面,选择全部(7G左右,保证硬盘空间充足,避免今后使用时出现一些问题) 13. 按照提示,点击下一步,开始安装
14. 第一张盘FC4-i386-disc1.iso安装完后,有提示音
15. 编辑虚拟机->设置,选择cdrom1,使用iso映像,选中FC4-i386-disc2.iso,确定,继续第二张盘的安装 16. 完成四张盘的安装后,自动重启,进入系统
17. 按提示点击下一步,设置自己的用户名,系统默认有个超级用户root 18. 在提示输入用户名时,可以输入自己设置的用户名和密码(进入系统后,使用用户权限,安全),也可以输入root用户,密码为在第11步里设置的(进入系统后,使用超级用户权限)
实验二 VMware tools的安装
【实验目的】
一、了解VMware tools的用途 二、掌握VMware tools的安装方法 三、初步了解部分Linux命令的使用 【实验内容】
一、VMvare tools的用途:
1. 在Linux中方便地访问Windows系统下的文件(通过目录/mnt/hgfs) 2. 增强桌面图形性能,屏幕分辨率
3. 鼠标可以在Windows系统和虚拟机之间方便切换 二、VMware tools的安装
1. 打开VMware软件,启动已安装的Linux系统,通过菜单虚拟机->安装vmware工具,点击install
2. 在Linux桌面上,点鼠标右键,打开终端
3. 输入以下命令:mount –t iso9660 /dev/cdrom /mnt
精彩文档
实用标准文案
4. cd /mnt
5. cp VMwareTools-5.5.0-18463.tar.gz /tmp 6. cd /tmp
7. umount /dev/cdrom
8. tar zxvf VmwareTools-5.5.0-18463.tar.gz 9. cd vmware-tools-distrib 10. ./vmware-install.pl 11. 一路回车
12. 虚拟机->虚拟机设置->选项->共享文件夹->添加(名称d,主机文件夹D:\\,名称e,主机文件夹E:\\),确定 13. reboot
三、验证是否安装成功
1、鼠标是否能方便地在Windows和虚拟机之间切换
2、在Linux中能否通过目录/mnt/hgfs访问Windows下的文件
实验三 Linux基本命令的使用(一)
【实验目的】
一、了解Linux系统中的用户管理
二、掌握Linux系统中用户管理相关的常用命令 【实验内容】
一、Linux是一个支持多用户的操作系统,其中root用户必不可少,root用户具有超级管理权限。其他用户具有一般权限,Linux还支持用户组管理。
二、最常使用的一些命令:
1、who命令:显示系统中当前有哪些用户在线,显示的了用户ID,终端,登录IP,上线时间,停留时间,CPU使用量,动作等等。
2、passwd命令:用来更改用户的密码
3、su命令:从一般用户切换到root用户,需要输入密码 4、useradd命令:添加新用户 5、userdel命令:删除用户
6、usermod命令:修改用户账号 7、groupadd命令:增加新的用户组 8、groupdel命令:删除用户组 9、groupmod命令:修改用户组 10、gpasswd命令:管理组成员
11、last命令:显示系统开机以来或是从每月初登录用户的信息 三、练习
1、在Linux下将root用户的密码修改为Linux#1
2、创建用户user01,user02,user03,创建用户组group1,group2
3、将用户user01、user02划归group1组,将用户user03划归group2组
精彩文档
实用标准文案
实验四 Linux基本命令的使用(二)
【实验目的】
一、了解Linux系统中的文件和目录管理
二、掌握Linux系统中文件和目录管理相关的常用命令 【实验内容】
一、Linux系统中的目录及各个目录的大致作用: / :根目录
/bin: 存放必要的命令
/boot :存放内核以及启动所需的文件等 /dev: 存放设备文件
/etc :存放系统的配置文件
/home :用户文件的主目录,用户数据存放在其主目录中 /lib: 存放必要的运行库
/mnt: 存放临时的映射文件系统,我们常把软驱和光驱挂装在这里的floppy和cdrom子目录下。
/proc: 存放存储进程和系统信息 /root: 超级用户的主目录 /sbin: 存放系统管理程序 /tmp: 存放临时文件的目录
/usr: 包含了一般不需要修改的应用程序,命令程序文件、程序库、手册和其它文档。
/var: 包含系统产生的经常变化的文件,例如打印机、邮件、新闻等假脱机目录、日志文件、格式化后的手册页以及一些应用程序的数据文件等等。 二、Linux系统中的文件类型:
1、普通文件,如 文本文件、C语言源文件、二进制的可执行文件、shell文件。
2、目录文件
3、设备文件,如软驱A为/dev/fd0 三、常用命令
1、cat命令:将文件输出或重定向到其它文件 2、cd命令:切换工作目录 3、cp命令:复制文件或目录
4、mv命令:将一个文件移至另一文件,或将数个文件移至另一目录 5、rm命令:删除文件或目录
6、ls命令:显示指定目录下的内容 7、mkdir命令:建立目录 8、rmdir命令:删除空的目录 9、touch命令:创建空文件
10、wc命令:该命令统计给定文件中的字节数、字数、行数 11、pwd命令:显示当前所在目录的绝对路径名称 12、more命令:类似cat,不过会一页一页地显示
13、find命令:在指定的目录及子目录中查找匹配条件的文件
精彩文档
实用标准文案
14、grep命令:文本搜索命令,支持正则表达式 15、ln命令:创建软链接或硬链接
16、chgrp命令:更改文件或目录的所属群组 17、chmod命令:更改文件或目录的权限 18、chown命令:改变文件或目录的所有者
实验五 Linux基本命令的使用(三)
【实验目的】
一、掌握Linux系统中其它的一些常用命令 【实验内容】
一、网络管理:
1、ifconfig命令:配置或查看网络接口参数 2、ping命令:测试本地到目的主机是否连通
3、netstat命令:显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况
4、traceroute命令:显示数据包到主机间的路径 5、route命令:查看并编辑IP路由表
6、mesg命令:打开或关闭其他用户对自己登录终端的广播功能 7、write命令:向指定的用户发送信息 二、进程管理
1、ps命令:显示当前运行进程的状态
2、kill命令:发送特定信号给id为pid的进程 3、top命令:实时显示进程的动态 三、文件系统
1、fdisk命令:查看或创建磁盘分区 2、df命令:显示文件系统的状况
3、dd命令:把指定的输入文件拷贝到指定的输出文件中,并且在拷贝过程中可以进行格式转换。
4、fsck命令:检查与修复文件系统
5、mkfs命令:在特定的分区上建立文件系统
6、mount命令:将文件系统挂在目录的某个位置之上。这个命令可以被
用来挂上任何的文件系统,甚至可以用-o loop选项将某个一般的文件当成硬盘分区挂载。这对于ramdisk或是ISO9660的镜像文件之解读非常实用。 四、系统管理
1、clear命令:清除屏幕
2、export命令:用于设置或显示环境变量 3、halt命令:关闭系统
4、init命令:所有进程的父进程,改变运行层级 5、shutdown命令:关机程序 6、reboot命令:重新启动
精彩文档
实用标准文案
五、备份压缩
1、tar命令:对文件或目录进行打包或解包 2、gzip/gunzip命令:压缩和解压缩
3、bzip2/bunzip2命令:比gzip压缩效率更高的压缩和解压缩 六、其它
1、cal命令:显示日历
2、at命令:可以让用户指定在特定时刻执行某个程序或命令
注:以上所涉及到的仅仅是Linux系统中的一部分常用命令,其它未涉及到
的命令可在今后需要使用时再通过网络查询掌握其使用方法。另外,不同的Linux发行版可能还有自己特定的一些命令集合。
实验六 文本编辑器vi的使用
【实验目的】
一、掌握文本编辑器vi的使用方法 【实验内容】
一、vi的三种工作模式:
1、命令模式:执行相关文本编辑命令 2、输入模式:输入文本
3、末行模式:实现查找、替换、保存、多文件操作等等功能
二、进入vi,直接在Shell提示符下键入vi [文件名称],如果该文件在当前目录不存在,则vi创建之。 三、退出vi
1、在命令模式下输入“:wq”,保存文件并退出vi 2、若不需要保存文件,输入“:q”
3、若文件已修改,但不保存,输入“:q!”强制退出vi 4、其它一些不常用的方法在此省略。 四、命令模式下的常用编辑命令
1、启动vi后,进入的是vi的命令模式
2、按i键,进入输入模式,可以进行文本的编辑,在输入模式下,按esc键,可切换回命令模式
i:光标位置不变,可在光标左侧插入正文
a:光标位置向后退一格,可在光标左侧插入正文 o:在光标所在行的下一行增添新行 O:在光标所在行的上一行增添新行 I:光标跳到当前行的开头 A:光标跳到当前行的末尾 3、光标的移动
k、j、h、l分别等同于上、下、左、右箭头键 Ctrl+b,向上翻一页 Ctrl+f,向下翻一页
nH,将光标移到屏幕的第n行
精彩文档
实用标准文案
nL,将光标移到屏幕的倒数第n行 4、删除文本
nX,删除光标所指向的后n个字符
D,删除光标右侧的所有字符(包括光标所指向的字符) db,删除光标左侧的全部字符
ndd,删除当前行和当前行以后的n行内容 5、粘贴和复制
p,将缓冲区的内容粘贴到当前字符的右侧 P,将缓冲区的内容粘贴到当前字符的左侧 yy,复制当前行到内存缓冲区 nyy,复制n行内容到内存缓冲区 6、搜索字符串
/str1,正向搜索字符串str1 n,继续搜索
?str2,反向搜索字符串str2 7、撤销和重复
u,撤销前一条命令的执行结果 .,重复最后一条命令 五、末行模式下的命令
:n,将光标移动到第n行
:nw file,将第n行写入file文件
:n,mw file,将第n行至第m行写入file文件 :w,将编辑的内容写入原始文件
:wq,将编辑的内容写入原始文件并退出编辑程序
:w file,将编辑的内容写入file文件,保持原有文件的内容不变 :f file,将当前文件重命名为file
:e file,编辑新文件file代替原有内容
:f,打印当前文件的状态,如文件的行数,光标所在的行号等 :!<命令>,执行相应shell命令 六、三种工作模式的切换
1、在Linux shell下,键入vi或vi <文件名>进入命令模式 2、在命令模式下,键入:进入末行模式
3、在命令模式下,键入文本编辑命令如i,a,o等进入文本输入模式 4、在文本输入模式下,按esc键进入命令模式
5、在末行模式下,按backspace键或del键进入命令模式
6、在末行模式下,键入q或wq,退出vi,饭后到Linux shell下
实验七 使用GCC编译C语言程序
【实验目的】
一、了解GNU gcc编译器
二、掌握使用GCC编译C语言程序的方法 【实验内容】
精彩文档
实用标准文案
一、使用vi或其它文本编辑器,输入C语言程序,并保存为test.c 二、在Linux shell下,输入命令gcc –o test test.c
三、编译正确后,输入命令./test运行程序,观察程序运行结果
四、若编译错误,根据提示信息,进入程序查错,再回到第二步,直至程序
语法无误。
附:GCC使用方法和常用选项
使用GCC编译C程序生成可执行文件需要经历4个步骤:
1、预处理,这一步需要分析各种命令,如#define、#include、#ifdef等。Gcc调用cpp程序来进行预处理
2、编译,这一步将根据输入文件产生汇编语言,gcc调用ccl进行编译工作
3、汇编,这一步中将汇编语言作为输入,产生具有.o扩展名的目标文件,gcc调用as进行汇编工作
4、连接,这一步中各目标文件.o被放在可执行文件的适当位置上,该程序引用的函数也放在可执行文件中,gcc调用ld来完成
Gcc命令的基本用法为:gcc [option] [filename],命令行选项指定的操
作将在命令行上每个给出的文件上执行。例如: Gcc –o prog main.c test1.c test2.c 其中,“-o prog”指定输出的可执行文件名为prog,如果没有指定-o参
数,gcc将使用默认的可执行文件名a.out
Gcc的命令选项有许多项,但经常使用的几个选项是: 1、-c:只预处理,编译和汇编源程序,不进行连接
2、-o exefile,确定输出文件为exefile,如果没有该选项,默认输出
为可执行文件a.out
3、-Dmacro或-Dmacro=defn,其作用类似于源程序代码中的#define 4、-O,对程序编译进行优化,编译后可执行文件的长度和执行时间
缩短,但编译过程耗时变长,对主机性能要求较高。 5、-O2,比-O更好地优化
6、-g,告诉gcc产生能被GNU调试器使用的调试信息以便调试程序 7、-Idir,将dir目录加到搜寻头文件的目录列表中。并优先于在gcc
中默认的搜寻目录
更多的选项说明请查阅gcc使用手册。
实验八 使用GDB调试程序
【实验目的】
一、掌握使用GDB调试程序的方法 【实验内容】
一、按照实验七的内容,编写程序并编译生成可执行文件 二、运行可执行文件,观察程序运行结果
三、若运行结果不对,表明程序逻辑有误,可通过GNU的一大工具GDB
来调试程序。
精彩文档
实用标准文案
附:GDB的使用方法和常用命令
GDB能够观察一个程序在执行时的内部活动,或程序出错时发生了什 么,GDB的主要功能有以下几点:
1、设置运行环境和参数,运行指定程序 2、让程序在指定条件下停止和运行
3、在程序运行停止后,检查变量、内存或寄存器的值,查看程序运行情况
4、修改正在调试的程序的源代码,这样可以在线修正某个bug引起的问题,然后继续查找下一个bug
GDB的使用可以直接在shell命令行下输入gdb并回车,再在gdb 命令行下指定要调试的程序。也可以用gdb filename在启动时指定要调试的程序名。
为了使GDB能够正常工作,必须使程序在编译时包含调试信息,即在 使用gcc时加-g选项即可。 在GDB启动后,就进入GDB命令方式,下面是一些常用的GDB命令:
1、file,载入程序命令,如要加载hello程序用file hello
2、quit,退出gdb命令,也可以用ctrl+d来退出
3、run,运行程序命令,如果程序需要参数,可在run指令后接着输入
参数。
4、info,查看程序信息
5、list,列出源程序命令,如list FUNCTION,list LINENUM,list
FILENAME:FUNCTION
6、break,设置断点,在程序被载入并且当前没有正在运行时,就能设置、修改、删除断点。如break FUNCTION,break LINENUM,break *ADDRESS,break……if COND
7、watch,设置监视点命令,监视某个表达式或变量,当它被读或被写时让程序停下来,如watch EXPRESSION
8、print,显示表达式的值,如print exp
9、step或next,单步执行指令,step可以跟踪进入一个函数,而next指令不会
10、continue,继续执行命令
11、make,产生可执行文件,通过make不用退出gdb就可以重新产生可执行文件
12、shell命令,不离开gdb就可以执行shell命令 更多的gdb命令请查阅gdb使用手册
实验九 makefile的编写
【实验目的】
一、了解makefile的编写规则
二、通过make命令和makefile文件实现自动化编译 【实验内容】
精彩文档
实用标准文案
一、假设一个程序由test1.c,test2.c两个源文件组成,test1.c文件需要包含
头文件test1.h,test2.c需要包含test2.h 二、编写一个简单的makefile文件如下: Test:test1.o test2.o
Gcc –o test test1.o test2.o Test1.o:test1.c test1.h Gcc –c –o test1.o test1.c Test2.o:test2.c test2.h Gcc –c –o test2.o test2.c Clean: Rm –f *.o
三、在shell环境下,运行make,则自动编译程序,生成可执行程序test 四、根据以上实例和makefile的编写规则,编写多个c语言程序,并使用
make来实现自动编译。
附:make和makefile相关介绍
在UNIX/Linux系统上,通常一个软件包里包含多个程序文件,如果用 gcc一条条地编译,效率太低,而且当修改了某个程序文件时,需要重新编 译软件包中的所有文件。使用make程序的目的就是自动确定一个软件包中 哪些部分需要重新编译,并用特定的命令去编译它。
要使用make命令,必须编写makefile文件,makefile文件描述了软件 包中各个文件之间的依赖关系,提供了更新每个文件的命令。 当编写完makefile文件后,只要在shell下使用make命令就可以完成所 有必需的重新编译。Make程序利用makefile文件中的数据和每个文件最近 一次更改的时间来确定哪些文件需要更新。
Makefile的编写规则:
Makefile文件中包含着一些目标,对于每一个目标,都提供了与这个目标具有相关性的其他目标或文件的名字,以及实现这个目标的一组命令。其中,目标就是make程序要完成的一项任务,通常是一个文件的文件名。相关性即一个目标的完成依赖于其他一些目标或文件。
在本实验内容中的示例makefile中,定义了四个目标:test、test1.o、test2.o、clean,每个目标都是从最左边开始写,后面跟一个冒号(:),如果这个目标的实现依赖于其他的目标或文件,把他们列在冒号的后面,并以空格隔开。然后另起一行开始写实现这个目标的一组shell命令,shell命令可以有若干行。
一般情况下,调用make可以输入make target,target是makefile文件中定义的目标,如果省略target,make就将更新makefile文件的第一个目标。
Make在检查一个目标是否已经过时并需要更新时,采用的是按相关性递归的办法,make在构建一个目标之前要生成该目标所依赖的所有文件,并递归地前进,从而确保这些文件都是新的。
目标clean是makefile中常用的一种专用目标,即删除所有的目标模块。一般不作它用。
Makefile中还可以使用预先定好的所写和宏,还支持一些隐含规则,
精彩文档
实用标准文案
makefile的高级使用请查阅相关文档。
当然,自己编写makefile比较繁琐,一般来说,可以找到一些参考的makefile文件模板,再根据自己的实际情况稍作修改即可。同时还有一些专门的工具软件比如automake、autoconf来生成makefile文件。
实验十 嵌入式Linux开发环境建立及内核编译
【实验目的】
一、了解嵌入式开发环境及交叉编译器 二、了解嵌入式Linux的相关特性
三、掌握如何建立一个嵌入式Linux开发环境 四、如何利用交叉编译器来编译内核 【实验设备】
硬件:THUGA-1型实验箱,PC机 软件:PC机操作系统:Linux 【实验内容】
一、建立交叉编译环境
该交叉编译工具在光盘的Linux\oolchains文件夹下的cross-3.3.2.tar.bz2 。 具体步骤如下: 1)解压编译工具包
首先进入/usr/local 目录,建立一个arm的子目录(如果/usr/local/arm 目
录不存在),再进入该目录。命令如下:
# cd /usr/local # mkdir arm # cd arm
然后将光盘Linux目录下的 “toolchain”文件夹下的cross-3.3.2.tar.bz2拷贝到刚刚进入的arm目录下,并执行以下命令:
# tar jxf cross-3.3.2.tar.bz2
解压后会出现一个3.3.2的目录,该目录下有gcc,g++,bin等各种实用工具。就这样,交叉编译工具就安装好了。 2)将该交叉编译工具的路径添加到环境变量
解压后,交叉编译工具中的可执行文件在3.3.2/bin 目录下,此目录不在Linux系统的可执行程序搜索目录中,因此需要在启动设置里手动添加进去,具体做法是修改/etc/bashrc或用户主目录下的.bashrc文件,在文件的最后一行增加路径,增加的文本如下:
export PATH=$PATH:/usr/local/arm/3.3.2/bin
这样就将交叉编译工具的路径添加进去了。为了使修改的文件立即生效,可执行:
# source /etc/bashrc (假设修改的文件是/etc/bashrc)
精彩文档
实用标准文案
或者重起Linux操作系统。然后在终端上输入arm,然后按tab键,会自动显示arm- linux-,表示交叉编译环境安装成功。
二、编译内核
首先将光盘Linux\\kernel目录下的pxa270_kernel2.6.9.tar.gz 拷贝到/home 目录,然后进入这个目录,解压命令如下:
# cd /home
# tar -xzvf pxa270_kernel2.6.9.tar.gz
解压完成后,将会看到在/home目录下生成一个pxa270_linux-2.6.9 的文件目录。
接着进入pxa270_linux-2.6.9 此目录,该目录下显示的是嵌入式Linux的内核代码的组织结构:
/arch 子目录包含了所有硬件结构特定的内核代码。如 i386,alpha 和 arm.。
/drivers 子目录包含了内核中所有的设备驱动程序,如 usb 和 sound。 /fs 子目录包含了所有的文件系统的代码。如 nfs,ext3 和 jffs2 等。 /include 子目录包含了建立内核代码时所需的大部分库文件,这个模块利用其它模块重建内核。该目录也包括了不同平台需要的库文件。比如,asm-arm 是 arm 平台需要的库文件。
/init 子目录包含了内核的初始化代码,内核从此处工作。 /ipc 子目录包含了进程间通信代码 /kernel 子目录包含了主内核代码
/mm 子目录包含了所有内核管理代码
/net 子目录包含了和网络相关的代码,如 atm,ipv6 等。
一般在每个目录下都有一个 depend 文件和一个 Makefile 文件。这两个文件都是编译时使用的辅助文件。其中 Makefile 文件中指出了编译时需要用到的编译器,也是移植内核过程中不可缺少的。
执行 make menuconfig 命令。 # cd pxa270_linux_2.6.9 # make menuconfig
下图为执行 make menuconfig 后显示的配置菜单:
精彩文档
实用标准文案
用键盘的上下键可以移动蓝色选择条到如下图所示的位置并按回车,选择“Load an Alternate Configuration File”栏目来装载一个已经存在的配置文件,如下图:
修改要 load 的配置文件名,这里装载的配置文件为:kernel_pxa27x.cfg,如下图:
精彩文档
实用标准文案
配置文件输入后,这时可以按“OK”键(键盘的 ENTER 键)返回到主菜单栏中。接着按“ESC”键,退出内核配置菜单,这时将出现一个询问是否保存配置的对话框,这时选择“yes”回车退出,如下图。到此为止,内核的配置结束。
接着执行命令 make zImage 就可以进行内核的编译了,如图: # make zImage
结束后可以在 arch/arm/boot 目录下找到压缩内核文件 zImage。此文件
精彩文档
实用标准文案
可以通过 BOOTLOADER 下载运行和烧写到 FLASH 里去。
实验十一 嵌入式Linux根文件系统制作
【实验目的】
一、了解嵌入式相关文件系统
二、了解Cramfs文件系统的相关特性
三、学习如何去制作一个cramfs根文件系统 【实验内容】
一、制作cramfs格式根文件系统步骤
首先展开原有的 cramfs 格式的根文件系统到一个指定的目录,然后从这个目录复制所有的内容到另外一个目录,为了便于复制,我们先用 tar -cvf 命令将展开的根文件的所有的内容归档为一个文件,接着再用 tar -xvf 命令展开这个归档文件到新的文件夹,从而完成这个复制过程。以下就是具体的步骤:
(1) 将 th_pax270_qtopia.cramfs 拷贝到任意目录下 (2) 在该目录下建立两个子文件夹: mkdir chang mkdir guo
(3) 将 th_pax270_qtopia.cramfs 挂接到 chang 目录 mount –t cramfs th_pax270_qtopia.cramfs chang –o loop
(4)将 chang 目录下的内容压缩 cd chang
tar –cvf ../1.tar ./
这样将在 chang 的上一级目录产生一个 1.tar 的包 (5) 将包解压到 guo 目录下。 umount chang ;卸载挂接 cd .. ;进入上一级目录 mv 1.tar guo ; cd guo ;
tar –xvf 1.tar ;将打包的根文件系统的里的内容解压 rm 1.tar
(6) 将自己的驱动 gpiodrv.o 和应用程序 gpio_test 拷贝到相应的目录下。
将 gpiodrv.o 拷贝到 guo/usr/目录下 将 gpio_test 拷贝到 gpio_test 下 (7)经过上面的步骤就可以将自己的驱动和应用程序添加到 cramfs 根
精彩文档
实用标准文案
文件系统中了
现在将开始制作 cramfs 根文件系统
先将 mkcramfs 可执行文件拷贝到 guo 所在的目录 在这个目录下运行命令:
./mkcramfs guo th_pax270_qtopia.cramfs
运行成功后,会在该目录下生成 th_pax270_qtopia.cramfs根文件系统 二、根文件系统制作成功后,可将刚才生成的th_pax270_qtopia.cramfs文件烧录到NorFlash中。
实验十二 嵌入式Linux内核和根文件系统的下载和烧写
【实验目的】
一、掌握在THUGA-1实验箱上进行嵌入式Linux内核的下载和烧写
二、掌握在THUGA-1实验箱上进行嵌入式Linux根文件系统的下载和烧写 【实验内容】
一、下载和烧写嵌入式Linux内核
用 BOOTLOADER 的串口连接或网络连接方式都可以在 DNW 里下载文件,用网络方式速度会比较快一点。下面主要介绍通过网络连接方式下载 Linux 内核,并进行烧写的过程。
首先使用实验箱附带的 RJ45 网络交叉线将 PC 机的网卡与教学平台
底板的 10M 网口(CON4 口)相连接,然后运行 DNW 程序并设置 DNW 的串口通讯参数,然后按住小键盘上的 E 键不放同时按下板子的复位键,这时可看到 BOOTLOADER的功能选择界面!
在 BOOTLOADER 的选择菜单里按下“5”键,然后回车,目的是设置 BOOTLOADER 和 PC通讯时所使用的 IP 地址,注意这个 IP 地址不是 LINUX 操作系统启动后的 IP 地址,两者并无关联,按下“5”键后,出现如下图所示:
精彩文档
实用标准文案
这时请输入一个 IP 地址,这个 IP 地址应该与 PC 机的网卡的 IP 地址处在同一子网,然后回车退出。另外如果要保存这个 IP 地址,使得下次系统重启后仍然设为这个 IP 地址值,那么应该输入“11”,选择
BOOTLOADER 的“11 : Save Boot Parameters”功能选项保存这个设置值。
开始下载内核映像文件到板子的 RAM 了,在 BOOTLOADER 的选择菜单里按下“3”键,然后回车,目的是进入网络下载功能,在提示下载内存的地址时输入 2,即进入初始化网口并进入网络下载功能,如下图所示:
从提示信息可以看到一个 tftp 文件传输服务程序已经运行起来了,这时需要在 PC 机上运行 tftp 的客户端程序,并通过客户程序上传 linux 内核映像文件。方法是在存放zImage的文件夹生成一个批处理文件,并在批处理文件中输入以下内容,如下图:
精彩文档
实用标准文案
这个批处理文件只有一行语句:tftp -i 172.16.2.101 put zImage
或者把光盘下目标代码文件夹拷贝到PC机,用记事本打开zImage.bat这个批处理文件,并在批处理文件中修改IP地址并保存即可。
这个批处理文件的作用是将 zImage 这个 linux 内核映像文件上传到 172.16.2.101 这个主机上,这个 IP 地址是BOOTLOADER 中设置的 IP 地址。双击运行这个批处理,然后将目光转移到 DNW 上,正常的话,应该看到文件被下载到板子的过程,如下图:
下载结束后输入 n 不运行它,会回到 BOOTLOADER 主菜单,然后按下“1”键,选择把下载的文件烧写到 Nor Flash,这时出现的界面如下图:
精彩文档
实用标准文案
这个界面出现了 0-4 四个选项,要用户选择将下载的文件烧写到 Nor Flash的哪个分区,0 是引导区(bootloader 分区),1-是内核分区,2-是根文件系统分区,3-是未定义分区,4-是汉字库,由于烧写的是内核,所以应该选择“1”。按下“1”键后,出现了下面的界面,如下图,直接按“Y”,就可以开始烧写了!
二、下载和烧写嵌入式Linux根文件系统
下载过程和下载内核一样,在上传根文件系统时需在存放根文件系统的文件夹生成一个批处理文件,并在批处理文件中输入以下内容,如下图:
精彩文档
实用标准文案
或者直接编辑批处理文件th_pax270_qtopia.cramfs.BAT的IP地址并保存,然后双击该文件即可。下载结束后选择 1 将文件烧写到 NOR FLASH 里去,再选择分区 2-rootfs 后按 y 确认烧写,文件较大时烧写时间也会变长,请耐心等待,如下图:
三、启动运行Linux
用交叉串口线连接开发板的全功能串口(P2 口)和 PC 的串口,关闭 DNW 程序(若先前在使用),打开超级终端,选择 PC 和实验箱连接所用的串口,设置串口通讯参数如下图:
精彩文档
实用标准文案
按确定保存设置后启动连接。 然后按住 4X4 键盘上的 D 键,再打开底板电源或在已开电源情况下按一下底板的复位键,BOOTLOADER 会自动启动 Linux,启动后再松开 D 按键,出现如下图:
则Linux在实验箱上启动成功!
实验十三 嵌入式Linux驱动程序添加
【实验目的】
一、了解嵌入式Linux系统中驱动程序的开发过程 二、掌握如何来运行和加载驱动程序 【实验内容】
精彩文档
实用标准文案
一、Linux中字符设备驱动的添加
在一个字符设备驱动里面实现对 GPIO 端口的操作。在模块加载的时候跑马灯运行起来,模块卸载的时候,跑马灯停止。THUGA-1型实验箱的4个LED指示灯LED1~LED4由4个I/O口控制,它们分别是:
GPIO,GPIO107,GPIO108 以及 GOIO96。当 GPIO,GPIO107,GPIO108 以及 GOIO96 输出低电平的时候,相应的 LED 指示灯亮。 二、字符设备的驱动源程序 gpiodrv.c
该文件在目录:Linux实验源码\\exp3-adddriver\\driver下,该驱动程序的 Makefile 是按照 Linux2.6 内核的要求来编写的。其中
PXA270X_KERNEL_DIR的值要修改设置为用户本机上的PXA270的内核源码包的位置。
接下来将gpiodrv.c和这个Makefile放置在同一个新建目录下,进入这个目录,输入make命令后,编译成功后将在这个目录下生成一个gpiodrv.ko的文件。
三、测试程序 gpio_test.c
将 gpio_test.c 放置在一个新建目录下,进入该目录下,输入命令: /usr/local/arm/3.3.2/bin/arm-linux-gcc –o gpio_test gpio_test.c
编译成功后,将在该目录下生成 gpio_test 可执行文件,要注意交叉编译工具arm-linux-gcc 的路径要设置正确,这里是/usr/local/arm/3.3.2/bin。
为了便于操作,提供了一个用于编译 gpio_test.c 程序的 Makefile,用户可以到Linux实验源码\\exp3-adddriver\est的目录里面,直接输入命令 make 就可以编译该测试程序了。 四、实验操作步骤
1.用交叉串口线将PC机的COM口与实验箱的UART(P2)相连,插上 12V电源。
2.启动实验箱进入 Linux 环境,利用超级终端来显示,进入Linux命令行模式。
3.输入命令 cd /tmp,进入 tmp 目录,因为/tmp 是在 SDRAM 中,可以放数据。
4.将 gpiodrv.ko 和 gpio_test 下载到 /tmp 目录下(这2个文件可以是自己编译的,也可以直接采用Linux实验源码\\exp3-adddriver下的文件)。
在这里采用 rz 命令来传输,rz 命令是通过 Zmodem协议来传输的。 先在实验箱的终端下输入 rz 命令,接着点击超级终端的“传送”—>“发送文件”,在弹出的对话框中设置如下:
精彩文档
实用标准文案
然后点击发送。
数据传输完后,再在超级终端中输入回车,接着通过 ls 来查看/tmp 目录下是否有 gpiodrv.ko 文件,gpio_test的下载过程是一样的。
5.gpiodrv.ko 和 gpio_test 下载成功后,接下来要进行真正的加载和运行的工作了。
首先改变 gpio_test 的属性,命令如下: chmod 755 gpio_test
6.加载 gpiodrv.ko 模块:insmod gpiodrv.ko 7.建立 gpio 设备节点:mknod /dev/gpio c 220 0
/dev/gpio 为该设备驱动程序的设备名,c 表明该设备为字符设备,220 为该设备的主设备号,0 为从设备号。
8.执行 gpio_test 程序: ./gpio_test
gpio_test 程序运行起来后,有相应的功能选项说明。
实验十四 嵌入式Linux下的音频实验
【实验目的】
一、嵌入式Linux音频播放和音频录音 二、了解MP3编解码的原理
三、掌握Linux下实现对MP3的编解码 【实验内容】
一、
THUGA-1型实验箱使用 AC97 接口的芯片 UCB1400 来播放和录制声音文件。其中放音使用内置的喇叭和“Earphone”耳机接口,当“Earphone”耳机接口插入音频连接插头时喇叭自动切断。“Earphone”耳机接口可直接驱动耳机或有源音箱,喇叭和“Earphone”耳机接口除了程序控制外还可用旋纽控制,“Line-Out”喇叭驱动口可连接耳机使用,但需要外接功放才能驱动喇叭,可通过程序控制音量。录音使用“Line-In” MIC 接口,或者直接用底板上的 MIC,底板上的MIC可以通过J26短路帽控制。
精彩文档
实用标准文案
1.用交叉串口线将PC机的COM口与实验箱的UART(P2)相连,插上 12V电源。
2.启动实验箱进入 Linux 环境,利用超级终端来显示,进入Linux命令行模式。
3.根文件系统内带有一个 mp3 的播放程序 madplay,MP3 文件可以是保存在 MMC/SD 卡、CF 存储卡、U 盘上的,也可以通过前面说的网络、USB 等方法下载。下面以播放放在CF卡中的mp3文件为例说明:首先将CF卡中拷入mp3文件,将CF卡插入实验箱卡座。
挂载CF卡,输入命令:
mount –t vfat /dev/ide/host0/bus0/target0/lun0/part1 /tmp/udisk/ cd /tmp/udisk/
ls ;看到音频文件 cd /Qtopia/demo/bin/
./ madplay /tmp/udisk/qiufo.mp3 即可听到播放的音乐。
二、完整的代码请看光盘目录的 Linux 源码包。
实验十五 嵌入式Linux下的视频实验
【实验目的】
一、了解Mplayer播放器
二、掌握如何在嵌入式Linux中编译Mplayer
精彩文档
实用标准文案
【实验内容】
一、Mplayer的编译
1、将光盘的“Linux\\mplayer移植\\work”目录下,有一个
madplay-0.15.2b.tar.gz 的压缩包拷贝到 PC 机 Linux 系统的任意目录下。
2、解压 Mplayer 源码包
tar –xjvf madplay-0.15.2b.tar.gz
解压后,会在该目录下生成一个madplay-0.15.2b 3、配置 Mplayer sh mplayconfig.sh
运行上面这个命令可以对 Mplayer 进行相关配置。
我们打开 mplayconfig.sh 可以看到该文件里的内容:
./configure --host-cc=gcc --cc=arm-linux-gcc --target=arm-armv4-linux --enable-static --prefix=/tmp --disable-win32 --disable-dvdread --enable-fbdev --disable-mencoder --disable-live --disable-mp3lib --enable-mad
--enable-libavcodec --enable-network
--with-madlibdir=/work/libmad-0.15.1b/lib/lib --with-extralibdir=/work/libmad-0.15.1b/lib/lib --with-extraincdir=/work/libmad-0.15.1b --language=zh_CN 4、编译 Mplayer
在该目录下运行如下命令: make
运行 make 命令后,交叉编译器将会对 Mplayer 的源码包进行编译,编译结束后,将会在
madplay-0.15.2b目录下生成一个 mplayer 的可执行文件。
注意:在进行编译的时候,要首先安装交叉编译工具,这个交叉编译工具的安装,在前面的内核实验中有详细讲到。 二、实验操作步骤
1、用交叉串口线将PC机的COM口与实验箱的UART(P2)相连,插上 12V电源。
2、启动实验箱进入 Linux 环境,利用超级终端来显示,进入Linux命 令行模式。
3、将mplayer可执行文件和视频文件一起下载到 PXA270 的 Linux 环 境下的/TMP 目录下,这里以使用CF卡拷入为例说明:
挂载CF卡,输入命令:
mount –t vfat /dev/ide/host0/bus0/target0/lun0/part1 /tmp/udisk/ cd /tmp/udisk/ ls ;看到视频文件
精彩文档
实用标准文案
chmod 755 mplayer ;改变 mplayer 执行文件的权限
./ mplayer huahuaxingjing.avi ;播放视频文件huahuaxingjing.avi 这时就可以在 LCD 上看到视频的播放,听到音频的输出了。
当然,可以用./mplayer –help 来查看 mplayer 的相关参数。进行相关操作,如下图:
精彩文档
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- gamedaodao.net 版权所有 湘ICP备2024080961号-6
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务