[an error occurred while processing this directive] [an error occurred while processing this directive]
Делал но не для С16x, но imxo это не важно
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
[an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive]

Отправлено Romario 18 октября 2001 г. 12:31
В ответ на: Имеется в виду откомпилировал один раз и можно помещать в любую область памяти и будет работать (по типу драйверов для RT-11) отправлено Boris Barbaris 18 октября 2001 г. 11:53

для этого нужно, чтобы Ваш компилятор поддерживал Position Independed Data (PID) и Position Independed Code (PIC) если это имеется, все очень просто и легко. Остается оснастить свою программу (например в начале) примерно таким заголовком в формате:
(offset,value):
0 SP (Stack Pointer)
4 PC (Programm counter)
8 0x11223344 (что-нибудь не совпадающее с op-code процессора)
12 _text - далее названия в зависимости от линкера
16 _etext
20 _data
24 _edata
28 _bstart
32 _bend
36 _hstart
40 _hend
44 pointer to module name in RAM (название программы или ее ключи запуска)
48 0x11223344
в моем случае value 4-х байтные.
Далее, загрузчик ищет во FLASH комбинацию 0x11223344...0x11223344 и в соответствии с правилами копирования (инициализации)областей программы это делает.

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru