Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум разработчиков электроники ELECTRONIX.ru _ GNU/OpenSource средства разработки _ Вопросы по Eclipse, CDT, Zylin embedded CDT

Автор: Сергей Борщ Apr 4 2008, 10:43

Чтобы не создавать по отдельной ветке на каждый мелкий вопрос, предлагаю обсуждать здесь всякие вопросы, касаемые работы в среде Eclipse. В крайнем случае можно будет при необходимости что-то "отпочковать" в отдельную ветку.

Вопрос первый - как в перспективе Debug расположить окно с переменными, регистрами и т.д. вдоль всего правого края экрана сверху вниз?

Вопрос второй - как заставить его показывать в окне регистров содержимое SPSR (для ARM), а также "затененных" регистров SP и LR (IAR их как-то показывает)?

Вопрос третий - как поставить точку останова на конкретный адрес не перезапуская отладку? Про break *addres в Debug dialog->commands->'Run' commands я знаю, но это требует перезапуска отладки. На строку в исходнике поставить можно, а если мне надо поставить на конкретную команду, причем не дожидаясь пока эта команда попадет в окно дизассемблера?

Вопрос четвертый - как его заставить показать в окне дизассемблера кусок с произвольного адреса или как "пролистать" дизассемблированный текст дальше вверх-вниз? Попутный вопрос - можно ли его заставить в этом окне показывать команды по порядку адресов - мне он часто показывает команды с пропусками или в причудливо перемешанном порядке.

Вопрос пятый - (ARM) можно ли как-то сбросить ядро не перезапуская сеанс отладки? Т.е. легким движением перевести его в ARM, SYSTEM, записать в PC 0 и остановить его на нулевом адресе.

Вопрос шестой - как его заставить запомнить, что в окне memory я хочу всегда видеть шестнадцатиричные цифры и не спрашивать об этом после каждого перезапуска отладки? При добавлении адреса в окно он этого дурацкого вопроса не задает.

Вопрос седьмой - где ставится галочка "открывать преспективу Debug при запуске отладки"? Оно спросило когда-то при создании не то проекта, не то воркспейса, я ответил неправильно а теперь не могу найти где это изменить.

Вопрос восьмой - работа с системой контроля версий. Что из каталога .metadata надо хранить в репозитории, а что создается само при старте среды? Хранить весь каталог не подходит - в нем после каждого старта среды создается куча новых файлов. Не хранить его тоже неудобно. Как я понял, в нем живут настройки Debug. Во всяком случае при переносе только проекта (без workspace) на другую машину настройки отладки пропадают (кто это придумал?? ведь в этих настройках указывается конкретный проект и выходной файл, т.е. эти настройки больше привязаны к конкретному проекту а не к workspace.)

Автор: MrYuran Apr 4 2008, 10:53

А у меня есть вопрос №0: (идиотский такой)
как вообще дебаг запустить? (не очень то и нужно, в общем-то, привычнее как-то в УАРТ тестовые сообщения выводить, но вдруг понадобится)
Я вроде пытался-пытался, но никак.
Пишет Error creating session: Exec error: Launching failed

Правда, я в последнее время компилю под релиз, наверно из-за этого.
Вообще неплохо бы создать ФАК по установке и настройке эклипс с нуля, думаю, это многим будет интересно

Автор: gotty Apr 4 2008, 11:09

Цитата(MrYuran @ Apr 4 2008, 13:53) *
как вообще дебаг запустить?

По настройке проекта для использования mspgcc есть такая инструкция http://electronix.ru/redirect.php?http://msp430.techcontent.net/wiki/index.php/IDEs/Eclipse

Автор: Непомнящий Евгений Apr 4 2008, 11:14

Цитата(Сергей Борщ @ Apr 4 2008, 14:43) *
Вопрос восьмой - работа с системой контроля версий. Что из каталога .metadata надо хранить в репозитории, а что создается само при старте среды? ...

Я пришел к тому, что workspace вообще не храню в репозитории. Один раз его настроил, после чего сделал экспорт настроек в файл (File->export->settings). Затем при необходимости просто создаю новый workspace и импортирую настройки из файла.

Автор: Сергей Борщ Apr 4 2008, 11:48

Цитата(Непомнящий Евгений @ Apr 4 2008, 14:14) *
Я пришел к тому, что workspace вообще не храню в репозитории. Один раз его настроил, после чего сделал экспорт настроек в файл (File->export->settings).
Я тоже не храню, но приходится после вытягивания проекта из репозитория на новое место кучу настроек делать вручную. Про экспорт не знал. Спасибо. Для основных настроек отличное решение. Попробовал. Нет в этом файле настроек отладчика sad.gif Нашел их в подкаталоге .metadata/.plugins/org.eclipse.debug.core/.launches/

Автор: AHTOXA Apr 4 2008, 19:08

Цитата(Сергей Борщ @ Apr 4 2008, 16:43) *
Вопрос седьмой - где ставится галочка "открывать преспективу Debug при запуске отладки"? Оно спросило когда-то при создании не то проекта, не то воркспейса, я ответил неправильно а теперь не могу найти где это изменить.


Меню Window-Preferences, слева в дереве Run/Debug-Perspectives.

Автор: COMA Apr 5 2008, 17:36

Если ничего не попутал, в CDT появилась GDB Hardware Debug. Можно и без Zylin embedded CDT отлаживать.

Автор: Сергей Борщ Apr 7 2008, 10:11

Цитата(AHTOXA @ Apr 4 2008, 22:08) *
Меню Window-Preferences, слева в дереве Run/Debug-Perspectives.
Спасибо. Седьмой вопрос закрыт. Я еще обнаружил, что можно заставить его сразу по-умолчанию выводить содержимое регистров в шестнадцатиричном виде - Window->Preferences->C/C++->Debug.

Автор: Непомнящий Евгений Apr 7 2008, 10:24

Цитата(Сергей Борщ @ Apr 4 2008, 14:43) *
Вопрос первый - как в перспективе Debug расположить окно с переменными, регистрами и т.д. вдоль всего правого края экрана сверху вниз?

Если это обычное eclipse-окно, то цепляете его за заголовок, тащите к правому краю экрана (именно экрана, а не окна редактора) - курсор примет вид "стрелка влево" и отпускаете. При этом окно расположится сверху до низу.

Автор: Сергей Борщ Apr 7 2008, 12:29

Цитата(Непомнящий Евгений @ Apr 7 2008, 13:24) *
цепляете его за заголовок, тащите к правому краю экрана (именно экрана, а не окна редактора)
Шаман! И как у меня раньше это не получалось? В ИАРе практически такая же методика... Спасибо! Работать стало гораздо удобнеее. a14.gif

Автор: MrYuran Apr 14 2008, 09:11

Цитата(Непомнящий Евгений @ Apr 4 2008, 14:14) *
Один раз его настроил, после чего сделал экспорт настроек в файл (File->export->settings)

??? !
Не понял!

У меня нету export->settings!
Есть только General->Prefences
Это то же самое? Похоже,что нет
Сёдня сдуру нажал кнопочку "Reset to defaults" в настройках проекта, потом целый час восстанавливал пути проекта, компилятора и линкёра 07.gif
Хотелось бы избежать таких проблем в будущем
И ещё: почему опадают галки в настройках "Errors parsers" билдера?

Никак не найду закономерность...

Автор: demiurg_spb Apr 14 2008, 20:36

У меня тоже есть два идиотских вопроса:
1. Где задаётся подсветка синтаксиса (хочу PROGMEM подсвечивать как часть языка С)
2. Каким-нибудь образом можно изменить порядок сортировки файлов в ProjectExplorer (хочу по имени, а не по типу).
Спасибо!

Автор: Daskar Apr 15 2008, 16:23

Цитата(demiurg_spb @ Apr 14 2008, 23:36) *
У меня тоже есть два идиотских вопроса:
1. Где задаётся подсветка синтаксиса (хочу PROGMEM подсвечивать как часть языка С)

Подсветка задаётся так:
Window->Preferences->C/C++->Editor->Syntax Coloring
а шрифты меняются почти там же:
Window->Preferences->General->Appearance->Colors and Fonts

А как быть с вопросом "0" для AVR - отладка в симуляторе?
Как настраивать окно: Create, manage, and run configuration?
Удаляю настройку для C/C++ Local Application
Для Zylin Embedded debug (Native) задаю настройки:
На вкладке Main -
имя настройки в окне Name;
в окне Project - имя проекта;
в окне C/C++ Application путь к файлу *.elf;
На вкладке Debugger -
в окне Debugger - Embedded GDB;
в поле Debugger Options на вкладке Main в окне GDB Debugger: путь к avr-gdb.exe;
что должно быть в поле GDB command file - не знаю!;
Вкладка Commands - без изменений;
Вкладка Source - Default;
Вкладка Common - Local file, в окне Display in favorites menu - галка Debug.
Компилирую проект - проект компилируется - Finished building: sizedummy
Запускаю отладку:
На вкладеке Console - No registers.
В окне Debug - Имя настройки, Embedded GDB, Thread[0] (Running) и пути к avr-gdb.exe
и файлу - *.elf
Кнопки Step Into, Step Over и т.д. - бледные. Отладка не происходит.
На вкладке Registers в контекстном меню правой кнопки выбираю все регистры - не помогает!
Подскажите pls что не так делаю?

Автор: Сергей Борщ Apr 15 2008, 21:06

Цитата(Daskar @ Apr 15 2008, 19:23) *
Подсветка задаётся так:
Window->Preferences->C/C++->Editor->Syntax Coloring
а шрифты меняются почти там же:
Window->Preferences->General->Appearance->Colors and Fonts
Я тоже излазил эти окна, но так и не нашел, где там указывать новые ключевые слова.
Цитата(Daskar @ Apr 15 2008, 19:23) *
А как быть с вопросом "0" для AVR - отладка в симуляторе?
Не пробовал, но попытаюсь на основе борьбы с внутрисхемным отладчиком:
Цитата(Daskar @ Apr 15 2008, 19:23) *
в окне Debugger - Embedded GDB;
в поле Debugger Options на вкладке Main в окне GDB Debugger: путь к avr-gdb.exe;
что должно быть в поле GDB command file - не знаю!;
Пусто. Я пробовал указывать командный файл, но он почему-то приделывал к этому файлу цыгвиновский путь и не находил. Решил иначе, см. ниже.
Цитата(Daskar @ Apr 15 2008, 19:23) *
Вкладка Commands - без изменений;
два варианта - либо перечислить команды на этой вкладке либо вписать там команду source <имя файла> и в этом файле уже указать команды. Команды должны быть примерно следующие:
Код
target remote localhost:1212  #simulavr слушает на порту 1212
load   #загрузить .elf в память симулятора
break main #по желанию. можно и break *0 - остановить на нулевом адресе.
continue #бежать до точки останова.
перед этим надо запустить simulavr. Попробуйте, вдруг поможет. Более детально описание команд для вкладки Commands нужно смтореть в описании simulavr и gdb. Как их вводить вручную во время отладки я пока не нашел.

Автор: Непомнящий Евгений Apr 16 2008, 04:42

Цитата(MrYuran @ Apr 14 2008, 13:11) *
Есть только General->Prefences
Это то же самое? Похоже,что нет

Я имел в виду именно это. Понадеялся на память и ошибся smile.gif
Сохраняются только настройки воркспейса - хоткеи, раскраска и т.д.
Цитата
И ещё: почему опадают галки в настройках "Errors parsers" билдера?

С этим не сталкивался

Автор: gte Apr 19 2008, 09:44

Поставил 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 Apr 19 2008, 10:25

Почитал, решил присоединится в eclipse-водам smile.gif
Возникли вопросы:
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. Применил, нажал ОК. Открываю снова окно настроек типов файлов - моего определения нет! Куда оно делось и как его сохранить?

Автор: Сергей Борщ Apr 19 2008, 11:04

Цитата(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 относительно своего расположения.

Автор: amw Apr 19 2008, 11:15

Цитата(Сергей Борщ @ Apr 19 2008, 14:04) *
Скорее это файлы, которые он показывает в дереве проекта. А что будет компилиться - зависит от makefile. Во всяком случае так происходит, если при создании проекта выбрать makefile project.
У меня он ищет makefile в каталоге проекта, т.е. в том, где лежат .cproject и .project. А уже все подкаталоги создает makefile относительно своего расположения.

Ну я для начала выбрал проект "Managed Make C Project", то есть Makefile создается и изменяется автоматически (я правильно понял?). Советуете использовать Standard Make C Project?

Автор: gte Apr 19 2008, 12:37

Цитата(Сергей Борщ @ Apr 19 2008, 15:04) *
Логично. 26 бит в PLLSTAT выставляется аппаратно, о чем симулятор, скорее всего, не знает. Чтобы

Да, но строки
Код
    SCS |= 0x20;            /* Enable main OSC */
while( !(SCS & 0x40) );    /* Wait until main OSC is usable */

он проходит. Правда только в том, случае, если выждать заметное время, затем остановить пошаговое выполнение, а потом продолжить. В этом случае команда выполняется.

И попутно.
Можно в нем как-то смотреть содержание отдельных ячеек памяти? Хочется состояние регистров смотреть.
Цитата
А в самом коде криминала не видно, кроме записи слова в байтовый PLLFEED.

Именно это и смущает. А если переставить предыдущие команды, то уже совсем не безобидно. Правда, код все же оптимизирован, может в этом дело.

Автор: gte Apr 23 2008, 21:44

Дошел до реальной платы. Пока не приехал 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 ( 4.05 килобайт ) : 91
 

Автор: MrYuran Apr 24 2008, 05:19

Цитата(amw @ Apr 19 2008, 14:15) *
Ну я для начала выбрал проект "Managed Make C Project", то есть Makefile создается и изменяется автоматически (я правильно понял?). Советуете использовать Standard Make C Project?

Для начала в свойствах компилятора нужно указать все папки проекта.
А потом отдельные файлы можно выключить (правая мышь->Exclude from build).
Значки "с" и "h" на отключенных файлах становятся не сплошными, а контурными

Автор: amw Apr 24 2008, 07:47

Цитата(MrYuran @ Apr 24 2008, 08:19) *
Для начала в свойствах компилятора нужно указать все папки проекта.
А потом отдельные файлы можно выключить (правая мышь->Exclude from build).
Значки "с" и "h" на отключенных файлах становятся не сплошными, а контурными

Хм. Обратная логика smile.gif.
Спасибо.

Автор: MrYuran Apr 24 2008, 08:32

Цитата(amw @ Apr 24 2008, 10:47) *
Спасибо.

Да не за что.
Я вот уже склоняюсь к мысле, что надо ручками мэйк писать.
Синтаксис немного необычный (для меня)
ЗАТО:
1. Не надо в начале каждого проекта колупать туеву хучу всяких мелких настроечек (и всё равно что-нето забудешь)
2. Автомэйк не всегда делает так, как хочется, особенно в сложных проектах

Автор: AHTOXA Apr 24 2008, 09:14

Цитата(MrYuran @ Apr 24 2008, 14:32) *
Я вот уже склоняюсь к мысле, что надо ручками мэйк писать.


Воистину так:-)

Цитата(MrYuran @ Apr 24 2008, 14:32) *
Настоящие программеры делают так


smile.gif

Автор: Сергей Борщ Apr 24 2008, 09:27

Цитата(MrYuran @ Apr 24 2008, 11:32) *
ЗАТО:

3. Проект легко отделяется от Эклипсы и может существовать отдельно.

Автор: mdmitry Apr 24 2008, 10:54

Цитата(Сергей Борщ @ Apr 24 2008, 13:27) *
3. Проект легко отделяется от Эклипсы и может существовать отдельно.

+1
Удобно и независимо от оболочки. Для Winavr только так и использую. Makefile редактирую как мне надо с добавлением необходимого.

Автор: klen Apr 29 2008, 06:14

все было шеколадно пока не обновился ....

работаю для А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.gif с какого перепоя????

скрипт для ос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 May 6 2008, 12:56

Импортировал некоторые лишние файлы в проект.
А как можно убрать файл из Project Explorerа, так чтобы он не удалялся с винта физически?

Автор: Непомнящий Евгений May 7 2008, 04:04

Цитата(LessNik @ May 6 2008, 16:56) *
Импортировал некоторые лишние файлы в проект.
А как можно убрать файл из Project Explorerа, так чтобы он не удалялся с винта физически?

Насколько я понимаю, он показывает содержимое всех вложенных папок проекта. Если вы добавляли файл руками (создав ссылку) - ее можно удалить. Если файл лежит в подпапке проекта - можно только настроить фильтры так, чтобы он не отображался в окне explorer-а.

Автор: IgorKossak May 7 2008, 05:07

Цитата(LessNik @ May 6 2008, 15:56) *
Импортировал некоторые лишние файлы в проект.
А как можно убрать файл из Project Explorerа, так чтобы он не удалялся с винта физически?

Выделяете этот файл в Project Explorer и нажимаете delete. Никуда он с винта не денется. Всегда так делаю.

Автор: Непомнящий Евгений May 7 2008, 05:11

Цитата(IgorKossak @ May 7 2008, 09:07) *
Выделяете этот файл в Project Explorer и нажимаете delete. Никуда он с винта не денется. Всегда так делаю.

У меня он спросил "Are you sure you want to delete 'file' from filesystem?" И когда я ответил yes - действительно потер файл. По-моему, ваш способ работает только для руками созданных ссылок на файлы...

Автор: MrYuran May 7 2008, 05:15

Цитата(IgorKossak @ May 7 2008, 08:07) *
Выделяете этот файл в Project Explorer и нажимаете delete. Никуда он с винта не денется. Всегда так делаю.


Нажимаешь ес - честно удаляет из файловой системы и проекта.
но - оставляет и там, и там

Автор: IgorKossak May 7 2008, 06:17

Цитата(Непомнящий Евгений @ May 7 2008, 08:11) *
У меня он спросил "Are you sure you want to delete 'file' from filesystem?" И когда я ответил yes - действительно потер файл. По-моему, ваш способ работает только для руками созданных ссылок на файлы...

Файлы в проект я добавляю через Import -> File System всю папку скопом с подпапками, потом удаляю ненужное, но на диске файлы, удалённые из проекта остаются.
Не знаю то ли Вы имели в виду под ручным созданием ссылок на файлы.

Автор: LessNik May 7 2008, 06:33

У меня файл удаляется полностью с винта и с проекта. Если файл предварительно скопировать в другое место, затем удалить его из проекта (удалится физически), затем копию файла снова поместить в папку, где до этого был оригинал, то в ProjectExplorere снова он появится (после обновления проекта).

Я до этого работал в вислике (Visual Slick Edit), решил перебраться на фришный софт. Пытаюсь перетащить проект под эклипс.

Как мне это сделать быстро и безболезнено???

Мне не нужно видеть все файлы, которые у меня есть на винте в папках, но и удалять их нельзя. По файлу добавлять - не дело. Проект большой с множеством файлов и папок.

P.S. Делал через Import -> File System

Автор: Непомнящий Евгений May 7 2008, 06:49

Цитата(IgorKossak @ May 7 2008, 10:17) *
Файлы в проект я добавляю через Import -> File System всю папку скопом с подпапками, потом удаляю ненужное, но на диске файлы, удалённые из проекта остаются.
Не знаю то ли Вы имели в виду под ручным созданием ссылок на файлы.

Насколько я понимаю, импорт->файлсистем просто копирует файлы из файловой системы в подпапки проекта. При этом когда вы удаляете файл из проекта, он физически удаляется с диска. Изначальный файл, разумеется, при этом никуда не девается.
Ручное создание ссылок - это new\file\advanced\link to filesystem. При этом файл в проект не копируется. При удалении такого файла из проекта удаляется только ссылка. Файл на диске остается.


Цитата(LessNik @ May 7 2008, 10:33) *
У меня файл удаляется полностью с винта и с проекта. Если файл предварительно скопировать в другое место, затем удалить его из проекта (удалится физически), затем копию файла снова поместить в папку, где до этого был оригинал, то в ProjectExplorere снова он появится (после обновления проекта).

В проект входят все файлы и папки, которые лежат на диске в папке с проектом. Если руками добавить\потереть файлы оттуда, то они станут видны в проекте после обновления.

Цитата
Я до этого работал в вислике (Visual Slick Edit), решил перебраться на фришный софт. Пытаюсь перетащить проект под эклипс.

Как мне это сделать быстро и безболезнено???

Мне не нужно видеть все файлы, которые у меня есть на винте в папках, но и удалять их нельзя. По файлу добавлять - не дело. Проект большой с множеством файлов и папок.

P.S. Делал через Import -> File System

Тоже сидел на слике. Сейчас делаю так: пусть project - корневая папка проекта. Проект эклипса создаю в папке project. При этом он отображает в проекте все содержимое папки project. Часть содержимого можно выкинуть, настроив фильтры в project explorer. В принципе, мне оно особо не мешает, поэтому не заморачиваюсь. В таком режиме работы import(export)\to filesystem использовать не надо.
Насколько я понял igor kossak, он создает папку с проектом eclipse "сбоку" от реального проекта. Чтобы засосать файлы в проект, надо выполнить import\filesystem. При засасывании вы можете указать только те файлы и папки, которые вам реально нужны. Но при этом вы будете работать с копиями оригинальных файлов и чтобы "сохранить" ваши изменения в папке с проектом, надо сделать export\filesystem.

Автор: IgorKossak May 7 2008, 12:54

Цитата(Непомнящий Евгений @ May 7 2008, 09:49) *
Насколько я понял igor kossak, он создает папку с проектом eclipse "сбоку" от реального проекта. Чтобы засосать файлы в проект, надо выполнить import\filesystem. При засасывании вы можете указать только те файлы и папки, которые вам реально нужны. Но при этом вы будете работать с копиями оригинальных файлов и чтобы "сохранить" ваши изменения в папке с проектом, надо сделать export\filesystem.

Да, увы, так и есть. Не в ту папку смотрел.
Но делать экспорт нет необходимости, т. к. применяю Subclipse.

Автор: IgorKossak May 11 2008, 10:30

Цитата(klen @ Apr 29 2008, 09:14) *
все было шеколадно пока не обновился ....

работаю для А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.gif с какого перепоя????

Вышел ZylinCDT версии 4.1.17. Нет желания проверить на предмет указанного косяка?

Автор: IgorKossak May 12 2008, 09:16

Цитата
косяк в том что теперь CDT упорно создает в корне воркспейса папку zylin-cdt-debugging и почему то при отладке ищет именно там собранный бинарник. с какого перепоя????

В http://electronix.ru/redirect.php?http://mail.zylin.com/pipermail/zylin-discuss_zylin.com/ появилась ветка с описанием этого бага, но утвердительного ответа автора пока не последовало, хотя новая версия уже вышла.

Автор: klen May 12 2008, 14:08

чичас проверю - мне ужо терять нечего.
а Вы пока погодите smile.gif

пытаюсь эклипсу для всего насвете приладить... скатина падает под линуксом при отладке (GDB нипричем - с командной строки все шурует на оценку 5++)

и вооще поповоду качества всего насвете...
причем тенденция виднеется не только в железе и софте а в мировом-глобальном масштабе, уж не конец света наступает ли. Мысль конечно смешная но я иногда диву даюсь - признаки налицо.

обновлюсь проверю отпишусь

Нихера не поправили, желающим обновится можно не парится. Только если еще раз меня проверить - сделать копию рабочей папки эклипсы, провести апдейт, потестить и снести ее нах. Мож кому повезет smile.gif

вот скрипт

Код
symbol-file out/image.elf
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
thbreak main
continue


openocd по режнему забирает бинарник где нада и сует его в флеш.
gdb по режнему получает инструкции свеху о том что все искать нада в .....\EclipseWorkspace_arm\zylin-cdt-debugging\out


я уж грешным делом подумываю а не помоч ли Zylin, доки по плагинам есть даже на русском. Както ковырялся в исходниках Zylin CDT из интереса - чисто эмбедерских примочек было кране в них мало.

Автор: IgorKossak May 12 2008, 20:11

Цитата(klen @ May 12 2008, 17:08) *
чичас проверю - мне ужо терять нечего.
а Вы пока погодите smile.gif

Поздно smile.gif
Цитата(klen @ May 12 2008, 17:08) *
я уж грешным делом подумываю а не помоч ли Zylin, доки по плагинам есть даже на русском. Както ковырялся в исходниках Zylin CDT из интереса - чисто эмбедерских примочек было кране в них мало.

Думаю быстрее дело пойдёт.

Автор: Leen May 13 2008, 17:26

1 Мне помог разобраться в начальных настройках проекта в эклипсе вот этот атмеловский ман:http://electronix.ru/redirect.php?http://atmel.com/dyn/resources/prod_documents/doc6310.pdf (2,9 М). Внятно написано.
2 klen, не могли бы Вы описать процесс сборки arm-elf тулз в таком виде:
какой пакет с какими ключами конфигурите и в какой последовательности? Типа, конфигурим бинутилы с ключами бла-бла, собираем, конфигурим гцц с ключами бла-бла, и т.д.

Автор: klen May 13 2008, 19:08

Цитата(Leen @ May 13 2008, 21:26) *
2 klen, не могли бы .......



для ARM elf

binutils: --prefix= --disable-nls --enable-multilib --enable-interwork --target=arm-elf

gcc: --prefix= --disable-nls --disable-threads --disable-shared --enable-languages=c,c++,fortran --target=arm-elf --enable-interwork --enable-multilib --with-float=soft --with-newlib --with-headers=../../src/newlib/src/newlib/libc/include

newlib: --prefix= --target=arm-elf --enable-interwork --enable-multilib

gdb: --prefix= --disable-nls --enable-multilib --enable-interwork --target=arm-elf

Автор: Leen May 16 2008, 05:20

2 klen - спасибо, все собралось, только пришлось поправить ручками файл gcc-4.3.0/libstdc++-v3/configure.ac на предмет AC_LIBTOOL_DLOPEN.

Автор: LessNik May 16 2008, 07:20

А кто-нибудь пробовал собрать проект иаром (создать elf с отладочной информацией), а отлаживаться через эклипс, исползуя JLinkGDBServer + arm-elf-gdb?

Наблюдается какое-то странное поведение:
Ставлю точку останова на строчке while(1) в main.cpp. Видно, что программа прерывает выполнение, но while(1) не подсвечивается (вообще ничего не подсвечивается) как строчка останова. Значение глобальной переменной отображается неверно, дизасемблер не отображается. В консоль выводится следующее:

785-exec-continue
785^running
(gdb)
785*stopped,reason="signal-received",signal-name="SIGTRAP",signal-meaning="Trace/breakpoint trap",thread-id="0",frame={addr="0x90020000",func="??",args=[]}
(gdb)
786 info threads
&"info threads\n"
&"warning: RMT ERROR : failed to get remote thread list.\n"
786^done
(gdb)
787-stack-info-depth
787^done,depth="1"
(gdb)
788-stack-list-frames 0 1
788^done,stack=[frame={level="0",addr="0x90020000",func="??"}]
(gdb)
789-var-update var1
789^done,changelist=[]
(gdb)
790-var-update var2
790^done,changelist=[]
(gdb)
791-data-list-changed-registers
791^done,changed-registers=[]
(gdb)
792-data-disassemble -s 0x90020000 -e 0x90020064 -- 0
&"Cannot access memory at address 0x90020000\n"
792^error,msg="Cannot access memory at address 0x90020000"
(gdb)
793-stack-list-arguments 0 0 0
Cannot access memory at address 0x90020000
793^done,stack-args=[frame={level="0",args=[]}]
(gdb)
794-stack-list-locals 0
794^done,locals=[]
(gdb)
795-var-evaluate-expression var1
795^done,value="167772160" // Такого значения переменной быть не может
(gdb)
796-var-evaluate-expression var2
796^done,value="{...}"
(gdb)
797-data-evaluate-expression Led
797^done,value="{<No data fields>}"
(gdb)

Может что-то с elf файлом не так?

#C++ compiler options
-z2 --no_cse --no_unroll --no_inline --no_code_motion --no_tbaa
--no_clustering --no_scheduling --debug --cpu_mode
arm --endian little --cpu ARM7TDMI --stack_align 4
--interwork -e --fpu None --eec++ --dlib_config $(LIB_DIR)\dl4tpainl8n.h

# Assembler options
--cpu ARM7TDMI --fpu None -O$(OBJ_DIR)/ -s+ -M<> -w+ -r

# Linker options
...
-Oelf,as=$(TARGET).elf -Oraw-binary=$(TARGET).a79
...

Автор: MrYuran May 16 2008, 08:04

А чё это у меня какие-то фиговинки оранжевые появились? (см. на рис. стрелками указано)
И звёздочка какая-то чёрная около названия проекта?

Раньше такого не было...

Цитата
А кто-нибудь пробовал собрать проект иаром (создать elf с отладочной информацией), а отлаживаться через эклипс, исползуя JLinkGDBServer + arm-elf-gdb?

Вот уж воистину, любит русский народ поизгаляться...

Автор: Непомнящий Евгений May 16 2008, 08:08

Цитата(MrYuran @ May 16 2008, 12:04) *
А чё это у меня какие-то фиговинки оранжевые появились? (см. на рис. стрелками указано)
И звёздочка какая-то чёрная около названия проекта?

Это плагин системы контроля версий расставляет. Смысл каждой можно посмотреть в настройках плагина.

Автор: IgorKossak May 16 2008, 08:57

Цитата(MrYuran @ May 16 2008, 11:04) *
Вот уж воистину, любит русский народ поизгаляться...

На мой взгляд вполне разумное стремление.

Автор: Сергей Борщ May 16 2008, 10:33

Цитата(LessNik @ May 16 2008, 10:20) *
А кто-нибудь пробовал собрать проект иаром (создать elf с отладочной информацией), а отлаживаться через эклипс, исползуя JLinkGDBServer + arm-elf-gdb?
Пытался наоборот - создать .elf при помощи arm-elf-gcc и отлаживать его в ИАРе. Не получилось. ИАР выругался на отладочную информацию в .elf

Отладчик у ИАРа на порядок или даже два лучше чем gdb с разными GUI.

Автор: Andy Mozzhevilov May 16 2008, 10:56

Цитата(IgorKossak @ May 16 2008, 14:57) *
На мой взгляд вполне разумное стремление.

Не знаю, насколько оно разумно. Какой в нем смысл?
Если рассуждать с точки зрения лицензионности софта, так если уж ИАР-вским компилятором проект и так собирается, так и отлаживать его в том же ИАР.
Более интересно было бы как раз, собирать проект бесплатным gcc, получить elf и грузить его в ИАРовский дебагер. Но у меня это не получилось. ИАР вроде как только умеет генерить elf, но не грузить его в свой отладчик.
Сейчас как раз тут пытаюсь наладить связку gcc + OpenOCD + ARM-USB-OCD + отладка под SlickEdit с истользованием его встроенного gdb клиента. В принципе работает неплохо, но есть ньюансы с загрузкой во flash (пробую на NXP2294 и NXP2378). Иногда всё становится колом и перестает грузиться. Разбираюсь.

Автор: Сергей Борщ May 16 2008, 12:39

Цитата(Andy Mozzhevilov @ May 16 2008, 13:56) *
ИАР вроде как только умеет генерить elf, но не грузить его в свой отладчик.
Надо создать проект, состоящий из одного только .elf, тогда все работает, но без отладочной информации. Как только добавляешь CFLAGS+=-dwarf2 ИАР начинает ругаться. А без этой опции бродить по дизассемблерному листингу тосклииииво...

Автор: IgorKossak May 17 2008, 16:02

Цитата(Andy Mozzhevilov @ May 16 2008, 13:56) *
Не знаю, насколько оно разумно. Какой в нем смысл?

Работать комфортнее, не всё же отладкой решается. Вот такие у меня вкусы.

Автор: Andy Mozzhevilov May 19 2008, 03:09

Цитата(IgorKossak @ May 17 2008, 22:02) *
Работать комфортнее, не всё же отладкой решается. Вот такие у меня вкусы.

Ну вкусы вкусами, о них не спорят. Но все же - в чем комфортнее? Может я тоже так хочу, просто не знаю? smile.gif

Автор: LessNik May 20 2008, 09:46

Цитата(Andy Mozzhevilov @ May 19 2008, 07:09) *
Ну вкусы вкусами, о них не спорят. Но все же - в чем комфортнее? Может я тоже так хочу, просто не знаю? smile.gif


Мне не нравится иаровский редактор (мягко скажем) и не нравится переключаться меджу n-надцатью окнами, пытаясь найти нужное приложение (для отладки, для редактирования, особено, если работаешь сразу над несколькими проектами одновременно). А в эклипсе это можно всё очень хорошо настроить так, чтоб не напрягало. + ещё все проекты под иаровский компилятор, а времени особо нет всё переписывать под другой компилятор (его ещё выучить нужно). Вот в том и комфортнее.

Автор: Andy Mozzhevilov May 20 2008, 09:57

Цитата(LessNik @ May 20 2008, 15:46) *
Мне не нравится иаровский редактор (мягко скажем) и не нравится переключаться меджу n-надцатью окнами, пытаясь найти нужное приложение (для отладки, для редактирования, особено, если работаешь сразу над несколькими проектами одновременно). А в эклипсе это можно всё очень хорошо настроить так, чтоб не напрягало. + ещё все проекты под иаровский компилятор, а времени особо нет всё переписывать под другой компилятор (его ещё выучить нужно). Вот в том и комфортнее.

Не надо агитировать за другой редактор. Речь не о том. Есть мнение - собирать IAR-ом проект (не суть важно сейчас из-под оболочки IAR или из командной строки и другого редактора), получить выходной формат ELF, который уже отлаживать через GDB.
Утверждалось, что в этой связке что-то удобнее, комфортнее (насколько я понял в сравнении с отладкой под IAR). Вот мне и интересно знать, что?

Автор: Leen May 20 2008, 10:56

Цитата(Сергей Борщ @ Apr 16 2008, 08:06) *
Пусто. Я пробовал указывать командный файл, но он почему-то приделывал к этому файлу цыгвиновский путь и не находил.
У меня там прописан файл gdb.sim, в нем простенький скрипт для симулятора (эмулятор привинтить руки не доходят) - gdb его находит и выполняет. Не находил, когда файл с точкой перед именем был - это скрытый файл в *них (вроде бы - если не прав, поправьте).
Люди, а как в эклипсе кто мониторит SFR? Т.е. работаю я с периферией и мне надо знать в каком состоянии, например, регистр статуса PIO. Какие есть варианты по их чтению при остановке программы?

Автор: LessNik May 29 2008, 04:55

А как можно сделать(создать) разбор ошибок, возникших в результате компиляции? Чтоб отмечались строки с ошибками и к ним можно было перейти из списка ошибок.
Не получилось найти конкретного примера. Если можете, дайте ссылку.

Автор: xelax May 29 2008, 05:34

Цитата(LessNik @ May 29 2008, 08:55) *
А как можно сделать(создать) разбор ошибок, возникших в результате компиляции? Чтоб отмечались строки с ошибками и к ним можно было перейти из списка ошибок.
Не получилось найти конкретного примера. Если можете, дайте ссылку.


Window -> Show View -> Problem

Автор: MrYuran May 29 2008, 05:50

Цитата(LessNik @ May 29 2008, 08:55) *
А как можно сделать(создать) разбор ошибок, возникших в результате компиляции? Чтоб отмечались строки с ошибками и к ним можно было перейти из списка ошибок.
Не получилось найти конкретного примера. Если можете, дайте ссылку.

по моему небогатому опыту, должны быть включены соответствующие парсеры ошибок в настройках проекта. У меня почему-то иногда галки опадают и ошибки не подсвечиваются.
Закономерности особой не нашёл, но при компиляции в консоль выводится лог, в котором описание ошибки, файл и номер строки. Я включил отображение номеров строк и с тех пор особо не парюсь..

Автор: LessNik May 29 2008, 07:50

Цитата(xelax @ May 29 2008, 09:34) *
Window -> Show View -> Problem


Цитата
по моему небогатому опыту, должны быть включены соответствующие парсеры ошибок в настройках проекта. У меня почему-то иногда галки опадают и ошибки не подсвечиваются.
Закономерности особой не нашёл, но при компиляции в консоль выводится лог, в котором описание ошибки, файл и номер строки. Я включил отображение номеров строк и с тех пор особо не парюсь..


Я имел ввиду: Как можно создать САМОМУ СВОЙ СОБСТВЕННЫЙ обработчик ошибок, если стандартные не подходят. Например, компилятор выдаёт номер строки, где произошла ошибка и другую нужную информацию в формате, отличающемся от других компиляторов и поэтому стандартные обработчики ошибок не могут мне показать конкретную строку в исходнике. Зато в консоль выводится вся информация: номер строки, ошибка и причина появления

main.cpp",10 Error[Pe135]: class "BLABLA" has no member "ShowBlaBla"

Вот основываясь на этой информации мне нужно отметить в main.cpp строку 10 как ошибку и по двойному нажатии мыши на списке ошибок перейти в место возникновения ошибки.

Автор: Сергей Борщ May 29 2008, 08:05

Цитата(LessNik @ May 29 2008, 10:50) *
Я имел ввиду: Как можно создать САМОМУ СВОЙ СОБСТВЕННЫЙ обработчик ошибок, если стандартные не подходят
Писать свой плугин. За образец можно взять любой с sourceforge, например http://electronix.ru/redirect.php?http://sourceforge.net/projects/cppchecker/ или http://electronix.ru/redirect.php?http://sourceforge.net/projects/eclipse-sdcc/

Автор: Lukyanov May 31 2008, 20:05

Недавно приобрели отладочную плату Atmel STK1000 под их новый микроконтроллер AVR32 AP7000. Плата управляется ОС Linux. Всё работает нормально. В Atmel сочинили среду отладки для неё AVR32Studio. За основу взят Eclipse. Там есть пример Hello world для Linux. Он нормально компилируется, но запустить отладку никакими силами не удаётся. Кто-нибудь пользовался этой штукой? Что вообще нужно eclipse, чтобы отладить программу, для платы, на которой есть линукс?

Автор: klen Jun 1 2008, 08:38

наверно так нада рассуждать;
0. соеденить по UART лучше ethernet кабелем таргет и хост
1. таргет работает под управлением linux
это значит что для оладки процесса на таргете нада
собрать проект с клучами отладки, например -gdwarf-2
запустите его (бинарник процесса)
запустить сервер GDB (сдесьже на таргете)
2 Хост
запусть студию в котрой настроить отладку таким образом что
запускается gdb конектится к gdb серверу таргета.

общая схема отладки
host-avrstudio->host-gdb->TCP/UART transport->target-gdb-server->project_process

Автор: Johny Jul 17 2008, 20:04

А объясните новичку, где взять плагин Zylin? На их сайте ничего толкового не нашел.
По этой причине загрузил DSDP плагин для удаленной отладки - там все просто оказалось: скачал архивы, распаковал и скопировал в features и plugins.
Это новый плагин, недавно появившийся. Кто-нибудь юзал? Чем Zylin лучше/хуже?
Программу на embedded платформе запустить удалось, останов/пуск работает, регистры процессора посмотреть можно. Но вот с исходниками не работает - точки останова не работают, переменные не видны. Возможно, отладочную информацию при сборке забыл включить.

Автор: gotty Jul 18 2008, 06:10

Цитата(Johny @ Jul 17 2008, 23:04) *
А объясните новичку, где взять плагин Zylin?

Всё очень просто. Пошаговая инструкция есть на http://electronix.ru/redirect.php?http://subclipse.tigris.org/install.html. Выполнять надо с одной поправкой, вместо ссылки на http://electronix.ru/redirect.php?http://subclipse.tigris.org/... надо прописать http://electronix.ru/redirect.php?http://www.zylin.com/zylincdt

Автор: Johny Jul 18 2008, 09:00

Цитата(gotty @ Jul 18 2008, 10:10) *
Всё очень просто. Пошаговая инструкция есть на http://electronix.ru/redirect.php?http://subclipse.tigris.org/install.html. Выполнять надо с одной поправкой, вместо ссылки на http://electronix.ru/redirect.php?http://subclipse.tigris.org/... надо прописать http://electronix.ru/redirect.php?http://www.zylin.com/zylincdt


Просто почему-то мой eclipse упорно не хочет плагины из интернета забирать, наверное какие-то проблемы с настройкой сети. А в виде архивного файла, как остальные плагины Zylin отсутствует

Автор: Johny Jul 25 2008, 18:35

Проставил Zylin, попробовал.

Вероятно, проблема не в нем, но такое ощущиние, что многопоточные приложения отлаживать совершенно невозможно. Используется arm-linux-gdb из комплекта ELDK, скачанного пару лет назад.

Автор: klen Jul 26 2008, 11:01

обновил все - сам eclips, cdt, zylin-cdt. пропал гиммарой с необходимостью проекта zylin-cdt из которого GDB забирал elf.


Цитата(Johny @ Jul 25 2008, 22:35) *
Проставил Zylin, попробовал.
Вероятно, проблема не в нем, но такое ощущиние, что многопоточные приложения отлаживать совершенно невозможно. Используется arm-linux-gdb из комплекта ELDK, скачанного пару лет назад.

Я как раз собираюсь разобратся с отладкой прилагух на TionPRO (ep9315). Вероятно встанет таже проблема поскольку приложение заводит три потока для обопботки данных а один основной рулит QT интерфейс.
Покажите пожалуйста как вообще эклипс+arm-linux-gdb прикрутить к целевой плате. А то пока просто заливаю и смотрю как работает без отладчика.

Автор: amw Jul 28 2008, 05:53

Цитата(klen @ Jul 26 2008, 14:01) *
обновил все - сам eclips, cdt, zylin-cdt. пропал гиммарой с необходимостью проекта zylin-cdt из которого GDB забирал elf.
Я как раз собираюсь разобратся с отладкой прилагух на TionPRO (ep9315). Вероятно встанет таже проблема поскольку приложение заводит три потока для обопботки данных а один основной рулит QT интерфейс.
Покажите пожалуйста как вообще эклипс+arm-linux-gdb прикрутить к целевой плате. А то пока просто заливаю и смотрю как работает без отладчика.

Чесно говоря с Eclipse не пробовал.
А в общем так-же как и openocd. Залить на целевую плату gdbserver и запустить. Потом на PC запустить gdb и дать команду target remote. (ну в скрипт прописать)

Автор: Цырен Aug 5 2008, 14:46

Люди. Все кто разобрался, как компилить проекты в Eclipse под MSP430, подскажите и мне как это сделать.

Чуть ранее я настроил Eclipse под AVR, но вот с MSP чето мозгов не хватило. У меня Eclipse - 3.3.2, CDT - 4.0.3. Имею LPTшный MSPFET-программатор.
Вопросы:
1. Какие нужны плагины и утилиты, чтобы заработал компилятор и выдавал мне хекс-файлы?
2. Как настроить дебагер.
3. Можно ли прошивать MSP из Eclipse? И как это сделать.

Если можно, объясните по шагам.
Спс.

Автор: AHTOXA Aug 5 2008, 15:43

http://electronix.ru/redirect.php?http://msp430.techcontent.net/wiki/index.php/IDEs/EclipseTutor1 - это видели?

Автор: MrYuran Aug 6 2008, 05:41

Цитата(Цырен @ Aug 5 2008, 18:46) *
3. Можно ли прошивать MSP из Eclipse? И как это сделать.

Через ФЕТ не знаю как (да и нет необходимости (да и возможности - JTAG не выведен))
А через БСЛ очень просто. В менюшке тулз прикручиваем msp430-bsl из состава mspgcc - и всё отлично прошивается.
Правда, я уже с эклипса слазию. На кодеблокс. Проще и проворнее. И каспер доволен.

Автор: Цырен Aug 6 2008, 09:48

Знаете, я не очень понимаю теорию построения Eclipse под контроллер и хочу разобраться. Объясните на пальцах. Ссылку данную мне ранее я читал, но ввввввввввввв Знаю только в общих чертах, что после того, как я установил "Ява-движок JRE версии не ниже 1.4.2", "среду разработки eclipse-cpp-europa-winter-win32 со встроенным CDT С/С++ Development Toolkit", добавил CDT 4.0.3 мне требуется установить плагин компилятора MSP430.
1. Я его скачал с sourceforge  net.sf.mspgcc.zip ( 309.74 килобайт ) : 107
. Там три папки. Они были тупо скопированы в папку Plagins моего Эклипса.
2. Теперь, очевидно, требуются mspgcc, в состав которого входят разл апликухи, например, msp430-bsl, чтобы можно было скачивать прошивку в контроллер. Его я нашел в виде установочного пакета (9,92 МБ) на sourceforge. Установил (распаковал в C:\Program Files\mspgcc\ ).
3. Запускаю Эклипс.
4. Создаю новый проект. Вот скриншот.


Выбираю mspgcc elf(GNU). Выбираю тулчейны Release и Debug.
5. Создаю файл main.c с простым кодом.
6. Подключаю стандартные файлы Properties->C/C++ General->Paths and Symbols->Includes
как для Debug так и для Release

7. Задаю тип контроллера (блин, вот для AVR тип контроллера и частота кварца задается удобнее) при поможи вкладки Properties->C/C++ General->Paths and Symbols->Symbols "__MSP430_1121__".
8. Сохраняю. Компилю.
9. и тут я понимаю, что делаю что-то не так... 07.gif

И еще, что такое cygwin? Тут http://electronix.ru/redirect.php?http://msp430.techcontent.net/wiki/index.php/IDEs/EclipseTutor увидел как настраивать и компилить проект. И вообще запутался. Я что же не тот плагин установил? crying.gif

Автор: MrYuran Aug 6 2008, 10:03

Цитата(Цырен @ Aug 6 2008, 13:48) *
и тут я понимаю, что делаю что-то не так...

откуда такое понимание?
сигвин побоку, нужно ещё настроить проект. Или писать свой мэйк-файл и отключать автогенерацию мэйка.

Такое окошко есть? (проект->свойства)
надо пробежаться по вкладкам и пунктам и всё там настроить (в основном пути к библиотекам, м.б. некоторые флаги, обязательно прописать кристалл, например, msp430x149)

Автор: Цырен Aug 6 2008, 10:52

Как это бывает с АВРом я в соответствующей папке получаю хекс-файл. Тут же при компиляции ошибок нет, как и выходного файла, который можно было бы прошить, но есть предупреждение типа:

"Error launching external scanner info generator (gcc -E -P -v -dD C:/Projects/Eclipse/.metadata/.plugins/org.eclipse.cdt.make.core/specs.c)"

А про то, что тип процессора можно задавать во вкладке miscellaneous я не заметил...

Вроде пробежался по всем настройкам. Полного понимания что за что отвечает у меня нет. В поле Build Artifact у меня вообще пусто и нет возможности выбрать Artifact Type. Делаю все по наитию.
В результате опять двадцать пять. Как настраивать-то? laughing.gif help.gif

Автор: ZAA Aug 6 2008, 14:31

Уважаемые коллеги!!! Кто-нить сталкивался с проблемой такого характера в ECLIPSE (а может это руки у меня раскривушные).

В общем, собираю (давно уже) проекты в эклипсе для AT91SAM7x256 (под FreeRTOS). Причем и мэйкфайлы приходилось править (свои файлы включать, убирать, пути другие прописывать) и проект ребилдить (clean all) - никаких проблем не возникало. А недавно вот начала работать над протоколом ModbusRTU (уже почти закончила) и надо было добавить к стандарному makefile 2 файлика - один в Thumb режиме компилится (simple_serial.c), а другой в ARM (simple_serial_ISR.c). Все скомпилилось, работает. Но теперь, когда я хочу добавить в мэйкфайл какие-нить еще необходимые файлы (например для работы с MMC картой), проек компилится без ошибок, но бинарник не пашет, то есть задачи не запускаются и т. д. (хотя по отдельности modbus и mmc) работают. Приходится опять проект пересобирать и все функции валить в один файл (simple_serial.c) - и, о чудо все работает.

Помогите, плз, кто сталкивался с подобным, или тыкните носом в ошибку help.gif

В один файл не особо хочется все настройки и функции пихать!

Автор: injen-d Aug 7 2008, 17:39

Цитата(ZAA @ Aug 6 2008, 18:31) *
Уважаемые коллеги!!! Кто-нить сталкивался с проблемой такого характера в ECLIPSE (а может это руки у меня раскривушные).
...
Помогите, плз, кто сталкивался с подобным, или тыкните носом в ошибку help.gif

В один файл не особо хочется все настройки и функции пихать!

С 99% уверенностью можно сказать, что ошибка где-то в make-файле, а его то Вы и не удосужились показать.

Автор: ZAA Aug 11 2008, 05:08

Цитата(injen-d @ Aug 7 2008, 20:39) *
С 99% уверенностью можно сказать, что ошибка где-то в make-файле, а его то Вы и не удосужились показать.

Прикрепляю текст мэйкфайла)

 Makefile.txt ( 2.47 килобайт ) : 133
 

Автор: amw Aug 11 2008, 15:14

Цитата(ZAA @ Aug 11 2008, 08:08) *
Прикрепляю текст мэйкфайла)

Код
RTOSDemo.elf : $(THUMB_OBJS) $(ARM_OBJS) boot.s Makefile
    $(CC) $(CFLAGS) $(ARM_OBJS) $(THUMB_OBJS) $(LIBS) boot.s $(LINKER_FLAGS)

Что такое boot.s? Если исходник- то почему он примешан в линковку? Если объектник - то почему такое странное имя?
Не помешает еще скрипт линкера. Подозрение на то, что загрузочный код попадает не по тем адресам.
Я так понимаю компиляция и линковка идет без ошибок и варнингов?
Переставте объектный файл с векторами в самое начало перед $(ARM_OBJS) или в самом $(ARM_OBJS) поставте его первым в списке.

Автор: ZAA Aug 11 2008, 15:38

Цитата(amw @ Aug 11 2008, 18:14) *
Я так понимаю компиляция и линковка идет без ошибок и варнингов?
Переставте объектный файл с векторами в самое начало перед $(ARM_OBJS) или в самом $(ARM_OBJS) поставте его первым в списке.

Спасибо за совет. Завтра попробую. Да, все компилируется без ошибок.

Автор: Сергей Борщ Sep 10 2008, 15:32

Отвечаю на некоторые свои же вопросы.

Цитата(Сергей Борщ @ Apr 4 2008, 13:43) *
Вопрос третий - как поставить точку останова на конкретный адрес не перезапуская отладку? Про break *addres в Debug dialog->commands->'Run' commands я знаю, но это требует перезапуска отладки. На строку в исходнике поставить можно, а если мне надо поставить на конкретную команду, причем не дожидаясь пока эта команда попадет в окно дизассемблера?
Поставил эклипсу 3.4.0 ganymede, комплект разработки C/C++. Инсталлировал плагин Zylin embedded cdt 4.5.1. В окне консоли gdb теперь можно вводить команды вручную.
Цитата(Сергей Борщ @ Apr 4 2008, 13:43) *
Вопрос четвертый - как его заставить показать в окне дизассемблера кусок с произвольного адреса или как "пролистать" дизассемблированный текст дальше вверх-вниз? Попутный вопрос - можно ли его заставить в этом окне показывать команды по порядку адресов - мне он часто показывает команды с пропусками или в причудливо перемешанном порядке.
Частично решается вводом команды disassemble адрес1 адрес2 в консоли gdb.
Цитата(Сергей Борщ @ Apr 4 2008, 13:43) *
Вопрос пятый - (ARM) можно ли как-то сбросить ядро не перезапуская сеанс отладки? Т.е. легким движением перевести его в ARM, SYSTEM, записать в PC 0 и остановить его на нулевом адресе.
Опять же - monitor reset в консоли.

Вопрос к админам: Можно ли (и как) в этой ветке первым сообщением поместить выжимку вопросов и ответов из этого обсуждения?
Можно ли (и как) почистить эту ветку, чтобы первым сообщением висели вопросы с ответами, а ниже - вопросы, на которые пока нет ответов, и по мере появления ответов переносить вопросы в первое сообщение?

Автор: sevstels Sep 26 2008, 14:37

На мой взгляд, очень интересная вводная лекция о работе в Eclipse.

http://electronix.ru/redirect.php?http://www.artlebedev.ru/tools/technogrette/soft/eclipse-introduction/

Автор: mdmitry Sep 30 2008, 14:16

Три статьи на русском о Eclipse

http://electronix.ru/redirect.php?http://www.ibm.com/developerworks/ru/library/os-ecl-vscdt/index.html

http://electronix.ru/redirect.php?http://www.ibm.com/developerworks/ru/library/os-eclipse-snippet/index.html

http://electronix.ru/redirect.php?http://netsago.org/ru/docs/1/13/

Автор: COMA Oct 14 2008, 11:13

Добрый день.
Помогите составить необходимый минимум компонентов из плагина СDT.
ИМХО, многое из состава CDT не так и необходимо.
[attachment=25763:attachment]

Автор: ikX Oct 16 2008, 16:28

В CDT 5.0 указано поддержка doxygen

Цитата
Doxygen editor support (plus framework)

Что имеется в виду? Aвтовставка комментариев doxygen? Тогда как это работает? Мне не удалось заставить Eclipse вставить комментарий.

Автор: xelax Oct 17 2008, 09:39

Цитата(ikX @ Oct 16 2008, 20:28) *
В CDT 5.0 указано поддержка doxygen

Что имеется в виду? Aвтовставка комментариев doxygen? Тогда как это работает? Мне не удалось заставить Eclipse вставить комментарий.


У меня вставляет шапки в файлы, а также подсвечивает doxygen'овский синтаксис. Возможно умеет большее, пробовать не пытался.

Автор: ikX Oct 17 2008, 12:50

Цитата(xelax @ Oct 17 2008, 12:39) *
У меня вставляет шапки в файлы, а также подсвечивает doxygen'овский синтаксис.

А подробнее можно?. Пишу я к примеру int foo(int x, int y){}. Что нужно нажать/вызвать для вставки Eclips'ой doxygen комментария ?

Автор: xelax Oct 17 2008, 13:42

Цитата(ikX @ Oct 17 2008, 16:50) *
А подробнее можно?. Пишу я к примеру int foo(int x, int y){}. Что нужно нажать/вызвать для вставки Eclips'ой doxygen комментария ?

Кликаешь на проекте
Properties -> C/C++ General
ставишь галочку Enable project specific settings и выбираешь Documentation Tool Doxygen.

Шапку у меня генерит для файла, а не для каждой функции. Наверное можно сделать и для каждой функции. Я не пытался.
Очень удобно то, что расцвечивает синтаксис doxygen.

Автор: Непомнящий Евгений Oct 20 2008, 04:58

Цитата(ikX @ Oct 17 2008, 16:50) *
А подробнее можно?. Пишу я к примеру int foo(int x, int y){}. Что нужно нажать/вызвать для вставки Eclips'ой doxygen комментария ?


Если написать int foo(int a, int b ) и перед функцией ввести /**, то автоматом вставится примерно такая шапка:
Код
/**
*  
* @param a
* @param b
* return
*/


Кроме того, внутри doxygen-комментариев работает автокомплит по его ключевым словам.

Цитата(xelax @ Oct 17 2008, 17:42) *
Шапку у меня генерит для файла, а не для каждой функции.

У шапки файла, насколько я понимаю, ноги растут от шаблонов файлов, а не от doxygen-а.

Автор: xelax Oct 20 2008, 07:24

Цитата(Непомнящий Евгений @ Oct 20 2008, 08:58) *
У шапки файла, насколько я понимаю, ноги растут от шаблонов файлов, а не от doxygen-а.


Скорее всего так и есть.
/** - это уже и есть doxygen тэг.

Автор: klen Nov 14 2008, 12:07

Чето Ганимед, выход компиллера недопарсивает... в консоль Problems ошибки и предупреждения кладет но при тыкании мышкой не переходит к исходнику. Тока у меня так? потозрительно что колонка с номером строик заполнена а колонка Path пустая, видимо у него неполучается полный путь исходника взять...

Автор: gotty Nov 14 2008, 13:13

Цитата(xelax @ Oct 20 2008, 09:24) *
/** - это уже и есть doxygen тэг.

Это не doxygen тэг, это JavaDoc тэг. Но по совершенно неслучайному стечению обстоятельст doxygen понимает теги в стиле JavaDoc и Qt

Автор: IgorKossak Nov 14 2008, 16:05

Цитата(klen @ Nov 14 2008, 14:07) *
Чето Ганимед, выход компиллера недопарсивает... в консоль Problems ошибки и предупреждения кладет но при тыкании мышкой не переходит к исходнику. Тока у меня так? потозрительно что колонка с номером строик заполнена а колонка Path пустая, видимо у него неполучается полный путь исходника взять...

У меня всё нормально. Проверял на пробном проекте FreeRTOS для LPC23xx. Правда, с путями пришлось таки повозиться, переопределил все.

Автор: klen Nov 15 2008, 08:04

Цитата(IgorKossak @ Nov 14 2008, 19:05) *
У меня всё нормально. Проверял на пробном проекте FreeRTOS для LPC23xx. Правда, с путями пришлось таки повозиться, переопределил все.


а "с путями повозится" это что именно?

Автор: IgorKossak Nov 17 2008, 19:56

Цитата(klen @ Nov 15 2008, 10:04) *
а "с путями повозится" это что именно?

Project->Properties->C/C++ General->Includes-> во всех трёх наборах Languagess поменял бывшие там пути на истинные в моей файловой системе.
...->C/C++ Build->Settings->Error Parsers все включены.

Автор: klen Nov 17 2008, 21:18

Цитата(IgorKossak @ Nov 17 2008, 22:56) *
Project->Properties->C/C++ General->Includes-> во всех трёх наборах Languagess поменял бывшие там пути на истинные в моей файловой системе.
...->C/C++ Build->Settings->Error Parsers все включены.

забавно...
Project->Properties->C/C++ General->Includes в моей конфигурации не существуют Project->Properties->C/C++ General имеет:
CodeStyle
Documentation
File Types
Indexer
Languages Mappings
... и все ....

есть подозреня CDT криво работает.
у меня установлен
Mylyn 3.0.3.v20081015-1500-e3x
Zylin Embedded CDT 4.5.1

устал я боротся, наверно откачусь на европу.

Автор: IgorKossak Nov 19 2008, 09:26

Цитата(klen @ Nov 17 2008, 23:18) *
устал я боротся, наверно откачусь на европу.

Не спешите пока.
Вот, что у меня установлено.
Помимо этого ещё стоит тулчейн от Yagarto.  soft.bmp ( 1.15 мегабайт ) : 103

Автор: klen Nov 22 2008, 09:38

Цитата(IgorKossak @ Nov 19 2008, 12:26) *
Не спешите пока.
Вот, что у меня установлено.
Помимо этого ещё стоит тулчейн от Yagarto.  soft.bmp ( 1.15 мегабайт ) : 103


один в один...
наверно глюки. попробую винду переставить. но странно, на ноуте тоже самое...

Автор: sonycman Nov 24 2008, 20:14

А почему в Ганимеде не работает автозавершение вводимых строк?
Например, начинаешь вводить в исходнике имя какого-либо макро определения или функции - да так и приходится дописывать до конца самому 05.gif
Это нормально?
А то привык к слику уже... smile.gif

Автор: IgorKossak Nov 26 2008, 09:08

Цитата(klen @ Nov 22 2008, 12:38) *
один в один...
наверно глюки. попробую винду переставить. но странно, на ноуте тоже самое...

Столкнулся на работе с такой же проблемой со старым проектом под Европу. Пересоздал проект под Ганимед и всё пошло как по маслу.
Видимо с предыдущей версией была какая-то несовместимость.

Автор: Непомнящий Евгений Nov 26 2008, 09:20

Цитата(sonycman @ Nov 24 2008, 23:14) *
А почему в Ганимеде не работает автозавершение вводимых строк?


Все работает. Но еклипс для разбора использует компилятор - он должен стоять и быть доступен через path. В проекте надо еще по каким-то настройкам пошарить, но в новосозданных проекте и рабочей области все должно быть ок.

Автор: sonycman Nov 26 2008, 10:22

Цитата(Непомнящий Евгений @ Nov 26 2008, 13:20) *
Все работает. Но еклипс для разбора использует компилятор - он должен стоять и быть доступен через path. В проекте надо еще по каким-то настройкам пошарить, но в новосозданных проекте и рабочей области все должно быть ок.

Не работает. Проект именно создан новый.
Используется плагин avreclipse.
Пути для компилятора в порядке, вот они:
Код
C:\WinAVR-20081118rc2\bin;C:\WinAVR-20081118rc2\utils\bin;C:/Program Files/Java/jre6/bin/client;C:/Program Files/Java/jre6/bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\Microsoft SQL Server\90\Tools\binn\;C:\Program Files\QuickTime\QTSystem\;C:\Program Files\SlickEdit 2007 Trial\win\

Настройки все перерыл - нет опций, похожих на autocompletion...
Как то грустно из-за этого sad.gif

ЗЫ: вроде разобрался - для активации окна с вариантами надо нажимать CTRL+Space...
А нельзя сделать, чтобы эта фича срабатывала автоматически (без нажатия на клавиши)?

Автор: Сергей Борщ Nov 26 2008, 11:17

Цитата(sonycman @ Nov 26 2008, 12:22) *
ЗЫ: вроде разобрался - для активации окна с вариантами надо нажимать CTRL+Space...
А нельзя сделать, чтобы эта фича срабатывала автоматически (без нажатия на клавиши)?
Window->Preferences->C/C++->Editor->Content Assistant - это не оно?

Автор: Vitaliy_ARM Nov 26 2008, 11:18

Ковыряю J-LINK и Eclipse. Hаладил отладку через Insight. В общем хочется напрямую через эклипс отлаживаться. Скачал с атмеловского сайта описание по настройке gdb с их армами. Сам использую LPC23xx/LPC24xx. Почитал, но пока не въеду, что надо прописать в команды gdb, чтобы от шил RAM и останавливался в начале main()???

Вот листинг, который я ему подсовывал:
--------------------------------------------------
monitor reset
monitor speed 30
monitor speed auto
set remote memory-write-packet-size 1024
set remote memory-write-packet-size fixed
set remote memory-read-packet-size 1024
set remote memory-read-packet-size fixed
symbol-file main.elf
continue
set remote memory-read-packet-size fixed
symbol-file main.elf
continue
--------------------------------------------------

Автор: Сергей Борщ Nov 26 2008, 11:36

Цитата(Vitaliy_ARM @ Nov 26 2008, 13:18) *
Вот листинг, который я ему подсовывал:
Вот что я писал для SAM7 (увы, до LPC руки пока не дошли):
Код
target remote localhost:2331
monitor reset 1
monitor long 0xFFFFFD44 = 0x00008000    # disable wdt
monitor sleep 10
monitor long 0xFFFFFD00 = 0xA5000004    # reset the peripherals
monitor sleep 50
monitor long 0xFFFFFC20 = 0x00000001    # OSC enable, no timeout
monitor sleep 50
monitor long 0xFFFFFC2C = 0x00190605    # Assuming 18.432 MHz OSC, PLLCK=MAINCK * 26 / 5, set LOCK after 6 SCLK
monitor sleep 50
monitor long 0xFFFFFC30 = 0x00000004    # PRES = 2
monitor sleep 50
monitor long 0xFFFFFC30 = 0x00000007    # MCK = PLLCK / 2
monitor sleep 100
monitor long 0xFFFFFF00 = 0x00000001    # REMAP
monitor speed auto
break main
load
continue

Автор: Vitaliy_ARM Nov 26 2008, 12:10

Цитата(Сергей Борщ @ Nov 26 2008, 14:36) *
Вот что я писал для SAM7 (увы, до LPC руки пока не дошли)


Ага. Заработало. По вашему коду понял, что мне нехватало Remap.

Вот код инициализации.

Код
monitor reset  
monitor speed 30  
monitor speed auto  
break main  
load  
monitor long 0xE01FC040 = 0x00000002    # MEMMAP = 2  
continue

Автор: sonycman Nov 26 2008, 22:13

Цитата(Сергей Борщ @ Nov 26 2008, 15:17) *
Window->Preferences->C/C++->Editor->Content Assistant - это не оно?

Да, спасибо, эту вкладку я изучал, там галочки расставлены везде, где нужно.
Но, к сожадению, автоматическое открытие окна с вариантами (после небольшой задержки) предусмотрено только после ввода ".", "->" и "::". В остальных случаях - только по нажатию CTRL + Space.
В SlickEdit сделано удобнее - там вообще не надо ничего нажимать biggrin.gif

Автор: Непомнящий Евгений Nov 27 2008, 05:10

Цитата(sonycman @ Nov 27 2008, 01:13) *
В SlickEdit сделано удобнее - там вообще не надо ничего нажимать biggrin.gif

Зато в качестве бонуса - автоподстановка поумнее будет, чем в слике... smile.gif

Автор: ARV Nov 28 2008, 15:02

У меня несколько вопросов по связке Eclipse Ganimede + WinAVR + simulavr + avr-gdb и т.п..

1. С помощью шаманских плясок с бубном заставил работать отладку с "симулятором" simulavr. Пляски заключаются в том, что если указать в настройках отладки Эклипса все, как (с моей точки зрения) требуется, то elf-файл запускается на исполнение виндой, а не грузится в GDB. естественно, попытка запустить оканчивается ошибкой (но это никак нигде не проявляется), отладка стартует, но "во flash" естественно 0xFFFF и все (это прекрасно видно в окне дизассемблера). Эклипс честно "шагает" по отладочной инфе, но реально simulavr только кричит о том, что 0xFFFF - это плохая инструкция. Тем не менее, если в консоли GDB ввести вручную команды остановки, затем выбора файла (причем с полным путем), затем загрузки этого файла, затем поставить вручную же точку остановки на main - то все начинает работать. причем с этого момента повторный и т.д. запуск сессии отладки уже происходит без ручных манипуляций (пока не выгружается Эклипс). В общем, что-то тут не то и не так. Вопрос: как правильно организовать все это дело?

2. Постоянно и Step Over и Step Into выполняет одно и то же - отладку с входом в функции. Почему и как вылечить?

3. Если все-таки приобрету что-то типа AVRDRAGON - смогу ли я без вышеописанных проблем отлаживать программы?

4. Существуют ли соответствующие средства для Eclipse, чтобы осуществлять отладку для микроконтроллеров SiLabs C8051Fxxx? Фирменный аппаратный отладчик-программатор имеется, но Силабовская среда разработки - это убожище, каких свет не видывал. Вроде, есть GCC для 51-ых, но как там с поддержкой силабовских аппаратных средств отладки и программирования?

5. Avrdude - отличная вещь smile.gif Однако, постоянно не хочет запускаться из Eclipse, если активно окошко с сообщениями об ошибках-варнингах - ругается, что не указан проект. Щелкнуть в окне проекта недолго, но хотелось бы вылечить раз и навсегда... Это возможно?

P.S. OFF: я решил полностью переключиться на легально бесплатные средства разработки, отсюда много странных вопросов...

Автор: sevstels Dec 24 2008, 05:22

Вообще, откровенно говоря после долгого использования VS - "Эклипс" вызывает чувство аллергии и желание смыть это дело в унитаз. Вопрос по существу, как в Эклипсе подключить поиск по внешним директориям, а не только по папке проекта? Так бездарно написан хелп, что и не понятно как это сделать.

Автор: klen Dec 24 2008, 07:45

Цитата(sevstels @ Dec 24 2008, 08:22) *
Вообще, откровенно говоря после долгого использования VS - "Эклипс" вызывает чувство аллергии и желание смыть это дело в унитаз.

А VS это чё?
если это VC то у меня такоеже желание смыть его в унитаз.

кстате. С недавних пор для отладки есклипсу не нужен плагин от Zylin. В крайней версии разработчики добавили такойже но свой. пользую , вроде работает также (не хуже и не лучше). У когонить есть мысли по этому поводу?

Автор: sevstels Dec 24 2008, 09:10

smile.gif VS - это ms Visual Studio, а версия 2008 просто изумительна по лёгкости и удобству. Может подскажите, как настроить поиск?

Автор: klen Dec 24 2008, 10:08

Цитата(sevstels @ Dec 24 2008, 12:10) *
smile.gif VS - это ms Visual Studio, а версия 2008 просто изумительна по лёгкости и удобству. Может подскажите, как настроить поиск?

я не пробывал..
предпочитаю писать маленький исходный код чоб не искать smile.gif шутка

Автор: sonycman Dec 27 2008, 16:09

А никто не прикручивал Eclipse к Keil uVision3?
Что-то после SlickEdit и Eclipse при работе с AVR, uVision IDE для ARM смотрится как-то примитивно...
05.gif

Автор: sevstels Dec 30 2008, 00:30

Это Кейл - примитивно?
Всё гениальное - просто и стильно, Вы видимо ещё не привыкли.

Автор: amw Jan 30 2009, 12:06

Поделитесь пожалуйста конфигом openocd для LPC2378+OpenOCD+OOCDLink, у кого есть.

Использовал эту связку когда-то давно, года три-четыре назад, и с другим процессором. Работало.
Вчера обновил OpenOCD с SVN. Поменялись форматы конфига радикально.
В примере нашел конфиг для LPC2148+OpenOCD+JTAG Key. Вроде этот ближе чем LPC2294.
Подправил ftdi_* параметры под OOCDLink.
Подправил reset_config.
Если в конфиге не задавать target create ....., то определяется процессор. но ругается на отсутствие target.
Если задать target create ....., то процессор не находит.
В обоих случаях завершается сообщением "Can not halt core"

Еще немного подправил конфиг, но успех не пршел sad.gif

Конфиг

Код
#daemon configuration
telnet_port 4444
gdb_port 3333

# tell gdb our flash memory map
# and enable flash programming
gdb_memory_map enable
gdb_flash_program enable

#interface
interface ft2232
ft2232_device_desc "Dual RS232"
ft2232_layout oocdlink
ft2232_vid_pid 0x0403 0x6010
#jtag_speed 3
jtag_khz 1000

#use combined on interfaces or targets that can't set TRST/SRST separately
# reset_config trst_and_srst srst_pulls_trst
reset_config trst_and_srst separate

#jtag scan chain
#format L IRC IRCM IDCODE (Length, IR Capture, IR Capture Mask, IDCODE)
# jtag_device 4 0x1 0xf 0xe
jtag newtap MyChip MyTap -irlen 4 -ircapture 0x1 -irmask 0xF

#target configuration
# target create MyTap arm7tdmi -endian little -chain-position 0
# [new_target_name] configure -work-area-virt 0 -work-area-phys 0x40000000 -work-area-size 0x4000 -work-area-backup 0

#flash bank lpc2000 <base> <size> 0 0 <target#> <variant>
# flash bank lpc2000 0x0 0x7d000 0 0 0 lpc2000_v2 14765 calc_checksum

# For more information about the configuration files, take a look at:
# http://openfacts.berlios.de/index-en.phtml?title=Open+On-Chip+Debugger

init
reset halt

Лог (короткий)
Код
$ openocd
Open On-Chip Debugger 1.0 (2009-01-29-21:12) svn:1363
BUGS? Read http://svn.berlios.de/svnroot/repos/openocd/trunk/BUGS
$URL: http://svn.berlios.de/svnroot/repos/openocd/trunk/src/openocd.c $
1000 kHz
Info : JTAG tap: MyChip.MyTap tap/device found: 0x401f002b (Manufacturer: 0x015, Part: 0x01f0, Version: 0x4)
Warn : no gdb ports allocated as no target has been specified
Warn : no tcl port specified, using default port 6666
invalid command name "reset_halt"

Лог подлиннее
CODE

$ openocd -d
Open On-Chip Debugger 1.0 (2009-01-29-21:12) svn:1363
BUGS? Read http://electronix.ru/redirect.php?http://svn.berlios.de/svnroot/repos/openocd/trunk/BUGS
$URL: http://electronix.ru/redirect.php?http://svn.berlios.de/svnroot/repos/openocd/trunk/src/openocd.c $
User : 5 1 command.c:494 command_run_line():
Debug: 6 1 configuration.c:88 find_file(): found openocd.cfg
Debug: 8 1 command.c:91 script_command(): script_command - telnet_port
Debug: 9 1 command.c:108 script_command(): script_command - telnet_port, argv[0]=ocd_telnet_port
Debug: 10 1 command.c:108 script_command(): script_command - telnet_port, argv[1]=4444
Debug: 12 1 command.c:91 script_command(): script_command - gdb_port
Debug: 13 1 command.c:108 script_command(): script_command - gdb_port, argv[0]=ocd_gdb_port
Debug: 14 1 command.c:108 script_command(): script_command - gdb_port, argv[1]=3333
Debug: 16 1 command.c:91 script_command(): script_command - gdb_memory_map
Debug: 17 1 command.c:108 script_command(): script_command - gdb_memory_map, argv[0]=ocd_gdb_memory_map
Debug: 18 1 command.c:108 script_command(): script_command - gdb_memory_map, argv[1]=enable
Debug: 20 1 command.c:91 script_command(): script_command - gdb_flash_program
Debug: 21 1 command.c:108 script_command(): script_command - gdb_flash_program, argv[0]=ocd_gdb_flash_program
Debug: 22 1 command.c:108 script_command(): script_command - gdb_flash_program, argv[1]=enable
Debug: 24 1 command.c:91 script_command(): script_command - interface
Debug: 25 2 command.c:108 script_command(): script_command - interface, argv[0]=ocd_interface
Debug: 26 2 command.c:108 script_command(): script_command - interface, argv[1]=ft2232
Debug: 28 2 command.c:91 script_command(): script_command - ft2232_device_desc
Debug: 29 2 command.c:108 script_command(): script_command - ft2232_device_desc, argv[0]=ocd_ft2232_device_desc
Debug: 30 2 command.c:108 script_command(): script_command - ft2232_device_desc, argv[1]=Dual RS232
Debug: 32 2 command.c:91 script_command(): script_command - ft2232_layout
Debug: 33 2 command.c:108 script_command(): script_command - ft2232_layout, argv[0]=ocd_ft2232_layout
Debug: 34 2 command.c:108 script_command(): script_command - ft2232_layout, argv[1]=oocdlink
Debug: 36 2 command.c:91 script_command(): script_command - ft2232_vid_pid
Debug: 37 2 command.c:108 script_command(): script_command - ft2232_vid_pid, argv[0]=ocd_ft2232_vid_pid
Debug: 38 2 command.c:108 script_command(): script_command - ft2232_vid_pid, argv[1]=0x0403
Debug: 39 2 command.c:108 script_command(): script_command - ft2232_vid_pid, argv[2]=0x6010
Debug: 41 2 command.c:91 script_command(): script_command - jtag_khz
Debug: 42 2 command.c:108 script_command(): script_command - jtag_khz, argv[0]=ocd_jtag_khz
Debug: 43 2 command.c:108 script_command(): script_command - jtag_khz, argv[1]=1000
Debug: 44 2 jtag.c:2662 handle_jtag_khz_command(): handle jtag khz
User : 45 2 command.c:383 command_print(): 1000 kHz
Debug: 47 2 command.c:91 script_command(): script_command - reset_config
Debug: 48 2 command.c:108 script_command(): script_command - reset_config, argv[0]=ocd_reset_config
Debug: 49 2 command.c:108 script_command(): script_command - reset_config, argv[1]=trst_and_srst
Debug: 50 2 command.c:108 script_command(): script_command - reset_config, argv[2]=separate
Debug: 51 2 jtag.c:1909 jim_newtap_cmd(): Creating New Tap, Chip: MyChip, Tap: MyTap, Dotted: MyChip.MyTap, 6 params
Debug: 52 2 jtag.c:1928 jim_newtap_cmd(): Processing option: -irlen
Debug: 53 2 jtag.c:1928 jim_newtap_cmd(): Processing option: -ircapture
Debug: 54 2 jtag.c:1928 jim_newtap_cmd(): Processing option: -irmask
Debug: 55 2 jtag.c:2041 jim_newtap_cmd(): Created Tap: MyChip.MyTap @ abs position 0, irlen 4, capture: 0x1 mask: 0xf
Debug: 57 2 command.c:91 script_command(): script_command - init
Debug: 58 3 command.c:108 script_command(): script_command - init, argv[0]=ocd_init
Debug: 59 3 openocd.c:137 handle_init_command(): target init complete
Debug: 60 3 ft2232.c:1575 ft2232_init_libftdi(): 'ft2232' interface using libftdi with 'oocdlink' layout (0403:6010)
Debug: 61 176 ft2232.c:1617 ft2232_init_libftdi(): current latency timer: 2
Debug: 62 178 ft2232.c:1872 jtagkey_init(): 80 08 1b
Debug: 63 180 ft2232.c:1930 jtagkey_init(): 82 06 0f
Debug: 64 182 ft2232.c:276 ft2232_speed(): 86 05 00
Debug: 65 190 openocd.c:144 handle_init_command(): jtag interface init complete
Debug: 66 190 jtag.c:2257 jtag_init_inner(): Init JTAG chain
Debug: 67 190 jtag.c:434 jtag_call_event_callbacks(): jtag event: JTAG controller reset (RESET or TRST)
Debug: 68 190 jtag.c:1504 jtag_reset_callback(): -
Debug: 69 192 jtag.c:434 jtag_call_event_callbacks(): jtag event: JTAG controller reset (RESET or TRST)
Debug: 70 192 jtag.c:1504 jtag_reset_callback(): -
Info : 71 200 jtag.c:1624 jtag_examine_chain(): JTAG tap: MyChip.MyTap tap/device found: 0x401f002b (Manufacturer: 0x015, Part: 0x01f0, Version: 0x4)
Debug: 72 200 jtag.c:434 jtag_call_event_callbacks(): jtag event: JTAG controller reset (RESET or TRST)
Debug: 73 200 jtag.c:1504 jtag_reset_callback(): -
Debug: 74 206 openocd.c:150 handle_init_command(): jtag init complete
Debug: 75 206 openocd.c:153 handle_init_command(): jtag examine complete
Debug: 76 206 openocd.c:159 handle_init_command(): flash init complete
Debug: 77 206 openocd.c:163 handle_init_command(): mflash init complete
Debug: 78 206 openocd.c:167 handle_init_command(): NAND init complete
Debug: 79 206 openocd.c:171 handle_init_command(): pld init complete
Warn : 80 206 gdb_server.c:2195 gdb_init(): no gdb ports allocated as no target has been specified
Warn : 81 206 tcl_server.c:178 tcl_init(): no tcl port specified, using default port 6666
User : 82 206 command.c:626 openocd_jim_vfprintf(): invalid command name "reset_halt"
User : 85 206 command.c:626 openocd_jim_vfprintf():
User : 87 206 command.c:626 openocd_jim_vfprintf():
User : 89 206 command.c:626 openocd_jim_vfprintf():
User : 91 206 command.c:626 openocd_jim_vfprintf():
User : 93 206 command.c:626 openocd_jim_vfprintf():

Если в конфиге раскоментировать строки
Код
#target configuration
target create MyTap arm7tdmi -endian little -chain-position 0
[new_target_name] configure -work-area-virt 0 -work-area-phys 0x40000000 -work-area-size 0x4000 -work-area-backup 0

То лог такой (короткий)
Код
$ openocd
Open On-Chip Debugger 1.0 (2009-01-29-21:12) svn:1363
BUGS? Read http://svn.berlios.de/svnroot/repos/openocd/trunk/BUGS
$URL: http://svn.berlios.de/svnroot/repos/openocd/trunk/src/openocd.c $
1000 kHz
Info : JTAG tap: MyChip.MyTap tap/device found: 0x401f002b (Manufacturer: 0x015, Part: 0x01f0, Version: 0x4)
Error: unknown EmbeddedICE version (comms ctrl: 0x00000000)
Warn : no tcl port specified, using default port 6666
Info : JTAG tap: MyChip.MyTap tap/device found: 0x401f002b (Manufacturer: 0x015, Part: 0x01f0, Version: 0x4)
Error: timed out while waiting for target halted
Runtime error, file "embedded:startup.tcl", line 211:
    expected return code but got 'TARGET: MyTap - Not halted'
Runtime error, file "openocd.cfg", line 38:

Длинный
CODE

$ openocd -d
Open On-Chip Debugger 1.0 (2009-01-29-21:12) svn:1363
BUGS? Read http://electronix.ru/redirect.php?http://svn.berlios.de/svnroot/repos/openocd/trunk/BUGS
$URL: http://electronix.ru/redirect.php?http://svn.berlios.de/svnroot/repos/openocd/trunk/src/openocd.c $
User : 5 0 command.c:494 command_run_line():
Debug: 6 0 configuration.c:88 find_file(): found openocd.cfg
Debug: 8 0 command.c:91 script_command(): script_command - telnet_port
Debug: 9 0 command.c:108 script_command(): script_command - telnet_port, argv[0]=ocd_telnet_port
Debug: 10 0 command.c:108 script_command(): script_command - telnet_port, argv[1]=4444
Debug: 12 0 command.c:91 script_command(): script_command - gdb_port
Debug: 13 0 command.c:108 script_command(): script_command - gdb_port, argv[0]=ocd_gdb_port
Debug: 14 0 command.c:108 script_command(): script_command - gdb_port, argv[1]=3333
Debug: 16 1 command.c:91 script_command(): script_command - gdb_memory_map
Debug: 17 1 command.c:108 script_command(): script_command - gdb_memory_map, argv[0]=ocd_gdb_memory_map
Debug: 18 1 command.c:108 script_command(): script_command - gdb_memory_map, argv[1]=enable
Debug: 20 1 command.c:91 script_command(): script_command - gdb_flash_program
Debug: 21 1 command.c:108 script_command(): script_command - gdb_flash_program, argv[0]=ocd_gdb_flash_program
Debug: 22 1 command.c:108 script_command(): script_command - gdb_flash_program, argv[1]=enable
Debug: 24 1 command.c:91 script_command(): script_command - interface
Debug: 25 1 command.c:108 script_command(): script_command - interface, argv[0]=ocd_interface
Debug: 26 1 command.c:108 script_command(): script_command - interface, argv[1]=ft2232
Debug: 28 1 command.c:91 script_command(): script_command - ft2232_device_desc
Debug: 29 1 command.c:108 script_command(): script_command - ft2232_device_desc, argv[0]=ocd_ft2232_device_desc
Debug: 30 1 command.c:108 script_command(): script_command - ft2232_device_desc, argv[1]=Dual RS232
Debug: 32 1 command.c:91 script_command(): script_command - ft2232_layout
Debug: 33 1 command.c:108 script_command(): script_command - ft2232_layout, argv[0]=ocd_ft2232_layout
Debug: 34 1 command.c:108 script_command(): script_command - ft2232_layout, argv[1]=oocdlink
Debug: 36 1 command.c:91 script_command(): script_command - ft2232_vid_pid
Debug: 37 1 command.c:108 script_command(): script_command - ft2232_vid_pid, argv[0]=ocd_ft2232_vid_pid
Debug: 38 1 command.c:108 script_command(): script_command - ft2232_vid_pid, argv[1]=0x0403
Debug: 39 1 command.c:108 script_command(): script_command - ft2232_vid_pid, argv[2]=0x6010
Debug: 41 1 command.c:91 script_command(): script_command - jtag_khz
Debug: 42 1 command.c:108 script_command(): script_command - jtag_khz, argv[0]=ocd_jtag_khz
Debug: 43 1 command.c:108 script_command(): script_command - jtag_khz, argv[1]=1000
Debug: 44 1 jtag.c:2662 handle_jtag_khz_command(): handle jtag khz
User : 45 1 command.c:383 command_print(): 1000 kHz
Debug: 47 1 command.c:91 script_command(): script_command - reset_config
Debug: 48 1 command.c:108 script_command(): script_command - reset_config, argv[0]=ocd_reset_config
Debug: 49 2 command.c:108 script_command(): script_command - reset_config, argv[1]=trst_and_srst
Debug: 50 2 command.c:108 script_command(): script_command - reset_config, argv[2]=separate
Debug: 51 2 jtag.c:1909 jim_newtap_cmd(): Creating New Tap, Chip: MyChip, Tap: MyTap, Dotted: MyChip.MyTap, 6 params
Debug: 52 2 jtag.c:1928 jim_newtap_cmd(): Processing option: -irlen
Debug: 53 2 jtag.c:1928 jim_newtap_cmd(): Processing option: -ircapture
Debug: 54 2 jtag.c:1928 jim_newtap_cmd(): Processing option: -irmask
Debug: 55 2 jtag.c:2041 jim_newtap_cmd(): Created Tap: MyChip.MyTap @ abs position 0, irlen 4, capture: 0x1 mask: 0xf
Debug: 56 2 target.c:3920 jim_target(): Target command params:
Debug: 57 2 target.c:3921 jim_target(): target create MyTap arm7tdmi -endian little -chain-position 0
Debug: 58 2 target.c:3920 jim_target(): Target command params:
Debug: 59 2 target.c:3921 jim_target(): target count
Debug: 60 2 target.c:3920 jim_target(): Target command params:
Debug: 61 2 target.c:3921 jim_target(): target number 0
Debug: 63 2 command.c:91 script_command(): script_command - init
Debug: 64 2 command.c:108 script_command(): script_command - init, argv[0]=ocd_init
Debug: 65 3 openocd.c:137 handle_init_command(): target init complete
Debug: 66 3 ft2232.c:1575 ft2232_init_libftdi(): 'ft2232' interface using libftdi with 'oocdlink' layout (0403:6010)
Debug: 67 177 ft2232.c:1617 ft2232_init_libftdi(): current latency timer: 2
Debug: 68 179 ft2232.c:1872 jtagkey_init(): 80 08 1b
Debug: 69 181 ft2232.c:1930 jtagkey_init(): 82 06 0f
Debug: 70 183 ft2232.c:276 ft2232_speed(): 86 05 00
Debug: 71 191 openocd.c:144 handle_init_command(): jtag interface init complete
Debug: 72 191 jtag.c:2257 jtag_init_inner(): Init JTAG chain
Debug: 73 191 jtag.c:434 jtag_call_event_callbacks(): jtag event: JTAG controller reset (RESET or TRST)
Debug: 74 191 jtag.c:1504 jtag_reset_callback(): -
Debug: 75 193 jtag.c:434 jtag_call_event_callbacks(): jtag event: JTAG controller reset (RESET or TRST)
Debug: 76 193 jtag.c:1504 jtag_reset_callback(): -
Info : 77 201 jtag.c:1624 jtag_examine_chain(): JTAG tap: MyChip.MyTap tap/device found: 0x401f002b (Manufacturer: 0x015, Part: 0x01f0, Version: 0x4)
Debug: 78 201 jtag.c:434 jtag_call_event_callbacks(): jtag event: JTAG controller reset (RESET or TRST)
Debug: 79 201 jtag.c:1504 jtag_reset_callback(): -
Debug: 80 207 openocd.c:150 handle_init_command(): jtag init complete
Error: 81 215 embeddedice.c:197 embeddedice_build_reg_cache(): unknown EmbeddedICE version (comms ctrl: 0x00000000)
Debug: 82 215 embeddedice.c:401 embeddedice_write_reg(): 12: 0x00000000
Debug: 83 215 embeddedice.c:401 embeddedice_write_reg(): 20: 0x00000000
Debug: 84 217 openocd.c:153 handle_init_command(): jtag examine complete
Debug: 85 217 openocd.c:159 handle_init_command(): flash init complete
Debug: 86 217 openocd.c:163 handle_init_command(): mflash init complete
Debug: 87 217 openocd.c:167 handle_init_command(): NAND init complete
Debug: 88 217 openocd.c:171 handle_init_command(): pld init complete
Debug: 89 217 gdb_server.c:2225 gdb_init(): gdb service for target arm7tdmi at port 3333
Warn : 90 217 tcl_server.c:178 tcl_init(): no tcl port specified, using default port 6666
Debug: 92 225 command.c:91 script_command(): script_command - reset
Debug: 93 225 command.c:108 script_command(): script_command - reset, argv[0]=ocd_reset
Debug: 94 225 command.c:108 script_command(): script_command - reset, argv[1]=halt
Debug: 95 225 target.c:3920 jim_target(): Target command params:
Debug: 96 225 target.c:3921 jim_target(): target names
Debug: 97 225 target.c:3054 target_handle_event(): event: 11 reset-start - no action
Debug: 98 225 jtag.c:2290 jtag_init_reset(): Trying to bring the JTAG controller to life by asserting TRST / RESET
Debug: 99 225 jtag.c:1196 jtag_add_reset(): SRST line released
Debug: 100 225 jtag.c:1215 jtag_add_reset(): TRST line asserted
Debug: 101 225 jtag.c:434 jtag_call_event_callbacks(): jtag event: JTAG controller reset (RESET or TRST)
Debug: 102 225 jtag.c:1504 jtag_reset_callback(): -
Debug: 103 225 jtag.c:1192 jtag_add_reset(): SRST line asserted
Debug: 104 225 jtag.c:1215 jtag_add_reset(): TRST line asserted
Debug: 105 225 jtag.c:434 jtag_call_event_callbacks(): jtag event: JTAG controller reset (RESET or TRST)
Debug: 106 225 jtag.c:1504 jtag_reset_callback(): -
Debug: 107 225 jtag.c:1192 jtag_add_reset(): SRST line asserted
Debug: 108 225 jtag.c:1196 jtag_add_reset(): SRST line released
Debug: 109 225 ft2232.c:1032 jtagkey_reset(): trst: 1, srst: 0, high_output: 0x04, high_direction: 0x0f
Debug: 110 225 ft2232.c:1032 jtagkey_reset(): trst: 1, srst: 1, high_output: 0x00, high_direction: 0x0f
Debug: 111 225 ft2232.c:1032 jtagkey_reset(): trst: 0, srst: 1, high_output: 0x02, high_direction: 0x0f
Debug: 112 225 ft2232.c:1032 jtagkey_reset(): trst: 0, srst: 0, high_output: 0x06, high_direction: 0x0f
Debug: 113 227 jtag.c:2257 jtag_init_inner(): Init JTAG chain
Debug: 114 229 jtag.c:434 jtag_call_event_callbacks(): jtag event: JTAG controller reset (RESET or TRST)
Debug: 115 229 jtag.c:1504 jtag_reset_callback(): -
Info : 116 237 jtag.c:1624 jtag_examine_chain(): JTAG tap: MyChip.MyTap tap/device found: 0x401f002b (Manufacturer: 0x015, Part: 0x01f0, Version: 0x4)
Debug: 117 237 jtag.c:434 jtag_call_event_callbacks(): jtag event: JTAG controller reset (RESET or TRST)
Debug: 118 237 jtag.c:1504 jtag_reset_callback(): -
Debug: 119 243 target.c:3920 jim_target(): Target command params:
Debug: 120 243 target.c:3921 jim_target(): target names
Debug: 121 243 embeddedice.c:401 embeddedice_write_reg(): 12: 0x00000000
Debug: 122 243 embeddedice.c:401 embeddedice_write_reg(): 20: 0x00000000
Debug: 123 251 target.c:3920 jim_target(): Target command params:
Debug: 124 251 target.c:3921 jim_target(): target names
Debug: 125 251 target.c:3054 target_handle_event(): event: 12 reset-assert-pre - no action
Debug: 126 251 arm7_9_common.c:810 arm7_9_assert_reset(): target->state: running
Debug: 127 251 embeddedice.c:401 embeddedice_write_reg(): 8: 0x00000000
Debug: 128 251 embeddedice.c:401 embeddedice_write_reg(): 9: 0x00000003
Debug: 129 251 embeddedice.c:401 embeddedice_write_reg(): 11: 0xffffffff
Debug: 130 251 embeddedice.c:401 embeddedice_write_reg(): 12: 0x00000100
Debug: 131 251 embeddedice.c:401 embeddedice_write_reg(): 13: 0x000000f7
Debug: 132 251 jtag.c:1192 jtag_add_reset(): SRST line asserted
Debug: 133 251 target.c:3054 target_handle_event(): event: 13 reset-assert-post - no action
Debug: 134 251 target.c:3920 jim_target(): Target command params:
Debug: 135 251 target.c:3921 jim_target(): target names
Debug: 136 251 target.c:3054 target_handle_event(): event: 14 reset-deassert-pre - no action
Debug: 137 251 arm7_9_common.c:870 arm7_9_deassert_reset(): target->state: reset
Debug: 138 251 jtag.c:1196 jtag_add_reset(): SRST line released
Debug: 139 251 target.c:3054 target_handle_event(): event: 15 reset-deassert-post - no action
Debug: 140 251 target.c:3920 jim_target(): Target command params:
Debug: 141 251 target.c:3921 jim_target(): target names
Debug: 142 251 ft2232.c:1032 jtagkey_reset(): trst: 0, srst: 1, high_output: 0x02, high_direction: 0x0f
Debug: 143 303 ft2232.c:1032 jtagkey_reset(): trst: 0, srst: 0, high_output: 0x06, high_direction: 0x0f
Debug: 144 310 target.c:1724 target_wait_state(): waiting for target halted...
Error: 147 1254 target.c:1731 target_wait_state(): timed out while waiting for target halted
User : 148 1254 command.c:626 openocd_jim_vfprintf(): Runtime error, file "embedded:startup.tcl", line 211:
User : 149 1254 command.c:626 openocd_jim_vfprintf(): expected return code but got 'TARGET: MyTap - Not halted'
User : 151 1254 command.c:626 openocd_jim_vfprintf():
User : 153 1254 command.c:626 openocd_jim_vfprintf():
User : 155 1254 command.c:626 openocd_jim_vfprintf():
User : 157 1254 command.c:626 openocd_jim_vfprintf():
Debug: 158 1254 command.c:427 run_command(): Command failed with error code -4
User : 159 1254 command.c:626 openocd_jim_vfprintf(): Runtime error, file "openocd.cfg", line 38:
User : 160 1254 command.c:626 openocd_jim_vfprintf():
User : 163 1254 command.c:626 openocd_jim_vfprintf():
User : 165 1254 command.c:626 openocd_jim_vfprintf():

Может кто подскажет что не так? В инете по LPC23xx примеров пока не нашел.

Автор: amw Jan 31 2009, 20:38

"Поколдовав" некоторое время с настройками и покурив доки, и персобрав тулчейн пару раз - в соответствии с доками openocd - получил следующее:
openocd.cfg

Код
telnet_port 4444
gdb_port 3333
gdb_memory_map enable
gdb_flash_program enable
interface ft2232
ft2232_device_desc "Dual RS232"
ft2232_layout oocdlink
ft2232_vid_pid 0x0403 0x6010
jtag_khz 10
jtag_nsrst_delay 200
jtag_ntrst_delay 200
reset_config trst_and_srst srst_pulls_trst
jtag newtap MyChip MyTap -irlen 4 -ircapture 0x1 -irmask 0xF
target create MyTap arm7tdmi -endian little -chain-position 0
[new_target_name] configure -work-area-virt 0 -work-area-phys 0x40000000 -work-area-size 0x4000 -work-area-backup 0
flash  bank lpc2000 0x0    0x7d000 0 0 0         lpc2000_v2 14765 calc_checksum

.gdbinit
Код
target remote localhost:3333
monitor reset
monitor sleep 2000
monitor poll
monitor soft_reset_halt
break main
continue

Лог openocd
Код
$ openocd
Open On-Chip Debugger 1.0 (2009-01-30-21:03) svn:1363


BUGS? Read http://svn.berlios.de/svnroot/repos/openocd/trunk/BUGS


$URL: http://svn.berlios.de/svnroot/repos/openocd/trunk/src/openocd.c $
10 kHz
Info : JTAG tap: MyChip.MyTap tap/device found: 0x4f1f0f0f (Manufacturer: 0x787, Part: 0xf1f0, Version: 0x4)
Warn : EmbeddedICE version 7 detected, EmbeddedICE handling might be broken
Warn : no tcl port specified, using default port 6666
Info : accepting 'gdb' connection from 0
target state: halted
target halted in Thumb state due to debug-request, current mode: Abort
cpsr: 0x800000b7 pc: 0x7fffe152
Warn : acknowledgment received, but no packet pending
Info : JTAG tap: MyChip.MyTap tap/device found: 0x4f1f0f0f (Manufacturer: 0x787, Part: 0xf1f0, Version: 0x4)
target state: running
requesting target halt and executing a soft reset
target state: halted
target halted in ARM state due to debug-request, current mode: Supervisor
cpsr: 0x800000d3 pc: 0x00000000
Info : dropped 'gdb' connection - error -400
Info : accepting 'gdb' connection from 0
Warn : acknowledgment received, but no packet pending
Info : JTAG tap: MyChip.MyTap tap/device found: 0x4f1f0f0f (Manufacturer: 0x787, Part: 0xf1f0, Version: 0x4)
target state: running
requesting target halt and executing a soft reset
target state: halted
target halted in ARM state due to debug-request, current mode: Supervisor
cpsr: 0x600000d3 pc: 0x00000000
Info : no watchpoint unit available for hardware breakpoint
Info : can't add hardware breakpoint, resource not available
Error: unexpected error -308
Info : no watchpoint unit available for hardware breakpoint
Info : can't add hardware breakpoint, resource not available
Error: unexpected error -308
Warn : memory read caused data abort (address: 0xffffffff, size: 0x1, count: 0x1)

Лог gdb
Код
source .gdbinit
main () at src/main.c:89
89        FIO0DIR = 0xFFFFFFFF;
JTAG tap: MyChip.MyTap tap/device found: 0x4f1f0f0f (Manufacturer: 0x787, Part: 0xf1f0, Version: 0x4)


target state: running

requesting target halt and executing a soft reset
target state: halted
target halted in ARM state due to debug-request, current mode: Supervisor
cpsr: 0x600000d3 pc: 0x00000000

Breakpoint 2 at 0x300: file src/main.c, line 89.

Breakpoint 1, main () at src/main.c:89
89        FIO0DIR = 0xFFFFFFFF;
Cannot find bounds of current function

DATA ABORT Возникает при остановке на второй и последующих точках прерывания (после той, что в начале main()). Предидущие точки прерывания удаляю перед установкой новой.
Пошаговая отладка вроде идет, если шагать с самого начала запуска, но это тоскливо. Нужны точки прерывания в нужных мне местах.
Отладка из флеш. Прошиваю процессор отдельно.
На команду gdb load ругается так:
openocd
Код
Info : JTAG tap: MyChip.MyTap tap/device found: 0x4f1f0f0f (Manufacturer: 0x787, Part: 0xf1f0, Version: 0x4)
target state: running
requesting target halt and executing a soft reset
target state: halted
target halted in ARM state due to debug-request, current mode: Supervisor
cpsr: 0x600000d3 pc: 0x00000000
Warn : memory write caused data abort (address: 0x40000000, size: 0x4, count: 0x2)
Warn : lpc2000 prepare sectors returned -307
Error: failed erasing sectors 0 to 8 (-902)
Error: flash_erase returned -902

gdb
Код
source .gdbinit
EXCEPTION_VECTORS () at src/crt0.S:60
60        ldr    pc, RESET_ADDR
Current language:  auto; currently asm
JTAG tap: MyChip.MyTap tap/device found: 0x4f1f0f0f (Manufacturer: 0x787, Part: 0xf1f0, Version: 0x4)


target state: running

requesting target halt and executing a soft reset
target state: halted
target halted in ARM state due to debug-request, current mode: Supervisor
cpsr: 0x600000d3 pc: 0x00000000

/home/amw/workspace/DSP/.gdbinit:10: Error in sourced command file:
Error erasing flash with vFlashErase packet

Кроме того, у меня в программе в есть перехваты всех Exception с выводом дампа на UART.
При запуске высыпает кучу PREFETCH ABORT, а при остановке на точках прерывания высыпает еще и кучу DATA ABORT в придачу.

С чем может быть связано и как это победить?

Автор: Vitaliy_ARM Feb 4 2009, 13:31

Цитата(amw @ Jan 31 2009, 23:38) *
При запуске высыпает кучу PREFETCH ABORT, а при остановке на точках прерывания высыпает еще и кучу DATA ABORT в придачу.

С чем может быть связано и как это победить?


Скорее всего компановка неправильная, или выравнивания нету или просто черт знает куда линкуется или еще что-нибудь.

Автор: amw Feb 4 2009, 13:37

Цитата(Vitaliy_ARM @ Feb 4 2009, 15:31) *
Скорее всего компановка неправильная, или выравнивания нету или просто черт знает куда линкуется или еще что-нибудь.

Ну уж не знаю, что там с компоновкой ему не нравится, но если просто прошить - не по JTAG, а через UART - то все работает правильно.
Аборты возникают в процессе прошивки и отладки. Если без JTAG, то проект работает как надо.

Автор: Vitaliy_ARM Feb 4 2009, 13:48

Цитата(amw @ Feb 4 2009, 16:37) *
Ну уж не знаю, что там с компоновкой ему не нравится, но если просто прошить - не по JTAG, а через UART - то все работает правильно.
Аборты возникают в процессе прошивки и отладки. Если без JTAG, то проект работает как надо.


Значит файл корректный. А вы не пробовали просто поотлаживать без предварительной прошивки?
Я начал пока с этого.

Ааа. Пардон. Не увидел
Цитата(amw @ Feb 4 2009, 16:37) *
Отладка из флеш. Прошиваю процессор отдельно.
.
В любом случае у меня такого не возникало.

Автор: RA3WUM Mar 8 2009, 21:42

Подскажите, как прикрутить к эклипсу компилятор от iar?

Автор: gotty Mar 9 2009, 08:41

Цитата(RA3WUM @ Mar 8 2009, 23:42) *
Подскажите, как прикрутить к эклипсу компилятор от iar?

http://electronix.ru/redirect.php?http://www.iar.com/website1/1.0.1.0/79/1/
http://electronix.ru/forum/index.php?showtopic=34843

Автор: RA3WUM Mar 10 2009, 13:32

Цитата(gotty @ Mar 9 2009, 11:41) *
http://electronix.ru/redirect.php?http://www.iar.com/website1/1.0.1.0/79/1/
http://electronix.ru/forum/index.php?showtopic=34843

Ни в одной из ссылок нет ответа на заданный вопрос.
Существует eclipse plugin for IAR Embedded Workbench AVR, но его рассылают только тем у кого есть лицензия.
Может кто-то поделится?

Автор: gotty Mar 10 2009, 14:18

Цитата(RA3WUM @ Mar 10 2009, 15:32) *
Ни в одной из ссылок нет ответа на заданный вопрос.
Существует eclipse plugin for IAR Embedded Workbench AVR, но его рассылают только тем у кого есть лицензия.
Может кто-то поделится?

Если Вы ожидаете получать ответы по теме, рекомендую Вам научиться задавать вопросы. Если Вы со со мной не согласны - прочитайте свой вопрос и попытайтесь найти там слово AVR.

Автор: ZiB Mar 11 2009, 08:58

Всем, привет!
Перехожу с IAR-а на связку Eclipse + WinAVR. Пока возникло пару вопросов, может кто подскажет что нибудь.

1) Как в Eclipse установить "ключевые слова пользователя" (в IAR-е user keywords), необходимо для подсветки своих переименованных типов данных.
я просто уже привык писать вместо "unsigned char" Byte, Eclipse естественно его не "подсвечивает".

2) Есть обработчик прерываний из обработчика прерываний происходит вызов функции, как сказать компилятору что бы в обработчик прерываний сохранял только те регистры которые действительно используются (как в самом, так и во внешней функции), а не все? (уровень оптимизации менял, не помогло).
{Отвечаю сам себе. Вероятнее всего сохранение всех регистров происходит по причине нахождения функции во внешнем файле, который при компиляции собирается отдельно. В связи с чем новый вопрос, я использую плагин AVR-Eclipse и не понял пока как указать ему собрать всё вместе, а не по отдельности. В IAR-е такого не было в пределах проекта проблем не наблюдалось...}

Автор: mdmitry Mar 11 2009, 12:08

на форуме бывает aesok, который большой спец по WinAvr.
Посмотрите документацию по gcc на предмет __attribute(naked)

Автор: _Pasha Mar 11 2009, 12:21

Цитата(mdmitry @ Mar 11 2009, 16:08) *
Посмотрите документацию по gcc на предмет __attribute(naked)

Ага, будет Вам и кофе, и какао с чаем. Вот тута обговаривали:

http://electronix.ru/forum/index.php?showtopic=56739&st=-5

Автор: injen-d Mar 11 2009, 18:03

Пользуюсь Eclipse ganymede 3.4.0 + WinAVR
Проблема в следующем:
при использовании в программе константы, объявленной в мейк-файле, например:

в мейк-файле:
было #F_CPU = 18432000
поменял на F_CPU=10260000

в .cpp-файле:
#if F_CPU<15000000UL
...
#endif

эклипса почти постоянно тупит и при наведении курсора на F_CPU показывает одно из предыдущих значений этой константы на котором она (эклипса) почему-то "зациклилась" (ее особенно любимые значения 8000000 и 18432000, но наверное это случайность), изредка значение по непонятным законам обновляется. Соответственно весь код между #if и #endif затеняется как выключенный.
Но, компилится все как надо!
Все бы - ничего, но текст программы становится нечитабельным.
Может кто подскажет как это побороть?
В качестве временной меры переопределяю F_CPU в .cpp-файле тем же значением, что и в мейк-файле, но душа требует красоты...

Автор: Terminator Mar 13 2009, 04:05

может обновить CDT?
Index->rebuild пробовали?

Автор: aesok Mar 13 2009, 07:28

Цитата(ZiB @ Mar 11 2009, 11:58) *
2) Есть обработчик прерываний из обработчика прерываний происходит вызов функции, как сказать компилятору что бы в обработчик прерываний сохранял только те регистры которые действительно используются (как в самом, так и во внешней функции), а не все? (уровень оптимизации менял, не помогло).


Компилятор не знает какие регистры используются в вызываемой функции, и поэтому сохраняет все call-used регистры в обработчике прерывания если в нем есть вызов функции. Вызываемая функция может находиться в другом модуле, и компилятор не может про нее ничего знать. Даже если функции находятся в одном файле они компилируются независимо.

Вы можете сделать вызываемую функцию инлайн-функцией, и тогда ее код будет вставлен в обработчик и будут сохраняться только необходимые регистры.

Есть одна очень простая аксиома: Обработчик прерывания должен выполнять только МИНИМАЛЬНО НЕОБХОДИМЫЕ действия и выполняться за как можно меньшее время. В идеале только работа с портами ввода вывода, обновление буферов с полученными/выведенными данными и установка флагов. Никакой обработки данных в прерывании!! Подготавливаться и обрабытываться данные далжны вне обработчика прерывания. Помните пока работает обработчик прерывания, все другие запросы прерываний обрабатываться не могут, и если обработчик выполняется очень долго, то может возникнуть ситуация когда эти запросы будут пропущены.

bb-offtopic.gif Книжки по программированию в которых даны примеры программ с нарушением этой аксиомы нужно сразу на костер.

Вызываю функцию в обработчике прерывания Вы скорее всего нарушаете эту аксиому.

Анатолий.

Автор: MrYuran Mar 13 2009, 07:44

Цитата(injen-d @ Mar 11 2009, 21:03) *
эклипса почти постоянно тупит и при наведении курсора на F_CPU показывает одно из предыдущих значений этой константы на котором она (эклипса) почему-то "зациклилась"

Я думаю, она помнит значение с последней компиляции
А вот зачем постоянно менять F_CPU я, чесгря, не понимаю cranky.gif

Автор: Непомнящий Евгений Mar 13 2009, 07:56

Цитата(ZiB @ Mar 11 2009, 11:58) *
1) Как в Eclipse установить "ключевые слова пользователя" (в IAR-е user keywords), необходимо для подсветки своих переименованных типов данных.
я просто уже привык писать вместо "unsigned char" Byte, Eclipse естественно его не "подсвечивает".

Preferences \ C/C++ \ Editor \ Syntax coloring - очень широкие возможности по настройке подстветки.

Тока, надеюсь, у вас не так: #define Byte unsigned char ? wink.gif

Автор: ZiB Mar 13 2009, 08:47

Цитата(aesok @ Mar 13 2009, 13:28) *
Компилятор не знает какие регистры используются в вызываемой функции, и поэтому сохраняет все call-used регистры в обработчике прерывания если в нем есть вызов функции. Вызываемая функция может находиться в другом модуле, и компилятор не может про нее ничего знать. Даже если функции находятся в одном файле они компилируются независимо.

Вы можете сделать вызываемую функцию инлайн-функцией, и тогда ее код будет вставлен в обработчик и будут сохраняться только необходимые регистры.

Есть одна очень простая аксиома: Обработчик прерывания должен выполнять только МИНИМАЛЬНО НЕОБХОДИМЫЕ действия и выполняться за как можно меньшее время. В идеале только работа с портами ввода вывода, обновление буферов с полученными/выведенными данными и установка флагов. Никакой обработки данных в прерывании!! Подготавливаться и обрабытываться данные далжны вне обработчика прерывания. Помните пока работает обработчик прерывания, все другие запросы прерываний обрабатываться не могут, и если обработчик выполняется очень долго, то может возникнуть ситуация когда эти запросы будут пропущены.

bb-offtopic.gif Книжки по программированию в которых даны примеры программ с нарушением этой аксиомы нужно сразу на костер.

Вызываю функцию в обработчике прерывания Вы скорее всего нарушаете эту аксиому.

Анатолий.

Спасибо за совет, но я уже разобрался сам.
Насчет аксиомы, не буду спорить, скажу просто что Вы не правы, так как все "эти" аксиомы нужно рассматривать в контексте конкретной задачи.

Автор: aesok Mar 13 2009, 10:00

Цитата(ZiB @ Mar 13 2009, 11:47) *
Насчет аксиомы, не буду спорить, скажу просто что Вы не правы, так как все "эти" аксиомы нужно рассматривать в контексте конкретной задачи.


Следование этой аксиоме уменьшает количество рассматриваемых контекстов при решении задачи.

Анатолий.

Автор: haker_fox Mar 13 2009, 14:27

Цитата(aesok @ Mar 13 2009, 15:28) *
Никакой обработки данных в прерывании!!

Другими словами, обработчик просто должен выполняться максимально быстро. На счет того, что нужно в нем делать, а чего не нужно, вопрос не однозначный, и как заметили выше, зависит от контекста задачи.

Автор: _Pasha Mar 13 2009, 15:36

Цитата(aesok @ Mar 13 2009, 10:28) *
Вызываю функцию в обработчике прерывания Вы скорее всего нарушаете эту аксиому.

Есть исключение - жесткая синхронизация процесса, когда общение с периферией через циклический буфер невозможно из-за привязки к реалтайму. Даже пример приведу. Допустим, нам надо обновить регистры OCRxxx для выдачи ШИМа. Но значения, которые нужны, зависят от самого последнего отсчета АЦП. И тогда ISR_NOBLOCK и удачи в плане чтоб стека хватило smile.gif   
 

Автор: injen-d Mar 13 2009, 15:45

Цитата(Terminator @ Mar 13 2009, 07:05) *
может обновить CDT?
Index->rebuild пробовали?

конечно пробовал - не помогает. К тому же, индексирование работает только в исходниках: *.c, *.cpp
попробуйте в исходнике выделить переменную, объявленную в мейк-файле. Эклипса скажет, что не знает где объявлена эта переменная (красным цветом внизу, слева),
хотя при компиляции все ОК.

Цитата(MrYuran @ Mar 13 2009, 10:44) *
Я думаю, она помнит значение с последней компиляции
А вот зачем постоянно менять F_CPU я, чесгря, не понимаю cranky.gif

не с последней компиляции, а с какой угодно! В эклипсе, отображаемое значение этой переменной может совпасть с реальным (которое в мейк-файле) только после изменения реального значения в мейк-файле, а может и остаться предидущим! И хоть ты тресни: перекомпилируй, Index->rebuild, меняй реальное значение на другие величины или пляши вокруг компа с бубном - отображаемое в эклипсе значение может так и не измениться! А может поменяться с первого раза на правильное.
bb-offtopic.gif
Мне не нужно каждый раз менять значение F_CPU, но эта переменная используется у меня для вычисления задержек, и если я захочу использовать этот код в другом проэкте с другй рабочей частотой контроллера, а у меня эклипса не хочет менять когда-то непонятно куда запомненное отображаемое значение этой переменной, это нормально?

Автор: haker_fox Mar 13 2009, 16:20

Цитата(_Pasha @ Mar 13 2009, 23:36) *
Есть исключение - жесткая синхронизация процесса, когда общение с периферией через циклический буфер невозможно из-за привязки к реалтайму. Даже пример приведу

+1
Да и вообще, если удобнее что-то считать в обработчике прерывания, и это не занимает много времени, то почему бы и не считать? Например, при управлении двигателем, варьировать ШИМ можно только по окончанию периода. Так тут как раз удобнее в таймерном прерывании производить эти модификации и даже посчитать ПИДом текущее значение OCRx.
bb-offtopic.gif
_Pasha, похоже Ваш пример тоже от двигателя... или от еще какой силовухи)

Автор: _Pasha Mar 13 2009, 16:29

Цитата(haker_fox @ Mar 13 2009, 19:20) *
 
_Pasha, похоже Ваш пример тоже от двигателя... или от еще какой силовухи)

Да. Трехфазник.

Автор: aesok Mar 13 2009, 18:24

Цитата(_Pasha @ Mar 13 2009, 18:36) *
И тогда ISR_NOBLOCK и *удачи* в плане чтоб стека хватило smile.gif   


Я именно про это.

Анатолий.

Автор: klen Mar 15 2009, 10:44

здравствуйте

маленькое замечане.

раньше когда работал на Европе, использовал CDT плагин Zylin
так как еклипс использую для разработок и под армы идля линуха и для винды то имел отдельные эклипсы с соответствующими плагинами. естественно особености возникали только при отладке.

пожже, после перехода на ганимед обнаружил что для европы есть родной плагин для отладки через JTAG - поставил проверил - работает также как и Zylin'овский. Стало возможным одной еклипсой компилять и дебажить как проекты для винды так и для армов, был првдо косяг - под ганимед плагин для европы ставится и работает, но роабоет криво в плане что глючит парсинг ошибок. это напрягало.
я присал про этот трабл в эту ветку, но тогда устранить ксяг у меня не получилось.

вчера обнаружил что для ганимеда появился этот плагин. поставил - парсинг сообщений тулчейна наладился.
пазитиф.

мож кто тоже такой сосяг словил.

Автор: alx2 Mar 15 2009, 13:05

Цитата(aesok @ Mar 13 2009, 12:28) *
Помните пока работает обработчик прерывания, все другие запросы прерываний обрабатываться не могут,
Я тоже выскажу свой протест. Не надо таких заявлений. Какой-нибудь начинающий программист может подумать, что это и вправду так.

Автор: aesok Mar 15 2009, 14:03

Цитата(alx2 @ Mar 15 2009, 16:05) *
Я тоже выскажу свой протест. Не надо таких заявлений. Какой-нибудь начинающий программист может подумать, что это и вправду так.


Да, я погорячился и выводы из правила были сделаны очень жесткими.

> Никакой обработки данных в прерывании!!

Кончо-же если обработать данные соизмеримо по времени, с сохранением их в буфере, их выгоднее обрабатывать в прерывании. (Соизмеримо для меня это быстрее или в несколько раз 2..5..10 дольше).

> Помните пока работает обработчик прерывания, все другие запросы прерываний обрабатываться не могут

Да, эта фраза относиться только к контроллерам с одноуровневой системой прерываний, В общем случае она должна быть уточнена словами про приоритеты прерываний, и про вложенные прерывания. Я писал ее в контексте контролеров AVR.

Что касаеться вложенных прерываний то уже про это писали: "...и удачи в плане чтоб стека хватило", тоесть это только для приложений от которых требуется чтобы они иногда работали ...ну или почти всегда.

Да, из любого правила можно найти исключения: В моем приложении только одно прерывание....; Я посчитал время выполнения по тактам и уверен что могу считать синус в моем обработчике прерывания... Но как только количество обработчиков в Вашем приложении приблизиться к десятку, Вы вольно или не вольно будете делать их быстрыми, для того чтобы они друг другу не мешали.

Анатолий.

Автор: _Pasha Mar 15 2009, 16:44

Цитата(alx2 @ Mar 15 2009, 17:05) *
Какой-нибудь начинающий программист может подумать...

Нормальный человек воспримет это как вектор, в котором надо располагать свои мысли. Политика, то бишь. А исключения из правил - они, в принципе, видны невооруженным глазом. Кстати, есть еще - прерывания, связанные с обработкой I2C, и хитрожопрукое мультиплексирование по каналам АЦП. Опять же, в контексте AVR.

Автор: forever failure Mar 16 2009, 09:23

Ув. гуру, поскажите плиз, если кто видал такое - при попытке просмотра содержимого регистров во время пошаговой отладки в эклипсе - выскакивает сообщение - "Error Label Job" с исключением "java.lang.FormatNumberException". В чём может быть причина и как её победить ? ОС - линух федора 7, эклипса - версии 3.3.2 (Europa).

Автор: xelax Mar 17 2009, 06:32

Цитата(klen @ Mar 15 2009, 13:44) *
вчера обнаружил что для ганимеда появился этот плагин. поставил - парсинг сообщений тулчейна наладился.
пазитиф.

мож кто тоже такой сосяг словил.


Угумс. Такой же трабл получил. Где плагин обнаружился то?

Автор: klen Mar 17 2009, 10:54

Цитата(xelax @ Mar 17 2009, 09:32) *
Угумс. Такой же трабл получил. Где плагин обнаружился то?


http://electronix.ru/redirect.php?http://download.eclipse.org/tools/cdt/releases/ganymede
CDT Optional Features
Eclipse C/C++ GCD Hardware Debugging


ставим этот плагин и наслаждаемся
я например в одной эклипсе пишу прошивку для АРМ девайса и хост QT-гуЁвый терминал, отлаживаю в одном флаконе! Красота. На винде и линухе, Ляпота!

Автор: mdmitry Mar 18 2009, 08:48

Вчера вышел обновленный eclipse-cpp-ganymede-SR2.
Список обновлений:

Код
org.eclipse.cdt    5.0.2.200902130801
org.eclipse.cdt.mylyn    5.0.2.200902130801
org.eclipse.cdt.platform    5.0.2.200902130801
org.eclipse.cvs    1.1.2.R342_v20090122-7C79E9x9sLM1t6M9YD7_A7
org.eclipse.epp.usagedata.feature    1.0.1.R200809220400
org.eclipse.mylyn.bugzilla_feature    3.0.5.v20090218-1800-e3x
org.eclipse.mylyn.context_feature    3.0.5.v20090218-1800-e3x
org.eclipse.mylyn.ide_feature    3.0.5.v20090218-1800-e3x
org.eclipse.mylyn.team_feature    3.0.5.v20090218-1800-e3x
org.eclipse.mylyn_feature    3.0.5.v20090218-1800-e3x
org.eclipse.platform    3.4.2.r34x_v20081010-9I96EiLElhh3qWoXHb-Nz-c-45TPOR8EvkPkYu

Автор: SKarpenko Apr 24 2009, 06:56

Добрый день, собираюсь отлаживать ПО под LPC2294, настрайваю среду разработки (Linux, OpenSuse 11.1) Помогите, пожалуйста, найти самый свежий (4.2.1 ?) Zylin Embedded CDT, совместимый с Eclipse 3.4.2. Дело в том, что ссылка на офоициальном сайте Zylin на странице http://electronix.ru/redirect.php?http://opensource.zylin.com/embeddedcdt.html недоступна. И поясните, пожалуйста, что еще нужно в довесок к Zylin CDT? Я читал о каком-то embedded CDT, но не понял, зачем он нужен. И еще, нужен все-таки Eclipse C/C++ CDT, или его нужно убивать, прежде чем ставить Zylin, как я прочел на каком-то форуме?

Автор: v_shamaev Apr 24 2009, 07:56

Цитата(SKarpenko @ Apr 24 2009, 10:56) *
Добрый день, собираюсь отлаживать ПО под LPC2294, настрайваю среду разработки (Linux, OpenSuse 11.1) Помогите, пожалуйста, найти самый свежий (4.2.1 ?) Zylin Embedded CDT, совместимый с Eclipse 3.4.2. Дело в том, что ссылка на офоициальном сайте Zylin на странице http://electronix.ru/redirect.php?http://opensource.zylin.com/embeddedcdt.html недоступна. И поясните, пожалуйста, что еще нужно в довесок к Zylin CDT? Я читал о каком-то embedded CDT, но не понял, зачем он нужен. И еще, нужен все-таки Eclipse C/C++ CDT, или его нужно убивать, прежде чем ставить Zylin, как я прочел на каком-то форуме?

Только что прошел по ссылке - доступна. Там написано - убивать не надо, это довесок (патч) официального CDT.

Автор: SKarpenko Apr 24 2009, 09:51

Цитата(v_shamaev @ Apr 24 2009, 11:56) *
Только что прошел по ссылке - доступна. Там написано - убивать не надо, это довесок (патч) официального CDT.

Я не совсем точно изъяснил проблему. На Zylin-сайте сказано, что требуется использовать для закачки из Eclipse Update software с адреса http://electronix.ru/redirect.php?http://opensource.zylin.com/zylincdt. Но на практике у меня Eclipse с этим адресом не соединяется. Где бы найти свежую версию плагина в виде архива?

Автор: RA3WUM May 27 2009, 09:43

Господа, может кто знает как в Eclipse использовать AVR компилятор от IAR?

Автор: klen Nov 8 2009, 14:41

в данном случае использую Eclipsе для разработки под ARM, доставлен плагин отладки Hardware Debuggin, есть проблема в том что под Linux в Eclipse все работет но не показывает регистры проца, просто пустое окошко Resgisters, в окно Variables можно засунуть $r0,$r1.... и получить тоже но осадок....
бесит этот косячег. Причем давно, я уже систему переставил и версию Eclipse сменил. Под виндой таже версия IDE и плагинов ресует при отладке значение регистров.

я один такой рыжий? ктонибудь знает как это можно поправить?


Eclipse build 20090920-1017
CDT 6.0.0.200909110608
CDT / Eclipse GDB Hardware Debugging 5.1.0.200909110608

Автор: Злодей Nov 13 2009, 00:08

Как заставить показывать .project и другие по дефолту скрываемые xml-файлы в Project Explorer?

Автор: datiqor Nov 15 2009, 20:56

Цитата(Злодей @ Nov 13 2009, 02:08) *
Как заставить показывать .project и другие по дефолту скрываемые xml-файлы в Project Explorer?



Автор: klen Nov 15 2009, 23:46

фисе ... приехал ... лыжы стерлись об асфальт cranky.gif

ни на винде не под линуксом, ни в ганимеде ни в галлилео при отладке регистры не отображаются в окошке Registers

все сломалось, везде где можно было.

осталось винду пересдавить линукс и JRE, остальное уже испробовано.

все сломалось окончательно 13 числа в пятницу. вот и не верь после этого в приметы

Автор: datiqor Nov 18 2009, 13:39

Во! Надыбал парсер ошибок для компиляторов IAR.
Если скопировать прилагаемый "jar" файл (обязательно вынуть из архива)
в каталог eclipse\plugins то в закладке с парсерами появляется строка для IAR :



Я проверил на компиляторах для AVR и MSP430 - работает.
 IAR_error_parser_1.0.0.200911181507.zip ( 2.86 килобайт ) : 118

Автор: klen Nov 19 2009, 09:56

Цитата(klen @ Nov 16 2009, 02:46) *
фисе ... приехал ... лыжы стерлись об асфальт cranky.gif



нашел причину
новый GDB 7.0 , о чем собсно в доках и написано, иеет изменеия в MI протоколе, поэтому с 6.8 все работает. а с 7.0 не все. Соответственно эклипсовский плагин апартного JTAG нада допиливать под новые фичи этого протокола.

ничего страшного. скорее всего в пакете MI сдвинулись поля и от этого плагин его криво парсит и не всю информацию выводит в отладочные окна эклипсы.

еще один повод занятся изучение млагиностроения к эклипсе.

Автор: sonycman Nov 22 2009, 17:13

Что-же, в Эклипсе так и нет возможности задавать собственные ключевые слова?

К примеру, редактор не понимает __align и тупо выделяет его как синтаксическую ошибку biggrin.gif

Цитата(Непомнящий Евгений @ Mar 13 2009, 11:56) *
Preferences \ C/C++ \ Editor \ Syntax coloring - очень широкие возможности по настройке подстветки.

Да куда уже шире. Возможности задать новое слово как не было, так и нет.
Очень странно.

Автор: _Ivan_33 Nov 23 2009, 16:26

привет всем!
поставил линукс и эклипс 3.5... как добавлять плагины туда?
help>install new software> дальше добавляю сайт плагина например http://electronix.ru/redirect.php?http://avr-eclipse.sourceforge.net/updatesite/
сам плагин находит но в процессе установки вылазит ошибка > Software being installed: AVR Eclipse Plugin 2.3.1.20081204PRD (de.innot.avreclipse.feature.group 2.3.1.20081204PRD)
Missing requirement: AVR Eclipse Plugin 2.3.1.20081204PRD (de.innot.avreclipse.feature.group 2.3.1.20081204PRD) requires 'org.eclipse.cdt.core 4.0.0' but it could not be found - как поставить этот плагин?
да и вообще, по каким критериям, устанавливая другие плагины, можно судить что ссылка правильная? например для фортрана ссылка - http://electronix.ru/redirect.php?http://wiki.eclipse.org/PTP/builds/photran/5.0.0 а если ее поставить в то окно, то среда выдаст ошибку...
заранее благодарен за ответы

Автор: _Ivan_33 Nov 23 2009, 20:56

с ошибкой попборолся путем установки дополнительных патчей
а вот как установить фортран плагин ссылку так и не нашел

Автор: IgorKossak Nov 23 2009, 20:59

Цитата(SKarpenko @ Apr 24 2009, 11:51) *
Я не совсем точно изъяснил проблему. На Zylin-сайте сказано, что требуется использовать для закачки из Eclipse Update software с адреса http://electronix.ru/redirect.php?http://opensource.zylin.com/zylincdt. Но на практике у меня Eclipse с этим адресом не соединяется. Где бы найти свежую версию плагина в виде архива?

Если не только с этим сайтом не соединяется, то попробуйте настройки сети в самой Эклипс пошаманить.
Архив плагина попробуйте в http://electronix.ru/redirect.php?http://mail.zylin.com/pipermail/zylin-discuss_zylin.com/ поискать.
Раньше автор прямые ссылки на архивы там давал. http://electronix.ru/redirect.php?http://mail.zylin.com/pipermail/zylin-discuss_zylin.com/2009-June/000621.html, например.

Автор: klen Nov 24 2009, 17:16

я раньше зулиновским плагином пользовался, а потом мне показалось что он перестал развиватся.

пользусь стандартным плагином 'Eclipse GDB Hardware Debugging'

чем зулиновский лучше?

Автор: _Ivan_33 Nov 24 2009, 18:32

спасибо за ответы, разобрался сам, подняв gfortran...
другой вопрос
создал проект в эклипсе
по дефолту там компилится для мега16
где мне поменять название микроконтроллера и частоту?
а файлы типа io.h закидывать прям в папку с проектом?

Автор: Petka Nov 25 2009, 08:30

Цитата(sonycman @ Nov 22 2009, 20:13) *
Что-же, в Эклипсе так и нет возможности задавать собственные ключевые слова?

К примеру, редактор не понимает __align и тупо выделяет его как синтаксическую ошибку biggrin.gif

а "__align" это у вас такой хитрый #define?
если так, что видимо эклипс не нашёл файла, в котором определён этот дефайн.

Автор: Сергей Борщ Nov 25 2009, 10:50

Цитата(Petka @ Nov 25 2009, 10:30) *
а "__align" это у вас такой хитрый #define?
Это ключевое слово для какого-нибудь компилятора.

Автор: Petka Nov 25 2009, 11:03

Цитата(Сергей Борщ @ Nov 25 2009, 13:50) *
Это ключевое слово для какого-нибудь компилятора.

многие "ключевые слова" таковыми не являются, например "flash" - обёртка над "__attribute__". "__attribute__" - в ключевые слова добавлен. а вот #define парсер например не смог "развернуть". сталкивался с таким. решается либо настройкой тулчейна, либо прописыванием в эклипсовские пути поиска заголовочников правильных путей.
Да, и о каком компиляторе речь-то?

Автор: Сергей Борщ Nov 25 2009, 14:53

Цитата(Petka @ Nov 25 2009, 13:03) *
многие "ключевые слова" таковыми не являются,
...
Да, и о каком компиляторе речь-то?
Вот-вот. Мир компиляторов на gcc не заканчивается. Для того же IAR __flash - ключевое слово, расширение компилятора.

Автор: mdmitry Nov 25 2009, 15:58

Цитата(_Ivan_33 @ Nov 24 2009, 21:32) *
спасибо за ответы, разобрался сам, подняв gfortran...
другой вопрос
создал проект в эклипсе
по дефолту там компилится для мега16
где мне поменять название микроконтроллера и частоту?
а файлы типа io.h закидывать прям в папку с проектом?

Хороший стиль, все-таки, указать компилятору путь к стандартным заголовочным файлам.
Если используется makefile, сделанный Вами, то все изменения вносите в него (тип контроллера, частота, ключи сборки и др.). Если используете автоматическую генерацию, то ищите в соответствующих настройках среды (в этом случае я не помощник).

Автор: _Ivan_33 Nov 25 2009, 18:49

поставил 1 пакет - все заработало)))
теперь другой вопрос - вот что поставить на эклипс для работы с арм7 от филипс в частности lpc2478? посоветуйте пожалуйста еще к нему среду прошивальщика
заранее благодарю

Автор: sonycman Nov 26 2009, 18:00

Цитата(Petka @ Nov 25 2009, 15:03) *
Да, и о каком компиляторе речь-то?

__align - ключевое слово компилятора ARM RealView.

Просто в том же SlickEdit я могу свободно добавлять новые ключ. слова типа byte, dword и т.п, что мне будет удобнее.
Странно, что в более навороченном Eclipse такого нет.

ЗЫ: с другой стороны, в SlickEdit (v14) не получилось задать цвет для имён определений #define - то есть само слово define подсвечивается, а имя его определения - нет... sad.gif

Автор: Petka Nov 26 2009, 19:38

Цитата(sonycman @ Nov 26 2009, 21:00) *
__align - ключевое слово компилятора ARM RealView.

Просто в том же SlickEdit я могу свободно добавлять новые ключ. слова типа byte, dword и т.п, что мне будет удобнее.
Странно, что в более навороченном Eclipse такого нет.

ЗЫ: с другой стороны, в SlickEdit (v14) не получилось задать цвет для имён определений #define - то есть само слово define подсвечивается, а имя его определения - нет... sad.gif


Вот тупое, но действенное решение:
http://electronix.ru/redirect.php?http://www.eclipse.org/forums/index.php?t=msg&goto=229023&S=de975717cdbba4a363a65e009734fe93

Насколько я понял после гугления на эту тему: Эклипс не просто пробегается по всем выделенным словам в коде и сверяет со списком ключевых слов. Он делает полноценный C99 парсинг. По этой причине "списка ключевых слов" не может быть в принципе. Как расценивать в таком случае конструкцию:
Код
printf(__align "Hello world!n");

?
Есть более правильные способы настройки CDTшного парсера, на они требуют знания "потрохов" системы.

Автор: sonycman Nov 27 2009, 14:37

Цитата(Petka @ Nov 26 2009, 23:38) *
Вот тупое, но действенное решение:
http://electronix.ru/redirect.php?http://www.eclipse.org/forums/index.php?t=msg&goto=229023&S=de975717cdbba4a363a65e009734fe93

Спасибо за развёрнутый совет!
Думаю, это решит часть проблемы smile.gif

ЗЫ: хотя в "слике" читать текст программы будет проще и удобнее благодаря более гибкой системе цветового кодирования.

Автор: Злодей Dec 2 2009, 05:48

Долго не хотел задавать этот вопрос, всё сам пытался найти... Кто-нибудь прикручивал к CDT компилятор M$ VisualC++ ?

Автор: AlexMad Dec 10 2009, 14:13

Появился вопросец: 

Точно не могу сказать, после чего, но, по-моему, после перехода на EclipseGalileo при старте отладки он(эклипс) стал чего-то ждать. То есть, жмешь дебаг (отладка через мт-линк), при необходимости проходит компиляция, а потом внизу, в строке статуса появляется надпись "Launching <имя проекта>:57%". Вот так висит от полминуты до минуты. Потом начинает обращаться к openOCD или к виндовому GDBserver, заливает код в кристал и начинает дальше трудиться.

На предыдущем эклипсе (Ганимед) такого не замечал. Это только у меня так? и если да, то где и как посмотреть, чего он ждет столько времени?

Автор: klen Dec 10 2009, 16:33

у меня также. есть еще косяг у галлилео - невсегда кнопки мышкой нажимаются, сие есть видимо глюк ос+java
http://electronix.ru/redirect.php?http://androidteam.ru/faq/eclipse-ubuntu-910-problems.html
все имеется ввиду под Ubuntu 9.10 (Karmic Koala), в масдае все работает

Автор: AlexMad Dec 10 2009, 18:02

Цитата(klen @ Dec 10 2009, 19:33) *
у меня также. есть еще косяг у галлилео - невсегда кнопки мышкой нажимаются, сие есть видимо глюк ос+java
http://electronix.ru/redirect.php?http://androidteam.ru/faq/eclipse-ubuntu-910-problems.html
все имеется ввиду под Ubuntu 9.10 (Karmic Koala), в масдае все работает

Да, про косячок с кнопками знаю.

ЗЫ. тоже самое относится и к НИОСу9.1 - он ведь тоже на Галилео основан.

Автор: Сергей Борщ Dec 10 2009, 20:04

Цитата(AlexMad @ Dec 10 2009, 16:13) *
Вот так висит от полминуты до минуты.
Наблюдал аналогичное поведение при запуске компилятора. У меня при исполнении makefile в path дописывается путь к компилятору. Путь берется из переменной окружения. На одной из машин переменная окружения была не прописана, в результате в path добавлялась строка, начинающаяся с \\. Естественно, машина пыталась найти сетевую шару с таким именем.

Автор: Terminator Dec 11 2009, 04:11

С кнопками тоже был косяк. Но вчера в системе обновилось куча java-вского софта и этот глюк пропал.

Автор: klen Dec 12 2009, 23:43

Цитата(Terminator @ Dec 11 2009, 07:11) *
С кнопками тоже был косяк. Но вчера в системе обновилось куча java-вского софта и этот глюк пропал.


обновил систему.. с кнопкоми косяг остался, а зависаний на страте gdb на отладку пропали... чудно все это ...
забыл спросить а система то какая?

Автор: Terminator Dec 14 2009, 05:20

gentoo cool.gif т.е. eclipse самосборный.

Подозреваю что починилось после обновления SWT до 3.5.1

Автор: AHTOXA Feb 10 2010, 11:51

Весь уже изгуглился, не нашёл нормального решения. Как прилинковывать ресурсы с относительным путём?

То есть, у меня есть папка PROJECTS, в ней папка, скажем LIBS, общая на все проекты, и папки проектов. Хочу в каждый проект прилинковать папку ../LIBS, но никак не изобрету как. Через переменную среды (Path variable) - почти нормальное решение, но она требует абсолютного пути, а они разные на разных машинах. Поделитесь опытом, кто как делает?

И вообще, никак не вырисовывается у меня в голове стройная картина, как же использовать эту эклипсуsmile.gif Вот что это за воркспейcы такие? Где их место в моей иерархии? Как мне делать, по воркспейсу на каждый проект, или по воркспейсу на каждое семейство контроллеров?

Автор: Сергей Борщ Feb 10 2010, 14:47

Цитата(AHTOXA @ Feb 10 2010, 13:51) *
То есть, у меня есть папка PROJECTS, в ней папка, скажем LIBS, общая на все проекты, и папки проектов. Хочу в каждый проект прилинковать папку ../LIBS, но никак не изобрету как. Через переменную среды (Path variable) - почти нормальное решение, но она требует абсолютного пути, а они разные на разных машинах.
Project->Propertities->C/C++ General-> Paths and symbols->Include->GNU C/C++ ->../../common и снять галочку is a workspace path
Цитата(AHTOXA @ Feb 10 2010, 13:51) *
Как мне делать, по воркспейсу на каждый проект, или по воркспейсу на каждое семейство контроллеров?
скорее первое. Если в проекте несколько контроллеров и всякие писишные утилиты - их в этот же воркспейс.

Автор: AHTOXA Feb 10 2010, 19:03

Цитата(Сергей Борщ @ Feb 10 2010, 19:47) *
Project->Propertities->C/C++ General-> Paths and symbols->Include->GNU C/C++ ->../../common и снять галочку is a workspace path


Да, сейчас так и сделано. Но в этом случае эклипс не находит функции, находящиеся в ../../common. И ошибки в этих файлах не показывает.
Хотя может это у меня что-то просто сбилось.

Цитата
скорее первое. Если в проекте несколько контроллеров и всякие писишные утилиты - их в этот же воркспейс.


Если отдельный воркспейс на каждый проект, то приходится его (воркспейс) каждый раз заново отстраивать. Тоже не фонтан... Ох, как же трудно менять средства разработкиsmile.gif

Автор: Сергей Борщ Feb 10 2010, 19:45

Цитата(AHTOXA @ Feb 10 2010, 21:03) *
Да, сейчас так и сделано. Но в этом случае эклипс не находит функции, находящиеся в ../../common. И ошибки в этих файлах не показывает.
У меня функции находит. Ошибки не показывает, это да.
Цитата(AHTOXA @ Feb 10 2010, 21:03) *
Если отдельный воркспейс на каждый проект, то приходится его (воркспейс) каждый раз заново отстраивать. Тоже не фонтан...
Так это... один раз настроить, File->Export->General->Preferences
Создаем новый воркспейс, File->Import->General->Preferences. В той же папке, в которой создали воркспейс создаем папку проекта, копируем в него из существующего .project, .cproject, makefile, редактором в первых двух правим название проекта, File->Import->Existing projects into workspace. Все.

Автор: IgorKossak Feb 10 2010, 19:52

Если папки типа ../../common добавить к проекту как Linked ресурс, то и функции найдёт и ошибки покажет.
File->New->Folder->Advanced->Link to...
В Paths and symbols специально ничего не добавляю, туда автоматически добавляются только папки с заголовочными файлами из тулчейна.

Автор: AHTOXA Feb 10 2010, 20:30

Цитата(Сергей Борщ @ Feb 11 2010, 00:45) *
У меня функции находит. Ошибки не показывает, это да.
Хм... Вот этим мне и не нравится эклипс - слишком он многогранен (если не сказать - монструозенsmile.gif ), и потому плохо предсказуем. По ошибке я нашёл как переходить, правая кнопка мыши - open external что-то там. А вот функции находит лишь частично, не подчёркивает их красненьким, то есть знает про них, но по Ctrl+click - не открывает.
За способ копирования проектов - большое спасибо, завтра испытаю.

Цитата(IgorKossak @ Feb 11 2010, 00:52) *
Если папки типа ../../common добавить к проекту как Linked ресурс, то и функции найдёт и ошибки покажет.


Так не получается, в этом и беда! Требует абсолютный путь. Я уж что только не подсовывал ему в .project. Не понимает.

Автор: AHTOXA Feb 11 2010, 15:13

Цитата(AHTOXA @ Feb 11 2010, 01:30) *
функции находит лишь частично, не подчёркивает их красненьким, то есть знает про них, но по Ctrl+click - не открывает.


Разобрался. Видимо эклипс немного иначе парсит исходники.
Код
namespace OS
{
    template <>
    OS_PROCESS void TSensorsProcess::Exec()
    {
        adc_init();        // <-- не находит
        ::adc_init();    // <-- а вот так - находит!
...


То есть, он считает, что из пространства имён видны только имена, объявленные в этом же пространстве имён (мощно задвинутоsmile.gif ). А глобальные - не видны.
Я думаю, что я смогу с этим житьsmile.gif

А ещё у меня вот такой вопрос. Есть ли возможность назначить make-target-ам горячие клавиши? Или как-то иначе повесить вызов, скажем, make reset на кнопку?

Автор: IgorKossak Feb 11 2010, 18:00

Цитата(AHTOXA @ Feb 11 2010, 17:13) *
Есть ли возможность назначить make-target-ам горячие клавиши? Или как-то иначе повесить вызов, скажем, make reset на кнопку?

Window->Show View->Make Targets, правда не кнопки, но есть куда кликать и все цели в одном месте.
Или Вам ещё проще нужно?

Автор: AHTOXA Feb 11 2010, 18:10

Цитата(IgorKossak @ Feb 11 2010, 23:00) *
Window->Show View->Make Targets


Это-то нашёл. Хочется сделать именно клавиатурное сокращение. Привык smile.gif

Автор: IgorKossak Feb 12 2010, 08:22

Предлагаю на будущее при описании проблемы указывать версию eclipse.
У меня установлен Helios M5, проблем с парсингом ошибок и исходников не наблюдаю, системные переменные с путями к проекту и воркспейсу обновляются автоматически при переносе проекта в другое место.

Автор: AHTOXA Feb 12 2010, 09:00

У меня текущая стабильная версия - eclipse-cpp-galileo-SR1-win32.zip. Helios-M5 - это же development build? Как он, не падает? Надо будет попробовать вечерком.

Автор: IgorKossak Feb 12 2010, 09:57

Цитата(AHTOXA @ Feb 12 2010, 11:00) *
Helios-M5 - это же development build? Как он, не падает? Надо будет попробовать вечерком.

Не то, что не падает, а ведёт себя намного стабильнее.
Под Linux, в отличие от Galileo, все кнопки работают.

Автор: AHTOXA Feb 12 2010, 20:51

Поставил Helios-M5. Никаких изменений (кроме заставки) пока не заметилsmile.gif
Точно так же не видит из namespace внешнюю функцию:

Код
void test_one()
{
    PB0.On();
}

namespace OS
{
    void TSensorsProcess::Exec()
    {
        test_one();        // <- вот отсюда по Ctrl+Click - не переходит на функцию test_one();
        ::test_one();    // <- если сделать так, то переходит:)
    }

    void test()
    {
        test_one();        // <- и вот отсюда - переходит.
                    // то есть, проблема только с функциями-членами.
    }
}


Ну с остальным я вроде освоился, даже поотлаживался по шагам. Баловство всё это, но приятноsmile.gif

Автор: IgorKossak Feb 12 2010, 21:00

AHTOXA, только что проверил приведенный Вами пример.
Во всех случаях подчёркивает, показывает, переходит.
Что Вы такого делаете, чтобы не работало? rolleyes.gif

Автор: AHTOXA Feb 12 2010, 22:48

Цитата(IgorKossak @ Feb 13 2010, 02:00) *
только что проверил приведенный Вами пример.

Надеюсь, TSensorsProcess был объявлен как
Код
typedef OS::process<OS::pr0, 1200> TSensorsProcess;

? Если так, то единственная оставшаяся причина (помимо оси) - разные способы подключения исходников scmRTOS. У меня они подцеплены к проекту через Project->Propertities->C/C++ General-> Paths and symbols->Include, а у вас, насколько я понял, - через File->New->Folder->Advanced->Link to.
Завтра проверю это предположение...

Автор: IgorKossak Feb 13 2010, 08:39

Цитата(AHTOXA @ Feb 13 2010, 00:48) *
Надеюсь, TSensorsProcess был объявлен как
Код
typedef OS::process<OS::pr0, 1200> TSensorsProcess;

?

Ну разве что имя немного другое.
Цитата(AHTOXA @ Feb 13 2010, 00:48) *
Если так, то единственная оставшаяся причина (помимо оси) - разные способы подключения исходников scmRTOS. У меня они подцеплены к проекту через Project->Propertities->C/C++ General-> Paths and symbols->Include, а у вас, насколько я понял, - через File->New->Folder->Advanced->Link to.
Завтра проверю это предположение...

Именно так.

Автор: AHTOXA Feb 13 2010, 09:37

Проверил. Дело было именно в этом. Как только подключил папку scmRTOS как linked folder, всё сразу стало мягким и шелковистымsmile.gif

Осталось придумать, как подключить таким образом относительный путь, и будет практически полное счастьеsmile.gif В новой версии эклипса видны подвижки в этом направлении - в списке Project->Propertities->Linked Resources уже есть PROJECT_LOC и WORKSPACE_LOC. Но при попытке указать для linked folder-а путь вида "WORKSPACE_LOC/../../scmRTOS" - не ругается, но папка отображается пустой и с восклицательным знаком.

Автор: IgorKossak Feb 13 2010, 18:56

Относительный путь через переменную можно создать если линкуемый ресурс находится как минимум в папке воркспейса.
Примерно так: WORKSPACE_LOC/scmRTOS, но не так как Вы хотите WORKSPACE_LOC/../../scmRTOS
Если не лень, зашлите на эклипс предложение об этом.

Автор: AHTOXA Feb 13 2010, 20:22

Цитата(IgorKossak @ Feb 13 2010, 23:56) *
Относительный путь через переменную можно создать если линкуемый ресурс находится как минимум в папке воркспейса.

Я так и понял. Но это противоречит идее один проект = один воркспейс. Не хранить же копии scmRTOS в каждом проекте.
Ладно, я уже смирился, завёл папку LIBS, и залинковал её. А для makefile-а - делаю NTFS-link этой папки в нужное место дерева проектов.
Цитата
Если не лень, зашлите на эклипс предложение об этом.

Насколько я понял, проблема эта (с относительными путями) давняя, и идеологи развития эклипса принципиально против её решения. Видимо это как-то противоречит джава-мышлениюsmile.gif

Автор: IgorKossak Feb 13 2010, 21:17

Цитата(AHTOXA @ Feb 13 2010, 22:22) *
Но это противоречит идее один проект = один воркспейс.

Зачем тогда воркспейс (или проект) как сущность?
У меня, например, много проектов в одном воркспейсе (в IAR было примерно так же), один проект активный, остальные отключены.
Но это моё мнение, не настаиваю.

Автор: AHTOXA Feb 13 2010, 22:58

Да вот не знаю как раз, раньше жил без воркспейсов, и не тужилsmile.gif Сейчас эклипс вынуждает, приходится придумывать применение воркспейсам. Пока я принял для себя (не без помощи Сергея Борщаsmile.gif ), что воркспейс - это группа связанных проектов. То есть, какое-нибудь двухпроцессорное устройство - воркспейс с двумя проектами. А если устройство простое, то и проект в воркспейсе один. Как-то так.

Автор: IgorKossak Feb 14 2010, 09:34

Цитата(AHTOXA @ Feb 14 2010, 00:58) *
... воркспейс - это группа связанных проектов. То есть, какое-нибудь двухпроцессорное устройство - воркспейс с двумя проектами. А если устройство простое, то и проект в воркспейсе один. Как-то так.

Такая связь далеко не единственная.
Могут быть связи или причины типа:
- приложение - бутлоадер;
- единая ОС или библиотека (как в Вашем случае);
- лень создавать новые воркспейсы biggrin.gif и переключаться между ними, всё под рукой;
- ... можно ещё при желании придумать.

Автор: AHTOXA Feb 14 2010, 10:02

Тоже логично. Особенно вот это:

Цитата(IgorKossak @ Feb 14 2010, 14:34) *
- лень создавать новые воркспейсы biggrin.gif

smile.gif
Буду теперь ещё думать. Спасибо за помощь!

Автор: Dopler Feb 18 2010, 19:29

Здравствуйте.
Использую так называемую AVR32Studio (самый настоящий Eclipse). Результатом компиляции являются файлы .elf. После компиляции такой файл можно открыть и посмотреть его структуру в текстовом виде, а так же на нем есть плюсик, который скрывает все ссылки из этого файла. Но периодически файл открываться перестает, вернее открывается, но в бинарном виде и плюсик с него пропадает. Кто-нибудь знает, с чем это связано?

Автор: Сергей Борщ Feb 18 2010, 20:28

Цитата(Dopler @ Feb 18 2010, 21:29) *
Но периодически файл открываться перестает, вернее открывается, но в бинарном виде и плюсик с него пропадает. Кто-нибудь знает, с чем это связано?
Возможно, вы в настройках проекта Project->Propertities->C/C++ Build->Settings->Binary parsers убираете галочку с Elf parser?

Автор: Dopler Feb 22 2010, 09:26

Цитата(Сергей Борщ @ Feb 18 2010, 23:28) *
Возможно, вы в настройках проекта Project->Propertities->C/C++ Build->Settings->Binary parsers убираете галочку с Elf parser?


Да, похоже дело именно в этом. Причем это я не сам ее убираю, а AVR32Studio как-то не корректно себя ведет с Make проектами. Я даже задал вопрос по этому поводу на AVRFreaks. Там сказали ждать следующей версии.

Автор: _Ivan_33 Feb 24 2010, 16:09

вот есть avr plugin for eclipse
где у него можно задать частоту и микроконтроллер!?!?!?
если кинуть мейкфайл в папку проекта - то она его не хочет жувать...
помогите пожалуйста

Автор: Konkere Mar 24 2010, 07:03

Изучаю работу в Eclipse Galileo. Очень нужна помощь, как связать klen-овскую сборку GCC mips64-elf c Eclips-ом?

Автор: Сергей Борщ Mar 24 2010, 09:08

Цитата(Konkere @ Mar 24 2010, 09:03) *
Изучаю работу в Eclipse Galileo. Очень нужна помощь, как связать klen-овскую сборку GCC mips64-elf c Eclips-ом?
Самое простое и гибкое - создать Other toolchain->makefile project. А уже в makefile руками указывайте какой угодно gcc.

Автор: Konkere Mar 26 2010, 04:15

Цитата(Сергей Борщ @ Mar 24 2010, 14:08) *
Самое простое и гибкое - создать Other toolchain->makefile project. А уже в makefile руками указывайте какой угодно gcc.


Пожалуйста, поподробнее. И, если можно, ссылки по работе с Eclipse и созданию makefile. Для меня всё это пока тёмный лес.

Автор: Сергей Борщ Apr 2 2010, 10:54

Цитата(Konkere @ Mar 26 2010, 06:15) *
Пожалуйста, поподробнее. И, если можно, ссылки по работе с Eclipse и созданию makefile. Для меня всё это пока тёмный лес.
Я в качестве отправной точки использовал описание "в картинках" от проекта Yagarto. Скачиваете и ставите http://electronix.ru/redirect.php?http://www.eclipse.org/downloads/, далее по инструкциям от yagarto создаете проект, на вкладке discovery заменяете имя компилятора gcc на имя вашего компилятора (для AVR это будет avr-gcc, например). Компилятор должен быть прописан в path.
По написанию makefile - берете http://electronix.ru/redirect.php?http://www.gnu.org/software/make/manual/, читаете от начала до конца, потом берете готовый makefile и правите под себя. Можете посмотреть makefile от проекта scmRTOS - от порта для AVR или ARM под GCC.

Автор: bureau Apr 16 2010, 17:17

Немогу запустить Eclipse как на Win так и на Lunux(ubuntu)
При при загрузке выдает:

Код
VM terminated. Exit code=13
-Xms40m
-Xmx256m
-Djava.class.path=/media/A6AE7006AE6FCD7D/!/Soft/Eclipse/eclipse_linux/eclipse/plugins/org.eclipse.equinox.launcher_1.0.1.R33x_v20080118.jar
-os linux
-ws gtk
-arch x86
-showsplash /media/A6AE7006AE6FCD7D/!/Soft/Eclipse/eclipse_linux/eclipse//plugins/org.eclipse.platform_3.3.3.r33x_r20080129/splash.bmp
-launcher /media/A6AE7006AE6FCD7D/!/Soft/Eclipse/eclipse_linux/eclipse/eclipse
-name Eclipse
--launcher.library /media/A6AE7006AE6FCD7D/!/Soft/Eclipse/eclipse_linux/eclipse/plugins/org.eclipse.equinox.launcher.gtk.linux.x86_1.0.3.R33x_v20080118/eclipse_1023.so
-startup /media/A6AE7006AE6FCD7D/!/Soft/Eclipse/eclipse_linux/eclipse/plugins/org.eclipse.equinox.launcher_1.0.1.R33x_v20080118.jar
-vm /usr/lib/jvm/java-6-openjdk/jre/bin/../lib/i386/client/libjvm.so
-vmargs
-Xms40m
-Xmx256m
-Djava.class.path=/media/A6AE7006AE6FCD7D/!/Soft/Eclipse/eclipse_linux/eclipse/plugins/org.eclipse.equinox.launcher_1.0.1.R33x_v20080118.jar

В чем может быть проблема? Прошолся по гуглу, попробывал разные варианты, не помогает... sad.gif

Автор: Andysan Apr 22 2010, 12:36

Доброго времени суток! Использую связку Eclipse+GDB+OpenOCD+Wiggler. В ходе моих студенческих порывов удалось запустить дебаггер через JTAG в Эклипсе. Но далее возникла проблема, ставлю брейкпоинт на main, до него все прекрасно добегает, далее возможны 2 варианта:
1. Жмем Run и несемся к следующему брейкпоинту(который довольно далеко), после него 1 Step into и все, OpenOCD успешно падает.
2. Жмем Step Into, входим в функцию, делаем два шага и опять OpenOCD падает.

Больше 2 брейкпоинтов не видет - при попытке добавления и запуска пишет что нельзя поставить брейкпоинт ибо и так слишком много. При вылете в консоль OpenOCD пишет - Ошибка 308. Сталкивался кто-нить с подобным и есть ли идеи как это лечить?

Автор: Злодей Apr 26 2010, 17:58

Цитата(bureau @ Apr 16 2010, 21:17) *
Немогу запустить Eclipse как на Win так и на Lunux(ubuntu)
При при загрузке выдает:
Код
VM terminated. Exit code = ...
...

В чем может быть проблема? Прошолся по гуглу, попробывал разные варианты, не помогает... sad.gif

как на Win так и на Lunux - это как?

Действительно неприятно, что не работает после после свежей установки с DVD Debian 5.0.0 2009-02-14. В ububtu вроде так же было... Наверное уже исправли.

+ Установил сегодня по мануалу http://electronix.ru/redirect.php?http://flurdy.com/docs/eclipse/install.html. Мануал для ubuntu, прокатило в Debian 5.0.0 2009-02-14.

- Впечатление - ужасное. Шрифты толстые и размытые, вокруг всех компонентов гуя такие широкие границы, что Eclipse раздуло до потери формы. Это можно исправить?

Автор: klen Apr 27 2010, 05:45

Цитата(Злодей @ Apr 26 2010, 21:58) *
Впечатление - ужасное. Шрифты толстые и размытые, вокруг всех компонентов гуя такие широкие границы, что Eclipse раздуло до потери формы. Это можно исправить?


а это не настроки оконного менеджера? мож еклипса туту нипричем?

Автор: IgorKossak Apr 27 2010, 06:51

Eclipse точно ни причём. Работаю в том числе под Ubuntu 10.04 32-bit. Вид она имеет такой же как и в Windows.

Автор: bureau Apr 27 2010, 08:33

Цитата(Злодей @ Apr 26 2010, 20:58) *
как на Win так и на Lunux - это как?

Получаю одинаковую ошибку как на Linux так и на Windows
На Ubuntu закинул файлы в дерикторию /home, обновил java и все заработало
Как я понял под Windows нужно прописать пути в системных переменных но этот вопрос пока не решал.

Цитата(Злодей @ Apr 26 2010, 20:58) *
- Впечатление - ужасное. Шрифты толстые и размытые, вокруг всех компонентов гуя такие широкие границы, что Eclipse раздуло до потери формы. Это можно исправить?

размер шрифтов в настройках поменяйте и все будет в порядке

Автор: IgorKossak Apr 27 2010, 09:01

Цитата(bureau @ Apr 27 2010, 11:33) *
Как я понял под Windows нужно прописать пути в системных переменных но этот вопрос пока не решал.

Не правильно поняли. Eclipse ни в каких системных изменениях не нуждается.
Алгоритм установки предельно прост.
1. Устанавливаете самую свежую jre (ставить jdk нет необходимости).
2. Распаковываете из архива Eclipse в любое подходящее место (у меня он находится в Program Files).
3. Запускаете eclipse.exe из установленной папки. Можно создать удобный ярлык где-нибудь.
4. Создаёте где-нибудь в рабочем пространстве workspace.
5. Если есть необходимость добавить плагины к Eclipse, то добавляются они только через Help->Install New Software... Перед этим желательно настроить сеть в Window->Preferences->General->Network Connections
Всё.

Автор: bureau Apr 27 2010, 10:32

Цитата(IgorKossak @ Apr 27 2010, 12:01) *
Не правильно поняли. Eclipse ни в каких системных изменениях не нуждается.

Извините! Немного не дописал. Я имел ввиду что пути прописывать для JAVA или JDK.
А для Eclipse с вами совершенно согласен что ничего делать не надо.

Автор: IgorKossak Apr 27 2010, 16:10

Цитата(bureau @ Apr 27 2010, 13:32) *
Извините! Немного не дописал. Я имел ввиду что пути прописывать для JAVA или JDK.

Тоже странно. Ни под Linux Ubuntu 10.04 32-bit (да, впрочем, любая) ни под Windows XP SP2/3 ничего специально прописывать не приходилось.
Осталось выяснить как Вы под каждой системой ставите jre.
Хотя, всё более чем подробно описано у Yagarto (для Windows) http://electronix.ru/redirect.php?http://www.yagarto.de/howto/yagarto2/index.html.

Автор: Konkere May 4 2010, 09:47

Доброго времени суток. Вопрос сверхначального уровня. До сих пор изучаю Eclipse Galileo в связке с gcc. Как запустить С-программу, написанную под MIPS-архитектуру, внутри Eclipse без ошибок ("running failing"); по сути говоря, чтобы нажал на "Run" и пошло. Я молчу пока про Debug 05.gif

Автор: gotty May 4 2010, 10:41

Цитата(Konkere @ May 4 2010, 12:47) *
Доброго времени суток. Вопрос сверхначального уровня. До сих пор изучаю Eclipse Galileo в связке с gcc. Как запустить С-программу, написанную под MIPS-архитектуру, внутри Eclipse без ошибок ("running failing"); по сути говоря, чтобы нажал на "Run" и пошло. Я молчу пока про Debug 05.gif

Программу для мипса можно запустить:
1. на мипсе
2. на эмуляторе мипса
А как вы пытаетесь?

Автор: Konkere May 5 2010, 03:56

Цитата(gotty @ May 4 2010, 16:41) *
Программу для мипса можно запустить:
1. на мипсе
2. на эмуляторе мипса
А как вы пытаетесь?


Насколько я знаю, у gcc есть свой симулятор, разве нельзя его использовать в Eclipse?

Автор: gotty May 5 2010, 06:14

Цитата(Konkere @ May 5 2010, 06:56) *
Насколько я знаю, у gcc есть свой симулятор, разве нельзя его использовать в Eclipse?

Вы не уточнили чьей сборкой gcc вы пользуетесь, но у CodeSourcery есть в поставке http://electronix.ru/redirect.php?http://www.codesourcery.com/sgpp/lite/mips/portal/release1284 утилита mips-sde-elf-run для запуска программы в симуляторе, или внутри gdb можно, указав "target sim". В http://electronix.ru/redirect.php?http://www.codesourcery.com/sgpp/lite/mips/portal/doc7510/getting-started.pdf про это написано.

Автор: juvf May 5 2010, 17:08

есть проект написанный на Си в IAR для MSP430. Можно как нибудь настроить eclipce на сборку проекта IAR-овскими сборщиком и компилятором xlink и icc430?

Автор: AHTOXA May 5 2010, 17:53

А что не получается? Написать makefile?
Попробуйте вот это:  iar_eclipse_msp430.rar ( 6.46 килобайт ) : 131

Это я взял свой старый makefile для сборки iar (для borland make) и поправил его для GNU make.
Компилирует все *.c файлы, которые найдёт в папке src.
К сожалению проверить не на чем, IAR-а давно нет.
Исходный makefile.bor прилагается. Пример проекта eclipse - тоже.

Автор: Konkere May 6 2010, 09:10

Цитата(gotty @ May 5 2010, 12:14) *
Вы не уточнили чьей сборкой gcc вы пользуетесь, но у CodeSourcery есть в поставке http://electronix.ru/redirect.php?http://www.codesourcery.com/sgpp/lite/mips/portal/release1284 утилита mips-sde-elf-run для запуска программы в симуляторе, или внутри gdb можно, указав "target sim". В http://electronix.ru/redirect.php?http://www.codesourcery.com/sgpp/lite/mips/portal/doc7510/getting-started.pdf про это написано.


Именно CodeSourceryLite и пользуюсь в качестве компилятора. К сожалению, я не смог запустить mips-sde-elf-run по GettingStarted, поэому вопрос мой остаётся в силе. Надеюсь на вашу помощь. help.gif

Автор: gotty May 6 2010, 10:36

Цитата(Konkere @ May 6 2010, 12:10) *
К сожалению, я не смог запустить mips-sde-elf-run по GettingStarted, поэому вопрос мой остаётся в силе. Надеюсь на вашу помощь. help.gif

Если уж надеетесь, хоть рассказали бы почему не получилось, какие сообщения получили. Попробуйте через gdb в добавок.

P.S. с мипсами дела не имел.
UPD.
Попробовал примерчик с факториалом.
Код
mips-sde-elf-gcc -EL -mno-float -o factorial.elf factorial.c -T mipssim-hosted.ld
mips-sde-elf-gdb.exe ./factorial.elf
> target sim
> load
> b main
> run
> n
топает по строчкам, только принтф не работает sad.gif (или я не умею его готовить) Не смотрите что из командной строки, отладчик легко цепляется к эклипсу. Через mips-sde-elf-run запустить не удалось, видимо надо основательно курить мануалы.

Автор: kiuaki May 6 2010, 19:03

При компиляции в Eclipse у меня и многих других появляется сообщение
“Error launching external scanner info generator”. Это относится к различным Eclipse-ам и различным сборкам для различных микроконтроллеров.
На интернет имеется множество предложений как от него избавиться.
Вопрос теперь не в том как от него избавиться. Интригует уже другое.
Пару дней поиска на интенет не дало абсолютно никакого ( ни одного!) ответа на вопрос о том
1 что же, собственно, такое «external scanner info generator»,
2 зачем он нужен
3 и как работает.
Может ли кто-нибудь дать хоть какое-то объясненте по этому вопросу.
Лучше будет в виде живого ответа, поскольку интуиция подсказывает что даже хорошая ссылка не прояснит всё что необходимо.

Автор: IgorKossak May 6 2010, 19:21

Цитата(kiuaki @ May 6 2010, 22:03) *
При компиляции в Eclipse у меня и многих других появляется сообщение
“Error launching external scanner info generator”.

Project->Properties->C/C++ Build->Discovery Options->Включить Automate discovery of paths and symbols, Включить Enable generate scanner info command, в поле Compiler invocation command впишите свой компилятор (у меня arm-none-eabi-gcc), в поле Compiler invocation arguments должно быть -E -P -v -dD ${plugin_state_location}/${specs_file}
Теоретическую подоплёку всего этого не знаю, читать документацию надо по gcc и его аргументам.

Автор: Сергей Борщ May 6 2010, 20:55

Цитата(kiuaki @ May 6 2010, 22:03) *
1 что же, собственно, такое «external scanner info generator»,
2 зачем он нужен
3 и как работает.
Чисто интуитивно: он сообщает оболочке о путях к системным библиотекам. Если он есть, то в дереве проекта в разделе includes появятся папки заголовочных файлов вашего компилятора и оболочка сможет искать в них всякие объявления. Возможно он также сообщает оболочке некоторые предопределенные компилятором символы (__GNUC__ и подобные). Пути из gcc добываются запуском компилятора с соответствующими ключами. Более точно понять, что же из компилятора добывает оболочка можно, прочитав описание ключей запуска: -E -P -v -dD

Автор: kiuaki May 6 2010, 21:27

Спасибо.
Теперь, когда есть подсказка от вас, где почитать по данному поводу, займусь этим.
Я связался с Cortex M3 и имею довольно большой объём работы.
Выбрал Eclipse (Galileo)+Yagarto. В то же время установил ещё и инструментарий от
Olimex ARM-USB-OCD (c Eclipse - Ganymede) . Хочу также настроить Insight.
Буду делиться впечатлениями.

Автор: kiuaki May 7 2010, 15:06

Со вчерашнего дня бороздил интернет по поводу следующего вопроса:
Eclipse (Galileo и Ganymede, оба для С/С++ , Yagarto) при создании New Project C не даёт возможности выбрать Generate makefile automatically . Поле greyed out или disabled.
Интернет ссылается на то что при создании нового проекта нужно выбрать Managed Makefile тип проекта. С серьёзными времязатратами выяснилось что Managed Makefile термин теперь в Eclipse не используется. Для автоматической генерации makefile теперь дОлжно использовать
New Project | C Project | C Executable (или что-то звучащее похожим образом). Но как раз этой опции у меня не возникает.
То что предлагается в моих Eclipse- ах это New Project | C Project | Makefile project где имеется выбор из Empty Project и Hello World C++ Project. Toolchains: Other Toolchain и только это.
Знает ли кто нибудь как можно осуществить автогенерацию makefile в Eclipse?
Может ли быть что у меня не установлен или не прописан в PATH-переменной какой-нибудь компонент?
Многие примеры различных проектов при этом номально компилируются. Также, если я добавляю в проект makefile вручную, то он скомпилируется.

Автор: Mitsufan May 9 2010, 21:19

Цитата(Konkere @ May 6 2010, 12:10) *
Именно CodeSourceryLite и пользуюсь в качестве компилятора. К сожалению, я не смог запустить mips-sde-elf-run по GettingStarted, поэому вопрос мой остаётся в силе. Надеюсь на вашу помощь. help.gif


Printf в симуляторе elf-run из под Win32 действительно не работает. В том числе и если запускать target sim в gdb. Об этом уже спрашивали на ARM форуме Sourcery, правда без ответа... Не работает вывод и в симуляторе сборки Клена. Наверное, какая-то общая проблема в заглушками (системными вызовами) для функций _write и т.п. Надо качать ограниченную по времени версию полнофункционального Sourcery c IDE и использовать эмулятор qemu. Тогда printf заработает. Потом можно даже научиться запускать target qemu в gdb и вернуться к применению lite компилятора. К тому же, в qemu можно хотя бы приблизительно считать процессорное время таймером c0_count, а как это делать в sim я так и не нашел.

Если я не прав (сам только недавно связался с gcc), с удовольствием выслушаю подсказку. Может надо Mingw доустанавливать?

Автор: Сергей Борщ May 10 2010, 07:15

Цитата(kiuaki @ May 7 2010, 18:06) *
Знает ли кто нибудь как можно осуществить автогенерацию makefile в Eclipse?
Смею предположить (сам не пользуюсь, пишу makefile вручную), что оболочка должна знать, какие ключи подставлять компилятору. И как-то должна давать вам возможность задавать их галочками. Вероятно, эти возможности предоставляет соответствующий плугин - http://electronix.ru/redirect.php?http://sourceforge.net/projects/gnuarmeclipse/ или http://electronix.ru/redirect.php?http://avr-eclipse.sourceforge.net/. Попробуйте, отпишитесь.

Автор: kiuaki May 10 2010, 18:19

to Сергей Борщ - Попробуйте, отпишитесь.

Спасибо, Сергей.
Но я этих галочек как раз давно стараюсь поймать, т.е. определить где бы они могли находиться.
Я сейчас ещё попытаюсь выяснить все ли необходимые компоненты присутсрвуют. Одна возможная закономерность проявляется сейчас в том что там где Eclipse работает с Cygwin – там всё в порядке, (т.е. имеется возможность выбора между Managed Makefile и Standard Makefile типами проекта. Там, где Eclipse работает с YAGARTO,этот выбор может быть или не быть. Сейчас это уточняю. Не исключено, однако, что это тупиковое направление.
Отпишусь

Автор: juvf May 11 2010, 04:35

Цитата(AHTOXA @ May 5 2010, 23:53) *
А что не получается? Написать makefile?
Попробуйте вот это:  iar_eclipse_msp430.rar ( 6.46 килобайт ) : 131

Это я взял свой старый makefile для сборки iar (для borland make) и поправил его для GNU make.
Компилирует все *.c файлы, которые найдёт в папке src.
К сожалению проверить не на чем, IAR-а давно нет.
Исходный makefile.bor прилагается. Пример проекта eclipse - тоже.

Ну да,,,, не получается написать makefile. Ваш проект скачал, попробовал собрать - ошибки
Код
--- compiling main.c

   IAR C/C++ Compiler V4.20.1.20017/W32, Evaluation edition for MSP430
Command line error: Unexpected command line arguments:
   Copyright 1996-2008 IAR Systems AB.
          -c
          -S
          -K
          -gA
          -RCODE
          -L./lst/
          -q
          -A./lst/
          -t8
mingw32-make: *** [obj/main.o] Error 2


Я сделал свой тестовый проект, типа "Hello word" в иаре. посмотрел с какими ключами вызывается icc430 И xlink. Написал свой makefile с такими же ключами.
Код
CFLAGS    += -o $(OBJDIR)
LD_FLAGS    = -o $(EXEDIR)/$(TARGET).d43

$(HEX):    $(OBJS) makefile
    @echo --- linking...
    icc430 $(OBJDIR$)/main.r43 $(LD_FLAGS)

$(OBJDIR)/%.r43: %.c
    @echo --- compiling $(*F).c
    $(CC) $(CFLAGS) -o $@ $<


Получаю ошибку
Код
**** Build of configuration Default for project testMSP430 ****

mingw32-make all
--- compiling main.cpp

   IAR C/C++ Compiler V4.20.1.20017/W32, Evaluation edition for MSP430
   Copyright 1996-2008 IAR Systems AB.
Command line error: Option can only occur once: --output/-o
mingw32-make: *** [Debug/Obj/main.r43] Error 2


Почему так? Как решить проблему?

Автор: AHTOXA May 11 2010, 05:57

Цитата(juvf @ May 11 2010, 10:35) *
Код
--- compiling main.c

   IAR C/C++ Compiler V4.20.1.20017/W32, Evaluation edition for MSP430
Command line error: Unexpected command line arguments:


Хм. Видимо у меня был очень старый IAR smile.gif
Но не суть. Раз ключи запуска вы знаете, то проблема решаемая. Запишите все ключи в CFLAGS.
Для проверки правильности формирования командной строки запускайте
Код
make -n
, этот ключ говорит make ничего не выполнять, а лишь напечатать команды, планируемые к выполнению.

Цитата
Код
CFLAGS    += -o $(OBJDIR)

А здесь вроде нужна большая "O".

Автор: juvf May 11 2010, 06:39

Цитата(AHTOXA @ May 11 2010, 11:57) *
А здесь вроде нужна большая "O".


Код
icc430
-o file|path    Specify object file
-O[n|l|m|h|hs|hz]
                Select level of optimization:
                   n   No optimizations
                   l   Low optimizations (default)
                   m   Medium optimizations
                   h   High optimizations
                   hz  High optimizations, tuned for small code
                   hs  High optimizations, tuned for high speed


что означает строка в makefile "$(CC) $(CFLAGS) -o $@ $<"? Конкретно что значит "-o $@ $<"

Автор: AHTOXA May 11 2010, 07:45

Цитата(juvf @ May 11 2010, 12:39) *
Код
-O[n|l|m|h|hs|hz]
                Select level of optimization

У-у, видимо совсем всё поменялось в IAR:)

Цитата
что означает строка в makefile "$(CC) $(CFLAGS) -o $@ $<"? Конкретно что значит "-o $@ $<"


Вместо $(ИМЯ_ПЕРЕМЕННОЙ) подставляется значение этой переменной. У нас
CC = $(IARBIN)/icc430.exe,
CFLAGS = флаги компилятора.

$@ и $< - специальные переменные, цель и зависимость. В данном случае - имя объектного файла и исходника. (например, $@ = main.r43, $< = main.c)

Ещё раз повторю, попробуйте запустить make с ключом -n, и часть вопросов сразу снимется. Вот например, что получилось у меня с исходным мейк-файлом:
Код
D:\tmp\iarmake>make -n
echo --- compiling main.c
D:/Tools/micros/MSP430/IAR_EW23/430/bin/icc430.exe -c -S -O./obj/ -e -K
-gA -s9 -RCODE -r0 -L./lst/ -ID:/Tools/micros/MSP430/IAR_EW23/430/inc/  
-I "./src"  -I "./src/base"  -I "./src/terminal" -q -A./lst/ -t8 -DFLOAT_SUPPORT
-o obj/main.o ./src/main.c
echo --- linking...
D:/Tools/micros/MSP430/IAR_EW23/430/bin/xlink.exe  ./obj/main.o
-Ointel-standard -o ./exe/msp-eclipse-iar-test.d43 -l ./lst/msp-eclipse-iar-test.map
-xms -ID:/Tools/micros/MSP430/IAR_EW23/430/lib/  
-f D:/Tools/micros/MSP430/IAR_EW23/430/cw430/msp430F149.ddf
echo "Errors: none"

Автор: MegaFPGA May 14 2010, 04:20

Пытаюсь запустить отладчик.


В чем может быть проблема ?

Автор: Сергей Борщ May 14 2010, 05:31

Цитата(MegaFPGA @ May 14 2010, 07:20) *
В чем может быть проблема ?
Вы не указали кристалл в конфиге OpenOCD. Что-то типа такого:
Код
set CHIPNAME at91sam7s256
source [find target/at91sam7sx.cfg]

Автор: MegaFPGA May 14 2010, 06:16

Спасибо. Помогло.
Теперь картина следующая:
Открываю дебагер перпектив
Запускаю OpenOCD
Консоль:

CODE
Open On-Chip Debugger 0.4.0 (2010-02-22-19:05)
Licensed under GNU GPL v2
For bug reports, read
http://electronix.ru/redirect.php?http://openocd.berlios.de/doc/doxygen/bugs.html
srst_only srst_pulls_trst srst_gates_jtag srst_open_drain
Warn : use 'at91sam7s.cpu' as target identifier, not '0'
parport port = 0x378
jtag_nsrst_delay: 200
jtag_ntrst_delay: 200
srst_only srst_pulls_trst srst_gates_jtag srst_open_drain
Info : clock speed 500 kHz
Info : JTAG tap: at91sam7s.cpu tap/device found: 0x3f0f0f0f (mfg: 0x787, part: 0xf0f0, ver: 0x3)
Info : Embedded ICE version 1
Info : at91sam7s.cpu: hardware has 2 breakpoint/watchpoint units


Запускаю Zylin
Консоль:
CODE
target remote localhost:3333
0x00000000 in ?? ()
monitor flash device = AT91SAM7S256
flash device = AT91SAM7S256: command requires more arguments
in procedure 'flash' called at file "command.c", line 650
called at file "command.c", line 361
monitor flash download = 1
flash download = 1: command requires more arguments
in procedure 'flash' called at file "command.c", line 650
called at file "command.c", line 361
monitor flash breakpoints = 1
flash breakpoints = 1: command requires more arguments
in procedure 'flash' called at file "command.c", line 650
called at file "command.c", line 361
monitor endian little
Runtime error, file "command.c", line 650:
invalid command name "endian"
monitor speed 30
Runtime error, file "command.c", line 650:
invalid command name "speed"
monitor reset 8
at91sam7s.cpu arp_examine
at91sam7s.cpu arp_halt
at91sam7s.cpu arp_halt_gdb
at91sam7s.cpu arp_poll
at91sam7s.cpu arp_reset
at91sam7s.cpu arp_waitstate
jtag arp_init-reset
jtag_reset trst_active srst_active
power_restore
reset [run|halt|init]
reset_config [none|trst_only|srst_only|trst_and_srst]
[srst_pulls_trst|trst_pulls_srst|combined|separate]
[srst_gates_jtag|srst_nogate] [trst_push_pull|trst_open_drain]
[srst_push_pull|srst_open_drain]
reset_nag ['enable'|'disable']
soft_reset_halt
srst_deasserted
Command handler execution failed
in procedure 'reset' called at file "command.c", line 650
called at file "command.c", line 361
monitor sleep 10
monitor writeu32 0xFFFFFD44 = 0x00008000
Runtime error, file "command.c", line 650:
invalid command name "writeu32"
monitor writeu32 0xFFFFFC20 = 0x00000601
Runtime error, file "command.c", line 650:
invalid command name "writeu32"
monitor sleep 10
monitor writeu32 0xFFFFFC2C = 0x00480a0e
Runtime error, file "command.c", line 650:
invalid command name "writeu32"
monitor sleep 10
monitor writeu32 0xFFFFFC30 = 0x00000007
Runtime error, file "command.c", line 650:
invalid command name "writeu32"
monitor sleep 10
monitor writeu32 0xFFFFFF60 = 0x00480100
Runtime error, file "command.c", line 650:
invalid command name "writeu32"
monitor sleep 100
monitor speed 12000
Runtime error, file "command.c", line 650:
invalid command name "speed"
load
Loading section .text, size 0x8cf0 lma 0x100000
Load failed
break main
Breakpoint 12 at 0x1002d0
continue
Warning:
Cannot insert breakpoint 12.
Error accessing memory address 0x1002d0: (undocumented errno -1).



Disassembly:

CODE
0x00000000 andeq r0, r0, r0
0x00000004 andeq r0, r0, r0
0x00000008 andeq r0, r0, r0
0x0000000c andeq r0, r0, r0
0x00000010 andeq r0, r0, r0
0x00000014 andeq r0, r0, r0
0x00000018 andeq r0, r0, r0
0x0000001c andeq r0, r0, r0
0x00000020 andeq r0, r0, r0
0x00000024 andeq r0, r0, r0
0x00000028 andeq r0, r0, r0
0x0000002c andeq r0, r0, r0
0x00000030 andeq r0, r0, r0
0x00000034 andeq r0, r0, r0
0x00000038 andeq r0, r0, r0
0x0000003c andeq r0, r0, r0
0x00000040 andeq r0, r0, r0
0x00000044 andeq r0, r0, r0
0x00000048 andeq r0, r0, r0
0x0000004c andeq r0, r0, r0
0x00000050 andeq r0, r0, r0
0x00000054 andeq r0, r0, r0
0x00000058 andeq r0, r0, r0
0x0000005c andeq r0, r0, r0
0x00000060 andeq r0, r0, r0

Дальше идет полный мудежь
CODE
Open On-Chip Debugger 0.4.0 (2010-02-22-19:05)
Licensed under GNU GPL v2
For bug reports, read
http://electronix.ru/redirect.php?http://openocd.berlios.de/doc/doxygen/bugs.html
srst_only srst_pulls_trst srst_gates_jtag srst_open_drain
Warn : use 'at91sam7s.cpu' as target identifier, not '0'
parport port = 0x378
jtag_nsrst_delay: 200
jtag_ntrst_delay: 200
srst_only srst_pulls_trst srst_gates_jtag srst_open_drain
Info : clock speed 500 kHz
Info : JTAG tap: at91sam7s.cpu tap/device found: 0x3f0f0f0f (mfg: 0x787, part: 0xf0f0, ver: 0x3)
Info : Embedded ICE version 1
Info : at91sam7s.cpu: hardware has 2 breakpoint/watchpoint units
Info : accepting 'gdb' connection from 0
Warn : acknowledgment received, but no packet pending
undefined debug reason 6 - target needs reset
Error: Target not halted
Error: auto_probe failed -304

Warn : target not halted
Warn : target not halted
Warn : target not halted
Warn : target not halted
Warn : target not halted
Warn : target not halted
Warn : target not halted
Warn : target not halted
Warn : target not halted
Warn : target not halted
Warn : target not halted
Warn : target not halted
Warn : target not halted
flash device = AT91SAM7S256: command requires more arguments
Warn : target not halted
Warn : target not halted
Warn : target not halted
Warn : target not halted
Warn : target not halted
Warn : target not halted
Warn : target not halted
Warn : target not halted
Warn : target not halted
Warn : target not halted
Warn : target not halted
Warn : target not halted
Warn : target not halted
Warn : target not halted
Warn : target not halted
Warn : target not halted
Warn : target not halted
Warn : target not halted
Warn : target not halted
Warn : target not halted
Warn : target not halted
Warn : target not halted
Warn : target not halted
Warn : target not halted
Warn : target not halted
flash download = 1: command requires more arguments
flash breakpoints = 1: command requires more arguments
Runtime error, file "command.c", line 650:
invalid command name "endian"
Runtime error, file "command.c", line 650:
invalid command name "speed"
Command handler execution failed
Runtime error, file "command.c", line 650:
invalid command name "writeu32"
Runtime error, file "command.c", line 650:
invalid command name "writeu32"
Runtime error, file "command.c", line 650:
invalid command name "writeu32"
Runtime error, file "command.c", line 650:
invalid command name "writeu32"
Runtime error, file "command.c", line 650:
invalid command name "writeu32"
Runtime error, file "command.c", line 650:
invalid command name "speed"
Warn : target not halted
Warn : target not halted
Warn : target not halted
Warn : target at91sam7s.cpu is not halted
Error: can't add breakpoint: target running
Info : dropped 'gdb' connection - error -400
Info : accepting 'gdb' connection from 0
Warn : acknowledgment received, but no packet pending
undefined debug reason 6 - target needs reset
Error: Target not halted
Error: auto_probe failed -304

Warn : target not halted
Warn : target not halted
Warn : target not halted
Warn : target not halted
Warn : target not halted
Warn : target not halted
Warn : target not halted
Warn : target not halted
Warn : target not halted
Warn : target not halted
Warn : target not halted
Warn : target not halted
Warn : target not halted
Warn : target not halted
flash device = AT91SAM7S256: command requires more arguments
Warn : target not halted
Warn : target not halted
Warn : target not halted
Warn : target not halted
Warn : target not halted
Warn : target not halted
Warn : target not halted
Warn : target not halted
Warn : target not halted
Warn : target not halted
Warn : target not halted
Warn : target not halted
Warn : target not halted
Warn : target not halted
Warn : target not halted
Warn : target not halted
Warn : target not halted
Warn : target not halted
Warn : target not halted
Warn : target not halted
Warn : target not halted
Warn : target not halted
Warn : target not halted
Warn : target not halted
Warn : target not halted
flash download = 1: command requires more arguments
flash breakpoints = 1: command requires more arguments
Runtime error, file "command.c", line 650:
invalid command name "endian"
Runtime error, file "command.c", line 650:
invalid command name "speed"
Command handler execution failed
Runtime error, file "command.c", line 650:
invalid command name "writeu32"
Runtime error, file "command.c", line 650:
invalid command name "writeu32"
Runtime error, file "command.c", line 650:
invalid command name "writeu32"
Runtime error, file "command.c", line 650:
invalid command name "writeu32"
Runtime error, file "command.c", line 650:
invalid command name "writeu32"
Runtime error, file "command.c", line 650:
invalid command name "speed"
Warn : target not halted
Warn : target not halted
Warn : target not halted
Warn : target at91sam7s.cpu is not halted
Error: can't add breakpoint: target running
Error: invalid mode value encountered 1
Error: cpsr contains invalid mode value - communication failure
Error: invalid mode value encountered 1
Error: cpsr contains invalid mode value - communication failure
target state: halted
target halted in Thumb state due to watchpoint, current mode: Supervisor
cpsr: 0x20000073 pc: 0x00002661
Error: Unable to set 32 bit software breakpoint at address 001002d0 - check that memory is read/writable
Error: Unable to set 32 bit software breakpoint at address 001002d0 - check that memory is read/writable
Error: Jazelle debug entry -- BROKEN!
Error: Jazelle state handling is BROKEN!
Warn : breakpoint not set
Error: Unable to set 32 bit software breakpoint at address 001002d0 - check that memory is read/writable
Error: Unable to set 32 bit software breakpoint at address 001002d0 - check that memory is read/writable
Error: unhandled core state
Warn : breakpoint not set
Error: Unable to set 32 bit software breakpoint at address 001002d0 - check that memory is read/writable
Error: Unable to set 32 bit software breakpoint at address 001002d0 - check that memory is read/writable
Error: unhandled core state
Warn : breakpoint not set
Error: Unable to set 32 bit software breakpoint at address 001002d0 - check that memory is read/writable
Error: Unable to set 32 bit software breakpoint at address 001002d0 - check that memory is read/writable
Error: unhandled core state
Warn : breakpoint not set
Error: Unable to set 32 bit software breakpoint at address 001002d0 - check that memory is read/writable
Error: Unable to set 32 bit software breakpoint at address 001002d0 - check that memory is read/writable
Error: unhandled core state
Warn : breakpoint not set
Error: Unable to set 32 bit software breakpoint at address 00002f48 - check that memory is read/writable
Error: Unable to set 32 bit software breakpoint at address 001002d0 - check that memory is read/writable
Error: Unable to set 32 bit software breakpoint at address 00002f48 - check that memory is read/writable
Error: Unable to set 32 bit software breakpoint at address 001002d0 - check that memory is read/writable
Error: unhandled core state
Warn : breakpoint not set
Warn : breakpoint not set
Error: Unable to set 32 bit software breakpoint at address 00002f48 - check that memory is read/writable
Error: Unable to set 32 bit software breakpoint at address 001002d0 - check that memory is read/writable
Error: Unable to set 32 bit software breakpoint at address 00002f48 - check that memory is read/writable
Error: Unable to set 32 bit software breakpoint at address 001002d0 - check that memory is read/writable
Error: unhandled core state
Warn : breakpoint not set
Warn : breakpoint not set
Error: Unable to set 32 bit software breakpoint at address 00002f48 - check that memory is read/writable
Error: Unable to set 32 bit software breakpoint at address 001002d0 - check that memory is read/writable
Error: Unable to set 32 bit software breakpoint at address 00002f48 - check that memory is read/writable
Error: Unable to set 32 bit software breakpoint at address 001002d0 - check that memory is read/writable
Error: unhandled core state
Warn : breakpoint not set
Warn : breakpoint not set
Error: Unable to set 32 bit software breakpoint at address 00002f48 - check that memory is read/writable
Error: Unable to set 32 bit software breakpoint at address 001002d0 - check that memory is read/writable
Error: Unable to set 32 bit software breakpoint at address 00002f48 - check that memory is read/writable
Error: Unable to set 32 bit software breakpoint at address 001002d0 - check that memory is read/writable
Error: unhandled core state
Warn : breakpoint not set
Warn : breakpoint not set
Error: Unable to set 32 bit software breakpoint at address 001002d0 - check that memory is read/writable
Error: Unable to set 32 bit software breakpoint at address 001002d0 - check that memory is read/writable
Error: unhandled core state
Warn : breakpoint not set
Error: Unable to set 32 bit software breakpoint at address 001002d0 - check that memory is read/writable
Error: Unable to set 32 bit software breakpoint at address 001002d0 - check that memory is read/writable
Error: unhandled core state
Warn : breakpoint not set
Error: Unable to set 32 bit software breakpoint at address 001002d0 - check that memory is read/writable
Error: Unable to set 32 bit software breakpoint at address 001002d0 - check that memory is read/writable
Error: unhandled core state
Warn : breakpoint not set
Error: Unable to set 32 bit software breakpoint at address 001002d0 - check that memory is read/writable
Error: Unable to set 32 bit software breakpoint at address 001002d0 - check that memory is read/writable
Error: unhandled core state
Warn : breakpoint not set
Error: Unable to set 32 bit software breakpoint at address 00002f48 - check that memory is read/writable
Error: Unable to set 32 bit software breakpoint at address 001002d0 - check that memory is read/writable
Error: Unable to set 32 bit software breakpoint at address 00002f48 - check that memory is read/writable
Error: Unable to set 32 bit software breakpoint at address 001002d0 - check that memory is read/writable
Error: unhandled core state
Warn : breakpoint not set
Warn : breakpoint not set
Error: Unable to set 32 bit software breakpoint at address 00002f48 - check that memory is read/writable
Error: Unable to set 32 bit software breakpoint at address 001002d0 - check that memory is read/writable
Error: Unable to set 32 bit software breakpoint at address 00002f48 - check that memory is read/writable
Error: Unable to set 32 bit software breakpoint at address 001002d0 - check that memory is read/writable
Error: unhandled core state
Warn : breakpoint not set
Warn : breakpoint not set
Error: Unable to set 32 bit software breakpoint at address 00002f48 - check that memory is read/writable
Error: Unable to set 32 bit software breakpoint at address 001002d0 - check that memory is read/writable
Error: Unable to set 32 bit software breakpoint at address 00002f48 - check that memory is read/writable
Error: Unable to set 32 bit software breakpoint at address 001002d0 - check that memory is read/writable
Error: unhandled core state
Warn : breakpoint not set
Warn : breakpoint not set
Error: Unable to set 32 bit software breakpoint at address 00002f48 - check that memory is read/writable
Error: Unable to set 32 bit software breakpoint at address 001002d0 - check that memory is read/writable
Error: Unable to set 32 bit software breakpoint at address 00002f48 - check that memory is read/writable
Error: Unable to set 32 bit software breakpoint at address 001002d0 - check that memory is read/writable
Error: unhandled core state
Warn : breakpoint not set
Warn : breakpoint not set
Error: Unable to set 32 bit software breakpoint at address 001002d0 - check that memory is read/writable
Error: unhandled core state
Warn : breakpoint not set
Error: Unable to set 32 bit software breakpoint at address 001002d0 - check that memory is read/writable
Error: unhandled core state
Warn : breakpoint not set
Error: Unable to set 32 bit software breakpoint at address 001002d0 - check that memory is read/writable
Error: unhandled core state
Warn : breakpoint not set
Error: Unable to set 32 bit software breakpoint at address 001002d0 - check that memory is read/writable
Error: unhandled core state
Warn : breakpoint not set
Error: Unable to set 32 bit software breakpoint at address 001002d0 - check that memory is read/writable
Error: unhandled core state
Warn : breakpoint not set
Error: Unable to set 32 bit software breakpoint at address 001002d0 - check that memory is read/writable
Error: unhandled core state
Warn : breakpoint not set
Error: Unable to set 32 bit software breakpoint at address 001002d0 - check that memory is read/writable
Error: unhandled core state
Warn : breakpoint not set
Error: Unable to set 32 bit software breakpoint at address 001002d0 - check that memory is read/writable
Error: unhandled core state
Warn : breakpoint not set
Error: Unable to set 32 bit software breakpoint at address 001002d0 - check that memory is read/writable
Error: unhandled core state
Warn : breakpoint not set
Error: Unable to set 32 bit software breakpoint at address 00002f48 - check that memory is read/writable
Error: Unable to set 32 bit software breakpoint at address 001002d0 - check that memory is read/writable
Error: Unable to set 32 bit software breakpoint at address 00002f48 - check that memory is read/writable
Error: Unable to set 32 bit software breakpoint at address 001002d0 - check that memory is read/writable
Error: unhandled core state
Warn : breakpoint not set
Warn : breakpoint not set
Error: Unable to set 32 bit software breakpoint at address 001002d0 - check that memory is read/writable
Error: unhandled core state
Warn : breakpoint not set
Error: Unable to set 32 bit software breakpoint at address 001002d0 - check that memory is read/writable
Error: unhandled core state
Warn : breakpoint not set

Автор: MegaFPGA May 14 2010, 07:55

Оказывается make не работает
выдает вот что:

CODE

**** Build of configuration Default for project UMGPS ****

make umgps
arm-none-eabi-gcc umgps.o -o umgps
umgps.o: In function `ISR_Driver':
um_main.c:(.text+0x24): undefined reference to `sDefaultDriver'
umgps.o: In function `ISR_VBus':
um_main.c:(.text+0x58): undefined reference to `sDefaultDriver'
umgps.o: In function `CBK_NewRequest':
um_main.c:(.text+0x68): undefined reference to `BOT_RequestHandler'
umgps.o: In function `CBK_Resume':
um_main.c:(.text+0x7c): undefined reference to `DEV_Resume'
umgps.o: In function `CBK_Suspend':
um_main.c:(.text+0x8c): undefined reference to `DEV_Suspend'
umgps.o: In function `CBK_Reset':
um_main.c:(.text+0xa0): undefined reference to `BOT_Reset'
umgps.o: In function `CBK_Init':
um_main.c:(.text+0xf8): undefined reference to `BRD_ConfigureVBus'
umgps.o: In function `System_Controller_Interrupt_Handler':
um_main.c:(.text+0x164): undefined reference to `Periodic_Interval_Timer_ISR'
um_main.c:(.text+0x16c): undefined reference to `CC_Check_Time_Elapsed'
umgps.o: In function `ISR_CC100_Usart0':
um_main.c:(.text+0x194): undefined reference to `CC_USART0_Interrupt_Handler'
umgps.o: In function `main':
um_main.c:(.text+0x1f4): undefined reference to `BOT_Init'
um_main.c:(.text+0x1fc): undefined reference to `MODB_InitRegs'
um_main.c:(.text+0x208): undefined reference to `Init_PIT_Timer'
um_main.c:(.text+0x214): undefined reference to `CC_Init'
um_main.c:(.text+0x28c): undefined reference to `BOT_StateMachine'
um_main.c:(.text+0x29c): undefined reference to `Um_CC_MB_bot'
um_main.c:(.text+0x33c): undefined reference to `sDefaultDriver'
umgps.o:(.rodata+0x0): undefined reference to `sDefaultDriver'
c:/program files/yagarto/bin/../lib/gcc/arm-none-eabi/4.5.0/../../../../
arm-none-eabi/lib\libc.a(lib_a-exit.o): In function `exit':
C:\msys\1.0\home\yagarto\newlib-build\arm-none-eabi\newlib\libc\stdlib
/../../../../../newlib-1.18.0/newlib/libc/stdlib/exit.c:65: undefined reference to `_exit'
collect2: ld returned 1 exit status
make: *** [umgps] Error 1


Почему если нажимать build all все работает и нормально собирается а когда собираешь через build make target выдает ошибку ?

Что здесь понимается под словом target ?

Автор: Сергей Борщ May 14 2010, 09:56

Цитата(MegaFPGA @ May 14 2010, 09:16) *
Спасибо. Помогло.
Теперь картина следующая:
...
Запускаю Zylin
Как-то у вас очень сложно получилось. Я использую http://electronix.ru/redirect.php?http://opensource.zylin.com/embeddedcdt.html и ничего отдельно запускать не нужно.
Вот мой openocd.cfg:
CODE
interface jlink
jtag_khz 32
set CHIPNAME at91sam7s64
source [find target/at91sam7sx.cfg]

#flash bank $_FLASHNAME at91sam7 0 0 0 0 $_TARGETNAME 0 0 0 0 0 0 0 4032

arm7_9 fast_memory_access enable
arm7_9 dcc_downloads enable

proc read_register {register} {
set result ""
ocd_mem2array result 32 $register 1
return $result(0)
}


# remap. 0 = flash, 1 = ram
proc remap { area } {
set ram_start 0x00200000
set tmp1 [read_register 0]
#alter ram[0] contents
mww $ram_start [ expr [read_register $ram_start] ^ 0xFFFFFFFF]
set tmp2 [read_register 0]
#restore ram[0]
mww $ram_start [ expr [read_register $ram_start] ^ 0xFFFFFFFF]

if [ expr $tmp1 == $tmp2 ] { # remaped contents not altered -> flash remaped
if [ expr $area == 1 ] { # remap required
mww 0xFFFFFF00 0x00000001
}
} else {
if [ expr $area == 0] { # remap required
mww 0xFFFFFF00 0x00000001
}
}
}


$_TARGETNAME configure -event reset-init {
soft_reset_halt
# RSTC_CR : Reset peripherals
jtag_khz 32
mww 0xfffffd00 0xa5000004
# wait until SRCMP set (reset in progress)
while { [expr [read_register 0xfffffd04] & 0x00020000] != 0 } { sleep 1 }

# OSC enable, no timeout
mww 0xFFFFFC20 0x00000001
# wait until MOSCS
while { [expr [read_register 0xfffffC68] & 0x00000001] == 0 } { sleep 1 }

# Assuming 4.032 MHz osc
# *36/3 set LOCK after 6 SCLK
mww 0xFFFFFC2C 0x00230602

# PRES = 2
mww 0xFFFFFC30 0x00000004
#wait untli MCKRDY
while { [expr [read_register 0xfffffC68] & 0x00000008] == 0 } { sleep 1 }

# MCK = PLLCK / 2
mww 0xFFFFFC30 0x00000007
#wait untli MCKRDY
while { [expr [read_register 0xfffffC68] & 0x00000008] == 0 } { sleep 1 }

jtag_khz 8000 #0

# MC_FMR: FWS=1
mww 0xffffff60 0x00000100

remap 0
echo "reset done"
}
OpenOCD я запускаю прямо из gdb через pipe. Можно запускать отдельно и соединяться через target remote localhost:3333, но мне отдельный запуск показался неудобным. Вот что у меня записано в .gdbinit:
Код
target remote | openocd --pipe
#target remote localhost:3333
monitor reset init
load
s



Цитата(MegaFPGA @ May 14 2010, 10:55) *
Оказывается make не работает

Что здесь понимается под словом target ?
make работает. Он делает свою работу. target в терминологии make - цель, такая как clean или all. Но как-то не приходилось пользоваться опцией Make Target. Жму на иконку с молотком и он строит текущий проект.

Автор: MegaFPGA May 14 2010, 10:25

С таким конфигом выдает вот что:

CODE
target remote | openocd --pipe
Open On-Chip Debugger 0.4.0 (2010-02-22-19:05)
Licensed under GNU GPL v2
For bug reports, read
http://electronix.ru/redirect.php?http://openocd.berlios.de/doc/doxygen/bugs.html
Remote communication error: No error.
monitor reset init
"monitor" command not supported by this target.
load
You can't do that when your target is `exec'
s
The program is not being run.

Автор: zltigo May 14 2010, 12:06

Цитата(MegaFPGA @ May 14 2010, 07:20) *
Пытаюсь запустить отладчик.

Admin: Исходные тексты превышающие все разумные размеры по ширине и сбивающие внешний вид форума будут удаляться.

Автор: Сергей Борщ May 14 2010, 12:55

Цитата(MegaFPGA @ May 14 2010, 13:25) *
С таким конфигом выдает вот что:
Ну что можно сказать?
CODE
source .gdbinit
Open On-Chip Debugger 0.4.0 (2010-04-14-14:55)
Licensed under GNU GPL v2
For bug reports, read
http://electronix.ru/redirect.php?http://openocd.berlios.de/doc/doxygen/bugs.html
0x0e874090 in ?? ()
JTAG tap: at91sam7s64.cpu tap/device found: 0x3f0f0f0f (mfg: 0x787, part: 0xf0f0, ver: 0x3)
srst pulls trst - can not reset into halted mode. Issuing halt after reset.
target state: halted
target halted in ARM state due to breakpoint, current mode: Supervisor
cpsr: 0x300000d3 pc: 0x000ee8e4
requesting target halt and executing a soft reset
target state: halted
target halted in ARM state due to breakpoint, current mode: Supervisor
cpsr: 0x300000d3 pc: 0x00000000
32 kHz
8000 kHz
reset done
А если запустить openOCD отдельно и подключившись к нему через telnet дать команду reset init?

Автор: gte May 14 2010, 23:43

Цитата(Сергей Борщ @ May 14 2010, 13:56) *
OpenOCD я запускаю прямо из gdb через pipe. Можно запускать отдельно и соединяться через target remote localhost:3333, но мне отдельный запуск показался неудобным. Вот что у меня записано в .gdbinit:[code]target remote | openocd --pipe

А как запустить JLinkGDBServer кто знает?

Автор: gte May 15 2010, 20:05

Снес Yagarto c Eclipse Europe, поставил Yagarto c GALILEO, втянул проект настроил, откомпилировал, загрузил, все, вроде бы, нормально.
Программа работает, на ЖКИ все выводится.

Джитаг МТлинк5, драйвера 3,80с.

Настройки дебагера

Код
target remote localhost:2331

monitor reset
monitor speed auto
monitor endian little
monitor flash device = LPC2368
monitor long 0xffffff60 0x00320100
monitor long 0xfffffd44 0xa0008000
monitor long 0xfffffc20 0xa0000601
monitor sleep 100
monitor long 0xfffffc2c 0x00480a0e
monitor sleep 200
monitor long 0xfffffc30 0x7
monitor sleep 100
monitor long 0xfffffd08 0xa5000401
set remote memory-write-packet-size 1024
set remote memory-write-packet-size fixed
set remote memory-read-packet-size 1024
set remote memory-read-packet-size fixed
symbol-file main.elf
continue

настройки не менял.

Но при попытке запуска на отладку пишет
Код
target remote localhost:2331
Vectors () at Common/src/Startup.S:130
130                    LDR     PC, DAbt_Addr
monitor reset
Resetting target

monitor speed auto
Select auto JTAG speed (65535 kHz)

monitor endian little
Target endianess set to "little endian"

monitor flash device = LPC2368
Select flash device: LPC2368

monitor long 0xffffff60 0x00320100
Writing 0x00320100 @ address 0xFFFFFF60

monitor long 0xfffffd44 0xa0008000
Writing 0xA0008000 @ address 0xFFFFFD44

monitor long 0xfffffc20 0xa0000601
Writing 0xA0000601 @ address 0xFFFFFC20

monitor sleep 100
Sleep 100ms

monitor long 0xfffffc2c 0x00480a0e
Writing 0x00480A0E @ address 0xFFFFFC2C

monitor sleep 200
Sleep 200ms

monitor long 0xfffffc30 0x7
Writing 0x00000007 @ address 0xFFFFFC30

monitor sleep 100
Sleep 100ms

monitor long 0xfffffd08 0xa5000401
Writing 0xA5000401 @ address 0xFFFFFD08

set remote memory-write-packet-size 1024
set remote memory-write-packet-size fixed
set remote memory-read-packet-size 1024
set remote memory-read-packet-size fixed
symbol-file main.elf
continue
Remote connection closed

и вылетает.

Причем, 2 и 3 строчки сообщения бывают разные, может быть какая нибудь подпрограмма

Может драйвера менять на новые? Никто не сталкивался?

И еще. После установки Yagarto пришлось поправить настройки и Makefile, так как
изменилось название программ GCC на arm-none-eabi-ххх.exe.
Это нормально?
обновил драйвер до 4.144b
В логе сервера пишет в конце команд и больше не соединяется до ресета процессора.
Код
WARNING: Unknown  packet received:  "qAttached"

---------пропущено

Sleep 100ms
Writing 0xA5000401 @ address 0xFFFFFD08
Read 4 bytes @ address 0x00000000 (Data = 0xE59F4018)
Starting target CPU...
...Target halted (PC = 0x011B007C)
Reading all registers
ERROR: Read memory error @ address 0x011B0000, word access: Core error.
Connection to debugger closed !

WARNING: Failed to read cacheable memory @ address 0x011B007C
Read 4 bytes @ address 0x011B007C (Data = 0xE59F4018)


В общем, разобрался. сразу после установки последнего Yagarto c GALILEO я повозился с .gdbinit
на предмет запуска JLinkGDBServer, не получилось. Оставил не рабочий .gdbinit, естественно, удалив его упоминание
в строке GDB command file: в закладке "Debugger"
Под рукой не было "железа" и я не проверял работу, а на следующий день об этом уже забыл.
Так дебагер использовал .gdbinit не смотря на пустую строку.
Cам себе создал работу :-), но похоже, я не один. В конференции Сеггера висит подобный вопрос без ответа.

Автор: juvf May 17 2010, 09:15

Цитата(AHTOXA @ May 11 2010, 13:45) *
Ещё раз повторю, попробуйте запустить make с ключом -n, и часть вопросов сразу снимется.
Спасибо помогло. Проект собрал.

Возникла следующая проблема: Пытаюсь установить плагин Zylin Embedded CDT. Получаю ошибку
Код
Some sites could not be found.  See the error log for more detail.
  No repository found at file:/C:/Documents%20and%20Settings/Прог/Мои%20документы/.
  HTTP Proxy Authentication Required: http://download.eclipse.org/technology/epp/packages/galileo/content.xml
    Proxy Authentication Required
  HTTP Proxy Authentication Required: http://download.eclipse.org/eclipse/updates/3.5/content.xml
    Proxy Authentication Required
  HTTP Proxy Authentication Required: http://download.eclipse.org/releases/galileo/content.xml
    Proxy Authentication Required
  HTTP Proxy Authentication Required: http://opensource.zylin.com/zylincdt/content.xml
    Proxy Authentication Required

как заставить Eclipse ходить через proxy с авторизацией? Или может можно как нить сделать локальное зеркало плагина Zylin Embedded CDT и установить из него?

Автор: AHTOXA May 17 2010, 09:56

Цитата(juvf @ May 17 2010, 15:15) *
Пытаюсь установить плагин Zylin Embedded CDT. Получаю ошибку


Тут я вам не советчик. Я никаких плагинов не ставил, всё у меня работало сразу "искаропки" smile.gif
ЗЫ. Eclipse HELIOS (IDE for C/C++ Developers).

Автор: juvf May 17 2010, 10:03

Цитата(AHTOXA @ May 17 2010, 15:56) *
всё у меня работало сразу "искаропки" smile.gif

А как из коробки? Мне нужно с помощью джитага внутрисхемно дебажить код. Нашел инструкцию http://electronix.ru/redirect.php?http://www.levap.ru/2009/12/debug-eclipse-gdb/
Там первым делом этот плагин надо поставить.

Автор: AHTOXA May 17 2010, 11:07

Это видимо старый вариант, сейчас все нужные плагины уже включены.
Вкратце:

  1. Создаём проект.
  2. Добиваемся чтоб компилился (пишем мейкфайл).
  3. Меню Project-Properties-C/C++ Build-Settings - ставим птички на "Elf parser" и "GNU Elf parser".
  4. Меню Run-Debug configurations
    • Выделяем "C/C++ Application";
    • Давим на "New", даём имя;
    • Давим на "Search project", находим наш скомпилированный elf-файл;
    • На вкладке "Debugger" выбираем "gdbserver debugger"
    • Там же в строку "GDB Debugger" вводим имя дебуггера
    • На закладке connection указываем параметры соединения.
  5. Зашиваем прошивку в камень (можно это делать через отладчик, но для начала так)
  6. Запускаем OpenOCD или msp430-gdbproxy, если речь о MSP430;
  7. нажимаем Run-Debug.
  8. Вроде всёsmile.gif

Автор: MegaFPGA May 18 2010, 09:17

... продолжаю свои попытки подружиться эклипсом:
1. Запускаю openocd
Open On-Chip Debugger 0.4.0 (2010-02-22-19:05)
Licensed under GNU GPL v2
For bug reports, read
http://electronix.ru/redirect.php?http://openocd.berlios.de/doc/doxygen/bugs.html
parport port = 0x378
srst_only srst_pulls_trst srst_gates_jtag srst_open_drain
Warn : use 'at91sam7s.cpu' as target identifier, not '0'
Info : clock speed 500 kHz
Info : JTAG tap: at91sam7s.cpu tap/device found: 0x3f0f0f0f (mfg: 0x787, part: 0xf0f0, ver: 0x3)
Info : Embedded ICE version 1
Info : at91sam7s.cpu: hardware has 2 breakpoint/watchpoint units

2. Запускаю дебагер.
target remote localhost:3333
monitor reset halt
JTAG tap: at91sam7s.cpu tap/device found: 0x3f0f0f0f (mfg: 0x787, part: 0xf0f0, ver: 0x3)
srst pulls trst - can not reset into halted mode. Issuing halt after reset.
target state: halted
target halted in ARM state due to breakpoint, current mode: Supervisor
cpsr: 0x20000053 pc: 0x00000cf8
NOTE! DCC downloads have not been enabled, defaulting to slow memory writes. Type 'help dcc'.
NOTE! Severe performance degradation without fast memory access enabled. Type 'help fast'.

в окне где должна происходить отладка появляется окно No source available for "main() ".

Что это значит ? У меня в качестве параметра указан файл out а в некоторых туториалах указывается файл elf. В чем разница ?

Автор: Volldemar May 18 2010, 09:31

Использую SAM-ICE, ягарто, J-LINK GDB Server. Дебаг в эклипсе запустился, по коду шагает отладка (по F5), где включить показывание регистров? Так как закладка "Registers" полностью пустая. Что и где делаю не так? Подскажите плиз!!!

Автор: Сергей Борщ May 18 2010, 11:19

Цитата(MegaFPGA @ May 18 2010, 12:17) *
Что это значит ? У меня в качестве параметра указан файл out а в некоторых туториалах указывается файл elf. В чем разница ?
Разница в выходных форматах. a.out - устаревший формат с кучей ограничений. Ошибка ваша может быть вызвана тем, что вы компилите проект без отладочной информации. Добавьте в CFLAGS -gdwarf-2 и убедитесь, что в скрипте линкера есть такие секции:
CODE
/* DWARF debug sections.
Symbols in the DWARF debugging sections are relative to the beginning
of the section so we begin them at 0. */
/* DWARF 1 */
.debug 0 : { *(.debug) }
.line 0 : { *(.line) }
/* GNU DWARF 1 extensions */
.debug_srcinfo 0 : { *(.debug_srcinfo) }
.debug_sfnames 0 : { *(.debug_sfnames) }
/* DWARF 1.1 and DWARF 2 */
.debug_aranges 0 : { *(.debug_aranges) }
.debug_pubnames 0 : { *(.debug_pubnames) }
/* DWARF 2 */
.debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
.debug_abbrev 0 : { *(.debug_abbrev) }
.debug_line 0 : { *(.debug_line) }
.debug_frame 0 : { *(.debug_frame) }
.debug_str 0 : { *(.debug_str) }
.debug_loc 0 : { *(.debug_loc) }
.debug_macinfo 0 : { *(.debug_macinfo) }
/* SGI/MIPS DWARF 2 extensions */
.debug_weaknames 0 : { *(.debug_weaknames) }
.debug_funcnames 0 : { *(.debug_funcnames) }
.debug_typenames 0 : { *(.debug_typenames) }
.debug_varnames 0 : { *(.debug_varnames) }
Да, и выводить надо в .elf (a.out не поддерживает дополнительные секции), для этого надо явно указать линкеру выходной файл с расширением .elf:
Код
##Link
ELF = $(OUTDIR)/$(PROJECT).elf
....
$(ELF): $(OBJ)
    @echo Linking: $@
    $(CC) $(LDFLAGS) $(OBJ) $(LINKONLYOBJECTS) $(LIBS) -o $@



Цитата(Volldemar @ May 18 2010, 12:31) *
Так как закладка "Registers" полностью пустая.
А каким плугином пользуетесь для отладки? Что выбираете при создании Debug Configuration? Что указываете на вкладке Debugger? Распишите подробнее.

Автор: Volldemar May 18 2010, 11:38

Настройки, в прикреплённом изображении. Плугин - вроде Zylin CDT smile.gif

 

Автор: Сергей Борщ May 18 2010, 11:57

Цитата(Volldemar @ May 18 2010, 14:38) *
Настройки, в прикреплённом изображении. Плугин - вроде Zylin CDT smile.gif
У меня то же самое. Работает. Но в последней версии есть глючок - при пошаговой отладке содержимое окна пропадает. Приходится открывать какую-нибудь другую вкладку в этом окне и потом возвращаться к вкладке регистров.

Автор: Volldemar May 18 2010, 12:04

Цитата(Сергей Борщ @ May 18 2010, 14:57) *
У меня то же самое. Работает. Но в последней версии есть глючок - при пошаговой отладке содержимое окна пропадает. Приходится открывать какую-нибудь другую вкладку в этом окне и потом возвращаться к вкладке регистров.


У меня изначально вкладка регистерс - пустая, пошагово работает, вижу изменение R15 (PC), обведено красным. Что делать, куда копать?

 

Автор: Volldemar May 18 2010, 13:14

Вот такая ошибка вылазит, в аттаче
что бы это значило?

 

Автор: MegaFPGA May 19 2010, 02:31

Все равно не получается.
Вот мой мэйк файл:

CODE

TARGET=AT91SAM7S256
BOARD=AT91SAM7SEK
SUBTARGET=UMGPS
#TARGET=AT91SAM7A3
#CLASS=HID
#MODE=KEYBOARD
#CLASS=HID
#MODE=MOUSE
#CLASS=CDC
#REMAP=YES
DEBUG=YES
LEDS=YES
#TRACES=YES
TRACES=NO
POWER=AUTO
#REVISION=REV_A

VALIDTARGETS_ARM7 = \
AT91SAM7S321 AT91SAM7S64 AT91SAM7S128 AT91SAM7S256 AT91SAM7S512 \
AT91SAM7SE32 AT91SAM7SE256 AT91SAM7SE512 \
AT91SAM7X128 AT91SAM7X256 AT91SAM7X512 \
AT91SAM7A3
VALIDTARGETS_ARM9 = AT91RM9200 AT91SAM9260 AT91SAM9261 AT91SAM9263
VALIDTARGETS = $(VALIDTARGETS_ARM7) $(VALIDTARGETS_ARM9)

#-------------------------------------------------------------------------------
# Check target
#-------------------------------------------------------------------------------
ifndef TARGET
$(warning Warning: No target selected, using default target AT91SAM7S64.)
TARGET = AT91SAM7S256
endif

ifndef SUBTARGET
$(warning Warning: No target selected, using default target AT91SAM7S64.)
SUBTARGET = UMGPS
endif

ifeq (,$(filter $(TARGET), $(VALIDTARGETS)))
$(error Error: $(TARGET): Unknown target.)
endif

ifeq (,$(filter $(TARGET), $(VALIDTARGETS_ARM9)))
MCPU = arm7tdmi
else
#todo: check this (must read - no AT91 ARM9 here for tests)
MCPU = arm9
endif


#-------------------------------------------------------------------------------
# Check board
#-------------------------------------------------------------------------------
ifndef BOARD
$(warning Warning: No board selected, using default board AT91SAM7SEK.)
BOARD = AT91SAM7SEK
endif

#-------------------------------------------------------------------------------
# Check remap
#-------------------------------------------------------------------------------
ifndef REMAP
REMAP = NO
else
ifneq ($(REMAP),YES)
REMAP = NO
endif
endif

#-------------------------------------------------------------------------------
# Check debug
#-------------------------------------------------------------------------------
ifndef DEBUG
DEBUG = NO
else
ifneq ($(DEBUG),YES)
DEBUG = NO
endif
endif

#-------------------------------------------------------------------------------
# Check leds
#-------------------------------------------------------------------------------
ifndef LEDS
LEDS = YES
else
ifneq ($(LEDS),NO)
LEDS = YES
endif
endif

#-------------------------------------------------------------------------------
# Check traces
#-------------------------------------------------------------------------------
ifndef TRACES
TRACES = YES
else
ifneq ($(TRACES),NO)
TRACES = YES
endif
endif

#-------------------------------------------------------------------------------
# Check power
#-------------------------------------------------------------------------------
ifndef POWER
POWER = AUTO
else
ifneq ($(POWER),BUS)
POWER = AUTO
endif
endif

#-------------------------------------------------------------------------------
# Check mode
#-------------------------------------------------------------------------------
ifndef MODE
MODE = NO
endif

#-------------------------------------------------------------------------------
# Summary
#-------------------------------------------------------------------------------

ifeq ($(TARGET),AT91SAM7A3)
ifndef REVISION
$(warning Revision: REV_B)
else
$(warning Revision: $(REVISION))
endif
endif

GCCLIB = C:\Program\ /Files\yagarto\arm-none-eabi\lib
GCCLIB2 = C:\Program\ /Files\yagarto\lib\gcc\arm-none-eabi\4.5.0
GCCINC = C:\Program\ /Files\yagarto\arm-none-eabi\include
GCCINC2 = C:\Program\ /Files\yagarto\lib\gcc\arm-none-eabi\4.5.0

CC = arm-none-eabi-gcc
LD = $(GCCPATH)arm-none-eabi-ld -v
AR = $(GCCPATH)arm-none-eabi-ar
AS = $(GCCPATH)arm-none-eabi-as -v
CP = $(GCCPATH)arm-none-eabi-objcopy
OD = $(GCCPATH)arm-none-eabi-objdump

CFLAGS = -I./ -I$(GCCINC) -I$(GCCINC2) -L$(GCCLIB) -L$(GCCLIB2) -c -mcpu=arm7tdmi -O2 \
$(OPTIMIZATION) -D$(TARGET) -D$(SUBTARGET) -D$(BOARD) -gdwarf-2

ifeq ($(LEDS),NO)
CFLAGS := $(CFLAGS) -DNOLEDS
endif

ifeq ($(TRACES),NO)
CFLAGS := $(CFLAGS) -DNOTRACES
endif

AFLAGS = -ahlns -x assembler-with-cpp -D$(TARGET) -D$(SUBTARGET) -I$(GCCINC1) -I$(GCCINC2) \
-L$(GCCLIB) -L$(GCCLIB2)

LFLAGS = -L$(GCCLIB) -L$(GCCLIB2) -nostartfiles
LFLAGS += -Map=umgps.map -TAT91SAM7S256-ROM.ld -I$(GCCINC1) -I$(GCCINC2) \
--cref --gc-sections --entry=__ENTRY

CPFLAGS = -O binary
ODFLAGS = -x --syms

OBJECTS = Cstartup.o umgps.o timerisr.o timersetup.o blinker.o
OBJECTS += isrsupport.o device.o standard.o udp.o um_bot_driver.o
OBJECTS += um_sbc_methods.o board.o at91stdio.o syscalls.o um_mb_methods.o CRC.o
OBJECTS += um_spi.o um_CC1000.o um_sys_controller.o

# make target called by Eclipse (Project -> Clean ...)
clean:
-rm $(OBJECTS) Cstartup.lst umgps.lst umgps.out umgps.bin umgps.hex umgps.map umgps.dmp

#make target called by Eclipse (Project -> Build Project)
all: umgps.elf
@ echo "...copying"
$(CP) $(CPFLAGS) umgps.elf umgps.bin
$(OD) $(ODFLAGS) umgps.elf > umgps.dmp

umgps.elf: $(OBJECTS) AT91SAM7S256-ROM.ld
@ echo "..linking"
$(LD) $(LFLAGS) -o umgps.elf $(OBJECTS)

Cstartup.o: Cstartup.S
@ echo ".assembling $@..."
$(CC) -c $(AFLAGS) $< -o $@

umgps.o: um_main.c
@ echo ".compiling $@..."
$(CC) $(CFLAGS) um_main.c -o umgps.o

timerisr.o: timerisr.c
@ echo ".compiling $@..."
$(CC) $(CFLAGS) timerisr.c

timersetup.o: timersetup.c
@ echo ".compiling $@..."
$(CC) $(CFLAGS) timersetup.c

isrsupport.o: isrsupport.c
@ echo ".compiling $@..."
$(CC) $(CFLAGS) isrsupport.c

blinker.o: blinker.c
@ echo ".compiling $@..."
$(CC) $(CFLAGS) blinker.c

board.o: board.c
@ echo ".compiling $@..."
$(CC) $(CFLAGS) board.c

device.o: device.c
@ echo ".compiling $@..."
$(CC) $(CFLAGS) device.c

standard.o: standard.c
@ echo ".compiling $@..."
$(CC) $(CFLAGS) standard.c

udp.o: udp.c
@ echo ".compiling $@..."
$(CC) $(CFLAGS) udp.c

um_bot_driver.o: um_bot_driver.c
@ echo ".compiling $@..."
$(CC) $(CFLAGS) um_bot_driver.c

um_sbc_methods.o: um_sbc_methods.c
@ echo ".compiling"
$(CC) $(CFLAGS) um_sbc_methods.c

at91stdio.o: at91stdio.c
@ echo ".compiling $@..."
$(CC) $(CFLAGS) at91stdio.c

syscalls.o: syscalls.c
@ echo ".compiling $@..."
$(CC) $(CFLAGS) syscalls.c

um_mb_methods.o: um_mb_methods.c
@ echo ".compiling $@..."
$(CC) $(CFLAGS) um_mb_methods.c

CRC.o: CRC.c
@ echo ".compiling $@..."
$(CC) $(CFLAGS) CRC.c

um_spi.o: um_spi.c
@ echo ".compiling $@..."
$(CC) $(CFLAGS) um_spi.c

um_CC1000.o: um_CC1000.c
@ echo ".compiling $@..."
$(CC) $(CFLAGS) um_CC1000.c

um_sys_controller.o: um_sys_controller.c
@ echo ".compiling $@..."
$(CC) $(CFLAGS) um_sys_controller.c


# ********************************************************************************
**************
# FLASH PROGRAMMING
# ********************************************************************************
**************

# specify output filename here (must be *.bin file)
OCD_TARGET = umgps.bin

# specify the directory where openocd executable and configuration files reside
OPENOCD_DIR = 'C:\Program Files\OpenOCD\0.4.0\bin\'

# specify OpenOCD executable (pp is for the wiggler, ftd2xx is for the USB debuggers)
OPENOCD = $(OPENOCD_DIR)openocd.exe

# specify OpenOCD configuration file (pick the one for your device)
OPENOCD_CFG = $(OPENOCD_DIR)at91sam7s256-wiggler-flash-program.cfg

# program the AT91SAM7S256 internal flash memory
program: $(OCD_TARGET)
@echo "Flash Programming with OpenOCD..."
openocd.exe -f $(OPENOCD_CFG)
@echo "Flash Programming Finished."





скрипт линкера:
CODE
/*---------------------------------------------------------------------------*/
/*- ATMEL Microcontroller Software Support - ROUSSET - */
/*---------------------------------------------------------------------------*/
/* The software is delivered "AS IS" without warranty or condition of any */
/* kind, either express, implied or statutory. This includes without */
/* limitation any warranty or condition with respect to merchantability or */
/* fitness for any particular purpose, or against the infringements of */
/* intellectual property rights of others. */
/*---------------------------------------------------------------------------*/
/*- File source : AT91SAM7S_sections_ROM.ldh */
/*- Object : Section-definitions for the Flash workspace */
/* (to be included from the linker-script) */
/*- Compilation flag : None */
/*- */
/*- 1.0 20/Oct/04 JPP : Creation */
/* */
/* Modifications by Martin Thomas (not Atmel) for WinARM */
/* 1.1mt --.---.---- : ramfunc, C++-support, and more */
/* 1.2mt 04.Aug.2006 : split of MEMORY and SECTIONS */
/* support for function- and data-sections (gcc4) */
/* 1.3mt 02.Sep.2006 : added NOLOAD at .bss */
/*---------------------------------------------------------------------------*/

MEMORY
{
CODE (rx) : ORIGIN = 0x00100000, LENGTH = 256k
DATA (rwx) : ORIGIN = 0x00200000, LENGTH = 64k
}

/*
__FIRST_IN_RAM = ORIGIN(DATA);
__TOP_STACK = ORIGIN(DATA) + LENGTH(DATA);
*/

/* Section Definitions */

SECTIONS
{
/* first section is .text which is used for code */
. = ORIGIN(CODE);

.text :
{
KEEP(*(.vectorg))
. = ALIGN(4);
KEEP(*(.init))
*(.text .text.*) /* remaining code */
*(.gnu.linkonce.t.*)
*(.glue_7)
*(.glue_7t)
*(.gcc_except_table)
*(.rodata) /* read-only data (constants) */
*(.rodata.*)
*(.gnu.linkonce.r.*)
. = ALIGN(4);
} >CODE

. = ALIGN(4);

/* .ctors .dtors are used for c++ constructors/destructors */

.ctors :
{
PROVIDE(__ctors_start__ = .);
KEEP(*(SORT(.ctors.*)))
KEEP(*(.ctors))
PROVIDE(__ctors_end__ = .);
} >CODE

.dtors :
{
PROVIDE(__dtors_start__ = .);
KEEP(*(SORT(.dtors.*)))
KEEP(*(.dtors))
PROVIDE(__dtors_end__ = .);
} >CODE

. = ALIGN(4);

_etext = . ;
PROVIDE (etext = .);

/* .data section which is used for initialized data */
.data : AT (_etext)
{
_data = . ;
__data_start = .;
KEEP(*(.vectmapped))
. = ALIGN(4);
*(.fastrun .fastrun.*)
. = ALIGN(4);
SORT(CONSTRUCTORS)
. = ALIGN(4);
*(.data)
*(.data.*)
*(.gnu.linkonce.d.*)
. = ALIGN(4);
} >DATA

. = ALIGN(4);

_edata = . ;
PROVIDE (edata = .);

/* .bss section which is used for uninitialized data */
.bss (NOLOAD) :
{
__bss_start = . ;
__bss_start__ = . ;
*(.bss)
*(.bss.*)
*(.gnu.linkonce.b.*)
*(COMMON)
. = ALIGN(4);
} >DATA

. = ALIGN(4);

__bss_end__ = . ;

_end = .;
PROVIDE (end = .);

/* Stabs debugging sections. */
.stab 0 : { *(.stab) }
.stabstr 0 : { *(.stabstr) }
.stab.excl 0 : { *(.stab.excl) }
.stab.exclstr 0 : { *(.stab.exclstr) }
.stab.index 0 : { *(.stab.index) }
.stab.indexstr 0 : { *(.stab.indexstr) }
.comment 0 : { *(.comment) }
/* DWARF debug sections.
Symbols in the DWARF debugging sections are relative to the beginning
of the section so we begin them at 0. */
/* DWARF 1 */
.debug 0 : { *(.debug) }
.line 0 : { *(.line) }
/* GNU DWARF 1 extensions */
.debug_srcinfo 0 : { *(.debug_srcinfo) }
.debug_sfnames 0 : { *(.debug_sfnames) }
/* DWARF 1.1 and DWARF 2 */
.debug_aranges 0 : { *(.debug_aranges) }
.debug_pubnames 0 : { *(.debug_pubnames) }
/* DWARF 2 */
.debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
.debug_abbrev 0 : { *(.debug_abbrev) }
.debug_line 0 : { *(.debug_line) }
.debug_frame 0 : { *(.debug_frame) }
.debug_str 0 : { *(.debug_str) }
.debug_loc 0 : { *(.debug_loc) }
.debug_macinfo 0 : { *(.debug_macinfo) }
/* SGI/MIPS DWARF 2 extensions */
.debug_weaknames 0 : { *(.debug_weaknames) }
.debug_funcnames 0 : { *(.debug_funcnames) }
.debug_typenames 0 : { *(.debug_typenames) }
.debug_varnames 0 : { *(.debug_varnames) }

}

Автор: MegaFPGA May 19 2010, 05:48

Подправил параметры запуска линовщика и компилятора в мэйке:

CODE
# ***************************************************************
# * Makefile for Atmel AT91SAM7S256 - flash execution *
# * *
# * *
# * James P Lynch September 3, 2006 *
# ***************************************************************

#NAME = umgps

include mt_defs.mk

VALIDTARGETS_ARM7 = \
AT91SAM7S321 AT91SAM7S64 AT91SAM7S128 AT91SAM7S256 AT91SAM7S512 \
AT91SAM7SE32 AT91SAM7SE256 AT91SAM7SE512 \
AT91SAM7X128 AT91SAM7X256 AT91SAM7X512 \
AT91SAM7A3
VALIDTARGETS_ARM9 = AT91RM9200 AT91SAM9260 AT91SAM9261 AT91SAM9263
VALIDTARGETS = $(VALIDTARGETS_ARM7) $(VALIDTARGETS_ARM9)

#-------------------------------------------------------------------------------
# Check parameters
#-------------------------------------------------------------------------------

#-------------------------------------------------------------------------------
# Check target
#-------------------------------------------------------------------------------
ifndef TARGET
$(warning Warning: No target selected, using default target AT91SAM7S64.)
TARGET = AT91SAM7S256
endif

ifndef SUBTARGET
$(warning Warning: No target selected, using default target AT91SAM7S64.)
SUBTARGET = UMGPS
endif

ifeq (,$(filter $(TARGET), $(VALIDTARGETS)))
$(error Error: $(TARGET): Unknown target.)
endif

ifeq (,$(filter $(TARGET), $(VALIDTARGETS_ARM9)))
MCPU = arm7tdmi
else
#todo: check this (must read - no AT91 ARM9 here for tests)
MCPU = arm9
endif


#-------------------------------------------------------------------------------
# Check board
#-------------------------------------------------------------------------------
ifndef BOARD
$(warning Warning: No board selected, using default board AT91SAM7SEK.)
BOARD = AT91SAM7SEK
endif

#-------------------------------------------------------------------------------
# Check class
#-------------------------------------------------------------------------------
#ifndef CLASS
#$(warning Warning: No class selected, using default enumeration class.)
#CLASS = ENUM
#endif

#-------------------------------------------------------------------------------
# Check remap
#-------------------------------------------------------------------------------
ifndef REMAP
REMAP = NO
else
ifneq ($(REMAP),YES)
REMAP = NO
endif
endif

#-------------------------------------------------------------------------------
# Check debug
#-------------------------------------------------------------------------------
ifndef DEBUG
DEBUG = NO
else
ifneq ($(DEBUG),YES)
DEBUG = NO
endif
endif

#-------------------------------------------------------------------------------
# Check leds
#-------------------------------------------------------------------------------
ifndef LEDS
LEDS = YES
else
ifneq ($(LEDS),NO)
LEDS = YES
endif
endif

#-------------------------------------------------------------------------------
# Check traces
#-------------------------------------------------------------------------------
ifndef TRACES
TRACES = YES
else
ifneq ($(TRACES),NO)
TRACES = YES
endif
endif

#-------------------------------------------------------------------------------
# Check power
#-------------------------------------------------------------------------------
ifndef POWER
POWER = AUTO
else
ifneq ($(POWER),BUS)
POWER = AUTO
endif
endif

#-------------------------------------------------------------------------------
# Check mode
#-------------------------------------------------------------------------------
ifndef MODE
MODE = NO
endif

#-------------------------------------------------------------------------------
# Summary
#-------------------------------------------------------------------------------

#$(warning Target:$(TARGET)/$(MCPU) Board:$(BOARD))
#$(warning Class:$(CLASS) Mode:$(MODE) Power:$(POWER))
#$(warning Remap:$(REMAP))
#$(warning Debug:$(DEBUG) LEDs:$(LEDS) Traces:$(TRACES))

ifeq ($(TARGET),AT91SAM7A3)
ifndef REVISION
$(warning Revision: REV_B)
else
$(warning Revision: $(REVISION))
endif
endif

GCCLIB = C:\Program\ /Files\yagarto\arm-none-eabi\lib
GCCLIB2 = C:\Program\ /Files\yagarto\lib\gcc\arm-none-eabi\4.5.0
GCCINC = C:\Program\ /Files\yagarto\arm-none-eabi\include
GCCINC2 = C:\Program\ /Files\yagarto\lib\gcc\arm-none-eabi\4.5.0

CC = arm-none-eabi-gcc
LD = arm-none-eabi-ld -v
AR = arm-none-eabi-ar
AS = arm-none-eabi-as -v
CP = arm-none-eabi-objcopy
OD = arm-none-eabi-objdump

#CFLAGS1 = -I./ -I$(GCCINC) -I$(GCCLIB) -c -fno-common -mthumb-interwork -O2 -g
#CFLAGS = -I./ -I$(GCCINC) -I$(GCCLIB) -c -fno-common -mthumb -mthumb-interwork -O2 -g

#CFLAGS1 = -I./ -I$(GCCINC) -I$(GCCINC2) -c -fno-common -O2
CFLAGS = -I./ -I$(GCCINC) -I$(GCCINC2) -L$(GCCLIB) -L$(GCCLIB2) -c -mcpu=arm7tdmi -O2 $(OPTIMIZATION) -D$(TARGET) -D$(SUBTARGET) -D$(BOARD) -gdwarf-2
CFLAGS += -mthumb-interwork
CFLAGS += -fomit-frame-pointer -Wall -Wstrict-prototypes -fverbose-asm -Wa,-ahlms=$(<:.c=.lst)
ifeq ($(LEDS),NO)
CFLAGS := $(CFLAGS) -DNOLEDS
endif

ifeq ($(TRACES),NO)
CFLAGS := $(CFLAGS) -DNOTRACES
endif

#ifeq ($(POWER),BUS)
#CFLAGS := $(CFLAGS) -DUSB_BUS_POWERED
#endif

#ifneq ($(MODE),NO)
#CFLAGS := $(CFLAGS) -D$(MODE)
#endif

#CFLAGS = -I./ -c -fno-common -O0 -g
#AFLAGS = -ahlns -mapcs-32 -D$(TARGET) -o Cstartup.o
AFLAGS = -ahlns -gdwarf-2 -x assembler-with-cpp -D$(TARGET) -D$(SUBTARGET) -I$(GCCINC1) -I$(GCCINC2) -L$(GCCLIB) -L$(GCCLIB2)
#LFLAGS = -Map umgps.map -Tdemo_at91sam7_blink_flash.cmd
LFLAGS = -L$(GCCLIB) -L$(GCCLIB2) -nostartfiles
LFLAGS += -Map=umgps.map -TAT91SAM7S256-ROM.ld -I$(GCCINC1) -I$(GCCINC2) --cref --gc-sections --entry=__ENTRY

CPFLAGS = -O binary
ODFLAGS = -x --syms


OBJECTS = Cstartup.o umgps.o timerisr.o timersetup.o blinker.o
OBJECTS += isrsupport.o device.o standard.o udp.o um_bot_driver.o
OBJECTS += um_sbc_methods.o board.o at91stdio.o syscalls.o um_mb_methods.o CRC.o
OBJECTS += um_spi.o um_CC1000.o um_sys_controller.o



# make target called by Eclipse (Project -> Clean ...)
clean:
-rm $(OBJECTS) Cstartup.lst umgps.lst umgps.out umgps.elf umgps.bin umgps.hex umgps.map umgps.dmp


#make target called by Eclipse (Project -> Build Project)
all: umgps.elf
@ echo "...copying"
$(CP) $(CPFLAGS) umgps.elf umgps.bin
$(OD) $(ODFLAGS) umgps.elf > umgps.dmp

umgps.elf: $(OBJECTS) AT91SAM7S256-ROM.ld

@ echo "..linking"
$(LD) $(LFLAGS) -o umgps.elf $(OBJECTS)
# $(LD) $(LFLAGS) -o umgps.out $(OBJECTS) $(GCCLIB2)libgcc.a
# $(LD) $(LFLAGS) -o umgps.out $(OBJECTS) -nostartfiles

Cstartup.o: Cstartup.S
@ echo ".assembling $@..."
$(CC) -c $(AFLAGS) $< -o $@
#$(CC) $(CFLAGS) -Wa -ahlns Cstartup.s -o Cstartup.o

umgps.o: um_main.c
@ echo ".compiling $@..."
$(CC) $(CFLAGS) um_main.c -o umgps.o

timerisr.o: timerisr.c
@ echo ".compiling $@..."
$(CC) $(CFLAGS) timerisr.c

#Cstartup_SAM7.o: Cstartup_SAM7.c
# @ echo ".compiling $@..."
# $(CC) $(CFLAGS) Cstartup_SAM7.c

timersetup.o: timersetup.c
@ echo ".compiling $@..."
$(CC) $(CFLAGS) timersetup.c

isrsupport.o: isrsupport.c
@ echo ".compiling $@..."
# $(CC) $(CFLAGS1) isrsupport.c
$(CC) $(CFLAGS) isrsupport.c

blinker.o: blinker.c
@ echo ".compiling $@..."
$(CC) $(CFLAGS) blinker.c

board.o: board.c
@ echo ".compiling $@..."
$(CC) $(CFLAGS) board.c

device.o: device.c
@ echo ".compiling $@..."
$(CC) $(CFLAGS) device.c

standard.o: standard.c
@ echo ".compiling $@..."
$(CC) $(CFLAGS) standard.c

udp.o: udp.c
@ echo ".compiling $@..."
$(CC) $(CFLAGS) udp.c

um_bot_driver.o: um_bot_driver.c
@ echo ".compiling $@..."
$(CC) $(CFLAGS) um_bot_driver.c

um_sbc_methods.o: um_sbc_methods.c
@ echo ".compiling"
$(CC) $(CFLAGS) um_sbc_methods.c

at91stdio.o: at91stdio.c
@ echo ".compiling $@..."
$(CC) $(CFLAGS) at91stdio.c

syscalls.o: syscalls.c
@ echo ".compiling $@..."
$(CC) $(CFLAGS) syscalls.c

um_mb_methods.o: um_mb_methods.c
@ echo ".compiling $@..."
$(CC) $(CFLAGS) um_mb_methods.c

CRC.o: CRC.c
@ echo ".compiling $@..."
$(CC) $(CFLAGS) CRC.c

um_spi.o: um_spi.c
@ echo ".compiling $@..."
$(CC) $(CFLAGS) um_spi.c

um_CC1000.o: um_CC1000.c
@ echo ".compiling $@..."
$(CC) $(CFLAGS) um_CC1000.c

um_sys_controller.o: um_sys_controller.c
@ echo ".compiling $@..."
$(CC) $(CFLAGS) um_sys_controller.c


# ********************************************************************************
**************
# FLASH PROGRAMMING (using OpenOCD and Amontec JTAGKey)
#
# Alternate make target for flash programming only
#
# You must create a special Eclipse make target (program) to run this part of the makefile
# (Project -> Create Make Target... then set the Target Name and Make Target to "program")
#
# OpenOCD is run in "batch" mode with a special configuration file and a script file containing
# the flash commands. When flash programming completes, OpenOCD terminates.
#
# Note that the make file below creates the script file of flash commands "on the fly"
#
# Programmers: Martin Thomas, Joseph M Dupre, James P Lynch
# ********************************************************************************
**************

# specify output filename here (must be *.bin file)
OCD_TARGET = umgps.bin

# specify the directory where openocd executable resides (openocd-ftd2xx.exe or openocd-pp.exe)
OPENOCD_DIR = 'c:\Program Files\openocd-2006re93\bin\'

# specify OpenOCD executable (pp is for the wiggler, ftd2xx is for the USB debugger)
#OPENOCD = $(OPENOCD_DIR)openocd-pp.exe
OPENOCD = openocd-pp
#OPENOCD = $(OPENOCD_DIR)openocd-ftd2xx.exe

# specify OpenOCD configuration file (pick the one for your device)
#OPENOCD_CFG = $(OPENOCD_DIR)at91sam7s256-wiggler-flash-program.cfg
OPENOCD_CFG = at91sam7s256-wiggler-flash-program.cfg
#OPENOCD_CFG = $(OPENOCD_DIR)at91sam7s256-jtagkey-flash-program.cfg
#OPENOCD_CFG = $(OPENOCD_DIR)at91sam7s256-armusbocd-flash-program.cfg

# specify the name and folder of the flash programming script file
OPENOCD_SCRIPT = script.ocd

# program the AT91SAM7S256 internal flash memory
program: $(OCD_TARGET)
@echo "Preparing OpenOCD script..."
@cmd /c 'echo wait_halt > $(OPENOCD_SCRIPT)'
@cmd /c 'echo armv4_5 core_state arm >> $(OPENOCD_SCRIPT)'
@cmd /c 'echo flash write 0 $(OCD_TARGET) 0x0 >> $(OPENOCD_SCRIPT)'
@cmd /c 'echo mww 0xfffffd08 0xa5000401 >> $(OPENOCD_SCRIPT)'
@cmd /c 'echo reset >> $(OPENOCD_SCRIPT)'
@cmd /c 'echo shutdown >> $(OPENOCD_SCRIPT)'
@echo "Flash Programming with OpenOCD..."
$(OPENOCD) -f $(OPENOCD_CFG)
@echo "Flash Programming Finished."

Отладка запустилась !
Но работает не нормально.
Жму Ф5 несколько раз и вот что выдет консоль:
Warn : stepi ignored. GDB will now fetch the register state from the target.
Error: address + size wrapped(0xfffffffe, 0x00000004)
Error: address + size wrapped(0xfffffffe, 0x00000004)
Error: address + size wrapped(0xfffffffe, 0x00000004)
Error: address + size wrapped(0xfffffffe, 0x00000004)
Warn : memory read caused data abort (address: 0x20000052, size: 0x1, count: 0x2)
Warn : memory read caused data abort (address: 0x20000052, size: 0x1, count: 0x2)
Warn : memory read caused data abort (address: 0x20000052, size: 0x1, count: 0x2)
Warn : memory read caused data abort (address: 0x20000052, size: 0x1, count: 0x2)
Warn : memory read caused data abort (address: 0x20000052, size: 0x1, count: 0x2)
Warn : memory read caused data abort (address: 0x20000052, size: 0x1, count: 0x2)

И потом зависает.

Автор: Volldemar May 20 2010, 12:55

Переустановил Eclipse CDT, и Zylin, всё осталось по прежнему. Кто, что подскажет???

Автор: gte May 20 2010, 16:31

Цитата(Volldemar @ May 20 2010, 16:55) *
Переустановил Eclipse CDT, и Zylin, всё осталось по прежнему. Кто, что подскажет???

У Вас какая версия Yagarto? Если последняя, то у меня в Debugger указан
C:\Program Files\yagarto\bin\arm-none-eabi-gdb.exe,
а elf был в предыдущей версии.
Может Вы поставили поверх предыдущей и в таком варианте не хочет работать.

Автор: Volldemar May 20 2010, 17:41

Цитата(gte @ May 20 2010, 19:31) *
У Вас какая версия Yagarto? Если последняя, то у меня в Debugger указан
C:\Program Files\yagarto\bin\arm-none-eabi-gdb.exe,
а elf был в предыдущей версии.
Может Вы поставили поверх предыдущей и в таком варианте не хочет работать.

Проблема была и в предыдущей версии, и в текущей "arm-none-eabi-gdb.exe".
Перекомпиляция проекта производилась и до, и после, т.е. elf-файл был адекватен версии gdb.

Новая версия ягарто ставилась поверху, но в мейк-файле всё это учитывалось:

#CROSS_COMPILE= arm-elf-
CROSS_COMPILE= arm-none-eabi-

куда копать? в чём проблемка?

Автор: gte May 20 2010, 17:53

Цитата(Volldemar @ May 20 2010, 21:41) *
Проблема была и в предыдущей версии, и в текущей "arm-none-eabi-gdb.exe".

Надеюсь, Java "свежая".
При запуске отладчика с Мт-линк, у меня сбивается, если перед запуском я не выставлю скорость GDB сервера от 100 кГц. Попробуйте, поиграйтесь скоростью соединения.

Автор: Volldemar May 21 2010, 07:18

Цитата(gte @ May 20 2010, 20:53) *
Надеюсь, Java "свежая".
При запуске отладчика с Мт-линк, у меня сбивается, если перед запуском я не выставлю скорость GDB сервера от 100 кГц. Попробуйте, поиграйтесь скоростью соединения.



ява свежая: "java version "1.6.0_20""

Вот что выводит в консоль:

target remote localhost:2331
0x0020089c in ?? ()
monitor flash device = AT91SAM9XE512
Select flash device: AT91SAM9XE512

monitor halt
monitor reset halt
Expected an decimal digit (0-9)

thbreak main
Hardware assisted breakpoint 1 at 0x2010b0: file sam9xe512_test.S, line 11.
continue

Temporary breakpoint 1, main () at sam9xe512_test.S:11
11 LDR R1,=0x46

Скорость соединения менял, не влияет. Всё так же нет отображения во вкладке "Registers". Что делать? куда копать? sad.gif

Автор: AHTOXA May 21 2010, 07:48

Цитата(Volldemar @ May 21 2010, 13:18) *
Код
Cannot access memory at address 0x2243220


А что там? По этому адресу? Покажите скрипт инициализации отладчика.
Попробуйте добавить в него
Код
set mem inaccessible-by-default off


Цитата(Volldemar @ May 21 2010, 13:18) *
Код
monitor reset halt
Expected an decimal digit (0-9)


Это тоже непорядок. Попробуйте поменять на
Код
monitor soft_reset_halt



---
ЗЫ. И конфиги openocd тоже покажите.

Автор: Volldemar May 21 2010, 07:56

Использую SAM-ICE и J-Link GDB Server(v4.14b).
Инициализация во вложении на картинке.

Cannot access memory at address 0x2243220 - решил, сам заплужил, не совпадал зашитый бин-файл и отлаживаемый smile.gif

После замены на "monitor soft_reset_halt":

Выдача в консоль:
target remote localhost:2331
0x002015a8 in const5 ()
monitor flash device = AT91SAM9XE512
Select flash device: AT91SAM9XE512

monitor halt
monitor soft_reset_halt
Target does not support this command.
thbreak main
Hardware assisted breakpoint 1 at 0x2010b0: file sam9xe512_test.S, line 11.
continue
Remote connection closed
kill
The program is not being run.

 

Автор: gte May 26 2010, 22:45

Цитата(MegaFPGA @ May 18 2010, 13:17) *
в окне где должна происходить отладка появляется окно No source available for "main() ".

Обнаружил такую же проблему
No source available for "main() "
при переходе на последнюю версию Yagarto.
Сразу не заметил, так как отлаживал подпрограмму, а на них, кроме самого main(), все работает, правда только с драйвером 3,80с (но это и раньше было).
В интернете полно сообщений о подобной проблеме без ответов. Видимо какое то наложение. Попробую позже поставить на чистую систему.
Подскажите, лежит где нибудь предыдущая версия Yagarto с исправленным багом обработчика прерываний?
Может кто выложить сможет?
Последняя это:
eclipse-cpp-galileo-SR2-win32.zip
yagarto-bu-2.20.1_gcc-4.5.0-c-c++_nl-1.18.0_gdb-7.1_eabi_20100501.exe
yagarto-tools-20091223-setup.exe

Автор: IgorKossak May 27 2010, 06:56

Цитата(gte @ May 27 2010, 01:45) *
Подскажите, лежит где нибудь предыдущая версия Yagarto с исправленным багом обработчика прерываний?

http://electronix.ru/redirect.php?http://sourceforge.net/projects/yagarto/files/

Автор: gte May 27 2010, 07:28

Цитата(IgorKossak @ May 27 2010, 10:56) *
http://electronix.ru/redirect.php?http://sourceforge.net/projects/yagarto/files/

Спасибо. Тогда доп вопрос. У них в каждой сборке рекомендованы определенные версии Eclipse и yagarto-tools.
Не будет ли глюков, если на старую Eclipse Europa я поставлю более новую сборку и, соответственно, другой версией плагина Zylin?

Автор: IgorKossak May 27 2010, 07:37

Цитата(gte @ May 27 2010, 10:28) *
Спасибо. Тогда доп вопрос. У них в каждой сборке рекомендованы определенные версии Eclipse и yagarto-tools.
Не будет ли глюков, если на старую Eclipse Europa я поставлю более новую сборку и, соответственно, другой версией плагина Zylin?

Я Вам дал ссылку на тулчейны, которые никак не связаны со средой проектирования.
Могут поменяться настройки типа вместо arm-elf- вставить arm-none-eabi- и т. д.
Zylin плагин больше ориентирован на отладку, насколько я помню, но и от него мало что зависит, больше от версии OpenOCD и настройки его конфигов.

Автор: gte May 27 2010, 18:28

Цитата(IgorKossak @ May 27 2010, 11:37) *
Zylin плагин больше ориентирован на отладку, насколько я помню, но и от него мало что зависит, больше от версии OpenOCD и настройки его конфигов.

Так проблема, именно, в отладке. По какой то причине при отладке не находится текст main(), при том, что остальные подпрограммы нормально отлаживаются. Проект перед этим нормально отлаживался в ранней сборке.

Автор: klen May 27 2010, 20:09

Цитата(gte @ May 27 2010, 22:28) *
Так проблема, именно, в отладке. По какой то причине при отладке не находится текст main(), при том, что остальные подпрограммы нормально отлаживаются. Проект перед этим нормально отлаживался в ранней сборке.


я к этому по другому отношусь, обычно после компиляции частенько просматриваю че за ассемблер нагенерил компиллер - полезно знаетели, так вот после включения жеских оптимизаций я!! в асме порой этот main ненахожу - работать работает, но оптимизатор код так переколбашивает что концов иногда не видно, про переменные я вообще молчу, рассует по регистрам - отладчик читае DWARF но там тоже не все можно сохранить, шас вот вот новый DWARF4 прикрутят - мож полегче станет.

вот както так, не стоит без разбора все валить на gdb и эклипс.


у меня другая проблема, с gdb 6.8 регистры парсятся, а с пви 7 почемуто нет. Глядя на MI лог видно что с шестой перед работой с процессом еклипс посылает команду - "список регистров", после чего знает че опрашивать чтоб регистры показать, если gdb 7 то не видно чтоб эклипс пытался узнать че за регистры есть у таргета... во такая беда.
мож кто знает кто виноват и че делать?

Автор: bureau May 27 2010, 23:59

Создаю новый проект С++ с внешним make файлом.
Сам make файл:

Цитата
CXX = g++

INC = -I./inc -I$(ROOTSYS)/include
SRC = ./src
OBJ = ./obj
OBJS = $(OBJ)/Global.o $(OBJ)/TELFile.o $(OBJ)/TELAlign.o $(OBJ)/TELTrack.o $(OBJ)/TELFileRaw.o

ROOTLIBS = `root-config --libs` -lMinuit
RUDELIBS = -L/usr/local/lib/ -lrudeconfig

LIBS = $(ROOTLIBS) $(RUDELIBS)

all: $(OBJS) ./TELAna.cxx
$(CXX) -ggdb $(INC) $^ $(LIBS) -o tel

$(OBJ)/%.o: $(SRC)/%.cxx
$(CXX) -ggdb $(INC) -c $< -o $@

В результате компиляции в консоли Eclipse получаю:
Цитата
make all
g++ -ggdb -I./inc -I/include obj/Global.o obj/TELFile.o obj/TELAlign.o obj/TELTrack.o obj/TELFileRaw.o TELAna.cxx `root-config --libs` -lMinuit -L/usr/local/lib/ -lrudeconfig -o tel
/bin/sh: root-config: not found


Как результат не видит $(ROOTSYS) и не распознает кавычек в `root-config --libs` Если я запускаю с консоли этот make файл то все проходит на ура.
В чем может быть проблема?

Автор: gte May 28 2010, 06:36

Цитата(bureau @ May 28 2010, 03:59) *
Как результат не видит $(ROOTSYS) и не распознает кавычек в `root-config --libs` Если я запускаю с консоли этот make файл то все проходит на ура.
В чем может быть проблема?


У меня после установки (W2K) приходилось менять sh.exe и, кажется, make.exe, echo.exe.

Цитата(klen @ May 28 2010, 00:09) *
я к этому по другому отношусь, обычно после компиляции частенько просматриваю че за ассемблер нагенерил компиллер - полезно знаетели, так вот после включения жеских оптимизаций я!! в асме порой этот main ненахожу -

вот както так, не стоит без разбора все валить на gdb и эклипс.

Оптимизации нет, проект работает в железе и отлаживался в другой сборке, правился make касательно изменившегося названия компилятора.

Автор: MegaFPGA May 28 2010, 07:36

Ситуация такая:
Купил Olimex ARM-USB-TINY.
Установил последние эклипс, openocd, yagarto.
Запускаю openocd используя стандартные конфиги для этого джитага и для моего процессора at91sam7s256.
Запускаю Zylin так:
target remote localhost:3333
monitor reset init
monitor sleep 10
monitor halt
load
s

Отладка запускается нормально без ошибок. Но когда нажимаю step in то указатель выполняемой строки кода перемещается как то случайным образом. Иногда нормально по порядку. Иногда перескакивает команды. Иногда просто хаотично скачет причем ни каких ошибок не выдает.
Хелп.

Автор: gte May 28 2010, 07:50

Цитата(MegaFPGA @ May 28 2010, 11:36) *
Установил последние эклипс, openocd, yagarto.

У кого нибудь эта сборка работает без проблем?

Автор: MegaFPGA May 28 2010, 08:37

Поставил уровень оптимизация на 1. Было два. Указатель перестал скакать. Но все равно есть глюки. Не передаются аргументы функций !

Автор: bureau May 28 2010, 09:14

Цитата(gte @ May 28 2010, 09:36) *
У меня после установки (W2K) приходилось менять sh.exe и, кажется, make.exe, echo.exe.

Можно поподробней?
У меня Linux Ubuntu.

Add:
Странно, но проблема решилась сама когда я запустил eclipse с командной строки. До этого запускал его через кнопку запуска. Такое впечатление что eclipse запускалась не под тем ЮЗЕРом под которым нахожусь в системе...

Автор: gte May 28 2010, 12:49

Цитата(bureau @ May 28 2010, 13:14) *
Можно поподробней?
У меня Linux Ubuntu.

Увы, я же написал, что операционка Windows 2000.

Автор: IgorKossak May 28 2010, 17:40

Цитата(gte @ May 28 2010, 10:50) *
У кого нибудь эта сборка работает без проблем?

У меня. А что?

Автор: gte May 28 2010, 18:34

Цитата(IgorKossak @ May 28 2010, 21:40) *
У меня. А что?

Значит есть полное основание переставить операционку и поставить с нуля.
Кстати, стоит на Windows?

Автор: IgorKossak May 28 2010, 19:02

Цитата(gte @ May 28 2010, 21:34) *
Значит есть полное основание переставить операционку и поставить с нуля.
Кстати, стоит на Windows?

Yagarto не может стоять не на Windows. У меня WinXP(SP2 и SP3).

Автор: MegaFPGA May 31 2010, 07:48

Вопрос по компилятору.
Проект собирается нормально когда флаг -О 1 2 или 3. Когда ставлю 0 то выползают ошибки.
Например функция:

CODE
extern inline unsigned int min(unsigned int dValue1, unsigned int dValue2)
{
if (dValue1 < dValue2) {

return dValue1;
}
else {

return dValue2;
}
}


Она находится в файле common.h
Вызывая эту функцию из других файлов получаю ошибку undefined reference to `min'
Если убрать extern inline то выдает ошибку multiple definition хотя это не так.

Хелп.

Автор: MegaFPGA May 31 2010, 08:54

С этой ошибкой разобрался. Просто скопировал перед каждым вызовом тело функции.
Осталось последняя ошибка.
Строка:unsigned int baud_value = ((main_clock*10)/(baud_rate * 16));

undefined reference to `__aeabi_uidiv' lib_AT91SAM7S256.h
Вот тут совсем не понятно.

Автор: Сергей Борщ May 31 2010, 09:24

Цитата(MegaFPGA @ May 31 2010, 10:48) *
Она находится в файле common.h
Вызывая эту функцию из других файлов получаю ошибку undefined reference to `min'
При -O0 встраивание отключено.
Цитата(MegaFPGA @ May 31 2010, 10:48) *
Если убрать extern inline то выдает ошибку multiple definition хотя это не так.
Это действительно так. Убрав inline (extern тут совершенно лишний, скорее нужен static) вы сделали функцию глобальной, а поскольку она находится в заголовочном файле - вы получили по копии функции в каждом файле, о чем и сообщил компилятор. Зачем -O0?
Цитата
undefined reference to `__aeabi_uidiv' lib_AT91SAM7S256.h
Поскольку вы отключили оптимизацию, компилятор должен выполнить все действия на этапе выполнения, т.е. и умножение и деление. А функции деления в библиотеке почему-то нет. Почему нет - это уже вопрос к авторам сборки.

Автор: MegaFPGA May 31 2010, 10:01

-O0 для отладки.

Автор: agtsoft Jun 24 2010, 06:18

Народ, подскажите, это только у меня или закономерность: JLinkGDBServer.exe иногда вышибает во время отладки... В остальном не жалуюсь smile.gif
Использую Galileo, Keil, J-Link, отлаживаю axf при -O0.

Автор: agtsoft Jun 24 2010, 07:56

Цитата(agtsoft @ Jun 24 2010, 10:18) *
Народ, подскажите, это только у меня или закономерность: JLinkGDBServer.exe иногда вышибает во время отладки... В остальном не жалуюсь smile.gif
Использую Galileo, Keil, J-Link, отлаживаю axf при -O0.


В логе: Failed to measure CPU clock frequency: second loop count is less than first one!
При этом замечено, что вышибает, когда несколько "неудачныхsmile.gif" бреакпоинтов стоит. Если их убираешь, проходит "на ура"....

Автор: AlexMad Jul 11 2010, 10:35

Есть вопрос при переходе на Гелиос:

Есть два еклипса (гелиос и галилео).

Воркспейс для гелиоса взял пустой, настроил так же, как и галилео, добавил проект. В Галилео отладка через open-ocd/mt-link идет "на ура", а в Гелиосе идет запуск, можно нажать паузу - камушек остановится, НО в окне кода такая строка: No source available for ""

 

Повторюсь: при тех же настройках в Галилео все отлично работает, более того, это проявляется на двух разных машинах.


Автор: ШевченкоПетр Jul 30 2010, 13:08

Использую связку FT2232_JTAG + OpenOCD + Eclipse для отладки тестового проекта под STM32F103RBT6.

JTAG c OpenOCD соединяется, при запуске отладки в лог выводиться сообщение

Цитата
Open On-Chip Debugger 0.3.0-in-development (2009-09-05-16:24) Release
$URL: http://electronix.ru/redirect.php?http://svn.berlios.de/svnroot/repos/openocd/trunk/src/openocd.c $
For bug reports, read http://electronix.ru/redirect.php?http://svn.berlios.de/svnroot/repos/openocd/trunk/BUGS
1000 kHz
jtag_nsrst_delay: 100
jtag_ntrst_delay: 100
Warn : use 'stm32.cpu' as target identifier, not '0'
Info : device: 4 "2232C"
Info : deviceID: 67330064
Info : SerialNumber: FT29304050A
Info : Description: USB <-> Serial Cable A
Info : clock speed 1000 kHz
Info : JTAG tap: stm32.cpu tap/device found: 0x3ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x3)
Info : JTAG tap: stm32.bs tap/device found: 0x16410041 (mfg: 0x020, part: 0x6410, ver: 0x1)
Info : accepting 'gdb' connection from 0
Warn : target was in unknown state when halt was requested
Warn : acknowledgment received, but no packet pending
Info : device id = 0x20036410
Info : flash size = 128kbytes
Info : device id = 0x20036410
Info : flash size = 128kbytes
flash 'stm32x' found at 0x08000000
stm32x mass erase complete
Error: No flash at address 0x00000000

wrote 0 byte from file main.bin in 0.062500s (0.000000 kb/s)
Info : JTAG tap: stm32.cpu tap/device found: 0x3ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x3)
Info : JTAG tap: stm32.bs tap/device found: 0x16410041 (mfg: 0x020, part: 0x6410, ver: 0x1)
target state: halted
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0xfffffffe msp: 0xfffffffc
requesting target halt and executing a soft reset
target state: halted
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0xfffffffe msp: 0xfffffffc
Warn : negative acknowledgment, but no packet pending


Похоже, что не хочет прошивать flash , так как не находит ее по заданному адресу.
Аналогичный лог выводит и при отладке проекта для stm_p103 от Olimex.
В чем может быть причина такого поведения?

Автор: AlexMad Aug 6 2010, 11:00

Цитата(AlexMad @ Jul 11 2010, 14:35) *
Есть вопрос при переходе на Гелиос:

Есть два еклипса (гелиос и галилео).

Воркспейс для гелиоса взял пустой, настроил так же, как и галилео, добавил проект. В Галилео отладка через open-ocd/mt-link идет "на ура", а в Гелиосе идет запуск, можно нажать паузу - камушек остановится, НО в окне кода такая строка: No source available for ""


Вобщем, решилось достаточно просто: пришлось заново создать проект в гелиосе.


Так что при переходе недостаточно взять чистый воркспейс, вместо импорта старых проектов нужно новые создавать.


Автор: ШевченкоПетр Aug 12 2010, 11:28

Пытаюсь запустить отладку в Eclipse - пока безуспешно.
Использую JTAG - адаптер на ft2232C, микроконтроллер STM32F103RBT6( 128кб флеш 20кб ОЗУ ) ,

openocd запускаю с конфигурационными файлами -f interface/ftdi_jtag.cfg -f target/stm32.cfg

stm32.cfg cтандартный из директории openocd

содержимое ftdi_jtag.cfg:

Цитата
interface ft2232
ft2232_device_desc "USB <-> Serial Cable A"
ft2232_layout usbjtag
ft2232_vid_pid 0x0403 0x6010


скрипт компоновщика для загрузки в SRAM :

Цитата
MEMORY
{
rom (rx) : ORIGIN = 0x00000000, LENGTH = 128K
ram (rwx) : ORIGIN = 0x20000000, LENGTH = 20K
}
SECTIONS
{
. = 0x00000000; /* From 0x00000000 */
.text : {
*(vectors) /* Vector table */
*(.text) /* Program code */
*(.rodata) /* Read only data */
}>ram
. = 0x20000000; /* From 0x20000000 */

.data : {
*(.data) /* Data memory */
}>ram
.bss : {
*(.bss) /* Zero-filled run time allocate data memory */
}>ram
}


команды отладчика:

Цитата
target remote localhost:3333
monitor halt
monitor load_image out/arm_project.elf
monitor verify_image out/arm_project.elf
thbreak main
continue


в консоль выводит:

Цитата
target remote localhost:3333
0x00000000 in ?? ()
monitor halt
monitor load_image out/arm_project.elf
264 bytes written at address 0x20000000
downloaded 264 bytes in 0.343750s (0.750 kb/s)
monitor verify_image out/arm_project.elf
checksum mismatch - attempting binary compare
Verify operation failed address 0x20000000. Was 0x02 instead of 0x00

Command handler execution failed
in procedure 'verify_image' called at file "command.c", line 650
called at file "command.c", line 361
thbreak main
Hardware assisted breakpoint 1 at 0x20000084
continue
stm32.cpu -- clearing lockup after double fault

Program received signal SIGINT, Interrupt.
0x20000004 in VectorArray ()


Судя по логу верификация дает несовпадение записанного и считанного образа.
Надпись "stm32.cpu -- clearing lockup after double fault" вызывает недоумение, к чему это?

Для загрузки в флеш использовал :

Цитата
target remote localhost:3333
monitor halt
monitor flash probe 0
monitor stm32x mass_erase 0
monitor flash write_bank 0 out/arm_project.elf 0x08000000
monitor reset halt
monitor soft_reset_halt
thbreak main
continue


и подправил соответственно в скрипте компоновщика для секции кода "> rom" , для data и bss "> ram AT>rom"

Лог следующий :

Цитата
target remote localhost:3333
0x00000000 in VectorArray ()
monitor halt
monitor flash probe 0
device id = 0x20036410
flash size = 128kbytes
flash 'stm32x' found at 0x08000000
monitor stm32x mass_erase 0
stm32x mass erase complete
monitor flash write_bank 0 out/arm_project.elf 0x08000000
not enough working area available(requested 16384, free 16336)
stm32.cpu -- clearing lockup after double fault
error executing stm32x flash write algorithm
flash writing failed with error code: 0xfffffc7a
error writing to flash at address 0x08000000 at offset 0x08000000 (-902)
Command handler execution failed
in procedure 'flash' called at file "command.c", line 650
called at file "command.c", line 361
monitor reset halt
JTAG tap: stm32.cpu tap/device found: 0x3ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x3)
JTAG tap: stm32.bs tap/device found: 0x16410041 (mfg: 0x020, part: 0x6410, ver: 0x1)
target state: halted
target halted due to debug-request, current mode: Handler HardFault
xPSR: 0x00000003 pc: 0x20000004 msp: 0x20004fe0
monitor soft_reset_halt
requesting target halt and executing a soft reset
target state: halted
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0x20000108 msp: 0x20005000
thbreak main
Hardware assisted breakpoint 1 at 0xc0
continue
stm32.cpu -- clearing lockup after double fault

Program received signal SIGINT, Interrupt.
0x20000004 in ?? ()


Подскажите в каком направлении копать?

Автор: AHTOXA Aug 12 2010, 13:32

Вообще-то этот вопрос к Эклипсе практически никак не относится.
Вот мой рабочий скрипт (отладка из flash):

Код
target remote localhost:3333
load
monitor soft_reset_halt
set mem inaccessible-by-default off
compare-sections
tbreak main
continue

Автор: ШевченкоПетр Aug 13 2010, 12:37

Цитата(AHTOXA @ Aug 12 2010, 15:32) *
Вообще-то этот вопрос к Эклипсе практически никак не относится.
Вот мой рабочий скрипт (отладка из flash):
Код
target remote localhost:3333
load
monitor soft_reset_halt
set mem inaccessible-by-default off
compare-sections
tbreak main
continue


Вопрос не по оболочке Eclipse, но зато в Eclipse все эти инструменты вместе используются.


За скрипт спасибо .


Ошибки выводит те же.

Похоже, что проблемы с железкой, на кварце 8МГц высокий уровень, проскакивают короткие нулевые импульсы частотой 1 - 2 Гц, устройство собрано на макетной плате, разобраться будет непросто.

В документации на STM32 пишут , что у этих кристаллов есть внутренний RC-генератор, можно ли выбросить кварц 8МГц?

Автор: AHTOXA Aug 13 2010, 13:22

Цитата(ШевченкоПетр @ Aug 13 2010, 18:37) *
В документации на STM32 пишут , что у этих кристаллов есть внутренний RC-генератор, можно ли выбросить кварц 8МГц?

Можно, JTAG замечательно цепляется и без кварца.

Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)