首页 / 行业
嵌入式Linux驱动底层开发工程师的建议学习路线
2019-06-26 17:03:00
不请自来。做电赛出身的程序猿一名,目前从事嵌入式Linux驱动开发。还有单片机从51到意法Ti都做过,DSP只用过TI的,主要是在开关电源控制方面的应用。建议学习路线:
1 学习51单片机,这个阶段你只需要跟着郭天翔的视频去学,只要求实现功能,不求甚解。但建议能够提出问题,比如“为什么往IO控制寄存器写入特定值能点亮LED灯?”“IO口的电路结构是什么样子的?”“什么是上拉下啦,灌电流拉电流?”,这一阶段主要是熟悉单片机的使用,并且在使用中思考发现问题,还能熟悉一些基本概念。
2 开始查资料看书,看模拟电路数字电路等等,开始去弄明白1中所提出的问题。这时候问题主要集中在电路方面。
3 开始学习STM32,随便买个板子,看原子的书跟着一步步去做。这时候你会遇到很多计算机方面的问题,这时候一边学习教程,一边学习:微机原理,编译原理,操作系统。你要弄清楚ARM架构,弄明白CPU如何取指,译码,执行,知道地址总线,控制总线,数据总线如何工作。要弄明白你编译各个阶段产生的各个文件是什么,什么是分散加载,什么是重定位,什么是代码段,什么是数据段,等等。还要能弄明白CPU如何启动,程序镜像在内存中如何布局。要知道中断的原理,以及现场保护等等。最后你了解了各个知识点之后,转向GCC开发STM32,这时候你如果知识掌握得不错,你应该可以很快地学会编写链接器脚本并且明白每一条语句所代表的含义。
4 开始增强C语言,深入挖掘C语言的各个死角。最好可以做到当你写下一条语句的时候知道编译器会如何处理。还需要数据结构和软件工程,建议最好还要学习一下设计模式。开始学习养成良好的代码风格,开始思考代码的结构。可以说设计模式如果能学好,在往后学习LINUX内核时大有裨益。你会发现LINUX的输入子系统有点像职责链模式,会发现ASOC音频系统有点像模板方法模式。私以为,如果能在两个以上不同方面考察同一种编程思想,你会得到更加深刻的理解,更能领会其精华。
5 认真研读OS方面的书,各个知识点都要弄明白,进程是什么程序是什么线程是什么,竞争死锁优先级反转,虚拟地址空间物理地址空间,用户空间内核空间等等。开始学习ucos,这个没什么可说的,如果在2中能熟练掌握各种知识点,知道CPU如何中断如何保护恢复现场,那么读ucos的源码时候,在原理上就不会有什么疑惑。如果能在4中养成把握代码整体结构的能力并且学习好数据结构和基本的算法,读源码就没有什么障碍。一旦原理弄通了,源码也能读懂,那么吃透ucos就是顺理成章的事情。
6 自己仿照ucos写一个stm32上的实时os出来。
7 进军LINUX。学习LINUX的基本使用,看赵炯那本内核剖析,啃LINUX内核设计与实现,把握总体的内核架构。之后可以学习驱动,看建议陈学松老师的书,弄明白基本的驱动架构和如何编写简单的驱动,认真对待,这里强调一下设备驱动模型。最后啃LINUX内核源码情景分析,上下两册用心读,这里着重强调一下内核中的VFS部分。之后就是看宋宝华老师的书,进一步学习驱动开发。最后。。。。。。。看内核源码看内核源码看内核源码。
8 其它的什么SPI,IIC,什么DMA,都只是技能问题,只要知识学的好,技能想咋点就咋点。
9 暂时没想到其它的了。想到再说
最新内容
手机 |
相关内容
所有遥不可及,终因AI触手可及
所有遥不可及,终因AI触手可及,出行,平台,无人驾驶汽车,导致,人工智能,学习,人类历史上,有许多事物曾被认为是遥不可及的,然而随着科技黑芝麻智能助力亿咖通科技旗下首款
黑芝麻智能助力亿咖通科技旗下首款智能驾驶计算平台成功量产交付,智能驾驶,计算,助力,首款,交付,智能,近年来,智能驾驶技术逐渐成为硅谷:设计师利用生成式 AI 辅助芯片
硅谷:设计师利用生成式 AI 辅助芯片设计,芯片,生成式,硅谷,优化,修改,方法,在硅谷,设计师们正在利用生成式人工智能(AI)来辅助芯片设计阅流智作:一种全新的生成式AI视频制
阅流智作:一种全新的生成式AI视频制作方式,或将颠覆专业视频生产,生成式,全新,视频制作,数据,学习,用户,阅流智作是一种全新的生成式A数据中心如何更快、更经济地利用AI
数据中心如何更快、更经济地利用AI?,经济,数据中心,用于,机器学习,计算,自动化运维,数据中心中使用人工智能(AI)技术可以带来许多好处,嵌入式视觉技术如何赋予机器观察能
嵌入式视觉技术如何赋予机器观察能力,能力,视觉,嵌入式,跟踪,特征,计算,嵌入式视觉技术是一种将人的视觉能力赋予机器的技术。通过慧荣科技Ferri嵌入式存储通过芯驰
慧荣科技Ferri嵌入式存储通过芯驰车载平台认证,车载,认证,平台,嵌入式,车载系统,多种,慧荣科技是一家专注于嵌入式存储技术的公司,其从零基础开始,掌握低代码+ Al 的应
从零基础开始,掌握低代码+ Al 的应用技巧,零基础,方法,框架,工具,深度学习,学习,低代码(Low-Code)是一种通过可视化开发工具和少量手写