当前位置: 首页 > news >正文

【Linux-点灯烧录-SD卡/USB烧写】

目录

  • 1. 烧写方式
  • 2. 烧写之代码编译
    • 2.1 led.s->led.o
    • 2.2 led.o->led.elf
    • 2.3 led.elf->led.bin
    • 2.4 反汇编:led.elf->led.dis
  • 3. 烧写之烧录到SD卡上:
    • 3.1 开启烧录软件权限:
    • 3.2 确定SD卡的格式:FAT32
    • 3.3 烧录到SD卡上
    • 3.4 SD卡插到板子上并SD卡启动
  • 4. Makefiel的文件编写:

1. 烧写方式

  这里推荐两种,一种就是SD卡烧写,一种就是USB烧写;

  • USB烧写:这里推荐一位博主写的比较好:是正点原子的IMXULL的板子
  • SD烧写:接下来就细讲一下SD烧写

2. 烧写之代码编译

  由于是在LInux环境下写的.s汇编文件,因此要编译成ARM环境下的二进制文件,这里就要用到交叉编译器:arm-linux-gnueabihf,一般整体思路就是,led.s->led.o->led.elf->led.bin,先把led.s文件编译成led.o文件,再由led.o文件链接成led.elf文件,二然后再把led.elf文件转换成二进制led.bin文件,如果进行调试要把.elf文件反汇编一下:下面简要介绍一下这些步骤的命令:

2.1 led.s->led.o

  1. arm-linux-gnueabihf-gcc -g -c led.s -o led.o :这条指令是在使用 arm-linux-gnueabihf-gcc 编译器进行编译操作。具体解释如下:
  • -g:表示生成调试信息,以便在调试时使用。
  • -c:表示只进行预处理、编译和汇编,生成目标文件(.o 文件)。
  • led.s:是要编译的源文件的名称。
  • -o led.o:指定输出的目标文件的名称为 led.o

2.2 led.o->led.elf

  1. arm-linux-gnueabihf-ld -Ttext 0x87800000 led.o -o led.elf :该指令的作用是将目标文件 led.o 链接成可执行文件 led.elf,并指定了代码段的起始地址。
  • arm-linux-gnueabihf-ld:这是链接器程序。
  • -Ttext 0x87800000:指定代码段的起始地址为 0x87800000
  • led.o:这是要链接的目标文件。
  • -o led.elf:指定输出的链接结果文件名为 led.elf

2.3 led.elf->led.bin

  1. arm-linux-gnueabihf-objcopy -O binary -S -g led.elf led.bin :是一个格式转换指令,用于将 led.elf 文件转换为二进制格式的 led.bin 文件,通过执行这个指令,可以将 led.elf 文件转换为可在目标设备上运行的二进制文件 led.bin
  • -O binary:指定输出格式为二进制。
  • -S:表示不复制源文件中的重定位信息和符号信息。
  • -g:表示不复制源文件中的调试信息。

2.4 反汇编:led.elf->led.dis

  1. arm-linux-gnueabihf-objdump -D led.elf > led.dis :使用 arm-linux-gnueabihf-objdump 工具对 led.elf 文件进行反汇编操作。
  • -D选项表示反汇编所有的段
  • > led.dis:将反汇编的结果输出到文件 led.dis 中。

3. 烧写之烧录到SD卡上:

  这里要用到烧录软件:这个软件是在Linux环境下运行的,因此要给其开启权限:

3.1 开启烧录软件权限:

  • chmod 777 imxdownload:即可读可写可执行

3.2 确定SD卡的格式:FAT32

  如果存储卡的SD卡的容量比较大的话,要进行手动的格式话,这里必须采用FAT32的格式,怎么更改格式可以参考这个视频,非常简单:链接,如不改的话挂载不到Ubuntu的系统上;

3.3 烧录到SD卡上

  • ./iimxdownload led.bin /dev/sdb :即把二进制的文件led.bin烧录到sdb设备上,其中sdb设备就是我们挂载的SD卡,因此要确定SD卡挂载在了那个上面,叫什么名称;

3.4 SD卡插到板子上并SD卡启动

  结果如下:
在这里插入图片描述

4. Makefiel的文件编写:

  还是老规矩,把一个led.s的文件变成一个可以烧录的可执行文件,如果每次都进行手动的操作这是一件非常繁琐的事情,因此可以使用make工具进行一件编译,就是把我们手动编译的过程用代码的形式描述下来,具体如下,注意make语法中不要使用空格,要使用tap的按键;具体如下:

led.bin	:	led.sarm-linux-gnueabihf-gcc	-g 	-c	led.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

相关文章:

【Linux-点灯烧录-SD卡/USB烧写】

目录 1. 烧写方式2. 烧写之代码编译2.1 led.s->led.o2.2 led.o->led.elf2.3 led.elf->led.bin2.4 反汇编:led.elf->led.dis 3. 烧写之烧录到SD卡上:3.1 开启烧录软件权限:3.2 确定SD卡的格式:FAT323.3 烧录到SD卡上3.…...

PostgreSQL自带的命令行工具06- pg_isready

