1 / 30

嵌入式系统实验

嵌入式系统实验. ● 交叉开发实验. ● 仿真开发实验. 交叉开发环境 是指实现、编译、链接、调试应用程序代码的环境与运行应用程序代码的环境不同,分散在不同设备上。 提供实现、编译、链接、调试应用程序代码的环境的设备称为 宿主机 ; 运行应用程序代码的设备称为 目标机 。. 本实验中宿主机和目标机的硬件连接. 编程语言. 编写程序使用的语言是 SIC33 C 语言和汇编语言。. ● C 语言. 符合标准 C 语言的所有规范,相应的源程序必须按照 ANSI C 编写。. 在 C 源程序中可嵌入汇编语句。. ● 汇编语言.

Download Presentation

嵌入式系统实验

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 嵌入式系统实验 ● 交叉开发实验 ● 仿真开发实验

  2. 交叉开发环境是指实现、编译、链接、调试应用程序代码的环境与运行应用程序代码的环境不同,分散在不同设备上。交叉开发环境是指实现、编译、链接、调试应用程序代码的环境与运行应用程序代码的环境不同,分散在不同设备上。 • 提供实现、编译、链接、调试应用程序代码的环境的设备称为宿主机; • 运行应用程序代码的设备称为目标机。

  3. 本实验中宿主机和目标机的硬件连接

  4. 编程语言 编写程序使用的语言是SIC33 C语言和汇编语言。 ● C语言 符合标准C语言的所有规范,相应的源程序必须按照ANSI C编写。 在C源程序中可嵌入汇编语句。 ● 汇编语言 汇编语言语法见教材

  5. 硬件连接 本实验采用Monitor方式调试,PC机的COM1口连Monitor调试器。

  6. 实验板外形 长度L=18.6cm ,宽度W=16cm

  7. 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复位节电控制 弹上:节电模式;按下:工作模式 实验板的重要部分说明

  8. Monitor接口调试步骤 1.在断电情况下,将微机COM1口与Monitor接口中间件串行接口相连,再将Monitor接口中间件上Monitor接口与实验板Monitor接口(JP1)相连,同时将实验板上BYTE_MODE以及RP_SEL两开关均按下; 2.Monitor 接口中间件上的debug 按扭开关为“ON”; 3.将实验板上S1手拨开关中第7位拨到ON,使CPU工作使能; 4.给实验板供电,打开宿主机上的调试工具wb33就可下载程序,进行调试。

  9. 宿主机配置 宿主机为一台装有windows操作系统和wb33工具包的PC机,内含S1C33 C编译器gc33和调试器db33 。

  10. 调试程序包括以下几步: 1.编辑源程序,可用 wb33提供的编辑工具, 也可用其他的编辑工具; 2.当源程序编写完后,就可对源程序编译、连接等处理,在此过程还要编写相应的make 文件,参数文件等; 3.当编译成功后,将生成后缀名为srf的可调试的程序,此程序就可下载到目标板上进行调试。

  11. 下面通过一个例子来介绍整个程序的调试过程。下面通过一个例子来介绍整个程序的调试过程。 本程序只是一个简单的ram测试程序,它的功能就是循环打亮指示灯。 在实验板上,有4个指示灯,分别对应S2(8路开关)的前4个开关。可以通过提高RXD, TXD 电压来打通三极管的基极,从而使连接在发射极的指示灯点亮。 程序只需要向控制这些信号的端口写为高电平,就可点亮指示灯。 本程序的任务是循环点亮第1、2个指示灯,因此需要保持试验板上的对应两个开关打开。

  12. 源程序有两部分:boot.s, main.c。 boot.s 主要作系统一些初始化,如设置堆栈和全局指针。 main.c主要向端口写高电平。 要点亮指示灯的两个信号:P00 ,P01。 相关的寄存器如下: ● 功能选择寄存器 (0x402d0 内容形式D[0..7]): D[0]=0 选择的是P00 D[1]=0 选择的是P01

  13. ● I/O控制寄存器 (0x402d2 内容形式D[0..7]): D[0]=0 P00为输入 D[0]=1 P00为输出 D[1]=0 P01为输入 D[1]=1 P01为输出 ● I/O数据寄存器 (0x402d1内容形式D[0..7]): D[0]=0 P00为低电平 D[0]=1 P00为高电平 D[1]=0 P01为低电平 D[1]=1 P01为高电平

  14. boot.s 程序如下: #define SP_INI 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 xjp BOOT ; infinity loop

  15. main.c程序如下: main() {int i; *(volatile char *)(0x402D0)=0xf0; *(volatile char *)(0x402D2)=0xFF; *(volatile char *)(0x402D1)=0x00; for(;;) {for (i=0;i<500000;i++) *(volatile char *)(0x402D1)=0x01; for (i=0;i<500000;i++) *(volatile char *)(0x402D1)=0x02; } }

  16. 写好了boot.s和main.c源代码之后,就可以使用wb33工具了:双击wb33图标启动wb33工具,打开work bench,并在左边的目录中找到源代码所在的文件夹,打开它,选中“所有类型文件”的小圆点,就可以看到main.c和boot.s文件。

  17. 点击正下方的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将它们逐一加入右边的内容框中。完成之后就如右图。

  18. 这时可以关闭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 relative data section start address ;-bss 0x0000000 ; set relative bss section start address …… ;Library path -l E:\C33\lib 检查lib路径和执行路径是否正确,如与实际情况不符需要改正。

  19. 在本例中将程序代码绝对定位到芯片的内部ram 里,起始地址为:0x0000000。所以将本文件的第二行改为 -code 0x0000000 在此文件里也可将程序定位在外部的存储器里。比如后面的两个试验任务就需要把程序代码绝对定位到芯片外部的flash里,起始地址为:0x0800000。即将本文件的第二行改为 -code 0x0800000 修改完毕后,保存test.cm文件。

  20. 在左边的文件框中选中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文件中,

  21. 单击右下角的par gen按键,弹出parameter file generater窗口,设置好参数就可以单击上方的creat par file按键生成参数配置文件33104_1.par。 在本例中不需对parameter file generater的默认参数作出改变。但在后面两个实验任务中,需要激活相应存储区,即在地址800000对应的enable选项前打勾 。

  22. 关闭parameter file generater窗口,回到work bench界面。单击上面的open option windowns,弹出gcc-lk options窗口和other options窗口。在other options窗口中选择调试方式为monitor,并保持这两个窗口打开。

  23. 当上面的工作基本作完后,就可以用MON调试了。打开目标板的电源,在wb33 主窗口中选择33104_1.par,然后点击DB33按钮。立即在主机窗口中弹出db33的窗口,在此db33窗口中的命令窗口中显示正常连接的信息。 因为在前面将程序的初始位置定位在0x0000000处,所以要想执行这段程序,还必须将PC指针指向0x00000000。 可以用命令rs来改变PC指针,rs命令是用来修改一些寄存器内容的,也包括PC寄存器。在command框中输入rs命令后回车,就会显示当前pc指针的内容,输入要修改的值,本例是0,回车,再输入q,则可退出rs命令。

  24. 调试过程包括可以单步执行,连续执行,也可设置断点,查看符号变量,查看相应的内存空间等。 如果让程序连续执行,就可以看到目标系统上的两个指示灯交替闪烁。(这里注意实验板上的SW_LED的1,2开关应拨向ON。)

  25. 实验一 向内存区写一个菲波拉系列 实验要求 向内存区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

  26. 实验目的 通过此任务,使实验者达到如下目的: 了解整个小型应用程序的开发过程,熟悉EPSON提供的开发工具WB33, DB33。了解编辑、编译、连接、下载调试的整个过程。 针对此任务,使实验者熟悉DB33中有关对内存操作的命令如:dw,dh,db。

  27. 实验二 编写一个键盘中断应用程序 实验要求 编写一个键盘中断应用程序,当按下某个键时,使一些指示灯循环点亮。此键盘对应的信号是NMI, NMI对应的中断向量号是7;要点亮指示灯的两个信号。 实验目的 通过此实验任务,使实验者达到如下目的: 了解整个中断机制。从中断服务程序的编写,中断服务程序的挂接及如何响应中断深入了解中断思想。 了解如何利用处理器的端口资源,如何对处理器提供的相关端口进行控制达到用户的要求。使实验者对处理器内部结构有一些认识。

  28. 在演示过程中,可把一些db33提供的指令编成后缀为cmd文件,作批处理执行。在下载的过程中可在DB33选项中选中db33*.cmd file.如下页图的选项框中蓝色部分。一旦下载就可一次执行cmd文件中所有的命令。 task2.cmd文件如下: eb 4812d 59 q ew 48134 800000 q lf int_test.srf rsth

  29. 谢谢观赏 2003年12月20日

More Related