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

Кто доделает Flasher для RTL00 c JlinkARM.dll?

pvvx

Активный участник сообщества
Вот если бы на луа или MVC слепили, то можно доделать.
А мне всё равно на чём. goodwin начал писать на 'дельфях' - я и продолжил на них - вставил недостающие низкоуровневые процедуры работы с загружаемым бинарным flasher-ом от rebane...
На скрипте make gсс, для gdb-Jlink примеры уже есть в кинутых проектах...
Изначально есть на OpenOCD, но в Win-де требуется переназначать драйвер Jlink-a на libusb-win32 (к примеру с помощью zadig)...
Но в OpenOCD и GDB Flasher работает медленнее, чем напрямую с утилитами от Jlink. И отладчик от Jlink (GDB) менее всех глючит при работе с RTL00 в Eclipse.
 
Последнее редактирование:

nikolz

Well-known member
А мне всё равно на чём. goodwin начал писать на 'дельфях' - я и продолжил на них - вставил недостающие низкоуровневые процедуры работы с загружаемым бинарным flasher-ом от rebane...
На скрипте make gсс, для gdb-Jlink примеры уже есть в кинутых проектах...
Изначально есть на OpenOCD, но в Win-де требуется переназначать драйвер Jlink-a на libusb-win32 (к примеру с помощью zadig)...
Но в OpenOCD и GDB Flasher работает медленнее, чем напрямую с утилитами от Jlink. И отладчик от Jlink (GDB) менее всех глючит при работе с RTL00 в Eclipse.
Как придет RTL , тогда возможно озадачусь поиском решений.
 

goodwin

Member
Ночь не поспал, и тоже изобразил тестилку-болванку...
Провозился с долго с "бинарным flasher-ом от rebane ".
Компильнуть мне нечем, а массив из исходника на сайте похоже кривой...
Прикрутил бинарник из твоего поста, задышало...
Пока можно потестить FullFlash. Чтение - 6.5 сек, mass erase - 3 сек, прошивка - на картинке.
Прошивка правда без каких-либо проверок. Уже не смог - заснул ;)
Выкладываю тоже свои корявые потуги (не программер я, однако...)
После процедуры стирания модуль изредка не стартует. Выплевывает с какого то фига на чистой флэш вот такое:
Check boot type form eFuse
SPI Initial
Image1 length: 0xf, Image Addr: 0xf
Image1 Validate OK, Going jump to Image1
RTL8195A[HAL]: Hard Fault Error!!!!

После чего по двум проводкам SWD не ресетится... Надо сбрасывать "железно".
Коллективными усилиями, думаю, добьем ;)
 

Вложения

pvvx

Активный участник сообщества
После чего по двум проводкам SWD не ресетится... Надо сбрасывать "железно".
Это частенько происходит...
Коллективными усилиями, думаю, добьем ;)
Всё возможно :)
Пока тут пререкался с nikolz, с помощью 'левой ноги' Flasher обзавелся распознаванием заголовков Boot и Images для Амебы:
RTL00Flasher1.gif
 

nikolz

Well-known member
Это частенько происходит...
Всё возможно :)
Пока тут пререкался с nikolz, с помощью 'левой ноги' Flasher обзавелся распознаванием заголовков Boot и Images для Амебы:
Посмотреть вложение 2223
Кто-то восторгался что для RTL все есть готовое и хорошо работает.
Т е опять делаем костыли?
Ну и что же изменилось в нашем царстве?
 

pvvx

Активный участник сообщества
Кто-то восторгался что для RTL все есть готовое и хорошо работает.
Т е опять делаем костыли?
Ну и что же изменилось в нашем царстве?
Пограмматор в oф. SDK есть в IAR. А у нас не оф. SDK - для тех, кто в море или "without_NDA_GCC". Разница не ясна?
 

pvvx

Активный участник сообщества
Есть ещё такие вопросики:
1) Что-то у Flash не читается зона OTP.
2) Не нашел спецификации (описания структур) на блоки сохранения Амёбы в Flash по адресу 0xA000. Известно только, что там код наличия записей 0x8195, далее размер блока и несколько блоков, в одном из них MAC. Т.е. без ID 0x8195 по 0xA000 MAC не будет загружен в либе WiFi Амёбы.
3) Нет спеки по так названной в Амёбе efuse. Надо уточнить, как оно влияет - просматриваются всякие свичи в либах... либы у Realtek универсальные, для разных чипов и содержат много лишнего для RTL8710.
 

pvvx

Активный участник сообщества
Провозился с долго с "бинарным flasher-ом от rebane ".
Компильнуть мне нечем, а массив из исходника на сайте похоже кривой...
'Компильнуть мне нечем' - что mingw32-make.exe не набрать? :)
Массив из исходника rebane / rtl8710_openocd / source / — Bitbucket , но в windows не работает make_array.exe :)
Замену на питоне приложил.
 

Вложения

pvvx

Активный участник сообщества
RTL00Flasher3.gif
Ещё немного дописал... Не всё ещё работает, но главное пашет.
 

Вложения

pvvx

