嵌入式Linux之MX6ULL裸机开发学习笔记(汇编LED灯点亮)

news2024/11/27 23:52:48

汇编LED驱动实验

1.驱动编写

首先创建在vscode上创建工作区,创建led.s汇编文件,然后编写以下程序

.global _start @全局标号

_start:

/* 使能所有外设时钟 */

ldr r0,=0x020c4068 @CCGR0

ldr r1,=0xffffffff @要向CCGR0写入的数据

str r1,[r0] @将0xffffffff写入CCGR0中

ldr r0,=0x020c406c @CCGR1

str r1,[r0]

ldr r0,=0x020c4070 @CCGR2

str r1,[r0]

ldr r0,=0x020c4074 @CCGR3

str r1,[r0]

ldr r0,=0x020c4078 @CCGR4

str r1,[r0]

ldr r0,=0x020c407c @CCGR5

str r1,[r0]

ldr r0,=0x020c4080 @CCGR6

str r1,[r0]

/* 配置GPIO1_IO03 PIN的复用为GPIO,也就是设置

* IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO03 = 5

* IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO03寄存器地址为 0x020e0068

*/

ldr r0,=0x020e0068 @IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO03

ldr r1,=0x5 @要写入的数据

str r1,[r0] @将0x5写入IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO03中

/* 配置GPIO1_IO03的电气属性,也就是寄存器:

* IOMUXC_SW_PAD_CTL_PAD_GPIO1_IO03

* IOMUXC_SW_PAD_CTL_PAD_GPIO1_IO03寄存器地址为0x020e02f4

*

* bit0: 0 低速率

* bit5-3: 110 R0/6驱动能力

* bit7-6: 10 100Mhz速度

* bit11: 0 关闭开路输出

* bit12: 1 使能pull/kepper

* bit13: 0 kepper

* bit15-14: 00 100K下拉

* bit16: 0 关闭hys

*/

ldr r0,=0x020e02f4 @IOMUXC_SW_PAD_CTL_PAD_GPIO1_IO03

ldr r1,=0x10b0 @要写入的数据

str r1,[r0] @将0x10b0写入IOMUXC_SW_PAD_CTL_PAD_GPIO1_IO03中

/* 设置GPIO

* 设置GPIO1_GDIR寄存器,设置GPIO_GPIO03为输出

* GPIO1_GDIR寄存器地址为0x0209c004.设置GPIO1_GDIR寄存器bit3为1

* 也就是设置GPIO1_IO03为输出。

*/

ldr r0,=0x0209c004 @GPIO1_GDIR

ldr r1,=0x8 @要写入的数据

str r1,[r0] @将0x8写入GPIO1_GDIR中

/* 打开LED,也就是设置GPIO1_IO03为0

* GPIO1_DR寄存器地址为0x0209c000

*/

ldr r0,=0x0209c000 @GPIO1_DR

ldr r1,=0 @要写入的数据

str r1,[r0] @将0x8写入GPIO1_DR中

loop:

b loop

2.编译程序

创建Makefile文件写入

led.bin : led.s

arm-linux-gnueabihf-gcc -g -c led.s -o led.o

arm-linux-gnueabihf-ld -Ttext 0x87800000 led.o -o led.elf

arm-linux-gnueabihf-objcopy -O binary -S -g led.elf led.bin

arm-linux-gnueabihf-objdump -D led.elf > led.dis

clean:

rm -rf *.o led.bin led.elf led.dis

3.烧写bin文件到SD卡中并运行

插入SD卡,通过命令ls /dev/sd* -l查看有哪些文件

然后在拔掉看看少了哪些文件

我们就能确定哪个是我们的SD卡文件是sdb,每个人的读卡器不同名字也不同,举例:我这里有一个adb1,那么我就能确定是sdb了

然后从正点原子资料里托取imxdownload文件到我们的工作区里,不知道怎么传输的可以看看正点原子教程

然后更改它的权限chmod imxdownload 777 ,使它的权限全开。

然后使用命令 ./imxdownload led.bin /dev/sdb 把bin文件烧写到SD卡内,当出现

I.MX6ULL bin download software

Edit by:zuozhongkai

Date:2019/6/10

Version:V1.1

log:V1.0 initial version,just support 512MB DDR3

V1.1 and support 256MB DDR3

