多语言展示
当前在线:548今日阅读:103今日分享:49

嵌入式驱动开发路上的的认识和理解(一)

大学刚毕业,初来驾到,很多时候因为自身能力限制,找一份合适的工作和合适自己的工作并不是这么容易,这也许就是经常听到长辈们说的“找工难”的一个意境吧!最近由于工作需要,开始自学了嵌入驱动开发,成效不高,不知道对于项目开发帮助如何呢?
工具/原料
1

相关驱动开发基础视频+相关文档

2

开发板+程序调试

3

开发环境:ubuntu12.04

方法/步骤
1

第一部分我把它比作缘分:    在大学的学习中,本人有玩过51单片机,ARM9,ARM11这三块板。说实在的,刚开始接触51时,还真有些莫名的喜欢,感觉终于有可以用来“装大神”的基本东西了,当然,这也是因为大学期间,只对C语言有感觉,其他基本都是60分万岁的心态,哈哈。    回归正题,说实在,51单片机的确是一个步入嵌入式开发的一个很好的敲门砖,对于简单的寄存器操作,程序调试和成熟的开发技术的支持,这些都是我们很好利用的资源,也正是因此,让我认识到,科技改变生活原来可以这么的简单;有了基本对模块控制的认识和基础加上自身把握C语言流的基础,我开始挑战上了操作系统的嵌入式开发;

2

第二部分我把它比作磨合:    终于,在磕磕碰碰中,终于有了自己的一块ARM9开发板,开始了“逗比”的自学生活,让我很感动的是,那时我们班有了嵌入式开发三剑客这个名词,然而就在今天,孤独的路上,每每想起,心中还是那么温暖,也就这样又磕磕碰碰的继续下去;    在我看来,对于学习新的东西,有2个非常期,一个是刚开始入门,一个便是开始深入研究的这2个节点吧。    在接触ARM9后,我终于在嵌入式开发的路上,对于LINUX操作系统和嵌入式硬件有了基本的架构,当然遗憾的是,我的语言开发能力远远没有达到我预期的目标,虽然现在也还在努力;

3

第三部分我把它比作实战:    如今开始工作了,可以自由学习的时间越来越来少,工作中,任务大于你的计划,虽然这都是可调度的,但是这就要求你是否有过硬的硬件基础,不然只能“奔溃”的节奏了;对于开发的我们加班也许成了习以为常的事情,但是,我们应该扪心自问,加班是否在获取我们白天无法获得的能力呢?还是说只是为了完成工作上的任务。    所以在这里,我有几个建议给大家:1)请合理安排你的工作和学习计划,并竭尽全力去实现它,因为你的生命是有限的;2)请爱上你的工作,因为快乐的工作也是这样,不快乐工作,有可能你会失业并且时间和效率不成理想的比例,还有因为你父母的生命是有限的;3)知道你工作的目的是为了什么?请将你未来的路给看清楚,没有人会比你自己更加清楚,也不会有任何人比你更加能超越现在的自己,还有的是,也许你的身体也再这么的年轻,因为你的精力也是有限的;

4

在啰嗦了这么多的感悟,开始说说这段时间我对驱动开发的一些学习情况吧。因为一开始是从IIC总线开始入手的,所以从网上获得了这张驱动的一个基本的架构,在这里我就不具体讲述驱动开发的知识点了,以后我会陆续将经验发布出来。

5

刚开始接触驱动的时候,我们会有个疑惑,为什么有了应用层开发,为什么还需要驱动层这个架构呢?又或许在没有一个对为什么要用操作系统这个清晰想法之前,会想为什么不直接裸机好了呢?    之所以为什么,就是因为一个管理和一个开发的理由,当然这也是我的基本理解。人总是有惰性的,不然我们还在洞里住着,时不时用大棒子敲晕几个野生雌性人类回来生猴子呢,o(∩_∩)o 哈哈

6

所以,我们应该先把握好整个嵌入式系统架构,然后再进入驱动架构的认识,当然学习方法人各有一。在我的认识中,由于之前接触比较多应用层的程序开发,明白当我们需要调用底层硬件驱动时,必须找到对应设备的设备节点,然后通过基本的文件操作,将参数通过设备节点传递给底层。    然而,由于应用层和驱动层所处的内存空间并不是一致的,所以从用户空间传递下来的缓冲数据必须经过相应的转换才能够使驱动程序进行调用。    当然这也是一种合作机制,毕竟在这个大数据时代,任何机制离开了合作和统一这微妙的关系都是空中楼阁那般脆弱的。    作为感想的开头,我将驱动层和应用层之间的关系理解成一种特殊的API组织形式,之所以这么特殊,在一次感想中我再来简述我的理解吧。

注意事项

孤单的路上寻找方向,快乐也许就并不那么难获取了吧

推荐信息