|
порт под ADuC702x? |
|
|
|
Sep 12 2010, 19:41
|
Местный
  
Группа: Участник
Сообщений: 312
Регистрация: 9-04-10
Пользователь №: 56 532

|
Для сборки использую WinARM. При сборке вылетает ошибка Код OS_Target.h OS_INTERRUPT void SystemTimer_ISR(); expected constructor, destructor, or type conversion before 'void' Код scmRTOS_defs.h
#ifndef scmRTOS_CONTEXT_SWITCH_SCHEME #error "Error: Config macro scmRTOS_CONTEXT_SWITCH_SCHEME must be defined!" #endif Но scmRTOS_CONTEXT_SWITCH_SCHEME ведь определена по дефолту 0. Как собрать Ос? Все разобрался. Я с инклудами намутил.
Сообщение отредактировал a9d - Sep 12 2010, 20:21
|
|
|
|
|
Sep 12 2010, 21:47
|
Местный
  
Группа: Участник
Сообщений: 312
Регистрация: 9-04-10
Пользователь №: 56 532

|
А каким GCC компилятором собирался порт? У меня теперь ругается на это: Код undefined reference to `_exit' test_scm2 line 0, external location: exit.c undefined reference to `_sbrk_r' test_scm2 line 0, external location: mallocr.c undefined reference to `ContextRestore' main.cpp /test_scm2 line 0
Сообщение отредактировал a9d - Sep 12 2010, 21:49
|
|
|
|
|
Sep 13 2010, 05:06
|
Местный
  
Группа: Участник
Сообщений: 312
Регистрация: 9-04-10
Пользователь №: 56 532

|
Это ругается на пустом проекте. (WinARM-20060606) Стандартные примеры не собираются. Там вылетает ошибка Код Compiling: ../scmRTOS/Common/OS_Kernel.cpp Compiling: ../scmRTOS/Common/OS_Services.cpp Compiling: ../scmRTOS/Common/usrlib.cpp Compiling: ../scmRTOS/ARM7/OS_Target_cpp.cpp Compiling: ./Src/main.cpp Assembling: ../scmRTOS/ARM7/OS_Target_asm.s Assembling: ./Src/crt.s Linking: release/1-EventFlag.elf release/obj/crt.o: In function `ctor_end': ./Src/crt.s:157: undefined reference to `_data_image' c:/winarm/bin/../lib/gcc/arm-elf/4.1.1/../../../../arm-elf/bin/ld.exe: BFD 06060 6 20060606 internal error, aborting at c:/winarms/binutils-060606/bfd/elflink.c line 6509 in elf_link_output_extsym
c:/winarm/bin/../lib/gcc/arm-elf/4.1.1/../../../../arm-elf/bin/ld.exe: Please re port this bug.
collect2: ld returned 1 exit status make: *** [release/1-EventFlag.elf] Error 1
|
|
|
|
|
Sep 13 2010, 05:24
|

фанат дивана
     
Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684

|
Цитата(a9d @ Sep 13 2010, 11:06)  (WinARM-20060606) Староват наверное, компилятор-то. Возьмите поновее. Или вот этот: Sourcery G++ Lite.
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Sep 13 2010, 09:45
|
Местный
  
Группа: Участник
Сообщений: 312
Регистрация: 9-04-10
Пользователь №: 56 532

|
Поставил Sourcery G++ Lite. Результат стал еще хуже. Теперь в стандартных примерах ничего не собирается. Код Compiling: ../scmRTOS/Common/OS_Kernel.cpp process_begin: CreateProcess(NULL, arm-elf-gcc -c -mcpu=arm7tdmi -g -gdwarf-2 -M D -MP -MF release/dep/OS_Kernel.o.d -I../scmRTOS/Common -I../scmRTOS/ARM7 -I./Sr c -Os -DADUC7020=1 -fomit-frame-pointer -fno-exceptions -fno-rtti -Wall -Wextra -Wundef -Wcast-align -Wa,-ahlmsdc=release/lst/OS_Kernel.lst -fverbose-asm -ffunc tion-sections -fdata-sections -Winline -funsigned-bitfields -fshort-enums ../scm RTOS/Common/OS_Kernel.cpp -o release/obj/OS_Kernel.o, ...) failed. make (e=2): Не удается найти указанный файл. make: *** [release/obj/OS_Kernel.o] Error 2 yagarto-bu-2.20.1_gcc-4.5.1-c-c++_nl-1.18.0_gdb-7.1_eabi_20100813 выдает туже самую ошибку, что и Sourcery G++ Lite.
Сообщение отредактировал a9d - Sep 13 2010, 10:00
|
|
|
|
|
Sep 13 2010, 10:19
|

фанат дивана
     
Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684

|
Дык! Надо же поменять в makefile Код TARGET = arm-elf- на Код TARGET = arm-none-eabi- ! Компилер-то иначе называется теперь
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Sep 13 2010, 18:42
|
Местный
  
Группа: Участник
Сообщений: 312
Регистрация: 9-04-10
Пользователь №: 56 532

|
Прошивка ,через бутлоадер, отказывается заливатся. Контроллер ADuC7024. Вылетает ошибка: Wrong memory address 0x10000-0x10010 Erase aborted. В makefile выбрал LD_SCRIPT= ./Config/ADuC70xx_FLASH.ld и все завелось. Но после вызова OS::Run(); управление не передается первому процессу. Без JTAG туговато. Но с помощью светодиодов определил место где зависает. Файл OS_Target.h Код INLINE inline void OS_Start(TStackItem* sp) {
ContextRestore(sp); } Не происходит возврат из ContextRestore(sp). Но учитывая атрибут __noreturn__ я могу ошибаться. Скорей всего управление передается какой нибудь функции ОС.
Сообщение отредактировал a9d - Sep 13 2010, 22:50
|
|
|
|
|
Sep 14 2010, 04:58
|

фанат дивана
     
Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684

|
Цитата(a9d @ Sep 14 2010, 00:42)  В makefile выбрал LD_SCRIPT= ./Config/ADuC70xx_FLASH.ld А вы внесли в ADuC70xx_FLASH.ld изменения, про которые вам сказал Сергей Борщ? Вот сюда: Код __ctors_start = .; *(.ctors) __ctors_end = .; Добавьте после строки *(.ctors)строку Код KEEP(SORT(*)(.init_array))
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Sep 14 2010, 06:46
|
Местный
  
Группа: Участник
Сообщений: 312
Регистрация: 9-04-10
Пользователь №: 56 532

|
Не знаю, что я сделал но: Код __ctors_start = .; *(.ctors) *(.init_array) KEEP(SORT(*)(.init_array)) __ctors_end = .; __dtors_start = .; *(.dtors) __dtors_end = .; KEEP(SORT(*)(.ctors)) KEEP(SORT(*)(.init_array)) KEEP(SORT(*)(.dtors)) и все заработало. Снова поигрался с размером прошивки. На некоторых размерах все та же ошибка вылетает. Со скриптом все таки есть проблема.
Сообщение отредактировал a9d - Sep 14 2010, 06:52
|
|
|
|
|
Sep 14 2010, 17:09
|

фанат дивана
     
Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684

|
Цитата(a9d @ Sep 14 2010, 21:48)  три процесса мигают светодиодами. Поздравляю!  2 Сергей Борщ. Почему в скрипте сделано так: Код __ctors_start = .; *(.ctors) __ctors_end = .; KEEP(SORT(*)(.ctors)) ? Я обычно пишу: Код __ctors_start = .; KEEP(SORT(*)(.ctors)) __ctors_end = .; , и всё работает нормально. В чём разница между этими вариантами?
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|