嵌入式技术及应用 教学课件 ppt 作者 曹金玲 第三章

上传人:E**** 文档编号:89495207 上传时间:2019-05-25 格式:PPTX 页数:10 大小:61.67KB
返回 下载 相关 举报
嵌入式技术及应用 教学课件 ppt 作者 曹金玲 第三章_第1页
第1页 / 共10页
嵌入式技术及应用 教学课件 ppt 作者 曹金玲 第三章_第2页
第2页 / 共10页
嵌入式技术及应用 教学课件 ppt 作者 曹金玲 第三章_第3页
第3页 / 共10页
嵌入式技术及应用 教学课件 ppt 作者 曹金玲 第三章_第4页
第4页 / 共10页
嵌入式技术及应用 教学课件 ppt 作者 曹金玲 第三章_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《嵌入式技术及应用 教学课件 ppt 作者 曹金玲 第三章》由会员分享,可在线阅读,更多相关《嵌入式技术及应用 教学课件 ppt 作者 曹金玲 第三章(10页珍藏版)》请在金锄头文库上搜索。

1、第3章 利用C语言开发嵌入式系统,本章主要内容,3.1 C语言与汇编语言的比较 3.2应用C语言开发ARM入门,3.1 C语言与汇编语言的比较,ARM处理器支持两种语言进行设计,一种是汇编语言(ARM/Thumb),另一种是高级语言(如C/C+语言)。汇编语言的机器代码生成效率很高,但可读性却不强,复杂的程序很难读懂;而高级语言在大多数情况下其机器代码生成效率较差,但可读性和可移植性却比汇编语言强很多,而且还可以嵌入汇编来解决高效性的代码编写问题。由于本章的重点是C语言开发嵌入式系统,所以本节只就ARM的汇编指令集做一个概括性介绍。,3.1 C语言与汇编语言的比较,利用汇编语言开发ARM系统底

2、层驱动 ARM的汇编指令包括32位的ARM指令集和16位的Thumb指令集。ARM指令集效率高,代码密度低,而Thumb指令集具有更好的代码密度,却保持ARM的大多数性能上的优势,它是ARM指令集的子集(注:代码密度是单位存储空间中包含的指令的个数。举例说明,ARM指令是32位的,而Thumb指令是16位的,如果在1K的存储空间中,可以放32条ARM指令,但是可以放64条Thumb指令,因此存放Thumb指令时,代码密度高)。ARM程序和Thumb程序可相互调用,它们之间的状态切换开销几乎为零。,3.1 C语言与汇编语言的比较,利用C语言开发ARM底层驱动 C语言是目前常用编程语言中结合底层硬

3、件最好的高级语言。C语言应用在嵌入式开发中的特点是代码效率较高而执行效率较低。之所以C语言的执行效率较低时因为用C语言编写的ARM底层驱动在通过软件编译时会生成相应的汇编代码,汇编代码再被编译为机器码由ARM处理器执行。C程序转换为汇编程序这个过程是由编译软件自动完成的,用户无法对其进行干涉,所以一条C程序究竟转换为多少汇编代码在一般情况下是不知道的,所以用户无法根据指令周期对程序运行的精确时间进行估计,分析由汇编语言编写的简单延迟代码和用C语言中for循环编写的简单延迟代码就是很好的例证。 虽然相对于汇编语言,C语言的执行效率较低,但是ARM9处理器的速度非常快(百兆级),S3C2410A的

4、最高速度就可达266MHz。一般非高速应用,这个级别的速度都能满足需要,所以C语言所带来的代码上的开销基本可以忽略不计。如果一定要求对程序的关键地方做时间上的严格控制,可以采取C语言和汇编语言混合编程的模式处理。关键程序段用汇编语言编写,其他部分还是采用C语言编写,这样一来就可以两全其美了。 采用C语言编写ARM9底层驱动,只需要对ARM9处理器的外设控制器的寄存器进行全面了解就能写出功能完整的驱动程序。有关ARM9处理器的启动程序和操作系统在ARM9处理器上的关于CPU的移植,这两部分代码都用汇编语言编写。一般开发系统出厂时,这两部分代码全部由厂家提供,用户可以直接使用,无需自行编写。,3.

