嵌入式领域里,菜鸟常苦恼先学单片机还是Linux。虽然三者本质差别很大,选对方向能少走好多弯路。

先看硬件资源:单片机像STM32这类Cortex-M构架的,显存几十到几百MHz,显存几KB到几MB,储存空间几KB到几MB,集成GPIO、ADC、定时器等外设,帧率极低能电板供电,实时性强;Linux系统用Cortex-A构架linux移植论坛,显存几百MHz到几GHz,显存几十MB到几GB,储存空间GB级,需外接外设,帧率高,实时性受系统调度影响。诸如智能家饰项目里,锁具和传感用单片机做实时控制,网段用Linux处理网路通讯,二者各司其职。

Linux嵌入式开发入门_linux移植论坛_单片机学习路线

软件复杂度也不同:单片机多是裸机编程或轻量级RTOS,直接操作硬件寄存器,程序结构简单,用Keil、IAR等IDE开发,调试能直接观察硬件行为;Linux有完整操作系统,包含内核、文件系统、系统服务,硬件访问通过驱动层具象,支持多进程、内存管理,开发要学交叉编译、远程调试,调试涉及系统级问题,复杂度高。

应用场景分得更清:单片机适宜实时控制要求高、资源受限、成本敏感的场景,例如工业仪表、消费电子传感、低功耗电池设备;Linux适宜须要复杂人机交互、强大网路功能、多媒体处理的系统,例如智能摄像头、智能耳机、物联网网段。

单片机学习路线_Linux嵌入式开发入门_linux移植论坛

对菜鸟来说,大多建议先学单片机。由于单片机系统简单,从照亮LED到控制传感,很快能看见成果,这些成就感能支撑继续学下去。例如好多人第一次用代码让LED闪动时,彻夜难眠的激动感,是坚持学下去的动力。并且单片机开发要直接与硬件打交道,例如设置GPIO寄存器位控制引脚高低电平,调试I2C通讯时用示波器看总线上的时序讯号,这种能帮你完善数字电路、通信合同等硬件基础知识,理解软硬件交互的底层逻辑。等把握了单片机的外设(例如GPIO、中断、I2C、SPI)和RTOS,再学Linux驱动开发,会更容易理解驱动程序和硬件具象层的概念——比如晓得GPIO驱动是怎样封装寄存器操作的,这些过渡很自然。

其实,也有特殊情况适宜先学Linux:假如已有较强的C/C++或操作系统基础,或则明晰要做智能耳机这类必将基于Linux的产品,又或则对直接操作硬件不感兴趣,更倾向应用层开发,再或则团队里有硬件专家负责底层,那可以直接学Linux。但即使这样,了解些单片机知识也有用处,例如调试Linux驱动时,能更快定位硬件相关的问题。

linux移植论坛_单片机学习路线_Linux嵌入式开发入门

Linux嵌入式开发入门_单片机学习路线_linux移植论坛

职业发展上,单片机岗位分布更广,大城市和经济发达的小城市都有需求linux版qq,例如电器控制、工业设备;Linux岗位多集中在一二线城市,例如智能终端、物联网平台。单片机适宜喜欢捣鼓电路板、调试外设、和寄存器打交道的人,学习成本低,入门顺溜,后期能做方案订制、开公司接项目;Linux适宜偏软件、对系统级开发感兴趣的人,但须要较强的底层理解和项目经验,跨专业的人若果没基础,容易卡在内核机制、驱动调试上。

Linux嵌入式开发入门_linux移植论坛_单片机学习路线

虽然,嵌入式本就是软硬件结合的活儿,厉害的工程师多少都懂点两侧的知识。但前期别贪心,选准一个方向扎进去:学单片机就选STM32,练寄存器操作、RTOS(例如FreeRTOS)、低帧率设计;学Linux就啃系统移植、驱动开发,用Ubuntu练交叉编译,了解内核显存分配和调度机制。等工作后接触不同项目,知识自然会积累上去。

至于嵌入式、Linux和FPGA的均衡发展,没必要强行精通——嵌入式作为核心,Linux学与嵌入式相关的部份(例如系统移植、设备驱动),FPGA找有专长的伙伴合作就行。例如做智能视频处理系统linux移植论坛,FPGA负责实时视频预处理(例如解码、图像提高),Linux管系统资源、应用程序和网路交互,嵌入式协调整体硬件控制,这样既发挥各自优势linux格式化硬盘,又不用样样都精。

Linux嵌入式开发入门_单片机学习路线_linux移植论坛

Tagged:
Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

发表回复