• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе 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 в свой проект...
 
Сверху Снизу