Активный участник сообщества
Garmin - И действительно исходники от rebane не работают - глючат на записи.
Код в rtl8710.ocd, в бинарнике и в исходнике - разный. Это наверно прикол такой :)
 

goodwin

Member
Вполне ништяк ;)
Осталось добавить командную строку для линуксоидов ;)

Подправь условие после вызова:
res:=JLINKARM_Open();
if res = 1 then...
на
if res <> 0 then...

При неподключенном отладчике оно продолжает исполнять дальнейшие команды.
Ибо там возвращается что угодно, а не только "1".
 
Последнее редактирование:

pvvx

Активный участник сообщества
Осталось добавить командную строку для линуксоидов ;)
В Eclipse у меня работает через make...
Подправь условие ...
Исходник в первом посту....
Временно 'дописывание' остановлено, т.к. надо разобраться с самим кодом, загружаемым в чип. От rebane кривой...
 
Последнее редактирование:

pvvx

Активный участник сообщества
Китайский программатор RTL для Jlink: Ameba Image Generator Tool
Создает 3 скрипта:
download.jlink:
speed 300
loadbin "out.bin", 0x98000000
exit

verify.jlink:
speed auto
verifybin "out.bin", 0x98000000
exit

erase.jlink:
speed auto
w4 0x400002c0 0x110011
Sleep 10
w4 0x40006008 0x0
w4 0x40006000 0x01000000
w1 0x40006060 0x06
w4 0x40006008 0x1
Sleep 10
w4 0x40006008 0x0
Sleep 10
w4 0x40006008 0x0
w4 0x40006000 0x01000000
w1 0x40006060 0x60
w4 0x40006008 0x1
Sleep 10
w4 0x40006008 0x0
Sleep 10000
qc
exit
 

goodwin

Member
Да уж... (чешу затылок). Три скрипта - весь программатор.
У них, сцуко, есть ИНФОРМАЦИЯ (касаемо изящного стирания флэш через регистры).
Наковырял сейчас 3 батничка - не шибко оптимально по скорости, но работает, етить...
У китайцев рациональная мысль имеется - все, что требуется для работы с образами, надо производить над файлами, а не ковыряться с "кусочками" флэш.
Не зря я остановился на "только FullFlash" в дельфях ;)

Оптимизировать скорость записи можно. Например, проверяя записываемый файл на "чистые" блоки, которые пропускать при записи.
Ну и время стирания тоже сильно меньше 10 сек (реально 3 с копейками).
 
Последнее редактирование:

pvvx

Активный участник сообщества
Да уж... (чешу затылок). Три скрипта - весь программатор.
По этому в проекте у меня работает make. А программатор - это так, для всяких глупостей.
...есть ИНФОРМАЦИЯ (касаемо изящного стирания флэш через регистры).
Напрямую в регистры SPIC. Там не всё почему-то работает. В дельпьхях я так и сделал команды чтения регистров flash, но OTP область не читается - не знаю что там не так.
 

Seeker

New member
Не прошло и три месяца как я готов сообщить, что подключаюсь к теме быстрой заливки памяти в Rtl.:)
 

pvvx

Активный участник сообщества
Не прошло и три месяца как я готов сообщить, что подключаюсь к теме быстрой заливки памяти в Rtl.:)
Код оф.программатора на RTL лежит тут RTL00MP3/RTL00_SDKV35a/component/soc/realtek/8195a/misc/iar_utility/common/flashloader at master · pvvx/RTL00MP3 · GitHub
Для быстрой заливки в RAM и SDRAM RTL8711AM пока ничего для выкладывания нет. Из нескольких алгоритмов не выбран который будет являться типа "стандартным". Нет желания ковыряться Jtag в регистрах, а есть встроить это в загрузчик (в код image1). Официалы не чешутся, чтобы принять какое-то решение по выбору алго для совместимости...
Проблема в том, что SDRAM отключена после сброса. Код инициализации контроллера SDRAM загружается с Flash вместе с остальным и после инициализации контроллера SDRAM грузится из Flash. Т.е. чтобы загрузить код в SDRAM необходимо инициализировать контроллер SDRAM и настроить его - калибровать или с нуля или с записи сохраненных настроек в системном секторе Flash...
Загружать доп. стартовый код с Jtag для инициализации SDRAM или копаться в регистрах через Jtag с калибровкой SDRAM контроллера на максимальную производительность SDRAM не является нормальным вариантом. Проще переписать основной загрузчик и встроить в него проверку для остановки и ожидания заливки SDRAM через Jtag после его инициализации SDRAM. Но исходного кода загрузчика в image1 нет и не дано ни кем. И он отличается у каждой версии имеющихся SDK... Каждый, из якобы официалов, гонит свою версию и стандарта распределения даже во flash не наблюдается, не говоря уже о ограничениях зашитых в image1 для своего продаваемого варианта плат у официалов...
А я один не собираюсь издавать или устанавливать какие-либо стандарты, т.к. пока нет вообще никаких откликов и рекомендаций у пользователей по данной теме.
Код загрузчиков тоже плохо проработан - остаются ненужные куски занимающие RAM...
 
Последнее редактирование:
Сверху Снизу