PostgreSQL自带的命令行工具06- pg_isready 基础信息 OS版本:Red Hat Enterprise Linux Server release 7.9 (Maipo) DB版本:16.2 pg软件目录:/home/pg16/soft pg数据目录:/home/pg16/data 端口:5777pg_isready 是 Po…...

【请投票】嘉立创EDA中LED发光二极管是否应有统一的引脚定义?

LED发光二极管的引脚定义应该是唯一的吗? 从下面原理图可以看到,器件型号仅尾缀不同,R代表RED红色发光二极管,W代表WHITE指白色发光二极管,是同一家制造商KENTO, 左侧红色发光二极管的1脚是阴极K,2脚是阳极…...

LT6911UXB HDMI2.0 至四端口 MIPI DSI/CSI,带音频 龙迅方案

1. 描述LT6911UXB 是一款高性能 HDMI2.0 至 MIPI DSI/CSI 转换器,适用于 VR、智能手机和显示应用。HDMI2.0 输入支持高达 6Gbps 的数据速率,可为4k60Hz视频提供足够的带宽。此外,数据解密还支持 HDCP2.2。对于 MIPI DSI / CSI 输出&#xff0…...

网络培训议题@2

目录 1. 如何通过IP和掩码确定网关:2. 网络路由的意义和配置方法:3. 网络Bond模式的区别和配置场景:4. 堆叠、VLAN、Trunk、聚合的意义:5. 虚拟机环境下VIP配置和常见问题:6. VXLAN拓展: 1. 如何通过IP和掩…...

linux文本三剑客之sed

目录 1、sed特点 1)sed命令格式 2)sed命令核心功能"增删改查" 2、sed命令执行过程 3、sed核心应用 1)sed-查找p 2)sed-删除d 3)sed-增加cai 4) sed-替换s 1、sed特点 sed stream editor 流编辑器…...

nginx封禁恶意IP

