【Linux-ubuntu通过USB传输程序点亮LED灯】
Linux-ubuntu通过USB传输程序点亮LED灯
- 一,初始化GPIO配置
- 1.使能时钟
- 2.其他寄存器配置
- 二,程序编译
- 三,USB传输程序
一,初始化GPIO配置
1.使能时钟
使能就是一个控制信号,用于决定时钟信号是否能够有效的传递或者被使用,就像一个开关,当使能信号有效时,时钟信号能够正常工作。每个模块都有自己的工作时钟,通过控制使能信号控制每个模块的时钟输入,能够实现启动或停止这个模块的工作。
2.其他寄存器配置
复用功能(MUX_MODE),由于LDE等连接在GOIP1-IO03上,因此将复用功能设置为该GPIO打开。
电器属性(pad settings),比如低转换率,驱动能力,传输速度等。
IO作为GPIO时,要设置八个寄存器,DR、GDIR、PSR、ICR1、ICR2、EDGE_SEL、IMR 和 ISR,对于点灯,设置GDIP为输出模式,DR设置为低电平,即让GPIO1-IO03输出低电平。(设置为0,即开灯,设置为0x8开灯,因为这个灯对应的是bit3)。

二,程序编译
建立ldes.s文件,编写汇编程序:
.global _start /**/
_start:
/*使能外部时钟 */
ldr r0,=0x020c4068 @ccgr0
ldr r1,=0xffffffff
str r1,[r0]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]/*IO复用,配置为GPIO1-I003*/
ldr r0,=0x020e0068 @寄存器地址
ldr r1,=0x000005 @设置为0101
str r1,[r0]/* 配置电器属性*/ldr r0,=0x020e02f4
ldr r1,=0x10b0
str r1,[r0]/*设置GPIO1-I003输出 */
ldr r0,=0x0209c004
ldr r1,=0x00000008
str r1,[r0]/*设置GPIO1-I003为低点平 */
ldr r0,=0x0209c000
ldr r1,=0
str r1,[r0]loop:b loop
将leds.s转化为led.o文件:arm-linux-gnueabihf-gcc -g -c leds.s -o led.o
将led.o转化为led.elf文件:arm-linux-gnueabihf-ld -Ttext 0x87800000 led.o -o led.elf
将led.elf转化为为bin文件:arm-linux-gnueabihf-objcopy -O binary -S -g led.elf led.bin
为了以后检查方便,反编译:arm-linux-gnueabihf-objdump -D led.elf > led.dis
三,USB传输程序
最终放到板子上的是imx类型文件,是镜像文件,这种镜像文件格式这个镜像文件包含了设备启动和运行所需的软件程序以及配置信息。镜像文件包含头部(Header:用于描述镜像文件的版本,大小和目标设备型号),代码段(处理器可执行的机器码指令),数据段(存储全局变量,常量)以及校验和等,打包成imx文件,通过下载uuu工具,直接不用读卡器就能传输到板子的闪存中。
bin文件时纯粹的二进制代码流,imx在此基础上添加头部信息等,便于设备的识别,与hex文件类似,都可存储固件的内容,但格式上不一样,hex更方便阅读(十六进制文本文件),imx更侧重设备直接识别。
Makefile:
led.bin : leds.sarm-linux-gnueabihf-gcc -g -c leds.s -o led.oarm-linux-gnueabihf-ld -Ttext 0x87800000 led.o -o led.elfarm-linux-gnueabihf-objcopy -O binary -S -g led.elf led.binarm-linux-gnueabihf-objdump -D led.elf > led.dis
clean:rm -rf *.o led.bin led.elf led.dis load.imx
run:cat header led.bin > load.imxsudo ./uuu load.imx
①在终端输入,安装USB传输工具:sudo snap install universal-update-utility
②在文件夹下添加header和uuu文件。
③将设备确保插到ubuntu上,并且USB线插到正点原子开发板的OTG接口,不是TTL接口。
④确保SD卡要拔出,并且将拨码开关的2打开,on。
⑤在终端运行make后,再运行make run,即可。

