请选择 进入手机版 | 继续访问电脑版

Exynos4412/4418/6818/i.MX6开发板俱乐部

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

嵌入式软件开发的发展路线

[复制链接]

57

主题

266

帖子

1932

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1932
发表于 2018-4-17 14:06:12 | 显示全部楼层 |阅读模式
嵌入式开发门槛高,涉及的知识面广,既要求懂硬件,又必须能写软件,而软硬件涉及的知识体系却又是异常的庞大;并且学习这些短期内看不到成绩,需要坚持数年,执着在一个领域深耕。

  • 具备基本的电路知识,了解常用元器件、芯片,能看懂原理图,作为嵌入式软件开发人员也必须懂一些硬件设计方面的知识;
  • 具备一定的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字形人才,在一个领域深耕,才能有好的发展,切勿浅尝辄止,好高骛远。

要找到自己的兴趣点,喜欢无人机,那就在飞行控制算法方面做深入研究;
喜欢图像处理,那就在图像处理算法方面多深入研究;
喜欢人工智能,那就在机器学习、深度学习方面做深入研究;
喜欢汽车电子,那就在汽车领域深入研究;

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

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

回复

使用道具 举报

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

本版积分规则

QQ|手机版|迅为电子 ( 京ICP备12036083号-2

GMT+8, 2019-3-26 00:23 , Processed in 0.072454 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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