学嵌入式职业发展方向有哪些?_研究生方向什么未来是嵌入式工程师-程序员宅基地

技术标签: 职业发展方向  嵌入式发展  嵌入式方向  嵌入式  

很多人对嵌入式应该学些什么说的很复杂或者很简单,我以主流的linux操作系统为例来展开。

很多人只能做单片机开发,比如C51或者STM32(比较常见)等,当然了他们也可以跑一些小型的操作系统比如μC/OS-II或μC/OS-III等,当然了这些也是基于C语言的学习,也是和硬件在打交道,属于C语言直接调用库函数或者直接操作寄存器,也能够让硬件正常的工作,没错,会这些你也能有一份工作,学的深入的也会有不错的工作,正所谓360行行行出状元嘛,但是当你在这个方向工作三五年之后你会发现你进入到了瓶颈期,为什么呢?因为你会发现你的技术处于某个高度,很难得到提升,而且有很多东西感觉属于这个行业,想尝试着去做,但是就是没有能力去做,这个时候不是你能力不够,而是你的技术储备不够了。你需要去打通一下任督二脉,那么这个时候建议你上手真正的嵌入式开发。

嵌入式门槛的学习比较高的原因,因为中间需要很多的技术储备,如果不能打通中间环节,那么你就只能停留在单片机开发的层面。那么接下来我大致的帮大家理一下这一块的一个思路,小弟入坑不久,错误和漏洞肯定是有的,希望大家能稍稍包涵一下,在此谢过。

学习嵌入式开发首先你需要有一个良好的C语言功底,你需要对C语言可以说是熟练掌握,当然了各种运算符和表达式以及类型的范围是基础中的基础,判断选择循环的语句肯定不能用错,static、extern,const,等的用法和对变量函数的作用域等的影响都是基础,typedef,struct,union,#define的各种用法和坑肯定要掌握,说实话掌握上面这些再加上指针和数组的用法基本上做单片机开发就没有问题了,但是如果是嵌入式开发,对C语言你还需要对各种数组,指针,数组指针,指针数组,函数指针,回调函数的用法熟练掌握,为什么呢?因为驱动的部分基本上都是函数指针和回调函数来实现对各种接口的支持。这个是对C部分的一个要求,相对来说要求较高,不过贵在应用嘛,快速掌握这些和通过几年时间掌握这些其实就是时间的问题,相信多数人事耗不起这个时间的。

第二个你需要掌握的内容是数据结构,数据结构是对数据的组织结构(鄙人陋见),那么这个时候链表的强大就会出现在你的面前,很多人感觉数据结构的学习很难,的确很难,我给大家简单的说下小弟以为的难点在哪里,难点在于他需要你去梳理数据与数据之间的关系,以前咱们是直接遍历,现在要实现对数据的增删改查加排序等功能,同时还要把这些数据当做一个节点栓在一根(单链表等)或两根绳子(双链表等)上,那么怎么先给你的数据申请个位置(malloc一个节点,按照你定义的节点形式)然后在链表上遍历找到合适的位置插入就可以的,同时后面的绳子还不能断对吧,保证数据的完整性。一本不错的书是《大话数据结构》(我没看完,不过很不错)。那么对嵌入式来说,数据结构学到那种程度就可以了呢?我相信这个是大家关注的问题,因为数据结构那么多东西,都学完还不累死了啊。我这里简单的发表一下建议,数据结构将前面的单链表,双链表,循环链表,栈,队列全部拿下(能自己画画节点的图,最好能独立实现代码)就够了,树的话了解树的递归创建和遍历就可以的了,再内核中出现最多的就是链表,希望大家好好掌握,为后面打下坚实的基础。而对于图的话,那是算法工程师的事了,因为图的多数应用都位于算法中,这里就不做过多的介绍了。不过还是要给大家强调一下,如果想深入学习嵌入式开发,那么C语言的掌握还有数据结构部分的思想是重重之中。

