特 别 声 明 本系列文章bingqingsuimeng著作权所有,转载请注明出处  http://blog.csdn.net/bingqingsuimeng/  

       21世纪不缺什么了?不缺程序员了,不缺屌丝程序员了,满山遍野的程序员,各种培训机构,每个月都有n多个程序员横空出世,他们一代代的替换着那些远离这个行业的人。话说程序员有很多境界,比如像我这种,就属于比较浮躁的程序员,以为自己会的东西不少,其实什么都不会。

       时间长了,发现自己真的什么也没有,哎,难到真的什么也没有嘛?不是,至少屌丝程序员好有一个梦,每天可能还能吃上一块儿蛋糕。

        最近祖国三大军区都有演戏,什么远程弹道导弹,巨浪,东风全上了,俨然要有跟小日本火拼的姿态,趁着还是和平的时候,多吃两块蛋糕吧,不知道明天还有没有机会吃到。

       那时钟管理这边,怎么去拿到那个蛋糕着?

        

        80行 你看见了,那个dev_id其实就是所属设备的name啦

        81行 又套一层,哎,短小又精悍的函数啊。不废话,进入。。

        

        68行 锁住互斥锁,这个互斥锁是全局的,给你好看:

        

        69行根据 那个两个id调用clk_find函数查找我们需要的clk,没什么可说的,直接进入

         

          40行 一个for循环,在clocks这个全局的链表里遍历,所有的锁都链接在上面呢

          42-46行,如果dev_id匹配,那么match+=2

          47-50行,如果con_id匹配,那么match+=1

          如果mach大于零,说明之后有一个匹配上了,如果match=3,两个条件都匹配,这是最完美的情况了,如果不是,那么继续循环吧。

          我们从注释上可以看出,匹配的优先程度是:dev+con > dev only > con only

          好的,返回到clk_get_sys函数

          第70-71  如果没有找到cl设置为NULL

          72行 释放锁

          73行 返回要找的clk

         这个过程也很简单,没有想象的那么复杂。

         呵呵。。时钟时获取到了,有没有兴趣看一下他们的使能,禁止,设置频率的那几个函数?其实也非常简单,他们都是平台相关的,还是以三星的s3c2410为例子看一个函数吧,其它的函数都跟它类似,不用多讲了就,咱们看一个常用的,上代码:

          

          这是一个三星平台的通用函数,其它的,诸如2410,6410等等吧,都是可以用的,因为它与具体的板级脱离开 ,都是用一个函数指针实现的具体操作。 

          90-90行 判断一个clk的有效性,体现出了健壮性函数的一个很好的例子

          92行,你看到了又调用了它本身,分明他妈的是个嵌套嘛,不过你看一个参数,呵呵。。明白了吧,使能一个设备的clock,一定要保定它父设备的clock是使能的啊。

          94-99行 你看到了啊。。使能的时候是要禁止中断的哦,亲。

          97行,直接调用了clk结构中的enable函数,这个是在具体的板级文件中实现的 ,对于咱们这儿就是s3c2410-clock.c,好的,进去看看喽,亲。

          

          你看到了哦,亲,他们的enable函数都指向了同一个函数s3c2410_clkcon_enable,你没有个疑问吗?这个函数好强大哦,什么样的使能它都能处理?进去看看不就知道啦。走你:

          

            呵呵。。有木有恍然大悟?呵呵。。好吧,你成才了。。呵呵。。看到了,就是靠这个控制标志clk->ctrlbit,在写控制器中时钟控制器的相应位来实现的,亲,记得给好评哦,讲的我都累了。

           我歇会儿啊,听听歌。。你可以继续学习了。我得休息下了,睡会儿。哭泣,美女走了!


          

Logo

更多推荐