Alex ander bro 2026-01-13 17:33 采纳率: 0%
浏览 7

嵌入式软件工程师(linux方向)

双非二本计算机类专业,想要走嵌入式软件工程师这个岗位,但是没有实习,现在想要尽快做项目,并且实践巩固自己的理论知识,嵌入式软件工程师应该主要包含mcu+rtos类以及嵌入式linux类这两个方向吧,目前已经看完了c,c++,linux常用命令以及shell编程,linux系统编程(比如文件io、多进程多线程编程等,linux网络编程),还学了qt。mcu+rtos我一点都没写,硬件基础也没学,在大一就学了数电,嵌入式linux驱动方面也一点的没学,现在不知道咋办了,因为嵌入式领域的知识体系太庞大了,现在大三我接下来都不知道咋办,有没有行业引路人们帮学弟简单提个规划吧,实在不知道咋办了,我连一份实习经历都没有呢,大三下学期要实习,还是暑假实习呢?我也不知道?

  • 写回答

2条回答 默认 最新

  • 檀越@新空间 2026-01-13 17:35
    关注

    下午好🌅🌅🌅
    本答案参考通义千问

    你现在的情况是:双非二本计算机专业,想转行做嵌入式软件工程师(Linux方向),但目前没有实习、项目经验,也没有MCU+RTOS和Linux驱动的基础知识。这是一个很常见的问题,尤其是对于大三的学生来说,时间紧迫,但只要合理规划,仍然可以逆袭。


    一、明确目标岗位

    嵌入式软件工程师主要分为两个方向:

    1. MCU + RTOS方向(如STM32、NXP、TI等)
    2. 嵌入式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项目,那么你就有足够的竞争力去争取实习甚至工作机会。


    八、下一步行动建议(立即开始)

    1. 选择一个嵌入式Linux项目(如:智能家居网关、工业数据采集器)
    2. 开始学习Linux驱动开发(从字符设备入手)
    3. 购买一块开发板(如:树莓派、STM32F103、开发板套件)
    4. 开始写代码、调试、记录日志、整理文档
    5. 每周更新一次项目进展(可以用博客或GitHub)

    如果你愿意,我可以帮你定制一份详细的嵌入式Linux项目计划书,包括技术选型、开发步骤、测试方案等。欢迎继续提问!

    评论

报告相同问题?

问题事件

  • 创建了问题 1月13日