5、1 C语言与汇编语言的比较,C语言与汇编语言比较 1汇编语言的特点 汇编语言直接同底层软件甚至硬件进行交互,其优点是: (1)能够直接访问与硬件相关的存储器或I/O端口; (2)能够不受编译器的限制,对生成的二进制代码进行完全的控制; (3)方便对位的操作; (4)能够对关键代码进行更准确的控制; (5)能够根据特定的应用对代码做最佳的优化,提高运行速度; (6)能够最大限度地发挥硬件的功能。 汇编语言是一种层次非常低的语言,它仅仅高于直接手工编写二进制的机器指令码,所以汇编语言有如下缺点: (1)编写的代码晦涩难懂,不易维护; (2)因为汇编你语言与硬件联系紧密,所以只能针对特定的体系结构和

6、处理器进行优化; (3)由于其代码效率低,所以开发效率很低。,3.1 C语言与汇编语言的比较,2C语言的特点 C语言的优点是: (1)简洁紧凑、灵活方便。C语言一共只有32个关键字,9种控制语句,程序书写形式自由,区分大小写。把高级语言的基本结构和语句与低级语言的实用性结合起来。 (2)运算符丰富。C语言的运算符包含的范围很广泛,共有34种运算符。C语言把括号、赋值、强制类型转换等都作为运算符处理。从而使C语言的运算类型极其丰富,表达式类型多样化。 (3)数据类型丰富。C语言的数据类型有:整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等。能用来实现各种复杂的数据结构的运算。并引

7、入了指针概念,使程序效率更高。 (4)C是结构式语言。C语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。 (5)适用范围大,可移植性好。C语言有一个突出的优点就是适合于多种操作系统,如Linux、UNIX和windows等;也适用于多种机型。 C语言与汇编程序相比,其缺点是语法要求不是很严格,程序设计自由度很大,这样写出的程序容易出现Bug;另外由于C语言是高级语言,对于硬件程序设计所生成目标代码的效率相对较低,一般比汇编程序生成的目标代码效率低10%20%。C语言和汇编语言混合编程基本上可以解决C语言代码效率较低的问题。,3.2

8、应用C语言开发ARM入门,1 宏定义 对ARM器件的操作实质上就是对其各个功能寄存器的操作。达盛公司的实验平台中对S3C2410A的所有功能寄存器都做了宏定义,这样做是为了简化寄存器的访问操作。文件2410ADDR.H中包含了S3C2410A的所有寄存器定义。 / I/O PORT #define rGPACON (*(volatile unsigned *)0x56000000) /Port A control #define rGPADAT (*(volatile unsigned *)0x56000004) /Port A data #define rGPBCON (*(volatile

9、 unsigned *)0x56000010) /Port B control #define rGPBDAT (*(volatile unsigned *)0x56000014) /Port B data #define rGPBUP (*(volatile unsigned *)0x56000018) /Pull-up control B,3.2应用C语言开发ARM入门,2 程序架构 相关头文件包含 定义全局变量 主函数体 相关变量的定义 功能函数调用/注释 ,3.2应用C语言开发ARM入门,3 程序的注释及说明 在开发ARM程序的过程中需要注意一下几点: (1)变量及常量的定义名称要有具体的意义。也就是说变量或常量的定义不要用简单的a、b、c等字母,多用num、count等有实际意义的单词定义变量或常量。 (2)关键的程序行要有注释。注释一方面是给该程序的开发者维护程序使用,另一方面是给其他开发人员使用。 (3)在每个功能函数的开头都要有相关的信息注释。例如: 建议读者采用上述函数注释信息形式,给自己开发的功能函数编写注释。 (4)建议在主函数的开头部分根据程序功能多定义全局变量,这样程序处理数据比较方便。 (5)子函数的名称也必须是有实际意义的单词或拼音,这样便于程序维护和移植。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号