俗话说,万事开头难。刚开始的时候,你是否不知道从哪里开始?在网上查资料的时候,被一堆新名词弄得眼花缭乱。去图书馆看书的时候,找不到方向?一会儿是Linux,一会儿是uboot。不知所措,不知道从哪里开始?
现在就跟随我来学习如何设计一份嵌入式工程师的实习日记吧!
总之从ARM基础到裸机编程,从到Linux,从Linux基础命令到shell编程,从u-boot到文件系统,最后到现在的Linux驱动。从简单到复杂,从基础到高级基本都是以此为基础的。
第一阶段:嵌入式硬件基础及裸机程序开发
1.知识点:
(1)ARM处理器基础知识,包括工作模式、寄存器、中断与异常、寻址方式、汇编指令集
(2)熟悉ADS集成开发环境,为裸机程序开发做好准备
(3)裸机程序开发:LED、串口、LCD、触摸屏、IIC、IIS、DMA等。
2.流程及目的:
这一阶段的学习主要目的是熟悉嵌入式硬件,为以后学习Linux驱动打下基础。因为嵌入式系统的主要处理器架构是ARM,所以我们会学习ARM的相关知识。先学习基础知识,然后在开发板上进行实践。这一阶段用到的资料主要包括:
(1)《ARM嵌入式基础教程》这本书主要讲ARM的基础知识,这本书讲的是ARM7,但是ARM的基本指令集和模型是一样的。
(2)嵌入式Linux应用开发完全手册本书主要介绍接口模块。裸机实验时需要具备硬件知识。
3.耗时:约两个月。
第二阶段:Linux 基础和 Shell 编程
1.知识点:
(1)Linux基础知识
(二)Linux的安装与使用
(3)常用Linux命令
(4)vi 的使用
(5)简单shell编程
2.流程及目的:
这个阶段的学习主要是熟悉Linux,安装Linux,了解Linux的基本知识,简单操作,一开始最好在虚拟机上安装Linux,按照推荐安装开发板,按照开发板的说明一步步安装,然后在上面练习各种命令。
这个阶段主要看《鸟哥私房菜谱之Linux学习基础》,这本书有电子版,不用全部看完,主要看前面部分对Linux基础和基本命令的描述,命令只是用来理解的,太多东西要记,以后需要的时候再查。这个阶段主要目的是对Linux有个整体的了解,至少知道一些基本概念,一些基本操作。
3.时间:一个月左右。
第三阶段:Linux应用程序基础开发
1.知识点:
(1)GCC、GDB 和 Make 基础
(2)文件、时间编程
(3)多进程和多线程编程
(4)进程间通信
2.流程及目的:
这一阶段的学习主要是为了了解Linux应用程序的编写和调试,这些也都是基础知识,主要目的是熟悉Linux。熟悉一些应用程序相关的概念,为以后打下基础。《Linux应用程序开发标准教程》这本书对Linux上的应用程序编程讲解的很详细,难度也不大。最经典的《UNIX高级环境编程》讲的比较深入,刚开始读的时候有点吃力,最好从最简单的开始。学了应用程序编程,不一定非要搞应用程序,对于从事嵌入式Linux行业的人来说,这是必备的基本功。
3. 时间:约一个月
第四阶段:操作系统学习
1.知识点:
(1)嵌入式实时操作系统概念及基础知识
(2)阅读操作系统源代码
(3)移植
(4)操作系统应用程序编程
2.流程及目的:
此阶段的学习主要是了解嵌入式实时操作系统的基础知识。由于是开源的,可以研究其代码。对操作系统的任务调度、资源管理等会有一个直观的了解。而且阅读其源代码可以提高编程能力,规范自己的编程习惯。虽然提供了移植的版本,但自己实际移植一下才能有更深刻的理解。
这个操作系统比较简单,所以应用程序的编写很重要,在上面实现几个功能对理解这个系统会有帮助,这个阶段我主要读了邵贝贝翻译的作者写的《嵌入式实时控制器操作系统uCOS-II》这本书,里面有对操作系统源代码的详细分析,读完这本书之后会对它有很深的理解,这个阶段主要的目的是了解操作系统的知识,比如任务调度,并发等,另外一个目的是提高自己的编程能力,因为读一本操作系统原理的书比较枯燥,所以我觉得读一本操作系统的源代码比读一千本原理书划算多了。
3. 时间:约一个月
第五阶段:学习
1.知识点:
(1)基础知识
(2)u-boot基础知识及命令
(3)u-boot移植
2.流程及目的:
它是Linux嵌入式系统中不可缺少的一部分。这一阶段的学习主要是了解u-boot的作用和常识。一开始我们学习了u-boot的各种命令的使用。然后分析了u-boot的启动流程以及u-boot内核的加载过程。然后按照别人的步骤一步步移植内核,多做几次就熟悉了这个过程。然后在熟悉整个u-boot的基础上,自己完成u-boot的移植并加入自己的修改。这一阶段主要参考资料是光盘自带的u-boot移植参考手册和网上的一些文章。个人感觉关于u-boot移植的网上资源还是比较丰富的。
3. 时间:约一个月
第六阶段:文件系统学习
1.知识点:
(1)Linux文件系统的种类及功能
(2)熟悉使用方法及Linux系统启动流程
(3)建立自己的根文件系统
2.流程及目的:
文件系统也是Linux嵌入式系统中不可缺少的一部分。这一阶段的学习主要目的是熟悉根文件系统的作用和基本知识,并构建自己的根文件系统。本书详细讲解了嵌入式Linux的所有元素,包括文件系统。这里我主要讲解文件系统。我也参考了网上的一些文章。在这里你必须先熟悉一些基本的Linux文件系统。然后学习如何使用和启动Linux,最后通过参考别人的一步步指导来构建自己的文件系统。
3.时间:约半个月
第七阶段:嵌入式图形界面GUI
1.知识点:
(1)嵌入式图形界面(GUI)的类型和特点
(2)基础知识
(3)移植与编程
2.流程及目的:
嵌入式图形界面GUI作为嵌入式上层系统也是需要了解的,这里我只学了下因为QT需要C++的知识,而我没学过C++所以只看了下相关知识,这一阶段的目的主要是熟悉嵌入式图形界面的开发流程,因为以后不打算开发应用程序了。
只是熟悉一些嵌入式系统方面的知识,这里只需要把hello程序移植到板子上,其他的不需要了解,通过移植Linux上运行的软件和函数库,对程序运行原理,编译器会有全新的认识。
3.时间:约半个月
阶段 8:Linux 驱动程序基础
1.知识点:
(1)读完《LINUX设备驱动程序》后,应该阅读除网络驱动程序,tty驱动程序,块驱动程序之外的所有章节。
(2)对实验书中的所有例程,都应认真分析结果,理解相关的知识点。
(3)即使是例子,编程习惯也要统一,文档要规范。
2. 流程和目的
这一阶段的目的是为Linux驱动打下基础。《LINUX 》(第3版)又名ldd3,是Linux驱动最经典的书,一定要看,而且要多看几遍。我看了好几遍,第一遍看得入迷,觉得晦涩难懂。但多看几遍之后,感觉豁然开朗。看完书之后,我又用书上的例子进行实验。
3.时间:约两个月
第九阶段:Linux驱动实践
1.知识点:
(1)了解LED驱动各种字符设备的注册、实现,掌握IO操作流程。
(2)掌握通过驱动程序实现中断的基本方法。
(3)掌握PWM驱动器。
(4)掌握通过触摸屏驱动程序实现输入设备模型的实现。
(5)掌握ADC驱动器的设计
(6)掌握看门狗、RTC驱动程序的设计
(7)通过LCD驱动程序分析设备模型的实现。
2.流程及目的:
这一阶段的学习主要目的是掌握简单驱动和ldd3实际实现的区别,分析一些Linux子系统。通过这一阶段的学习,可以对Linux驱动有更深的理解。并且锻炼自己阅读海量代码的能力。这一阶段的主要工作就是读代码,做实验,读代码,做实验,通过现象学习知识。
3. 时间:约一个月
10
第十阶段:深入了解Linux内核和USB子系统研究
完成前面九个阶段之后,我感觉自己已经掌握了嵌入式Linux。于是乎,又要开始筹划第十个阶段了。这个阶段基本上决定了我以后的发展方向。因为嵌入式系统的标准就是有USB接口,所以学习USB相关的知识竞争非常激烈。搞驱动的人,对内核应该有一定的了解,所以《深入理解Linux内核》还是很有必要的。
这一阶段主要是学习USB协议,阅读Linux USB子系统的全部代码,通过阅读代码加深对USB的理解。然后熟悉各种USB协议,编写和移植USB驱动。USB是我确定的方向,因为什么都想专心,什么都做不好,所以决定学习USB,决定以后从事嵌入式USB的工作,这一阶段的学习正在进行中,目前在Linux下浏览USB子系统的浩瀚代码。
扫一扫在手机端查看
-
Tags : 驱动程序_适合初学者的嵌入式Linux计划!
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。