Цитата(injen-d @ Apr 8 2008, 21:46)

Пользую WinAVR-20071221. Возникла необходимость подсчитывать контрольную сумму программы, но не получается из самой программы узнать до куда, собственно, считать.
Как советует
zltigo, храните в заранее оговоренном месте в начале программы (например, сразу после векторов) адрес, по которому расположена контрольная сумма.
Цитата(injen-d @ Apr 8 2008, 21:46)

Думаю, нужно посчитать до адреса _еtext + длинна(.data), но реализовать это чет пока никак не получается. Должно же быть простое решение?
объявляете в скрипте линкера, в самом конце раздела SECTIONS фиктивный кусочек выходной секции .text (чтобы он разместился после уже заполненной .text и инициализирующих значений .data), объявляете в нем символ и присваиваете ему значение текущего адреса:
Код
SECTIONS
{
........
.text :
{
_app_end = .;
} > text
}
а в программе объявляете фиктивную внешнюю переменную с таким именем и берете ее адрес.
Цитата(injen-d @ Apr 8 2008, 21:46)

ЗЫ: на асме это делалось элементарно...

Можно пример?