关于为何在嵌入式开发中选择C语言,我将从嵌入式开发的定义,C语言的特点,及嵌入式系统与C语言的联系几方面来作解释。



什么是嵌入式开发


       嵌入式开发就是指在嵌入式操作系统下进行开发,一般常用的系统有WinCE,linux,android等。另外,用c,c++或汇编开发;用高级处理器,arm7,arm9,arm11,powerpc,mips,mipsel等,或加上操作系统也属于嵌入式的开发。

嵌入式系统和C语言的联系:

       操作系统(包括内核、驱动等)是使用C语言和汇编编写的,Windows,UNIX,Linux都是这样的。绝大部分是C语言,极少情况使用汇编写的。

       嵌入式系统的编写语言主要是C语言,部分底层代码会用到汇编语言。

http://baike.baidu.com/link?url=0loZ16k4Kx41btaPkbTtm-Kv_bz09a3cFfCc54TQctZ6v-g7ktduQ6kuLLeR9wehs8wX56yOWIGAJ7NEgi9r8_点击进入关于嵌入式系统的百度文库。其中学习方法部分也提到C语言为学习嵌入式系统的必备知识。


C语言的特点:C语言具有出色的移植性,能够在多种不同体系结构的软件或硬件平台上运行;

能直接访问硬件;

C语言具有很高的运行效率。

可移植性并不是指所写的程序不作修改就一定可以在任何计算机上运行,而是指当系统环境改变时,程序无需作很多修改或不修改就可运行。

使程序可移植

第一步就是使用标准库函数,并且把它们和ANSI/ISO C标准中定义的头文件放在一起使用。

第二步是尽可能使所写的程序适用于所有的编译程序,而不是仅仅适用于你现在所使用的编译程序。

第三步是把不可移植的代码分离出来。

能直接访问硬件,指在C语言中,我们可以通过指针控制内存以及寄存器。嵌入式系统是软硬结合的东西,所以我们选择学习能直接访问硬件的高级语言——C语言。




我汇编和C语言都可以直接访问硬件。但汇编的语法较为简单,所以对硬件做初始化操作时选择汇编,而对硬件做初始化时选择C语言(C语言是高级语言中最低级的,但是C语言也具有高级语法)。


很高的运行效率C语言是高级语言中最低级的语言,可以直接编译生成硬件识别的机器码文件。而其他的高级语言需要相应的语言解释器做解释后,再编译。接下来通过C语言与java语言的比较,来帮助读者理解为何C语言相比其他高级语言执行效率较高。


(接下来的解释摘抄自http://zhidao.baidu.com/link?url=xFppYvO4UBsKXYnZbJ5YDrYYonVzHQVfd3eWT-HSoCPzqo1vUkSufzy5DDBeINdvzLY2rMlmsweKqckzYJhiQq)


C语言和 Java语言的运行情况:
C 语言是一种高级的语言,因为它具备很强的,即使是面对一些低级语言也能通读,我们甚至可以把C语言认为是包括低级语言和高级语言的优点全部汇总在一起的语言,是我们常用的计算机语言。而Java语言,严格上来说是在C语言基础上改进的计算机语言,是一中面向对象语言。
C语言的优点当然就有非常多了:例如简洁的优点、紧凑的优点、方便的优点、灵活的优点,同时,C语言也非常方便初学者的学习和使用,一般来说,初学如果能够掌握好关于指针的使用方法,就能够非常熟练的使用C语言来编写程序,程序的执行效率也会很高。而Java语言娥也有不少的的优点:例如他能够直接面向对象、可移植性强、动态性强等等。
在某种程度上,java语言和C语言是相似的,因此要对这两种语言进行效率的分析,是需要反复的验算,才能知道结果的。
(一) C语言程序的运行情况
首先,我们来看一段C语言程序的运行情况,在程序运行,我们都会通过辅助性的语言来进行分析和讲解。
# include < stdio. h>//从时间戳读取时钟周期数
-int64 result[ 8][ 1000]; 当前执行的程序代码在编辑器中处于高亮状态:调用函数。如果跟踪的话就会进入这个函数内部。若使用普通的跟踪调试功能时经常会遇到许多未知错误,这时使用过滤跟踪就能很好解决这一问题
timeO = My Query Counter( ) 为了准备调试,你需要在代码中设置一个断点。它显示了所有调用堆和当前所有线程的状态,包括所有已经执行完毕的线程,程序运行到断点位置时,状态显示为暂停。
(二)Java语言的运行情况
int id; 此时会提示你这种项目是和Java透视图关联的
char name[30]; 第一个字段区域“源文件夹”默认是项目的文件夹
public class Tester对于大多数简单的Java程序而言,你不需要指定启动配置
int i; 有时一个Java程序有许多变量
for(i=0;i<N;i++)我们还是回到单步调试代码中。控制台视图,程序输出就显示在这里
strcpy(t->name,name); 检查和修复Java程序代码问题。在这里你可以检查和修改变量和断点,选择变量标签页,这个视图显示了当前范围的变量及其值
t->next=0; p->next=t; 当表达式中的变量发生变化时,显示的值都不回自动更新。但在表达式视图中,你可以讲表达式转为监视表达式

Java语言与C语言代码运行效率的比较:
由以上的程序运行,可以测算出来C语言的运行效率是远远高于JAVA原因的,原因有也很多,主要还是由于C语言是编译型的语言,而JAVA语言则是解释型的语言,因此JAVA语言要被翻译二进制的语言代码后,计算机方能辨识并执行。不过呢,C语言和java语言的运行效率的比较,快于慢也不是绝对的,要根据不同的实际和应用,以及选择不同的结果,才能确定选择某一语言程序,一般来说呢,c语言是比Java要快,不过因为c语言运行的过程是进程型的,而Java语言是线程型的,因此如果客户的访问量非常大,那么反而java显得更加的合适,更加有优势。