2014年10月

MacBook笔记本立式支架

一般在家里要看电影时,把本本外接到显示器就可以了,但是本本要是平放的话,就会占用一块地方。那么,竖起来放就可以解决这个问题了。

优点:解放本本占用的一片地方

缺点:

1.不能适配各种尺寸的本本

2.如果有小孩的话,可能比较会有意外发生呢

参考链接:

MacBook立式支架

小叙驱动开发

Tags: none

记得第一次安装驱动程序的时候,各种担心和小心,生怕驱动程序会把电脑硬件搞坏或烧毁。后来,渐渐对驱动的了解,也就释然了一些,但有一个问题一直潜藏内心,驱动程序是如何“驱动”硬件工作的呢?

之后的很长时间,对驱动开发的那些人都怀有无限的膜拜。最于在月黑风高的夜晚,拆开DELL INSPIRON 6400笔记本的外壳,看到那些密集的元件,但问题依旧无解。上学的时候,学会安装各种系统的驱动程序,俨然一副小高手,但内心依然知道,有块高地从未去过。一次偶然的机会,看到《自己动手写操作系统》一书,在宿舍研究三个月后,终于明白了驱动是如何开发出来的,对OperatingSystem的底层也有些理解了。运气这东西,真是说不得了,后来带Linux的老师介绍去学嵌入式了,这算是对驱动开发的最好实践了。

学习嵌入式开发半年后,对单片机和嵌入式的理解反倒不是很好区分了。工作之后,PIC,Coldfire,ARM-Cortex,这些也略有了解。单片机上的开发,如果不是很高层次的逻辑设计时,一般应用和驱动的代码其实是在一个层级中的,毕竟功能简单么,也就不用设计太复杂了。这样初始开发还是可以的,由其是一个人的时候,毕竟设计方式和功能模块,基本上可以“一气呵成”。当两人以上时,应用和驱动不分层的思想,就会变得麻烦了。所以,大家会潜意识地把用到的设备驱动写在单独的源代码文件中,然后在main中调用。

最早在micro2440的开发板上也是这种方式来写祼机驱动的,但是实际中用SOC写祼机的情况还是比较少的,基本要跑linux系统的。刚开始时,就被淹没在各种内核API接口中,毕竟linux已经是个很规范了,做每件事前都要遵循一定的规则啦。简单些的,像LED类的驱动,可以直接完成。linux驱动的核心应该是为“用户”考虑。所以,完成简单的LED驱动程序后,就要考虑如何给上层用户空间的程序提供接口,让上层也更容易使用硬件,完成特定功能。struct fileoperation的使用就是最好的方式之一,用户空间与内核空间的驱动交互就有了质的飞跃。为了让系统更容易检测到硬件的变化,通过struct device在sysfs的变更,udev来创建设备访问节点完成自动化的“感知”能力。单片机上因为功能有限,对资源的竞争比较少,有的话也可以用很多方法控制。linux上就不同了,一但接口开放到用户空间,就可能存在无数的程序来同时访问一个硬件,竞态就出现了。解决的办法就是spinlock,mutexlock了,这些用法和用户空间的方式没有太大区别了,毕竟解决的问题是相似的。linux以扩展性和兼容性著称,为了规范各种硬件的使用,就会创造各种方法。platformdevice,platformdriver的出现就是解决某些硬件而出现,驱动程序说简单了就是通过硬件寄存器控制硬件内部器件完成指定功能。既然这样,就可以把硬件相关的信息放在platformdevice中,这样内核在加载platform_driver的时候找到各自的device,然后得到硬件信息,然后再操作即可。

最新文章

最近回复

  • Blackrose: 感谢拍砖!嗯,那句话...
  • aa: “Raspberry...
  • Blackrose: 外部只是帮你把芯片启...
  • : 内部时钟比外部的频率...
  • Blackrose: 你这评论比正文更有内容么
  • 7hao: CR+LF ...
  • Blackrose: 可以是你更新软件源后...
  • sxk: 博主,我的系统是ub...
  • Blackrose: 你深得精髓么
  • qihao: 这篇文章的简单总结就...

分类

归档

其它