嵌入式Linux内核/驱动开发学习经验分享

时间:2021-07-19 18:42:34
                                       Every one can cook!     
   本人从在校学习软件开发,MaxWit参加培训后,就职于一家知名半导体公司从事嵌入式软件开发,有些经验和感悟,不知道能不能给你或其他朋友一些启发:)
    1、C语言根基要相当扎实,掌握程序语言的本质。网上有一份C语言基础测试题( www.maxwit.com/msg.php/40.html,把其中的*改成.),要学嵌入式,建议先过这一关。
    2、掌握进程/线程编程、文件操作、系统调用等app开发的基本技能,比如:WaitForSingleObject, pthread_mutex_lock等。
    3、掌握嵌入式系统构建。这一步也是基础,不难但非常有趣且综合性强,能非常有效地为后面的学习比较全面地打下基础。
    4、学会汇编语言程序,不要求很深,能把你平常用C语言写的小程序翻译成汇编就够了(BTW,推荐学习ARM汇编,而不是X86)。掌握汇编有助于透彻地理解C语言和体系结构;另外,一流企业,特别是芯片公司中,有不少这种高级的需求;还有,若要看懂操作系统内核中memory management和thread schedule的关键代码,也必须懂汇编。
    5、学习ARM体系结构及Bootloader开发,结合Bootloader学习ARM体系结构,可以降低学习体系结构的难度,同时还增强了实战和应用能力。推荐一个开源项目:g-bios,chinaunix上专门设有“g-bios”版块,里有有很多热心的牛人会帮你解决问题。
    6、学习设备驱动开发。设备驱动开发不属于前沿技术,初学者往往以为驱动难度很大,其实不然。驱动开发虽不属于核心技术,但对理解硬件和OS内核有很大的帮助,另外,毕业后就业面宽,薪资比较高。
    7、有上面这些步骤和过程之后,可以进入到第7步——OS内核的研究,这是一般自学者所能达到的最高境界了,这一步主要是研究OS内核中最核心部分:memory management和process/thread schedule。《Linux内核情景分析》以及《Windows内核情景分析》等书可能对你有帮助(只可惜前者已经有点过时了),然后结合Linux等开源OS的内核中相关源码,如buddy and slub, paging on demand, preemptive schedule等。
    8、...
    当然,对在校生,可能很难走完以上所有步骤,但没有关系,毕业后继续学啊,只要有恒心!
    一路走来,有很多感悟,但一个键盘很难细说。MaxWit讲坛每个周末都有公益讲座,由MaxWit魔鬼训练营的学员发起,是面向嵌入式开发的专业讲座,涵盖ARM/X86体系结构、Bootloader开发、Linux内核/驱动、新开源操作系统开发等领域,以及嵌入式学习入门讲座,如果方便,可以去听听,face-to-face的讨论的效果最好。
    “为之而难者亦易矣”,不要多想,步步为营地去学,你一定行!

6 个解决方案

#1


牛人,顶上!

#2


http://zhidao.baidu.com/question/189497375.html?si=8

培训班竞争激烈啊,训练营好听些

#3


有空得冲冲电了

#4


上边的七条路不错,亲亲我的bootloader和ARM汇编。

#5


很不错的引导啊~

#6


看来的确有很长的路要走哇

#1


牛人,顶上!

#2


http://zhidao.baidu.com/question/189497375.html?si=8

培训班竞争激烈啊,训练营好听些

#3


有空得冲冲电了

#4


上边的七条路不错,亲亲我的bootloader和ARM汇编。

#5


很不错的引导啊~

#6


看来的确有很长的路要走哇