上一页 1 ··· 44 45 46 47 48 49 50 51 52 ··· 71 下一页
摘要: 杂项设备(misc device)杂项设备也是在嵌入式系统中用得比较多的一种设备驱动。在 Linux内核的include\linux目录下有Miscdevice.h文件,要把自己定义的miscdevice从设备定义在这里。其实是因为这些字符设备不符合预先确定的字符设备范畴,所有这些设备采用主编号10,一起归于miscdevice,其实misc_register就是用主标号10调用register_chrdev()的。也就是说,misc设备其实也就是特殊的字符设备,可自动生成设备节点。字符设备(char device)使用register_chrdev(LED_MAJOR,DEVICE_NAME 阅读全文
posted @ 2011-06-21 14:51 hnrainll 阅读(1022) 评论(0) 推荐(0) 编辑
摘要: 对于ARM体系来说,不同语言撰写的函数之间相互调用(mix calls)遵循的是 ATPCS(ARM-Thumb Procedure CallStandard),ATPCS主要是定义了函数呼叫时参数的传递规则以及如何从函数返回,关于ATPCS的详细内容可以查看ADS1.2Online Books ——Developer Guide的2.1节。这篇文档要讲的是汇编代码中对C函数调用时如何进行参数的传递以及如何从C函数正确返回。 不同于x86的参数传递规则,ATPCS建议函数的形参不超过4个,如果形参个数少于或等于4,则形参由R0,R1,R2,R3四个寄存器进行传递;若形参个数大于4,大于4的部. 阅读全文
posted @ 2011-06-21 14:03 hnrainll 阅读(2342) 评论(0) 推荐(0) 编辑
摘要: 所谓不断电电源系统,就是当停电时能够接替市电持续供应电力的设备,它的动力来自电池组,由于电子元器件反应速度快,停电的瞬间在4~8毫秒内或无中段时间下继续供应电力。 为什么要用UPS?现在全世界各国的大众供应系统都是交流电源,一个理想的交流电源,应该满足以下几个条件:1. 频率稳定2. 电压稳定(土5%内)3. 不含谐波失真(<5%)4. 没有噪声干扰(符合IEEE 587,FCC,CE等标准规定)5. 低输出阻抗。 大家可以想象,今天如果未使用不间断电源系统,那么当市电发生异常,将造成计算机死机,甚至造成硬件故障,到时维修费将不可预期;硬件的故障可花钱消灾,但是存在硬盘中的资料呢?那可是 阅读全文
posted @ 2011-06-18 15:38 hnrainll 阅读(2895) 评论(0) 推荐(0) 编辑
摘要: Linux是Unix操作系统的一种变种,在Linux下编写驱动程序的原理和思想完全类似于其他的Unix系统。在Linux环境下设计驱动程序,思想简洁,操作方便,功能也很强大,但是支持函数少,只能依赖kernel中的函数,有些常用的操作要自己来编写,而且调试也不方便。 系统调用是操作系统内核和应用程序之间的接口,设备驱动程序是操作系统内核和机器硬件之间的接口。设备驱动程序为应用程序屏蔽了硬件的细节,这样在应用程序看来,硬件设备只是一个设备文件,应用程序可以象操作普通文件一样对硬件设备进行操作。设备驱动程序是内核的一部分,运行在核心态,它完成以下的功能: 1.对设备初始化和释放. 2.把数据从内核 阅读全文
posted @ 2011-06-18 15:00 hnrainll 阅读(7072) 评论(0) 推荐(1) 编辑
摘要: 在Linux文件系统中,很多人对Inode都不太明白,今天我就和大家一起来分享一下我对Inode的认识,如果有理解错误的地方,请大家多多批评指点。在上一篇一天一点学习Linux之认识文件系统中,在最后给出了一张EXT3文件系统结构图,里面已经涉及到了Inode的相关信息——图的左下角部分,今天,我们就专门对这一部分进行一下详解,希望通过今天的内容,能帮助大家更清楚的了解Inode。先看看Inode的结构图再来了解一下文件系统如何存取文件的1、根据文件名,通过Directory里的对应关系,找到文件对应的Inode number2、再根据Inode number读取到文件的Inode table 阅读全文
posted @ 2011-06-18 14:12 hnrainll 阅读(6556) 评论(0) 推荐(0) 编辑
摘要: 关于inode; inode 译成中文就是索引节点。每个存储设备或存储设备的分区(存储设备是硬盘、软盘、U盘 ... ... )被格式化为文件系统后,应该有两部份,一部份是inode,另一部份是Block,Block是用来存储数据用的。而inode呢,就是用来存储这些数据的信息,这些信息包括文件大小、属主、归属的用户组、读写权限等。inode为每个文件进行信息索引,所以就有了inode的数值。操作系统根据指令,能通过inode值最快的找到相对应的文件。 做个比喻,比如一本书,存储设备或分区就相当于这本书,Block相当于书中的每一页,inode 就相当于这本书前面的目录,一本书有很多的内容,如 阅读全文
posted @ 2011-06-18 10:40 hnrainll 阅读(745) 评论(0) 推荐(0) 编辑
摘要: 因为本身从事存储行业,在工作中多次碰到用户有这样的要求:我的linux系统中原来有一块SCSI硬盘,系统分配的设备文件是/dev/sda。现在新增加了一个外置的磁盘阵列,通过SCSI卡连接。但接上这个磁盘阵列后,/dev/sda变成了磁盘阵列的硬盘了,原来内置的SCSI硬盘变成了 /dev/sdb,我希望将设备文件固定下来。 过去,我总是对用户说,这个比较麻烦,因为/dev/sda等文件都是linux内核自动分配的。很难固定下来,除非你更改加载SCSI卡驱动程序的顺序,让内置硬盘连接的SCSI卡比外接磁盘阵列连接的SCSI卡的驱动模块先加载到内核,这样就能保证/dev/sda总是指向内置的硬盘 阅读全文
posted @ 2011-06-15 14:09 hnrainll 阅读(399) 评论(0) 推荐(0) 编辑
摘要: 1、 使用新的入口 必须包含 <linux/init.h> module_init(your_init_func); module_exit(your_exit_func); 老版本:int init_module(void); void cleanup_module(voi); 2.4中两种都可以 阅读全文
posted @ 2011-06-15 14:06 hnrainll 阅读(1179) 评论(0) 推荐(0) 编辑
摘要: 预定义变量 含义 $* 不包含扩展名的目标文件名称。 $+ 所有的依赖文件,以空格分开,并以出现的先后为序,可能包含重复的依赖文件。 $< 第一个依赖文件的名称。 $? 所有的依赖文件,以空格分开,这些依赖文件的修改日期比目标的创建日期晚。 $@ 目标的完整名称。 $^ 所有的依赖文件,以空格分开, 阅读全文
posted @ 2011-06-15 08:59 hnrainll 阅读(2657) 评论(0) 推荐(0) 编辑
摘要: ( 转)嵌入式Linux驱动开发笔记 Linux驱动一般以模块module的形式来加载,首先需要把驱动编译成模块的形式。简单的例子, Begin of hello.c file #include <linux/init.h> #include <linux/kernel.h> #include <l 阅读全文
posted @ 2011-06-15 08:27 hnrainll 阅读(6312) 评论(0) 推荐(0) 编辑
摘要: 网上有好多关于驱动的Makefile怎么写,驱动程序怎么运行,为什么驱动会没有main等等问题的问题的问题。下面我也给出我的驱动Makefile模板,这些东东都是在书籍和人家的研究成果上改进而来的,至于如何使用、怎么修改成自己的,大家就随意好了。驱动测试有两种方式,一为内核树之内,一为内核树以外,前 阅读全文
posted @ 2011-06-14 21:25 hnrainll 阅读(7190) 评论(0) 推荐(1) 编辑
摘要: 不管是Windows还是Linux,驱动程序都扮演着重要的角色。应用程序只能通过驱动程序才能同硬件设备或系统内核通讯。Linux内核对不同的系统定义了标准的接口(API),应用程序就是通过这些标准的接口来操作内核和硬件。驱动可以被编译的内核中(build-in),也可以做为内核模块(Module)存 阅读全文
posted @ 2011-06-14 21:14 hnrainll 阅读(6273) 评论(3) 推荐(0) 编辑
摘要: 在了解了ARM相关的汇编指令后,同时结合网上各位大虾的提点开始阅读u-boot的启动代码,现将分析过程记录如下 可执行文件及内存映射 我们可以把可执行文件分为2种情况:存放态和运行态 1.存放态:可执行文件经过烧到存储介质上(flash或磁盘)的分布,此时可执行文件通常有2部分组成,代码段和数据段, 阅读全文
posted @ 2011-06-14 08:45 hnrainll 阅读(3424) 评论(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 阅读(2644) 评论(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 阅读(52592) 评论(0) 推荐(4) 编辑
摘要: 说说这个.word的作用。 word expression就是在当前位置放一个word型的值,这个值就是expression 举例来说, _rWTCON: .word 0x15300000 就是在当前地址,即_rWTCON处放一个值0x15300000 翻译成intel的汇编语句就是: _rWTCON dw 0x15300000 例如:ldr r1, _rWTCON _rWTCON: .word 0x15300000 不是把地址0x1530 0000 上的内容传递到r1,是把地址_rWTCON上的内容放到r1,而地址_rWTCON上的内容是0x15300000。实际上就是把r1设置为0x153 阅读全文
posted @ 2011-06-13 21:36 hnrainll 阅读(4672) 评论(0) 推荐(0) 编辑
摘要: 如题,烧写后总是出现不能识别FLASH型号问题。到H-JTAG网站下载了一个hfc文件查看,发现比friendlay提供的hfc文件多了一行SoftReset+++,于是修改H-Flasher_mini2440.hfc文件,在SCRIPT SECTION:后插入一行SoftReset+++,呵呵,可以正确识别了。将我修改后的H-Flasher_mini2440.hfc内容粘贴如下,以供参考,希望能对各位有所帮助。FLASH SECTION:SSTSST39VF1601MEMORY SECTION:16-BIT X 1-CHIP0x000000000x40000000XTAL SECTION:N 阅读全文
posted @ 2011-06-13 21:30 hnrainll 阅读(1398) 评论(0) 推荐(0) 编辑
摘要: 以前用ARM的IDE工具,使用的是ARM标准的汇编语言。现在要使用GNU的工具,当然要了解一点GNU ARM汇编的不同之处。其实非常的简单,浏览一下文档然后再看看程序就完全可以搞定了,或者你硬着头皮看GNU ARM的汇编程序,用不了多少时间你就就可以无师自通了。ARM汇编语言源程序语句 ,一般由指令、伪操作、宏指令和伪指令作成。ARM汇编语言的设计基础是汇编伪指令,汇编伪操作和宏指令。 目前常用的ARM编译环境有2种:ARMASM: ARM公司的IDE中使用了CodeWarrior的编译器,绝大多数windows下的开发者都在使用这一环境,完全按照ARM的规定; GNU ARM ASM:GNU 阅读全文
posted @ 2011-06-11 20:14 hnrainll 阅读(8764) 评论(0) 推荐(0) 编辑
摘要: 一、Linux内核镜像格式 Linux内核有多种格式的镜像,包括vmlinux、Image、zImage、bzImage、uImage、xipImage、bootpImage等. (1)kernel镜像格式:vmlinux vmlinuz是可引导的、可压缩的内核镜像,vm代表Virtual Memo 阅读全文
posted @ 2011-06-10 21:36 hnrainll 阅读(9914) 评论(0) 推荐(0) 编辑
摘要: yaffs2 老版本不支持2.6.36以上内核。 网上下载的yaffs2常见版本(点击http://www.aleph1.co.uk/cgi-bin/viewcvs.cgi/下方的Download GNU tarball进行下载)一般不支持2.6.36/37。但2.6.36一下版本依然可以使用。 最 阅读全文
posted @ 2011-06-10 19:59 hnrainll 阅读(5109) 评论(0) 推荐(0) 编辑
上一页 1 ··· 44 45 46 47 48 49 50 51 52 ··· 71 下一页