Подготовка Raspberry Pi 4 B к запуску примеров

Коммутация компьютера и Raspberry Pi 4 B

Чтобы видеть вывод примеров на компьютере, выполните следующие действия:

  1. Соедините пины преобразователя USB-UART на базе FT232 с соответствующими GPIO-пинами Raspberry Pi 4 B (см. рис. ниже).

    RPI_USB

    Схема соединения преобразователя USB-UART и Raspberry Pi 4 B

  2. Соедините USB-порт компьютера и преобразователь USB-UART.
  3. Установите PuTTY или другую аналогичную программу для чтения данных из COM-порта. Настройте параметры следующим образом: bps = 115200, data bits = 8, stop bits = 1, parity = none, flow control = none.

Чтобы компьютер и Raspberry Pi 4 B могли взаимодействовать через сеть Ethernet, выполните следующие действия:

  1. Соедините сетевые карты компьютера и Raspberry Pi 4 B с коммутатором или друг с другом.
  2. Выполните настройку сетевой карты компьютера, чтобы ее IP-адрес был в одной подсети с IP-адресом сетевой карты Raspberry Pi 4 B (параметры сетевой карты Raspberry Pi 4 B задаются в файле dhcpcd.conf, который находится по пути <название примера>/resources/...).

Подготовка загрузочной SD-карты для Raspberry Pi 4 B

Загрузочную SD-карту для Raspberry Pi 4 B можно подготовить автоматически и вручную.

Чтобы подготовить загрузочную SD-карту автоматически, подключите SD-карту к компьютеру и выполните следующие команды:

# Для создания файла образа загрузочного носителя (*.img)

# выполните скрипт, соответствующий ревизии используемой

# Raspberry Pi. Поддерживаются ревизии 1.1, 1.2, 1.4 и 1.5.

# Например, если используется ревизия 1.1, выполните:

$ sudo /opt/KasperskyOS-Community-Edition-<version>/examples/rpi4_prepare_fs_image_rev1.1.sh

# В следующей команде path_to_img – путь к файлу образа

# загрузочного носителя (этот путь выводится по окончании

# выполнения предыдущей команды), [X] – последний символ

# в имени блочного устройства для SD-карты.

$ sudo dd bs=64k if=path_to_img of=/dev/sd[X] conv=fsync

Чтобы подготовить загрузочную SD-карту вручную, выполните следующие действия:

  1. Выполните сборку загрузчика U-Boot для платформы ARMv8, который будет автоматически запускать пример. Для этого выполните следующие команды:

    $ sudo apt install git build-essential libssl-dev bison flex unzip parted gcc-aarch64-linux-gnu xz-utils device-tree-compiler

    $ git clone https://github.com/u-boot/u-boot.git u-boot-armv8

    # Только для Raspberry Pi 4 B ревизий 1.1 и 1.2

    $ cd u-boot-armv8 && git checkout tags/v2020.10

    # Только для Raspberry Pi 4 B ревизий 1.4 и 1.5

    $ cd u-boot-armv8 && git checkout tags/v2022.01

    # Для всех ревизий Raspberry Pi

    $ make ARCH=arm CROSS_COMPILE=aarch64-linux-gnu- rpi_4_defconfig

    # В меню, которое появится при выполнении следующей команды, в разделе

    # Boot options замените значение в поле bootcmd value на следующее:

    # fatload mmc 0 ${loadaddr} kos-image; bootelf ${loadaddr},

    # а в поле preboot default value удалите значение "usb start;".

    # Выйдите из меню, сохранив параметры.

    $ make ARCH=arm CROSS_COMPILE=aarch64-linux-gnu- menuconfig

    $ make ARCH=arm CROSS_COMPILE=aarch64-linux-gnu- u-boot.bin

  2. Подготовьте образ с файловой системой для SD-карты. Для этого подключите SD-карту к компьютеру и выполните следующие команды:

    # Только для Raspberry Pi 4 B ревизий 1.1 и 1.2

    $ wget https://downloads.raspberrypi.org/raspbian_lite/images/raspbian_lite-2020-02-14/2020-02-13-raspbian-buster-lite.zip

    $ unzip 2020-02-13-raspbian-buster-lite.zip

    $ loop_device=$(sudo losetup --find --show --partscan 2020-02-13-raspbian-buster-lite.img)

    # Только для Raspberry Pi 4 B ревизии 1.4

    $ wget https://downloads.raspberrypi.org/raspios_lite_arm64/images/raspios_lite_arm64-2022-04-07/2022-04-04-raspios-bullseye-arm64-lite.img.xz

    $ unxz 2022-04-04-raspios-bullseye-arm64-lite.img.xz

    $ loop_device=$(sudo losetup --find --show --partscan 2022-04-04-raspios-bullseye-arm64-lite.img)

    # Только для Raspberry Pi 4 B ревизии 1.5

    $ wget https://downloads.raspberrypi.org/raspios_lite_arm64/images/raspios_lite_arm64-2022-09-07/2022-09-06-raspios-bullseye-arm64-lite.img.xz

    $ unxz 2022-09-06-raspios-bullseye-arm64-lite.img.xz

    $ loop_device=$(sudo losetup --find --show --partscan 2022-09-06-raspios-bullseye-arm64-lite.img)

    # Для всех ревизий Raspberry Pi

    # Образ будет содержать boot-раздел на 1 ГБ в fat32 и три раздела по 256 МБ в ext2, ext3 и ext4 соответственно.

    $ sudo parted ${loop_device} rm 2

    $ sudo parted ${loop_device} resizepart 1 1G

    $ sudo parted ${loop_device} mkpart primary ext2 1000 1256M

    $ sudo parted ${loop_device} mkpart primary ext3 1256 1512M

    $ sudo parted ${loop_device} mkpart primary ext4 1512 1768M

    $ sudo mkfs.ext2 ${loop_device}p2

    $ sudo mkfs.ext3 ${loop_device}p3

    $ sudo mkfs.ext4 -O ^64bit,^extent ${loop_device}p4

    $ sudo losetup -d ${loop_device}

    # В следующей команде [X] – последний символ в имени блочного устройства

    # для SD-карты.

    $ sudo dd bs=64k if=$(ls *rasp*lite.img) of=/dev/sd[X] conv=fsync

  3. Скопируйте загрузчик U-Boot на SD-карту, выполнив следующие команды:

    # В следующих командах путь ~/mnt/fat32 используется для примера. Вы

    # можете использовать другой путь.

    $ mkdir -p ~/mnt/fat32

    # В следующей команде [X] – последний буквенный символ в имени блочного

    # устройства для раздела на отформатированной SD-карте.

    $ sudo mount /dev/sd[X]1 ~/mnt/fat32/

    $ sudo cp u-boot.bin ~/mnt/fat32/u-boot.bin

    # Только для Raspberry Pi 4 B ревизии 1.5

    # В следующих командах путь ~/tmp_dir используется для примера. Вы

    # можете использовать другой путь.

    $ mkdir -p ~/tmp_dir

    $ cp ~/mnt/fat32/bcm2711-rpi-4-b.dtb ~/tmp_dir

    $ dtc -I dtb -O dts -o ~/tmp_dir/bcm2711-rpi-4-b.dts ~/tmp_dir/bcm2711-rpi-4-b.dtb && \

    $ sed -i -e "0,/emmc2bus = /s/emmc2bus =.*//" ~/tmp_dir/bcm2711-rpi-4-b.dts && \

    $ sed -i -e "s/dma-ranges = <0x00 0xc0000000 0x00 0x00 0x40000000>;/dma-ranges = <0x00 0x00 0x00 0x00 0xfc000000>;/" ~/tmp_dir/bcm2711-rpi-4-b.dts && \

    $ sed -i -e "s/mmc@7e340000 {/mmc@7e340000 {\n\t\t\tranges = <0x00 0x7e000000 0x00 0xfe000000 0x1800000>;\n dma-ranges = <0x00 0x00 0x00 0x00 0xfc000000>;/" ~/tmp_dir/bcm2711-rpi-4-b.dts && \

    $ dtc -I dts -O dtb -o ~/tmp_dir/bcm2711-rpi-4-b.dtb ~/tmp_dir/bcm2711-rpi-4-b.dts

    $ sudo cp ~/tmp_dir/bcm2711-rpi-4-b.dtb ~/mnt/fat32/bcm2711-rpi-4-b.dtb

    $ sudo rm -rf ~/tmp_dir

  4. Заполните конфигурационный файл для загрузчика U-Boot на SD-карте используя следующие команды:

    $ echo "[all]" > ~/mnt/fat32/config.txt

    $ echo "arm_64bit=1" >> ~/mnt/fat32/config.txt

    $ echo "enable_uart=1" >> ~/mnt/fat32/config.txt

    $ echo "kernel=u-boot.bin" >> ~/mnt/fat32/config.txt

    $ echo "dtparam=i2c_arm=on" >> ~/mnt/fat32/config.txt

    $ echo "dtparam=i2c=on" >> ~/mnt/fat32/config.txt

    $ echo "dtparam=spi=on" >> ~/mnt/fat32/config.txt

    $ sync

    $ sudo umount ~/mnt/fat32

В начало