Скрыть объявление
На нашем форуме недоступен просмотр изображений для неавторизованных пользователей. Если Вы уже зарегистрированы на нашем форуме, то можете войти. Если у Вас еще нет аккаунта, мы будем рады, если Вы к нам присоединитесь. Зарегистрироваться Вы можете здесь.

Мой сборщик и флешер

Тема в разделе "Realtek - SDK, прошивки и утилиты", создана пользователем Neov, 18 мар 2017.

  1. Neov

    Neov Читатель

    Сообщения:
    209
    Симпатии:
    7
    Универсальное, удобное, быстрое, кроссплатформенное, самодостаточное решение для сборки и прошивки RTL87xx чипов. Отличная альтернатива ардуинам.
    Сборка основана на waf, прошивка подсмотрена на форуме, требуется jlinkarm(.dll/.so/.dylib).
    Что это дает:
    • Быстрый старт
    • Никаких bash, mingw, cygwin, binutils, makefile etc.
    • Кросплатформенно, требуется только Python 2.7 и arm-none-eabi-(gcc/nm/objcopy), которые есть почти под все ОС.
    • Быстр, быстрее make
      Бенчмарк RTL00-MP3 / single process / multiprocess / mingw32-make / waf (раскрыть)

      $time PATH=$PATH:/c/projects/wafmeba-RTL00MP3/tools/5.4\ 2016q3/bin/ mingw32-make
      ...
      real 1m21.065s
      user 0m0.015s
      sys 0m0.015s


      $time PATH=$PATH:/c/projects/wafmeba-RTL00MP3/tools/5.4\ 2016q3/bin/ mingw32-make -j
      ...
      real 0m38.266s
      user 0m0.015s
      sys 0m0.000s

      python waf build -j1
      ...
      Waf: Leaving directory `c:\projects\wafmeba-RTL00MP3\build'
      'build' finished successfully (55.487s)

      python waf build
      ...
      Waf: Leaving directory `c:\projects\wafmeba-RTL00MP3\build'
      'build' finished successfully (26.572s)

    • Флешер в комплекте
    • Любая IDE
    how-to
    1. Установите Python 2.7, добавьте путь в PATH
    2. Скопируйте содержимое требуемой папки из applications
    3. Скопируйте файлы соответствующего выбранного проекта
    4. Если требуется, проведите настройку в wscript: пути к gcc, nm, objcopy; путь к библиотеке jlinkarm.
    Основные команды
    • python waf configure - конфигурирование, выполняется единожды
    • python waf clean - очистка
    • python waf build - сборка
    • python waf ram - прямая загрузка в ram
    • python waf flash - прошивка
    • python waf reset - reset
    • python waf webfs - генерация образа webfs (для проекта RTL00_WEB)
    Линковка идет в порядке содержимого файлов "__*". Список includes в файле _includes.
    Для прошивки подойдет любой программатор, совместимый с jlinkarm(.dll/.so/...), т.е. подойдет и JLink OB, перепрошитый ST-Link.
    GCC должен быть: либо в PATH, либо находиться в папке tools.

    Во всех проектах, кроме PINE64SDK и RTL00MP3, требуется копия или символьная ссылка на RTL00MP3/RTL00_SDKV35a at master · pvvx/RTL00MP3 · GitHub

    Бета версия. Отлажено пока только для RTL8710AF под Windows, Linux. Автор ответственности за порчу модулей/чипов не несёт :)

    magres / wafmeba — Bitbucket
     
    Последнее редактирование: 26 май 2017
    sdsm, Simon, pvvx и ещё 1-му нравится это.
  2. Neov

    Neov Читатель

    Сообщения:
    209
    Симпатии:
    7
    ответил в шапку
     
  3. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.762
    Симпатии:
    1.284
    @Neov - без полной реструктуризации SDK далеко не уехать. В оф.SDK много ошибок, связанных с кучей впихнутого хлама и переплетения десятков ненужных примеров, каждый из которых имеет свои ветки управления WiFi и прочего. Т.е. нет единого WiFi API и других интерфейсов (загрузки, к примеру). Так- же нет никакой возможности разбивки SDK на либы. Нет совместимости с разными boot-loader-ами (от разных версий SDK). Нет... Ну, а о том, что в оф. SDK нет 1/3 исходников и разговор не идет.
    Из-за этих "нет" и "т.д." "телепузикам" сложно освоить SDK и работают с ним всего несколько чел на форуме - готовых примеров, кроме моих и на моей сборке SDK пока вообще нет.
    Я только начал данный процесс, 50% сделано в моем SDK, но до завершения ещё далеко. Одному и на условиях хобби это долго, но со временем соберется на всё 100+%. До определенной стадии там будет полный бардак, а оптимизация и окончательная структуризация только в конце, когда будет переделано за 90% задач.

    А сборка стандартного SDK (3.4) очень просто работает в IAR и делать ничего не требуется.
    На "RTL-00/PADI iot stamp, для официального SDK 3.5a под Windows" не работает 50% периферии чипа. Закрыто программно в бинарных либах. Собирается из командной строки в Win и Линух и делать тоже ничего не требует.
    Процесс линковки и используемые для этого утилиты - это последняя часть в глобальной реструктуризации SDK - она самая простая и имеет сотни решений на вкус и цвет. Python там является оптимальным решением, но пока нет общей ясности что и как придется собирать (как разобьется на библиотеки и прочее).
    В вашем примере Python пожирает и транслирует весь хлам из SDK, а нужного там всего не более 50% для любого собираемого примера.
    Кроме моей кривой на текущий момент сборки SDK скоро выйдет mbed вариант "add support for REALTEK_RTL8195AM"... Хоть какая-то альтернатива. Тогда и заживем :)
    Там уже другой загрузчик (но тоже закрытый - в bin файле) и многое другое. Так-же процесс висит на создании WiFi API части...
    В моей версии SDK, всё, кроме совсем внутренних потрахов WiFi драйвера, будет с исходниками. Это условие уже выполнено к 95%, включая заголовки и описания ВСЕХ рабочих структур ко всем процедурам WiFi драйвера (регистры RF тоже).
     
    Последнее редактирование: 19 мар 2017
  4. Neov

    Neov Читатель

    Сообщения:
    209
    Симпатии:
    7
    @pvvx , внимательно смотрите в описание. Я не предлагаю свою версию SDK, я предлагаю свой метод сборки и прошивки, на примере официального SDK 3.5a. правим wscript и собираем альтернативный SDK, RTL00-mp3 и др.

    Не на столько все радужно. Вам стоит попробовать.
     
    Последнее редактирование: 19 мар 2017
  5. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.762
    Симпатии:
    1.284
    А в чем он "свой"?
    Во первых претензий то нет, но дал вам описание что и как сейчас обстоят дела с разными SDK.
    Что предлагаете собирать с помощью вашего wscript? Или точнее - а зачем оно всё (?), если нечего собирать и нет описания как, а то, что есть и так собирается путем скачивания и набора в командной строке mingw32-make.exe.
    По поводу прошивки - а куда и что ваш вариант прошивает, если существует несколько вариантов?
    Я пробовал. Вышло только одно "но" - пришлось поправить определение #ifeq ($(findstring CYGWIN, $(OS)), CYGWIN) в application.mk. На чистой операционке, не захламленной как у меня, и этого не надо.
    В IAR просто переключил адаптер на Jlink и всё поехало.

    Вопросов с вашим сборщиком мульон :)
    Как с помощью вашего варианта запустить прошивку в RAM у RTL8711AM? (SDRAM после RESET отключена - её инициализация произойдет в boot, с калибровкой и стиранием, если не выставлен bit21 в control reg).
    Как выбрать вариант загрузки в RAM? Их 4 штуки - разные биты в control reg.

    Как выбрать вариант сборки со стандартными либами СИ или со встроенными в ROM? Тут ещё варианты - с обработкой в printf плавающей точки или без.
    Надо лезть в программу питона и менять её (?):

    Вариант 1 (встроенные либы, объем кода меньше):
    LFLAGS += -nostdlib -Wl,-nostdlib
    LIBS +=_platform_new _wlan
    ADD_SRC_C += sdk/component/soc/realtek/8195a/misc/rtl_std_lib/lib_rtlstd/ram_pvvx_libc.c
    Если надо с_printf() с float -
    ADD_SRC_C += sdk/component/soc/realtek/8195a/misc/rtl_std_lib/lib_rtlstd/c_stdio.c

    Вариант 2 (стандартные либы, объем кода больше):
    LFLAGS += --specs=nano.specs
    LIBS +=_platform_new _wlan m c nosys gcc

    Это пример к неокончательной версии.
    По поводу прошивки - вопросов и вариантов тоже много. Без их выбора данная система не нужна.
    Основной выбор у нас такой:
    1) Переписывать или нет boot-loader
    2) Каким номером писать прошивку (у Ameba 2 выбора - основная и OTA, у меня пока 5 номеров 0 (резервная), 1, 2, 3, 4 - номер прошивки.
    4) Установка пинов переключения номера прошивки.
    5) Коррекция заголовков прошивок Ameba и коррекция указателя на OTA прошивку в секторе 9. Без этого пины выбора в Ameba не работают. Кроме того если там назначено 2 пина, то первый не всегда работает (ошибка в их boot-ах) :)
    6) Сброс калибровок в 9-ом секторе.
    7) Прописывание MAC в 10-ом секторе в соответствии с форматом его свертки, а не по смещению в секторе. (Требуется вписать адрес и указатель c данными MAC в конец блоков. При чтении - развернуть упакованные данные в 512 байт и в них уже прочесть получившийся MAC)
     
    Последнее редактирование: 19 мар 2017
  6. Neov

    Neov Читатель

    Сообщения:
    209
    Симпатии:
    7
    С этого и надо было начинать :)
    Конечно, придется править, достаточно открыть wscript, внимательно его посмотреть и все станет ясным.
    Открываем wscript и правим
    Код (Text):
    1.     bld(
    2.         features='ameba_link',
    3.         source= AMEBA_BUILDLIST_SRC + AMEBA_BUILDLIST_DRAM + AMEBA_BUILDLIST_OBJS,
    4.         lscript='rlx8195A-symbol-v02-img2.ld',
    5.         lflags=['-mcpu=cortex-m3', '-mthumb', '-g', '--specs=nano.specs', '-nostartfiles', '-Os', '-Wl,--gc-sections', '-Wl,--cref', '-Wl,--entry=Reset_Handler', '-Wl,--no-enum-size-warning', '-Wl,--no-wchar-size-warning'],
    6.         libdir='component/soc/realtek/8195a/misc/bsp/lib/common/GCC/',
    7.         libs=['_platform', '_wlan', '_p2p', '_wps', '_rtlstd', '_websocket', '_xmodem', 'm', 'c', 'nosys', 'gcc'],
    8.         target='app',
    9.     )
    10.  
    При этом редактируем содержимое файла _build_src _build_objs. Страшно?

    Читаем первый абзац шапки.

    Как это нечего? есть ваш SDK, есть rtl00-mp3, rtlhttpd и т.д.

    Пока только Image1 + Image2. Загрузка в RAM, и др. в планах.
     
  7. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.762
    Симпатии:
    1.284
    Неа - мне что *.bat/.cmd, что *.py - уровень батника и при каждой трансляции переписываю как надо в данном случае :) При тестах только этим и приходится заниматься. Но как "телепузикам" поступать? Или эта тема только ваш личный блог достижений? :)
    Я вам уже описал - пока ещё не до авто-сборки моей текущей свалки SDK. Нет полностью сформированных концепций и пока каждый раз там что-то меняется. Т.е. итоговый вариант ещё не сформирован и никаких четких рекомендаций не выработано для создания прошивальщика.
    Для Ameba уже всё описано и там жестко и изменений наверно не будет. Но вам придется согласовать загрузчик из SDK с их Arduino загрузчиком для "телепузиков". Иначе там беда - зависание при некоторых разных калибровках-установках прописанных для Spic в 9-ом секторе. Ну и скорректировать описанное (адрес OTA в 9-ом секторе и заголовки прошивок) про пины переключения.
     
    Последнее редактирование: 19 мар 2017
  8. Neov

    Neov Читатель

    Сообщения:
    209
    Симпатии:
    7
    Смотря кого считать "телепузиками". Отредактировать в блокноте пару файлов я не считаю непосильной задачей :)
    Тем не менее, Ваш же SDK требует сборки :)
    Тем не менее я готов развивать эту тему вместе с развитием Вашего SDK.
    P.S. Уже оценили скорость компиляции? :)
     
    Последнее редактирование: 19 мар 2017
  9. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.762
    Симпатии:
    1.284
    Бывают вопросы и что такое "блокнот"?
    Не берите примеры из программатора на pas - она писалась когда исследовался чип и там многое неправильно, как и в файлах *.jlink. Было многое неизвестно. А пока нет времени исправить.
     
  10. Neov

    Neov Читатель

    Сообщения:
    209
    Симпатии:
    7
    Тогда таким телепузикам тут явно не место
    Прошивка кажется сносной, но если Вам известен более правильный алгоритм, и Вы поделитесь, я бы внедрил с удовольствием
     
  11. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.762
    Симпатии:
    1.284
    Описано уже: RTL871x Flash Memory Map
    К битам выбора "запуска в RAM" RTL8710AF - загрузчик в ROM-BIOS надо прибавить BIT21 - он означает, что SDRAM инициализирована и туда записаны данные. Никак не влияет на ROM-BIOS, а смотрится в boot-loader-е и startup коде уже image, инициализировать или нет ему SDRAM. Если не выставлен - инициализирует SDRAM контроллер и калибрует с проверкой на запись (убивает данные там)...
    Второе соо примерно от такого... :)
     
  12. Neov

    Neov Читатель

    Сообщения:
    209
    Симпатии:
    7
    Добавил сборку RTL00-MP3
     
  13. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.762
    Симпатии:
    1.284
    В _build_dram, _build_objs, _build_src, _includes нет возможности вписать комментарии или сделать полный список, выбирая маркером, что нужно для текущего проекта.
     
  14. Neov

    Neov Читатель

    Сообщения:
    209
    Симпатии:
    7
    Теперь можно :)
    используйте знак комментария "#"
     
  15. Neov

    Neov Читатель

    Сообщения:
    209
    Симпатии:
    7
    Отладил под Linux, компилирует со скоростью звука :)
     
  16. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.762
    Симпатии:
    1.284
    Оно не интересно - там это:
    #==>
    #BZh....
    #<==
    Убирайте :)
    Хотите такое-же SDK :)
     
  17. Neov

    Neov Читатель

    Сообщения:
    209
    Симпатии:
    7
    waf не мой, "я просто разместил объяву"
    строчки закомментированы, не бойтесь :)
     
  18. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.762
    Симпатии:
    1.284
    Т.е. их можно вырезать? :)
    The Waf Book
    90 килобайт бинарного коммента :)
    Значит в SDK далее получите сотню мегабайт бинарной либы и один хидер.
     
    Последнее редактирование: 23 мар 2017
  19. Neov

    Neov Читатель

    Сообщения:
    209
    Симпатии:
    7
    вырезайте, если так мешает. Вообще waf лучше не трогать, он стандартный.
    Этот коммент никуда далее не идёт.
     
  20. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.762
    Симпатии:
    1.284
    Файл build.axf тоже стандартный. Оставить его для вашей системы в SDK (остальное удалю)?
    Получиться как раз типовая системка под waf :)
    Собираться будет сверх быстро :)
     
    Последнее редактирование: 23 мар 2017

Поделиться этой страницей