- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
嵌入式技术应用教程基于S3C2410第三章
第三章 汇编语言与C语言
3.1 C语言与汇编语言的比较
本课程全程使用C语言来开发S3C2410A。目前很少有用汇编语言来开发ARM系统了。相比较而言汇编语言的优势是执行效率高,但其劣势是代码效率较低,而C语言正好相反,其代码效率较高,执行效率较低。
什么是执行效率?什么是代码效率?在嵌入式设计领域,一般执行效率就是程序的执行时间可以精确控制,从而可以使程序高效率的运行。采用汇编语言编写ARM程序,每一条指令的执行时间都是固定不变的(外部时钟确定),所以写出的程序每一步的执行时间都是可以精确控制的。这是采用汇编语言的优势所在。但是,相信有过用汇编语言进行程序设计经验的读者在读别人用汇编语言写的程序时都会觉得十分吃力,尤其在碰到一些编程习惯不好的coding,整个程序注释寥寥或者干脆没有,那么对于一般的设计人员来讲,这样的程序就是天书一卷了。这也就是所谓的程序可读性不高,不便于维护和移植重用。这也可以说是代码效率底下。C语言编写的程序相对来说可读性高,便于移植重用,结构灵活。一个注释完全,结构完整的C程序很容易就读懂了,而且我们还可以把一些常用的代码封装成函数,这样就可以根据需要来直接调用这些函数。C语言有了这些性质,相对于汇编语言其代码效率就较高了。
C语言有其优点,必然在嵌入式领域内还有其不足的地方。采用C语言编写的ARM驱动代码需要经过编译器编译而生成相对应的汇编代码,最后生成可下载执行的二进制文件。在这个过程中,所生成的汇编代码完全由编译器所决定,这样一来对于一条C语句来讲预先不知道所生成的汇编代码有几多,所以也就无从精确判断程序执行的时间,这种特质也就是所谓的执行效率相对较低。
在嵌入式控制领域,有一些设计对于程序的执行时间需要精确的把握,大多数设计对于程序的时间要求没有那么精确。故此,一般情况下C语言完全能够胜任开发任务。如果在设计中碰到了需要严格把握程序执行时间的地方,可以根据需要采取C语言和汇编语言混合编程的方法来处理。
3.2 应用C语言开发ARM入门
学过51单片机开发的读者都知道,控制单片机其实就是对其内部的一些寄存器进行配置和操作。ARM开发与单片机开发十分相似,只不过ARM的结构相对于单片机更为复杂,内部寄存器更多而已。
访问S3C2410A的功能寄存器
采用汇编程序可以对ARM的寄存器进行操作,而采用C语言开发驱动则需要定义寄存器的头文件。对于达盛的试验系统来讲,S3C2410A的寄存器定义头文件为2410ADDR.H。在这个文件中,所有的2410芯片开发所用到的寄存器全部都进行了定义。在用C语言开发程序时,必须先包含这个头文件,然后在主程序中可以直接对定义好的寄存器进行操作。
// I/O PORT
#define rGPACON (*(volatile unsigned *)0 //Port A control
#define rGPADAT (*(volatile unsigned *)0 //Port A data
#define rGPBCON (*(volatile unsigned *)0 //Port B control
#define rGPBDAT (*(volatile unsigned *)0 //Port B data
#define rGPBUP (*(volatile unsigned *)0 //Pull-up control B
上面几行程序就是从2410ADDR.H摘录出来的I/O口寄存器的部分定义。比如第一行定义意思是说端口A的控制寄存器命名为rGPACON,其在S3C2410A芯片中的访问地址是0在编写程序时,可以直接给rGPACON赋值,实际上也就是给地址0值。例如:
rGPGCON = rGPGCON 0xfff0ffff | 0
上面这个操作其实是对寄存器rGPGCON进行了相应的配置。再比如第二行程序定义了端口A的数据寄存器并且命名为rGPADAT,其在S3C2410A芯片中的访问地址是0我们也可以在程序中对rGPADAT进行赋值,例如:
rGPGDAT = rGPGDAT 0xeff | 0x300;
跳转操作
在ARM汇编指令中有相应的跳转指令可以使用,那么对应于C语言,跳转语句可以翻译成if else模式或者switch case模式。
循环操作
在C语言中循环操作最为简单,可以采用for语句或者while语句都可以实现循环操作。
C语言变量的位数
ARM为32位CPU,在ARM开发中有时会需要定义8位、16位或者32位变量,
您可能关注的文档
- 安全员考试试题B卷.doc
- 尔雅通识课学习系统学生使用手册.doc
- 就业简历和合同鉴定的注意事项.doc
- 安全培训合格证试卷煤矿.doc
- 尺寸链计算工具用户操作手册(V20).doc
- 03新型保温材料的应用(局).ppt
- 尼康D700的使用及摄影技巧.doc
- 尺寸链计算工具用户操作手册(V300).doc
- 尼康D70_D80_D200测曝光技巧的初步探讨.doc
- 尼桑-帕拉丁策划案.doc
- 2025山东济南市章丘区教育和体育局所属学校招聘16人笔试备考题库附答案详解(培优b卷).docx
- 2025江苏连云港市金融控股集团有限公司招聘19人笔试参考题库及完整答案详解一套.docx
- 2025四川九洲投资控股集团有限公司招聘纪检监察岗2人笔试备考题库附答案详解(实用).docx
- 2025山东威海市文登区人民法院招考书记员5人笔试备考题库精选答案详解.docx
- 2025四川九洲投资控股集团有限公司招聘纪检监察岗2人笔试备考题库含答案详解(巩固).docx
- 2025山东威海市文登区人民法院招考书记员5人笔试备考题库精编答案详解.docx
- 2025山东德州市中医院招聘备案制工作人员20人笔试备考题库附答案详解(实用).docx
- 2025安徽龙亢控股集团有限公司招聘招聘21人笔试备考题库含答案详解(达标题).docx
- 2025山东威海市文登区人民法院招考书记员5人笔试备考题库含答案详解.docx
- 2025山西朔州职业技术学院招聘工作人员20人笔试备考题库附答案详解(达标题).docx
最近下载
- 护理病人签署知情同意规范.pptx VIP
- 2025年福建省中考英语真题试卷完全解读.docx VIP
- 联想笔记本电脑环境标志产品认证证书2022年版.docx VIP
- 标准化变电站建设实施规范(二次设备名称及标识).pdf VIP
- Unit1 Happy Holiday Section A(1a-1d)课件人教版英语八年级上册.pptx VIP
- 监理工作报告制度.doc VIP
- 2020新上外版高中英语选择性必修一Unit1 Reading A Learning is Everywhere 课件.pptx VIP
- 部编高教版2023·职业模块 中职语文 语文职业模块 1.1《七律二首·送瘟神》课件.pptx VIP
- 0-3岁婴幼儿行为观察与分析第四章 0~3岁婴幼儿动作发展观察.pptx VIP
- 肺动脉高压的介入治疗技术.pptx VIP
文档评论(0)