嵌入式方面论文范文检索,与嵌入式C程序设计的优化与应用相关论文查重软件
本论文是一篇嵌入式方面论文查重软件,关于嵌入式C程序设计的优化与应用相关学士学位论文范文。免费优秀的关于嵌入式及寄存器及参数方面论文范文资料,适合嵌入式论文写作的大学硕士及本科毕业论文开题报告范文和学术职称论文参考文献下载。
【摘 要】用C来编程不是任何问题都能较方便地妥善处理.如处理BCD码、循环移位控制位信息连续变化、对时间要求很严格等问题的处理上,用汇编语言编程,就比用C语言编程更直接有效,但是又不愿意仅仅因为这么一小部分,就把整个程序都改用汇编来做,这时就必须学会把汇编语言编写的源程序与C语言编写的源程序结合起来.本文将主要探讨嵌入式C程序设计的优化与应用.
本文网址:http://www.sxsky.net/zhengzhi/050209970.html
【关 键 词】嵌入式C程序设计优化
由于C语言是一种简单的语言.它的功能大多来自于一些标准函数和宏,这些函数和宏在任何编译器所附带的库中都是可用的.C库中包含有一系列预先编译好的函数,以目标文件的形式存在,可以连接到具体应用中.在ANSI标准中对标准库(StandardLibrary)的内容进行了定义[1].其中包括用于输入/输出的函数、大量数学运算函数(如所有三角函数)以及其他数据处理函数.
一、编译C程序
在完成C源代码之后,将对其进行编译.最终产生的文件中包含有与源码等价的机器码,可以由目标机直接执行.它们已经得到了广泛的应用,几乎每个C源文件都不是孤立的.一旦有“额外”的文件加入,最终的可执行程序将由多个相关文件来构建,方式通常非常复杂.同样地,编译C程序的过程将产生多个输出文件.源程序编写完成之后,使用C编译器进行编译生成目标文件.这种文件由可重定位代码构成,并不完全映射到处理器存储器映射中.其他文件也得到进一步处理(包括汇编语言源文件),以类似方式进行编译或汇编,最终生成以可重定位代码为主要内容的目标文件.
在这个阶段,除最简单的程序之外,多数情况下需要与其他文件进行组合,这些文件都已成为目标文件.这些目标文件可能来自于编译器相关库,或者由程序员或公司事先生成.连接器负责将不同的文件组合在一起并构建一个单独的可执行文件.这个过程由连接器脚本(LinkerScript)指导完成,连接器脚本用于定义处理器存储器映射并提供其他信息,并有可能生成预编译文件
二、在C程序中直接嵌入汇编语句
在C程序中嵌入汇编语句是一种直接的C模块和汇编模块接口方法.采用这种方法一方面可以在C程序中实现用C语言难以实现的一些硬件控制功能,如修改中断控制寄存器、中断使能、读取状态寄存器和中断标志寄存器等.另一方面,也可以用这种方法在C程序中的关键部分用汇编语句代替C语句以优化程序.
采用这种方法的一个缺点是它比较容易破坏C环境,因为C编译器在编译嵌入了汇编语句的C程序时并不检查或分析所嵌入的汇编语句.嵌入汇编语句的方法比较简单,只需在汇编语句的左、右加上双引号,用小括弧将汇编语句括住,在括弧前加上asm标识符即可,如下所示:
asm(“汇编语句”)
在C程序中直接嵌入汇编语句的一种典型应用是控制DSP芯片的一些硬件资源.
三、嵌入式C程序设计的优化及应用
为了使单独编译的C语言程序和汇编程序之间能够互相调用,必须让子程序间的调用遵遁一定的规则.A丁PCS即ARM,Thumb过程调用标准(ARM/Thumbprocedurecallstandard),是ARM程序和Thumb程序小子程序调用的基本规则,它规定了一些子程序间调用的基本规则,如子程序调用过程中寄存器的使用规则、堆栈的使用规则、参数的传递规则等.
(一)基本ATPCS
基本ATPCS规定了在子程序调用寸的一些基本规则,包括下面3方面的内容:
1.各寄存器的使用规则及其相应的名称.
2.数据栈的使用规则.
3.参数传递的规则.
相对于其他类型的ATPCS,满足基本ATPCS的程序的执行速度更快,所占用的内存更少,但是它不能提供以下的支持:ARM程序和Thumb程序互相调用、数据以及代码的位置无关的支持、子程序的可重入性和数据栈检查的支持.
而派生的其他几种特定的ATPCS就是在基本ATPCS的基础上再添加其他的规则而形成的,其目的就是提供上述的功能.
(二)寄存器的使用规则
寄存器的使用必须满足下面的规则.
1.子程序间通过寄存器R0-R3宋传递参数.这时,寄存器R0-R3可以记作A0-A3,被调用的子程序在返回前无需恢复寄存器R0-R3的内容.
2.在子程序中,使用寄存器R4-R11来保存局部变量.这时,寄存器R4-R11可以记作V1-V8.如果在子程序中使用到了寄存器V1-V8中的某些寄存器,子程序进入时必须保存这些寄存器的值,在返回前必须恢复这些寄存器的值,对于子程序中没有用到的寄存器则不必进行这些操作.在Thumb程序中,通常只能使用寄存器R4-R7来保存局部变量.
3.寄存器R12用于子程序间scratch寄存器,记作IP.在子程序间的连接代码段中常有这种使用规则.
4.寄存器R13用于数据栈指针,记作SP.在子程序中寄存器R13不能做其他用途.寄存器SP在进入子程序时的值和退出子程序时的值必༿
嵌入式方面论文范文检索
5.寄存器R14称为连接寄存器,记作LR.它用于保存子程序的返回地址.如果在子程序中保存了返回地址,寄存器R14则可以做其他用途.
6.寄存器R15是程序计数器,记作PC,它不能做其他用途.
(三)参数传递规则
根据参数个数是否固定可以将子程序分为参数个数固定的(nonvariadic)子程序和参数个数可变的(variadic)子程序,这两种子程序的参数传递规则是不同的.
1.参数个数可变的子程序参数传递规则
对于参数个数可变的子程序,当参数不超过4个时,可以使用寄存器R0-R3来传递参数,当参数超过4个时,还可以使用数据栈来传递参数.
在参数传递时,将所有参数看作是存放在连续的内存字单元中的字数据.然后,依次将各字数据传送到寄存器R0、R1、R2、R3中,如果参数多于4个,将剩余的字数据传送到数据栈中,入栈的顺序与参数顺序相反,即最后一个字数据先入栈.按照上面的规则,一个浮点数参数可以通过寄存器传递,也可以通过数据栈传递,也可能一半通过寄存器传递,另一半通过数据栈传递.
2.参数个数固定的子程序参数传递规则
对于参数个数固定的子程序,参数传递与参数个数可变的子程序参数传递规则不同.对有调用关系的所有子程序必须遵守同一种ATPCS.编译器或者汇编器在ELF格式的目标文件中设置相应的属性,标识用户选定的ATPCS类型.对应于不同类型的ATPCS规则,有相应的C语言库,连接器根据用户指定的ATPCS类型连接相应的C语言库.使用ADS的C语言编译器编译的C语言子程序满足用户指定的ATPCS类型,而对于汇编语言程序来说,完全要依赖用户来保证各子程序满足选定的ATPCS类型.
四、结论
尽管C语言是一种比较强大的开发工具,必须对C语言编程有较透彻的掌握,其次,还应该对实际电子硬件系统有深入的理解,当然在学习嵌入之前,较为熟练地掌握用汇编语言编程是十分必要的.
参考文献:
[1]李文光.基于MPC8548E的通用嵌入式计算机平台系统软件研究和实现[J].电子测试,2014,02:3-4+46.
[2]王艳芳.单片机嵌入式程序的开发原理及应用探讨[J].电子技术与软件工程,2013,23:271.
[3]陈侃松,刘洪波,熊攀.基于ARM9的嵌入式Web服务器数据动态显示的实现[J].物联网技术,2014,03:18-19+23.
[4]张锋辉,王祥青,苏守宝.嵌入式C/S架构服务器在电加热炉远程温度监控中的应用[J].井冈山大学学报(自然科学版),2013,02:56-59.
有关论文范文主题研究: | 关于嵌入式的论文范文素材 | 大学生适用: | 学士学位论文、大学毕业论文 |
---|---|---|---|
相关参考文献下载数量: | 34 | 写作解决问题: | 写作资料 |
毕业论文开题报告: | 标准论文格式、论文目录 | 职称论文适用: | 杂志投稿、职称评初级 |
所属大学生专业类别: | 写作资料 | 论文题目推荐度: | 经典题目 |
&
嵌入式方面论文范文检索,与嵌入式C程序设计的优化与应用相关论文查重软件参考文献资料: