1.相关介绍

本次用的开发板是IMX6ULL

  • CPU:NXP  i.MX 6ULL Cortex-A7单核处理器,主频 528MHz(工业级) 或 800MHz(商业级)467, GBA封装
  • 内存:512MB DDR3L RAM,支持高速数据存取。
  • 存储:8GB eMMC,支持多种启动模式(SD卡、NAND、eMMC)

2.启动代码

.global _start_start:ldr pc, =_start_handlerldr pc, =_undefined_handlerldr pc, =_supervisor_handlerldr pc, =_prefetch_handlerldr pc, =_data_abort_handlerldr pc, =_not_use_handlerldr pc, =_irq_handlerldr pc, =_fiq_handler

RAM 512M, .global 声明开始的标签,接下来写异常向量表

3.相关指令

1.cps

CPS(Change Processor State,改变处理器状态)指令是用于直接操控处理器核心运行状态的关键指令,核心作用是切换处理器的特权级别(Privilege Level) 和配置中断屏蔽(Interrupt Masking) ,是操作系统内核、实时系统(RTOS)中实现任务管理、中断控制的核心指令之一。

  1. 处理器特权级别:ARM 将处理器运行状态分为不同特权
  2. 中断屏蔽位:ARM 处理器通过CPSR(Current Program Status Register,当前程序状态寄存器) 中的中断屏蔽位控制中断响应,核心位包括:
    • I 位:屏蔽 IRQ(普通中断,如外设中断);
    • F 位:屏蔽 FIQ(快速中断,优先级高于 IRQ,用于紧急处理);
    • 置 1(Set)时中断被屏蔽,置 0(Clear)时中断可响应。

cpsid i      //关闭cpsr寄存器中普通中断 
cps #0x12    //设为irq模式cps #0x1F    //设为sys模式
cpsie i      //开启cpsr寄存器的普通中断

2.栈底的设置

i.max的RAM为512M,从0x8000 0000开始

每个模式可以设置栈长为32M,故设置irq模式栈底地址为0x8200 0000,sys模式栈底地址为0x8400 0000

3.ldr,str

在 ARM 架构指令集中,STR(Store Register,存储寄存器) 和LDR(Load Register,加载寄存器) 是一对核心的内存访问指令,用于实现寄存器与内存之间的数据传输,是程序中读写内存的基础操作。

1. LDR 指令(从内存加载数据到寄存器)

  • 功能:将内存中指定地址的数据读取(加载)到目标寄存器中。
  • 基本语法
    LDR <目标寄存器>, <内存地址>
    例:LDR R0, [R1] 表示从R1寄存器存储的地址中读取数据,放入R0寄存器。

2. STR 指令(从寄存器存储数据到内存)

  • 功能:将源寄存器中的数据写入(存储)到内存的指定地址中。
  • 基本语法
    STR <源寄存器>, <内存地址>
    例:STR R0, [R1] 表示将R0寄存器中的数据,写入R1寄存器存储的地址中。

4.初始化配置

经查imax6ull上的led与网络编号led0有关,led0与GPIO1_3有关,因此需要配置相关的寄存器

  1. 复用功能配置
  2. 引脚电器特性配置
  3. 引脚方向特性配置

1.复用功能配置(IOMUXC)

查阅手册,可知IOMUXC的bit0~bit3为0101时引脚状态为GPIO1_IO3

故设置对应位为0101

//IO复用功能配置(IOMUXC)ldr r0, =0x020E0068ldr r1, =0x05str r1, [r0]

地址由手册知,如图

2.引脚电器特性(IOMUXC)

查阅手册知bit0~bit15位0x10B0

 //引脚电器特性配置(IOMUXC)ldr r0, =0x020E02F4ldr r1, =0x10B0str r1, [r0]

地址由手册知,如图

3.引脚方向特性配置(GPIO)

应设置GPIO的_GDIR,由手册知,0为GPIO的输入模式,1为GPIO的输出模式

故应设置成输出模式

查阅手册,由于是GPIO1_IO3故

地址设置为0x0209C004

//引脚方向特性配置(GPIO1_3)ldr r0, =0x0209C004ldr r1, [r0]orr r1, r1, #(1<<3)    //由于是GPIO1_IO3故设置为对应的bit3位置1str r1, [r0]

5.相关概念

1.编译器

编译器(Compiler)是一种特殊的计算机程序,它的核心功能是将高级编程语言(如 C、Java、Python、C++ 等,更接近人类思维和自然语言的语法)编写的源代码,翻译成计算机能够直接理解和执行的低级语言(通常是机器语言或汇编语言)。

2.连接器

