循环方法初始化2440内存
来源:互联网 发布:网络密钥是wifi密码吗 编辑:程序博客网 时间:2024/06/16 05:43
采用循环方法内存初始化中
memsetup:
@ 设置存储控制器以便使用SDRAM等外设
mov r1, #MEM_CTL_BASE @ 存储控制器的13个寄存器的开始地址
adrl r2, mem_cfg_val @ 这13个值的起始存储地址
add r3, r1, #52 @ 13*4 = 54
1:
ldr r4, [r2], #4 @ 读取设置值,并让r2加4
str r4, [r1], #4 @ 将此值写入寄存器,并让r1加4
cmp r1, r3 @ 判断是否设置完所有13个寄存器
bne 1b @ 若没有写成,继续
mov pc, lr @ 返回
bne 1b什么意思呢?一开始老是在找1b的标号处,找了些许时间也没有发现哪里有这个标号。
后来查找相关资料发现,原来0~9的数字为局部标签。局部标签可以重复使用,语法为:
xf:往前跳的意思,就是还未执行的程序,x代表0~9的某个标签,f代表forward的意思。
xb:往后跳的意思,回到原来已经执行过的语句,x达标0~9的某个标签,b代表backward的意思。
上面bne 1b 的意思是,如果r1!=r3 即r1的地址的不等于r3的地址,也就是还没设置完
这13个寄存器,就要重新跳到
1:
ldr r4, [r2], #4 @ 读取设置值,并让r2加4
str r4, [r1], #4 @ 将此值写入寄存器,并让r1加4
......
处执行;直到r1=r3,即设置好这13个寄存器。才会结束这个局部循环。
——————————————————————————————————————
eg:
1: ;A
cmp r0, #0
beq 1f ; @ r0==0那么向前跳转到B处执行
bne 1b ; @ 否则向后跳转到A处执行
1: ;B
——————————————————————————————————————
有趣的是:
1:b 1b @无限循环的意思,与while(1)等效
- 循环方法初始化2440内存
- 关于ok6410初始化内存方法
- 2440内存初始化
- java基础-构造方法初始化内存图
- Uboot 内存初始化(2440)
- ARM之2440内存初始化
- 内存初始化
- 内存初始化
- 内存初始化
- 内存初始化
- 内存初始化
- 内存初始化
- 1-8 内存的概念、分类、初始化方法
- 循环初始化pageview
- 初始化方法
- 初始化方法
- 初始化方法
- 初始化方法
- 关于HTTPS的一些基础知识
- 插入排序
- 构造函数能不能是虚函数
- 高性能平台上提交任务的两种方式
- 详细整理:UITableView优化技巧
- 循环方法初始化2440内存
- 多线程 线程池ThreadPoolExecutor介绍
- Linux下JDK + tomcat安装
- 标准标签库JSTL
- Cookie和Session详解
- 28.UITableView类详解
- bpf
- 十个开源库分享(二)
- WebX实践指南_WebX RPC