« 上一篇下一篇 »

专业知识体系完善

一、协议类

1、USB协议:

常用的HID协议,可以用做通信,如鼠标设备、键盘设备。

常用的MSC协议,大容量存储,一般就是U盘功能。

AUDIO协议,这个其实也是常用的,用于USB音频数据的传输,如声卡设备。

2、TCP/IP协议:

目前互联网使用的网络协议,这个比较复杂,内容也多,不说要深入的理解,但起码要有个整体性的了解,比如TCP协议、UDP协议、DHCP动态主机配置协议这些常用的,要比较的了解其原理。

另外,还有LWIP这种协议栈,上面的是协议原理,而LWIP是封装了TCP/IP协议的一个小型嵌入式协议栈,因为在小的嵌入式系统中,用的还比较多,所以也要熟悉,比如移植、连通性测试、性能测试等。

二、系统类

1、FREERTOS:

这个因为最近在用,还算是一个比较不熟的东西,虽然以前用过uCOS,但是这个毕竟不一样,所以还是要多看看资料,熟悉它的使用。

2、LINUX:

这个是个趋势,目前市面上嵌入式软件岗,超过半数都要求会LINUX,所以这个东西是肯定要掌握的,不然以后的路不好走。不过这个可以押后,是一个长期性的学习计划,目前近期的,还是先熟悉FREERTOS。

三、音频技术

主要是要了解下数字音频技术的原理。

四、GUI类

1、LVGL:

这个是个小型的嵌入式GUI库,实现之后的效果确实比单纯的用驱动来操作屏幕会好看许多,而且现在在用,所以起码基本的使用要会,比如移植、使用。

2、有时间的话可以了解下STM32官方的那个GUI库。

五、语言与数据结构类

1、一个是感觉C语言的书很久没看了,尤其是涉及到指针那一块的东西,有许多的用法自己都不是很熟悉,平时用也是要验证了才觉得是对的,所以说这个基础理论还是不够扎实,按理来说,C这个东西,是要研究的很深的。后面可以重新看看《C和指针》那本书,《C语言的科学和艺术》这本是英文,读起来要慢得多,不过有耐心的话其实还是能够看下去的。

2、数据结构。这个东西很重要,许多操作系统或者是协议栈的代码库,都大量的用到了数据结构,尤其是循环队列、循环链表这些知识。

六、电子电路类

嵌入式编程,终究是在硬件基础上跑的,所以硬件知识越多,编程效率也就越高。有时间的话其实可以多看看硬件的理论,可以少看模拟的,但是数字的也有很多内容,诸如ADC、ADC这些器件,什么满量程电压、计算精度等等,有一些概念性的东西如果不搞明白,做个东西你连对错你都没法判断。

七、内核类

因为目前用到的器件,主要指MCU这块,大都是CM3、CM4内核的,这个内核是基于ARM架构的,而且编程过程中有些知识点,确实是涉及到内核的,比如说STM32的中断向量表偏移地址为啥要是0x200的倍数,这个在内核指南中就有解释,所以,内核这方面的东西还是要看看。


当然,这么多东西,别说一年了,给个三年五年都不一定能够有所进步,但是这是一个整体性的知识体系结构,就是说,如果专门走嵌入式软件这条路,我觉得这几项基本能够囊括未来十年内的大的技术知识了,当然,如果换了行业,或者是用些特别的器件做些特别的东西那是另说,这些毕竟是些通用性的技术知识。

短期内的话,还是着眼于工作上面的知识漏洞补全,如USB键盘码、USB MSC驱动、LWIP的学习、FREERTOS的学习、LVGL的学习、C语言指针方面的深入学习、网络基础知识(概念、常用测试工具)的学习,就这些,其他的后面再说。