本期话题
本科计算机软件工程专业,想转嵌入式,该如何学习?
聊一聊
前几天有粉丝跟我咨询,他本科软件工程专业,想转嵌入式软件开发,自己也找了些课程再看,但是学得很迷茫,想向我请教一下学习路线问题。
大学是学纯软件开发的,c 和 c++,数据结构、操作系统这些底子都还有。
因为毕业后一直没在行业里面发展,没接触过真实的行业开发环境,大部分是从网上了解一些计算机行业的情况,貌似选择互联网很卷,一些Java,前端开发的很恼火,后端开发也很卷,所以我想从嵌入式开发入行,软硬一起学,核心诉求就是,不想以后35岁,中年危机,太恼火了。
这位小伙伴的编程基础知识是具备的,c 和 c++,数据结构,并且计算机专业学习过操作系统知识。我建议从Linux系统编程入行,再逐步扩展补充其他嵌入式知识。
下边是我根据他的描述,给的几点建议:
从Linux系统应用编程入手。从系统应用编程(c语言/C++)是比较容易的。可以先入行,积累工作经验,慢慢就找到自己的方向了。
基于 linux 的嵌入式应用程序开发,在 arm 平台上调用 linux 系统 api 接口编写程序。这个对他来说比较好入手,并且他也有基础。主要学习 linux 操作系统编程。熟悉他的各种系统资源,比如文件操作、网络编程、多进程/多线程编程、进程间通信等等。
如果对底层硬件控制感兴趣,可以逐步去学习 linux 驱动开发(这部分对新手不太友好),驱动开发需要熟悉 linux 的系统资源,驱动框架,内核知识,硬件控制知识等。学习这部分,如果没有相关工作经验,找工作的话,比较困难。
学习 STM32 单片机,这部分需要学习硬件知识,而对于软件专业的学生来说,自学门槛高一点。
这是嵌入式的一个方向(ARM-cortexM),相对 linux 来说,简单一些。但是要学习它的硬件资源,控制逻辑,常用的外设模块,软件开发主要是调用官方提供的库。常用的外设模块要明白控制原理。
基于ARM-cortexM 单片机进阶学习,RTOS 要学习一下。学习实时操作系统的原理、建立多任务编程的思想,会用RTOS提供的系统资源等。
总之,如果想尽快转行进入公司工作的话,从 linux 应用编程切入会好一点。再根据自己的兴趣,补充其他嵌入式相关的技术栈。
【微语】他人的建议只是参考,自己的内心才是答案。
感谢阅读,加油~
觉得文章不错,点击“分享”、“赞”、“在看” 呗!