arduino - 烧录hex - 以mega2560r3为例

本文介绍了如何通过FreematicsBuilder将hex文件烧录到ArduinoMega2560R3板子上,首先确认硬件和软件正常,然后下载并使用FreematicsBuilder进行烧录,最后通过程序的反馈验证烧录成功。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

arduino - 烧录hex - 以mega2560r3为例

概述

和同学讨论问题, 他要试试烧录一个编译好的hex到arduino板子中, 我们用的是mega2560r3官方版.
都是arduino小白, 开始做实验时, 用的arduinoIDE从源码编译烧录.
他这次想从hex向arduino板子烧录, 应该是想保护源码.

将mega2560r3用USB线接到本本, 先用arduinoIDE从源码编译上传到板子, 好使.
上传完, 我们的程序在DTR跳变时, 会主动上报开机信息.

这说明板子是好的.

开始找了几个工具(Arduino烧录HEX软件-0807-3.rar, AVRDUDESS-2.14-setup.exe, OpenJumper™ Serial Assistant 1.3.6beta.rar), 载入hex后, 开始向板子烧录, 都不好使.

而这几个工具都是前面同学用过的, 工具本身没问题.
也许是板子的烧录协议升级了, 或者工具年份太早了, 和这几年的arduino板子烧录协议不一致.

同学说, 看其他资料, 好像要动板子上的跳线.
我们又不烧录bootloader, 为啥要动板子上的跳线?
arduinoIDE都能将源码编译完, 通过USB串口烧录到板子, 那就说明是可以通过工具, 经过USB串口烧录HEX到板子, 只是烧录时通讯协议的问题.

前面找的这几个工具都比较早, 应该协议和板子不匹配.

又查了一会资料, 看到github上有个2022年的工具(Freematics Builder), 试试, 好使.

Freematics Builder的UI用法不太适应, 记录一下.

实验

确认硬件和软件都是好的

连接mega2560到本本
在这里插入图片描述
用arduinoIDE打开工程, 选好串口和板子型号, 从源码编译并烧录到板子, 会显示编译成功, 上传成功.
从arduinoIDE的源码工程生成hex到本地文件
在这里插入图片描述
在这里插入图片描述
在工程build目录的子目录中, 可以看到生成好的hex.
最好将程序的版本号啥的再改改, 让DTR跳变时上报的开机信息中看出不同, 这样可以确认确实烧入了不同的hex.

下载Freematics Builder

https://github.com/stanleyhuangyc/Freematics/releases/tag/builder
在这里插入图片描述
安装FreematicsBuilder-1.2.3-win32.exe
在这里插入图片描述
安装完后, 桌面上有快捷方式.
将使用板子串口的程序(arduinoIDE, 串口助手…)先关掉. 使Freematics Builder能正常操作arduino板子的USB串口.
打开Freematics Builder
在这里插入图片描述
这个UI有点不适应…

使用Freematics Builder烧录hex到arduino板子

选择板子类型和通讯的波特率.
在这里插入图片描述

选择要烧录的hex

在这里插入图片描述
在这里插入图片描述
可以看到hex已经载入程序.
点击Build按钮, 可以查看需要的板子程序空间和内存空间的大小.
在这里插入图片描述
点击串口按钮, 进行烧录.

在这里插入图片描述

如果是先打开的烧录程序, 后插入的arduino板子, 需要点击刷新按钮, 将板子所在的USB串口刷出来操作.
在这里插入图片描述

验证是否烧录成功

只要Freematics Builder烧录时不报错, 就差不多说明烧录成功.
在这里插入图片描述
烧录不同版本的hex, 里面的开机上报信息不一样(e.g. 程序版本号不一样), 这样就可以知道烧录了不同的hex.

也可以关闭Freematics Builder, 用串口助手连接已经烧录好的板子, 用DTR跳变按钮, 看看上报的信息的版本号是否是自己刚烧录的.
或者用将板子连上设备, 发GCode命令给板子, 看回包对不对, 有没有预期的动作.
在这里插入图片描述
当串口打开后, 当DTR为黑灯时, 点击一下, DTR变为红灯, 此时板子就自动复位,上报开机信息.

END

