摘要:
大部分指令是“位置有关编码” 位置无关编码:汇编源文件编码成二进制可执行程序时,编码方式与位置无关。 在我们写程序时,必须给编译器链接器指定地址。将来的程序被执行时必须放在当时编译链接时给定的地址才能运行。 位置有关编码:汇编源码编码成二进制可执行程序后和内存地址是有关的。 但是也有一种特别的指令他 阅读全文
摘要:
S5PV210裸机程序 执行make出现错误 错误原因:宿主机和虚拟机时间不同步导致 解决方法:在虚拟机中 >虚拟机 >设置 >选项 >vmware tools >将客户机与虚拟机同步 >确定 阅读全文
摘要:
关看门狗(watch dog timer) 在正常情况下,系统软件每过一段时间会自动进行一次喂狗(即将看门狗定时器置0重新定时)。但是如果设备跑飞,死机,系统无法自动喂狗。那么等到看门狗定时器计时时间到了,就会自动将设备复位。在一些特殊环境下的无人值守设备中,这种自动发现问题然后复位的技术就很重要。 阅读全文
摘要:
伪指令的意义 伪指令不是指令,伪指令和指令的根本区别是经过编译后会不会生成机器码。 伪指令的意义在于指导编译过程。 伪指令是和具体的编译器相关的,我们使用gnu工具链,因此学习gnu环境下的汇编伪指令。 gnu汇编中的一些符号 @ 用来做注释。可以在行首也可以在代码后面同一行直接跟,和C语言中//类 阅读全文
摘要:
为什么需要多寄存器访问指令 ldr/str每周期只能访问4字节内存,如果需要批量读取、写入内存时太慢,解决方案是stm/ldm ldm(load register mutiple) stm(store register mutiple) 举例 stmia sp, {r0 - r12} 将r0存入sp 阅读全文
摘要:
协处理器cp15操作指令 mcr & mrc mrc用于读取CP15中的寄存器 mcr用于写入CP15中的寄存器 协处理器:被主CPU调用,协助主CPU实现某种功能 ARM设计支持多达16个协处理器,但是一般SOC只实现其中的CP15 协处理器和MMU、cache、TLB等处理有关,功能上和操作系统 阅读全文
摘要:
数据处理指令 数据传输指令 mov mvn 算术指令 add sub rsb adc sbc rsc 逻辑指令 and orr eor bic //与或非 比较指令 cmp cmn tst teq 乘法指令 mvl mla umull umlal smull smlal 前导零计数 clz (用的不 阅读全文
摘要:
基础知识 指令与伪指令 汇编指令:CPU机器指令的助记符,编译后得到1和0组成的机器码,由CPU读取执行 伪指令:本质上不是指令,由编译环境提供,目的在于指导编译过程,最终不会生成机器码 不同的ARM风格 ARM官方汇编风格:指令一般大写,windows IDE开发环境常用。(譬如:LDR、STR) 阅读全文
摘要:
ARM 有7个基本工作模式 User : 非特权模式,大部分任务执行在这种模式 FIQ : 当一个高优先级(fast) 中断产生时将会进入这种模式 IRQ : 当一个低优先级(normal) 中断产生时将会进入这种模式 Supervisor :当复位或软中断指令执行时将会进入这种模式 Abort : 阅读全文
摘要:
GPJ0CON端口一共有8个端口,分别记住:GPJ0_0~GPJ0_7;相关寄存器为GPJ0CON、GPJ0DAT GPJ0CON寄存器中设置8个引脚的工作模式(32/8=4,每个引脚分到4位,譬如GPJ0_0位bit0~bit3,我们就给=它写入0001得到输出模式) 1、需要控制的引脚:GPJ0 阅读全文