arduino - 使用 make 命令编译引导加载程序 (ATMEGA2560) 时出现问题
问题描述
从上周开始,我正在为 arduino mega 工作 OTA 系统。我有一个从 SD 卡刷新固件的引导加载程序。这是 github 存储库的链接https://github.com/FleetProbe/MicroBridge-Arduino-ATMega2560/tree/master/hardware/microbridge。
根据引导加载程序 SD 卡芯片选择引脚的自述文件,应连接到arduino mega的数字引脚 53 。当我为 SD 卡的芯片选择定义引脚 D53 时,它工作正常。问题是我想将 SD 卡的默认芯片选择引脚从 D53 更改为 D44。
而自述文件(点击这里阅读自述文件)是说如果你想改变默认的CS pin(即53),你需要改变asmfunc.S中的pinout并重新编译引导加载程序。
要编译引导加载程序,我使用 microchip studio 命令提示符并制作命令。make 命令如下:
- 打扫干净
- 做所有。
以下是我用来完成OTA系统的东西:
- 开发板:Arduino Mega (ATMEGA 2560)
- 编程器:AVR-ISP-MK2
- 开发IDE:Arduino IDE(版本:1.8.13)
这是我在刻录引导加载程序后使用的代码片段:
#include <SPI.h>
#include <SD.h>
#include <avr/wdt.h>
#include "EEPROM.h"
#define sdcs 44
void setup()
{
Serial.begin(9600);
/*----(Initialise sd Module)-----*/
if (!SD.begin(sdcs))
{
Serial.println(F("Card failed, or not present"));
}
else
{
Serial.println(F("card initialized."));
}
Serial.println("Press 'F' and 'enter' to set flagbit in eeprom 0x1FF to 0xF0 ");
Serial.println("also to induce watchdog timeout which triggers the bootloader ");
Serial.println("and flashes the new firmware on the sd card");
}
void loop()
{
char inChar = '\0';
while (Serial.available() > 0)
{
inChar = Serial.read();
}
wdt_enable(WDTO_500MS); // have the wdt reset the chip
// if 500ms passes without a reset
if (inChar == 'F') {
Serial.println("");
Serial.println("rebooting and flashing with firmware.bin on sdcard");
EEPROM.write(0x1FF, 0xF0);
wdt_reset();
delay(600); // wait 600ms to timeout wdt
}
}
需要帮助。提前致谢!
解决方案
.cof 是一种目标文件,但查看您的构建文件夹,看起来构建正在创建一个 .elf 目标文件而不是 .cof。修改 make 文件以更正目标,或者make all
如果这是您的工具链打算生成的,则可能运行该文件以创建 .cof 文件。
也就是说,make clean
在任何情况下都不应该因丢失文件而失败——该项目可能已经“干净”了。它只是删除构建工件以强制完全重新构建的一种方式 - 如果这些工件不存在,那并不是真正的问题,因为目的只是在任何情况下删除它们。
推荐阅读
- django - django 嵌套序列化器和 ViewSet
- java - 为 TextView 的一部分设置可绘制背景
- mysql - 如何解决本地主机上的wordpress问题-建立数据库连接时出错
- windows - 当端口空闲时,为什么动物园管理员会抱怨绑定中的地址?
- groovy - 如何将json对象添加到groovy中的现有json数组
- python - 当我在 Python 中使用 __repr___ 时,我的代码没有打印客户列表
- string - SAS 列添加反斜杠
- sqlalchemy - 使用 Azure AD 身份验证连接到雪花的 SQLAlchemy
- vb.net - 提取字符串列表中每个字符串的重复次数 n
- assembly - stmdb 指令似乎无法正常工作 - Cortex M4 / SAM4L