C语言和嵌入式C语言有什么区别

 我来答
令狐安天
2011-09-08 · TA获得超过543个赞
知道答主
回答量:441
采纳率:50%
帮助的人:229万
展开全部
嵌入式C语言和C语言是完全一样的,写代码上完全没有区别。

区别在于嵌入式的C语言是跑在嵌入式的开发板上的,CPU和我们电脑不一样,所以编译器也是不一样的,生成的可执行程序也是不一样的。

学习嵌入式,该学习什么基本的知识呢?

首先C语言,这个是毋庸置疑的,不管是做嵌入式软件还是硬件开发的人员,对C语言的掌握这个是必需的,特别是对于以后致力于嵌入式软件开发的人,现在绝大部分都是用C语言,你说不掌握它可以吗?至于如何学习C语言,我想这些基础的知识每个人都有自己的方法,关键要去学习,看书也好,网上找些视频看也好。很多人会问,C语言要学到怎么样,我觉得这没有标准的答案。我想至少你在明白了一些基础的概念后,就该写代码了,动手才是最重要的,当你动手了,遇到问题了,再反过来学习,反过来查查课本,那时的收获就不是你死看书能得到的。

其次,应该对操作系统有所了解,这对你对硬件和软件的理解,绝对有很大的帮助。应该把系统的管理理解一下,比如进程、线程,系统如何来分配资源的,系统如何来管理硬件的,当然,不是看书就能把这些理解透,如果不是一时能理解,没关系,多看看,结合以后的项目经验,会有更好的理解的。

还有应该学习嵌入式系统,如linux或者wince下的编程,这些对以后做应用的编程很有帮助,当然,如果做手机的话,那可以学习MTK、塞班、Android等操作系统,Android是以后发展的趋势,现在很热门,Android也是基于linux系统封装的,所以建议先学习下linux。

还有,应该学习下单片机或者ARM或者MIPS,很多人说我没有单片机的经验,直接学ARM可以吗?我觉得那完全没有问题的,当然如果你学习过单片机,那最好不过了,以后学习ARM就更简单了。

最后如果你把以上的知识都有所了解后,就该去阅读阅读一些优秀的代码,比如结合arm芯片手册学习去学习下UBOOT的源代码,了解下最小的系统开发,那对你整个嵌入式开发的非常有帮助的,可以的话,还可以学习下linux的源代码,当然如果你直接阅读2.6的代码,我想你会很痛苦的,可以先看看linux 代码早期的版本,比如0.12 的代码等等,麻雀虽小,五脏俱全,如果你全看完了,那我想你就是一名很成功的嵌入式工程师。

至于上面说的知识如何学习呢?每个人都应该去找自己最好的方法,所谓的最好的方法就是最适合自己的方法。很多人看不进书,那就去看看视频吧。视频也应该要选择,不是随便看看,应该要有所选择,有所挑选。我也是这样一路走过来的,不过我这人比较懒,我看不进书,一看书我就想睡觉,所以这几年我都是看视频过来的,现在也算学有所成,但也不敢说是高手吧。

我在网上看到,有人把自己学习嵌入式的视频总结出来,嵌入式系列实践和视频教程,大家可以看看网址 我仔细看了觉得很不错,我本来也想整理下,可是奈何我自己的电脑硬盘空间才40G,没有办法,时间也是不够,心有余而力不足,我不是在帮他做广告,虽然要花钱,我觉得算不错,至少自己不用去整理和花大量的时间去找资源,当然如果网上有的下,你网速和硬盘都够的话,我建议大家自己网上下也好。想想我自己该开始学的时候,那时视频资源少之又少,我买书和买视频至少花了几千块,但是我觉得那很值,至少我现在赚回来了很多知识。

最后,希望这篇文章对热爱嵌入式,想致力于嵌入式开发的朋友有所帮助。送给大家一句简单而又朴素的话,坚持就是胜利,贵在坚持,也可以看看如何坚持嵌入式学习
Hustchx
推荐于2017-11-28 · TA获得超过784个赞
知道小有建树答主
回答量:392
采纳率:0%
帮助的人:294万
展开全部
实际上是没有太大的差别,只是本身的库可能不同,嵌入式有很多时候会受到硬件的限制,同时,在编写嵌入式的程序时,对于实时性要求可能会很高,同时,由于嵌入式系统一般内存,cpu等资源有限,编程时需要特别考虑系统的高效性……
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cdfarsight00
2022-09-14 · 超过16用户采纳过TA的回答
知道答主
回答量:93
采纳率:0%
帮助的人:1.5万
展开全部

具体体现在启动过程、存储空间的分配、对于硬件的访问、资源的限制等方面。

1.启动过程

PC机上普通C语言编译器会自动完成启动程序,程序员不用制作自己的启动程序。自动初始化CPU和外设后,调用main函数。

而嵌入式C语言搭载微处理器与普通PC机器不同,要求嵌入式系统的启动程序:要能对搭载微处理器的硬件平台和所需数据进行初始化操作。所以做嵌入式开发的程序员一定要制作特定的启动程序。

2.存储空间

RAM:随机存取存储器是与CPU直接交换数据的内部存储器。它可以随时读写,而且速度很快。

ROM:只读存储器。ROM所存数据在工作过程中只能读出,而不像随机存储器那样能快速地、方便地加以改写。ROM所存数据稳定,断电后所存数据也不会改变。

RAM和ROM相比,两者的最大区别是RAM在断电以后保存在上面的数据会自动消失,而ROM不会自动消失,可以长时间断电保存。如果需要保存数据,就必须使用ROM(例如硬盘)。

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

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

3.对于硬件的访问、资源的限制等

对于普通C,操作系统对计算机硬件设备进行操作,应用程序可以通知操作系统执行某个具体的动作,以便使应用程序间接的通过操作系统对硬件进行操作。

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

而嵌入式系统在访问硬件时,必须编写直接操作硬件的应用程序。

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

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

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
缑安荷楚新
2019-04-09 · TA获得超过2.9万个赞
知道大有可为答主
回答量:1.1万
采纳率:33%
帮助的人:565万
展开全部
从C语言来看没有区别,要说有区别就是面试的人忽悠被面的人.使用上可能要注意的点会有点不一样:1.内存分配要注意;2.堆栈使用要注意;3.跟硬件相关的一些东西要注意;4.要有系统概念,涉及到RTOS或者自己写的前后台系统.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
战雅逸韩帆
2019-04-26 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:28%
帮助的人:714万
展开全部
唯一的区别就是注意栈的的深度,内存太小栈容易被击穿!呵呵,开玩笑。其实没啥区别,其编译器都遵循C标准。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式