• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Eclipse demo project для RTL-00

Neov

Member
Адаптировал демо проект из SDK v.3.5a для Eclipse с настроенным GNU ARM Eclipse.
Может кому-нибудь будет полезным. magres / RTL-00_Test1 — Bitbucket
Компилирует и отлаживает с J-Link OB.


Инструкция по ссылке.
Build tools How to install the Windows Build Tools?
J-Link debugging Eclipse plug-in The J-Link debugging Eclipse plug-in

Отладка с J-Link

Меню Run -> Debug Configurations -> GDB SEGGER J-Link Debugging -> New
Name: RTL00-Test1 Debug
Закладка Debugging ->
Start the J-Link GDB Server locally,
Device name: CORTEX-M3,
Endianness: Little,
Connection: USB,
Interface: SWD,
Initial speed: 2000 kHz
 
Последнее редактирование:

pvvx

Активный участник сообщества
Последнее редактирование:

pvvx

Активный участник сообщества
* Install GNU ARM Eclipse properly, as described on official page - ok
* Unpack Ameba SDK v.3.5a - вышло C:\sdk-ameba-rtl8710af-v3.5a_without_NDA_GCC_V1.0.0
* Build default demo project (make), as described on UM0096 - там ничего интересного
* Add project to Eclipse - Import->Existing Projects into Workspace-> Copy progects into workspase ... Ok
Снимок10.gif
* Set up toolchain path to your "sdk_ameba_3.5a\tools\arm-none-eabi-gcc\4.8.3-2014q1\bin"
Снимок7.gif
Снимок14.gif
* Set up RTL-SDK var (Project properties - C/C++ Build - Environment) to "sdk_ameba_3.5a" folder path
Снимок13.gif
* Build & debug
Снимок15.gif

Требуется более точная инструкция. У всех всё разное...

К примеру у меня, из-за наличия сотней разных систем и проектов, просто так не запустить make под виндой с SDK3.5a
Код:
C:\...\project\realtek_ameba1_va0_example\GCC-RELEASE>make
if [ ! -d ../../../tools/arm-none-eabi-gcc/4.8.3-2014q1 ] ; then tar -zxf ../../../tools/arm-none-eabi-gcc/4.8
.3-2014q1.tar.gz -C ../../../tools/arm-none-eabi-gcc/ ; fi
/bin/sh: /c/sdk-ameba-rtl8710af-v3.5a_without_NDA_GCC_V1.0.0/project/realtek_ameba1_va0_example/GCC-RELEASE/C:
/MinGW/msys/1.0/bin/make.EXE: No such file or directory
make.EXE": *** [ram_all] Error 127
При этом mingw32-make.exe работает успешно. Даже если заставить работать простую make.exe из mingw, то у неё вылезет ещё много бед - например напишет, что у неё "мало памяти для такого проекта" (переполнение её буферов) :)
 
Последнее редактирование:

pvvx

Активный участник сообщества
нужно собрать проект из SDK по официальной документации
Не помогает. И не каждый смертный соберет его в винде. Там ошибки в application.mk.
Не верно определяется система.
ifeq ($(findstring CYGWIN, $(OS)), CYGWIN) ...
Выходит прикол - сначала надо научиться makefile, а потом отказаться и использовать авто-билдер в Eclipse :)

После успешного make с makefile,
Итого в Eclipse:
Код:
13:03:08 **** Incremental Build of configuration Debug for project RTL00-Test1 ****
make all
Building target: RTL00-Test1.elf
Invoking: Cross ARM C Linker
.....
../arm-none-eabi/bin/ld.exe: cannot open linker script file C:/MinGW/msys/1.0/rlx8195A-symbol-v02-img2.ld: Invalid argument
collect2.exe: error: ld returned 1 exit status
make: *** [RTL00-Test1.elf] Error 1
Не прописано где лежит symbol-v02-img2.ld...
Есть -T "/rlx8195A-symbol-v02-img2.ld", но нет указания директории библиотек, где лежит ld, для линкера.
Потом это не хорошо, что в структуре исходников SDK пишутся всякие obj и *.d файлы при трансляции. У пользователей это убьет SSD, обычно установленный на C. :) Должен быть назначен TEMP или другой каталог для свалки трансляции и линковки на усмотрение пользователя.
 
