陈勇嵌入式系统原理实验指导书.docx
《陈勇嵌入式系统原理实验指导书.docx》由会员分享,可在线阅读,更多相关《陈勇嵌入式系统原理实验指导书.docx(87页珍藏版)》请在冰豆网上搜索。
陈勇嵌入式系统原理实验指导书
嵌入式系统原理
实验指导书
陈勇
陕西理工学院数学与计算机科学学院
二零一四年三月
目录
1实验平台3
1.1硬件平台3
1.2软件平台6
2、实验部分8
实验一、熟悉嵌入式系统开发平台8
实验二、Linux常用命令实验11
实验三、linuC语言编程16
实验四、建立交叉编译环境19
实验五、Linux基本应用程序实验24
1实验平台
1.1硬件平台
TQ2440开发板,全新3.5寸数字触摸屏,S3C2440是三星公司推出的一款功能强大,功耗极低的ARM9嵌入式CPU,应用范围非常广泛。
TQ2440开发板我司基于三星公司S3C2440的公版电路,优化设计而来。
TQ2440有V2核心板和TQ2440底板组成.
2440v2核心板特性
特性
说明
CPU处理器
SamsungS3C2440AL,主频400MHz(最高可达533MHz)
SDRAM内存
板载64MBSDRAM(标准配置)可根据用户需要扩展到128MB,提供完整的解决方案32bit数据总线SDRAM,100MHZ(支持稳定运行133MHz,仅此一家)
NandFlash
板载64MBNandFlash(标准配置),掉电非易失,有容乃大(可根据用户需要升级为128MB~1GB,提供完整的解决方案)
NorFlash
板载2MBNorFlash(最高可升级到8MB)
CorePower
专业1.25V核心电压供电,完美解决CPU发热现象
Power
核心板采用3.3V供电
Powerled
1个核心板电源指示灯
核心板接口
接口型号为DC-2.0双列直插
尺寸
微型核心板:
37mmx74mm
TQ2440开发板底板硬件特性
硬件特性
说明
串口
板载五线异步串行口(UART0),可外接串口扩展板引出另两个串口(UART1和UART2);
WINCE和Linux均有三串口驱动。
网络接口
板载100MDM9000网卡,带联接和传输指示灯;
USB接口
USBHOST接口;USBDevice接口。
存储接口
一个SD卡接口,支持2GBSD卡。
音频接口
采用芯片UDA1341,立体声音频输出,可录音。
LCD接口
集成了4线电阻式触摸屏接口;
支持800×600、640×480、240×320、320×240等不同分辨率的TFTLCD,(目前实测最大的屏10.4寸屏,800×600的分辨率),可接VGA转接板
Camera
130W像素摄像头(标配驱动),可支持AV信号视频输入或更高像素的摄像头
时钟源
内部实时时钟(带有后备锂电池)
调试Jtag
JTAG接口,支持ADS1.2,keil等软件的单步调试功能
复位电路
采用专业复位芯片811进行复位,稳定可靠
电源接口
高电流带载的5V电源供电,带电源开关指示灯
AD功能
可调电阻接到ADC引脚上用来验证模数转换
IIC功能
提供AT24C02的EEPROM验证IIC功能
蜂鸣器
测试PWM功能的蜂鸣器
用户按键
4个用户按键,使用外部中断
用户LED灯
4个用户LED灯,使用GPIO口控制
底板尺寸
105mm×128mm
配套LCD简介:
·尺寸:
3.5寸
·显示面积:
70.08(H)mm×52.56(V)mm
·显示颜色:
16.7兆色
·分辨率:
320RGB×240(横屏)
·LED背光
·对比度:
300:
1
·亮度:
320cd/m2(流明)
·使用温度:
-20℃到60℃
触摸屏
·触摸屏使用次数:
超过100,000次
·响应时间:
≤10ms
液晶驱动板介绍
·驱动板自带两个接口:
40pin的0.5间距的FPC接口和50pin的2.0间距的插针接口;
·提供5V和3.3V两种电压供电,缺省状态是3.3V供电.
·提供接口部分的原理图,方便您的使用.
·LCD驱动板的尺寸:
103mm×83mm
1.2软件平台
LINUX软件特性(基于LINUX2.6内核)
类别
功能特性
说明
u-boot
一键更新程序:
bootloader,kernel,Yaffs,NK.bin等更新
首创支持usb下载内核镜像,文件系统的u-boot,使用更方便,开发更容易!
一键式选择设置Linux启动参数
可设置开发板从Linux的Yaffs或nfs启动参数
内核
Linux-2.6.13内核
Linux2.6.25.8内核
采用Linux2.6内核,更好兼容S3C2440
文件
系统
ROM/CRAM/EXT2/FAT32/NFSfilesystem
支持ROM/CRAM/EXT2/FAT32/NFS等文件系统
YAFFSfilesystem
支持YAFFS文件系统
驱动
支持
SystemInterrupt&TimerDriver
系统中断和系统时钟驱动
Serialdevicedriver
三个串口驱动
MTDdeviceDriver
MTD设备驱动
Flashmemorydevicedriver
NandFlash驱动
externalEthernetdevicedriver
集成100M以太网卡驱动(DM9000)
RTC(RealTimeClock)Driver
实时时钟驱动
USBHostdriver
USBHost驱动,支持更多USB设备
USBSlave
USBSlave驱动,支持开发板模拟U盘
LEDSDrives
用户LED灯驱动
Buttons
用户按键驱动,使用外部中断.
SoundDriver
声卡驱动(可以播放可以录音)
LCDDriver(support640*480,240*320,320*240solutionforTFT)
LCD驱动,可接3.5寸,4.3寸,7寸,10寸等
分辨率240×320、320×240、640×480、800×480、800×600的LCD
FrameBuffer
FrameBuffer驱动
TouchPanelDriver
触摸屏驱动(大分辨率LCD依然精准)
SD/MMCDrivers
SD/MMC卡驱动
CameraDriver
摄像头驱动
网络协议及网络应用程序
TCP/IP
完整的TCP/IP协议
Telnet、FTP、inetd
网络远程登录工具及服务
boa
Web服务器应用程序
其他
应用
程序
servfox
控制台下的摄像头应用程序,可通过网络访问开发板的摄像头,以及把摄像头获取的图像显示在LCD上,配合USB摄像头可实现网络监控
spcacat
控制台下的摄像头抓图程序
snapshot
控制台下的LCD抓屏软件
rz和sz
控制台下使用串口接收和发送文件的程序
madplay
控制台下的MP3播放器
基本工具
busybox1.2.0工具集
Busybox1.13工具集
Linux常用命令,占用空间小,命令强大
图形
界面
QtopiaEmbedded
提供Qtopia1.7.0和Qtopia2.2.0,两个版本任君选择;
提供QtopiaEmbedded2和4两种级别的库,更加方便您的开发。
Trolltech开发的用于嵌入式Linux的图形用户界面系统,支持网页浏览器,Medialplay播放器,文件管理器等等
USB设备
驱动
储存设备
支持各种优盘,移动硬盘直接插拔使用
USBHub
支持各种USBHub
USB无线网卡
支持TL-WN321G+、TL-WN322G+
USB摄像头,支持使用中芯微301P系列芯片的USB摄像头,采集动态图像并显示在lcd上
市场上销售的usb摄像头
USB鼠标,键盘
支持USB鼠标,USB键盘
开发主机:
Fedora10(内核版本为Linux2.6.27)
新特性:
Plymouth:
带来无闪烁和极富视觉效果的启动过程,从开始启动Fedora到桌面将非常平滑。
更好的摄像头支持:
在Fedora9的基础上改善而来,对摄像头的支持更好了。
四个可供选择的桌面环境:
分别是GNOME2.24、KDE4.1.2和新兴的轻量级桌面环境LXDE,还有一个面向OLPC的Sugar。
新的输入法ibus:
Fedora10包含了这个全新的输入法框架,目前为止已经相当适用了,并且可能在Fedora11中成为默认输入法。
Ext4的完全支持:
Fedora10已经完全向Ext4准备好了,而不像Fedora9一样只是技术预览。
所以打算使用Ext4的朋友可以开始尝试了。
2、实验部分
实验一、熟悉嵌入式系统开发平台
一、实验目的
1.了解虚拟机与Linux操作系统的基础知识
2.熟悉虚拟机的安装与设置
3.掌握在Vmware上安装RedHatLinux9.0
4.掌握在Linux环境下gcc编译工具的基本使用。
二、主要实验器材
1.软件:
虚拟机软件vmware-workstation5.5.3、RedHatLinux9.0
(shrike-i386-disc1.iso、shrike-i386-disc2.iso、shrike-i386-disc3.iso镜像文件)
2.系统:
CPU主频1GHz;最小512MB;硬盘最小空闲空间10GB;WindowsXP操作系统
三、实验步骤
1、虚拟机的安装与设置
1)首先,要安装VMware软件必须要有相应的安装程序,用户可从相关网站下载安装程序vmware-workstation-5.5.5.exe。
VMware的安装很简单,先安装并启动VMware后,出现如下图所示主界面,在其主界面“主页”标签页中点击“新建虚拟机”按钮打开新建向导。
3)单击“下一步”按钮进入虚拟机配置界面,选择“典型”方式。
4)单击“下一步”按钮进入虚拟机操作系统选择界面,可以看到Windows、Linux、Novell
等多种不同的系统,这里我们点选“Linux”,版本是RedHatLinux。
5)单击“下一步”进入安装目录选择界面。
该界面上面的文本框是虚拟机名称,保持
默认值(RedHatLinux)即可,下面的文本框需要选择虚拟机操作系统的安装位置。
按“浏
览”选择虚拟机的所在目录。
注意:
虚拟机目录所在的硬盘要有足够的空间,因为安装好的
REDHAT9.0本身就有近1.8G。
6)单击“下一步”进入网络连接方式选择界面,此界面中共有四种网络设置方式选项,
选择“使用桥接网络”方式。
7)单击“下一步”,这里是设置磁盘的大小,软件默认大小为8GB,一般应该情况下
够用,如果你的硬盘空间足够大,也可以将磁盘空间设置在8GB以上。
该界面上还有两个选项,分别是“立即分配所有磁盘空间”和“分割磁盘为2GB的文件”,
我们可以在前一项上打钩,第二项不打钩。
最后单击“完成”按钮返回
VMware主界面。
将看到主界面上多了一个“RedHatLinux”标签页,其中显示了这台
新建虚拟机的各种配置。
点击“虚拟机”菜单中的“设置”命令,打开虚拟机设置对话框,
内存大小可根据机器的实际情况设置,内存设置得大一点,可以加快Linux运行的速度。
其余项暂不用修改。
点击界面上的“添加”按钮,再点击“下一步”,然后选择所要添加的部件,通常要添
加一个串行口。
2、Linux操作系统的安装
1)安装前需做好准备工作,下载RedHatLinux9.0安装所需要的三个ISO镜像文件。
其文件名分别为shrike-i386-disc1.iso、shrike-i386-disc2.iso、shrike-i386-disc3.iso。
2)在“虚拟机设置”对话框中,选择“CD-ROM”,在CD-ROM的连接选项中选择“使用ISO镜像”,点击“浏览”按钮,选择下载好的3个ISO镜像文件中的第一个(注意:
在后面安装过程中要分别选择这3个文件中的第二个和第三个时,只需要重复以上步骤即可),
找到第一个文件,点击“打开”,再点击“确定”按钮。
(若是采用光盘安装就直接将光盘
插入物理光驱即可,不要选择镜像文件)。
3)启动虚拟机(即点击VMware界面左部“启动该虚拟机”命令或工具栏上的绿色启
动按钮),VMware的窗口就出现了虚拟机启动的界面。
4)REDHAT会自动进入安装程序的界面。
首先询问是以图形界面还是以文本界面安
装,依据提示按回车选择图形界面安装,接下来询问是否要测试光驱,这里选择不要即可。
方法是:
在VMware窗口上单击鼠标,使光标从Windows切换到VMware,再按键盘上
的TAB键,然后回车。
5)依提示选择安装语言(选择简体中文)、鼠标、键盘(使用默认值),安装类型(选
择服务器)等之后进入磁盘分区界面,安装程序问是否要自动分区,直接点的“下一步”,
这时出现“警告”,点击“是”(这是虚拟磁盘,不会破坏你硬盘上原来的数据)。
下一个
界面中有关于自动分区的3种选择,用户可根据自己的需要进行选择,选择此项以后在接下来的窗口中可以一路默认,连续点“Next”进入引导程序装载界面。
6)在引导程序装载界面连按“Next”。
设置完系统语言和时区后进入根密码的设置界
面,安装程序要求设置root密码。
设置好口令后连按“Next”,出现“选择软件包组”的对话框,也就是按装选项,如下图:
根据自己的实际情况,选择必要的软件包,设置好后,点击“下一步”。
7)等待一段时间直到出现更换光盘的提示,这样第一个ISO镜像文件就安装完成。
安
装程序提示换第二张光盘,方法如2),按“浏览”,选择你下载好的3个ISO镜像文件中
的第二个,按OK,就完成了换第二个文件的工作。
再用同样方法安装下载好的第三个ISO镜
像文件。
8)第三个文件装完后,系统问是否做启动盘,这个根据自己需要选择,然后就是显卡等
的设置,一路默认。
最后选一个“Next”,VMware内系统重启。
9)重启后,系统提示你创建一个个人用户名(personalaccount)和密码,这里自己创建
一下。
然后是选择日期和试听声卡,然后问你是否注册,接着又问有无附加安装(这里建议
先还是都不要了吧),最后VMWARE内系统再次重启。
10)启动后输入用户名和密码,就进入RedHat9.0界面。
至此,RedHatLinux9.0就安
装成功
3、gcc工具的基本使用
(1)用Vi/Vim编辑器编写如下代码,取名为gcc_t.c
#include
intmain()
{
printf("HelloWorld!
\n");
return0;
}
(2)默认编译gcc_t.c文件
#gccgcc_t.c
#ls
a.outgcc_t.c
(3)执行a.out可执行文件
#./a.out
HelloWorld!
(4)使用-o选项:
指定编译后的二进制文件名
#gcc-otestgcc_t.c
#ls
gcc_t.ctest
(5)-x选项:
忽略源文件名后缀类型
#gcc-ogcc_t.x-xcgcc_t.xyz
(6)-E选项:
只进行预处理
#gcc-Egcc_t.c-ogcc_t.i
(7)-S选项:
只进行到编译阶段
#gcc-Sgcc_t.c
#ls
gcc_t.cgcc_t.s
(8)-c选项:
编译、汇编到目标代码,不进行链接
#gcc-cgcc_t.c
#ls
gcc_t.cgcc_t.o
(9)-M选项:
生成当前编译程序文件关联的详细信息,包含目标文件所依赖的所有源代码文件,包括头文件。
#gcc-Mgcc_t.c
四、实验要求
1、掌握linux虚拟机的安装方法。
2、掌握GCC编译程序的步骤和方法。
3、记录下实验运行的结果。
4、认真书写实验报告,对实验过程中出现的问题和原因及时记录。
实验二、Linux常用命令实验
一、实验目的
掌握linux系统中常用命令的使用方法。
二、实验环境
硬件:
PC机Pentium500以上,硬盘10G以上
软件:
PC机操作系统Linux虚拟机开发环境。
三、实验步骤
在linux虚拟机中掌握以下常用命令的使用方法
1.cat查看文件内容,从键盘读取数据,合并文件等
格式:
cat[-b][-A][-E][-T][-n][-s][-v]文件名
选项说明:
-b不显示文件中的空行。
-A相当于-v-E-T(-vET)。
-E在文件的每一行行尾加上“$”字符。
-T将文件中的Tab键用字符“^I”来显示。
-n在文件的每行前面显示行号。
-s将连续的多个空行用一个空行来显示。
-v显示除Tab和Enter之外的所有字符。
下面的命令演示了如何显示file文件中的行号
$cat-nfile
2.chmod修改文件权限
格式:
chmod选项文件或目录名
选项说明:
u文件所有者
g文件所属组
o其它用户
+增加权限
-取消权限
=赋给权限
a所有用户
r读权限
w写权限
x执行权限
下面的命令演示了如何使所有用户都可以读写file文件
$chmoda+rwfile
3.chown改变文件所有者
格式:
chown[-R][-c][用户名][组名]文件或目录名
选项说明:
-c文件属主改变时显示说明。
-R/r改变目录下的文件及其子目录下所有文件的属主。
下面的命令演示了如何改变dir目录下的文件及其子目录下的文件的属主为
bugboy
$chown-Rbugboydir
4.cp复制文件
格式:
cp选项源文件名目标文件名
选项说明:
-R复制整个目录。
-f删除己存在的目标文件。
-i使用-f遇到删除文件时给出提示。
下面的命令演示了如何把file文件复制到当前用户的根目录下
$cpfile~/
5.df查看磁盘剩余空间
格式:
df[-t][-x][-k][-p][-a][-m][filename]
选项说明:
-t只输出类型列在fstype中的文件系统。
-x只输出类型没有列在fstype中的文件系统。
-k显示空间以K为单位。
-m显示空间以M为单位。
-a将空间为0的文件系统也输出。
filename指定要查看的文件的大小。
6.fdisk/sfdisk查看硬盘分区信息
格式:
fdisk-l[-u][device...]
fdisk-spartition
选项说明:
-u列出分区表的时候以扇区的大小代替柱面大小。
-l列出给定设备的分区表,如果没有给定设备,则列出/proc/partions中设
备的分区表。
-spartition给出partition分区的大小(以块为单位)。
7.find查找文件
格式:
find[路径][匹配表达示]
其中匹配表达示有几种类型:
-namefilename查找指定名称的文件。
-userusername查找指定用户名的文件。
-groupgrpname查找指定级名的文件。
-print显示查找的结果。
-sizen查找大小为n块的文件,一块等于512字节。
符号“+n”表示查找大
小大于n块的文件;符号“nc”表示查找大小为n个字符的文件,同样的也有符号
“+nc”。
-inumn查找索引结点号(i-node)为n的文件。
-atimen查找n天前被访问的文件。
“+n”表示超过n天前被访问的文件;“-n”
表示不超过n天前被访问的文件。
-mtimen类似于atime,但是检查的是文件内容被修改的时间。
-ctimen类似于atime,但检查的是文件索引结点被改变的时间。
-permmode查找与给定权限匹配的文件,必须以八进制的形式给出访问权
限。
-newerfile查找比指定文件新的文件,即最后修改时间离现在较近。
-execcommand对匹配文件执行command命令,command后用了个大括号包括
文件名。
command必须以反斜杠和一个分号结尾。
-okcommand执行command的时候请求用户确认。
其它与-exec相同。
例:
查找当前目录下所有以.bak结尾的文件,并删除它们
$find.-name"*.bak"-execrm{}\;
注:
这里*.bak必须要用单引号或者双引号引起来,或者可以写成\*.bak。
8.kill终止进程
格式:
kill[-s|p][-a]PID
选项说明:
-s指明发送给进程的信号。
例如-9(强行终止),默认发送TERM信号。
-p显示进程的ID,不发送信号。
-a终止所有进程。
0给所有在当前进程组中的进程发送信号。
-1给所有进程号大于1的进程发送信号。
9.ln在文件之间建立链接
格式:
ln[-b][-d][-F][-f][-i][-n][-s][-v]源文件目录文件或目录
选项说明:
-b为删除的文件建立备份。
-d允许root用户建立硬链接。
-F与b相同。
-f强行删除目标文件。
-i在删除文件时给出提示。
-n当目标文件是目录的符号链接时,替代该符号链接。
-s用符号链接代替硬链接(建立符号链接)。
-v输出被链接文件的文件名。
10.ls用于浏览目录,查看当前目录下的文件和文件名
格式:
ls[选项]
选项说明:
-a显示所有文件(包括隐藏文件)。
-l显示文件的详细信息。
-k显示文件大小,以K为单位。
-color显示文件时用不同颜色加以区别文件类型。
-d将根目录作为文件显示。
11.mount加载文件系统
格式:
mount磁盘或分区的设备文件载入点选项
选项说明:
-t文件系统类型(fat32为vfat)
-o选项常用的选项有codepage,iocharset(对于中文codepage=936,iocharset=gb2312)
-loop挂载ISO文件时用。
举个例子,挂载/dev/hda5到/mnt/wind目录下并且目录支持中文,命令如下:
#mount-tvfat/dev/hda5/mnt/wind-ocodepage=936,iocharset=gb2312
12.mv重命名文件或移动文件
格式:
mv[-b][-f][-i][-u][-v]源文件目标文件或文件夹
选项说明:
-b为源文件作备份
-f文件重命名时强制覆盖己有文件。
-i覆盖文件时给出提示。
-u目标文件比源文件新时不覆盖。
-v移动文件时给出