从事嵌入式系统的所需要掌握的知识比较广泛,具体分类如下:
1.计算机技术基础
编程语言主要是 C和 C++, GUI程序则可以考虑Qt;数据库主要是 SQLite和MySQL;基础知识主要是数据结构与算法、数字信号处理和计算机网络。
2.系统硬件层
PCB设计软件主要是KiCAD和Altium Designer,基础知识包括电路/PCB设计和ARM、DSP芯片架构和外设。
3.硬件抽象层/中间件
通用设备接口及协议包括USB、TCP/IP、 SPI和I2C等。
4.系统软件层
文件系统包括FAT等,GUI包括STMWin等,实时操作系统包括FreeRTOS和RTEMS等,非实时操作系统包括Linux和WinCE等。
总结:
1)从事嵌入式系统必须有计算机科学基础和算法基础,由于它的涵盖面很广,个人需要结合自己的岗位和行业选定一个制高点,比如linux驱动、电机驱动、图像识别等;
2)从事嵌入式系统必须有电路和PCB设计基础,要熟悉一门EDA软件的使用比如KiCad;
3)由于嵌入式系统兼有软件、硬件和系统集成,在开发过程中一定要高度重视原型的制作,可以简化问题的复杂性;
4)由于linux系统很复杂再加上嵌入式自身的复杂性,没有基础不要轻易尝试嵌入式Linux,可以从Linux系统裁剪编译移植、Linux驱动编写、Linux系统编程三个方面逐步深入,总之Linux是个大系统但是我们要简化它的使用,比如先使用没有MMU的ucLinux。