Everyonecancook!
本人从在校学习软件开发,MaxWit出席培训后,就职于一家著名半导体公司从事嵌入式软件开发,有些经验和感受,不晓得能不能给你或其他同学一些启发:)
1、C语言根基要相当扎实,把握程序语言的本质。网上有一份C语言基础测试题(,把其中的*改成.),要学嵌入式,建议先过这一关。
2、掌握进程/线程编程、文件操作、系统调用等app开发的基本技能,例如:WaitForSingleObject,pthread_mutex_lock等。
3、掌握嵌入式系统完善。这一步也是基础,不难但十分有趣且综合性强,能十分有效地为旁边的学习比较全面地打下基础。
4、学会汇编语言程序,不要求很深,能把你平时用C语言写的小程序翻译成汇编就够了(BTW嵌入式linux驱动程序实战开发,推荐学习ARM汇编,而不是X86)。把握汇编有助于透彻地理解C语言和体系结构;另外,一流企业,非常是芯片公司中百度网盘LINUX,有不少此类中级的需求;还有,若要读懂操作系统内核中memorymanagement和threadschedule的关键代码,也必须懂汇编。
5、学习ARM体系结构及Bootloader开发,结合Bootloader学习ARM体系结构,可以减少学习体系结构的难度,同时还提高了实战和应用能力。推荐一个开源项目:g-bios,chinaunix上专门设有“g-bios”版块,里有有好多热心的牛人会帮你解决问题。
6、学习设备驱动开发。设备驱动开发不属于前沿技术,初学者常常以为驱动难度很大,当然不然。驱动开发虽不属于核心技术,但对理解硬件和OS内核有很大的帮助,另外,结业后就业面宽linux社区,工资比较高。
7、有里面那些步骤和过程以后,可以步入到第7步——OS内核的研究,这是通常自学者所能达到的最高境界了,这一步主要是研究OS内核中最核心部份:memorymanagement和process/threadschedule。《Linux内核情境剖析》以及《Windows内核情境剖析》等书可能对你有帮助(只可惜后者早已有点过时了),之后结合Linux等开源OS的内核中相关源码,如buddyandslub,pagingondemand,preemptiveschedule等。
8、...
其实,对在校生,可能很难走完以上所有步骤,但没有关系,结业后继续学啊嵌入式linux驱动程序实战开发,只要有恒心!
一路走来,有好多感受,但一个按键很难细说。MaxWit讲堂每位假期都有公益讲堂,由MaxWit魔鬼训练营的学员发起,是面向嵌入式开发的专业讲堂,囊括ARM/X86体系结构、Bootloader开发、Linux内核/驱动、新开源操作系统开发等领域,以及嵌入式学习入门讲堂,假如便捷,可以去听听,face-to-face的讨论的疗效最好。
“为之而难者亦易矣”,不要多想,步步为营地去学,你一定行!