Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

Может, человек уважает экстрим. Тогда карты в руки(+)

Отправлено Quasy 19 марта 2008 г. 15:42
В ответ на: Естественно. Линкеру нужно указать в xcl -файле, как я показал. А вообще - надуманная задача, серьезных людей по пустякам отвлекаешь :-) отправлено Vladimir Ljaschko 19 марта 2008 г. 15:21


Искусственно закончим функцию и подставим ей в конец flash-массив
void fun(void)
{
// С-операторы. Здесь для простоты NOP'ы
_NOP();
_NOP();
_NOP();
_NOP();
_NOP();
_NOP();

// вот тут был конец Вашей ф-ции, и здесь
// стояла закрывающая скопка }
// Но мы продолжим функцию.
// посмотреть в листинге эпилог (чем заканчивается фукнция)
// там должны быть возвраты из стека переменных...
Делаем как в подсмотренном листинге:
asm( "куча pop reg" );
asm( "ld Y+, XXX" );
// ... и все это заканчиваем кодом RET.
asm("ret");
// Функция якобы кончилась.
//И теперь располагайте свои константы
asm("DW 0x1234");
asm("DW 0x4567");
..............
// здесь компилятор поставит
RET; // ну и хрен с ним
} // конец функции.

Вот так получилось. Но изменяя опции проекта надо каждый раз смотреть не поменялся ли эпилог.


1051 void fun(void)
\ fun:
1052 {
\ 00000000 REQUIRE __RSTACK_in_external_ram
1053 _NOP();
\ 00000000 0000 NOP
1054 _NOP();
\ 00000002 0000 NOP
1055 _NOP();
\ 00000004 0000 NOP
1056 _NOP();
\ 00000006 0000 NOP
1057 _NOP();
\ 00000008 0000 NOP
1058 _NOP();
\ 0000000A 0000 NOP
1059 asm("ret");
\ 0000000C 9508 ret
1060 asm("DW 0x1234");
\ 0000000E 1234 DW 0x1234
1061 asm("DW 0x5678");
\ 00000010 5678 DW 0x5678
1062 }
\ 00000012 9508 RET
1063




Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 85:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru