首页 > 编程语言 >Day1-arm汇编led灯控制驱动并从sd卡加载运行

Day1-arm汇编led灯控制驱动并从sd卡加载运行

时间:2023-02-04 20:46:47浏览次数:39  
标签:r0 r1 写入 Day1 ldr str led arm ccgr0

关键知识点:arm汇编/程序存储地址/运行地址/程序启动

 

arm汇编:

因为 Cortex-A 芯片一上电 SP 指针还没初始化, C 环境还没准备
好,所以肯定不能运行 C 代码,必须先用汇编语言设置好 C 环境,比如初始化 DDR、设置 SP
指针等等,当汇编把 C 环境设置好了以后才可以运行 C 代码。

/*
label: instruction @ comment
label 即标号,表示地址位置,有些指令前面可能会有标号,这样就可以通过这个标号得到
指令的地址,标号也可以用来表示数据地址。注意 label 后面的“:”,任何以“:”结尾的标识
符都会被识别为一个标号
读取 I.MX6UL 寄存器也是一样的,只是过程相反。常用的存储器访问指令有两种: LDR 和
STR,用法如表 7.2.1.2 所示:
指令 描述
LDR Rd, [Rn , #offset] 从存储器 Rn+offset 的位置读取数据存放到 Rd 中。
STR Rd, [Rn, #offset] 将 Rd 中的数据写入到存储器中的 Rn+offset 位置。
*/




.gloval _start @global label _start: @ 使能所有外设时钟 ldr r0, =0x020c4068 @CCGR0 ldr r1, =0xffffffff @要写入的数据 str r1, [r0] @r1写道ccgr0 @@使能时钟 @ CCGR1 只要地址加4 ldr r0, =0x020c406c @要写入的数据 str r1, [r0] @r1写道ccgr0 ldr r0, =0x020c4070 @要写入的数据 str r1, [r0] @r1写道ccgr0 ldr r0, =0x020c4074 @要写入的数据 str r1, [r0] @r1写道ccgr0 ldr r0, =0x020c4078 @要写入的数据 str r1, [r0] @r1写道ccgr0 ldr r0, =0x020c407c @要写入的数据 str r1, [r0] @r1写道ccgr0 ldr r0, =0x020c4080 @要写入的数据 str r1, [r0] @r1写道ccgr0 @@iomux SW_MUX_CTL_GPIO1_IO3 SW MUX ==>set 5 @ address:20e_0000h+68 offset=20e_0068h ldr r0, =0x020e0068 ldr r1, =0x5 str r1, [r0] @@配置gpio1_io03的电气属性 ldr r0, =0x020e02f4 ldr r1, =0x10b0 str r1, [r0] @@设置GPIO /* *设置GPIO_GDIR1寄存器 0x0209c004 *设置GPIO1_GPIO3为输出 *就是GPIO1_IO03为输出 */ @选择gpio ldr r0, =0x0209c004 ldr r1, =0x8 str r1, [r0] @设置io输入输出 GPIOX_DR ldr r0, =0x0209c000 ldr r1, =0x0 str r1, [r0] /*cpu 不能处于未知状态 */ loop: b loop

 

 

 

 

 

标签:r0,r1,写入,Day1,ldr,str,led,arm,ccgr0
From: https://www.cnblogs.com/zhangzhekun/p/17092340.html

相关文章

  • 代码随想录算法训练营day17 | leetcode ● 110.平衡二叉树 ● 257. 二叉树的所有路径
    LeetCode110.平衡二叉树分析1.0求左子树高度和右子树高度,若高度差>1,则返回false,所以我递归了两遍classSolution{publicbooleanisBalanced(TreeNoderoot){......
  • JARM指纹识别
    免责声明:希望大家以遵守《网络安全法》相关法律,本团队发表此文章仅用于研究学习,切勿用于非法犯罪活动,对于恶意使用该工具造成的损失,和本团队无关。介绍:JARM是一个活动的传......
  • python基础:pycharm的安装、pycharm软件的使用、python语法之注释、PEP8规范、变量与常
    目录一、pycharm的安装1、软件介绍2、正版安装1.下载软件2.安装软件3、其他方法安装(需要先下载相关资源)①无限试用法②傻瓜式激活法③淘宝购买二、pycharm软件的使用1.创建......
  • 01 LED点灯
    新建一个STM32CubeIDE 新工程  选择自己的芯片型号,我的是STM32F103RCT6  选择工程保存位置,不能有中文路径,会报错  选择下载方式、一定要选,不然下次下载......
  • 苏嵌实训——day16
    文章目录​​一、进程间通信:​​​​1.传统通信方式:​​​​2.IPC通信方式(第五代操作系统):​​​​(1)传统通信之无名管道​​​​(2)传统通信方式之有名管道​​​​(3)使用有名......
  • Failed to load driver class com.mysql.cj.jdbc.Driver in either of HikariConfig c
    使用SpringDataJPA访问数据时出现该错误,具体报错信息如下:ErrorstartingApplicationContext.Todisplaytheconditionsreportre-runyourapplicationwith'debug......
  • 02LED灯
    目录一、LED灯是什么二、原理图三、对LED进行操作1.点亮第一个LED灯2.LED双数点亮3.LED流水灯四、延迟函数的生成一、LED灯是什么LED是一个发光二极管,当一段为高电平另一......
  • pycharm设置python头文件模版
    钢铁知识库,一个学习python爬虫、数据分析的知识库。人生苦短,快用python。使用pycharm创建python文件时候,有时候需要自动生成想要的文件头,如何生成呢?只需要以下几步:在f......
  • OpenHarmony标准系统内核学习【2】CPU轻量级隔离特性
    (目录)CPU轻量级隔离特性基本概念CPU轻量级隔离特性提供了根据系统负载和用户配置来选择合适的CPU进行动态隔离的能力。内核会将被隔离CPU上的任务和中断迁移到其他合......
  • k8s 关于pull image failed 问题
    问题描述:Failedtopullimage"nginx":rpcerror:code=Unknowndesc=failedtopul解决办法:1,注意虚拟机时间同步  chronycsources2,注意修改containerd配置......