ARM
文章平均质量分 60
aoxiang_ywj
相互学习相互进步!
展开
-
CPU访问外设有两种方式:IO与内存统一编址&IO与内存的独立编址
一、外设都是通过读写设备上的寄存器来进行访问的,外设寄存器也成为“”I/O端口“”,而IO端口有两种编址方式:独立编址和统一编址。1)统一编址:寄存器参与内存统一编址。外设接口中的IO寄存器(即IO端口)与主存(内存)单元一样看待,每个端口占用一个存储单元的地址,将主存的一部分划分出来用作IO的地址空间。(理解:把外设的寄存器当做是一个内存地址,从而以类似访问内存相同的方式来操作外设)/*...原创 2018-09-04 21:06:45 · 17687 阅读 · 0 评论 -
ARM裸机重定位汇编代码到解读
为什么需要重定位?本来代码是运行在0xd0020010的,但因为一些原因我们又希望代码实际是在0xd0024000位置运行的。这时候就需要重定位了。ARM裸机重定位汇编代码到解读任务:在SRAM中将代码从0xd0020010重定位到0xd0024000思路: 第一点:通过链接脚本将代码链接到0xd0024000 第二点:dnw下载时将bin文件下载到0xd...原创 2018-09-27 15:49:48 · 596 阅读 · 0 评论 -
C语言基础知识:访问内存地址的方法
汇编语言寄存器间接寻址方法#define GPJ0CON 0xE0200240ldr r0, =GPJ0CON //把地址值赋给寄存器r0,从后面的=可以看出用的是ldr伪指令,因为需要编译器来判断这个数ldr r1, =0x11111111 //将设定的数暂存到寄存器r1中str r1, [r0] //寄存器间接寻址。功能是把r1中的数写入到r0中...原创 2018-09-22 11:38:50 · 16741 阅读 · 0 评论 -
2的24次方等于多少MB?(附计算过程)
寻址以字节为单位,也就是以Byte为单位,首先要明白这一点。数据手册中SDRAM相关部分,对于1Gb DDR2 SDRAM的Block Diagram (128Mb x 8)中这个框图是128Bb×8结构的,这里的8指的是8bank,每bank128Mbit。每个bank内部有128Mb,通过row address(14位) + column address(10位)的方式来 综合寻址...原创 2018-09-28 10:17:30 · 18333 阅读 · 0 评论 -
Makefile中用$(shell pwd)获取相对路径
Makefile里面获取相对路径必须在pwd前面加shell,然后把shell pwd当一个变量来引用,书写形式是:$(shell pwd)INCDIR := $(shell pwd) //将shell pwd作为变量,通过 $(shell pwd)形式引用这个变量# C预处理器的flag,flag就是编译器可选的选项CPPFLAGS := -nostdlib -...原创 2018-10-06 14:27:38 · 24033 阅读 · 0 评论 -
ARM设置时钟开关的方法(使用PLL)
第一步:观察下面代码中r2=0x10001111ldr r1, 0xE0100200ldr r2, =0x10001111orr r1, r1, r2 //orr用于将r1中一些位置1str r1, [r0, #CLK_SRC0_OFFSET]第二步:将0x10001111转换为二进制第三步:结合数据手册中寄存器的用法,如下图...原创 2018-09-30 18:09:57 · 1383 阅读 · 0 评论 -
【dnw驱动数字签名】解决Win10安装USB驱动时,"INF不包含数字签名信息"
解决64位Win7 系统DNW无法识别USB驱动:https://jingyan.baidu.com/article/eae07827b35dac1fed54855c.html1、【win10更新dnw驱动遇到问题描述】首先从“此电脑”右键->管理->打开“设备管理器”,有两个设备驱动没安装好,先选择其中一个进行更新。这里采取是备份,在下面的界面中,选择“浏览计算机以查...原创 2019-02-05 15:43:02 · 17730 阅读 · 3 评论 -
【ARM汇编】stmfd sp!, {r0-r3, lr}
stmfd sp!, {r0-r3, lr} 【属于8中寻址方式中的“堆栈寻址”】上面这句ARM汇编指令的伪代码如下//SP指针地址变化过程SP = SP - 4×4; //4个寄存器,每个4个字节,该语句得到运算后的SP地址address = SP; //将运算后的地址赋给临时地址变量address//寄存器赋值给内存地址的...原创 2019-02-05 20:31:02 · 8650 阅读 · 4 评论 -
【ARM】s5pv210设置各种时钟开关,使用PLL
【分析】语句rREG_CLK_SRC0 = 0x10001111;中的0x10001111的来源// 时钟控制器基地址#define ELFIN_CLOCK_POWER_BASE 0xE0100000 // 时钟相关的寄存器相对时钟控制器基地址的偏移值#define CLK_SRC0_OFFSET 0x200#define REG_CLK_SRC0 (ELFIN_CLOCK...原创 2019-02-05 22:39:34 · 241 阅读 · 0 评论 -
【ARM】虚拟地址映射理解
1、关于虚拟地址和物理地址:物理地址(记为PA)是设计生产的时候确定的,是一种硬件编码生产的物理地址。虚拟地址对于操作系统或者软件层面来说的。虚拟地址与物理地址之间有一个虚拟地址转换层建立了一个从虚拟地址映射到物理地址的映射表(也就是映射原理中所说的页表)。物理地址是根据具体需求来确定大小的,通常情况下会比虚拟地址小。例如:对于 32 为 ARM 处理器,最大寻址空间为 4GB(2^32)...原创 2019-03-12 22:13:44 · 2992 阅读 · 0 评论 -
ldr和adr 并分析为什么adr加载的是运行地址,ldr加载的是运行地址
ldr和adr的区别ldr和adr都是伪指令,区别是ldr是长加载、adr是短加载。重点:adr指令加载符号地址,加载的是运行地址;ldr指令在加载符号地址时,加载的是运行地址。ldr和adr的使用格式(举例说明)adr r0, _start // adr加载时就叫短加载 ,注意这里没有“=”号,这是与ldr伪指令用法的区别ldr r1, =_start ...原创 2018-09-27 15:15:21 · 496 阅读 · 0 评论 -
反汇编文件(.dis文件)的理解
理解什么是:标号地址、标号名字、指令地址、指令机器码、指令机器码反汇编到的指令下面以一段dis文件中代码来简单理解一下反汇编的读法(为了方便,部分说明已经卸载代码块双斜杠后面)led.elf: file format elf32-littlearm //表明这是由led.elf文件反汇编得到的dis文件 ...原创 2018-09-21 10:06:57 · 8112 阅读 · 0 评论 -
大小端模式的判断
大小端模式的判断与示例首先需要明确的是:采用大小端模式对数据进行存放的主要区别在于存放字节的顺序大端模式:如果计算机内存的低地址存的是数据的高字节数据,则可以判断为大端模式小端模式:如果计算机内存的低地址存的是数据的低字节数据,则可以判断为小端模式大端模式数据存放特点:地址由小向大增加,而数据从高位往低位放;小端模式数据存放特点:地址由小向大增加,数据从低位往高位放。这是比较符合人脑思维...原创 2018-09-21 09:38:56 · 1207 阅读 · 0 评论 -
《IO端口和IO内存的区分及联系》
一、IO端口和IO内存的区分及联系 这两者如何区分就涉及到硬件知识,X86体系中,具有两个地址空间:IO空间和内存空间,而RISC指令系统的CPU(如ARM、PowerPC等)通常只实现一个物理地址空间,即内存空间。 内存空间:内存地址寻址范围,32位操作系统内存空间为2的32次幂,即4G。 IO空间:X86特有的一个空间,与内存空间彼此独立的地址空间,32位X86有64K的IO...原创 2018-09-04 21:19:09 · 590 阅读 · 0 评论 -
浅谈OneNand
ONENOND : 具有NOR接口的NAND解决方案。是两者的性能得到了综合。 既实现NOR Flash的高速读取速度,又保留了Nand Flash的大容量数据存储的优点。ONENOND : 是针对消费类电子和下一代移动手机市场而设计的,一种高可靠性嵌入式存储设备。三星推出的OneNAND是结合NAND型Flash高密度特性,与NOR型Flash读...原创 2018-08-31 15:56:43 · 365 阅读 · 0 评论 -
NOR flash 和 NAND flash
NOR和NAND都是现在市场上两种主要的非易失闪存技术。NOR的特点:芯片内执行,这样应用程序可以直接在flash闪存内运行,不必再把代码独到系统RAM中。 NOR的传输效率很高,在1~4MB的小容量时具有很高的成本效益但是低写入速度和擦除速度大大影响了它的性能 NAND的特点:能提供极高的单元密度,可以达到高存储密度,并且写...原创 2018-08-31 15:18:53 · 344 阅读 · 0 评论 -
S5PV210刷机时“Uart negotiation Error”无法刷机解决办法
情况一:该问题首先看下图红字 或如下情况二:开机碰到诡异现象:Android系统无法启动且出现如图情况串口输出乱码Uart negotiation Error等、SD卡不启动。以为开发板变砖头了。这时候的解决思路就是dnw刷机。具体步骤如下:1、准备好材料:1)材料一:dnw烧写软件。 这是一个开源软件,但是有一个需要注意的问题是:利用dnw驱动进...原创 2018-09-06 17:20:05 · 1680 阅读 · 1 评论 -
GCC编译出现错误:led.o:(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr1'
问题描述:GCC编译出现错误:led.o:(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr1'首先查看Makefile文件中的与%.o相关的语句,如下图所示。 解决方法:只需要在makefile中,与%.o相关的语句后面加上 -nostdlib ,即可解决问题原因分析:nostdlib就是不使...原创 2018-09-23 16:11:04 · 1772 阅读 · 0 评论 -
mrc & mcr 与 bic & orr 含义及用法示例
/*本段代码来自朱老师物联网大讲堂icache那一节视频*/mrc p15,0,r0,c1,c0,0; // 读出cp15的c1到r0中//bic r0, r0, #(1<<12) // bit12 置0 关icacheorr r0, r0, #(1<<12) // bit12 置1 开icachemcr p15,0,r0,c1,c0,0; ...原创 2018-09-23 17:24:20 · 2821 阅读 · 0 评论 -
Makefile:14: *** missing separator. Stop. 原因分析与解决
问题描述:本人在做朱老师一步步点亮LED实验时,想通过make命令执行windows中写好的makefile文件时,发现问题分析:遇到这个问题,本人首先检查了交叉编译了是否安装成功,查看发现安装成功,然后再查看了linux中交叉编译链环境变量是否安装正常。经过检查后看到/usr/local/arm/arm-2009q3/,截图如下,说明环境变量已经准备好了,不是这个问题。排...原创 2018-09-20 11:20:14 · 18237 阅读 · 3 评论 -
编程操控一个硬件的步骤(以LED为例)
首先我们需要明白的是:寄存器是操控硬件的API接口。我们如果想操控LED是通过GPIO来间接操控的,实质是操控SoC的GPIO的的寄存器,从而控制LED这个硬件工作。1 分析硬件工作原理(物理特性)LED本身有2个接线点,一个是LED的正极,一个是LED的负极。LED这个硬件的功能就是点亮或者不亮,物理上想要点亮一颗LED只需要给他的正负极上加正电压即可。2 分析原理图 ...原创 2018-09-20 22:34:56 · 1941 阅读 · 0 评论 -
FPGA与MCU比较
1、FPGA与MCU学习曲线和应用灵活性MCU的学习曲线并不陡峭,所用的开发工具都可以轻易获得,开发和调试的过程简单,设计很容易上手。不过,MCU在处理复杂事务、运行速度和接口的多样性上是很有限的。对于一般的项目,由于功能既不复杂,也没有重要的处理需求,MCU是很理想的选择。FPGA是包含可编程逻辑元件(LE)的集成电路,其可编程单元已经内置在芯片中,功能十分灵活。例如, 这些LE 可以通...原创 2018-10-03 10:22:59 · 7851 阅读 · 0 评论 -
【Tool】TI公司14-Pin JTAG规范以及参考原理图
一、JTAG的简介JTAG是英文“Joint Test Action Group(联合测试行为组织)”的词头字母的简写,该组织成立于1985 年,是由几家主要的电子制造商发起制订的PCB 和IC 测试标准。JTAG 建议于1990 年被IEEE 批准为IEEE1149.1-1990 测试访问端口和边界扫描结构标准。该标准规定了进行边界扫描所需要的硬件和软件。自从1990 年批准后,IEEE 分...原创 2019-07-26 16:35:03 · 15836 阅读 · 1 评论