Последнее редактирование:

Neov

Member
Не помогает. И не каждый смертный соберет его в винде. Там ошибки в application.mk.
Не верно определяется система.
ifeq ($(findstring CYGWIN, $(OS)), CYGWIN) ...
Выходит прикол - сначала надо научиться makefile, а потом отказаться и использовать авто-билдер в Eclipse :)
* Install GNU ARM Eclipse properly, as described on official page - ok
* Unpack Ameba SDK v.3.5a - вышло C:\sdk-ameba-rtl8710af-v3.5a_without_NDA_GCC_V1.0.0
* Build default demo project (make), as described on UM0096 - там ничего интересного
* Add project to Eclipse - Import->Existing Projects into Workspace-> Copy progects into workspase ... Ok
Посмотреть вложение 2574
* Set up toolchain path to your "sdk_ameba_3.5a\tools\arm-none-eabi-gcc\4.8.3-2014q1\bin"
Посмотреть вложение 2570
Посмотреть вложение 2571
* Set up RTL-SDK var (Project properties - C/C++ Build - Environment) to "sdk_ameba_3.5a" folder path
Посмотреть вложение 2572
* Build & debug
Посмотреть вложение 2573

Требуется более точная инструкция. У всех всё разное...

К примеру у меня, из-за наличия сотней разных систем и проектов, просто так не запустить make под виндой с SDK3.5a
Код:
C:\...\project\realtek_ameba1_va0_example\GCC-RELEASE>make
if [ ! -d ../../../tools/arm-none-eabi-gcc/4.8.3-2014q1 ] ; then tar -zxf ../../../tools/arm-none-eabi-gcc/4.8
.3-2014q1.tar.gz -C ../../../tools/arm-none-eabi-gcc/ ; fi
/bin/sh: /c/sdk-ameba-rtl8710af-v3.5a_without_NDA_GCC_V1.0.0/project/realtek_ameba1_va0_example/GCC-RELEASE/C:
/MinGW/msys/1.0/bin/make.EXE: No such file or directory
make.EXE": *** [ram_all] Error 127
При этом mingw32-make.exe работает успешно. Даже если заставить работать простую make.exe из mingw, то у неё вылезет ещё много бед - например напишет, что у неё "мало памяти для такого проекта" (переполнение её буферов) :)
Я устанавливал make из официальной документации How to install the Windows Build Tools? : все работает как положено. Путь на него натравливается там же, где и toolchain.

Cборка проекта из SDK в Windows 7 x64через cygwin идет на ура, хотя она нужна только ради скомпилированных компонентов, но если собрать проблема - распакуйте архив https://yadi.sk/d/fgwYo3kUz4BiQ в SDK
 

Neov

Member
Не прописано где лежит symbol-v02-img2.ld...
Есть -T "/rlx8195A-symbol-v02-img2.ld", но нет указания директории библиотек, где лежит ld, для линкера.
Возможно у Вас "докрученный" Eclipse. У меня в проекте прописан путь "${project_loc}/rlx8195A-symbol-v02-img2.ld" что вполне соответствует истине.

Потом это не хорошо, что в структуре исходников SDK пишутся всякие obj и *.d файлы при трансляции. У пользователей это убьет SSD, обычно установленный на C. :) Должен быть назначен TEMP или другой каталог для свалки трансляции и линковки на усмотрение пользователя.
А это уже индивидуальные предпочтения. Я простой дефолтовый Eclipse проект создал.
 

pvvx