file led.bin size = 160Bytes

Board DDR SIZE: 512MB

Delete Old load.imx

Create New load.imx

Download load.imx to /dev/sdb ......

[sudo] lcp 的密码:

记录了6+1 的读入

记录了6+1 的写出

3232字节(3.2 kB,3.2 KiB)已复制,0.0678926 s,47.6 kB/s 时就是烧录完成了,如果烧录速度达到了多少M的话是失败的。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

UE5 C++(十一)— 碰撞检测

文章目录 代理绑定BeginOverlap和EndOverlapHit事件的代理绑定碰撞设置 代理绑定BeginOverlap和EndOverlap 首先,创建自定义ActorC类 MyCustomActor 添加碰撞组件 #include "Components/BoxComponent.h"public:UPROPERTY(VisibleAnywhere, BlueprintRea…

IO进程线程 day4

进程状态间的转化 创建出三个进程完成两个文件之间拷贝工作&#xff0c;子进程1拷贝前一半内容&#xff0c;子进程2拷贝后一半内容&#xff0c;父进程回收子进程的资源 #include <head.h> int main(int argc, const char *argv[]) {FILE *fp1NULL,*fp2NULL;//定义两个文…

Java Arrays.copyOfRange的用法

Arrays.copyOfRange的使用方法&#xff1a; 将一个数组拷贝至另一个数组中 参数&#xff1a; original&#xff1a;第一个参数为要拷贝的数组对象 from&#xff1a;第二个参数为拷贝的开始位置&#xff08;包含&#xff09; to&#xff1a;第三个参数为拷贝的结束位置&#x…

小程序组件内的数据监听器

数据监听器可以用于监听和响应任何属性和数据字段的变化。从小程序基础库版本 2.6.1 开始支持。 有时&#xff0c;在一些数据字段被 setData 设置时&#xff0c;需要执行一些操作。例如&#xff0c; 一个值取决于另外两个值的变化&#xff0c;this.data.sum 永远是 this.data.…

大创项目推荐 深度学习卷积神经网络垃圾分类系统 - 深度学习 神经网络 图像识别 垃圾分类 算法 小程序

文章目录 0 简介1 背景意义2 数据集3 数据探索4 数据增广(数据集补充)5 垃圾图像分类5.1 迁移学习5.1.1 什么是迁移学习&#xff1f;5.1.2 为什么要迁移学习&#xff1f; 5.2 模型选择5.3 训练环境5.3.1 硬件配置5.3.2 软件配置 5.4 训练过程5.5 模型分类效果(PC端) 6 构建垃圾…

微软 Power Platform 使用Power Automate发送邮件以Dataverse作为数据源的附件File Column

微软Power Platform使用Power Automate发送邮件添加Power Apps以Dataverse作为数据源的附件File Column方式 目录 微软Power Platform使用Power Automate发送邮件添加Power Apps以Dataverse作为数据源的附件File Column方式1、需求背景介绍2、附件列File Column介绍3、如何在Po…

几种读nii图像方法的轴序比较

读 .nii / .nii.gz 图像并转成 numpy 可用 medpy.io、nibabel、itk、SimpleITK 几种方法&#xff0c;然而几种方法读出来的轴序有出入&#xff0c;本篇比较此几种方法。 Datum 所用数据来自 verse&#xff0c;经 iTomxy/data/verse/preprocess.py 预处理&#xff0c;朝向和轴…

Linux_apachectl 网页优化

1.1 网页压缩与缓存 在使用 Apache 作为 Web 服务器的过程中&#xff0c;只有对 Apache 服务器进行适当的优化配 置&#xff0c;才能让 Apache 发挥出更好的性能。反过来说&#xff0c;如果 Apache 的配置非常糟糕&#xff0c; Apache 可能无法正常为我们服务。因此&#xff0c…

【技能---500G硬盘-Ubuntu 20.04安装分区参考】

文章目录 Ubuntu 20.04安装分区指导安装分区流程Ubuntu 系统分区关键一步----- 选择安装启动引导器的设备 Ubuntu 20.04安装分区指导 安装Ubuntu 20.04的时候可以自己指定各个内存空间的占用&#xff0c;值得注意的是&#xff0c;这里的分区有一定的技巧&#xff01;&#xff0…

14:00面试,14:08就出来了,问的问题过于变态了。。。

从小厂出来&#xff0c;没想到在另一家公司又寄了。 到这家公司开始上班&#xff0c;加班是每天必不可少的&#xff0c;看在钱给的比较多的份上&#xff0c;就不太计较了。没想到10月一纸通知&#xff0c;所有人不准加班&#xff0c;加班费不仅没有了&#xff0c;薪资还要降40…

云原生技术专题 | 解密2023年云原生的安全优化升级,告别高危漏洞、与数据泄露说“再见”(安全管控篇)

背景介绍 2023年&#xff0c;我们见证了科技领域的蓬勃发展&#xff0c;每一次技术革新都为我们带来了广阔的发展前景。作为后端开发者&#xff0c;我们深受其影响&#xff0c;不断迈向未来。 随着数字化浪潮的席卷&#xff0c;各种架构设计理念相互交汇&#xff0c;共同塑造了…

工作流自动化:它是什么,常见示例以及如何实现

由于您的组织旨在留住顶尖人才和高价值客户&#xff0c;因此您需要不断为这两个团队提供一流的体验。 就客户而言&#xff0c;它可以实时解决他们的问题和疑虑&#xff0c;并以深思熟虑、可操作的洞察力主动与他们联系&#xff1b;而且&#xff0c;对于员工来说&#xff0c;它可…

微服务之间互相调用出现的错误

场景&#xff1a; 微服务A调用微服务B的接口&#xff0c;微服务B的接口请求方式是get类型&#xff0c;传递的参数是JSON格式。 错误&#xff1a; 1、postman&#xff1a;springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserial…

java数据结构与算法刷题-----LeetCode70. 爬楼梯

java数据结构与算法刷题目录&#xff08;剑指Offer、LeetCode、ACM&#xff09;-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 很多人觉得动态规划很难&#xff0c;但它就是固定套路而已。其实动态规划只…

Android Framework | Linux 基础知识:入门指南

Android Framework | Linux 基础知识&#xff1a;入门指南 进行Android Framework开发需要具备基本的Linux基本知识&#xff0c;下面是一份Linux基础知识入门指南&#xff0c;希望对你有所帮助&#xff01; 1. 简介 Linux 是一种免费、开源的操作系统&#xff0c;它是由芬兰…

分布式之任务调度Elastic-Job学习一

1 E-Job 1.1 任务调度高级需求 Quartz 的不足&#xff1a; 1、 作业只能通过 DB 抢占随机负载&#xff0c;无法协调 2、 任务不能分片——单个任务数据太多了跑不完&#xff0c;消耗线程&#xff0c;负载不均 3、 作业日志可视化监控、统计 1.2 发展历史 E-Job 是怎么来的&…

第11课 实现桌面与摄像头叠加

在上一节&#xff0c;我们实现了桌面捕获功能&#xff0c;并成功把桌面图像和麦克风声音发送给对方。在实际应用中&#xff0c;有时候会需要把桌面与摄像头图像叠加在一起发送&#xff0c;这节课我们就来看下如何实现这一功能。 1.备份与修改 备份demo10并修改demo10为demo11…

Python 快速合并PDF表格转换输出CSV文件

单位的刷脸考勤机后台系统做得比较差&#xff0c;只能导出每个部门的出勤统计表pdf&#xff0c;格式如下&#xff1a; 近期领导要看所有部门的考勤数据&#xff0c;于是动手快速写了个合并pdf并输出csv文件的脚本。 安装模块 pypdf2&#xff0c;pdfplumber&#xff0c;前者用…

切换node.js不同版本

切换node.js不同版本 因新项目用到vite4创建项目&#xff0c;输入命令后报错&#xff0c;经查询得知是node版本过低导致&#xff0c;所以需要升级node版本&#xff0c;但是又有老的项目需要维护&#xff0c;因此需要多个版本的node使用需求。 流程&#xff1a; 卸载原有的node…

金和OA c6 uploadfileeditorsave接口存在任意文件上传漏洞

产品简介 金和网络是专业信息化服务商&#xff0c;为城市监管部门提供了互联网监管解决方案&#xff0c;为企事业单位提供组织协同OA系统升开发平台&#xff0c;电子政务一体化平台智慧电商平合等服务 漏洞概述 金和-c6 uploadfileeditorsave 任意文件上传&#xff0c;攻击者…