拿下C和数据结构之后其实你发现你还是停留在裸机的开发,要想进入嵌入式的开发,那么你需要切入到Ubuntu的学习,当然了个人建议前面的C语言和数据结构也在Ubuntu下开发会更好,因为嵌入式开发目前Ubuntu环境是最好上手的。(这里做个广告,华清远见创客学院的整套嵌入式课程都是在Ubuntu的环境下学习的。)要想进入Ubuntu的学习那么你需要一把钥匙,熟悉shell命令,能实现像windows下那样复制粘贴拷贝重命名查找….,当然了都是通过命令实现的,此外你还需要熟悉vi编辑器,这款最强大的ide,可以百度一下vi的配置,把在vi环境下的代码编辑作为你初入嵌入式必须攻克的一个门槛(很重要),当你基本的shell命令和vi使用拿下了之后,你就拿到了这把钥匙(估计突击这一块也就两三天就能拿下)。

后面你可以看到要想与内核打交道你需要拿下文件IO和库函数,为什么呢 ,你会发现之前的C和数据结构基本上都没有对文件进行过操作,而linux当中号称是”一切皆文件”,因为在驱动开发中不管你是什么设备对我来说都是一样的,都只是一个文件而已,linux下有七种文件类型,bcd-lsp,大家可以自己去扩展一下,那么在linux下将你所有的设备都抽象成各种文件,字符设备文件,块设备文件,网络设备文件,普通文件等等,这也就是说要想学习linux,学习驱动,你必须掌握linux下对各种文件的操作,比如对文件的打开,读,写,ioctl,关闭以及问目录的打开关闭等。linux下提供了两套标准,一个是文件IO,一个是标准IO,区别简单说就是是否有流缓冲区(具体可以自己去扩展),这里区别一下linux下支持的是文件IO,其实这个难度也不大,基础较好的人不用一周就能掌握,当然应用的熟练度肯定是有待斟酌的了。

那么拿下了文件IO和标准IO就万事大吉了吗?不是的,这里我们稍稍谈一下linux内核是怎么工作的,它是通过对进程和线程的调度来完成各种任务的,那么这个时候你想一想,你该做什么啊?是的,没猜错,你需要把linux下7中进程间通信方式给拿下,比如无名管道,有名管道,信号,信号量,共享内存和消息队列以及网络通信,不过由于进程的资源消耗可能稍大,所以引入了线程,那么你需要掌握线程的同步和互斥的机制,同时再深入理解一下调度的概念以及与进程线程间的关系,做个小项目练练手,那么恭喜你,学到这里已经可以找到一份应用层的工作了,比如网络开发等等。

不过俗话说学无止境嘛,一条路走到黑,索性把驱动也拿下吧,只有拿下驱动,你才能够从最底层的硬件一直到最上层的应用然后再从最上层的应用到最底层的驱动打通整个闭环,你会发现很多东西对你来说都是小case的了,驱动开发首选的硬件肯定是ARM的了,如果你有51和STM32等硬件基础,恭喜你这一块很快就能突破,如果你是软件出身不懂硬件,没关系,有好的指导(比如说华清远见创客学院:又打广告了,哈哈~~)你也可以快速上手,其实我们以前也想把路走好,但是就是不知道走那条路,所以走了很多弯路,说白了就是少个人引导你前进。不过嘛,做技术的都喜欢按照自己的想法,自己认为正确的方向前进,我也是,哈哈。说了很多废话,简单的说一下如何上手学习驱动,首先你需要将环境搭建起来,你需要知道如何编译内核,如何将内核在板子上跑起来,这个是第一步。当然了学驱动写的第一个驱动肯定也是点灯(点灯大法好),然后慢慢的接触一下linux下如果去写一个简单的字符设备驱动,学到后面你会发现驱动基本上就是在套框架,比如字符设备框架,Platform框架,IIC框架,SPI框架,INPUT输入子系统框架,misc,USB等等框架,那么驱动到底是做什么的呢?驱动向下操作硬件,向上提供接口,简单点说就是你以前配置硬件寄存器让硬件正常工作,那么你先在驱动中也去相同方式配置硬件,只不过是要将配置硬件的过程何时的套入驱动的框架当中,同时向外面提供你对硬件的操作接口,比如open,read,write,ioctl的接口等,说白了就是在应用层通过io操作去调用驱动的接口然后再驱动提供的接口中去修改硬件的状态,实现对硬件的控制。当然了一些基础知识如自旋锁,互斥体,中断底半部等等大家可以自行去了解。

