摘要: 网上有好多关于驱动的Makefile怎么写,驱动程序怎么运行,为什么驱动会没有main等等问题的问题的问题。下面我也给出我的驱动Makefile模板,这些东东都是在书籍和人家的研究成果上改进而来的,至于如何使用、怎么修改成自己的,大家就随意好了。驱动测试有两种方式,一为内核树之内,一为内核树以外,前 阅读全文
posted @ 2011-06-14 21:25 hnrainll 阅读(7194) 评论(0) 推荐(1) 编辑
摘要: 不管是Windows还是Linux,驱动程序都扮演着重要的角色。应用程序只能通过驱动程序才能同硬件设备或系统内核通讯。Linux内核对不同的系统定义了标准的接口(API),应用程序就是通过这些标准的接口来操作内核和硬件。驱动可以被编译的内核中(build-in),也可以做为内核模块(Module)存 阅读全文
posted @ 2011-06-14 21:14 hnrainll 阅读(6290) 评论(3) 推荐(0) 编辑
摘要: 在了解了ARM相关的汇编指令后,同时结合网上各位大虾的提点开始阅读u-boot的启动代码,现将分析过程记录如下 可执行文件及内存映射 我们可以把可执行文件分为2种情况:存放态和运行态 1.存放态:可执行文件经过烧到存储介质上(flash或磁盘)的分布,此时可执行文件通常有2部分组成,代码段和数据段, 阅读全文
posted @ 2011-06-14 08:45 hnrainll 阅读(3429) 评论(1) 推荐(1) 编辑
摘要: 今决定认真分析一下u-boot的代码,但一开始就被“.balignl 16 0xdeadbeef”这条语句难住了,还好,google了一下,找到了《分析了一下 align 的用法》这篇文章,作者写得很好,看完后,我根据自己的实验结果,做了适当的更改,以让自己看起来更明白,把它记录如下:.align 就是用来对齐的,究竟怎么对齐,有啥情况?下面分析一下(一)$vim align1.s在新建的文件编辑以下代码:_start: b reset .byte 0x55 .byte 0xaareset: ldr r0, =0x53000000保存后,执行如下命令:$arm-linux-as align1. 阅读全文
posted @ 2011-06-14 08:18 hnrainll 阅读(2647) 评论(0) 推荐(0) 编辑
摘要: ARM指令集中,LDR通常都是作加载指令的,但是它也可以作伪指令。LDR伪指令的形式是“LDR Rn,=expr”。下面举一个例子来说明它的用法。COUNT EQU 0x40003100……LDR R1,=COUNTMOV R0,#0STR R0,[R1]COUNT是我们定义的一个变量,地址为0x40003100。这中定义方法在汇编语言中是很常见的,如果使用过单片机的话,应该都熟悉这种用法。LDR R1,=COUNT是将COUNT这个变量的地址,也就是0x40003100放到R1中。MOV R0,#0是将立即数0放到R0中。最后一句STR R0,[R1]是一个典型的存储指令,将R0中的值放到以 阅读全文
posted @ 2011-06-14 08:15 hnrainll 阅读(52615) 评论(0) 推荐(4) 编辑