原标题:嵌入式c语言与c语言的区别

最广泛使用的系统编程语言是C语言,它是使用自由格式源代码的简单编程语言;它曾用于以前用汇编语言构建的应用程序中。嵌入式C是C语言的扩展,它在嵌入式系统中应用于编写嵌入式软件,那么二者之间究竟有什么差异呢?

一、启动过程

1. 通用c语言程序的启动过程

普通c语言启动程序搭载了windows或linux等通用操作系统的PC机,编译器会自动完成启动程序,对微处理器和外围设备进行初始化,然后再调用main函数,用户没有必要制作自己的启动程序。

2. 嵌入式c语言程序的启动过程

嵌入式c语言搭载微处理器,用于嵌入式系统的启动程序要能够对目标系统的硬件和数据进行初始化,因此,用户必须做特定的启动程序。一般情况下,在支持微处理器的编译器中会捆绑相应的启动程序,如下图:

二、存储空间的分配

存储器ROM和RAM

RAM:随机存取存储器(random access memory)又称作“随机存储器”,是与CPU直接交换数据的内部存储器,也叫主存(内存)。它可以随时读写,而且速度很快,通常作为操作系统或其他正在运行中的程序的临时数据存储媒介。当电源关闭时RAM不能保留数据。如果需要保存数据,就必须把它们写入一个长期的存储设备中(例如硬盘)。RAM和ROM相比,两者的最大区别是RAM在断电以后保存在上面的数据会自动消失,而ROM不会自动消失,可以长时间断电保存。

ROM:只读存储器。ROM所存数据,一般是装入整机前事先写好的,整机工作过程中只能读出,而不像随机存储器那样能快速地、方便地加以改写。ROM所存数据稳定,断电后所存数据也不会改变。

1. 对于普通c程序,操作系统将程序和数据从外部存储设备载入RAM中运行。代码、数据、堆栈都在RAM中。

2. 对于嵌入式c程序,因没有通用的操作系统,嵌入式系统必须先将代码设置到ROM中,将数据、堆栈设置到RAM中才可以运行。

三、对于硬件的访问

1.如上图所示:对于普通c语言而言,操作系统对计算机硬件设备进行操作,如控制声卡发出声音,控制显卡绘制图形等。

应用程序可以通知操作系统执行某个具体的动作,以便使应用程序间接的通过操作系统对硬件进行操作。

对于操作系统是怎样控制硬件设备的只需大致了解即可,此过程为应用程序对API调用的过程,这一过程称为系统调用,通过系统提供的接口函数就可以指挥操作系统来工作了。

2.如上图所示:嵌入式系统在访问硬件时,必须编写直接操作硬件的应用程序。

四、资源的限制

1.由于在嵌入式系统中使用小而耗电的组件,嵌入式系统具有有限的ROM和RAM以及较少的处理能力,因此在嵌入式C中编写程序时应该注意有限的资源。

2.在C语言中,台式计算机可以访问系统操作系统,存储器等,可以利用所有计算机资源。

五、应用方向

1.C主要用于简单但逻辑的程序,基于操作系统的软件等。

2.嵌入式C用于电视,洗衣机等微控制器。返回搜狐,查看更多

责任编辑:

