Разработка, производство и продажа радиоэлектронной аппаратуры
|
Требуется программист в Зеленограде - обработка данных с датчиков; ColdFire; 40 тыс.
e-mail: jobsmp@pochta.ru
|
Кто умеет комплировать программы контроллеров 280х в версиях CGT с 5.1, разделяя программу на FLASH+RAM ?
Отправлено
Ушаков Михаил (62.220.32.86) 08 января 2010, г. 19:06
При отладке большой программы часть отлаженных модулей можно держать во FLASH. Но обязательно
следует выполнить условие: функции, отправленные во FLASH не должны вызывать функций, находящихся в RAM.
Иначе после модификации программы, как правило, изменяются адреса вызова функций, и тогда код во FLASH
также изменяется и её придётся перепрограммировать.
Перешёл с CGT 5.1.4 назад на 5.0.2 несмотря на появившуюся возможность условной компиляции в файлах .cmd.
Это позволяет легко переключаться с отладочного варианта распределения памяти (часть кода программы в RAM )
на только FLASH путём активации или запрета единственной строки в файле .cmd (к примеру:
#define FUNC_TO_RAM_DEBUG).
Правда, константы, определенные в .c / .h - файлах не могут использоваться в файлах .cmd
(или, по крайней мере, я не знаю как это делать), но это не столь существенно и можно пережить.
Причина обратного перехода: новый Linker игнорирует предлагаемый порядок сборки проекта и при расположении
программы во FLASH+RAM (при отладке) каждый раз требуется перешивать FLASH, что не есть хорошо (теряется смысл
делить программу на отлаживаемые модули и держать их в ОЗУ).
У меня установлен порядок: сначала main.c (см. закладку Link Order для установки порядка). При правильном
исходе main.obj попадает в RAM с самого начала блока, отведенного для программы (0x8000), т.е. всякий раз
этот адрес один и тот же. Этот ход сделан в угоду модулю args_main.obj из библиотеки rts2800_ml.lib,
передающему управление функции main().
Удивительно, но новые CGT с 5.1 игнорируют предлагаемый порядок сборки проекта и модуль main.obj после модификации
программы оказывается на новом месте. Писать на Texas Ins. пробовал, правда на другую тему. Сказали, что исправим,
но "воз и ныне там"... Повторно стучаться в глухую стену желания нету...
Составить ответ | Вернуться на конференцию
Ответы