Программирование ARM Чем программировать BEKEN Sun, March 03 2024  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.

Чем программировать 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.

bk writer UART BL2028N connect fig01

Windows. Для программирования используйте утилиту Beken Writer (bk_writer) версии не ниже 1.60.

bk writer160 fig02

На первый взгляд интерфейс утилиты запутанный, однако на самом деле тут ничего сложного нет. Процесс по шагам:

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

Вывод подсказки:

# 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.
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, документация.

 

Добавить комментарий


Защитный код
Обновить

Top of Page