自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 资源 (4)
  • 收藏
  • 关注

原创 对于*(mmu_tbl_base)+virtuladdr>>20等的一点理解

<br />如下:<br /><br />unsigned long *mmu_tlb_base = (unsigned long *)0x30000000; <br />如果执行mmu_tlb_base=mmu_tlb_base+1,会得到mmu_tlb_base为0x30000004的结果,对于指针的加减操作会将+1自动转换为+指针类型字节数 <br />(unsigned short *)mmu_tlb_base+1的结果是0x30000002 <br />(unsigned long)mmu_tlb

2011-01-21 19:11:00 2079

原创 堆栈的问题 SP指针

<br />为什么将SP设为 4096 设定之后怎么运行?是从4096开始写然后再写4095还是往4097写?4096是steppingstone的地址吗?<br />中断为什么设为3072?<br /> <br /> <br />S3C2410、S3C2440有内部RAM、外部的SDRAM,这些都被称为内存;<br />SP设在内存上,可以是内部RAM,也可以是SDRAM,只要不破坏当前运行的程序就可以了。<br /><br /><br />启动时首先执行内部RAM的4096,然后将NAND的代码移到SD

2011-01-20 21:23:00 2803

原创 关于ARM9协处理器CP15及MCR和MRC指令

<br /><br />在基于ARM的嵌入式应用系统中,存储系统通常是通过系统控制协处理器CP15完成的。CP15包含16个32位的寄存器,其编号为0~15。<br />访问CP15寄存器的指令<br />MCR   ARM寄存器到协处理器寄存器的数据传送<br />MRC   协处理器寄存器到ARM寄存器的数据传送<br />MCR指令和MRC指令只能在处理器模式为系统模式时执行,在用户模式下执行MCR指令和MRC指令将会触发未定义指令的异常中断。<br />MCR指令<br />MCR指令将ARM处理器

2011-01-18 16:45:00 11753

原创 深入理解SP、LR和PC

<br /><br />深入理解ARM的这三个寄存器,对编程以及操作系统的移植都有很大的裨益。<br />1、堆栈指针r13(SP):每一种异常模式都有其自己独立的r13,它通常指向异常模式所专用的堆栈,也就是说五种异常模式、非异常模式(用户模式和系统模式),都有各自独立的堆栈,用不同的堆栈指针来索引。这样当ARM进入异常模式的时候,程序就可以把一般通用寄存器压入堆栈,返回时再出栈,保证了各种模式下程序的状态的完整性。<br />2、连接寄存器r14(LR):每种模式下r14都有自身版组,它有两个特殊功能。

2011-01-18 13:54:00 45682 4

原创 为什么adrl r2,mem_cfg_val这里不用ldr r2,=mem_cfg_val,

<br />请教书中sdram裸机代码memsetup:<br />mov r1, #MEM_CTL_BASE<br />adrl r2,mem_cfg_val<br />add r3,  r1,#52<br />1:<br />ldr r4,  [r2],#4<br />str r4,  [r1],#4<br />cmp r1,r3<br />bne 1b<br />mov pc,lr<br />mem_cfg_val:<br />  .long 0x22011110<br />  .long 0x000

2011-01-17 21:08:00 1898

原创 指令B和BL的区别

<br /><br />B常用于不返回的跳转,比如跳到某个标号处,BL则用于子程序跳转(要返回,返回地地存于LR)<br />B. (注意B后面的“.”)这个“.”是指定当前的地址,如果使用 B.这条指令,其实就是死循环。

2011-01-17 14:41:00 1474

原创 指令B和BL的区别

<br /><br />B常用于不返回的跳转,比如跳到某个标号处,BL则用于子程序跳转(要返回,返回地地存于LR)<br />B. (注意B后面的“.”)这个“.”是指定当前的地址,如果使用 B.这条指令,其实就是死循环。

2011-01-17 14:41:00 3386

原创 ARM指令 LDR 和 ADR的一些区别

<br /><br />LDR 是ARM中的指令,也是伪指令。<br />当用 LDR r, =imd  // r 为寄存器, imd为立即数<br />LDR 是一条伪指令。编译器会根据 立即数的大小,决定用 ldr 指令或者是mov或mvn指令。<br />当imd能用mov或者mvn操作时,就将它翻译成一条mov或mvn指令。当imd大于mov或mvn能够操作的数时,编译器会将imd存在一个内存单元中,然后再用一条ldr指令加载这个内存单元的的值到寄存器中。<br />LDR r, label  和

2011-01-16 19:46:00 26168 3

原创 讲讲volatile的作用

<br />一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子: <br />    1). 并行设备的硬件寄存器(如:状态寄存器) <br />    2). 一个中断服务子程序中会访问到的非自动变量(Non-automatic variables) <br />    3). 多线程应用中被几个任务共享的变量

2011-01-14 20:14:00 659

原创 WatchDog

<br />Watchdog是整个ARM体系结构中相对比较简单的接口,控制代码只有几行,写起来比较容易。首先选择学习watchdog,可以快速入门,先对底层硬件工作原理有个初步的认识。(Watchdog即通常我们所说的“看门狗”) Watchdog原理上就是一个定时器。定时器timer对时钟进行计数,当定时器溢出时,产生复位信号,使得整个系统复位。在程序或嵌入式系统中,需要定期的对看门狗timer进行复位重新计数,定时器不会溢出复位系统,从而保证系统的正常运行。当某种原因(例如干扰)引起程序跑飞或者进入死循

2011-01-14 18:24:00 1168

__main函数内幕——从加载视图到执行视图.pdf

非常不错的参考资料,看过了,现在分享一下

2012-02-23

arm学习资料(初学必备)

arm 经典学习资料,让你对ARM有个更深刻的理解,初学必备

2010-10-04

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除