嵌入式实验报告Word文档下载推荐.docx
《嵌入式实验报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《嵌入式实验报告Word文档下载推荐.docx(19页珍藏版)》请在冰豆网上搜索。
DBMX1ADS开发板
PC机(操作系统为Windows2000或更高版本)
直连串口线
3.3V/2A开关电源
2.软件:
虚拟机Vmware
虚拟机上运行的RedHatLinux9.0
ARM-Linux工具链(或者源代码)
安装脚本
文本编辑器(如Windows下的notepad、ultraedit,Linux下的Vi、Emacs等)
五、实验步骤:
1.打开电脑,运行虚拟机以及其上的Linux操作系统
2.解压缩并安装arm-linux交叉编译工具
3.修改配置文件
4.设置PATH变量,使得在任何路径下都可以使用arm-linux-gcc工具
5.重新启动,使设置生效
六、实验结果:
在任意一个目录下能够使用arm-linux-xxx的命令能够使用arm-linux-gcc编译程序并使用file命令进行查看。
(二)Bootloader的编译
1.通过实验认识启动引导程序的作用、功能和实现机理;
2.了解系统启动过程中的关键操作;
3.学习启动引导程序的编程思想,如何根据硬件的特点来初始化并引导系统;
4.进一步加深对Bootstrap模式下程序编写、编译和测试整个流程的认识。
1.了解系统硬件初始化的相关要求;
2.了解加载系统的要求和方法;
3.了解如何在Bootstrap模式下操作特定的硬件例如:
UART串口、Flash存储器、USB-client控制器;
4.编写相应的Bootloader程序;
5.编写相应的编译脚本和链接配置文件;
6.编译程序,生成启动镜像;
7.下载程序,选择正确选项将Bootloader烧写进Flash中;
8.选择正确的启动模式,检验是否正确烧入Bootloader。
嵌入式系统作为一个复杂的硬件和软件的结合体,其工作的最开始阶段需要进行对硬件的初始化设置,并且能够引导系统从而将硬件的控制权交给操作系统。
这一系列的工作需要启动引导程序来完成。
嵌入式系统中的启动引导程序的作用与PC的BIOS程序相类似,PC中完成启动和引导功能的程序便是固化在BIOS芯片中的固件程序。
PC机(操作系统为Windows2000或更高版本)
A-to-B型的USB线缆
交叉编译工具链
终端软件Windows下的HyperTerminal或者Linux下的minicom
文本编辑器(如Windows下的notepad、ultraedit,Linux下的Vi、Emacs)
1.编写实现在Bootstrap模式下完成硬件初始化和加载系统的引导加载程序,并编写相应的编译命令脚本和和其他相关文件。
2.使用虚拟机上的交叉编译工具链将编写好程序进行编译,生成可以直接在Bootstrap模式下运行的b格式程序。
3.将DBMX1ADS板上的BOOT[3:
0]设置为Bootstrap模式。
4.在计算机串口到DBMX1ADS板上串口间连上串口线。
5.在Windows中运行HyperTerminal,并进行正确的设置:
波特率为115200bps,数据位是8,停止位是1,无校验位,无数据流控制,并且将换行符添加到传入行的末尾。
(若使用minicom,发送模式选为ascii,其余设置参照2.2)
6.打开DBMX1ADS板上的电源。
7.在HyperTerminal中输入‘a’或‘A’,应当从串口程序中看到返回的‘:
’。
这一步是使ADS处理器自动探测并设定波特率。
8.传送文本文件boot_setup.txt,设置SDRAM的工作方式。
9.传送启动引导加载程序Bootloader_b.txt。
10.待Bootloader_b.txt传输完毕之后此程序将在SDRAM中自动运行,将在HyperTerminal中看到程序的提示如下:
0.ProgramBootloaderimage
1.Programkernelimage
2.Programroot-diskimage
3.Bootkernel
4.EraseKERNELpartition,CAUTION!
5.EraseROOTDISKpartition,CAUTION!
Pleaseenterselection->
11.输入“0”,在SDRAM中运行的程序将会有提示。
12.将电脑主机与DBMX1ADS开发板用A-to-B型的USB线缆连接,稍等片刻,Windows将找到可移动磁盘,将boot.bin复制到此可移动磁盘中。
13.弹出该可移动磁盘
14.关闭DBMX1ADS板的电源,将BOOT[3:
0]设置为正常启动模式。
15.打开电源,Bootloader开始运行,HypterTerminal中将会出现相关的提示信息。
运行在SDRAM中的程序将启动镜像正确烧入Flash中。
正常启动方式下Bootloader能够正常启动,能够在HyperTerminal中看到相关的提示信息。
(三)ARM-Linux内核的编译和下载
1.了解内核在整个系统中的作用和地位;
2.了解启动过程中内核的运行方式;
3.通过实验认识内核的配置方法;
4.能够根据自己的需要灵活得配置和裁减内核;
5.掌握将Linux内核烧写进嵌入式系统的方法。
1.根据特定嵌入式系统特点编写相应配置文件;
2.编译内核;
3.烧写内核。
Linux内核是Linux操作系统运行的核心,进程管理、内存管理、硬件设备的接口都是由Linux内核来完成的。
然而Linux内核本身并不是可以直接使用的,更一般的是以源代码的方式提供的。
这就要求学生能够使用相应的工具根据系统的具体要求来完成对内核源代码的配置和编译,并且生成嵌入式系统能够使用的内核映像。
交叉编译环境已经配置完毕,可以通过简单的方式来进行内核的交叉编译。
通过人机交互界面,可以完成对内核进行配置的工作。
如果需要加入特殊的要求,可以直接修改相应的配置文件来配置内核。
配置完毕之后,通过交叉编译就可以得到能够在嵌入式系统上使用的内核。
在Bootloader的支持下可以完成内核的下载。
生成内核映像:
1.从网站获得Linux源代码或者其他方式
2.从网站或者其他方式获得针对CPU和开发板的补丁包
3.解压Linux源代码和对应的补丁包六、实验结果:
4.根据自己对开发板进行设置修改相应的配置文件
5.进入到Linux源代码目录:
cd~/linux
6.清除多余文件:
makeclean
7.进入配置菜单:
makemenuconfig
8.对内核进行配置
9.生成依赖关系:
makedep
10.编译内核,生成内核映像:
makeImage。
内核映像一般被存放在
linux/arch/arm/boot目录下,文件名为zImage或者bzImage
下载内核映像:
1.将DBMX1ADS设置为正常启动模式
2.使用串口线将ADS板与PC机相连
3.打开Windows下的HyperTerminal,设置为115200bps,8N1,无流控(若使用minicom,发送模式选为ascii,其余设置参照2.2)
4.打开DBMX1ADS板电源
5.终端程序提示进入Boot选项时按下任意键
6.选择烧写kernel,Bootloader此时提示USB驱动准备就绪
7.用A-to-B型的USB线将PC与ADS板相连
8.待系统识别出可移动磁盘之后,将zImage放入该磁盘中,然后弹出
9.当终端提示按下任意键之后开始编程,编程分为擦写检查和擦写、编程、校验三步,成功之后终端提示重新启动系统。
生成内核映像
下载成功
(四)根文件系统的制作和下载
1.了解根文件系统(rootfilesystem)在整个系统中的作用和地位;
2.了解根文件系统的主要和必要组成部分;
3.能够根据自己的需要灵活得配置根文件系统;
4.掌握将根文件烧写进嵌入式系统的方法。
1.生成根文件系统;
2.烧写根文件系统。
根文件系统是Linux文件系统中最低层的文件系统,一般在内核被引导和启动之后是必须挂载的。
根文件系统必须提供系统启动的配置文件以及完成一些设备的配置工作。
另外根文件系统中应当有一些最基本的应用程序提供给控制台使用。
若是进行应用程序的开发和使用,根文件系统中需要有一些库来供应用程序动态调用。
因此,根文件系统提供了应用程序运行所需要的最基本的文件。
在Bootloader的支持下可以完成根文件系统的下载。
生成根文件系统
1.准备文件bdfs_noQT.tgz或者bdfs_withQT.tgz和工具mkfs.jffs2
2.解压文件bdfs_noQT.tgz或者bdfs_withQT.tgz
3.使用工具mkfs.jffs2生成jffs2文件系统
4.修改链接配置文件
5.再次生成jffs2文件系统
6.将DBMX1ADS启动,进入Linux后执行命令:
eraseall/dev/mtdblock/2
完成旧文件系统的擦除,然后重启DBMX1ADS
下载内核映像
1.将DBMX1ADS板上的BOOT[3:
0]设置为ON-OFF-OFF-ON
3.打开Windows下的HyperTerminal,设置为115200bps,8N1,无流控(若使用minicom,发送模式选为ascii,其余设置参照2.2)。
4.打开ADS板电源
5.终端程序提示进入Boot选项是按下任意键
6.选择烧写rootfilesystem,Bootloader此时提示USB驱动准备就绪
8.待系统识别出可移动磁盘之后,bd_noQT.jffs2放入该磁盘中,将然后弹出,当终端提示按下任意键之后开始编程
9.按下任意键,编程分为擦写检查和擦写、编程、校验三步,成功之后终端提示重新启动系统。
10.系统重启引导根文件系统之后,使用命令可以将根文件系统改为可写模式。
生成根文件系统映像
实验总结:
通过这次实验,我熟悉了Linux系统的操作,学会了编译、建立一个嵌入式开发平台,了解了ARM-Linux开发工具链的含义,建立流程,以及初步的使用方法。
并熟悉了Bootloader、Linux内核映像以及根系统的编译。
硬件测试实验
该实验开发板处于Bootstrap启动模式。
SW1的123456拨码开关设置为ON-ON-ON-ON-ON-ON。
SW2的123456拨码开关设置为ON-ON-OFF-ON-ON-ON。
用minicom传输文件,则用ascii模式发送。
(一)Bootstrap模式下硬件测试程序下载及PWM控制蜂鸣器实验
1.认识MC9328MX1的Bootstrap模式,了解该模式下的程序下载过程以及编译和测试的整个流程。
2.了解DBMX1的脉冲宽度调制器(PWM)的原理,了解及其对蜂鸣器的控制机理。
3.编写程序读写PWM模块寄存器,进行由简单到复杂的控制。
1.阅读MC9328MX1ReferenceManual,Rev5中关于PWM的部分,对微处理器上的这个模块有初步的认识。
2.通过例程了解编写、编译硬件测试程序的主要步骤。
3.编写程序,下载测试,编译程序,得到结果,使蜂鸣器按照预设的频率及音量发出声音。
DBMX1的PWM模块有四个寄存器:
PWMC、PWMS、PWMP、PWMCNT,其中PWMCNT为只读寄存器。
PWMC实现对模块工作的控制。
其中包括PWM的工作模式,本实验中PWM应该工作在音调模式。
具体的设置PWMCR请参考手册。
PWM模块的输出为PWMO,ADS将PWMO接蜂鸣器,所以要实现对蜂鸣器的控制要先控制PWMO。
(PWMO的占空比即脉冲高电平持续时间与周期之比控制蜂鸣器的音长,PWMO的频率控制蜂鸣器的音调)。
据芯片手册的描述,PWMO的占空比由PWMS寄存器中的值控制,频率由PWMP寄存器中的值控制。
实验中需要根据实验要求正确设置这些寄存器,从而实现要求。
1.在进行相关背景知识的学习之后编写出C文件(pwm.c),实现控制PWM的简单功能(有例程供参考)。
2.打开VMwareWorkstation,点击Startthisvirtualmachine,进入Linux登陆界面,然后登陆进入Linux。
3.进入含有pwm.c文件以及其它相关文件(附加说明的编程必备文件中提供)目录下,编写编译命令脚本go.sh。
运行该脚本,完成pwm.c的编译。
编译成功后可以看到b-record格式文件。
4.将DBMX1的Uart1与PC的COM1相连,连上DBMX1电源线。
5.设置拨码开关SW1为Bootstrap模式。
SW2按照默认可行连接,即将IrDA关闭,其他为ON,拨码开关SW2中控制PWMO输出信号与蜂鸣器buzzer相连的开关必须保持在闭合状态。
6.打开Window下附件通讯超级终端,然后打开DBMX1电源开关SW2。
(要先设好超级终端才可以打开电源开关,如果相反,需要对DBMX1重启——按SW3。
7.在超级终端中键入字母a或A,如果连接成功看到屏幕显示“:
,同时”Uart1的波特率完成自动检测,此时可以开始传输文件。
点击传送发送文本文件,找到文件boot_setup.txt(初始化内存所必要的文件)传送,成功后,传送文本文件pwm_b.text,则它被下载入内存。
如果成功会看到屏幕上显示b-record格式文件。
程序自动被执行,蜂鸣器发出叫声。
8.如果蜂鸣器未发出指定叫声,在操作无问题的条件下,则需要修改程序,然后从第二步开始重新操作。
从串口终端下载程序完毕之后程序自动运行,将重复发出音调变化的蜂鸣声。
用示波器观察PWMO管脚所在的电网络,以及蜂鸣器输入端的波形,可以看到PWM波形,记录这些波形,进行分析。
(二)Bootstrap模式下串行口通信实验
1.了解认识串口这一广泛应用的通讯手段
2.了解MC9328MX1的UART控制器的特点、性能、工作原理、配置方法
3.进一步加深对Bootstrap模式下硬件程序编写、编译和测试整个流程的认识
1.研读实例程序,了解串口控制的基本流程。
2.编写程序并下载到嵌入式系统,实现串口的收发功能。
示例程序中给出了不断向PC机串口发送“IamUART!
”的字符串。
3.接收来自PC机串口(通过终端程序)的字符,并将接收到的字符经过某些处理发送回终端程序。
在没有操作系统的情况下,完成嵌入式系统和PC机通过串行口传递信息。
(扩展要求)
4.编译程序,下载测试,观察结果
Bootstrap模式下,串口1是自动初始化的,可以直接使用,而其它的外设均需要进行初始化。
初始化的过程就是将相应的寄存器进行配置。
在这个实验中,通过配置串口1、2可以将这两个串口初始化并使用。
通过读写相应的寄存器可以修改串口设置、改变串口的工作方式以及输出数据。
因此,这个实验的实质就是把通过读写UART的寄存器进行试验性的控制。
这种方式是嵌入式系统底层硬件编程的基础。
对UART模块有了充分了解之后就能够根据需求编写相应的测试程序,通过交叉编译生成可执行程序。
1.学习基础知识,了解串行通信的基本原理,和与UART相关的寄存器的配置方法。
2.编写程序串口操作函数uart.c和hello.c,实现如下功能:
将系统初始化为异步模式,初始化BHUDBMX1ADS的UART1为115200bps,Databit,8bit1bitStopbit。
控制UART1循环接收串口发送来的数据,反复输出“IamUART!
”信息。
并加一定的延时。
3.使用交叉编译工具编译以上程序,生成可执行程序。
4.将计算机的串口接到目标板的UART1上。
5.运行超级终端,选择正确的串口号,并对串口参数进行设置,波特率(115200)、奇偶校验(None)、数据位数(8)和停止位
(1)、无流控打开Windows下的HyperTerminal,设置为115200bps,8N1,无流控(若使用minicom,发送模式选为ascii,其余设置参照2.2)。
6.将DBMX1ADS设置为Bootstrap模式。
7.打开DBMX1ADS板上的电源。
8.在终端程序中输入‘a’或‘A’,应当从串口程序中看到返回的‘:
。
’
9.在Bootstrap模式下通过超级终端下载初始化内存脚本boot_setup.txt。
10.然后下载hello_b.txt程序并自动运行。
如果程序运行正确,则在超级终端上将回显出“IamUART!
”
11.改变波特率(57600)、奇偶校验
(1)、数据位数(7)和停止位(None)、无流控,通过调整源代码中对寄存器的配置,仍然实现串行通信。
示例程序经编译和下载后,从串口终端中可以看到“IamUART!
进行扩展要求设计的同学的实验结果自行记录。
通过本次实验,主要了解了DBMX1
的脉冲宽度调制器(PWM)的原理及其对蜂鸣器的控制机理,实验操作过程比较顺利。
还进一步熟悉了串口的操作。
面向嵌入式系统程序的交叉编译与移植
该实验开发板处于正常启动模式,使用minicom的zmodem传输文件。
SW1的123456拨码开关设置为ON-OFF-OFF-ON-ON-ON。
SW2的123456拨码开关配置为ON-ON-OFF-ON-ON-ON,即关闭IrDA模块。
(一)C语言编程实验
1.通过实验认识嵌入式系统上C语言编程与普通PC机上C语言编程的不同点
2.掌握使用交叉编译环境编译嵌入式系统程序的方法
1.使用shell脚本语言编写”HelloWorld”程序,实现在BusyBox下输出”HelloWorld”等信息,可根据掌握shell的熟悉程度随意发挥。
2.使用C语言编写”HelloWorld”程序,实现在shell下输出”HelloWorld”等信息,同样可根据C的熟悉程度结合BHUDBMX1ADS的特点发挥。