Есть такой код для функции main() из демопроекта USBmem для LPC2148 от Keil:
int main (void) { DWORD n;
for (n = 0; n < MSC_ImageSize; n++) { /* Copy Initial Disk Image */ Memory[n] = DiskImage[n]; /* from Flash to RAM */ }
IODIR1 = LED_MSK; /* LED's defined as Outputs */ IOCLR1 = LED_TEST; /* */ USB_Init(); /* USB Initialization */ USB_Connect(TRUE); /* USB Connect */
while (1); /* Loop forever */ } Проект линкуется с десятка модулей в основном для работы с USB. Один из модулей проекта - "memory" содержит только одну эту функцию main()
Задаю симулятор и запускаю режим отладчика. курсор симулятора правильно попадает на main().
Но!
Если я заремлю две функции- вот так: //USB_Init(); /* USB Initialization */ //USB_Connect(TRUE); /* USB Connect */
После линковки в загрузочном образе остаётся единственный модуль - c единственной функцией main() , и модуль startup.
При запуске отладчика его курсор почему-то вообще пропадает из окна исходника с функцией main(), в окне Сall Stack отображается имя некоторой функции, которая уже не присутствует в загрузочном имидже проекта , в окне дисассемблера - позиция курсора отладчика на Си-операторе неприсутствующей функции, но с ассемблерными кодами, функции main().
В чем тут дело?
|