arm原理与c程序设计-第五章课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《arm原理与c程序设计-第五章课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- arm 原理 程序设计 第五 课件
- 资源描述:
-
1、第五章汇编语言程序设计及系统初始化第五章汇编语言程序设计及 系统初分别化5.1 ARM汇编语言程序框架汇编语言程序框架5.2 浮点数据处理浮点数据处理5.3 系统初始化系统初始化5.4 中断服务程序中断服务程序本章小结本章小结第五章汇编语言程序设计及系统初始化 5.1 ARM汇编语言程序框架汇编语言程序框架 在MDK环境下,新建一个工程ex5_1,拷贝工程ex4_3中的文件S3C2410A.s和initmemcon.s,然后,编写一个新的汇编语言程序ledflash.s,其代码如下:1 AREA LEDLIGHT, CODE, READONLY2 EXPORT _main ; LedFlash
2、3 EXPORT _use_two_region_memory4 GPCDAT_ADDR EQU 0 x560000245 LED_ON EQU 0 x00006 LED_OFF EQU 0 x00E0第五章汇编语言程序设计及系统初始化7 ENTRY8 ; LedFlash9 _main10 LDR R0, =GPCDAT_ADDR11 MOV R1, #LED_ON 12 STR R1, R0 ; LED ON13 14 BL Delay15 16 MOV R1, #LED_OFF 17 STR R1, R0 ; LED OFF第五章汇编语言程序设计及系统初始化18 19 BL Delay2
3、0 21 B _main22 Delay23 MOV R3, #0 x0F000024 MOV R4, #0 x0F000025 subcycle126 SUB R3, R3, #127 subcycle228 SUB R4, R4, #1第五章汇编语言程序设计及系统初始化29 CMP R4, #030 BGE subcycle231 32 CMP R3, #033 BGE subcycle134 BX LR35 36 _use_two_region_memory ; no warning37 END 将ledflash.s添加到工程ex5_1中,当前工作主窗口如图5-1所示。先不要编译连接这
4、个工程文件,在5.1.2小节时才能正确地编译连接并执行该工程。第五章汇编语言程序设计及系统初始化图5-1 工程ex5_1工作界面第五章汇编语言程序设计及系统初始化5.1.1 通用输入输出通用输入输出C口配置口配置在图5-1中,双击S3C2410A.s打开它,保持其他设置不变(相对于工程ex4_3)的情况下,对I/O Configuration进行配置,如图5-2所示。图5-2中将PC5、PC6和PC7配置为输出特性(Output),对应于S3C2410A.s的第06060608行代码如下:PIOC_SETUP EQU 1PCONC_Val EQU 0 xAAAA56AAPUPC_Val EQU
5、 0 x00000000第五章汇编语言程序设计及系统初始化图5-2 通用I/O口配置第五章汇编语言程序设计及系统初始化PIOC_SETUP为1表示图5-2中的Port C被勾选;当设置PC0PC15如图5-2时,端口C的控制寄存器的值为0 xAAAA56AA;端口C所有上拉电阻都是使能的,端口C上拉控制寄存器的值为0 x00000000。图5-2中的I/O Configuration勾选,对应于S3C2410A.s中的第0510行代码如下:PIO_SETUP EQU 1 如图5-2设置好之后,下面罗列出启动代码文件S3C2410A.s中与通用I/O口配置相关的代码,如表5-1所示。第五章汇编语
6、言程序设计及系统初始化表表5-1 S3C2410A.s中与中与I/O口配置相关的代码口配置相关的代码序号行号注 释 或 语 句10488; I/O Ports definitions20489PIO_BASEEQU0 x56000000; PIO Base Address30490PCONA_OFSEQU0 x00; PCONA Offset40491PCONB_OFSEQU0 x10; PCONB Offset50492PCONC_OFSEQU0 x20; PCONC Offset60493PCOND_OFSEQU0 x30; PCOND Offset70494PCONE_OFSEQU0 x
7、40; PCONE Offset80495PCONF_OFSEQU0 x50; PCONF Offset90496PCONG_OFSEQU0 x60; PCONG Offset100497PCONH_OFSEQU0 x70; PCONH Offset110498PCONJ_OFSEQU0 xD0; PCONJ Offset120499PUPB_OFSEQU0 x18; PUPB Offset第五章汇编语言程序设计及系统初始化130500PUPC_OFSEQU0 x28; PUPC Offset140501PUPD_OFSEQU0 x38; PUPD Offset150502PUPE_OFSEQ
8、U0 x48; PUPE Offset160503PUPF_OFSEQU0 x58; PUPF Offset170504PUPG_OFSEQU0 x68; PUPG Offset180505PUPH_OFSEQU0 x78; PUPH Offset190506PUPJ_OFSEQU0 xD8; PUPJ Offset200509;/ I/O Configuration210510PIO_SETUP EQU12205120536A口注释230537PIOA_SETUPEQU0240538PCONA_ValEQU0 x000003FF2505400565B口注释第五章汇编语言程序设计及系统初始化2
9、60566PIOB_SETUPEQU0270567PCONB_ValEQU0 x000007FF280568PUPB_ValEQU0 x000000002905700605C口注释300606PIOC_SETUPEQU1310607PCONC_ValEQU0 xAAAA56AA320608PUPC_ValEQU0 x000000003306100645D口注释340646PIOD_SETUPEQU0350647PCOND_ValEQU0 x00000000360648PUPD_ValEQU0 x000000003706500685E口注释380686PIOE_SETUPEQU0390687PC
10、ONE_ValEQU0 x00000000第五章汇编语言程序设计及系统初始化序号行号注 释 或 语 句400688PUPE_ValEQU0 x000000004106900709F口注释420710PIOF_SETUPEQU0430711PCONF_ValEQU0 x0000511A440712PUPF_ValEQU0 x000000004507140749G口注释460750PIOG_SETUPEQU0470751PCONG_ValEQU0 x00000000480752PUPG_ValEQU0 x000000004907540779H口注释500780PIOH_SETUPEQU051078
11、1PCONH_ValEQU0 x000007FF520782PUPH_ValEQU0 x00000000第五章汇编语言程序设计及系统初始化530922; I/O Configuration540923IFPIO_SETUP 0550924PIOA_CFG560925DCDPCONA_Val570926PIOB_CFGDCDPCONB_Val580927DCDPUPB_Val590928PIOC_CFGDCDPCONC_Val600929DCDPUPC_Val610930PIOD_CFGDCDPCOND_Val620931DCDPUPD_Val630932PIOE_CFGDCDPCONE_Val
12、第五章汇编语言程序设计及系统初始化640933DCDPUPE_Val650934PIOF_CFGDCDPCONF_Val660935DCDPUPF_Val670936PIOG_CFGDCDPCONG_Val680937DCDPUPG_Val690938PIOH_CFGDCDPCONH_Val700939DCDPUPH_Val710940ENDIF7209811038S3C2410A.s有误,将在下面说明。第五章汇编语言程序设计及系统初始化S3C2410A.s中的第09811038行原始代码如下:IF PIO_SETUP 0 LDR R14, =PIO_BASE IF PIOA_SETUP 0
13、ADR R0, PIOA_CFGSTR R0, R14, #PCONA_OFSENDIF IF PIOB_SETUP 0 ADR R0, PIOB_CFG第五章汇编语言程序设计及系统初始化 LDR R1, R0,#4 STR R0, R14, #PCONB_OFS STR R1, R14, #PUPB_OFS ENDIF IF PIOC_SETUP 0 ADR R0, PIOC_CFG LDR R1, R0,#4 STR R0, R14, #PCONC_OFS STR R1, R14, #PUPC_OFS ENDIF第五章汇编语言程序设计及系统初始化 IF PIOD_SETUP 0 ADR R
14、0, PIOD_CFG LDR R1, R0,#4 STR R0, R14, #PCOND_OFS STR R1, R14, #PUPD_OFS ENDIF IF PIOE_SETUP 0 ADR R0, PIOE_CFG LDR R1, R0,#4 STR R0, R14, #PCONE_OFS STR R1, R14, #PUPE_OFS ENDIF第五章汇编语言程序设计及系统初始化 IF PIOF_SETUP 0 ADR R0, PIOF_CFG LDR R1, R0,#4 STR R0, R14, #PCONF_OFS STR R1, R14, #PUPF_OFS ENDIF IF P
15、IOG_SETUP 0 ADR R0, PIOG_CFG LDR R1, R0,#4 STR R0, R14, #PCONG_OFS STR R1, R14, #PUPG_OFS ENDIF第五章汇编语言程序设计及系统初始化 IF PIOH_SETUP 0 ADR R0, PIOH_CFG LDR R1, R0,#4 STR R0, R14, #PCONH_OFS STR R1, R14, #PUPH_OFS ENDIF ENDIF 修正后的代码如下,其中,添加了注释的为补充和修正的代码行: IF PIO_SETUP 0 LDR R14, =PIO_BASE第五章汇编语言程序设计及系统初始化
16、IF PIOA_SETUP 0 ADR R0, PIOA_CFG LDR R2, R0; Added by ZY STR R2, R14, #PCONA_OFS; Changed by ZY ENDIF IF PIOB_SETUP 0 ADR R0, PIOB_CFG LDR R2, R0; Added by ZY LDR R1, R0,#4 STR R2, R14, #PCONB_OFS ; Changed by ZY STR R1, R14, #PUPB_OFS ENDIF第五章汇编语言程序设计及系统初始化 IF PIOC_SETUP 0 ADR R0, PIOC_CFG LDR R2,
17、R0; Added by ZY LDR R1, R0,#4 STR R2, R14, #PCONC_OFS; R0,R14, #PCONC_OFS Changed by ZY STR R1, R14, #PUPC_OFS ENDIF第五章汇编语言程序设计及系统初始化 IF PIOD_SETUP 0 ADR R0, PIOD_CFG LDR R2, R0; Added by ZY LDR R1, R0,#4 STR R2, R14, #PCOND_OFS; Changed by ZY STR R1, R14, #PUPD_OFS ENDIF第五章汇编语言程序设计及系统初始化 IF PIOE_SE
18、TUP 0 ADR R0, PIOE_CFG LDR R2, R0; Added by ZY LDR R1, R0,#4 STR R2, R14, #PCONE_OFS ; Changed by ZY STR R1, R14, #PUPE_OFS ENDIF第五章汇编语言程序设计及系统初始化 IF PIOF_SETUP 0 ADR R0, PIOF_CFG LDR R2, R0 ; Added by ZY LDR R1, R0,#4 STR R2, R14, #PCONF_OFS; Changed by ZY STR R1, R14, #PUPF_OFS ENDIF第五章汇编语言程序设计及系统
19、初始化 IF PIOG_SETUP 0ADR R0, PIOG_CFG LDR R2, R0 ; Added by ZYLDR R1, R0,#4 STR R2, R14, #PCONG_OFS ; Changed by ZY STR R1, R14, #PUPG_OFS ENDIF第五章汇编语言程序设计及系统初始化 IF PIOH_SETUP 0 ADR R0, PIOH_CFG LDR R2, R0 ; Added by ZY LDR R1, R0,#4 STR R2, R14, #PCONH_OFS ; Changed by ZY STR R1, R14, #PUPH_OFS ENDIF
20、 ENDIF第五章汇编语言程序设计及系统初始化MDK软件虽然是个极其优秀的软件包,但是,此处的错误是很明显的,由于具有8个IO口,相同的错误连续出现了8次以上。例如对于C口,代码如下:IF PIOC_SETUP 0 ADR R0, PIOC_CFG LDR R1, R0,#4 STR R0, R14, #PCONC_OFS STR R1, R14, #PUPC_OFSENDIF第五章汇编语言程序设计及系统初始化结合第二章,可知条件满足,执行完ADR指令后,R0装入的是PIOC_CFG的标号,即一个地址,这个地址内的值为配置字,但是这个地址本身不能作为配置字,所以,后面的“STR R0, R14
21、, #PCONC_OFS”语句就是完全错误的了。改正的方法很简单,代码如下:IF PIOC_SETUP 0 ADR R0, PIOC_CFGLDR R2, R0 ; Added by ZY LDR R1, R0,#4 STR R2, R14, #PCONC_OFS; R0,R14, #PCONC_OFS Changed by ZY STR R1, R14, #PUPC_OFSENDIF第五章汇编语言程序设计及系统初始化像上述代码一样,将R0值指向的地址处的值赋给R2,然后,再使用“STR R2, R14, #PCONC_OFS”就可以了。对于一个商业软件,其评估版的S3C2410芯片启动代码出
22、现问题,一方面说明了这部分代码没有经过严格测试,另一方面也警告我们,汇编语言编程相对于C语言来说,确有一些劣势。 下面解释一下表5.1和启动代码中关于IO口配置的方法。序号219:定义了IO口存储器映射寄存器的基地址0 x56000000,然后定义了AH口的偏移地址,这些IO口寄存器的地址可参考附表1-1。例如,C口的控制寄存器地址为0 x56000020,相当于基址0 x56000000 + 偏移地址PCONC_OFS(0 x20)。这里没有J口,可以删除。第五章汇编语言程序设计及系统初始化序号21:当勾选了图5-2中I/O Configuration后,此处,PIO_SETUP为1;否则,
23、不勾选时,PIO_SETUP为0,将不初始化IO口。序号2324:由于图5-2中没有勾选Port A,则PIOA_SETUP为0,A口只有控制寄存器,没有上拉寄存器,这里只有PCONA_Val,当然,这个值由于PIOA_SETUP为0而不会被用到。序号2628:由于图5-2中没有勾选Port B,则PIOB_SETUP为0;符号PCONB_Val和PUPB_Val的值表示B口的控制寄存器和上拉寄存器的配置字,这些值随着图形配置向导而自动变化。第五章汇编语言程序设计及系统初始化序号3032:由于图5-2中勾选了Port C,则PIOC_SETUP为1;同时,根据图形配置向导自动设置了控制寄存器和
24、上拉寄存器的值PCONC_Val和PUPC_Val,这两个值代表的含义请参考图5-2和“S3C2410A Users Manual”第九章第10页,把GPC7:5设为输出口。序号3452:介绍端口DH,与上述含义相近,不再重述。序号5471:如果PIO_SETUP不为0,则开辟存储空间存放端口AH的配置字,其中,A口只有一个配置字,BH口均有两个配置字。第五章汇编语言程序设计及系统初始化5.1.2 工程工程ex5_1的注解及运行情况的注解及运行情况在前面5.1.1小节对S3C2410A.s进行修正之后,可以编译连接并下载这个工程了,在编译时会报告一条警告信息,即“ex5_1.sct(8): w
25、arning: L6314W: No section matches pattern *(InRoot$Sections)”,这里的ex5_1.sct是根据工程选项(像图4-15那样)的设置编译工程时自动产生的存储器配置文件,也称Scatter文件,以.sct结尾;“InRoot$Section”是指为连接库里的段分配的空间,用于C语言程序设计中。双击该警告信息,则弹出ex5_1.sct文件内容,如图5-3所示,在“*(InRoot$Sections)”前面加上“;”号将其注释掉,并保存文件。第五章汇编语言程序设计及系统初始化图5-3 ex5_1.sct文件第五章汇编语言程序设计及系统初始化这
展开阅读全文