![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ARM
文章平均质量分 76
朝辞暮见
思!
展开
-
arm处理器工作模式
ARM有8个基本工作模式1. User : 用户模式 非特权模式,大部分任务执行在这种模式,运行在操作系统的用户态,没有权限去操作其他硬件资源,只能执行处理用户自己的数据,也不能切换到其他模式,要访问硬件资源或切换到其他模式,只能通过软中断或者产生异常。 2. FIQ : 快速中断 当一个高优先级(fast) 中断产生时将会进入这种模式,用于高速数据处理及通道处理。...原创 2018-06-04 21:25:45 · 981 阅读 · 0 评论 -
ARM汇编控制led点亮或熄灭
1. 查看开发板原理图,由原理图知led2由GPX2_7控制。2. 查看Exynos 4412 SCP芯片手册,GPX2控制器地址及含义由手册知,GPX2CON 地址为0X1100_0C40, GPX2CON[7] = 0x1时,GPX2_7为输出 示例汇编代码: //led2初始化 ldr r0,=0x11000c40 ldr r1,[r0] //将31:28位清0 ...原创 2018-06-07 19:11:32 · 4569 阅读 · 0 评论 -
嵌入式硬件平台接口开发之控制GPIO接口点亮led
1. 查看电路图,LED2由GPX2_7端口控制。2. 先制定一个头文件,头文件包含如下内容:/* GPX2 */typedefstruct { unsignedintCON; unsignedintDAT;}gpx2;#define GPX2 (* (volatile gpx2 *)0x11000C40 ) 为什么这样定义?1. GPX2CO...原创 2018-06-07 19:43:59 · 1803 阅读 · 0 评论 -
A/D转换器
一、A/D转换相关知识1. A/D转换的技术指标1) 分辨率,表示会触发数字量变化的最小模拟信号的变化量。分辨率又称精度,通常以数字信号的位数来表示。2) 转换速率,指完成一次A/D转换所需的时间的倒数。积分型A/D的转换时间时毫秒级,属低速A/D;逐次比较型A/D是微秒级的,属中速A/D;全并行/串并行型A/D可达到纳秒级。3)量化误差,指对模拟信号进行量化而产生的误差4)偏移误差,指输入信号为...原创 2018-06-14 20:57:02 · 12928 阅读 · 0 评论 -
看门狗定时器
1. 看门狗作用看门狗定时器检测程序的正常运行,启动看门狗后,必须在看门狗复位之前向特定寄存器中写入数值,不让看门狗定时器溢出,这样看门狗就会重新计时。当用户程序溢出时在规定时间内没有向特定寄存器中依次写入数值,看门狗定时器记数溢出,引出看门狗复位,看门狗产生一个强制系统复位。这样可以使程序重新运行,减少程序跑死的危害。 2. Exynos4412看门狗定时器模块如下:该模块包括时钟源PCLK, ...原创 2018-06-14 21:00:15 · 8393 阅读 · 0 评论 -
PWM定时器
一. PWM概述PWM(脉冲宽度调制)是利用处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。 二. Exynos4412-PWM定时器1. 配置管脚输出PWM2. 设置pwm时钟源3. pwm控制寄存器4. pwm 占空比配置寄存器 TCMPB0 比较缓冲寄存器 -----》 比较计数器TCNTB0 计数缓冲寄存器 -----》 do...原创 2018-06-15 08:59:01 · 5527 阅读 · 0 评论 -
SPI接口
注:本博文大部分内容由华清远见彭丹老师整理!2018-08-06补充:在主设备模式下,一般需要先拉高片选端,然后配置主设备写函数,一般需要配置时钟极性,时钟相位,这两个配置参数与从设备一致。还需要配置主设备和从设备一次交换多少个字符。虽然SPI含有CLCK, 但是从设备的时钟完全由主设备控制,所以不需要配置波特率。 CPOL:时钟极性选择,为0时SPI总线空闲为低电平,为1时SPI总线...原创 2018-06-15 20:30:24 · 4591 阅读 · 0 评论 -
GNU下ARM伪指令
1. 数据定义(Data Definition)伪操作数据定义伪操作一般用于为特定的数据分配存储单元,同时可完成已分配存储单元的初始化。常见的数据定义伪操作有如下几种:1).byte 单字节定义.byte 0X12 ,‘a’2).short 定义双字节数据 .short 0x12343) .long /.word 定义4字节数据.word 0x123456784) .quad 定义8字节数据.qu...原创 2018-06-09 10:49:37 · 628 阅读 · 0 评论 -
C/汇编的混合编程
APTCS(arm/thumb程序调用规范),PCS规定了应用程序的函数可以如何分开地写,分开地编译,最后将它们连接在一起,所以它实际上定义了一套有关过程(函数)调用者与被调用者之间的协议。协议规定:调用函数如何传递参数(即压栈方法,以何种方式存放参数),被调用函数如何获取参数,以何种方式传递函数返回值。 1. APTCS使用规则最主要的一条:子程序通过寄存器R0~R3来传递参数. 这时寄存器可以...原创 2018-06-09 13:05:43 · 1505 阅读 · 0 评论 -
嵌入式硬件平台接口开发之中断接口
按键中断点亮熄灭led硬件:Samsung Exynossoc参考手册:SEC_Exynos4412 SCP_Users Manual_Ver.0.10.00_Preliminary1. ARM中断的架构cpu响应外设中断流程如下:1) 每个cpu 响应外设中断有irq 和fiq,一般外设都是用的irq这根线2) 中断源很多,但是通往cpu中断接口只有一根,所以需要一个设备来管理所有的中断源,该设...原创 2018-06-09 20:44:58 · 1477 阅读 · 0 评论 -
串行通信接口
2018-08-06补充(百度百科):异步通信是一种很常用的通信方式。相对于同步通信,异步通信在发送字符时,所发送的字符之间的时隙可以是任意的,当然,接收端必须时刻做好接收的准备(如果接收端主机的电源都没有加上,那么发送端发送字符就没有意义,因为接收端根本无法接收)。发送端可以在任意时刻开始发送字符,因此必须在每一个字符的开始和结束的地方加上标志,即加上开始位和停止位,以便使接收端能够正确地将...原创 2018-06-13 21:15:10 · 6419 阅读 · 0 评论 -
MDK下ARM伪指令
伪指令伪指令是用于告诉汇编程序如何进行汇编的指令。这里指的是MDK下的伪指令与GNU下的微指令不一样。 一、常见伪指令【area】定义一个代码段或者数据段格式:area 段名 属性1,属性2……段名:code:代码段、data:数据段属性:readonly:只读、readwrite、align[4] 4字节对齐、code32 4字节、code16【entry】汇编程序的入口点,一个完整的汇编程...原创 2018-06-06 21:46:22 · 1542 阅读 · 0 评论 -
arm寄存器功能
1. Cortex-A寄存器组织如下图: 未分组寄存器:r0-r7 r15 cpsr, cpu在任何模式下看到的 这几个寄存器都是一样的分组寄存器 r8-r14 在不同模式下看到的这几个寄存器是不一样的 2. 寄存器功能说明r0-12 存取数据,临时数据r13:sp 用于指向不同模式的栈顶。栈,每种模式都需要开辟一块内存,用于在该模式下 函数调用,临时分配的数据存放在此处,r14 : l...原创 2018-06-04 23:26:29 · 1278 阅读 · 0 评论 -
arm异常处理流程
1. 什么是异常?cpu正常运行的时候,出现一些突发事件,我们的cpu就必须暂停当前程序的运行,去处理这些异常。 2. cpu中有哪些异常?1.reset 上电 重启2.undef 流水线中某个非法指令到达执行状态的时候执行3. swi 软中断指令4.prefetch 当一个指令被从内存中预取时,由于某种原因而失败,如果它能到达执行状态这个异常才会产生5.d...原创 2018-06-05 14:38:40 · 3508 阅读 · 0 评论 -
Keil下ARM汇编程序建立与调试简介
1. 新建工程 选择目标处理器 比如:SAMSUNG /S3C2410 2. 新建文件 保存SAVE3. 把文件添加入工程或者双击组文件夹,选择你保存的文件 4. 设置工程属性 5. 编辑代码 6. build 7. debug 8. 调试方法简介 窗口1汇编代码编辑窗口窗口2单步调试工作栏,也可以按快捷键F11或F10窗口3 是程序执行时的寄存器窗口,Supervisor 高黑,...原创 2018-06-05 19:30:52 · 13232 阅读 · 1 评论 -
一步一步写ARM汇编(一)
在博文:keil下ARM汇编程序建立与调试简介中学习建立ARM汇编程序工程。本博文开始学习一步一步写ARM汇编程序。 一、重要概念理解1. 立即数1)把数据转换成二进制形式,从低到高写成 4位1组的形式,最高位一组不够4位的前面补02)数1的个数,如果大于8个【可能也是立即数,取反】不是立即数,如果小于等于8个 进行下面步骤3)如果数据中间有连续的大于等于24个0,循环左移2的倍数,使高位全为04...原创 2018-06-05 21:18:48 · 20379 阅读 · 1 评论 -
一步一步写ARM汇编(二)
b与blb 无条件跳转,不考虑回来的问题bl 在跳转时会把下一条指令的地址装载到lr寄存器中,以方便cpu最终能回来 示例:通过bl跳到func,通过b跳到over,通过调试查看lr值,示例代码如下, area example,code,readonly entry start ;bl和b mov r0,#0x1 bl ...原创 2018-06-05 21:43:31 · 915 阅读 · 0 评论 -
一步一步写ARM汇编(三)
通过读写cpsr spsr设置arm cpu工作模式注1:需要通过mrs读取cpsr或spsr寄存器值 注2:cpsr_c指令中各个位含义[31:24] 条件标志位 f[23:16] 状态位域 s[15:8] 扩展位域 x[7:0] 控制位域 c示例:通过cpsr spsr设置arm cpu工作模式,代码如下: areaexample,code,readonly...原创 2018-06-06 10:01:54 · 1042 阅读 · 0 评论 -
I2C接口
一、I2C总线协议内容1. I2C总线引脚定义SDA (I2C数据引脚)CLK (I2C数据引脚) 2. I2C总线物理连接I2C总线物理连接如下图所示,SDA和CLK连接线上连有两个上拉电阻,当总线空闲时,两根线均为高电平。连到总线上的任一器件输出的低电平,都将使总线的信号变低。 二、I2C总线的数据传送1. 数据位的有效性规定I2C总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保...原创 2018-06-13 19:45:25 · 43609 阅读 · 1 评论 -
一步一步写ARM汇编(四)
ARM处理器的八种寻址1. 立即数寻址add,r0,r0,#12. 寄存器寻址 addr0, r1, r2 3. 寄存器间接寻址:以寄存器中的值作为操作数的地址 Ldrr0, [r1] 4. 寄存器移位寻址 movr1,#7 movr2,#1 addr0, r1, r2 ,lsl #25. 基址变址寻址: 将基址寄存器的内容与指令中给出...原创 2018-06-06 20:19:30 · 1210 阅读 · 0 评论 -
一步一步写ARM汇编(五)
软中断SWI在Linux程序中,用户程序是不能访问调用系统资源,但是可以通过系统调用或异常访问系统资源。那usr模式下是如何实现系统调用呢? 答案是通过SWI + 中断号。每一个系统调用对应一个SWI + 中断号,在arch/arm/kernel/entry-common.S下保存所有的SWI+ 中断号对应的系统调用。在usr模式下,调用swi时cpu会跳到Supervisor工作模式下,在这个过...原创 2018-06-06 21:23:03 · 843 阅读 · 0 评论 -
可能是讲解ARM中断和中断嵌套最通俗易懂的文章(转)
原文地址:https://www.cnblogs.com/weidongshan/p/7573173.html几天前一个学生问我ARM中断嵌套的问题,我才发现原来在我心中理所当然的事对学生来说理解实属不易。 ARM有七种模式,我们这里只讨论SVC、IRQ和FIQ模式。 我们可以假设ARM核心有两根中断引脚(实际上是看不见的),一根叫 irq pin, 一根叫fiq pin。在ARM的cpsr中,有...转载 2018-06-10 11:28:34 · 2687 阅读 · 0 评论