上一页 1 ··· 9 10 11 12 13 14 15 16 17 ··· 23 下一页

2013年10月17日

arm B和BL指令浅析

摘要: arm B和BL指令浅析B或BL指令引起处理器转移到“子程序名”处开始执行。两者的不同之处在于:(1)BL指令在转移到子程序执行之前,将其下一条指令的地址拷贝到R14(LR,链接寄存器)。 由于BL指令保存了下条指令的地址,因此使用指令“MOV PC ,LR”即可实现子程序的返回。(2)B指令则无法实现子程序的返回,只能实现单纯的跳转。用户在编程的时候,可根据具体应用选用合适的子程序调用语句。AREA Init,CODE,READONLY;该伪指令定义了一个代码段,段名为Init,属性只读ENTRY ;程序的入口点标识..bl delay ;调用延迟..mov pc,lr ;返回------- 阅读全文

posted @ 2013-10-17 10:34 屁屁侠 阅读(12648) 评论(0) 推荐(1) 编辑

NAND FLASH驱动程序

摘要: NAND FLASH是一个存储芯片那么: 这样的操作很合理"读地址A的数据,把数据B写到地址A"问1. 原理图上NAND FLASH和S3C2440之间只有数据线, 怎么传输地址?答1.在DATA0~DATA7上既传输数据,又传输地址 当ALE为高电平时传输的是地址,问2. 从NAND FLASH芯片手册可知,要操作NAND FLASH需要先发出命令 怎么传入命令?答2.在DATA0~DATA7上既传输数据,又传输地址,也传输命令 当ALE为高电平时传输的是地址, 当CLE为高电平时传输的是命令 当ALE和CLE都为低电平时传输的是数据问3. 数据线既接到NAND FLAS 阅读全文

posted @ 2013-10-17 09:13 屁屁侠 阅读(1001) 评论(0) 推荐(0) 编辑

2013年10月15日

外设位宽为8、16、32时,CPU与外设之间地址线的连接方法

摘要: http://blog.chinaunix.net/uid-22561766-id-1772774.html 外设位宽为8、16、32时,CPU与外设之间地址线的连接方法有不少人问到:flash连接CPU时,根据不同的数据宽度,比如16位的NOR FLASH (A0-A19),处理器的地址线要(A1-A20)左移偏1位。为什么要偏1位?从软件和CPU的角度而言,一个地址对应一个字节,就是8位数据。这是肯定的,不要怀疑这点。对于具体器件而言,它的位宽是一定的,所谓位宽,指的是“读/写操作时,最小的数据单元”──别说最小单元是“位”,一般设备上... 阅读全文

posted @ 2013-10-15 11:40 屁屁侠 阅读(321) 评论(0) 推荐(0) 编辑

内存接口原理图笔记

摘要: 硬件原理图内存接口:1.RAM-like接口:SDRAM NORFLASH 网卡2.不同位宽外设的接线,访问过程3.怎么确定访问地址、设置内存控制器 CS chip select CS#也表示低电平有效 片选:问1:地址线、数据线上面有众多的设备,怎样做到只访问其中一个而避免其余的影响?答1:每一个芯片都有单独的片选引脚,访问之前,先设置片选引脚为低电平,其他芯片的片选引脚为高电平问2:片选引脚是否需要手动设置?答2:不需要,内存控制器来设置。cpu访问某个地址的时候,cpu发出的地址信号给“内存控制器”, 内存控制器根据地址的范围,来决定哪个片选信号输出低电平。 地址线:每个片选引脚对应的地 阅读全文

posted @ 2013-10-15 11:19 屁屁侠 阅读(1086) 评论(0) 推荐(0) 编辑

2013年10月14日

块设备驱动程序

摘要: 1.字符设备驱动程序App : open read write驱动:drv_open drv_read drv_write硬件:0>确定主设备号1>file_operations .open .read .write2>register_chrdev(主,name, 主设备号)3>入口:4>出口:1>查询方式2>休眠-唤醒 app:read -------- 驱动:drv_read if(nodata) sleeppoll机制4>异步通知:发信号5>输入子系统,融入别人写的代码2.块设备驱动程序App : open read write块驱 阅读全文

posted @ 2013-10-14 21:30 屁屁侠 阅读(795) 评论(0) 推荐(0) 编辑

运行地址和加载地址

摘要: http://blog.csdn.net/ce123_zhouwei/article/details/6990100运行地址和加载地址在连接目标代码时,会提到运行地址和加载地址。这两者有什么区别呢?加载时地址就是程序放置的地址,运行地址就是程序定位的绝对地址,也即在编译连接时定位的地址。如果程序是在flash里运行,则运行地址和加载地址是相同的。如果程序是在ram里运行,但程序是存储在flash里,则运行地址指向ram,而加载地址是指向flash。代码一般是烧写在NAND里面,比如S3C2440 如果开机从NAND启动 其开始的4K代码会被COPY到2440内部的4KRAM 用于对关键硬件的初 阅读全文

posted @ 2013-10-14 18:12 屁屁侠 阅读(4905) 评论(0) 推荐(1) 编辑

ARM获得PC指针为何PC=PC+8

摘要: http://blog.csdn.net/sddzycnqjn/article/details/7691534R15(PC)总是指向“正在取指”的指令,而不是指向“正在执行”的指令或正在“译码”的指令。一般来说,人们习惯性约定将“正在执行的指令作为参考点”,称之为当前第一条指令,因此PC总是指向第三条指令。当ARM状态时,每条指令为4字节长,所以PC始终指向该指令地址加8字节的地址,即:PC值=当前程序执行位置+8; 阅读全文

posted @ 2013-10-14 17:37 屁屁侠 阅读(999) 评论(0) 推荐(0) 编辑

arm程序的反汇编程序

摘要: 这是汇编源文件:MCU:S3C2440(arm920T)代码实现点亮个led小灯.text.global _start_start: ldr r0,=0x56000010 @GPBCON mov r1,#0x00000400 @ str r1,[r0] @GPB5_out=01 ldr r0,=0x56000014 @GPBDAT mov r1,#0x0 str r1,[r0] @GPBDAT[5... 阅读全文

posted @ 2013-10-14 10:00 屁屁侠 阅读(772) 评论(0) 推荐(0) 编辑

2013年10月13日

信号名称上划线

摘要: 信号名称带上划线表示低电平有效。还有一种表达方法,在信号名称后面加一个#,一样的意思。1、引脚标示符上有一横线,是表示非的意思。2、通常带非的低电平有效,不带非的高电平有效。3、在标准51单片机,INT0,int1都是带非的 阅读全文

posted @ 2013-10-13 10:42 屁屁侠 阅读(860) 评论(0) 推荐(0) 编辑

2013年9月30日

自己写bootloader(一)

摘要: bootloader功能目标:启动内核1.从Flash上把内核读入内存 1>读Flash: a.NORFLASH:读内存 b.NANDFLASH: 2>初始化内存(SDRAM需要初始化)、时钟、关闭看门狗、其他...2.启动(跳转到内核所在的地址执行) 1>设置参数,在某个约定的地址放上参数 2>跳转执行 最简单的bootloader的编写步骤:1.初始化硬件:关闭看门狗、设置时钟、设置SDRAM、初始化NAND FLASH2.如果bootloader比较大,要把它重定位到SDRAM3.把内核从NAND FLASH读到SDRAM4.设置"要传递给内核的参数&q 阅读全文

posted @ 2013-09-30 14:35 屁屁侠 阅读(567) 评论(0) 推荐(0) 编辑

上一页 1 ··· 9 10 11 12 13 14 15 16 17 ··· 23 下一页

导航