|
Проект по заданному адресу |
|
|
|
Mar 6 2008, 10:57
|

Местный
  
Группа: Свой
Сообщений: 232
Регистрация: 26-02-07
Из: г. Зеленоград
Пользователь №: 25 669

|
IAR 4.12 Mega128 Есть ли компактный/простой способ разместить ВЕСЬ проект начиная с заданного адреса (myAdres)? Если есть пожалуйста подскажите. Рихтовка файла *.xls "загоняет" код в нужные адреса, но оствляет Код 0x0000 JMP ?C_STARTUP ...... ?C_STARTUP: RESTART: myAdres ...... по адресу 0x0000, а вот этого и хотелось бы избежать.
--------------------
Вяжешь - вой, а поедешь - песни пой. Между "хочу" и "можно" всегда есть дистанция
|
|
|
|
|
 |
Ответов
|
Mar 6 2008, 11:19
|

Профессионал
    
Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555

|
Цитата(IJAR @ Mar 6 2008, 13:57)  Рихтовка файла *.xls "загоняет" код в нужные адреса, но оствляет Код 0x0000 JMP ?C_STARTUP по адресу 0x0000, а вот этого и хотелось бы избежать. надо или не использовать библиотеку, или удалить из библиотеки ?RESET ( используя XLIB)(почему то в 4ой версии переопределение точки входа не отключает использования этого блока из библиотеки и его надо принудительно выкидывать что бы сделать свой стартап). Но при этом вы отключите переход на ?C_STARTUP, если вам стандартная инициализация нужна вам надо вставить jmp ?C_STARTUP по адресу входа, или свой стартап (достаточно только стеки проинитить все остальное можно на С сделать)
|
|
|
|
|
Mar 6 2008, 12:42
|

Местный
  
Группа: Свой
Сообщений: 232
Регистрация: 26-02-07
Из: г. Зеленоград
Пользователь №: 25 669

|
Цитата(KRS @ Mar 6 2008, 14:19)  надо или не использовать библиотеку, или удалить из библиотеки ?RESET ( используя XLIB)(почему то в 4ой версии переопределение точки входа не отключает использования этого блока из библиотеки и его надо принудительно выкидывать что бы сделать свой стартап). Но при этом вы отключите переход на ?C_STARTUP, если вам стандартная инициализация нужна вам надо вставить jmp ?C_STARTUP по адресу входа, или свой стартап (достаточно только стеки проинитить все остальное можно на С сделать) Спасибо! Вроде бы помогла следующая рихтовка *.xls Цитата -D_..X_FLASH_START=14000/*+ Start of Flash memort*/ -Z(CODE)INTVEC=_..X_FLASH_START-(_..X_FLASH_START+_..X_INTVEC_SIZE-1) /*~*/ //-Z(CODE)TINY_F=_..X_INTVEC_SIZE-_..X_FLASH_TEND /*~*/ //-Z(CODE)NEAR_F,SWITCH,DIFUNCT=(_..X_FLASH_START+_..X_INTVEC_SIZE)-_..X_FLASH_NEND /*~*/ -Z(CODE)CODE=(_..X_FLASH_START+_..X_INTVEC_SIZE)-_..X_FLASH_END /*~*/ -Z(FARCODE)FAR_F=(_..X_FLASH_START+_..X_INTVEC_SIZE)-_..X_FLASH_END /*~*/ -Z(CODE)HUGE_F,INITTAB=(_..X_FLASH_START+_..X_INTVEC_SIZE)-_..X_FLASH_END /*~*/ //-Z(CODE)TINY_ID,NEAR_ID=_..X_INTVEC_SIZE-_..X_FLASH_END /*~*/ Проект ложится куда попросил и старт на _..X_FLASH_START Но может что то всплыть потом. Может есть что-либо более цивилизованное?
--------------------
Вяжешь - вой, а поедешь - песни пой. Между "хочу" и "можно" всегда есть дистанция
|
|
|
|
|
Mar 6 2008, 14:49
|

Местный
  
Группа: Свой
Сообщений: 232
Регистрация: 26-02-07
Из: г. Зеленоград
Пользователь №: 25 669

|
Цитата(IgorKossak @ Mar 6 2008, 16:00)  Это наиболее цивилизованный способ. AVR может стартовать либо с 0, либо с бутлоадера, а это в лучшем случае ещё 4 вполне фиксированных адреса. Хотя если у Вас уже есть код, стартующий с одного из этих адресов и в последствии осуществляющий переход на программу, лежащую по _..X_FLASH_START, то ничего такого страшного всплыть не должно. Да, конечно есть довольно хитрый BootLoader - на него и старт. Просто хотелось в свободную память прописать настроечную программу и вызывать ее при старте и зажатом Button.
--------------------
Вяжешь - вой, а поедешь - песни пой. Между "хочу" и "можно" всегда есть дистанция
|
|
|
|
|
Mar 6 2008, 18:06
|

Шаман
     
Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221

|
Цитата(IJAR @ Mar 6 2008, 16:49)  Да, конечно есть довольно хитрый BootLoader - на него и старт. Просто хотелось в свободную память прописать настроечную программу и вызывать ее при старте и зажатом Button. Вы будете смеяться, но я в своё время именно так и сделал. Старт через бутлоадер, если стоит один джампер - тестирование, если другой - остаёмся в бутлоадере, если ни одного - рабочая программа. В итоге, один воркспейс, три проекта.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|