嵌入式微控制器
问题提到的嵌入式微控制器一般是指51、Cortex M系列(如STM32)、TI MSP430等,这类微控制器工作频率较低(一般在200Mhz以内),内部集成小容量SRAM和Flash 。 因此,一颗芯片相当于一台完整的微型计算机,包括CPU、内存和硬盘。 它们的主要优点是成本低、实时性强、开发简单、相对容易学习。 可以直接用C语言开发。 主要的交互方式有按钮、LED、串口、SPI和一些简单的低分辨率屏幕。
这类单片机的应用范围非常广泛。 具体包括:空调、冰箱、洗衣机、电磁炉、电饭锅、扫地机器人等各种大小家电的主控芯片都属于此类。 当然,还有一些高端玩具、蓝牙音箱、儿童手表、医疗设备、无人机、工业控制以及各类传感器等也需要此类单片机进行主控。
Linux嵌入式
对于Linux嵌入式系统,其对应的处理器一般为ARM Cortex-A系列等,主频一般在500MHz以上。 这类处理器需要外接大容量SDRAM(相当于电脑内存)和NVM(EMMC或UFS,相当于电脑硬盘)。 其优点是Linux系统强大的性能和可移植性。 Linux系统上的一切,比如网口、USB、音频、HDMI显示等都可以直接调用,非常方便、功能强大。 当然,缺点也很明显:成本高(只需一颗存储芯片的价格就可以购买多个微控制器)、电路设计复杂(从四层PCB开始)。 另外,由于应用程序是由系统调度的,因此实时性较差。
Linux嵌入式系统的应用领域并不像单片机那么广泛。 我们平时接触到的产品有:平板电脑、手机、大型汽车主控屏等。
发展差异
如果只是开发Linux应用程序,我个人感觉和开发单片机程序难度差不多。 它们之间的主要区别在于Linux应用程序通过读写文件来控制所有外设。 这种类型的开发实际上更像是纯粹的软件编程。 单片机通过操作寄存器来直接控制外设,这需要对CPU有很好的了解和一定的硬件技能。
两者在实时性能方面也存在较大差异。 比如你想打开一个LED,如果你用的是单片机,只要在对应的IO口写一个1就可以了。 整个操作在1us内完成。 在Linux系统中,需要打开IO对应的文件,然后向文件中写入值,最后关闭文件。 整个操作快则几十us,慢则几ms。 因此,当实时性要求较高时,微控制器仍然是首选。
推荐学习顺序
1、单片机程序开发
2. 微控制器+RTOS
3.Linux应用程序开发
4.Linux驱动开发
一般来说,如果你本科毕业,精通前两部分,然后了解一些PCB设计,找到好工作是没有问题的。 如果你想追求更高的东西,你可以学第三部分,不会很难。 如果你想成为高级专家,还可以看第四部分,尤其是复杂的驱动开发。
暂时先写这么多,以后再更新。