《嵌入式系统试验_交叉开发试验》由会员分享,可在线阅读,更多相关《嵌入式系统试验_交叉开发试验(31页珍藏版)》请在金锄头文库上搜索。
1、嵌入式系统实验, 交叉开发实验, 仿真开发实验,交叉开发环境是指实现、编译、链接、调试应用程序代码的环境与运行应用程序代码的环境不同,分散在不同设备上。 提供实现、编译、链接、调试应用程序代码的环境的设备称为宿主机; 运行应用程序代码的设备称为目标机。,本实验中宿主机和目标机的硬件连接,编写程序使用的语言是SIC33 C语言和汇编语言。,编程语言, C语言, 汇编语言,符合标准C语言的所有规范,相应的源程序必须按照ANSI C编写。,在C源程序中可嵌入汇编语句。,汇编语言语法见教材,本实验采用Monitor方式调试,PC机的COM1口连Monitor调试器。,硬件连接,实验板外形,长度L=18
2、.6cm ,宽度W=16cm,J2 :5V电源接口 POW_PSW :电源开关,控制整个实验板的电源 S1 ,S2:8位双列开关 U1 :CUP芯片(S1C33209) U2 :FLASH芯片(E28F320J3A) U4,U5 :SRAM芯片W24L011AJ JP1 :MON 接口 BYTE_MODE :FLASH的模式设置 弹上:x8模式;按下:x16模式 RP_SEL :FLASH复位节电控制 弹上:节电模式;按下:工作模式,实验板的重要部分说明,Monitor接口调试步骤 1在断电情况下,将微机COM1口与Monitor接口中间件串行接口相连,再将Monitor接口中间件上Monit
3、or接口与实验板Monitor接口(JP1)相连,同时将实验板上BYTEMODE以及RPSEL两开关均按下; 2Monitor 接口中间件上的debug 按扭开关为“ON”; 3将实验板上S1手拨开关中第7位拨到ON,使CPU工作使能; 4给实验板供电,打开宿主机上的调试工具wb33就可下载程序,进行调试。,宿主机配置 宿主机为一台装有windows操作系统和wb33工具包的PC机,内含S1C33 C编译器gc33和调试器db33 。,调试程序包括以下几步: 1编辑源程序,可用 wb33提供的编辑工具, 也可用其他的编辑工具; 2当源程序编写完后,就可对源程序编译、连接等处理,在此过程还要编写
4、相应的make 文件,参数文件等; 3当编译成功后,将生成后缀名为srf的可调试的程序,此程序就可下载到目标板上进行调试。,下面通过一个例子来介绍整个程序的调试过程。 本程序只是一个简单的ram测试程序,它的功能就是循环打亮指示灯。,在实验板上,有4个指示灯,分别对应S2(8路开关)的前4个开关。可以通过提高RXD, TXD 电压来打通三极管的基极,从而使连接在发射极的指示灯点亮。 程序只需要向控制这些信号的端口写为高电平,就可点亮指示灯。 本程序的任务是循环点亮第1、2个指示灯,因此需要保持试验板上的对应两个开关打开。,源程序有两部分:boot.s, main.c。 boot.s 主要作系统
5、一些初始化,如设置堆栈和全局指针。 main.c主要向端口写高电平。,要点亮指示灯的两个信号:P00 ,P01。 相关的寄存器如下: 功能选择寄存器 (0x402d0 内容形式D07): D0=0 选择的是P00 D10 选择的是P01, I/O控制寄存器 (0x402d2 内容形式D07): D0=0 P00为输入 D0=1 P00为输出 D1=0 P01为输入 D1=1 P01为输出 I/O数据寄存器 (0x402d1内容形式D07): D0=0 P00为低电平 D0=1 P00为高电平 D1=0 P01为低电平 D1=1 P01为高电平,boot.s 程序如下: #define SP_I
6、NI 0x0800 ; sp is in end of 2KB internal RAM #define GP_INI 0x0000 ; global pointer %r8 is 0x0 .code .global BOOT ; BOOT VECTOR BOOT: xld.w %r8,SP_INI ld.w %sp,%r8 ; set SP ld.w %r8,GP_INI ; set global pointer xcall main ; goto main BOOT ; infinity loop,main() int i; *(volatile char *)(0x402D0)=0xf0
7、; *(volatile char *)(0x402D2)=0xFF; *(volatile char *)(0x402D1)=0x00; for(;) for (i=0;i500000;i+) *(volatile char *)(0x402D1)=0x01; for (i=0;i500000;i+) *(volatile char *)(0x402D1)=0x02; ,main.c程序如下:,写好了boot.s和main.c源代码之后,就可以使用wb33工具了:双击wb33图标启动wb33工具,打开work bench,并在左边的目录中找到源代码所在的文件夹,打开它,选中“所有类型文件”的
8、小圆点,就可以看到main.c和boot.s文件。,点击正下方的make edit按键,出现如左图的界面,通过它来产生make文件。Make文件的后缀名为mak,文件名可以用户自己设置,系统的默认文件名是test,若要改变,可在左上方的Make file name的输入框中,将test改为别的名字。在这个例子中,我们保留了系统默认的test文件名。单击左上方的New Make file按键就可以生成test.mak。生成test.mak的同时,还会生成test.cm和test.cmx文件。分别选中左下方Add files框中的文件,通过点击下面的Add to Make file将它们逐一加入右
9、边的内容框中。完成之后就如右图。,这时可以关闭make file edit界面,回到刚才的work bench。可以看到work bench左下的框中多出了三个文件:test.mak、test.cm和test.cmx文件。其中的test.cm很重要,并且在本试验中需要修改。通过选中左下框中的test.cm文件,并单击下面的edit按键,可以打开test.cm文件进行查看和编辑。系统生成的test.cm文件如下:,;Map set ;-code 0x0080000 ; set relative code section start address ;-data 0x0081000 ; set r
10、elative data section start address ;-bss 0x0000000 ; set relative bss section start address ;Library path -l E:C33lib,检查lib路径和执行路径是否正确,如与实际情况不符需要改正。,在本例中将程序代码绝对定位到芯片的内部ram 里,起始地址为:0x0000000。所以将本文件的第二行改为 -code 0x0000000 在此文件里也可将程序定位在外部的存储器里。比如后面的两个试验任务就需要把程序代码绝对定位到芯片外部的flash里,起始地址为:0x0800000。即将本文件的第二
11、行改为 -code 0x0800000 修改完毕后,保存test.cm文件。,在左边的文件框中选中test.mak文件,单击右边的make按键,就可以产生目标文件test.srf,并产生一系列的相关文件:boot.ms, main.ms, boot.o,main.o, test.map,boot.ms。 main.ms 是boot.s和 main.c 的汇编语言,boot.o 和main.o 是可重定位程序, test.srf 是绝对定位程序,test.map 表示程序的内存映射情况。错误信息保存在wb33.err文件中,,单击右下角的par gen按键,弹出parameter file ge
12、nerater窗口,设置好参数就可以单击上方的creat par file按键生成参数配置文件33104_1.par。,在本例中不需对parameter file generater的默认参数作出改变。但在后面两个实验任务中,需要激活相应存储区,即在地址800000对应的enable选项前打勾 。,关闭parameter file generater窗口,回到work bench界面。单击上面的open option windowns,弹出gcclk options窗口和other options窗口。在other options窗口中选择调试方式为monitor,并保持这两个窗口打开。,当上
13、面的工作基本作完后,就可以用MON调试了。打开目标板的电源,在wb33 主窗口中选择33104_1.par,然后点击DB33按钮。立即在主机窗口中弹出db33的窗口,在此db33窗口中的命令窗口中显示正常连接的信息。,因为在前面将程序的初始位置定位在0x0000000处,所以要想执行这段程序,还必须将PC指针指向0x00000000。 可以用命令rs来改变PC指针,rs命令是用来修改一些寄存器内容的,也包括PC寄存器。在command框中输入rs命令后回车,就会显示当前pc指针的内容,输入要修改的值,本例是0,回车,再输入q,则可退出rs命令。,调试过程包括可以单步执行,连续执行,也可设置断点
14、,查看符号变量,查看相应的内存空间等。,如果让程序连续执行,就可以看到目标系统上的两个指示灯交替闪烁。(这里注意实验板上的SW_LED的1,2开关应拨向ON。),实验一 向内存区写一个菲波拉系列,实验要求 向内存区0x800100位置开始,写一个菲波拉系列。此系列的关系式如下: A0=1; A1=1 AN=A(N-1)+A(N-2) (N=2,3, ) 在内存区存储的形式为: 0x800100 0001 0x800102 0001 0x800104 0002 0x800106 0003 任务中N=16,实验目的 通过此任务,使实验者达到如下目的: 了解整个小型应用程序的开发过程,熟悉EPSON
15、提供的开发工具WB33, DB33。了解编辑、编译、连接、下载调试的整个过程。 针对此任务,使实验者熟悉DB33中有关对内存操作的命令如:dw,dh,db。,实验二 编写一个键盘中断应用程序,实验要求 编写一个键盘中断应用程序,当按下某个键时,使一些指示灯循环点亮。此键盘对应的信号是NMI, NMI对应的中断向量号是7;要点亮指示灯的两个信号。 实验目的 通过此实验任务,使实验者达到如下目的: 了解整个中断机制。从中断服务程序的编写,中断服务程序的挂接及如何响应中断深入了解中断思想。 了解如何利用处理器的端口资源,如何对处理器提供的相关端口进行控制达到用户的要求。使实验者对处理器内部结构有一些认识。,task2.cmd文件如下: eb 4812d 59 q ew 48134 800000 q lf int_test.srf rsth,在演示过程中,可把一些db33提供的指令编成后缀为cmd文件,作批处理执行。在下载的过程中可在DB33选项中选中db33*.cmd file.如下页图的选项框中蓝色部分。一旦下载就可一次执行cmd文件中所有的命令。,谢谢观赏,2003年12月20日,知识回顾Knowledge Review,