**header和uuu文件:链接: https://pan.baidu.com/s/1r66P0TqRS74JrOyyks-pHQ 提取码: 6666
相关文章:
【Linux-ubuntu通过USB传输程序点亮LED灯】
Linux-ubuntu通过USB传输程序点亮LED灯 一,初始化GPIO配置1.使能时钟2.其他寄存器配置 二,程序编译三,USB传输程序 一,初始化GPIO配置 1.使能时钟 使能就是一个控制信号,用于决定时钟信号是否能够有效的传递或者被使用,就像一个…...
《开源时间序列数据:探索与应用》
《开源时间序列数据:探索与应用》 一、开源时间序列数据概述二、热门的开源时间序列数据库1. InfluxDB2. TimescaleDB3. Prometheus4. OpenTSDB5. Graphite6. Druid 三、开源时间序列数据的应用场景1. 物联网领域2. 金融领域3. 运维监控领域4. 能源领域 四、开源时间…...
三相异步电动机跳闸的原因是什么?
三相异步电动机是现代工业生产和日常生活中广泛应用的一种电动机,因其结构简单、维护方便和功率范围广泛而受到广泛青睐。然而,在实际使用过程中,电动机的跳闸现象时有发生,这不仅影响了设备的正常运行,甚至可能导致经…...
连续思维链Coconut ,打开LLM推理新范式
语言与推理之间有着什么样内涵上的联系与本质上的差别? 系统二的长链复杂分步推理与系统一分别在训练时与推理时的正/反向传播链路、模型神经网络内部的潜在机制(虽然是黑盒)以及网络链路对应的模型训练过程中“压缩”的数据(认知)流形所映射出的隐含碎片化泛化分布…...
阿里云数据库MongoDB版助力极致游戏高效开发
客户简介 成立于2010年的厦门极致互动网络技术股份有限公司(以下简称“公司”或“极致游戏”),是一家集网络游戏产品研发与运营为一体的重点软件企业,公司专注于面向全球用户的网络游戏研发与运营。在整个产业链中,公…...
ESP32-S3模组上跑通ES8388(29)
接前一篇文章:ESP32-S3模组上跑通ES8388(28) 二、利用ESP-ADF操作ES8388 2. 详细解析 上一回解析到了es8388_init函数中的第11段也是最后一段代码,没有解析完,本回继续解析。为了便于理解和回顾,再次贴出该片段,在components\audio_hal\driver\es8388\es8388.c中,如下…...
使用ElasticSearch实现全文检索
文章目录 全文检索任务描述技术难点任务目标实现过程1. java读取Json文件,并导入MySQL数据库中2. 利用Logstah完成MySQL到ES的数据同步3. 开始编写功能接口3.1 全文检索接口3.2 查询详情 4. 前端调用 全文检索 任务描述 在获取到数据之后如何在ES中进行数据建模&a…...
通过k-means对相似度较高的语句进行分类
本文介绍了如何使用K-Means算法对相似度较高的语句进行分类,并附上java案例代码 import java.util.ArrayList; import java.util.List; import java.util.Random;public class KMeansTextClustering {public static void main(String[] args) {// 初始化语句数据集…...
国信华源科技赋能长江蓄滞洪区水闸管护项目验收成果报道
“碧水悠悠绕古城,闸启长江万象新。”近日,由北京国信华源科技有限公司倾力打造的万里长江蓄滞洪区水闸管护项目,圆满通过验收,为这片鱼米之乡的防洪安全注入了新的科技活力。 长江之畔,水闸挺立,犹如干堤上…...
HTML:表格重点
用表格就用table caption为该表上部信息,用来说明表的作用 thead为表头主要信息,效果加粗 tbody为表格中的主体内容 tr是 table row 表格的行 td是table data th是table heading表格标题 ,一般表格第一行的数据都是table heading...
wine的使用方法
wine版本 所有分支,新的主要版本: wine-x.0 All branches, release candidates:各分支、候选版本: wine-x.0-rcn Stable branch updates: 稳定分支更新: wine-x.0.z Development branch updates: wine-x.y wine *.exe “更改目…...
Linux服务器离线安装unzip包
Linux服务器离线安装unzip包 1. 安装unzip包的目的 解压Docker部署包和服务部署包。 2. 查看当前环境是否已经安装unzip rpm -qa | grep --color unzip3. 下载对应的离线包 地址:http://www.rpmfind.net/linux/rpm2html/search.php?query&submitSearch 例…...
Excel拆分脚本
Excel拆分 工作表按行拆分为工作薄 工作表按行拆分为工作薄 打开要拆分的Excel文件,使用快捷键(AltF11)打开脚本界面,选择要拆分的sheet,打开Module,在Module中输入脚本代码,然后运行脚本 Su…...
Mybatis---事务
目录 引入 一、事务存在的意义 1.事务是什么? 2.Mybatis关于事务的管理 程序员自己控制处理的提交和回滚 引入 一、事务存在的意义 1.事务是什么? 多个操作同时进行,那么同时成功,那么同时失败。这就是事务。 事务有四个特性…...
企业直播间媒体分发新闻转播拉流推广名单(金融财经科技类)
【本篇由 言同数字媒体直播分发 原创】随着直播与短视频成为各大企业营销的重要手段,如何选择合适的视频平台进行内容分发与拉流成为了企业关注的焦点。对于财经和科技类企业而言,选择具有专业受众群体和广泛传播能力的平台尤为重要。下面是一些可以帮助…...
华为FreeBuds Pro 4丢了如何找回?(附查找功能使用方法)
华为FreeBuds Pro 4查找到底怎么用?华为FreeBuds Pro 4有星闪精确查找和离线查找,离线查找功能涵盖播放铃声、导航定位、星闪精确查找、上线通知、丢失模式、遗落提醒等。星闪精确查找是离线查找的子功能,当前仅华为FreeBuds Pro 4充电盒支持…...
若依微服务登录密码加密传输解决方案
文章目录 一、需求提出二、应用场景三、解决思路四、注意事项五、完整代码第一步:前端对密码进行加密第二步:后端工具类实现 RSA 加解密功能第三步:登录接口中添加解密逻辑 六、运行结果总结 一、需求提出 在默认情况下,RuoYi 微…...
NVR小程序接入平台/设备EasyNVR深度解析H.265与H.264编码视频接入的区别
随着科技的飞速发展和社会的不断进步,视频压缩编码技术已经成为视频传输和存储中不可或缺的一部分。在众多编码标准中,H.265和H.264是最为重要的两种。今天我们来将深入分析H.265与H.264编码的区别。 一、H.265与H.264编码的区别 1、比特率与分辨率 H.…...
Redisson常用方法
Redisson 参考: 原文链接 定义:Redisson 是一个用于与 Redis 进行交互的 Java 客户端库 优点:很多 1. 入门 1.1 安装 <!--redission--> <dependency><groupId>org.redisson</groupId><artifactId>redisson</artifa…...
html自带的input年月日(date) /时间(datetime-local)/星期(week)/月份(month)/时间(time)控件
年月日期控件 type"date" <input type"date" id"StartDate" valueDateTime.Now.ToString("yyyy-MM-dd") /> //设置值 $("#StartDate").val("2024-12-12"); //获取值 var StartDate$("#StartDate&quo…...
告别打包烦恼:Qt Installer Framework 4.6 保姆级教程,从配置到生成exe安装包
Qt Installer Framework 4.6 终极实战指南:从零构建专业级安装包 当你终于完成了一个Qt应用的开发,编译了Release版本,甚至用windeployqt处理了依赖,接下来面临的挑战是如何将这些文件打包成一个专业的安装程序。这正是Qt Instal…...
零服务器生产环境监控与日志管理终极指南:保障Web应用稳定运行的10个关键策略
零服务器生产环境监控与日志管理终极指南:保障Web应用稳定运行的10个关键策略 【免费下载链接】zero Zero is a web server to simplify web development. 项目地址: https://gitcode.com/gh_mirrors/ze/zero Zero Server是一款革命性的Web服务器,…...
实战:在无商店的Win10企业版ThinkPad上,通过PowerShell手动部署Lenovo Vantage
1. 为什么需要手动部署Lenovo Vantage 很多ThinkPad用户可能都遇到过这样的困扰:新装的Windows 10企业版系统找不到微软应用商店,而Lenovo Vantage这个必备的管理工具又只能通过商店安装。作为一个长期使用ThinkPad的技术博主,我完全理解这种…...
Janus-1.3B:1.3B参数解锁多模态理解生成新可能
Janus-1.3B:1.3B参数解锁多模态理解生成新可能 【免费下载链接】Janus-1.3B Janus-1.3B:新一代统一多模态模型,独特的自回归框架实现视觉编码解耦,提升多模态理解与生成的灵活性,性能超越传统模型。基于DeepSeek-LLM-1…...
动态代理·学习笔记
“嗨,阿米戈。” “你好,瑞希。” “今天我将向您解释一个非常有趣的新话题:动态代理”。 “Java 有几种方法可以改变特定类的功能……” “第一个方法,传承。” “更改类行为的最简单方法是创建一个继承原始(基)类的新类,并覆盖其方法。然后,使用派生类而不是原始…...
暗黑破坏神:技术焕新与经典重构——DevilutionX的跨平台复兴之路
暗黑破坏神:技术焕新与经典重构——DevilutionX的跨平台复兴之路 【免费下载链接】devilutionX Diablo build for modern operating systems 项目地址: https://gitcode.com/gh_mirrors/de/devilutionX 在游戏产业飞速迭代的今天,如何让经典IP在现…...
node-sass 构建失败问题解决方法
你遇到的 node-sass 构建失败是因为缺少编译工具或 Python 版本问题。 由于你只需要压缩 ui.js 这一个文件,无需完整安装所有依赖。下面提供两种方案,推荐方案一(快速压缩)。 对于仅压缩 ui.js(推荐) 1.安装…...
RAG技术新篇章:Modular RAG模块化架构如何引爆效率与效果?
本文深入解析了RAG技术的演进历程,从最初的Naive RAG到Advanced RAG,再到如今的Modular RAG,阐述了三者间的继承与发展关系。Modular RAG通过模块化设计和智能编排,实现了更高的灵活性和可扩展性。其核心在于Orchestration编排模块…...
学术PDF处理流水线:OpenClaw+Qwen3-32B-Chat镜像实现论文精读
学术PDF处理流水线:OpenClawQwen3-32B-Chat镜像实现论文精读 1. 为什么需要自动化论文精读工具 作为一名经常需要阅读大量学术文献的研究者,我长期被三个问题困扰:一是PDF文档的信息密度太高,逐字阅读耗时耗力;二是跨…...
Blender置换贴图终极指南:5步让3D模型瞬间拥有真实细节
Blender置换贴图终极指南:5步让3D模型瞬间拥有真实细节 【免费下载链接】awesome-blender 🪐 A curated list of awesome Blender addons, tools, tutorials; and 3D resources for everyone. 项目地址: https://gitcode.com/GitHub_Trending/aw/aweso…...