上面那张图其实就解释完了,但是我们再想一下嵌入式系统是什么,以应用为中心,对吧,那么我们需要在实战中去应用我们的知识和技术去解决实际的问题,这个时候有两套框架,一个是CS,一个是BS,那么在这些基础上你想往哪个方向发展都是可以的。因为任督二脉已通,修炼何种神功就看你的选择了。

当然了上面这些吃几年是没什么问题的,不过热爱技术的大哥们一般都会再学两个东东,一个叫做高级语言,可以选择C++,JAVA,PYTHON三选一,一个叫做界面,可以选择QT、android或者web等,这些都是增值哇,以上为小弟愚见。

4、学习嵌入式以后可以做些什么?(职业发展方向)

4.1、成为某个方向技术方面的核心,领域内的一专多才的专家;

4.2、另一个是从项目中锻炼起来,成为项目主管或是管理型人才;

4.3、再有就是因为嵌入式开发的门槛相对较高,技术的附加值较高,可以利用自己的技术及行业经验去创业。

4.4、可以做很多自己想做的事;

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/xueheih/article/details/80309900

智能推荐

图形化编程Mixly——RFID智能门禁_csdnrfidmixly-程序员宅基地

文章浏览阅读2.4k次,点赞2次,收藏11次。文章目录1.软硬件连接2.图形化编程块3.代码块4.实验成果实验材料与环境1、硬件Arduino开发板、舵机SG90、RFID-RC522读卡器、校园卡、杜邦线若干2、软件Mixly IDE(下载地址:https://pan.baidu.com/s/1vKnY-vC4LU0qMFitArEXfw提取码:tbfe)实验内容【1】读取校园卡ID号。【2】读取到指定校园卡时S..._csdnrfidmixly

java/jsp/ssm基于web的多媒体素材管理系统【2024年毕设】_基于web的多媒体素材管理系统zip-程序员宅基地

文章浏览阅读53次。springboot基于Springboot的企业cms内容管理系统。springboot基于Vue和Springboot的会议室管理系统。开发软件:eclipse/myeclipse/idea。springboot中小型企业物流管理系统的设计与实现。springboot微信小程序的食谱大全“食全食美”springboot基于微信小程序的舟袍设计工作室。ssm基于web的佳茗天香茶品销售平台的设计与实现。springboot医考答题练习系统的设计与实现。springboot微信小程序的火锅店点餐系统。_基于web的多媒体素材管理系统zip

vue多种实现动画效果分享【推荐学习】_vue 动画-程序员宅基地

文章浏览阅读1k次。通常我们实现动画效果会用到CSS中的class类,这也是比较基本的方式实现动画。_vue 动画

免费送书!从ROS1到ROS2,无人机编程实战指南-程序员宅基地

文章浏览阅读340次。亲爱的读者们,我们今天非常荣幸地向大家推荐一本全新力作——《从ROS1到ROS2无人机编程实战指南》。这本书站在初学者的角度,从入门到进阶,再到实战,循序渐进,是学习ROS1和ROS2的最佳选择。如今已在全国范围内上市,购书即可享受次日达的快捷服务!本书的创作初衷源于帮助那些渴望投身于无人机或机器人开发的初学者。目前,国内关于ROS的书籍相当稀缺,大部分都是国外翻译版,内容可能更偏向于机器人学的公..._从ros1到ros2无人机编程实战指南

tkinter创建子窗口(只创建一个)_tkinter子窗口-程序员宅基地

文章浏览阅读635次。【代码】tkinter创建子窗口(只创建一个)_tkinter子窗口

基于微信小程序的小说阅读系统+vue.js附带文章和源代码设计说明文档ppt_微信小程序书代码-程序员宅基地

文章浏览阅读345次,点赞9次,收藏6次。博主介绍:CSDN特邀作者、985计算机专业毕业、某互联网大厂高级全栈开发程序员、码云/掘金/华为云/阿里云/InfoQ/StackOverflow/github等平台优质作者、专注于Java、小程序、前端、python等技术领域和毕业项目实战,以及程序定制化开发、全栈讲解、就业辅导、面试辅导、简历修改。精彩专栏 推荐订阅2023-2024年最值得选的微信小程序毕业设计选题大全:100个热门选题推荐2023-2024年最值得选的Java毕业设计选题大全:500个热门选题推荐。_微信小程序书代码

随便推点

Windows 10下载安装openjdk及环境变量配置(以openjdk 8为例)_openjdk环境变量配置-程序员宅基地

文章浏览阅读9.2k次,点赞7次,收藏13次。Windows 10下载安装openjdk及环境变量配置(以openjdk 8为例)Windows 10下载安装openjdk及环境变量配置下载地址https://www.azul.com/downloads/zulu-community/?package=jdk安装双击已下载的安装包点击Next,安装目录可以自己定义点击Next进入安装界面进行安装安装完成后显示如下界面设置环境变量1.进入环境变量配置界面1.右键点击计算机–>属性–>高级系统设置–>高级_openjdk环境变量配置

PyTorch如何打印模型详细信息_python打印模型-程序员宅基地

文章浏览阅读1.7k次,点赞2次,收藏15次。如何打印模型_python打印模型

维修Proface普洛菲斯触摸屏GP-4502WW 4301 4501TW 4401T人机界面-程序员宅基地

文章浏览阅读498次,点赞14次,收藏4次。伦茨、KEB、西门子、力士乐、施耐德电气、、鲍米勒、丹佛斯、派克、三菱、Allen Bradley、ABB、罗克韦尔、东芝、Gerfan、松下、Proface、台达、Beckhoff、Omron欧姆龙、Sumitomo住友、Sodick沙迪克、SedoTreepoint、WEINVIEW威纶通、Axiomtek艾讯、Portwell瑞传、Laetus.......等各大知名进口品牌工控机。W275 x H206 x D38.2 毫米 [W10.85 x H8.11 x D1.50 英寸]

Apipost 上手指南_apipost上传文件接口-程序员宅基地

文章浏览阅读4.3k次。Apipost是一个用于Web开发的接口调试工具,由国人开发。目前版本:7.0类似的产品还有,不过个人感觉功能上不如Apipost好用。_apipost上传文件接口

linux单机巡检脚本并发送邮箱的巡检报告-程序员宅基地

文章浏览阅读389次,点赞10次,收藏10次。案例,生成的巡检报告邮件。

强强联手:强网杯LongTimeAgo复盘分析网络安全-程序员宅基地

文章浏览阅读141次。LongTimeAgo题目是一道备受关注的CTF(Capture The Flag)题目,旨在考察参赛选手在网络安全方面的技能和知识。该题目主要涉及密码学和逆向工程的内容,要求选手通过分析给定的程序,找到隐藏的漏洞并获取关键信息。该题目主要涉及到密码学和逆向工程的内容,需要选手通过分析给定的程序,找到隐藏的漏洞并获取关键信息。观察源代码中的加密函数,我们可以发现密钥的长度是可变的,它取决于输入明文的长度。观察源代码中的加密函数,我们可以发现密钥的长度是可变的,它取决于输入明文的长度。是当前明文字符的索引。_强网杯

推荐文章

热门文章

相关标签