嵌入式系统实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
PXA270嵌入式实验开发系统
LINUX实验报告
本学期通过三节嵌入式实验课的学习,对LINUX系统和嵌入式系统有了一个大致的了解。期间一共做了十四个实验,具体实验内容如下:
实验一建立硬件实验平台
本实验是以后所有实验的硬件基础,需要正确连接宿主PC机与PXA270-EP目标板,PXA270目标板与电源连接,用一根串口线将目标板串口0与PC机后方的串口相连,用一根交叉对接的网线将宿主PC 机网口与目标板网口相连。
实验二Linux操作系统RedHat 9的安装
按照实验书所讲的步骤在Linux虚拟机中正确安装RedHat 9,这是以后所有实验的软件基础。
实验三建立主机软件开发环境
建立宿主PC机端的开发环境,此实验开始需要在RedHat 9中的终端窗口(Terminal)中输入命令:虚拟机载入ISO镜像270EP.iso,登陆RedHat,启动终端窗口,对cdrom镜像进行挂载(mount /dev/cdrom /mnt/cdrom),用“./install”命令进行iso安装,安装完成,修改/ect/profile的环境变量(pathmunge /usr/local/arm-linux-/bin)。
实验四配置超级终端
超级终端作为嵌入式实验性的终端,监视并控制其工作状态。串口设
置(每秒位数:115200;位数据:8;奇偶校验:无;停止位:1;数据流控制:无;)。
实验五配置TFTP
配置宿主PC机端的TFTP(简单文件传输协议)服务,并开通此服务。登陆RedHat,启动终端窗口,输入setup,选择System services,取消ipchains和iptables两项服务,选中tftp服务,取消防火墙,重启TFTP服务(service xinetd restart),设置PC机ip地址为192.168.0.100(ifconfig eth0 192.168.0.100 up),使用tftp服务得到文件zImage。
实验六配置NFS服务
配置宿主PC机端的NFS(网络文件系统)服务,并开通此服务。登陆RedHat,启动终端窗口,输入setup,选择System services,选中nfs服务,保存退出,打开/ect/exports文件,在其中加入“/ 192.168.0.50 (rw,insecure,no_root_squash,no_all_squash)”,然后重启服务(service nfs restart)。注意:每次启动宿主PC机上的Linux操作系统时,需要通过命令ifconfig eth0 192.168.0.100 up重置宿主PC机的IP地址,并在超级终端中用命令ifconfig eth0 192.168.0.50给PXA270实验开发系统设置IP地址。
以上几个实验算是给以后的实验配置了软硬件条件,是以后各个实验的基础。
实验七HelloWorld
从此实验开始第一次正面接触嵌入式Linux的开发,第一次编写嵌入式系统的应用程序。打开宿主PC机登陆RedHat,打开实验箱连接,root登陆实验箱,设置实验箱ip地址为192.168.0.50(ifconfig eth0 192.168.0.50 up),挂载宿主机根目录到实验板/mnt目录下,然后进入mnt目录;RedHat中打开终端窗口,进入home目录建立文件夹HW,并在其中建立HelloWorld.c文件,vi编辑器编辑它。基本C语言代码为:
#include
Intmain()
{
printk(“HelloWorld!\n”);
return 0;
}
在终端窗口下进行交叉编译arm-linux-gcc–o HelloWorld HelloWorld.c,生成.o目标文件,进入超级终端的界面,回到/mnt/home/HW目录下,编译HelloWorld(./HelloWorld),看到打印输出“HelloWorld!”。
实验十二简单设备驱动程序
该实验需要在宿主PC机端编辑三个文件:驱动程序、编译驱动程序时用的Makefile、测试程序。
驱动程序pxa270_hello_drv.c如下:
#include
#include
#include
#include
#include
#include
#include
// HELLO DEVICE MAJOR
#define SIMPLE_HELLO_MAJOR 96
#define OURS_HELLO_DEBUG
#define VERSION "PXA2700EP-SIMPLE_HELLO-V1.00-060530" voidshowversion(void)
{
printk("***************************************");
printk("\t %s \t\n",VERSION);
printk("***************************************");
} //显示版本
// ------------------- READ ------------------------
/*读取模块,用于将指定文件描述符中读取数据,
file:是文件指针
buf:读取数据缓存区
count:请求传输的字节数
f_ops:文件当前偏移量*/
ssize_tSIMPLE_HELLO_read (struct file * file ,char * buf, size_t count, loff_t * f_ops) {
#ifdef OURS_HELLO_DEBUG
printk("SIMPLE_HELLO_read[--kernel--]\n");
#endif
return count;
}
// ------------------- WRITE -----------------------
/*写模块,用于向打开的文件写数据,写操作从文件当前偏移量开始file:是文件指针
buf:写入数据缓存区
count:请求传输的字节数
f_ops:文件当前偏移量*/
ssize_tSIMPLE_HELLO_write (struct file * file ,const char * buf, size_t count, loff_t * f_ops)
{
#ifdef OURS_HELLO_DEBUG
printk("SIMPLE_HELLO_write[--kernel--]\n");
#endif