连接器(Linker,也常称为 “链接器”)是软件开发工具链中的关键组件,它的核心作用是将编译器生成的目标文件(Object Files)、库文件(Libraries)等 “零散部件” 组合起来,最终生成一个可直接被操作系统加载执行的可执行文件(Executable)。

3.格式转换器

格式转换器(Format Converter)是一类用于将文件、数据或信号从一种格式转换为另一种格式的工具(软件或硬件),核心目标是解决 “格式不兼容” 问题,让数据能在不同设备、软件或场景中正常使用。

4.反汇编器

反汇编器(Disassembler)是一种将机器语言(计算机可直接执行的二进制指令)转换为汇编语言(人类可阅读的低级指令)的工具。它的核心作用是 “逆向解析” 二进制程序,让开发者或分析人员能够理解程序的底层执行逻辑。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/922293.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/922293.shtml
英文地址,请注明出处:http://en.pswp.cn/news/922293.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

弹窗分页保留其他页面勾选的数据(vue)

如图所示&#xff0c;这是个常见的多选todolist不过这里多了个要求&#xff0c;弹窗上下页面切换的时候需要保留勾选结果这其实也不难&#xff0c;但是如果每次都手动写一遍却有点恼人&#xff0c;这次捋一下思路&#xff0c;并把核心代码记录一下&#xff0c;方便下次翻找核心…

分享:一种为蓝牙、WIFI、U段音频发射设备提供ARC回传数字音频桥接功能的方案

随着智能电视、流媒体设备的普及&#xff0c;用户对高质量音频输出的需求激增。为解决多设备协同、无线化传输及ARC高保真音频传输的痛点&#xff0c;纳祥科技推出HDMI ARC音频转换方案&#xff1a;HDMI ARC音频转光纤/同轴/I2S/左右声道&#xff0c;桥接无线音频发射设备&…

在WPF项目中使用阿里图标库iconfont

使用阿里图标库的步骤&#xff1a; 1。从阿里图标库官方网站上下载图标。 2。把阿里图标库&#xff08;WPF中支持.ttf字体文件&#xff09;引入 3。在App.xaml中添加图标的全局样式。推荐在此处添加全局样式&#xff0c;为了保证图标可以在所有窗体中使用。 代码如下&#x…

vue3项目启动流程讲解

Vue 3 项目启动流程详解Vue 3 项目的启动流程相比 Vue 2 有了显著变化&#xff0c;采用了新的应用实例创建方式和组合式 API。下面我将详细讲解 Vue 3 项目的启动过程&#xff0c;并提供一个可视化演示。实现思路创建 Vue 3 应用实例配置根组件和必要的插件挂载应用到 DOM展示启…

【C++】LLVM-mingw + VSCode:Windows 开发攻略

LLVM-mingw 是一个基于 LLVM 项目的开源工具链&#xff0c;用于在类 Unix 系统&#xff08;如 Linux 或 macOS&#xff09;上为 Windows 平台交叉编译应用程序&#xff0c;它结合了 LLVM 编译器基础设施&#xff08;包括 Clang C/C/Objective-C 编译器和 LLD 链接器&#xff0c…

AI内容标识新规实施后,大厂AI用户协议有何变化?(六)科大讯飞

科大讯飞也是国产老将&#xff0c;当年OpenAI横空出世&#xff0c;国内唯有文心和星火能与之一战&#xff0c;早期效果感觉甚至是优于文心的&#xff0c;只是后面再也没有什么大动静出来。讯飞也算大厂了&#xff0c;但跟百度阿里这些老牌互联网门阀相比&#xff0c;还是不够持…

Error: MiniProgramError{“errMsg“:“navigateTo:fail webview count limit exceed“}

这个错误 "navigateTo:fail webview count limit exceed" 是微信小程序中常见的页面栈溢出问题&#xff0c;原因是微信小程序对页面栈深度有默认限制&#xff08;通常为10层&#xff09;&#xff0c;当使用 navigateTo 连续跳转页面导致页面栈超过限制时就会触发。解…

少即是多:从 MPTCP 看优化干预的边界

“对待端到端传输&#xff0c;信息不足就要少干预&#xff0c;越干预越糟糕”&#xff0c;这是我的信条&#xff0c;这次再来说说 MPTCP。 Linux 内核 MPTCP 最好的调度算法就是 default 算法&#xff0c;没有之一&#xff0c;因为它以代价最小&#xff0c;最自然的方式做到了保…

“开源AI智能名片链动2+1模式S2B2C商城小程序”在直播公屏引流中的应用与效果

摘要&#xff1a;本文聚焦于直播公屏引流场景&#xff0c;探讨“开源AI智能名片链动21模式S2B2C商城小程序”如何通过技术赋能与模式创新&#xff0c;重构直播电商的流量获取与转化路径。研究结合案例分析与实证数据&#xff0c;揭示该方案在提升用户互动、优化供应链管理、降低…

