Чем программировать BEKEN |
![]() |
Добавил(а) microsin | ||||||||||||
В ответ на 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:
Установка (см. 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
Вывод подсказки: # python3 spiprogram -h
Чтение в файл, частота 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. |