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

news2024/9/23 9:25:15

目录

  • 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.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

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

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

相关文章

安卓跑马灯效果

跑马灯效果 当一行文本的内容太多,导致无法全部显示,也不想分行展示时,只能让文字从左向右滚动显示,类 似于跑马灯。电视在播报突发新闻时经常在屏幕下方轮播消息文字,比如“ 快讯:我国选手 *** 在刚刚结束…

(014) java.math.BigInteger cannot be cast to java.lang.Long

文章目录 问题原因 问题 mysql 和 Java 在进行数据类型的映射时,报错: 原因 部分 jdk8 和高版本的 jdk 对 mysql 的 BigInteger 类型转换为 Java的 Long 类型认为是错误的类型转换。 1.解决方法一:更换兼容的 jdk8版本。 2.解决方法二&am…

C++:特殊类的设计 | 单例模式

目录 1、特殊类的设计 2、设计一个类,不能被拷贝 3、设计一个类,只能在堆上创建对象 4、设计一个类,只能在栈上创建对象 5、设计一个类,不能被继承 6、单例模式 1、饿汉模式 2、懒汉模式 1、特殊类的设计 在实际应用场景中…

集合定义和使用方法

一.集合的长度 集合的长度,可以添加和删除,长度也会跟着去发生改变,数组一旦创建完成他的长度就不会发生改变。 二.集合的定义方式 ArrayList<String> list new ArrayList(); 三.集合能存储的数据类型 集合能够存储引用数据类型,存储基本数据类型需要使用包装类: 四…

vs配置cplex12.10

1.创建c空项目 2.修改运行环境 为release以及x64 3.创建cpp文件 4.鼠标右键点击项目中的属性 5.点击c/c&#xff0c;点击第一项常规&#xff0c;配置附加库目录 5.添加文件索引&#xff0c;主要用于把路径导进来 6.这一步要添加的目录与你安装的cplex的目录有关系 F:\program…

vue管理系统导航中添加新的iconfont的图标

1.在官网上将需要的图标&#xff0c;加入项目中&#xff0c;下载 2.下载的压缩包中&#xff0c;可以选择这两个&#xff0c;复制到项目目录中 3.如果和之前的iconfont有重复&#xff0c;那么就重新命名 4.将这里的.ttf文件&#xff0c;也重命名为自己的 5.在main文件中导入 6.在…

九泰智库 | 医械周刊- Vol.24

⚖️ 法规动态 国家药监局&#xff1a;2款创新器械获批上市 4月28日国家药品监督管理局公告&#xff0c;批准心擎医疗&#xff08;苏州&#xff09;股份有限公司“体外心室辅助设备”和“体外心室辅助泵头及管路”创新产品注册申请。 体外心室辅助设备由磁悬浮马达、控制主机…

Python语言在地球科学中地理、气象、气候变化、水文、生态、传感器等数据可视化到常见数据分析方法的使用

Python是功能强大、免费、开源&#xff0c;实现面向对象的编程语言&#xff0c;Python能够运行在Linux、Windows、Macintosh、AIX操作系统上及不同平台&#xff08;x86和arm&#xff09;&#xff0c;Python简洁的语法和对动态输入的支持&#xff0c;再加上解释性语言的本质&…

U盘提示“被写保护”无法操作处理怎么办?

今天在使用U盘复制拷贝文件时&#xff0c;U盘出现“U盘被写保护”提示&#xff0c;导致U盘明明有空闲内存却无法复制的情况。这种情况很常见&#xff0c;很多人在插入U盘到电脑后&#xff0c;会出现"U盘被写保护"的提示&#xff0c;导致无法进行删除、保存、复制等操…

力扣每日一题110:平衡二叉树

题目 简单 给定一个二叉树&#xff0c;判断它是否是 平衡二叉树 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;true示例 2&#xff1a; 输入&#xff1a;root [1,2,2,3,3,null,null,4,4] 输出&#xff1a;false示例 3&#xff1a; …

ComfyUI中的图像镜像反转(3种方式)

