|
|
|
Вопросы по Eclipse, CDT, Zylin embedded CDT, предлагаю обсуждать тут, может потом FAQ выжмем |
|
|
|
Apr 19 2008, 09:44
|
Гуру
Группа: Свой
Сообщений: 2 318
Регистрация: 13-02-05
Из: Липецкая область
Пользователь №: 2 613
|
Поставил amontec-sdk4arm, нашел демо проект lpc2378_demo1, уровень оптимизации поставил на 0. Компиляция без ошибок. Запустил sdk4arm-insight в режиме симуляции. Симуляция зависла на 124 while ( ((PLLSTAT & (1 << 26)) == 0) ); /* Check lock bit status */ Стал смотреть более внимательно и обнаружил непонятное для меня. Посмотрите, пожалуйста, на строки 0x71e, 0x720, 0x722 - это нормально? Код 111 PLLCFG = PLL_MValue | (PLL_NValue << 16); - 0x70a <ConfigurePLL+66>: movs r2, #11 - 0x70c <ConfigurePLL+68>: subs r3, #136 - 0x70e <ConfigurePLL+70>: str r2, [r3, #0] 112 PLLFEED = 0xaa; - 0x710 <ConfigurePLL+72>: ldr r2, [pc, #92] (0x770 <ConfigurePLL+168>) - 0x712 <ConfigurePLL+74>: movs r0, #170 - 0x718 <ConfigurePLL+80>: str r0, [r2, #0] 113 PLLFEED = 0x55; - 0x714 <ConfigurePLL+76>: movs r1, #85 - 0x71a <ConfigurePLL+82>: str r1, [r2, #0] 114 115 PLLCON = 1; /* Enable PLL, disconnected */ - 0x716 <ConfigurePLL+78>: subs r3, #4 - 0x71c <ConfigurePLL+84>: str r4, [r3, #0] 116 PLLFEED = 0xaa; - 0x71e <ConfigurePLL+86>: str r0, [r2, #0] 117 PLLFEED = 0x55; - 0x722 <ConfigurePLL+90>: str r1, [r2, #0] 118 119 CCLKCFG = CCLKDivValue; /* Set clock divider */ - 0x720 <ConfigurePLL+88>: adds r3, #132 - 0x724 <ConfigurePLL+92>: movs r2, #4 - 0x726 <ConfigurePLL+94>: str r2, [r3, #0] 120 #if USE_USB 121 USBCLKCFG = USBCLKDivValue; /* usbclk = 288 MHz/6 = 48 MHz */ - 0x728 <ConfigurePLL+96>: movs r2, #5 - 0x72a <ConfigurePLL+98>: adds r3, #4 - 0x72c <ConfigurePLL+100>: str r2, [r3, #0] 122 #endif 123 124 while ( ((PLLSTAT & (1 << 26)) == 0) ); /* Check lock bit status */ - 0x72e <ConfigurePLL+102>: ldr r2, [pc, #56] (0x768 <ConfigurePLL+160>) - 0x730 <ConfigurePLL+104>: ldr r3, [r2, #0] - 0x732 <ConfigurePLL+106>: lsls r1, r3, #5 - 0x734 <ConfigurePLL+108>: bpl.n 0x72e <ConfigurePLL+102>
|
|
|
|
|
Apr 19 2008, 10:25
|
Знающий
Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847
|
Почитал, решил присоединится в eclipse-водам Возникли вопросы: 1. В проект добавляются файлы только автоматически? То есть все, что в каталоге проекта автоматически становиться его частью? А можно ли сделать так, что автоматом файлы и каталоги не добавлялись, а я добавлял их вручную? 2. Имеются проекты разделенные на каталоги. Например include - только *.h файлы, src - только *.c файлы, linker - только скрипты линкера и т.д. Прикомпиляции eclipse создает подкаталог Debug и компилирует оттуда. Указание ключа (как я раньше делал) -Iinclude приводит к тому, что gcc ищет каталог Debug/include а не include. Пока исправил ключ на -I../include, но это не нормально, по моему. Как объяснить eclipse, чтобы он брал не только src но и другие (выбранные мной) каталоги в Debug? 3. Работаю в Linux и потому *.s и *.S - это разные типы файлов. Нашел окно, где задаются типы файлов, добавил *.S - Assembler source file. Применил, нажал ОК. Открываю снова окно настроек типов файлов - моего определения нет! Куда оно делось и как его сохранить?
--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть. © Lewis Carroll. Alice's adventures in wonderland.
|
|
|
|
|
Apr 19 2008, 11:04
|
Гуру
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095
|
Цитата(gte @ Apr 19 2008, 12:44) Симуляция зависла на 124 while ( ((PLLSTAT & (1 << 26)) == 0) ); /* Check lock bit status */ Логично. 26 бит в PLLSTAT выставляется аппаратно, о чем симулятор, скорее всего, не знает. Чтобы проскочить это место нужно либо вручную взвести в окне памяти нужный бит в нужной ячейке, либо временно добавить в предыдущий код строчку, взводящую этот бит. Цитата(gte @ Apr 19 2008, 12:44) Стал смотреть более внимательно и обнаружил непонятное для меня. Посмотрите, пожалуйста, на строки 0x71e, 0x720, 0x722 - это нормально? Вас смущает, что строки идут не по порядку адресов? Да, я это упоминал в четвертом вопросе первого поста. А в самом коде криминала не видно, кроме записи слова в байтовый PLLFEED. Не знаю, как отреаирует на это живой кристалл. Скорее всего нормально, там регистры идут с шагом 4 байта. Отступление: Аналог Девайс вот умудрились в своих ADuC70xx сделать трехбайтовый регистр FEESIGN. Какой командой они планировали в него писать? Цитата(amw @ Apr 19 2008, 13:25) 1. В проект добавляются файлы только автоматически? То есть все, что в каталоге проекта автоматически становиться его частью? А можно ли сделать так, что автоматом файлы и каталоги не добавлялись, а я добавлял их вручную? Скорее это файлы, которые он показывает в дереве проекта. А что будет компилиться - зависит от makefile. Во всяком случае так происходит, если при создании проекта выбрать makefile project. Цитата(amw @ Apr 19 2008, 13:25) При компиляции eclipse создает подкаталог Debug и компилирует оттуда. У меня он ищет makefile в каталоге проекта, т.е. в том, где лежат .cproject и .project. А уже все подкаталоги создает makefile относительно своего расположения.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Apr 19 2008, 11:15
|
Знающий
Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847
|
Цитата(Сергей Борщ @ Apr 19 2008, 14:04) Скорее это файлы, которые он показывает в дереве проекта. А что будет компилиться - зависит от makefile. Во всяком случае так происходит, если при создании проекта выбрать makefile project. У меня он ищет makefile в каталоге проекта, т.е. в том, где лежат .cproject и .project. А уже все подкаталоги создает makefile относительно своего расположения. Ну я для начала выбрал проект "Managed Make C Project", то есть Makefile создается и изменяется автоматически (я правильно понял?). Советуете использовать Standard Make C Project?
--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть. © Lewis Carroll. Alice's adventures in wonderland.
|
|
|
|
|
Apr 19 2008, 12:37
|
Гуру
Группа: Свой
Сообщений: 2 318
Регистрация: 13-02-05
Из: Липецкая область
Пользователь №: 2 613
|
Цитата(Сергей Борщ @ Apr 19 2008, 15:04) Логично. 26 бит в PLLSTAT выставляется аппаратно, о чем симулятор, скорее всего, не знает. Чтобы Да, но строки Код SCS |= 0x20; /* Enable main OSC */ while( !(SCS & 0x40) ); /* Wait until main OSC is usable */ он проходит. Правда только в том, случае, если выждать заметное время, затем остановить пошаговое выполнение, а потом продолжить. В этом случае команда выполняется. И попутно. Можно в нем как-то смотреть содержание отдельных ячеек памяти? Хочется состояние регистров смотреть. Цитата А в самом коде криминала не видно, кроме записи слова в байтовый PLLFEED. Именно это и смущает. А если переставить предыдущие команды, то уже совсем не безобидно. Правда, код все же оптимизирован, может в этом дело.
|
|
|
|
|
Apr 23 2008, 21:44
|
Гуру
Группа: Свой
Сообщений: 2 318
Регистрация: 13-02-05
Из: Липецкая область
Пользователь №: 2 613
|
Дошел до реальной платы. Пока не приехал MT-Link пытаю wiggler. Стоит Yagarto (openocd-r520, а не 592). Настроил по примеру две конфигурации openocd для загрузки и отладки из флэш. Запустил оба, затем настроенный embedded debug (native). Процесс замерз на 27% с сообщением launching dos_2368 launching: GDB commands: continue В чем может быть причина? Может wiggler? У меня NSRST на 15 ноге инверсный, а NTRST на 3 ноге нет. В зависшем положении NSRST =1, а на NTRST импульсы. Тесты сообщений выдаваемые при запуске и файлы *.cfg приложил. Да, в *.cfg из lpc2378_demo1_20070629 от Martin Thomas ошибка в строке flash bank lpc2000 0x0 0x80000 0 0 lpc2000_v2 0 12000 calc_checksum - должно быть 0x80000 0 0 0 lpc2000_v2.
|
|
|
|
|
Apr 24 2008, 05:19
|
Беспросветный оптимист
Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646
|
Цитата(amw @ Apr 19 2008, 14:15) Ну я для начала выбрал проект "Managed Make C Project", то есть Makefile создается и изменяется автоматически (я правильно понял?). Советуете использовать Standard Make C Project? Для начала в свойствах компилятора нужно указать все папки проекта. А потом отдельные файлы можно выключить (правая мышь->Exclude from build). Значки "с" и "h" на отключенных файлах становятся не сплошными, а контурными
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
Apr 24 2008, 07:47
|
Знающий
Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847
|
Цитата(MrYuran @ Apr 24 2008, 08:19) Для начала в свойствах компилятора нужно указать все папки проекта. А потом отдельные файлы можно выключить (правая мышь->Exclude from build). Значки "с" и "h" на отключенных файлах становятся не сплошными, а контурными Хм. Обратная логика . Спасибо.
--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть. © Lewis Carroll. Alice's adventures in wonderland.
|
|
|
|
|
Apr 24 2008, 08:32
|
Беспросветный оптимист
Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646
|
Цитата(amw @ Apr 24 2008, 10:47) Спасибо. Да не за что. Я вот уже склоняюсь к мысле, что надо ручками мэйк писать. Синтаксис немного необычный (для меня) ЗАТО: 1. Не надо в начале каждого проекта колупать туеву хучу всяких мелких настроечек (и всё равно что-нето забудешь) 2. Автомэйк не всегда делает так, как хочется, особенно в сложных проектах
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
Apr 29 2008, 06:14
|
бессмертным стать можно тремя способами
Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912
|
все было шеколадно пока не обновился .... работаю для АRМ после обновления имею Eclipse 3.3.2 Build id: M20080221-1800 ZylinCDT версии 4.1.16 CDT 4.0.3.200802251018 gdb6.8 косяк в том что теперь CDT упорно создает в корне воркспейса папку zylin-cdt-debugging и почему то при отладке ищет именно там собранный бинарник. с какого перепоя???? скрипт для осd в части касающейся : Код target remote localhost:3333 monitor poll monitor arm7_9 dcc_downloads enable monitor flash probe 0 monitor flash erase_sector 0 0 26 monitor flash write_bank 0 out/image.bin 0x0 monitor reset run monitor soft_reset_halt monitor arm7_9 force_hw_bkpts enable symbol-file out/image.elf thbreak main continue так вот СDT почемуто ????? выполняет команду скрипта monitor flash write_bank 0 out/image.bin 0x0 из текущей директории workspase/PROJECT_NAME/out/ а команду symbol-file out/image.elf из текущей директории workspase/zylin-cdt-debugging/out/image.elf в результате чего OCD чесно заливает бинарник во флешь а GDB чесно пытается найти ELF там где ему сказал CDT(т.е там где его ессесно нет) короче так.. кто еще не налетель на эту "фичу" не обновляйте ZylinCDT Очень возможно это просто несовместимость форматов файлов проекта от версии к версии - ну типа они там чето дорасширили в формате.
|
|
|
|
|
|
5 чел. читают эту тему (гостей: 5, скрытых пользователей: 0)
Пользователей: 0
|
|
|