ARM
groundhappy
这个作者很懒,什么都没留下…
展开
-
ARM CACHE
http://blog.sina.com.cn/s/blog_4ec38d4f0100c30v.html 在有cache的单机系统中,通常有两种写策略:write through和write back。这两种写策略都是针对写命中(write hit)情况而言的:write through是既写cache也写main memory;write back是只写cache,并使用dirty标志转载 2016-11-06 20:31:11 · 970 阅读 · 0 评论 -
arm mmu和cache注意
在编译raspberry-uboot的时候遇到了很多的问题。比如memset的时候指针无缘无故跑飞。很可能是mmu和cache的问题在开启CACHE的情况下1JTAG等等调试的时候是通过监听地址总线上的数据来暂停的。比如断点在A ,地址总线上出现了A,此时就暂停CPU。断下来了。如果开启了CACHE,对于A-4,A, A+4地址 当执行到A-4的时候。可能由于cache原创 2016-11-08 14:04:33 · 1574 阅读 · 1 评论 -
arm汇编文件编译以及代码查看
汇编文件一般为.S结尾(S大写,小写的s一般不会有预处理的过程和语句。大写的S一般有预处理等等)首先编写一个main.Smain:mov r0,#1mov r1,#2ldr r2,add_func_lbl r2die:b dieadd_func:add r0,r0,r1bx lr.align 4add_func_l:.word add_f原创 2016-10-19 14:07:53 · 2396 阅读 · 1 评论 -
arm的协处理寄存器c1的对齐控制异常
编译好了树莓派内核。在运行到arch/arm/mm.alignment.c的static int __init alignment_init(void)突然跑飞了。定位到是在if (cpu_is_v6_unaligned()) { set_cr(__clear_cr(CR_A)); ai_usermode = safe_usermode(ai_usermode, false);}原创 2016-11-30 13:15:56 · 826 阅读 · 0 评论 -
arm的寄存器以及基本指令介绍
ARM一共有37个寄存器31个通用寄存器6个状态寄存器未备份寄存器 r0-r7备份寄存器 r8-r14程序计数器r15 也叫做PC寄存器。和X86的eip一样R13一般也叫做SP 堆栈指针。和X86的esp一样R14一般也叫做LR 链接寄存器。 相当于返回地址。调用BL BX的时候会将返回地址赋值给LR。在子程序里面 执行完毕以后。会调用MOV PC原创 2016-09-06 13:04:24 · 1798 阅读 · 0 评论 -
GCC中内嵌arm汇编
首先内嵌汇编的形式是asm{ “要执行的语句;” :输入参数 :输出参数 :被改变的寄存器}原创 2016-09-06 17:12:35 · 2092 阅读 · 1 评论 -
UNICORN模拟ARM遇到的问题记录
ARM指令为4字节THUMB指令为2字节THUMB2 指令可能是2字节,也可能是4字节 (通过PC的最低bit位来检测)问题1 在使用UNICORN模拟器 THUMB2 的时候,返回 UC_ERR_INSN_INVALID一定要检查当前设置PC值是不是正确因为在unicorn_arm.c中对于reg_write写入PC寄存器的时候case UC_ARM_REG_R15: ...原创 2018-05-24 15:29:13 · 2892 阅读 · 1 评论