来回答;有stm32基础,学嵌入式linux得几年?


除非你有freeRTOS 、RT-Thread 、ucOS 等单片机操作系统的基础,才能加快Linux学习进度。
但搞单片机操作系统,都是用ESP32 ,因为ESP32是双核单片机,原生支持freeRTOS。你首先要有两个以上的核心,操作系统才能调度两个核心轮流工
作,确保至少有一个核心在处理任务,另一个核心在监听。
而STM32单核架构,根本没有多任务处理能力。就算装上操作系统,也只是用轮询和协程实现的障眼法,乍看好像实现了并行,实则是自己骗自己。
STM32学的是什么?
除了寄存器之外,就是Uart、I2C、SPI等通信协议,再深入一点,就是Modbus 、485、Can 等总线协议
这些协议写法都是固定的,完全可以封装成函数,直接调用就完了
所以STM32入行前几个星期的工作,就是写各种通信函数
后来的工作,就是把之前写的函数复制粘贴过来,传几个参数调用一下,直接烧录就完事儿了
STM32相关工作的岗位特点,也决定了在职人员很难往Linux方向进阶。
因为STM32相关岗位的核心技能根本不是编程,而是画板子、焊元件。优先学习方向是AD、Proteus 等电路设计与仿真软件,以及练熟使用电烙铁、焊锡
膏、热风枪。
至于编程,只有刚入行的萌新才写代码,干久了全是复制粘贴。
总之无论如何吧。。。
以上关于STM32的所有一切,跟嵌入式Linux之间,没有任何关系。只跟ARM裸板编程 有关系。
因为ARM裸板本身就可以看成一种性能更强的单片机。
裸板编程存在的唯一价值,就是在新出厂的板子上烧录U-Boot ,再利用U-Boot启动Linux。
装好U-Boot之后,就没机会再碰裸板编程了。
Linux学的是什么?
前期学的是U-boot、Linux内核、以及根文件系统的编译、裁剪、移植。
后面主要是写设备驱动,也就是/dev目录下的文件。
Linux把外接设备分为字符设备、块设备、网络设备三大类。
用Linux驱动硬件,只在于你能不能写出三种驱动,以及是否熟悉设备树、Platform,以及内核的进程调度管理机制。
跟操作寄存器,手写I2C、SPI等等,八竿子也打不着半点关系
#嵌入式 #编程 #嵌入式开发 #嵌入式开发 #深度学习 #STM32单片机 #计算机 #工程师#自动化