• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Eclipse demo project для RTL-00

pvvx

Активный участник сообщества
Адаптировал демо проект из SDK v.3.5a для Eclipse с настроенным GNU ARM Eclipse.
Вы так пока не разобрались, что это именно Demo, а не SDK? Отличие в том, что там в проект включена масса лишних файлов с примерами. Тот-же "AT" - это всего пример. В данной сборке и не полная версия для создания ядра к Arduino (зачем-то часть установок в *.h порезали и убрали куски из lib_*.a файлов).
 

Neov

Member
Вы так пока не разобрались, что это именно Demo, а не SDK? Отличие в том, что там в проект включена масса лишних файлов с примерами. Тот-же "AT" - это всего пример. В данной сборке и не полная версия для создания ядра к Arduino (зачем-то часть установок в *.h порезали и убрали куски из lib_*.a файлов).
Предлагаемый Eclipse проект почти полностью подражает сборке примеров из стандартного SDK. Никакой "отсебятины". Для быстрого и удобного ознакомления, сборки и отладки "по кнопке".
 

pvvx

Активный участник сообщества
Предлагаемый Eclipse проект почти полностью подражает сборке примеров из стандартного SDK. Никакой "отсебятины". Для быстрого и удобного ознакомления, сборки и отладки "по кнопке".
Теряется смысл подключения Eclipse. Для сборки стандартного проекта достаточно скачать SDK и набрать make в командной строке :) И там даже есть прошивка в модуль, но использующая программатор от платы Ameba.
Отлаживать готовый проект "AT" ? :)
Это запросто делается и без Eclipse : Сравнение RTL8710 и ESP8266
 
Последнее редактирование:

Neov

Member
Теряется смысл подключения Eclipse. Для сборки стандартного проекта достаточно скачать SDK и набрать make в командной строке :)
Это запросто делается и без Eclipse
Можно много чего делать без Eclipse, и если Вам это делать нравится - я не возражаю :)
Лично мне, я думаю и многим другим, будет приятней знакомиться с кодом, его структурой, а также программировать и отлаживать в Eclipse. При этом сохранив компоненты и примеры из официального SDK.
 

pvvx

Активный участник сообщества
Можно много чего делать без Eclipse, и если Вам это делать нравится - я не возражаю :)
Лично мне, я думаю и многим другим, будет приятней знакомиться с кодом, его структурой, а также программировать и отлаживать в Eclipse. При этом сохранив компоненты и примеры из официального SDK.
Это давно сделано и выложено с другим примером и SDK полностью настраивается и всё прошивается через J-Link/STLink...

Ещё не адаптировал только загрузку через J-Link/STLink для RTL8711AM данного SDK в RAM. Там существует беда – контроллер SDRAM включается и настраивается в коде первого загрузчика.
Вы уже починили это?
Прошивку в Flash для RTL8711AM в Arduino через J-Link/STLink тоже уже сделал, но пока не выкладывал новую версию.
 
Последнее редактирование:

pvvx

Активный участник сообщества
Бога ради :)
у вас все сшивается собственными Makefile
у меня все средствами самого Eclipse :)
Не работает ваша последняя версия, требует отдельный комп с вашими установками:
Код:
10:02:04 **** Incremental Build of configuration Debug for project RTL00-Test1 ****
make all
Building file: ../rtl_sdk/component/common/utilities/tcptest.c
Invoking: Cross ARM C Compiler
arm-none-eabi-gcc .....вырезал..... "../rtl_sdk/component/common/utilities/tcptest.c"
In file included from ../rtl_sdk/component/common/utilities/tcptest.c:5:0:
E:\RTL87xx\tst\RTL00-Test1\rtl_sdk\component-inc\common\network\lwip\lwip_v1.4.1\src\include/lwip/sockets.h:313:8: error: redefinition of 'struct timeval'
struct timeval {
        ^
In file included from d:\mcu\gnu_tools_arm_embedded\5.4_2016q2\arm-none-eabi\include\sys\select.h:26:0,
                 from d:\mcu\gnu_tools_arm_embedded\5.4_2016q2\arm-none-eabi\include\sys\types.h:68,
                 from d:\mcu\gnu_tools_arm_embedded\5.4_2016q2\arm-none-eabi\include\stdio.h:48,
                 from E:\RTL87xx\tst\RTL00-Test1\rtl_sdk\component-inc\common\api/platform/platform_stdlib.h:27,
                 from E:\RTL87xx\tst\RTL00-Test1\rtl_sdk\component-inc\common\api\network\include/lwipopts.h:27,
                 from E:\RTL87xx\tst\RTL00-Test1\rtl_sdk\component-inc\common\network\lwip\lwip_v1.4.1\src\include/lwip/opt.h:45,
                 from E:\RTL87xx\tst\RTL00-Test1\rtl_sdk\component-inc\common\network\lwip\lwip_v1.4.1\src\include/lwip/sockets.h:37,
                 from ../rtl_sdk/component/common/utilities/tcptest.c:5:
d:\mcu\gnu_tools_arm_embedded\5.4_2016q2\arm-none-eabi\include\sys\_timeval.h:52:8: note: originally defined here
struct timeval {
        ^
make: *** [rtl_sdk/component/common/utilities/tcptest.o] Error 1

10:02:10 Build Finished (took 6s.407ms)
Причина - на компе установлен новый GCC, старый как и положено лежит в папочке sdk. Все остальные настройки по вашим описаниям. Что-то опять пропущено и не указано... :)
И самое главное - как прошить то пример в модуль?
 
Последнее редактирование:

sharikov

Active member
у вас все сшивается собственными Makefile
у меня все средствами самого Eclipse :)
Использовать встроенные средства Eclipse для сборки в случае кросс-компиляции - порочный путь. Раньше я так делал и отказался. Постоянные проблемы с конфигурированием плагина.
Чтобы кросс-проекты собиралось без проблем нужно использовать только external builder и makefile написанный ручками! Эклипс прекрасно умеет работать с makefile проектами.
Чайникам оставьте ардуину.
 

