gte 6 19 апреля, 2008 Опубликовано 19 апреля, 2008 · Жалоба Поставил 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> Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
amw 0 19 апреля, 2008 Опубликовано 19 апреля, 2008 · Жалоба Почитал, решил присоединится в 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. Применил, нажал ОК. Открываю снова окно настроек типов файлов - моего определения нет! Куда оно делось и как его сохранить? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 134 19 апреля, 2008 Опубликовано 19 апреля, 2008 · Жалоба Симуляция зависла на 124 while ( ((PLLSTAT & (1 << 26)) == 0) ); /* Check lock bit status */ Логично. 26 бит в PLLSTAT выставляется аппаратно, о чем симулятор, скорее всего, не знает. Чтобы проскочить это место нужно либо вручную взвести в окне памяти нужный бит в нужной ячейке, либо временно добавить в предыдущий код строчку, взводящую этот бит.Стал смотреть более внимательно и обнаружил непонятное для меня. Посмотрите, пожалуйста, на строки 0x71e, 0x720, 0x722 - это нормально? Вас смущает, что строки идут не по порядку адресов? Да, я это упоминал в четвертом вопросе первого поста. А в самом коде криминала не видно, кроме записи слова в байтовый PLLFEED. Не знаю, как отреаирует на это живой кристалл. Скорее всего нормально, там регистры идут с шагом 4 байта. Отступление: Аналог Девайс вот умудрились в своих ADuC70xx сделать трехбайтовый регистр FEESIGN. Какой командой они планировали в него писать? 1. В проект добавляются файлы только автоматически? То есть все, что в каталоге проекта автоматически становиться его частью? А можно ли сделать так, что автоматом файлы и каталоги не добавлялись, а я добавлял их вручную?Скорее это файлы, которые он показывает в дереве проекта. А что будет компилиться - зависит от makefile. Во всяком случае так происходит, если при создании проекта выбрать makefile project. При компиляции eclipse создает подкаталог Debug и компилирует оттуда.У меня он ищет makefile в каталоге проекта, т.е. в том, где лежат .cproject и .project. А уже все подкаталоги создает makefile относительно своего расположения. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
amw 0 19 апреля, 2008 Опубликовано 19 апреля, 2008 · Жалоба Скорее это файлы, которые он показывает в дереве проекта. А что будет компилиться - зависит от makefile. Во всяком случае так происходит, если при создании проекта выбрать makefile project. У меня он ищет makefile в каталоге проекта, т.е. в том, где лежат .cproject и .project. А уже все подкаталоги создает makefile относительно своего расположения. Ну я для начала выбрал проект "Managed Make C Project", то есть Makefile создается и изменяется автоматически (я правильно понял?). Советуете использовать Standard Make C Project? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gte 6 19 апреля, 2008 Опубликовано 19 апреля, 2008 · Жалоба Логично. 26 бит в PLLSTAT выставляется аппаратно, о чем симулятор, скорее всего, не знает. Чтобы Да, но строки SCS |= 0x20; /* Enable main OSC */ while( !(SCS & 0x40) ); /* Wait until main OSC is usable */ он проходит. Правда только в том, случае, если выждать заметное время, затем остановить пошаговое выполнение, а потом продолжить. В этом случае команда выполняется. И попутно. Можно в нем как-то смотреть содержание отдельных ячеек памяти? Хочется состояние регистров смотреть. А в самом коде криминала не видно, кроме записи слова в байтовый PLLFEED. Именно это и смущает. А если переставить предыдущие команды, то уже совсем не безобидно. Правда, код все же оптимизирован, может в этом дело. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gte 6 23 апреля, 2008 Опубликовано 23 апреля, 2008 · Жалоба Дошел до реальной платы. Пока не приехал 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. __________________cfg.zip Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrYuran 21 24 апреля, 2008 Опубликовано 24 апреля, 2008 · Жалоба Ну я для начала выбрал проект "Managed Make C Project", то есть Makefile создается и изменяется автоматически (я правильно понял?). Советуете использовать Standard Make C Project? Для начала в свойствах компилятора нужно указать все папки проекта. А потом отдельные файлы можно выключить (правая мышь->Exclude from build). Значки "с" и "h" на отключенных файлах становятся не сплошными, а контурными Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
amw 0 24 апреля, 2008 Опубликовано 24 апреля, 2008 · Жалоба Для начала в свойствах компилятора нужно указать все папки проекта. А потом отдельные файлы можно выключить (правая мышь->Exclude from build). Значки "с" и "h" на отключенных файлах становятся не сплошными, а контурными Хм. Обратная логика :). Спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrYuran 21 24 апреля, 2008 Опубликовано 24 апреля, 2008 · Жалоба Спасибо. Да не за что. Я вот уже склоняюсь к мысле, что надо ручками мэйк писать. Синтаксис немного необычный (для меня) ЗАТО: 1. Не надо в начале каждого проекта колупать туеву хучу всяких мелких настроечек (и всё равно что-нето забудешь) 2. Автомэйк не всегда делает так, как хочется, особенно в сложных проектах Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 15 24 апреля, 2008 Опубликовано 24 апреля, 2008 · Жалоба Я вот уже склоняюсь к мысле, что надо ручками мэйк писать. Воистину так:-) Настоящие программеры делают так :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 134 24 апреля, 2008 Опубликовано 24 апреля, 2008 · Жалоба ЗАТО: 3. Проект легко отделяется от Эклипсы и может существовать отдельно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mdmitry 0 24 апреля, 2008 Опубликовано 24 апреля, 2008 · Жалоба 3. Проект легко отделяется от Эклипсы и может существовать отдельно. +1 Удобно и независимо от оболочки. Для Winavr только так и использую. Makefile редактирую как мне надо с добавлением необходимого. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
klen 1 29 апреля, 2008 Опубликовано 29 апреля, 2008 · Жалоба все было шеколадно пока не обновился .... работаю для АRМ после обновления имею Eclipse 3.3.2 Build id: M20080221-1800 ZylinCDT версии 4.1.16 CDT 4.0.3.200802251018 gdb6.8 косяк в том что теперь CDT упорно создает в корне воркспейса папку zylin-cdt-debugging и почему то при отладке ищет именно там собранный бинарник. :07: с какого перепоя???? скрипт для ос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 Очень возможно это просто несовместимость форматов файлов проекта от версии к версии - ну типа они там чето дорасширили в формате. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
LessNik 0 6 мая, 2008 Опубликовано 6 мая, 2008 · Жалоба Импортировал некоторые лишние файлы в проект. А как можно убрать файл из Project Explorerа, так чтобы он не удалялся с винта физически? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Johnny81 0 7 мая, 2008 Опубликовано 7 мая, 2008 · Жалоба Импортировал некоторые лишние файлы в проект. А как можно убрать файл из Project Explorerа, так чтобы он не удалялся с винта физически? Насколько я понимаю, он показывает содержимое всех вложенных папок проекта. Если вы добавляли файл руками (создав ссылку) - ее можно удалить. Если файл лежит в подпапке проекта - можно только настроить фильтры так, чтобы он не отображался в окне explorer-а. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться