嵌入式微处理器实验指导实验一二三四五.docx
《嵌入式微处理器实验指导实验一二三四五.docx》由会员分享,可在线阅读,更多相关《嵌入式微处理器实验指导实验一二三四五.docx(12页珍藏版)》请在冰点文库上搜索。
![嵌入式微处理器实验指导实验一二三四五.docx](https://file1.bingdoc.com/fileroot1/2023-7/23/c4293902-0575-4c7e-955c-7deb64455a13/c4293902-0575-4c7e-955c-7deb64455a131.gif)
嵌入式微处理器实验指导实验一二三四五
实验一、Linux常用命令及工具
【实验目的】
熟悉Linux常用命令及工具的使用,特别是常用命令的关键选项及用法需要熟悉。
【实验内容】
1.在老师讲解下掌握Linux常用命令和工具的用法;
2.打开虚拟机ubuntu的Terminal,进行命令的练习和熟悉;
3.截图保存相关界面;
【实验准备】
1.熟悉Ubuntu虚拟机的安装和使用。
2.熟悉Linux常用命令和工具。
【实验报告要求】
1.分别叙述Linux常用命令、ctags+vim工具的功能和一般用法,包括常用选项。
2.需要有实验记录。
【实验步骤】
一、常用命令用法:
1、对于不熟悉的命令请查看网页:
2、ls的功能及常用选项,当以长格式显示目录下的内容列表时,输出的信息从左到右依次包括文件类型、权限模式、硬连接数、所有者、组、文件大小和文件的最后修改时间、文件名等,对于文件类型和权限模式需要熟悉;
3、cd的功能及常用选项:
-、/、~、.、..各表示什么意思?
4、mkdir、cp、mv、rm、pwd的功能及常用选项;
5、chmod的功能及常用选项;
6、find的功能及常用选项;
7、grep的功能及常用选项;
8、tar的功能及常用选项。
二、常用工具的安装和熟悉
1、下载ctags-5.8.tar.gz和vim-6.4.tar.bz2文件,复制到虚拟机的root目录下,用tar解压缩,然后安装。
安装方法如下:
1)进入源代码根目录执行./configure,
2)然后执行make,
3)编译成功后执行makeinstall。
2、进入/opt/WXL/wxl210/linux2.6.35wxl210exp20131202路径下,运行命令:
ctags–R*
然后运行:
vi–tWXL_hello_init
就能定位到WXL_hello_init函数定义的代码处,熟悉此文档中的代码并理解。
注意Ctrl+]和Ctrl+T的用法。
3、将vimrc文件复制到虚拟机/root目录下,改名为.vimrc。
再次进入/opt/WXL/wxl210/linux2.6.35wxl210exp20131202路径下运行:
vi–tWXL_hello_init
看是不是有什么不一样的地方?
【实验总结】
实验过程中碰到的具体问题,怎么解决的?
学到了什么?
实验二、uboot及uboot命令
【实验目的】
阅读《第六章linux系统组成和构建.ppt》中的bootloader部分,熟悉uboot的配置和编译,掌握uboot中常用命令的用法。
特别是print、setenv、saveenv、bootm、ping及nanderase、nandread、nandwrite、tftp等命令;熟悉vim和ctags的用法。
【实验内容】
1.在老师讲解下掌握uboot的配置和编译方法;
2.将pc机和实验单板连接好,并暂停在uboot状态;
3.用命令查看单板的环境变量,设置好网络相关的数据,pingpc机的ip地址显示alive状态;
4.打开tftp工具找到内核镜像文件并载入,然后在终端输入tftp命令将内核镜像传送到单板的内存;
5.用bootm命令从内存内核镜像起始地址引导内核启动;
6.熟悉nanderase、nandread和nandwrite命令,掌握利用nandwrite命令将tftp传送到单板的镜像写入nandflash中,并引导内核启动。
【实验准备】
1.熟悉uboot常用命令,掌握ubuntu虚拟机的用法;
2.熟悉tftp等工具的使用方法。
【实验报告要求】
1.详细描述在uboot下常用命令的演示及结果。
2.利用tftp工具将内核镜像传送到单板。
3.将单板上内存中的镜像写入nandflash中。
【实验步骤】
1.连接单板,配置好超级终端,将单板上电,在uboot启动后倒数三秒时按任意键,使单板停在uboot状态,在uboot下熟悉常用命令,并配置好单板的网络参数,使单板能正常连网。
2.利用tftp工具将内核镜像传送到单板,并通过bootm命令正常引导内核启动。
3.重启单板,再次用tftp将内核镜像传送至单板,然后利用nanderase和nandwrite命令将单板上内存中的镜像先擦除再写入nandflash中。
4.学习uboot源码的编译方法
【实验总结】
实验过程中碰到的具体问题,怎么解决的?
通过这次实验学到了什么?
实验三、make及makefile
在uboot和linux内核配置、编译中的应用
【实验目的】
熟悉基本的调试方法,然后熟悉make和makefile的知识,自己能编写简单的makefile文件,并读懂一般的makefile文件,通过make命令实现完成程序的编译。
【实验内容】
1.学习makefile语法规则;
2.为.c文件写它相关的makefile文件,并编译运行;
3.进一步掌握makefile中常用变量的用法。
4.掌握uboot和linux内核的配置和编译方法。
【实验准备】
1.熟悉Linux常用命令,掌握ubuntu虚拟机的用法;
2.熟悉GCC、GDB等工具的使用方法。
【实验报告要求】
1.熟悉make工具及用法;
2.从看懂makefile文件开始,掌握简单的makefile写法,能看懂大部分的makefile文件;
3.掌握makefile中常用变量的使用。
4.掌握uboot和linux内核的配置与编译方法。
【实验步骤】
1.分析makefile(example)文件中的含义,完成src中文件的编译,运行可执行文件,思考运行结果。
(所需内容请自行下载使用)
2.回忆上两周课堂内容,完成对uboot和linux内核源码的配置和编译,最后生成uboot.bin和zImage文件。
要求:
修改uboot引导内核前倒数3s的时间;
修改linux内核源码配置中有关ubs驱动部分,使得usb驱动不编译进内核。
3.现有7个文件分别是m.c、m.h、study.c、listen.c、visit.c、play.c、watch.c,将它们放在/home/lab-3/目录下,要求通过makefile的编写实现所有文件的编译,生成一个名为m的可执行程序。
(7个源文件见下面附录)
4.将自己编译出来的uboot.bin和zImage文件烧录进开发板运行。
【实验总结】
实验过程中碰到的具体问题,怎么解决的?
通过这次实验学到了什么?
附录:
实验步骤3所需源代码:
m.c:
#include
main()
{
intI;
printf(“pleaseinputthevalueofIfrom1to5:
\n”);
scanf(“%d”,&i);
if(i==1)
visit();
elseif(i==2)
study();
elseif(i==3)
play();
elseif(i==4)
watch();
elseif(i==5)
listen();
else
printf(“nothingtodo\n”);
printf(“thisisawonderfulday\n”);
}
m.h:
voidvisit();
voidlisten();
voidwatch();
voidstudy();
voidplay();
study.c:
voidstudy()
{
printf(“studyembeddedsystemtoday\n”);
}
listen.c:
voidlisten()
{
printf(“listenEnglishtoday\n”);
}
play.c:
#include
voidtoday()
{
printf(“playfootballtoday\n”);
}
visit.c:
#include
voidvisit()
{
printf(“visitfriendtoday\n”);
}
watch.c:
include
voidwatch()
{
printf(“watchTVtoday\n”);
}
实验四、内核模块.ko的实现
【实验目的】
熟悉vim和ctags的用法;
掌握编译成内核模块的两种方法。
【实验内容】
1.将hello.c文件拷贝到内核源码目录的drivers/char/下面,采用内核编译方式,将hello.c编译成hello.ko;
2.连接好并上电启动开发板,在超级终端下,将两个.ko文件发送到开发板上,用insmod命令进行加载,用lsmod命令查看,用rmmod命令进行卸载;
【实验准备】
1.熟悉vim的用法;
2.熟悉内核模块的生成及加载和卸载等。
【实验报告要求】
1.详细描述将hello.c编译成内核模块的方法。
2.内核模块加载和卸载的过程。
【实验步骤】
1.结合实验三以及理论课堂的讲授,将hello.c编译成hello.ko;
2.连接单板,配置好secureCRT超级终端,将单板上电,然后将hello.ko发送到单板上,进行加载和卸载的实验。
附:
查看已加载的内核模块、内核模块加载、卸载的方法如下:
1)查看已加载的模块
#lsmod
2)加载模块(注意两个加载命令的区别)
#insmod/lib/modules/2.6.**/***.ko
#modprobe***
3)卸载模块
#rmmod***
实验五、字符设备驱动调试
【实验目的】
熟悉vim和ctags的用法;
掌握简单字符设备驱动结构;
掌握在/dev下自动创建设备文件的方法并实现。
【实验内容】
1.在memdev.c中加入你认为重要的相关输出信息,比如查看sizeof(structmem_dev)的大小值,在memdev_init函数中增加相关打印信息,使得程序正常加载后能看到提示信息输出等等;
printk(KERN_INFO"Hello,world!
/n");
system(“ls-al/etc/passwd/etc/shadow”);
2.完成“字符设备驱动实验代码.rar”中设备驱动部分和应用测试部分各自的编译,并发送到开发板上;
3.在开发板上加载设备驱动的.ko文件,注意加载后输出的提示信息,成功加载后再运行应用测试程序的可执行文件,查看输出的提示信息和测试结果;(加载memdev.ko需要注意mknssod命令生成设备文件,需要注意memdev.ko的主设备号是否正常。
)
4.自学熟悉memdev.c中这行代码:
module_param(mem_major,int,S_IRUGO);
的作用,掌握加载的时候给static变量重新赋值的方法;
Insmodmemdev.komem_major=250
5.在memdev.c中将staticmem_major=MEMDEV_MAJOR;
这行修改成:
staticmem_major=0;后重新编译,加载,然后用cat/proc/devices查看设备名为memdev的字符设备的主设备号是多少;
250
6.在memdev.c中增加自动创建设备文件的相关代码,并编译成.ko文件,发送到开发板并加载,查看是否在/dev目录下有自动创建两个设备文件。
system(“mknod/dev/memdev0c2500”);
system(“mknod/dev/memdev0c2501”);
【实验准备】
1.熟悉vim的用法;
2.熟悉内核模块的生成及加载和卸载等;
3.掌握简单字符设备驱动的结构及主要代码的意义。
【实验报告要求】
1.根据【实验内容】详细描述自己修改代码及操作的过程及相关结果
2.详细描述碰到的问题及解决的方法。
【实验步骤】
下载“字符设备驱动实验代码.rar”,解压缩后拷贝到ubuntu下,分别完成【实验内容】中的1~6项。
1.在memdev.c中加入输出信息,并把生成的memdev.ko传到目标板后,通过超级终端在目标板上加载模块
2.在宿主机上编译测试驱动的文件app-mem.c
3.在目标板创建设备节点(设备文件)后,运行app-mem
4.在安装驱动模块时指定主设备号
5.在memdev.h中将mem_major设为0
主设备号被分配为250
6.在memdev.c中增加自动创建设备文件的相关代码,并重新编译成memdev.ko文件
卸载原memdev模块,重新安装
查看设备文件是否创建成功