<think>好的,用户问的是关于UNO开发板存储位置的问题。首先,我需要明确用户指的是哪种UNO开发板。最常见的是Arduino UNO,但可能有其他品牌也有UNO命名的板子。先假设用户指的是Arduino UNO。 接下来,用户提到“存储位置”,可能有几种理解:一种是物理上的存储位置,即开发板上的存储器在哪里;另一种可能是指如何存储代码或数据到开发板的存储器中,或者是文件在计算机上的存储路径。 如果是物理存储位置,Arduino UNO主要包含三种存储器:Flash、SRAM和EEPROM。需要分别介绍这三种存储器的位置、作用以及容量。Flash用于存储程序,SRAM用于运行时的数据,EEPROM用于长期存储数据。 如果是代码存储的位置,可能需要说明程序上传后存放在Flash中,而运行时变量在SRAM中,EEPROM需要手动读写。另外,可能用户问的是在开发环境中,代码文件保存在电脑的哪个目录下,这取决于用户的设置,通常是在IDE的默认项目文件夹或用户指定的位置。 还要考虑用户可能的混淆点,比如如何查看或管理这些存储器,比如使用EEPROM库或者检查编译后的内存使用情况。可能需要提供一些示代码或操作方法。 最后,需要确认用户是否有其他意图,比如扩展存储空间的方法,比如使用外部SD卡或EEPROM芯片。这时候可以简要提及这些扩展方法。 总结下来,回答需要分情况讨论,明确存储位置的不同含义,并给出详细的解释,同时提供相关的使用建议和资源链接,帮助用户进一步学习。关于</think>“UNO开发板存储位置”的问题,通常有两种理解方向: 1. **开发板上的存储器类型和位置**(硬件层面) 2. **程序或文件在计算机中的存储路径**(软件层面) 以下是针对这两种情况的详细介绍: --- ### 一、UNO开发板上的存储器(硬件) 以最常见的 **Arduino UNO R3** 为,其内部包含三种存储器: 1. **Flash Memory(闪存)** - **位置**:集成在主板的主控芯片(ATmega328P)中。 - **用途**:存储用户上传的程序代码(`.hex` 文件)。 - **容量**:32KB(其中约 0.5KB 用于引导程序)。 2. **SRAM(静态随机存储器)** - **位置**:同样集成在 ATmega328P 芯片内。 - **用途**:临时存储程序运行时的变量和数据(断电后丢失)。 - **容量**:2KB。 3. **EEPROM(电可擦写只读存储器)** - **位置**:集成在 ATmega328P 芯片内。 - **用途**:长期保存数据(断电后不丢失)。 - **容量**:1KB。 --- ### 二、程序或文件的存储路径(软件) 1. **Arduino IDE 默认存储位置** - 用户编写的代码(`.ino` 文件)默认保存在计算机的以下路径: - **Windows**: `C:\Users\<用户名>\Documents\Arduino` - **Mac**: `/Users/<用户名>/Documents/Arduino` - **Linux**: `/home/<用户名>/Arduino` - 编译后的程序会临时存储在系统缓存中,上传后烧录到开发板的 Flash 中。 2. **自定义存储路径** -Arduino IDE 中,可通过 `文件 > 首选项 > 项目文件夹位置` 修改默认路径。 --- ### 三、扩展存储(如需要更大空间) 如果 UNO 的存储不足,可通过以下方式扩展: 1. **外部 EEPROM 芯片**(如 24C256,通过 I²C 接口扩展)。 2. **SD 卡模块**(通过 SPI 接口读写文件)。 3. **更换开发板**(如 Arduino Mega,提供更大 Flash 和 SRAM)。 --- ### 示:查看 UNO 存储使用情况 在 Arduino IDE 中上传程序时,控制台会显示存储占用: ``` 项目使用了 1234 字节(4%)的 Flash,最大为 32256 字节。 全局变量使用了 200 字节(9%)的 SRAM,剩余 1832 字节。 ``` 如果需要管理 EEPROM,可使用 Arduino 内置的 `EEPROM.h` 库: ```cpp #include <EEPROM.h> void setup() { EEPROM.write(0, 100); // 向地址0写入数据 int value = EEPROM.read(0); // 读取地址0的数据 } ``` 希望以上信息对你有帮助!如果有其他具体需求,可以进一步说明~
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值