打印
[嵌入式linux]

嵌入式开发和软件开发哪个更有前途?

[复制链接]
3779|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hqyjcdzx|  楼主 | 2022-1-20 14:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

嵌入式开发门槛高,涉及的知识面广,既要求懂硬件,又必须能写软件,而软硬件涉及的知识体系却又是异常的庞大;并且学习这些短期内看不到成绩,需要**数年,执着在一个领域深耕。

具备基本的电路知识,了解常用元器件、芯片,能看懂原理图,作为嵌入式软件开发人员也必须懂一些硬件设计方面的知识;

具备一定的MCU设计与应用能力,从单片机到ARM再到DSP,能够根据客户要求设计产品;掌握至少一种单片机的编程与使用,比如常见的STM32,后期可以涉猎FPGA

学习C语言,掌握基本的数据类型、指针、结构体等;了解基本的MCU外围模块,SPI、I2C、UART、GPIO、ADC、PWM、Timer、FLASH等原理,能根据硬件原理以及芯片手册编写裸机设备驱动程序;掌握常用工业通讯协议比如CAN、Modbus等;

学习至少一种操作系统,包括但不限于uCOS、FreeRTOS、RT-Thread、Vxworks等,并且一定要学习嵌入式linux的使用与编程,搞明白多任务调度、信号量、邮箱等的原理与使用;

学习linux平台下的设备驱动程序设计,掌握字符设备、块设备、网络设备的驱动框架,并能够熟练设计这些设备驱动,比如ADC、UART、SPI、GPIO、Camera等等,视频驱动框架一定要搞懂V4L2;

学习GUI设计,具备基本的嵌入式产品GUI设计能力,可以学习Qt,它的跨平台特性很适合嵌入式开发;当然也可以转到App设计开发;

学习多线程编程,搞明白线程池原理并应用到实际产品中;具备高并发网络通信编程能力,熟练掌握epoll以及libevent的使用和设计;

掌握至少一种数据库编程能力,嵌入式可以学习SQlite;

掌握C/C++编程语言,可以设计linux平台下的应用程序以及后台服务程序,并涉猎其他编程语言,可以学习Python;

修炼内功,学好数学,学习各种编程算法,掌握常用数据结构以及算法的原理和实现,链表、队列、排序、查找等;掌握常用滤波算法及其实现,比如一阶互补滤波、卡尔曼滤波等;掌握PID原理与算法实现;

以上即是嵌入式软件开发的路线,当然不一定适合每个人,但总体来讲掌握这些对以后的进一步发展有很大帮助。

嵌入式软件开发人员的从业范围也是异常的庞大,小到家用电器,大到工业航天设备等都有嵌入式的存在。比如手机、电视、冰箱,比如航天飞机、通信卫星、人工智能、四轴飞行器、移动机器人、无人驾驶、激光雷达、智慧医疗、医疗仪器、可穿戴设备、物联网等,也包括一些工业嵌入式产品,比如电力设备、新能源设备、汽车、发电、通讯等等,可以说只要需要微处理器的地方都离不开嵌入式。

对于嵌入式软件开发来讲,懂得必须要多,但更要专;要做T字形人才,在一个领域深耕,才能有好的发展,切勿浅尝辄止,好高骛远。

要找到自己的兴趣点,喜欢四轴飞行器,那就在飞行控制算法方面做深入研究;

喜欢图像处理,那就在图像处理算法方面多深入研究;

喜欢人工智能,那就在机器学习、深度学习方面做深入研究;

喜欢汽车电子,那就在汽车领域深入研究;

总之,嵌入式不是一蹴而就,需要数年的**与执着,要想在嵌入式任何一个领域精进,都不是一件容易的事。

选一个方向,沉下心来,做就是了。


使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

143

主题

161

帖子

1

粉丝