реклама на сайте
подробности

 
 
> настройка проекта в ИАР 5.20, размещение функции во флеш секторе
buba
сообщение Oct 9 2009, 09:00
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 24-07-07
Из: Ташкент
Пользователь №: 29 326



Привет всем!

Работаю с LPC2468. Есть проблемка. Студия не хочет определять функцию main в неперезаписываемую область памяти (сектор) BOOTSEG, которую я определяю в файле .icf. Размещение в BOOTSEG связано с поддержкой IAP, которое не могу запустить. Так сделано, что IAP обработчик и основная программа запускаются из ф-ции main.
Код прилагается:

- <main.c>
//---------------------------------------------------------------------
__thumb __interwork main() @ "BOOTSEG";

//---------------------------------------------------------------------
// Non-rewritable Main function
//---------------------------------------------------------------------
__thumb __interwork main() @ "BOOTSEG"
{
if ( /* Program in LPC flash is correct */)
{ //start rewritable part of program
RW_main();
}
else
{ //start iap routines
IAP_ReLoad();
IAP_Restart();
}
}
//---------------------------------------------------------------------

- <lpc2468.icf>
//---------------------------------------------------------------------
...
define region ROM1_region = mem: [from __ICFEDIT_region_ROM_start__ to 0x00003FFF];
define region ROM2_region = mem: [from 0x00004000 to __ICFEDIT_region_ROM_end__];
...
place in ROM1_region { readonly section .difunct, section .cstart, section BOOTSEG };
place in ROM2_region { readonly };
//---------------------------------------------------------------------

- <lpc2468_project.map>
//---------------------------------------------------------------------
...
**************************************************
*** ENTRY LIST
***

Entry Address Size Type Object
----- ------- ---- ---- ------
?main 0x00011610 Code Gb cmain.o [4]
...
__iar_via_R0 0x00012045 Code Wk boot_segment.o [1]
__iar_via_R2 0x0001204d Code Wk boot_segment.o [1]
__iar_via_R3 0x00012051 Code Wk boot_segment.o [1]
__iar_via_R5 0x00012049 Code Wk boot_segment.o [1]
//---------------------------------------------------------------------


Необходимо, чтобы ф-ия main вставала между адресами 0x00001000 и 0x00004000.
Ф-ии __iar_via_Rn определяют iap-процедуры при вызове iap_entry( iap_command, iap_result );. Они тоже попадают в перезаписываемую часть памяти, хотя процедуры IAP_ReLoad() и другие определены в памяти BOOTSEG.

Подскажите, в чём дело?
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 23:50
Рейтинг@Mail.ru


Страница сгенерированна за 0.01348 секунд с 7
ELECTRONIX ©2004-2016