В ответ на Google-запрос BEKEN programming tools сразу выходит ссылка на официальные программаторы UART TTL и SPI flasher [1].
[UART]
Вероятно это самый простой способ перепрограммирования кристаллов BEKEN, причем довольно быстрый, потому что UART-загрузчик обычно позволяет установить скорость обмена данными при программировании до 1 мегабод. Для перепрограммирования подойдет любой TTL UART - USB переходник с уровнями 3.3V на чипах FTDI (например, FT232RL [2]), CH340 или других аналогичных. Для подключения достаточно 3 провода: RX, TX и GND. Ниже для примера показано подключение к чипу BK7231N/BL2028N.
Windows. Для программирования используйте утилиту Beken Writer (bk_writer) версии не ниже 1.60.
На первый взгляд интерфейс утилиты запутанный, однако на самом деле тут ничего сложного нет. Процесс по шагам:
1. Выберите тип чипа в выпадающем списке Target IC.
2. Кнопкой Browse... выберите файл прошиваемого firmware. Это должен быть двоичный файл исполняемого кода, перекодированный в специальный формат BEKEN (см. [3]).
3. Установите начальный адрес в поле ввода Start Address. Это байтовый адрес в памяти FLASH, куда будет заливаться образ firmware. Конкретное значение зависит от типа программируемого чипа и от того, что находится в файле, который был выбран на шаге 2. Например, если для чипа BK7231N/BL2028N программируется образ firmware, в котором содержится загрузчик вместе с приложением, то адрес должен быть 0x00000000 (кроме загрузчика и приложения в образе могут также содержаться дополнительные данные, такие как таблица разделов flash и файловая система). Если программируется образ, который содержит только код приложения с дополнительными данными, то адрес должен быть 0x00011000, как показано на скриншоте выше.
4. Кликните на кнопку Program.
5. Подключите питание к программируемому чипу (или подайте на него сигнал сброса). Запустится программирование чипа.
Linux. Здесь можно использовать утилиту uartprogram [4], написанную на языке Python. Пример прошивки образа в flash-память BL2028N, содержащего загрузчик и приложение:
~/myproject$ python3 ./tools/hid_download_py/uartprogram out/all_2M.1220.bin --unprotect -d /dev/ttyUSB0 -w --startaddr 0x0
[SPI]
Raspberry Pi. По ссылке [4] также есть Python-утилита spiprogram для Raspberry Pi. Пример подключения BK7231N/BL2028N к Raspberry Pi 4B:
BK7231N/BL2028N |
Pi4B |
MOSI, выв. 18 |
GPIO10 (SPI0 MOSI), конт. 19 |
CSN (выборка), выв. 19 |
GPIO8 (SPI0 CE0), конт. 24 |
SCK, выв. 20 |
GPIO11 (SPI0 SCLK), конт. 23 |
MISO, выв. 17 |
GPIO9 (SPI0 MISO), конт. 21 |
CEN (Chip Enable, сброс), выв. 21 |
GPIO22, конт. 15 |
Установка (см. rpi3install.md [4]):
1. Скачайте репозиторий hid_download_py:
$ git clone https://github.com/OpenBekenIOT/hid_download_py.git
2. Выполните команды:
$ sudo -S
# apt-get install python3-dev
# apt-get install python3-venv
# python3 -m venv env
# source env/bin/activate
# python3 -m pip install pyserial tqdm spidev
# env CFLAGS="-fcommon" python3 -m pip install rpi.gpio
Или можно так:
$ sudo apt install python3-hid python3-serial python3-tqdm
$ sudo python3 setup.py install --user
$ sudo -s
# source env/bin/activate
# strace python3 source env/bin/activate
Вывод подсказки:
Чтение в файл, частота SPI 5 МГц:
# python3 spiprogram -b 5000000 -r -c bk7231n file.bin
Примечание: максимальная частота тактов 6.5 МГц (-b 6500000). Идентификатор FLASH уверенно считывается на скорости 30 кГц.
Стирание:
# python3 spiprogram -b 5000000 -w -e 2 -c bk7231n
Windows. Попробуйте связаться с производителем и запросить у него программатор SPI flasher и соответствующую утилиту [1]. Я экспериментировал с преобразователем USB - SPI на основе чипа FT2232H [5], используя описание протокола SPI в файле SPIFlash.md [1]. К сожалению, нормальных результатов достичь не удалось, по непонятной причине транзакции чтение/запись с драйвером FTDI занимали 450 мс, в результате обмен данными происходил очень медленно.
Linux. Экспериментировал с FT2232H, удалось реализовать стирание, чтение и запись, но это работало недопустимо медленно из-за задержек транзакций.
Экспериментальный исходный код утилит программирования можно скачать по ссылке [6].
[Ссылки]
1. Download Hardware Tools site:bekencorp.com. 2. Плата FT232R-Breakout. 3. BEKEN: как читать и записывать память FLASH. 4. OpenBekenIOT / hid_download_py site:github.com. 5. FT2232H Board - макетная плата на высокоскоростном чипе моста USB фирмы FTDI. 6. 230227beken-SPI-writer-Windows-Ubuntu.zip - исходный код проектов на FT2232H для программатора SPI, документация. |