03.06 想从事嵌入式开发,C语言学算法要学到很高深吗?

王若云


提问的逻辑就有问题,只有根据需求不断的项目开发,才能提高编程水平,不实践水平不可能有多高,另外,嵌入式开发要求软硬件都懂,你可以侧重软件,但必须懂硬件。嵌入式系统资源也有限,这要求你得编出高效率,占用内存低的代码,还得能看懂汇编,否则有些问题调死你,反之,对算法要求反而没那么高,总之,实践,总结,再实践,才能成为大神。


Daniel207184471


前言

作为一个有嵌入式开发经验的工程师,我来谈谈我对C语言学习的一点看法,希望阐述的看法对小伙伴们有帮助。

方法

在嵌入式开发中,C语言是我们入门嵌入式的第一步,所以掌握C语言是有必要的。但掌握到什么程度呢?是否需要把C语言所有的知识全部掌握了,再进行下一步的嵌入式学习呢?我认为是没有必要的。第一:C语言较难的一些知识点在嵌入式的比例是很少的;第二:有些C语言的难点知识,当你在今后的嵌入式学习过程中遇到了,你再去学习它,印象才会深刻,就算现在你把所有的C语言的知识全部掌握,如果你经常不用,过后也会遗忘。

那到底掌握到什么程度呢?就我个人经验而言,掌握基本的流程控制,指针的基本使用,数组的基本使用,函数的定义和调用以及联合体和联合体就可以了。至于指针函数,函数指针,以及指针数组等较难点的一些知识点可以留到遇到时,再去攻克它也为时不晚。在这里,推荐大家一本书籍《C和指针》,如果大家把这本书啃完了,我认为就可以进行嵌入式下一步学习了。如果不清楚嵌入式学习步骤的小伙伴,可以关注我,看我回答的历史文章即可找到答案。

总结

学习嵌入式时,掌握基本的C语言用法即可,对于不清楚的C语言难点,遇到时再过来补也没关系的。希望我的学习方法对小伙伴们有帮助。如果你觉得文章不错或对你有意义,欢迎点赞转发。关注我,分享好玩科技,探索未知世界!


drinkingcode


懂得嵌入式开发,必须要精通C语言算法 从事嵌入式软件开发多年,嵌入式开发未来前景也非常广阔,消费类电子产品大部分都属于嵌入式开发系列,嵌入式软件开发从开发角度分为三层,嵌入式软件底层开发,嵌入式软件框架层开发,嵌入式应用开发。但有些公司并没有把这些结构划分的这么清楚,可能应用层和框架层直接柔和在一起了,不同层次的开发技能的要求也会不一致,不能简单的认为C语言搞定了就能顺畅的做嵌入式开发了。


嵌入式开发三个层面

嵌入式底层开发基础开发语言是C语言,有的公司还会涉及到c++,底层开发对英文也是有要求通过看很多的英文技术文档来对号寄存器的作用,如果从事驱动方面的开发需要对操作系统内部的工作原理以及内核构成有足够多的了解,任何一个层次的编程都不是简单的一种编程语言能够搞定的事情,编程语言属于工具般存在,所以在从事编程工作的时候除了掌握必备的编程语言,还要对应专业知识的学习,例如底层开发就要明白底层开发涉猎到的硬性知识点。


嵌入式中间层框架开发除了基础编程语言,然后设计一个框架能够满足上层应用层面的调用,而且还要调用集成基本的底层接口,这个层面是嵌入式里面综合能力要求比较强的,也是嵌入式高手追逐的点,不仅仅要求对嵌入式的底层接口有所了解,还要懂得软件框架设计思想,要求有一定的架构设计能力,嵌入式框架的设计可大可小,典型的安卓系统也是嵌入式框架的一种具备这种能力,如果只是简单的嵌入式产品就不需要很高的设计,框架这个概念可大可小,具体要看实际的编程环境了,适当嵌入式框架的语言常见的有C语言,c++,java等等,当然不是所有的框架都需要自己设计,很多企业直接用开源框架,但开源框架的问题是出了问题只能自己去解决。