Neov

Member
Причина - на компе установлен новый GCC, старый как и положено лежит в папочке sdk. Все остальные настройки по вашим описаниям. Что-то опять пропущено и не указано... :)
В readme указано: Set up toolchain path to your "sdk_ameba_3.5a\tools\arm-none-eabi-gcc\4.8.3-2014q1\bin"
И самое главное - как прошить то пример в модуль?
Сейчас он только собирает ELF и загружает его в RAM. В большинстве для запуска и отладки - достаточно. Добавить сборку бинарника - в планах.
Использовать встроенные средства Eclipse для сборки в случае кросс-компиляции - порочный путь. Раньше я так делал и отказался. Постоянные проблемы с конфигурированием плагина.
Особых сложностей и проблем конкретно для этого модуля - не встречал. С другими модулями возможно сложнее.
 

sharikov

Active member
Особых сложностей и проблем конкретно для этого модуля - не встречал. С другими модулями возможно сложнее.
Сложности не с модулем а с плагином. Разработчики его регулярно ломают и не чинят полгода, такая же ситуация при обновлении эклипса: обновили -> плагин перестал работать, фиксят через X месяцев а работать надо сейчас.
 

pvvx

Активный участник сообщества
В readme указано: Set up toolchain path to your "sdk_ameba_3.5a\tools\arm-none-eabi-gcc\4.8.3-2014q1\bin"
Предлагаете перед каждым проектом менять комп? :)
Это не поможет, т.к. возникнут другие проблемы. У вас прописано все кое как, то "/", то "\" и либ не находится.
После длительных манипуляций над вашей конфигурацией что-то удается собрать, но это демка без итого. Там даже нет правильного выходного бинарника... :)
Лично мне, я думаю и многим другим, будет приятней знакомиться с кодом, его структурой, а также программировать и отлаживать в Eclipse. При этом сохранив компоненты и примеры из официального SDK.
Вот и я про то-же :) Меняете в paths.mk папку на другой SDK
SDK_PATH = ../sdk_ameba_v3.5a/
и транслируете. При этом новый проект не включает файлов из SDK вообще, а в окошках имеете все примеры :p
Если вам приспичило включить в проект папку из SDK, то делается это по другому, чем сделали вы:
Снимок15.gif Снимок12.gif Снимок13.gif
Есть и другие пути...
Через пол-года освоите, судя по темпам :)

Да, забыл... Для данного SDK, для его либ, требуется другой главный скрипт для линковщика с описанием начала и конца групп. Иначе у вас ваши obj заменяются obj из либ. И важна последовательность вписывания библиотек и obj. (в либах дубли и доп.атрибуты у функций, к примеру _WEAK)... Потом слепите раздельные либы, т.к., к примеру для LwIP и SSL не всегда требуется перекомпиляция при замене platform_autoconf.h или platform_opts.h...
И желательно поставить новый gcc - вылезут сотни варнингов, которые можно поправить в SDK :)
Сборщики бинарников и их исходники находятся тут: Arduino/postbuild_img2_arduino_windows.cpp at master · Ameba8195/Arduino · GitHub
И либы там более новые и полноценные... а не обгрызанный этими PADI IoT Stamp Resources – PINE64 SDK.
 
Последнее редактирование:

Neov

Member
Предлагаете перед каждым проектом менять комп? :)
Как Вы так все усложняете?
Открываете свойства проекта C/C++ Build -> Tools Paths -> Toolchain folder устанавливаете в C:\...ваш_путь...\sdk_ameba_3.5a\tools\arm-none-eabi-gcc\4.8.3-2014q1\bin. Можете поменять комп, но не вижу необходимостию
Это не поможет, т.к. возникнут другие проблемы. У вас прописано все кое как, то "/", то "\" и либ не находится.
Есть такой грешок. Но поскольку у меня все прекрасно собирается не стал менять. Был бы рад подробностям: какая либа не нашлась из-за слешей?
Если вам приспичило включить в проект папку из SDK, то делается это по другому, чем сделали вы:

