通过这段时间的学习,能掌握简单字符设备的开发流程及其编程思想。
基础:1.对裸机的工作原理理解,对寄存器的掌握,经常查阅头文件,尤其是硬件相关的头文件内核,是很有必要的
2.对内核基础运行机制,尤其是同步,中断的理解
3.对数据结构,对传址方式的掌握,对函数指针的了解。
4.对linux设备模型的学习,只有站到对模型的高度,才能有深层次的理解,
不要纠结于具体的数据结构的含义,从整体上,从流程上把握,必须结合源代码,不要空谈理论。
5.对一般字符设备,混杂字符设备,平台字符设备模型的理解。
6.主要涉及到HELLO,LED,PWM,按键,ADC,触摸屏,RTC,WDT等设备
7.遵循内核规范,有固定的编写模式。
8,坚持查看内核源代码,在内核源代码中能看出来,是怎样一步一步实现内部机制的。
9,结合用户手册,对嵌入式的整个开发流程有个全面了解,站在一定的高度,才会对问题有深入的了解。
10,每次学习一种设备驱动之前,可以参考前辈的博文,PPT,或者相关视频有个模糊概念,整体把握。
11.重点不在于具体的某些东西,而在于一种思想,一种思路。
12.学习->总结->应用
总结:
在嵌入式学习过程中,我们大部分是孤军奋战,缺乏交流,东西又过于杂乱,会陷入一种只见树木,不见森林的困境。顿时失去了单片机的那种俯瞰一切的高度。不能通盘考虑一个问题。这是一个长期的学习过程,但是又必须要给我们不断的刺激,不断的成就感,才能让我们有信心沿着这条路走下去。作为一个硬件出身的,重要的就是利用对硬件的熟悉程度,不要太纠结于自己不懂的东西,不要沉溺于内核之中,有所了解,就要跳出来,在驱动的学习之中,寻找自我价值。在对底层的全面了解之中,对系统有所感悟。
当然在这之前,很多准备工作是要做的,作为一个非计算机专业出身的工程师,往往会缺乏,对C语言的深入理解,对软件思想的缺乏,对数据结构的茫然,对计算机操作系统的极大不理解,尤其是内核运行机制的极大困惑。这是很正常的,但是很多时候,往往会陷入其中,其实,作为嵌入式底层的开发,我们并不需要非常深入的理解,这是一个循序渐进的过程,我们会在驱动的学习,调试过程中,慢慢体会的。
主要参考书籍及资料
《鸟哥的linux私房菜》第三版
《micro2440用户手册》
《mini2440 linux移植开发实战指南》
《嵌入式系统原理及接口技术》——刘彦文
《C程序设计》——谭浩强
《C和指针》
《UNIX环境高级编程》《嵌入式linux应用程序开发标准教程》
《linux设备驱动开发详解》——宋宝华
《linux内核设计与实现》第三版
《linux设备驱动》第三版
《精通linux设备驱动开发》