Активный участник сообщества
Возможно у Вас "докрученный" Eclipse. У меня в проекте прописан путь "${project_loc}/rlx8195A-symbol-v02-img2.ld" что вполне соответствует истине.
В нем INCLUDE "export-rom_v02.txt". Где он его будет искать?
После правки "${project_loc}/rlx8195A-symbol-v02-img2.ld" на "${RTL_SDK}/project/realtek_ameba1_va0_example/GCC-RELEASE/rlx8195A-symbol-v02-img2.ld" и вписывания в пути библиотек "${RTL_SDK}/project/realtek_ameba1_va0_example/GCC-RELEASE/" 'проект' собирается:
Код:
13:33:35 **** Incremental Build of configuration Debug for project RTL00-Test1 ****
make all
Building file: ../src/main.c
Invoking: Cross ARM C Compiler
arm-none-eabi-gcc .... "../src/main.c"
In file included from C:\sdk-ameba-rtl8710af-v3.5a_without_NDA_GCC_V1.0.0/component/common/api/network/include/main.h:4:0,
                 from ../src/main.c:4:
C:\sdk-ameba-rtl8710af-v3.5a_without_NDA_GCC_V1.0.0/component/common/drivers/wlan/realtek/include/autoconf.h:327:0: warning: "CONFIG_RTL8195A" redefined
   #define CONFIG_RTL8195A
^
In file included from C:\sdk-ameba-rtl8710af-v3.5a_without_NDA_GCC_V1.0.0/component/soc/realtek/8195a/cmsis/device/diag.h:13:0,
                 from ../src/main.c:3:
../.\inc/platform_autoconf.h:12:0: note: this is the location of the previous definition
#define CONFIG_RTL8195A 1
^
Finished building: ../src/main.c