Есть и другие пути...
Через пол-года освоите, судя по темпам :)
Спасибо за справку, хоть я и знал про это :) В этом проекте я решил включить все исходники.
Для данного SDK, для его либ, требуется другой главный скрипт для линковщика с описанием начала и конца групп.
Скрипт линковщика взят из SDK, в нем доп. символы прописаны.
И важна последовательность вписывания библиотек и obj. (в либах дубли и доп.атрибуты у функций)...
Вы имеете в виду, что подача объектных модулей при линковке должна строго придерживаться определенному порядку?
 

pvvx

Активный участник сообщества
Как Вы так все усложняете?
Открываете свойства проекта C/C++ Build -> Tools Paths -> Toolchain folder устанавливаете в C:\...ваш_путь...\sdk_ameba_3.5a\tools\arm-none-eabi-gcc\4.8.3-2014q1\bin. Можете поменять комп, но не вижу необходимостию
Значит данный пример только для вашего компа.
Он не меняется. Там общая галка на всё - заменить всё или добавить :p
Есть такой грешок. Но поскольку у меня все прекрасно собирается не стал менять. Был бы рад подробностям: какая либа не нашлась из-за слешей?
Все :)
Спасибо за справку, хоть я и знал про это :) В этом проекте я решил включить все исходники.
А пишите о сохранении исходных структур директорий :)
Скрипт линковщика взят из SDK, в нем доп. символы прописаны.
У вас один пример, который использует всего до 30% либ. Потыркаетесь, попишите и увидите :) Тем более скрипт не от reatek, а от PADI. :) Они там чего-то напатчили в SDK, чтобы впихнуть в RTL00 модуль - вы и пользуетесь. У Ameba части отличаются и уже дписаны и поправлены по мелочи... SDK 3.5 поулчилась после патчей описанных тут: Методы увеличения памяти для собственных приложений в sdk-ameba1-v3.4b3_without_NDA.
Вы имеете в виду, что подача объектных модулей при линковке должна строго придерживаться определенному порядку?
Да. Попробуйте поменять. Не даны -Wl,--start-group ... -Wl,--end-group
 
Последнее редактирование:

Neov

Member
Он не меняется. Там общая галка на всё - заменить всё или добавить :p
Не понимаю о чем речь. Просьба прислать скриншот в личку.
Спасибо за информацию
А пишите о сохранении исходных структур директорий :)
Начиная с крайней версии - уже не пишу :)
 

pvvx

Активный участник сообщества
Не понимаю о чем речь.
Снимок16.gif
Галки работают на всю группу и при переносе проекта бяда.
Начиная с крайней версии - уже не пишу :)
Ещё в скрипте линкера *.ld присутствуют KEEP(*(секции)), говорящие включать всегда коды этих секций. А если вы не используете в проекте функции из них, то они будут занимать место в RAM и потянут за собой другие коды. Плюс в либах очень много лишнего - десятки example, части из которых линкуются и занимают память. Чтобы это исключить для своего проекта приходится всё переписывать.
Правильнее было бы описать обязательные точки вхождения:
EXTERN(RAM_IMG2_VALID_PATTEN)
EXTERN(InfraStart)
EXTERN(gImage2EntryFun0)
чтобы линкер сам собрал связи, а не помещал в проект лишний хлам.
От последовательности предоставления линкеру библиотек и obj зависит дерево включаемых объектов... Кароче обращайтесь к документации на линкер gcc...
До этого я говорил об этом скрипте:
Снимок17.gif
Вроде там есть зависимость и в какой последовательности стоит описание инклуда директорий либ. По этому у вас и не находит инклуды для *.ld и вы их тащите в основную директорию проекта...

Т.е. к данному SDK другой подход - его необходимо модифицировать под свой проект и совершенству никогда не бывает предела...
Самый простой способ, чтобы не вписывать в проект ещё и прихоти Eclipse у меня и получается использовать makefile... Просто так быстрее и нет зависимости от оболочки и её версий.
 
Последнее редактирование:

Neov

Member
Если прорезюмировать, для модуля RTL-00 имеем:

SDK 3.5 :
  • библиотеки устарели и "обгрызаны", код богат "варнингами",
  • линкует неправильно, много лишнего
  • это SDK для другого модуля (PADI), а следовательно множество подводных камней
Ameba Arduino :
  • библиотеки свежее и богаче,
  • новая версия скрипта линковки, линкует правильно, но по-прежнему много лишнего
  • это не SDK, а Arduino, полностью совместимый с RTL-00

В итоге из вариантов работы с модулем:
  • Arduino + допил от pvvx
  • Слепить SDK из Arduino
  • Использовать UDK от pvvx
При этом нужно изучить до деталей скрипт линковки, исходники компонент SDK и оптимизировать для каждого проекта, а следовательно нужно запастись свободным временем. Т.е. качественного быстрого старта не будет?
 
Сверху Снизу