ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
1 июля
154043
Iharch (17.04.2009 14:40, просмотров: 1014)
Непонятки с отладчиком от Keil MDK 3.40. Может кто пояснит. Обращался на telesys - не помогли. Есть такой код для функции 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 c формированием загрузочного образа.Один из модулей проекта - "memory" содержит только одну эту функцию main() Задаю симулятор и запускаю режим отладчика. курсор симулятора правильно прыгает и останавливается на первый оператор функции main().В дисассемблерном окне - курсор тоже на первой комманде функции main(). Отладчик работает хорошо. Но! Если я заремлю две функции- вот так: //USB_Init(); /* USB Initialization */ //USB_Connect(TRUE); /* USB Connect */ После линковки в загрузочном образе остаётся единственный модуль - "memory" c единственной функцией main() , ну и стартап. При запуске отладчика его курсор почему-то вообще пропадает из окна исходника с функцией main(), в окне Сall Stack текущая позиция отладчика - это функция из модуля проекта - "mscuser", который уже не присутствует в загрузочном имидже, а в окне дисассемблера - позиция курсора отладчика на Си-операторе функции из несуществующего модуля, но с ассемблерными кодами,соответствующими первой комманде функции main(). В чем тут дело?