双非二本计算机类专业,想要走嵌入式软件工程师这个岗位,但是没有实习,现在想要尽快做项目,并且实践巩固自己的理论知识,嵌入式软件工程师应该主要包含mcu+rtos类以及嵌入式linux类这两个方向吧,目前已经看完了c,c++,linux常用命令以及shell编程,linux系统编程(比如文件io、多进程多线程编程等,linux网络编程),还学了qt。mcu+rtos我一点都没写,硬件基础也没学,在大一就学了数电,嵌入式linux驱动方面也一点的没学,现在不知道咋办了,因为嵌入式领域的知识体系太庞大了,现在大三我接下来都不知道咋办,有没有行业引路人们帮学弟简单提个规划吧,实在不知道咋办了,我连一份实习经历都没有呢,大三下学期要实习,还是暑假实习呢?我也不知道?
2条回答 默认 最新
檀越@新空间 2026-01-13 17:35关注下午好🌅🌅🌅
本答案参考通义千问你现在的情况是:双非二本计算机专业,想转行做嵌入式软件工程师(Linux方向),但目前没有实习、项目经验,也没有MCU+RTOS和Linux驱动的基础知识。这是一个很常见的问题,尤其是对于大三的学生来说,时间紧迫,但只要合理规划,仍然可以逆袭。
一、明确目标岗位
嵌入式软件工程师主要分为两个方向:
- MCU + RTOS方向(如STM32、NXP、TI等)
- 嵌入式Linux方向(如ARM架构下的Linux开发、驱动编写、系统移植等)
你已经学习了C/C++、Linux常用命令、Shell编程、Linux系统编程(文件IO、多进程/线程、网络编程)以及Qt,说明你已经有不错的Linux基础,可以优先考虑嵌入式Linux方向。
二、明确当前阶段的瓶颈
1. 缺乏实际项目经验
- 你目前没有实习经历,也没有动手项目。
- 这是很多应届生求职时最大的短板。
2. 缺少硬件基础知识
- 你提到“硬件基础没学”,这在嵌入式领域非常重要。
- 尤其是MCU方向,需要理解电路、GPIO、中断、定时器等硬件概念。
3. 没有Linux驱动经验
- 驱动开发是嵌入式Linux的核心技能之一,你需要掌握字符设备、内核模块、sysfs、platform总线等。
三、制定未来半年的学习与实践计划(大三下学期)
目标:完成一个完整的嵌入式Linux项目,并积累可展示的简历内容
✅ 第一步:夯实Linux基础(1个月)
重点学习内容:
- Linux内核机制(进程调度、内存管理、文件系统)
- 内核模块编程(Loadable Kernel Module, LKM)
- 设备驱动框架(字符设备、平台设备、设备树)
- 系统调用原理
- 嵌入式Linux交叉编译环境搭建(arm-linux-gnueabi)
推荐资源:
- 《Linux设备驱动开发详解》(宋宝华)
- 《Linux内核设计与实现》(Robert Love)
- 《嵌入式Linux驱动开发入门》(刘洪涛)
✅ 第二步:学习硬件基础(1个月)
重点学习内容:
- 数字电路基础(门电路、组合逻辑、时序逻辑)
- 单片机原理(STM32系列)
- GPIO、UART、SPI、I2C、ADC、PWM等外设
- 使用Keil或STM32CubeIDE进行开发
推荐资源:
- 《STM32中文参考手册》
- 《嵌入式系统原理与应用》(张培志)
- 视频教程:B站搜索“STM32零基础入门”
✅ 第三步:动手做一个完整项目(2个月)
项目建议:基于STM32的嵌入式Linux网关
项目目标:
- 实现一个简单的嵌入式Linux设备,通过UART与STM32通信
- STM32采集传感器数据(如温湿度、光强)
- Linux端接收数据并显示(使用Qt或Web界面)
- 支持远程控制(通过TCP/IP)
技术点:
- STM32部分:GPIO、UART、ADC
- Linux部分:驱动编写、网络编程、Qt界面
- 跨平台通信:串口通信、TCP/IP协议
项目成果:
- 可以作为简历中的项目经历
- 可以用于面试展示
- 可以上传到GitHub供他人查看
✅ 第四步:准备实习与简历(1个月)
重点内容:
- 优化简历:突出你的项目经验、技术栈、学习能力
- 投递实习:关注招聘网站(拉勾、BOSS直聘、猎聘、CSDN、知乎专栏等)
- 面试准备:熟悉Linux驱动、C语言、多线程、网络编程等
推荐简历模板:
- 项目描述:使用STAR法则(Situation, Task, Action, Result)
- 技术栈:列出你掌握的技术(如:C/C++、Linux驱动、STM32、Qt等)
四、推荐学习路径图
[目标] → [Linux基础] → [硬件基础] → [项目实践] → [简历优化] → [实习/就业]
五、代码示例:STM32与Linux通信(UART)
// STM32发送数据(使用HAL库) void SendData(uint8_t data) { HAL_UART_Transmit(&huart1, &data, 1, 100); } // Linux端接收数据(使用标准C) #include <stdio.h> #include <fcntl.h> #include <unistd.h> #include <termios.h> int main() { int fd = open("/dev/ttyUSB0", O_RDWR | O_NOCTTY | O_NDELAY); if (fd == -1) { perror("open failed"); return -1; } struct termios options; tcgetattr(fd, &options); cfsetispeed(&options, B9600); cfsetospeed(&options, B9600); options.c_cflag |= (CLOCAL | CREAD); options.c_cflag &= ~PARENB; options.c_cflag &= ~CSTOPB; options.c_cflag &= ~CSIZE; options.c_cflag |= CS8; options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG); options.c_oflag &= ~OPOST; tcsetattr(fd, TCSANOW, &options); char buffer[1]; read(fd, buffer, 1); printf("Received: %d\n", buffer[0]); close(fd); return 0; }
六、关键建议
1. 不要等待机会,而是创造机会
- 自己动手做项目,哪怕只是一个小型实验
- 把项目写成博客或开源代码,提升影响力
2. 重视简历质量
- 把你做的每一个项目都写清楚
- 用技术术语体现你的能力
3. 争取暑假实习
- 大三下学期(3-6月)是实习黄金期
- 暑假实习(7-8月)也是一个重要窗口期
4. 保持持续学习
- 每天花1-2小时学习新技术
- 关注行业动态(如物联网、边缘计算、AIoT)
七、总结
你现在最重要的任务是:从“理论”走向“实践”,从“空白”走向“有项目”。
如果你能按照上述规划执行,在大三下学期结束前完成一个嵌入式Linux项目,那么你就有足够的竞争力去争取实习甚至工作机会。
八、下一步行动建议(立即开始)
- 选择一个嵌入式Linux项目(如:智能家居网关、工业数据采集器)
- 开始学习Linux驱动开发(从字符设备入手)
- 购买一块开发板(如:树莓派、STM32F103、开发板套件)
- 开始写代码、调试、记录日志、整理文档
- 每周更新一次项目进展(可以用博客或GitHub)
如果你愿意,我可以帮你定制一份详细的嵌入式Linux项目计划书,包括技术选型、开发步骤、测试方案等。欢迎继续提问!
解决 无用评论 打赏 举报