嵌入式应用开发,这块涉及但中间层接口的调用,应用级别开发也不是单一的一种编程语言,有些嵌入式设备不需要很强的界面功能,只强调主体功能这种相对比较简单,复杂的像安卓应用也是嵌入式应用的一种,涉及到编程语言有C语言,c++,java等等,QT也是嵌入式常用的框架之一,任何一个编程方向都不是简单的一种编程语言能够轻松搞定的事情。
在嵌入式实际开发过程中C语言用的已经非常普遍了,算法是编程的基本功,既然要做一个标准的程序员就要对掌握算法,起码基本的数据结构和基本算法要掌握,嵌入式开发的顶点可以参照安卓的框架结构,然后根据自己的特点制定对号得学习计划,而且任何方向的技术大牛首先要长期积累不断的总结提升,编程的学习是水到渠成的事情,不是要指望一口气就能学会所有的技巧了,那也不是真正意义上的编程,希望能帮到你。


大学生编程指南


嵌入式开发和普通应用程序开发的主要区别在于:

  1. 调试相对困难

  2. 系统资源相对较少

  3. 可用库和服务相对较少

  4. 应用在系统中权限相对较高


要适应这些特点,用C语言进行嵌入式开发,需要的能力主要有:

  1. 对嵌入式系统资源有一定了解

  2. 编码错误率较低,调试能力较强

  3. 自己造轮子的能力较强


算法方面未必需要学到多么高深,其实基础、简单的算法就足以应付大多数情况了。


夏冬


我就是做嵌入式软件开发的,C语言肯定是要掌握熟练的,对于算法,就看工作侧重点了。一般来说涉及算法不多,不用研究多深。分工作情况,对于嵌入式底层软件开发,基本用不到算法。对于嵌入式应用层软件开发,比如软件处理有些会涉及到算法的处理。这个分从事行业,一般做数据采集,算法无非是数据精度,滤波算法等,难度不大。如果是图像处理这块,算法就要求比较高了。要求对一些数据做高精度的分析过滤处理。


阳光守望者Coder


你好,刚好我以前也从事过嵌入式开发,我觉得做嵌入式开发不一定要c很精通:

1.任何一种开发,都有各层次的程序员,才叫做一个团队,有做基础编码的,有做代码整合的,有做技术框架的。所以任何开发都不是说一定要把语言学得很精通才行,都有一个过程。



2.嵌入式开发也分上层和底层开发,分别掌握的c语言层次不同,我就是刚参加工作就做嵌入式工位机的上层开发,觉得都还ok的。



3.当然,如果你的c语言很精通,那你做开发的时候会更得心应手,不管是嵌入式还是其他开发。


涛哥讲事


对初学者而言,有这种担忧很正常的。其实完全不必担心。实际的情况是,不是等自己完全准备好了再去工作,因为这一点基本不可能完成,一个是时间有限,第二个是工作就可能遇到的问题是五花八门的,需要利用所学的知识去发现和找到解决问题的方法,这才是最重要的能力,所以说,应该是有一定的基础后就可以开始工作。在工作实践中不断学习和提高自己。

1.学习时注意事项

在编程的学习过程中,看十遍不如上机写一遍的印象深刻,多在上机过程中找到编程的方法和控制逻辑。重点在逻辑思维,算法,数据结构几个方面加强学习和体验。C语言其实并不复杂,在所有的开发语言门类里算是最基础和一问语言了。用法非常简单直接。特别是现在网络这么发达,网上资源这么丰富,可以说,你想要的一切知识,在网上都能找到,多练练不难掌握的。

2.嵌入式开发的特点

除了C语言学习之外,嵌入式开发还有一个特点是与硬件和应用对象紧密相关,一切工作都是为了一个具体的功能目标来做的,这点并不像桌面软件开发,具有一定有通用性,也与硬件无关。具体可以分为两大类:

  1. 带Linux系统带了系统之后,很多硬件的驱动在系统里可能已经提供,这种情况对硬件知识要求会少一点,直接调用驱动就可以实现对硬件操作。但是对MCU的要求比较高,一般到少200MHz以上的主频。

  2. 无操作系统

这个操作系统主要是指Linux系统。像RTOS之类的实时系统也是不带驱动的,都需要自己写硬件驱动。这种情况下,初学者要对常用的单片机外设,如SPI,USART,CAN,I2C等要有一定的了解,这个任务可以在上学过程中完成,对实际工作和加快上手速度有很大帮助。

3.建议

如果希望准备的更好一点,只需要在学习期间买一块合适的开发板,一般来说,上面都带有很多外设的测试功能。把理论联系实际,在实践中学,提高很快。总体而言,嵌入式开发并不难,就是勤学多练。


分享到:


相關文章: