Перейти к содержанию
    

GenaSPB

Участник
  • Постов

    3 012
  • Зарегистрирован

  • Посещение

  • Победитель дней

    2

Весь контент GenaSPB


  1. До модификаций с комплектом Вашей сборки было около 50 килобайт, с yagarto 31 килобайт. Попробую добавить затычки на упомянутые функции - соберу и проверю, вечером. text 38172 - похожее значение было и с yagarto. Прошить прямо ваш elf не могу, так как плата существует в нескольких слегка отличающихся конфигурайиях.
  2. Если библиотека собрана с поддержкой исключений - и вызывается такая функция (в моём случае, например, div или ldiv) - как с этим быть? Символы я определил (ондин из коллег здесь в теме выложил исправленный) в линк-скрипте. Можете выкинуть - тогда вообще не соберётся. Проекьт здесь в теме выложен - можете его "препарировать"? Я думаю, не только мне интересно. Или проблема только у меня?
  3. Нет, обычный C код. Проект выкладывал в этой теме. А проблема в лишних 20 килобайтах которые явно не могут работать - всё на голом железе без имитации или заглушек на io. Вы собирались библиотеку перекомпилить для того, чтобы unwinding не использовался. В этой версии ещё нет? Проект выложен здесь: http://electronix.ru/forum/index.php?showt...st&p=712754
  4. Как и в предидущем случае, затаскивается весь stdio. Даже не сравнить. .text 0x001066f0 0x1b0 c:/kgp_arm_eabi_20100226/bin/../lib/gcc/arm-kgp-eabi/4.5.0\libgcc.a(libunwind.o) 0x001066f0 __restore_core_regs 0x001066f0 restore_core_regs 0x0010670c __gnu_Unwind_Restore_VFP 0x00106714 __gnu_Unwind_Save_VFP 0x0010671c __gnu_Unwind_Restore_VFP_D 0x00106724 __gnu_Unwind_Save_VFP_D 0x0010672c __gnu_Unwind_Restore_VFP_D_16_to_31 0x00106734 __gnu_Unwind_Save_VFP_D_16_to_31 0x0010673c __gnu_Unwind_Restore_WMMXD 0x00106780 __gnu_Unwind_Save_WMMXD 0x001067c4 __gnu_Unwind_Restore_WMMXC 0x001067d8 __gnu_Unwind_Save_WMMXC После этого уже всё остальное.
  5. Исходя из того, что reset из j-tag адаптера выходит (тестовая плата перезапускается) и остальные команды выполняются - о чём сообщает всякая диагностика подключёного к j-tag процессора. То есть, нижний уровень работает. Да, openocd + wiggler тоже не грузят программу. Только hjtag + wiggler. Вывод - я как-то не так обращаюсь с openocd. Но что ещё, кроме конфигурационных файлов, может влиять?
  6. Сообщение об ошибке не изменилось... Как и в ручном режиме (через telnet) - после выдачи halt получаю сообщение о том, что с cpsr не то значение и так далее... C:\user\dds2\TC1>openocd -d0 -f interface/rlink.cfg -f target/at91sam7sx.cfg -c init -c targets -c "halt" -c "flash write_image erase " -c "verify_image .\at91sam7s\tc1.elf" -c "reset run" -c shutdown Open On-Chip Debugger 0.3.1 (2009-11-13-16:13) $URL$ For bug reports, read http://openocd.berlios.de/doc/doxygen/bugs.html debug_level: 0 30 kHz srst_only srst_pulls_trst srst_gates_jtag srst_open_drain Error: invalid mode value encountered 1 Error: cpsr contains invalid mode value - communication failure TargetName Type Endian TapName State -- ------------------ ---------- ------ ------------------ ------------ 0* at91sam7s.cpu arm7tdmi little at91sam7s.cpu unknown 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 Runtime error, file "command.c", line 473: Да, эта же плата через тот же 20-пин разъём шъётся wiggler-ом через h-jtag без проблем.
  7. Кажется, скоро появится возможность исользовать Altera USB Blaster. Сконфигурировать UrJtag для записи в мне так и не удалось... Но новый openocd 0.4.0 теперь имеет поддержку адаптера Altera USB Blaster. Пока тренируюсь на плате с at91sam7s32 и Raisonance USB JTAG. Конфигурирование проходит, но для любой операции с flash требуется процессор приостановить... а в ответ получаю: Может кто-нибудь поделиться скриптом для openocd, который бы просто записывал во внутренний flash процессора файл? Отладка через jtag не интересует.
  8. Я включал между выходом max3232 и входом RXD ATMega128L резистор на 1 килоом - и никаких проблем.
  9. А чего тут криминального? Чтений из volatile ровно столько, сколько надо. А от чтения по указателю на простой (не volatile) тип - ничего, кроме знаачения не гарантируется. А откуда оно его взяло - целиком на усмотрение оптимизатора. Вообще, всё что не volatile, может быть "закешированно" при входе в функцию и записано перед выходом из неё или вызовом чего-либо.
  10. Обновлся h-jtag, работает под Vista, Windows-7. Стал версия 1.0 release. LPT порт НЕ ОТРЕЗЛИ (автор в prerelease собирался отказаться от поддержки программатора на LPT).
  11. библотека-то одна на всё. Просто выдачу сообщения в обработчике надо как-то перехватить. Или делать разные библиотеки.
  12. если в discard ушло что-то нужное, на что есть ссылки в остальном коде, получаем сообщение об ошибке. Так, весь код попавший в discard, все ссылки имел только внутри себя (примерно так, на абсолютную точность в логике и совершенное знание как транслируется сейчас код gcc для arm не претеную). Есть ещё экзотика типа обращение между адресами определёнными в скрипте линкера или стартапе, но на такое багогенерирующее усовершенствование ответственные програмисты идут неохотно. В осовном анализ .map файла помогал понять, что можно удалять (откуда взялась секция). ps: sys.c уменьшил или нет код, не присмотрелся 46 килобайт так и осталось (вместо 30 с копейками). free/malloc, весь stdio и io присутствует, signal, memcpy, syscalls. Я не вызываю ничего из этого.
  13. Так заработало? Собранное kgp при объёме 46 килобайт работает. С этимже скриптом yagarto даёт имедж размером 36 килобайт. Вернуть на место discard - опят 30.5 килобайт. sys.zip - это заплата, спсибо, но я не стал бы её использовать. Я не хотел бы терять контроля над кодом, дабы избежать непредсказуемого поведения в embedded приложении.
  14. всё начинается с откуда-то взявшегося unwind-arm.o. В варианте kgp. В моём я перевёл в discard eh_frame*, убралось десять килобайт.
  15. Похоже, я нарвался на какой-то старый баг: http://www.mail-archive.com/[email protected]/msg01065.html Только сейчас, он конечно более детальную диагностику вызывает - но от этого не легче - имедж не собирается. Проект в аттачменте, в каталоге at91sam7s находится Makefile. В нём прописан путь к месту, где находится "свежак KGP". Кто-нибудь может понять, почему этот комплект не собирает?
  16. Насчёт ягарто... обновлялся в декабре 2009-го года. Ваш скрипт попробую применить - на работающем проекте (arm7tdmi, AT91SAM7Sxxx).
  17. А эту куда? .ARM.extab.text.unwind_phase2_forced Описывал всё подряд... получил Есть у компилятора ключи чтобы не клал все функции в отдельные сеции? Или в каком порядке и где должны быть .ARM.extab.text.* и .ARM.exidx.text.* И ещё - надо ли ставить точку перед звёздочкой (в смысле - включать ли точку в шаблон) всяких имён секций .bss.*, .data.* и .text.* - что ещё можно встретить? ps: до этого исользовал сборку yagarto - решл попробовать... зы2: в конце теперь так АНТОХА, можете свой скрипт работающий с KGP выложить?
  18. Просмотр всей имеющейся информации иногда даёт пользу не только в идеях, но например в использовании устоявшейся в этой области терминологии. Полезно посмотреть на разные архитектуры - понятнее станет, зачем надо отвязывать архитектурно-зависимые части от независимых. Вовсе не для того, чтобы облегчить перенос на другие архитектуры - для того, чтобы меньше ошибок было. Да и сам по себе перенос как средство выяявления ошибок тоже применятся может.
  19. За свовременно выложенную dll спасибо. А что делать вот с этим: В смысле, какой паттерн описать чтобы всё подобное попало куда надо? Мой скрипт выглядит так: SEARCH_DIR(.) /* * Define stack size here */ FIQ_STACK_SIZE = 0x0100; IRQ_STACK_SIZE = 0x0100; ABT_STACK_SIZE = 0x0100; UND_STACK_SIZE = 0x0100; SVC_STACK_SIZE = 0x0400; MEMORY { rom : org = 0x00100000, len = 64k ram : org = 0x00200000, len = 16k } /* * Do not change the next code */ SECTIONS { .text : { *(.vectors); . = ALIGN(4); *(.init); . = ALIGN(4); *(.text.*); . = ALIGN(4); *(.rodata); . = ALIGN(4); *(.rodata*); . = ALIGN(4); *(.glue_7t); . = ALIGN(4); *(.glue_7); /* . = ALIGN(4); KEEP (*(.eh_frame)) */ . = ALIGN(4); etext = .; } > rom .data : AT (ADDR (.text) + SIZEOF (.text)) { PROVIDE (__data_start = .); *(.ramfunc) . = ALIGN(4); *(.data) . = ALIGN(4); edata = .; _edata = .; PROVIDE (__data_end = .); } > ram .bss : { PROVIDE (__bss_start = .); *(.bss) *(COMMON) . = ALIGN(4); PROVIDE (__bss_end = .); . = ALIGN(256); PROVIDE (__stack_start = .); PROVIDE (__stack_fiq_start = .); . += FIQ_STACK_SIZE; . = ALIGN(4); PROVIDE (__stack_fiq_end = .); PROVIDE (__stack_irq_start = .); . += IRQ_STACK_SIZE; . = ALIGN(4); PROVIDE (__stack_irq_end = .); PROVIDE (__stack_abt_start = .); . += ABT_STACK_SIZE; . = ALIGN(4); PROVIDE (__stack_abt_end = .); PROVIDE (__stack_und_start = .); . += UND_STACK_SIZE; . = ALIGN(4); PROVIDE (__stack_und_end = .); PROVIDE (__stack_svc_start = .); . += SVC_STACK_SIZE; . = ALIGN(4); PROVIDE (__stack_svc_end = .); PROVIDE (__stack_end = .); PROVIDE (__heap_start = .); } > ram /DISCARD/ : { *(.eh_frame_hdr) *(.eh_frame) } }
  20. А чего с ним разбираться... ставтся и работает. Вот распечатка того, что в SET выдаёт: ALLUSERSPROFILE=C:\Documents and Settings\All Users APPDATA=C:\Documents and Settings\Gena\Application Data ARMBIN_AXD=C:\Program Files\ARM\RDI\AXD\1.3.1\98\win_32-pentium\axd.exe ARMROOT=C:\Program Files\ARM CARBON_MEM_DISABLE=1 CDS_INST_DIR=c:\Padspwr CDS_LIC_FILE=c:\Padspwr\SPECCTRA\bin\Specctra.dat CommonProgramFiles=C:\Program Files\Common Files COMPUTERNAME=GENA2 ComSpec=C:\WINDOWS\system32\cmd.exe FARLANG=English FP_NO_HOST_CHECK=NO HOMEDRIVE=C: HOMEPATH=\Documents and Settings\Gena include=C:\Program Files\Microsoft Visual Studio\VC98\atl\include;C:\Program Files\Microsoft Visual Studio\VC98\mfc\include;C:\Program Files\Microsoft Visual Studio\VC98\include lib=C:\Program Files\Microsoft Visual Studio\VC98\mfc\lib;C:\Program Files\Microsoft Visual Studio\VC98\lib LOGONSERVER=\\GENA2 MSDevDir=C:\Program Files\Microsoft Visual Studio\Common\MSDev98 NUMBER_OF_PROCESSORS=1 OS=Windows_NT Path=C:\Program Files\Far;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\yagarto-tools-20070303\bin;C:\WINDOWS\system32\WindowsPowerShell\v1.0;C:\Program Files\yagarto\bin;C:\Program Files\TortoiseSVN\bin;c:\altera\91\quartus\bin;C:\Program Files\OpenOCD\0.3.1\bin;C:\Program Files\Raisonance\Ride\bin;C:\Program Files\Microsoft Visual Studio\Common\Tools\WinNT;C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin;C:\Program Files\Microsoft Visual Studio\Common\Tools;C:\Program Files\Microsoft Visual Studio\VC98\bin;C:\Program Files\OpenOCD\0.3.1\bin PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.PSC1 PROCESSOR_ARCHITECTURE=x86 PROCESSOR_IDENTIFIER=x86 Family 15 Model 2 Stepping 4, GenuineIntel PROCESSOR_LEVEL=15 PROCESSOR_REVISION=0204 ProgramFiles=C:\Program Files PROMPT=$P$G QUARTUS_ROOTDIR=c:\altera\91\quartus SESSIONNAME=Console SystemDrive=C: SystemRoot=C:\WINDOWS TEMP=C:\DOCUME~1\Gena\LOCALS~1\Temp TMP=C:\DOCUME~1\Gena\LOCALS~1\Temp USERDOMAIN=GENA2 USERNAME=Gena USERPROFILE=C:\Documents and Settings\Gena windir=C:\WINDOWS
  21. Я тоже использую yagarto. Ваш проект нормально компилируется - но у меня других компиляторов нет на машине. В смысле, WinAvr не в path. начало поскипано arm-elf-gcc -g -Os -nostartfiles -Wl,--gc-sections -T"../at91lib/boards/at91sam7x-ek/at91sam7x256/sram .lds" -o bin/getting-started-project-at91sam7x-ek-at91sam7x256-sram.elf obj/sram_board_cstartup.o obj/ sram_cp15_asm.o obj/sram_main.o obj/sram_led.o obj/sram_stdio.o obj/sram_dbgu.o obj/sram_pio.o obj/sra m_aic.o obj/sram_pio_it.o obj/sram_pit.o obj/sram_tc.o obj/sram_pmc.o obj/sram_cp15.o obj/sram_board_m emories.o obj/sram_board_lowlevel.o arm-elf-objcopy -O binary bin/getting-started-project-at91sam7x-ek-at91sam7x256-sram.elf bin/getting-s tarted-project-at91sam7x-ek-at91sam7x256-sram.bin arm-elf-size obj/sram_board_cstartup.o obj/sram_cp15_asm.o obj/sram_main.o obj/sram_led.o obj/sram_std io.o obj/sram_dbgu.o obj/sram_pio.o obj/sram_aic.o obj/sram_pio_it.o obj/sram_pit.o obj/sram_tc.o obj/ sram_pmc.o obj/sram_cp15.o obj/sram_board_memories.o obj/sram_board_lowlevel.o bin/getting-started-pro ject-at91sam7x-ek-at91sam7x256-sram.elf text data bss dec hex filename 272 0 0 272 110 obj/sram_board_cstartup.o 0 0 0 0 0 obj/sram_cp15_asm.o 1831 4 12 1847 737 obj/sram_main.o 524 0 0 524 20c obj/sram_led.o 2044 1064 0 3108 c24 obj/sram_stdio.o 600 0 0 600 258 obj/sram_dbgu.o 540 0 0 540 21c obj/sram_pio.o 176 0 0 176 b0 obj/sram_aic.o 752 0 60 812 32c obj/sram_pio_it.o 376 0 0 376 178 obj/sram_pit.o 404 0 0 404 194 obj/sram_tc.o 953 0 0 953 3b9 obj/sram_pmc.o 0 0 0 0 0 obj/sram_cp15.o 148 0 0 148 94 obj/sram_board_memories.o 440 0 0 440 1b8 obj/sram_board_lowlevel.o 7236 0 72 7308 1c8c bin/getting-started-project-at91sam7x-ek-at91sam7x256-sram.elf C:\...roject-at91sam7x-ek\getting-started-project>arm-elf-gcc -v Using built-in specs. Target: arm-elf Configured with: ../gcc-4.4.2/configure --target=arm-elf --prefix=/home/yagarto/install --disable-nls --disable-shared --disable-threads --with-gcc --with-gnu-ld --with-gnu-as --with-dwarf2 --enable-langu ages=c,c++ --enable-interwork --enable-multilib --with-newlib --with-headers=../newlib-1.17.0/newlib/l ibc/include --disable-libssp --disable-libstdcxx-pch --disable-libmudflap --disable-libgomp -v Thread model: single gcc version 4.4.2 (GCC) C:\...roject-at91sam7x-ek\getting-started-project> Windows XP SP3
  22. Весь проект можно сюда? Или, хотя бы Makefile, поправленный Вами.
  23. Появилась определённость с требуемыми wait states в зависимости от скорости работы, обновили процедуру восстановления загрузчика. Короче, в revision histiry всё написано. http://www.atmel.com/dyn/resources/prod_do...nts/doc6175.pdf Глянул выборочно - ещё обновлены AT91SAM7SE.
  24. С ходу в программе выдачи байта видится три проблемы: Цикл выполняется семь раз, а не восемь, как, вероятно, ожидал автор Сдвиг выдаваемого значения идёт не в ту сторону - заполняя нулями все выдающиеся, кроме первого по порядку, бита. И, главное - данные надо выставлять ДО формирования строба. Для подобных вещей лично мне кажется более удобным использовать 74HC595 - эти регистры позволяют производить запись значения "невидимо" - т.е. вдивгается длинное слово (в том числе и в несколько последовательно соединённых микросхем), а по окончании этой операции - новое значение появяется одновременно на всех выходах. Интерфейс совпадает с SPI.
×
×
  • Создать...