Цитата
Где можно почитать про эти bin?
Здеся!!!
Бинарный файл в общем случае - это последовательность произвольных (а не только текстовых) символов.
В нашем случае - это образ (дамп) flash-памяти МК, который содержит исполняемый код (машинные инструкции) и данные
Конвертируется из hex-файла специальными утилитами. одну я уже упоминал - hex2bin.exe. В инете их можно найти кучу. Я в Дельфях сделал свою примерно за полтора часа.
Любой программатор программирует МК БИНАРНЫМИ данными, а не в HEX'овом виде, перевод осуществляется перед прошивкой.
Проще говоря HEX-формат - это текстовая запись любых бинарных данных в текстовом виде
Например -
:103510009AE010929E0A019690939B0A80939A0AD1
: - обязательный признак
10 - длина данных =16 (в 16-тиричном виде)
3510 - смещение
00 - команда что строка с данными(еще есть 01,02,03,04)
9AE010929E0A019690939B0A80939A0A - 16 байт полезной нагрузки
D1 - контрольная сумма
Насчет привязки объекта в WinAVR
// привязка секции (имени) к определенному адресу
// выполняется в Настройках Проекта => Custom Options => Linker Options
-Wl,--section-start=.TableCoef=0x0800
// адрес в БАйтах
// привязка объекта к фиксированной по адресу секции (имени)
ubyte tcoef2[2] __attribute__((section(".TableCoef"))) =
{
// #include "coef2.h"
};
// взятие адреса
register ubyte *address ;// asm("r14");
address = (ubyte*)tcoef2;
bplis = pgm_read_byte( address++);
// содержание coef2.h :
0x05,0x09,0xEB,0xA5,0xDD,0xCA // comment
,0x05,0x08,0x22,0xE2,0x2A,0xAB
,0x09,0x00,0x08,0x00,0x80,0x00, 0x81,0x08,0x88,0x00
У меня использовался массив, но можно сделать и набор любых объектов