linux c与c语言的区别吗,嵌入式c语言与c语言的区别相关推荐

  1. 嵌入式开发为什么用C语言

    有了解过嵌入式开发的人都会想要多去了解一些嵌入式方面的信息,那么既然是嵌入式开发肯定是要你会代码的,至于这些可能你还不是很了解,下面可以一起来了解下嵌入式开发为什么用C语言吧. 点击获取1V1嵌入式学 ...

  2. 机器人编程与python语言的区别_儿童编程和机器人编程有啥区别?

    这是最全面的回答!一篇文章让你彻底了解少儿编程和机器人编程的区别! 虽然都带有"编程"二字,但少儿编程和机器人编程还是有本质区别的,有哪些不一样呢? 偷懒的家长可以直接看下面这张表 ...

  3. linux 解压参数 zxvf,在linux下面解压用的zxpf是什么意思,它跟zxvf有啥区别

    在linux下面解压用的zxpf是什么意思,它跟zxvf有啥区别 linux 命令中tar后跟的zxvf是什么意思:.tar.gz是一个压缩包   .tar只是打包而没有压缩 z:表示 tar 包是被 ...

  4. linux中.la是什么文件,linux下的so、o、lo、a、la文件有什么区别?

    linux下的so.o.lo.a.la文件有什么区别? o: 编译的目标文件 a: 静态库,其实就是把若干o文件打了个包 so: 动态链接库(共享库) lo: 使用libtool编译出的目标文件,其实 ...

  5. JS中的函数概念和C语言的概念是类似的,c语言和JavaScript的区别有哪些?

    c语言和JavaScript在语法结构上有很多相似(例如if条件语句.while循环.switch语句.do-while循环等),那么它们之间有什么不同?下面本篇文章就来给大家介绍一下c语言和Java ...

  6. C语言中的带参宏和带参函数的区别

    C语言中的带参宏和带参函数的区别 (1) 带参函数中的形参是变量,因此有类型检查.而带参宏只是简单的字符串替换. (2) 从程序执行的过程来看,带参宏是在预处理阶段被预处理器处理的.而带参函数是在程序 ...

  7. C语言标识符之关键字,预处理标识符和用户标识符的区别和关系

    C语言标识符分类 第一类:关键字 定义 由C语言规定的具有特定意义的字符串,通常也称为保留字.例如 int.char.long.float等.相当于已经被C语言本身特殊使用了的标识符,不可以再定义.在 ...

  8. python和c 的区别-Python和C语言的区别是什么?Python和C语言的简单比较

    Python和C语言都是一种可用于实现多线程的高级编程语言,那么它们之间有什么区别?本篇文章就来简单比较一下Python和C语言,让大家了解Python和C语言之间的区别,希望对大家有所帮助. 什么是 ...

  9. c语言函数声明中,static inline和extern inline的区别

    c语言函数声明中,static inline和extern inline的区别 "extern"关键字对于普通函数没有作用 "extern"和"sta ...

  10. 在linux下面解压用的zxpf是什么意思,它跟zxvf有啥区别

    在linux下面解压用的zxpf和zxvf有啥区别 在linux下面解压用的zxpf是什么意思,它跟zxvf有啥区别 linux 命令中tar后跟的zxvf是什么意思:.tar.gz是一个压缩包 .t ...

最新文章

  1. 关于贝叶斯统计的一点总结
  2. php修改数据库字段内容,php对数据库的增删改查操作
  3. 未处理的异常: 0xC0000235: 由句柄所调用的 NtClose 已使用 NtSetInformationObject 以防止关闭。...
  4. mac 下启动Android Studio 时出现 Android Studio was unable to find a valid Jvm
  5. MyBatis多参数传递之Map方式示例——MyBatis学习笔记之十三
  6. XYGame-AI设计3-行为树-第1版本
  7. 微软推出 “Edge 漏洞研究计划”,类似于谷歌的 Project Zero 项目
  8. 除法取模与逆元/费马小定理
  9. [bug解决] TensorFlow安装错误:ERROR After October 2020 you may experience errors when installing
  10. mysql 查询优化 ~ 分区表查询的探索
  11. 真正解决办法:FTP 执行命令时500 Illegal PORT command
  12. 老人与科技:解决老人的“数字鸿沟”,全世界都在努力!
  13. java求一批数据的最大值、最小值、以及掐头去尾之后的平均值。
  14. 首席新媒体运营黎想教程:线上活动推广策划及方案解析
  15. Bootstrap 字体图标和自定义矢量图标
  16. PLM系统在制造业的应用(下)
  17. BZOJ 4864: [BeiJing 2017 Wc]神秘物质 解题报告
  18. TM1652控制-2
  19. 【调剂】无损检测与光电传感技术及应用国家工程实验室(南昌航空大学)2020年研究生调剂信息...
  20. 微信小程序轮子 - 自定义中间凸起底部导航栏(只需渲染一次组件 | 性能高 | 灵活)

热门文章

  1. 计算机真题训练6word上机题,Micrsoft Office Word上机练习题集.docx
  2. 视音频数据处理入门:H.264视频码流解析
  3. HTML5+CSS3实现小米商城 (完整版)
  4. Java期末复习题详解
  5. window屏幕保护程序没有可以设置的选项
  6. Python使用Cv2模块识别验证码
  7. 一篇文章让你学会spring
  8. 直通模式+Traffic Filter
  9. DCDC转换器与稳压器的区别
  10. html 点餐页面,H5实现的点餐页面