基于大数据挖掘的药品不良反应知识整合与利用研究

标题:基于大数据挖掘的药品不良反应知识整合与利用研究内容:1.摘要 随着医疗数据的爆炸式增长&#xff0c;大数据挖掘技术在医疗领域的应用日益广泛。本研究旨在利用大数据挖掘技术对药品不良反应知识进行整合与利用&#xff0c;以提高药品安全性监测和管理水平。通过收集多源异…

国产时序数据库选型指南-从大数据视角看透的价值

摘要&#xff1a;大数据时代时序数据库崛起&#xff0c;工业物联网场景下每秒百万级数据点写入成为常态。Apache IoTDB凭借单节点1000万点/秒的写入性能、毫秒级查询响应和20:1超高压缩比脱颖而出&#xff0c;其树形数据模型完美适配工业设备层级结构。相比传统数据库&#xff…

教你使用服务器如何搭建数据库

数据库是存储和管理数据的核心组件&#xff0c;无论是网站、应用还是企业系统&#xff0c;都离不开数据库的支持。本文将以 莱卡云服务器 为例&#xff0c;教你如何快速搭建常用数据库服务。一、准备工作服务器环境推荐操作系统&#xff1a;Ubuntu 20.04 / Debian 11 / CentOS …

西门子 S7-200 SMART PLC 核心指令详解:从移位、上升沿和比较指令到流水灯控制程序实战

对于 PLC 初学者来说&#xff0c;“流水灯” 是绕不开的经典入门案例 —— 它看似简单&#xff0c;却浓缩了 PLC 编程的核心逻辑&#xff1a;初始化、时序控制、指令应用与状态判断。今天我们就以 S7-200 SMART 为例&#xff0c;逐行拆解一段 8 位流水灯控制程序&#xff0c;带…

P4342 [IOI 1998] Polygon -普及+/提高

P4342 [IOI 1998] Polygon 题目描述 题目可能有些许修改&#xff0c;但大意一致。 Polygon 是一个玩家在一个有 nnn 个顶点的多边形上玩的游戏&#xff0c;如图所示&#xff0c;其中 n4n 4n4。每个顶点用整数标记&#xff0c;每个边用符号 &#xff08;加&#xff09;或符号 *…

枚举算法和排序算法能力测试

枚举算法题目 1&#xff1a;找出 1-20 中既是偶数又是 3 的倍数的数题目描述&#xff1a;小明想找出 1 到 20 中既能被 2 整除又能被 3 整除的数字&#xff0c;帮他列出来吧。 代码&#xff1a;cpp运行#include <iostream> using namespace std; int main() {int a;for (…

大数据电商流量分析项目实战:Hadoop初认识+ HA环境搭建(二)

✨博客主页&#xff1a; https://blog.csdn.net/m0_63815035?typeblog &#x1f497;《博客内容》&#xff1a;大数据、Java、测试开发、Python、Android、Go、Node、Android前端小程序等相关领域知识 &#x1f4e2;博客专栏&#xff1a; https://blog.csdn.net/m0_63815035/…

【Linux】Linux进程概念(上)

一、冯诺依曼体系结构我们常见的计算机&#xff0c;如笔记本。我们不常见的计算机&#xff0c;如服务器。它们大部分都遵守冯诺依曼体系。截至目前&#xff0c;我们所认识的计算机&#xff0c;都是由一个个硬件组件组成。输入单元&#xff1a;键盘、鼠标、扫描仪、写板等中央处…

GESP C++ 一~二级拓展课(一)

课题及解析建议用时60分钟&#xff0c;作业及讲解建议用时50分钟。 课题及解析&#xff1a; 4003&#xff1a;【GESP2303二级】画三角形 【题目描述】 输入一个正整数 n&#xff0c;请使用大写字母拼成一个这样的三角形图案&#xff08;参考样例输入输出&#xff09;&#xff…

Kubernetes Ingress:使用 Apache APISIX 进行外部流量路由

什么是 Ingress&#xff1f; 在 Kubernetes 中&#xff0c;随着微服务架构的广泛应用&#xff0c;集群中的服务需要暴露到外部&#xff0c;以便供用户或其他服务访问。如何高效、安全地管理这些流量&#xff0c;成为了一个重要的议题。Ingress 作为 Kubernetes 提供的一种资源&…

Elasticsearch的理解与使用

在大数据与云计算时代&#xff0c;“高效检索” 与 “实时分析” 成为业务突破的关键能力。Elasticsearch&#xff08;简称 ES&#xff09;作为一款开源分布式搜索与分析引擎&#xff0c;凭借其低延迟、高可扩、强灵活的特性&#xff0c;已成为日志分析、全文检索、业务监控等场…