开发者网络

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 82|回复: 1

嵌入式软件开发高薪学习路线

[复制链接]

3

主题

5

帖子

12

积分

新手上路

Rank: 1

积分
12
发表于 2023-1-10 20:42:33 | 显示全部楼层 |阅读模式
嵌入式的学习路线是什么?普通本科如何可以从事嵌入式行业并且高薪就业?我教了上千名大专、本科、研究生以及毕业转行的同学成功入行嵌入式高薪领域。
此篇文章有点长,花了一周时间总结写出来,建议大家收藏之后慢慢看。
1.嵌入式软件开发工程师的前景到底怎么样?

嵌入式软件开发工程师的前景目前当然是越来越好,在2020年以前,嵌入式软件开发被称为又累又没钱赚,和互联网行业相比,确实不怎么样。这也是因为2020年之前国内嵌入式行业制造业不景气,就以小米为代表的企业来例子。
自从2020年开始,嵌入式便开始大放光彩,这也是得益于国内芯片产业,5G产业,新能源产业的跃起,让嵌入式工程师一下子供需关系失衡,供不应求,薪资自然就水涨船高了。特别是这几年缺口特别大,尤其是有丰富行业经验的嵌入式软件开发工程师。
2.嵌入式软件开发工程师的薪资真的比不上互联网行业的吗?

我们来看数据,数据不会骗人,这是截取招聘软件上部分的数据:
我们就来看北京的IT行业薪资对比图:






由此可见,嵌入式的薪资自从2022年来已经超过了互联网前端还有JAVA后端的薪资,成为了软件开发里面除了算法以外的最高薪资,佼佼者。
3.嵌入式开发工程师有没有中年危机?

那我们继续来看另外一组数据,关于IT行业的从业人员的年龄分布图:






上图可以明显的看出来,年龄分布里面,前端工程师和JAVA工程师的年龄分布到39岁以上就没有相关的程序员了,而嵌入式软件开发则所有年龄分布里面都有。
4.嵌入式学习路线+知识梳理



书籍推荐:


1.嵌入式软件基础部分

1.C语言
初学者一定要多敲代码,很多同学说敲了代码就忘,视频关掉就不会自己写代码的原因就是 没有自己独立解决编程中遇到的问题。要学会C语言常见的解决问题方案,语法错误根据报错来解决问题,逻辑错误要懂得使用一些打印等等来排查错误,并且学习C语言一定要上linux。
2.数据结构
数据结构很重要,但是初学者不用花太多时间在这上面,先掌握基本的链表和排序查找即可。其他的难度高的算法等有需要的时候再去学习即可。能掌握常见的算法就行,比如:冒泡排序,选择,插入排序,快速排序,链表的增删改查的操作以及二叉树遍历等等。
3.单片机
如果你现在还是大一大二的同学,那么我非常建议你学习单片机51 和32相关的内容,因为他可以夯实你的基础。因为大学生嵌入式相关的比赛大多数都离不开单片机,比如常见的蓝桥杯,合泰杯,TI杯,机器人比赛等等。参加这些比赛获奖,大大的帮助同学锻炼编程能力以及帮助大家就业。学习单片机,只需要把所有常见的外设学一遍,并且以项目的形式体现出来即可,比如:IO、串口、中断、定时器、IIC、SPI、ADC、DMA等等。
4.RTOS实时操作系统
学习了单片机,大家会经常听到操作系统这个概念,那我们就可以学习如何让32跑操作系统。
RTOS全程:read time operation system:实时操作系统,常见的RTOS包括:

  • Freertos
  • ucou Ⅱ/Ⅲ
  • Rt-thread
  • 等等

1.学习如何在stm32上移植rtos,学习rtos的基本任务调度,学习任务控制块。
2.学习时间管理,时钟节拍的产生以及任务延时管理。
3.学习内存管理,heap 1/2/3/4。
4.学习任务的通信管理:消息队列、信号量、互斥量等等。
并且把之前裸机学习的项目放在rtos当中跑一跑,实现一些多任务的功能。
2.嵌入式进阶部分

1.文件IO操作
掌握linux的一套api即可,比如open、read、write、close 以及C库的相关API等。熟练使用这些API做出文件拷贝的功能,理解缓冲区的功能即可。
2.进程和线程
掌握常见的进程fork、exec族函数以及进程间的通信方式:管道、共享内存、消息队列、信号量、socket即可,并且能够写出服务器客户端的通信功能就行。还有线程的pthread的API,包括线程的创建,同步互斥,各种锁的机制比如读写锁,互斥锁条件变量以及如何自己制作动态库和静态库。
3.网络编程
掌握TCP/IP网络模型,并且熟悉socket的api使用以及流程开发,会tcp以及udp的网络开发特性。多进程和多线程服务器客户端模型,掌握生产者和消费者模型的使用;常见的网络协议分析。
4.进阶项目
该阶段项目可以做-多线程聊天室。或者做一个无界面的FTP云盘,以及学习sqlite数据库做一个在线词典的项目。
3.嵌入式高阶开发

高阶部分一定要配合开发板使用,需要提前把前面的linux内容熟悉掌握再开始学习arm内容。选择开发板应该选择资料多的,而不是性能好的。
1.系统移植
的的的uboot的移植,文件系统的制作和移植,以及内核的剪裁移植,各种子设备驱动的移植和开发流程,linux的启动流程分析等等。这里各个芯片厂家的芯片移植步骤可能会有差异,但是大同小异基本原理是一样的。
2.驱动开发
首先掌握字符设备驱动开发,设备树等等,常见设备的驱动的编写如key,led,gpio,adc、pwm、i2c这些。
3.ARM
学习arm架构,arm指令,寻址,异常,中断,异常向量表等等,C语言和汇编的相互调用,常见外设的裸机外设:led,key,adc,pwm,看门狗,iic,spi等等。linux内核依赖的是汇编指令,对于ARM的工作模式,寻址,异常,中断,异常向量表这些都十分重要。
终极
能学到这里,说明你已经很不错了,你可以继续学习QT,物联网、音视频、安卓等领域的知识,或者深入算法钻研linux内核,每个部分能够熟悉掌握收入都不会低。
最后彩蛋时间

最近很多同学找我们要嵌入式学习路线资料,我特意花了好几个月的时间,总结了我对行业丰富的经验,收集了史上最齐全、最实用、最硬核的【嵌入式软件开发工程师从0基础到就业的资料和项目】,分享给大家。










资料覆盖了嵌入式软件开发工程师的所有必备技能:C语言、数据结构、51单片机、32单片机、linux应用开发、ARM底层开发等等课程。非常适合新手从0基础到进阶。
除此之外,再给大家分享一些我的压箱底的嵌入式热门开源项目,包含视频资料+代码文档资料,让你迅速进阶称为高手高手之高高手。
据说很多小伙伴靠着这些进入了嵌入式大厂,比如小米,华为,大疆,海康等大厂,所以一定要好好保存学习。
大家想要免费领取嵌入式软件开发学习路线的同学可以点击下方领取。
或者可以在各平台点击:江江编程
码字不易,大家觉得有用可以关注、关注。点赞、收藏。

回复

使用道具 举报

0

主题

3

帖子

5

积分

新手上路

Rank: 1

积分
5
发表于 前天 15:13 | 显示全部楼层
嘘,低调。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|开发者网络

GMT+8, 2025-4-6 14:08 , Processed in 0.098190 second(s), 23 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表