Building target: RTL00-Test1.elf
Invoking: Cross ARM C Linker
arm-none-eabi-gcc ..... ld.exe: warning: section `.valid' type changed to PROGBITS
Finished building target: RTL00-Test1.elf

Invoking: Cross ARM GNU Create Flash Image
arm-none-eabi-objcopy -O ihex "RTL00-Test1.elf"  "RTL00-Test1.hex"
Finished building: RTL00-Test1.hex

Invoking: Cross ARM GNU Print Size
arm-none-eabi-size --format=berkeley "RTL00-Test1.elf"
   text      data       bss       dec       hex    filename
312939    171644         0    484583     764e7    RTL00-Test1.elf
Finished building: RTL00-Test1.siz


13:33:41 Build Finished (took 5s.160ms)
Пробуем менять установки в файлах inc проекта. Никакой реакции. Опять запускать make в основном каталоге SDK ? Но он не видит каталога inc из Eslipse.
Вообще в Eclipse есть инклуд сторонней директории с исходниками и их фильтрацией, без её копирования в проект:
Снимок16.gif
Можете попробовать сделать настройки через это. Мышкой потыкаете, какие файлы надо включить в проект и будет собираться авто-майкером Eclipse.
Для передачи проекта другим в Eclipse есть export... Он включит и инклудные объекты...
Мне удобнее всё это описывать в makefile. По этому не всегда настраиваю авто-майк.
Счас уже десяток проектов для RTL00 и во всех включена одна директория SDK. При этом поправки в файлах SDK любого проекта отображаются на все проекты...
Если хотите упростить жизнь - возьмите Visual-Studio для Arduino Ameba. Там уже SDK 3.5 и она всё автоматом собирает, да подсвечивает синтаксис...
А это уже индивидуальные предпочтения каждого. Я простой дефолтовый Eclipse проект создал.
Значит что-то не описано по подготовке Eclipse для вашего проекта :)
 
Последнее редактирование:

Neov

Member
В нем INCLUDE "export-rom_v02.txt". Где он его будет искать?
Скрипт линковки я скопировал в проект и изменил строку на INCLUDE "..\export-rom_v02.txt".

Хотя действительно, в нынешнем проекте он скрипт не находил, измените путь на "${workspace_loc:/${ProjName}/rlx8195A-symbol-v02-img2.ld}"
 

Neov

Member
Вообще в Eclipse есть инклуд сторонней директории с исходниками и их фильтрацией, без её копирования в проект:

Можете попробовать сделать настройки через это. Мышкой потыкаете, какие файлы надо включить в проект и будет собираться авто-майкером Eclipse.
Для передачи проекта другим в Eclipse есть export... Он включит и инклудные объекты...
Мне удобнее всё это описывать в makefile. По этому не всегда настраиваю авто-майк.
Счас уже десяток проектов для RTL00 и во всех включена одна директория SDK. При этом поправки в файлах SDK любого проекта отображаются на все проекты...
Если хотите упростить жизнь - возьмите Visual-Studio для Arduino Ameba. Там уже SDK 3.5 и она всё автоматом собирает, да подсвечивает синтаксис...
Возможно все так. Моей целью было создать максимально простой проект в GNU ARM Eclipse для работы и отладки. Все Include и пр я не вручную прописывал :) все заимствовано из примера по официальной сборке.
 

pvvx

Активный участник сообщества
Возможно все так. Моей целью было создать максимально простой проект в GNU ARM Eclipse для работы и отладки. Все Include и пр я не вручную прописывал :) все заимствовано из примера по официальной сборке.
Тогда какая цель их включения в свой проект? Почему было не оставить в SDK.
 

pvvx

Активный участник сообщества
Вы кстати о чем? Include dirs ссылаются на SDK, скрипт линковки копируется, т.к. под нужды каждого проекта он может меняться.
У меня этого не происходит и не вижу, где это прописано. Файл build_info.h не меняется, изменения в FreeRTOSConfig.h не отрабатываются...
Прошивки или запуска кода в модуль в Eclipse тоже не видно...
Чем прошивать?
 
Последнее редактирование:

Neov

Member
У меня этого не происходит и не вижу, где это прописано. Файл build_info.h не меняется, изменения в FreeRTOSConfig.h не отрабатываются...
Прошивки или запуска кода в модуль в Eclipse тоже не видно...
Чем прошивать?
Похоже в Вашем Eclipse не отрабатываются локальные пути как у меня, я обновил проект, теперь локальный inc должен быть доступен.
Настройку отладки добавил в шапку, далее достаточно запустить Debug.
 

pvvx

Активный участник сообщества
Похоже в Вашем Eclipse не отрабатываются локальные пути как у меня, я обновил проект, теперь локальный inc должен быть доступен.
Настройку отладки добавил в шапку, далее достаточно запустить Debug.
Т.е. все файлы из с:/sdk-ameba-rtl8710af-v3.5a_without_NDA_GCC_V1.0.0 перетранслируются при изменении *.h в локальной inc?
К примеру изменение размера heap в RTL00-Test1/inc/FreeRTOSConfig.h ?
У меня перетранслирется только main.c
 

Neov

Member
Т.е. все файлы из с:/sdk-ameba-rtl8710af-v3.5a_without_NDA_GCC_V1.0.0 перетранслируются при изменении *.h в локальной inc?
К примеру изменение размера heap в RTL00-Test1/inc/FreeRTOSConfig.h ?
У меня перетранслирется только main.c
Хорошее замечание. В таком случае нужно из проекта в разделе линковки убрать FreeRTOS модули и их исходники занести в проект. Возможно так сделаю со всеми компонентами.
 

pvvx

Активный участник сообщества
Хорошее замечание. В таком случае нужно из проекта в разделе линковки убрать FreeRTOS модули и их исходники занести в проект. Возможно так сделаю со всеми компонентами.
А остальное? :(
Не нашел создание файла для записи в Flash или для отладки... Они специфически собираются, со всякими заголовками...

И дефолтный проект обычно что-то про "Hello World"
Пример main.cpp:
Код:
#include <iostream>
using namespace std;
int main() {
  cout << "Hello ARM World!" << endl;
  return 0;
}
В моей сборке к Eclipse работает.
 
Последнее редактирование:

pvvx

Активный участник сообщества
Как настраивать LwIP? У него настройки в lwipopts.h.
Тут SDK не как у ESP. В нем куча примеров и всё конфигурируется. А на первый взгляд - это большая свалка. :)
Вам придется переносить всё из SDK в свой проект...
 
Сверху Снизу