這裡有一個 Arduino 程式,它可以試著幫您找出 Arduino 板子的 bootloader 是哪一種版本。
我的板子是 Pro mini,經過鑑定之後顯示如下資訊:
[bootCheck.2]
CRC 2048b @ 0x7800 = 489C
Boot loader: Duemilanove
程式碼
//bootCheck.ino
// Detect which type of boot loader is present, using a fixed built-in table
// http://opensource.org/licenses/mit-license.php
#include <avr/pgmspace.h>
#include <util/crc16.h>
#define VERSION "2"
// list of all known boot loaders with their unique signatures
struct { word crc; const char* desc; } signatures[] = {
0x489C, "Duemilanove",
0xF1A0, "Nanode (Duemilanove mod)",
0xFD70, "OptiBoot 4.4",
0, 0
};
static word CalculateChecksum (word addr, word size) {
word crc = ~0;
prog_uint8_t* p = (prog_uint8_t*) addr;
for (word i = 0; i < size; ++i)
crc = _crc16_update(crc, pgm_read_byte(p++));
Serial.print(" CRC ");
Serial.print(size);
Serial.print("b @ 0x");
Serial.print(addr, HEX);
Serial.print(" = ");
Serial.println(crc, HEX);
return crc;
}
static const char* IdentifyBootLoader (word addr, word size) {
word crc = CalculateChecksum(addr, size);
for (byte i = 0; signatures[i].desc != 0; ++i)
if (signatures[i].crc == crc)
return signatures[i].desc;
return 0;
}
void setup () {
Serial.begin(9600);
Serial.println("\n[bootCheck." VERSION "]");
const char* message = IdentifyBootLoader(0x7800, 2048);
if (message == 0)
message = IdentifyBootLoader(0x7E00, 512);
if (message == 0)
message = "(UNKNOWN)";
Serial.print("Boot loader: ");
Serial.println(message);
}
void loop () {}
剛剛測試...顯示未知...
回覆刪除