用下面的节点就可以让图片左右镜像反转&#xff0c;如下 如果想要上下翻转呢&#xff1f;用下面的节点&#xff0c;如下 这个节点不仅可以上下翻转&#xff0c;还可以左右翻转&#xff0c;把方向设置为水平就行&#xff0c;即设置为level&#xff0c;如下 或者用下面这个节点也…

动态规划——斐波那契数列模型:91.解码方法

文章目录 题目描述算法原理1.状态表示2.状态转移方程3.初始化⽅法⼀&#xff08;直接初始化&#xff09;⽅法⼆&#xff08;添加辅助位置初始化&#xff09; 4.填表顺序5.返回值 代码实现C优化Java优化 题目描述 题目链接&#xff1a;91.解码方法 算法原理 类似于斐波那契…

Elasticsearch初步认识

Elasticsearch初步认识 ES概述基本概念正向索引和倒排索引IK分词器ik_smart最少切分ik_max_word为最细粒度划分 ES索引库基本操作对索引库操作对文档操作 ES概述 Elasticsearch&#xff0c;简称为 ES&#xff0c;是一款非常强大的开源的高扩展的分布式全文检索引擎&#xff0c…

Linux基础之makefile/make

目录 一、背景 二、makefile和make的讲解 2.1 使用方法 2.2 伪目标文件 2.3 文件的属性以及属性的更新 2.4 makefile的自动推导 一、背景 这里会提及为什么要使用makefile和make&#xff0c;以及他们是什么和作用。 会不会写makefile&#xff0c;从一个侧面说明了一个人是…

JS基础:输出信息的5种方式详解

你好&#xff0c;我是云桃桃。 一个希望帮助更多朋友快速入门 WEB 前端的程序媛。 云桃桃-大专生&#xff0c;一枚程序媛&#xff0c;感谢关注。回复 “前端基础题”&#xff0c;可免费获得前端基础 100 题汇总&#xff0c;回复 “前端基础路线”&#xff0c;可获取完整web基础…

基于LLama3、Langchain,Chroma 构建RAG

概要&#xff1a; 使用Llama3 Langchain和ChromaDB创建一个检索增强生成&#xff08;RAG&#xff09;系统。这将允许我们询问有关我们的文档&#xff08;未包含在训练数据中&#xff09;的问题&#xff0c;而无需对大型语言模型&#xff08;LLM&#xff09;进行微调。在使用RA…

【企业动态】东胜物联正式加入EnOcean联盟,携手为智慧楼宇及能源管理提供更稳定的硬件解决方案

2024年4月&#xff0c;东胜物联&#xff08;Dusun&#xff09;宣布正式加入EnOcean联盟。EnOcean联盟是一个由来自建筑行业的400多家公司组成的全球性组织。它以EnOcean无线标准&#xff08;ISO/IEC 14543-3-10/11&#xff09;为基础&#xff0c;为可持续建筑自动化建立了创新的…

短剧APP开发:百亿短剧市场规模下的收益密码

短剧进入到大众的视野中&#xff0c;成为影视新行业&#xff0c;成为了中老年人茶余饭后的休闲方式&#xff0c;也成为了年轻人的“电子榨菜”。短剧时长短、节奏快&#xff0c;观众可以在短时间内看完一部剧&#xff0c;波澜起伏的剧情能够推动短剧的剧情&#xff0c;吸引观众…

【MRI重建】基于L+S方法的加速动态成像(MATLAB)

关于 L+S 模型很自然地可以表示动态 MRI 数据。重建欠采样数据需要 k−t 空间(采集)与 L 的奇异向量和 S 的稀疏域之间的不相干性。 L 和 S 之间的不相干性是背景和动态分量稳健分离所必需的。多线圈 L+S 重建是使用凸优化方法制定的,其中核范数用于强制 L 中的低秩,而 l1 …

58行代码把Llama 3扩展到100万上下文,任何微调版都适用 | 最新快讯

量子位公众号 QbitAI 堂堂开源之王 Llama 3&#xff0c;原版上下文窗口居然只有……8k&#xff0c;让到嘴边的一句“真香”又咽回去了。 在 32k 起步&#xff0c;100k 寻常的今天&#xff0c;这是故意要给开源社区留做贡献的空间吗&#xff1f; 开源社区当然不会放过这个机会&a…