嵌入式系统与结构实验指导书Word下载.docx
- 文档编号:20065783
- 上传时间:2023-01-16
- 格式:DOCX
- 页数:27
- 大小:504.91KB
嵌入式系统与结构实验指导书Word下载.docx
《嵌入式系统与结构实验指导书Word下载.docx》由会员分享,可在线阅读,更多相关《嵌入式系统与结构实验指导书Word下载.docx(27页珍藏版)》请在冰豆网上搜索。
二、实验设备
硬件:
PC机一台;
软件:
µ
VisionIDEforARM集成开发环境,Windows98/2000/NT/XP。
三、实验内容
(1)用ARM汇编语言编写S=1+2+3+***+10的程序
(2)用ARM汇编语言编写求最大最小值的程序
四、实验步骤
1.新建工程
首先在相关目录下建立文件夹命名为Asm1_a,运行µ
Vision3IDE集成开发环境,选择菜单项“Project->
New…->
µ
VisionProject”,系统弹出一个对话框,按照图1所示,输入相关内容。
点击“保存”按钮,将创建一个新工程asm_1a.Uv2。
图1新建工程
2.为工程选择CPU
新建工程后,要为工程选择CPU,如图2所示,在此选择SAMSUNG的S3C2410A
图2选择CPU
3.添加启动代码
在图3中点“确定”后,会弹出一个对话框,问是否要添加启动代码。
如图1-5所示。
图3添加启动代码
由于本实验是简单的汇编实验,因此不需要启动代码,选择否。
4.选择开发工具
要为工程选择开发工具,在Project-Manage-Components,EnvironmentandBooks-Folder/Extensions对话框的Folder/Extensions页内选择开发工具,如图4所示。
图4选择开发工具
从图中可以看到,有三个开发工具可选,在此选择RealViewCompiler。
5.建立源文件
点击菜单项File-New,输入源文件代码,保存为asm1_a.s。
6.添加源文件
单击工程管理窗口中的相应右键菜单命令,选择AddFilesto…,会弹出文件选择对话框,在工程目录下选择刚才建立的源文件asm1_a.s。
如图5所示。
图5添加源文件
7.工程配置
建立DebugINRam.ini文件并拷贝到当前目录下。
选择菜单项Project->
OptionforTarget…,将弹出工程设置对话框,如图6所示。
对话框会因所选开发工具的不同而不同,在此仅对Target选项页、Linker选项页及Debug选项页进行配置。
Target选项页的配置如图6;
Linker选项页的配置如图7;
Debug选项页的配置如图8。
需要注意,在Debug选项页内需要一个初始化文件:
DebugINRam.ini。
此.INI文件用于设置生成的.AXF文件下载到目标中的位置,以及调试前的寄存器、内存的初始化等配置操作。
它是由调试函数及调试命令组成调试命令脚本文件。
图6基本配置Target
图7基本配置Linker
图8基本配置Debug
8.生成目标代码
选择菜单项Project-Buildtarget或快捷键F7,生成目标代码。
在此过程中,若有错误,则进行修改,直至无错误。
若无错误,则可进行下一步的调试。
9.调试
选择菜单项Debug-Start/StopDebugSession或快捷键Ctrl+F5,即可进入调试模式。
若没有目标硬件,可以用µ
Vision3IDE中的软件仿真器,做如下调试工作:
●打开memory窗口,单步执行,观察地址memory中内容的变化;
●单步执行,观察寄存器的变化;
●结合实验内容和相关资料,观察程序运行,通过实验加深理解ARM指令的使用;
●理解和掌握实验后,完成实验报告的书写。
五、实验参考程序
请同学们自己完成实验任务程序的编写!
六、实验思考题
(1)如何在MDK软件中查看程序的运行结果?
(2)ARM汇编语言指令和单片机汇编语言指令有何区别?
实验2S3C2410微处理器SDRAM的配置实验
掌握UP-NETARM2410实验箱如何从SDRAM启动MDK中存储器的配置方法。
二、实验预备知识
熟悉UP-NETARM2410实验箱的结构,S3C2410的外设接口电路,存储器的配置;
熟悉MDK编程软件的使用方法,熟悉C语言程序设计的一般方法。
编写C程序编译调试使得UP-NETARM2410实验箱上的数码管能够稳定的显示29两个数字,关闭电源后重起,数码管将没有显示。
(1)在工程文件主界面上,点击菜单“Project|OptionsforTarget'
Target1'
”,选择“Target”页签,设置该页如图1所示
图1
(2)点击图1上的Debug页签,添加SDRAM的配置文件设置如图2所示。
图2
其中配置文件为:
FUNCvoidSetup(void)
{
_WDWORD(0x53000000,0x00000000);
//watch
_WDWORD(0x4A000008,0xFFFFFFFF);
//intmsk1
_WDWORD(0x4A00001C,0x000007FF);
//intsub
_WDWORD(0x4C000014,0x00000003);
//CLKDIVN
_WDWORD(0x4C000004,0x0005C042);
//MPLLCON
_WDWORD(0x56000070,0x00280000);
//GPHCON
_WDWORD(0x56000078,0x00000000);
//GPHUP
_WDWORD(0x48000000,0x22111110);
//BWSCON
_WDWORD(0x48000004,0x00000700);
//BANKCON0
_WDWORD(0x48000008,0x00000700);
//BANKCON1
_WDWORD(0x4800000C,0x00000700);
//BANKCON2
_WDWORD(0x48000010,0x00000700);
//BANKCON3
_WDWORD(0x48000014,0x00000700);
//BANKCON4
_WDWORD(0x48000018,0x00000700);
//BANKCON5
_WDWORD(0x4800001C,0x00018009);
//BANKCON6
_WDWORD(0x48000020,0x00018009);
//BANKCON7
_WDWORD(0x48000024,0x00AC0459);
//REFRESH
_WDWORD(0x48000028,0x000000B1);
//BANKSIZE
_WDWORD(0x4800002C,0x00000020);
//MRSRB6
_WDWORD(0x48000030,0x00000020);
//MRSRB7
_WDWORD(0x56000014,0x00000001);
//GPBDAT
_WDWORD(0x56000020,0xAAAA55AA);
//GPCCON
_WDWORD(0x56000028,0x0000FFFF);
//GPCUP
_WDWORD(0x56000024,0x00000000);
//GPCDAT
}
Setup();
//SetupforInit
LOADex4_1.axfINCREMENTAL//Download
PC=0x30000000;
//<
o>
ProgramEntryPoint
g,main//Runtomainfunction
(3)在线仿真
在主界面下点击菜单“Project|Rebuildalltargetfiles”或点击工具栏上的快捷编译按钮,编译工程,如图3所示。
图3
五、实验结果
调试完成后,UP-NETARM2410实验箱上的两个七段数码管将显示“29”字样。
此时,可以关闭UP-NETARM2410实验箱电源,取下仿真器,然后打开实验箱电源,七段数码管将不会会显示“29”,说明程序是在SDRAM中运行的,掉电后程序丢失。
六、参考程序
1#defineSeg7_1_addr(*(volatileunsignedchar*)
0x08000110)
2#defineSeg7_2_addr(*(volatileunsignedchar*)
0x08000112)
3
4#defineucharunsignedchar
5
6ucharseg7table[16]=
7{
80xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,
0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E
9//0123456789ABCDEF
10};
11
12intmain()
13{
14Seg7_1_addr=seg7table[2];
15Seg7_2_addr=seg7table[9];
16while
(1)
17{
18
19}
20}
七、思考题
(1)程序在SDRAM中硬件调试时ROM1和RAM1为什么要设置为图一的范围,还可以设置为其他的范围吗?
在设置上有没有什么原则?
(2)试分析图一设置S3C2410存储器配置情况。
(3)试解释参考程序每行C语句的含义。
实验3S3C2410NANDFLASH的配置实验
掌握UP-NETARM2410实验箱上电后如何从NandFlash启动以及如何借助JLNK2向NandFlash写入启动程序的方法,以及MDK存储器的配置方法。
熟悉UP-NETARM2410实验箱的结构,S3C2410的外设接口电路,熟悉MDK编程软件的使用方法,熟悉C语言程序设计的一般方法。
编写程序编译并下载到UP-NETARM2410实验箱S3C2410的Nand型Flash芯片K9F1208中,使得实验箱上的数码管能够稳定的显示29两个数字,并且掉电后重起依然可以稳定的显示29两个数字。
图1
(2)点击图1上的Debug页签,去掉配置初始化文件。
然后点击图1上的Utilities页签,设置如图2所示。
图2
(3)点击图2上的“Settings”,弹出如图3所示的“FlashDownloadSetup”对话框,配置内容如图3所示
(4)图3中,点击“Add”按钮,在弹出的对话框中选择K9F1208,如图4所示
图4
在Flash编程完成后,UP-NETARM2410实验箱上的两个七段数码管将显示“29”字样。
此时,可以关闭UP-NETARM2410实验箱电源,取下ULINK2仿真器,然后打开实验箱电源,七段数码管将会显示“29”,说明程序是从K9F1208启动的。
12intmain()
14Seg7_1_addr=seg7table[2];
(1)程序下载到LANDFLASH中ROM1和RAM1为什么要设置为图一的范围,还可以设置为其他的范围吗?
(3)要改变数码管的显示应如何修改程序?
实验4S3C2410微处理器GPIO通用输入输出口实验
掌握S3C2410通用I/O口的特点,用法和C语言编程技巧,以及MDKGPIO的可视化配置方法,理解S3C2410启动代码中和GPIO有关的程序段,掌握添加头文件及其路径的设置方法。
编写程序编译并下载到UP-NETARM2410实验箱S3C2410的Nand型Flash芯片K9F1208中,使得GPC5/GPC6/GPC7上所接的三个LED循环亮灭。
四、参考程序
程序1(教材例ex6_1)
1#defineGPCDAT_ADDR(*(volatileunsignedint*)
0x56000024)
2#defineLED1_MASK0x20
3#defineLED2_MASK0x40
4#defineLED3_MASK0x80
5
6voidDelay(intn)
7{
8inti,j;
9for(i=0;
i<
n;
i++)
10{
11for(j=0;
j<
j++)
12{
13}
14}
15}
16
17intmain()
18{
19intnLED;
20nLED=0;
21while
(1)
22{
23nLED=0;
24nLED^=(LED2_MASK|LED3_MASK);
//LED1light
25 GPCDAT_ADDR=nLED;
26 Delay(0x300);
27
28 nLED=0;
29 nLED^=(LED1_MASK|LED3_MASK);
//LED2light
30GPCDAT_ADDR=nLED;
31Delay(0x300);
32
33nLED=0;
34nLED^=(LED1_MASK|LED2_MASK);
//LED3light
35GPCDAT_ADDR=nLED;
36Delay(0x300);
37
38}
39
40}
建议用程序2(添加了2410.H头文件)
(1)3灯流水灯
#include<
2410.H>
voidDelay(intn)
inti,j;
for(i=0;
{
for(j=0;
{
}
}
}
intmain()
while
(1)
rGPCDAT=0X00000060;
Delay(0x300);
rGPCDAT=0X000000a0;
rGPCDAT=0X000000c0;
}
(2)8灯流水灯
rGPCDAT=0x01;
Delay(0x300);
7;
rGPCDAT=rGPCDAT<
<
1;
在NANDFlash编程完成后,UP-NETARM2410实验箱上的三个发光二级管将循环发光。
改变相关参数可以调节流水灯的闪烁速度。
(1)如果要利用C口做8灯流水灯或16灯流水灯程序应该如何修改?
(提示:
利用左移右移)
(2)如何改变流水灯的流向,应该如何修改程序?
(3)至少说出两种方法改变流水灯的流动速度。
(4)2410.H这个头文件有什么作用?
实验5S3C2410微处理器外部中断实验
掌握S3C2410通用F口配置为外部中断的方法,会在MDK中可视化配置外部中断,理解外部中断的触发过程,熟练掌握和中断相关寄存器的使用以及中断服务函数的编程方法。
熟悉UP-NETARM2410实验箱的结构,S3C2410的外设接口电路,熟悉MDK编程软件的使用方法,熟悉汇编语言程序设计的一般方法。
将I/O口中的PF2配置成外部中断2(EINT2),编写汇编语言程序编译并下载到UP-NETARM2410实验箱,控制GPC5/GPC6/GPC7上所接的三个LED闪烁,主程序中的实验现象是什么?
按下EINT2开关后触发外部中断2实验现象又是什么,请在实验结果中自己作答。
主程序核心代码:
32LDRR0,=SRCPND
33MOVR1,#0x0
34STRR1,[R0,#0x4]
35MVNR1,#0x04
36STRR1,[R0,#0x8]
37MOVR1,#0x7F
38STRR1,[R0,#0xC]
40
41ledflash
42LDRR0,=GPCDAT_ADDR
43MOVR1,#0x0
44EORR1,R1,#LED_MASK
45STRR1,[R0];
LEDOFF
46
47BLDelay
48
49MOVR1,#0x60
50EORR1,R1,#LED_MASK
51STRR1,[R0];
LED ON
52
53BLDelay
54
55Bledflash
56Delay
57MOVR3,#0x0F0000
58MOVR4,#0x0F0000
59subcycle1
60SUBR3,R3,#1
61subcycle2
62 SUBR4,R4,#1
63CMPR4,#0
64BGEsubcycle2
65
66CMPR3,#0
67BGEsubcycle1
68BXLR
中断服务程序核心代码:
136;
int2service
137int2_isr
138;
SUBR14,R14,#4
139;
STMFDSP!
{R0-R8,R14};
saveenv
140STMFDSP!
{R0-R1}
141
142LDRR0,=SRCPND
143MOVR1,#0x40
144STRR1,[R0];
clearSRCPND
145
146LDRR1,[R0,#0x10]
147STRR1,[R0,#0x10];
clearINTPND
148
149;
int2-LED3ONofOFF
150LDRR0,=GPCDAT_ADDR
151MOVR1,#0x0
152EORR1,R1,#LED3_MASK
153STRR1,[R0];
154
155BLDelay
156
157MOVR1,#0x80
158EORR1,R1,#LED3_MASK
159STRR1,[R0];
LEDON
160
1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 系统 结构 实验 指导书