网络攻击时有发生 TCP洪水攻击、注入攻击、DOS等比较难防的有DDOS等 为了数据安全,防止对手爬虫恶意爬取,封禁IP 一般封禁ip linux server层面封IP:iptablesnginx层面封IP,方式多种(但req还是会打进来,让…...

「PHP系列」PHP MySQL 简介及运用

文章目录 一、PHP MySQL 简介二、MySQL安装三、相关链接 一、PHP MySQL 简介 PHP MySQL是一个结合了PHP和MySQL的组合,用于在Web应用程序中处理数据库操作。 MySQL: 定义:MySQL是一个流行的开源关系型数据库管理系统(RDBMS&…...

深度学习论文: XFeat: Accelerated Features for Lightweight Image Matching

深度学习论文: XFeat: Accelerated Features for Lightweight Image Matching XFeat: Accelerated Features for Lightweight Image Matching PDF: https://arxiv.org/pdf/2404.19174 PyTorch代码: https://github.com/shanglianlm0525/CvPytorch PyTorch代码: https://github.…...

C++之Eigen库基本使用

目录 1、矩阵的构造和初始化操作 2、矩阵的算术运算 3、矩阵的分解和求解 4、矩阵的变换 5、矩阵的访问和修改 6、矩阵遍历 7、线性方程组求解 8、其他操作 Eigen库是一个高级的C库,用于线性代数,矩阵和向量运算,数值分析和相关的数学…...

2024年 Java 面试八股文——SpringBoot篇

目录 1. 什么是 Spring Boot? 2. 为什么要用SpringBoot 3. SpringBoot与SpringCloud 区别 4. Spring Boot 有哪些优点? 5. Spring Boot 的核心注解是哪个?它主要由哪几个注解组成的? 6. Spring Boot 支持哪些日志框架&#…...

C/C++的指针、万能指针、常量指针和指针常量

C/C的指针 1、 指针的概念: 指针是一个变量,它存储的是另一个变量的内存地址,而不是变量的值。 指针变量的声明:在C/C等语言中,我们通过使用星号*来声明一个指针变量。例如,int *ptr; 这行代码声明了一个…...

【讲解下如何解决一些常见的 Composer 错误】

🌈个人主页: 程序员不想敲代码啊 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共…...

qq空间:图片批量下载js脚本工具,javascript批量下载图片

qq空间:图片批量下载js脚本工具,javascript批量下载图片 QQ空间很多老照片想下载,但是腾讯没放开,只能一张张下载太麻烦。用前端js写了一个脚本支持批量下载。另外就是空间内的照片会被压缩,过几年再看,个…...

滑动验证码登陆测试编程示例

一、背景及原理 处理登录时的滑动验证码有两个难点,第一个是找到滑块需要移动的距离,第二个是模拟人手工拖动的轨迹。模拟轨迹在要求不是很严的情况下可以用先加速再减速拖动的方法,即路程的前半段加速度为正值,后半段为负值去模…...

爬取89ip代理、 爬取豆瓣电影

1 爬取89ip代理 2 爬取豆瓣电影 1 爬取89ip代理 import requests from fake_useragent import UserAgent from bs4 import BeautifulSoup from requests.exceptions import ProxyErrorclass SpiderIP:def __init__(self):# 定义目标地址哦self.tag_url "https://www.89i…...

XBoot:基于Spring Boot 2.x的一站式前后端分离快速开发平台

XBoot:基于Spring Boot 2.x的一站式前后端分离快速开发平台 摘要 随着信息技术的迅速发展,快速构建高质量、高可靠性的企业级应用成为了迫切需求。XBoot,作为一个基于Spring Boot 2.x的一站式前后端分离快速开发平台,通过整合微信…...

24年最新抖音、视频号0成本挂机,单号每天收益上百,可无限挂

详情介绍 这次给大家带来5月份最新的短视频挂机项目,简单易上手,而且不需要任何投入,经过测试收益非常可观,软件完全免费,特别适合没有时间但是想做副业的家人们...

Day31:单元测试、项目监控、项目部署、项目总结、常见面试题

单元测试 保证独立性。 Assert:断言,一般用来比较是否相等,比如 Assert.assertEquals 在JUnit测试框架中,BeforeClass,Before,After和AfterClass是四个常用的注解,它们的作用如下: …...

Flutter笔记:使用Flutter私有类涉及的授权协议问题

Flutter笔记 使用Flutter私有类涉及的授权协议问题 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite:http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https://blog.cs…...

极客专属:OpenClaw+百川2-13B打造个人CLI智能助手

极客专属:OpenClaw百川2-13B打造个人CLI智能助手 1. 为什么开发者需要命令行智能助手 作为一个长期与终端打交道的开发者,我每天要重复执行大量机械操作:查看日志、运行测试、整理结果。这些工作虽然简单,却极其消耗精力。直到我…...

LangGraph实战:从零构建并部署一个多功能智能体

1. LangGraph框架概述:新一代智能体开发范式 在人工智能应用开发领域,智能体(Agent)技术正经历着从简单问答到复杂任务执行的进化。LangGraph作为LangChain生态中的新一代开发框架,彻底改变了传统链式结构的局限性。我…...

ArcGIS Pro模型构建器实战:从零搭建自动化地理处理工作流

1. 初识ArcGIS Pro模型构建器 第一次接触ArcGIS Pro的模型构建器时,我完全被它的可视化操作界面惊艳到了。这就像搭积木一样,不需要写一行代码,就能把复杂的地理处理流程串起来。记得当时有个项目需要批量处理上百个乡镇的耕地数据&#xff0…...

微信无法登录时的恢复操作

本文记录 OpenClaw 中 openclaw-weixin 插件在登录态丢失、微信链接不可用、扫码登录失败时的恢复流程。2026-03-23 版本 OpenClaw 更新后曾出现微信插件失效,但在 2026-03-24 版本中已恢复。本文目标是先判断问题类型,再选择最小影响的修复方式,避免不必要的全量重装。 一、…...

PCB布局设计规范与最佳实践指南

PCB布局设计的最佳实践指南1. 布局设计基础原则1.1 结构约束优先处理在PCB布局初期,必须优先考虑机械结构约束条件:根据导入的结构文件定位所有有特殊位置要求的器件连接器1脚位置必须与结构设计完全匹配严格遵守产品设计中规定的元件限高要求1.2 美观与…...

GIS开发必备:5分钟搞定EPSG3857转WGS84坐标转换(附proj4.js完整代码)

GIS开发实战:从原理到代码实现EPSG3857与WGS84的高效坐标转换 刚接触WebGIS开发的工程师们,常常会被各种坐标系搞得晕头转向。为什么高德地图上显示的位置和GPS设备采集的数据对不上?为什么Leaflet、OpenLayers这些库加载的瓦片地图坐标数值大…...

Simcenter Amesim 2023与Matlab 2023a联合仿真:从环境配置到实战例程详解

1. 联合仿真环境搭建前的准备工作 在开始Simcenter Amesim 2023与Matlab 2023a的联合仿真之前,我们需要做好充分的准备工作。这就像盖房子前要打好地基一样重要,否则后续工作可能会遇到各种意想不到的问题。 首先说说硬件要求。根据我的实测经验&#xf…...

Agent-S智能自动化框架:企业级系统集成的技术解决方案

Agent-S智能自动化框架:企业级系统集成的技术解决方案 【免费下载链接】Agent-S Agent S: an open agentic framework that uses computers like a human 项目地址: https://gitcode.com/GitHub_Trending/ag/Agent-S 在当今快速发展的数字化转型浪潮中&#…...

简述双亲委派机制以及其优点

面试 概念:加载类的时候先交给自己的父类加载器执行,直到顶层的启动类加载器,如果父加载器能够完成加载,则交给父类加载器,否则自己尝试加载。 优点:保证类的加载的安全性,避免类的重复加载。...

开源电池管理系统:SmartBMS的技术创新与实践应用

开源电池管理系统:SmartBMS的技术创新与实践应用 【免费下载链接】SmartBMS Open source Smart Battery Management System 项目地址: https://gitcode.com/gh_mirrors/smar/SmartBMS SmartBMS是一套开源智能电池管理系统,专为锂离子电池组&#…...