Как заполнить S-запись двумя байтовыми значениями, начиная с четных границ адреса? - PullRequest
5 голосов
/ 27 сентября 2011

Когда я компилирую свой код, я в итоге получаю Motorola S записей ( a.mot ) с пробелами (весь диапазон адресов не покрывается кодом и данными).

Я хочу заполнить эти пробелы шаблоном 0x01 0x80. Однако важно, чтобы все двухбайтовые пары начинались с четных адресов. 0x0180 - это код операции с моего микро, который я хочу выполнить, если ПК достигает адреса неиспользуемой области флэш-памяти.

Прежде чем вы начнете отвечать, я хотел бы сообщить вам, что -repeat-data в srec_cat имеет проблему:

  • Учитывая два раздела, например C и D помещаются один за другим ( D после C ) в адресном пространстве.
  • Учитывая, что последний байт секции C заканчивается на адресе 0x76, а первый байт секции D находится на адресе 0x78. Другими словами, между ними есть адресный байт длиной 1 байт.

При таких условиях, если я использую опцию -repeat-data 0x01 0x80, srec cat заполнит этот байт 0x01 и начнет заполнять следующий пробел с 0x80.

Я не знаю размеров этих разделов, потому что линкер обрабатывает их.

Ответы [ 2 ]

3 голосов
/ 29 сентября 2011

Я бы написал в Windows простой парсер, работающий так:

  • Программа создает новый файл s-записи на основе того, который вы получили из компилятора.
  • Loopчерез сгенерированный файл и читать две строки s-записи одновременно.
  • Если строка является информационной строкой, S0, S9, S5 и т. Д., Просто запишите ее в новый файл.
  • Если строка 1 имеет адрес + размер меньше адреса в строке 2Вы нашли пробел.(адрес1 + размер1) <адрес2.</li>
  • Запишите строку 1 в новый файл.
  • Если вы нашли разрыв, напишите строку с вашими константами пропуска S1xx01800180 и так далее.Подсчитайте контрольную сумму по ходу работы.
  • Запишите строку 2 в новый файл.
3 голосов
/ 27 сентября 2011

Используйте srec_cat , чтобы создать файл, охватывающий требуемый диапазон адресов, полностью заполненный последовательностью 0x01 0x80, выровненной по мере необходимости.

Затем используйте srec_cat с опциями -multiple и −disable-sequence-warning, чтобы "объединить" файл "filler" с файлом образа вашего приложения. Вы должны указать файл-заполнитель в качестве первого файла, чтобы он перезаписывался данными приложения, указанными вторыми.

Он выдаст много предупреждений, но он должен работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...