Deploying and running a redpesk image for M3/H3 boards
It consists of copying a redpesk disk image on an sdcard.
See Renesas specification for M3 and H3 on renesas website.
Download images
See Download Images section
Download Renesas Gen3 image from command line
Create a directory to download the image:
mkdir ~/redpeskimage
cd ~/redpeskimage
Then download the latest redpesk OS image with this command:
wget -r -nd -nc --no-parent --accept-regex='redpesk.*smack.*\.(bmap|xz|sha256)' --reject-regex '(image\.raw|ova|index)' 'https://download.redpesk.bzh/redpesk-lts/arz-1.1-update/images/smack/minimal/aarch64/renesas-gen3/'
Control the image integrity
Before doing anything, please control the integrity of the downloaded redpesk image. Example:
sha256sum -c redpesk*.tar.xz.sha256
redpesk*x86_64*.tar.xz: OK
Copying the image on your sdcard
Plug in your sdcard and Find it (be sure it is unmounted)
Copy the correct device path thanks to the command below. It should be a hotplug device.
lsblk -dli -o PATH,VENDOR,TYPE,HOTPLUG,MODEL
DEVICE_TO_COPY='/dev/<hotplug_device>' #in the example it is /dev/sdc
Example:
$ lsblk -dli -o PATH,VENDOR,TYPE,HOTPLUG,MODEL
PATH VENDOR TYPE HOTPLUG MODEL
/dev/sda ATA disk 0 WDC_WD10SPZX-08Z10
/dev/sdc TS-RDF5 disk 1 SD_Transcend #MYSDCARD
/dev/nvme0n1 disk 0 LITEON T11 512
DEVICE_TO_COPY=/dev/sdc
Or if only one device is hotpluggable on your computer:
# need jq
DEVICE_TO_COPY=$(lsblk -dlJ -o PATH,VENDOR,TYPE,HOTPLUG,MODEL | jq -r '.blockdevices[] | select(.hotplug == true).path')
echo $DEVICE_TO_COPY
Umount if needed
lsblk $DEVICE_TO_COPY
# need to umount each partition
sudo umount <part*>
Example:
$ lsblk /dev/sdc
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdc 8:32 1 14.6G 0 disk
├─sdc1 8:33 1 501M 0 part /run/media/iotbzh/0409-3A02
├─sdc2 8:34 1 1G 0 part /run/media/iotbzh/cd3c87ec-1011-4832-aef3-6be0ed3d3748
└─sdc3 8:35 1 2.5G 0 part /run/media/iotbzh/4e508264-8ce2-447f-a829-e4c31ea20047
$ sudo umount /run/media/iotbzh/*
Flash sdcard
Prerequisites: device is plugged in, found, unmounted
- Extract the image first
tar xJf redpesk*.tar.xz
- Flash it using
dd
sudo dd if="Redpesk-OS.img" of=$DEVICE_TO_COPY bs=4M status=progress
- Or using bmaptool
bmaptool copy "Redpesk-OS.img" $DEVICE_TO_COPY
TIPS: Once your are used to flash your image, you could do it much faster in one single step using
bmaptool
like this:bmaptool copy "https://download.redpesk.bzh/redpesk-lts/arz-1.1-update/images/smack/minimal/aarch64/renesas-gen3/image.raw.tar.xz" $DEVICE_TO_COPY
This will download, control integrity and flash the latest redpesk OS image on your device.
Hardware DIP switch configuration
Integrated into the PCB, a DIP switch is generally present to allow you to choose between different boot mode.
For the Renesas Gen M3/H3, please refer to the Renesas documentation. There are specific DIP switches which are used for boot selection.
Power on m3/h3
Prerequisites
- sdcard copied and plugged into Renesas board
- keyboard, screen plugged into Renesas board (optional)
- ethernet cable plugged (optional)
- Micro USB-A cable for serial console plugged (optional: for uboot configuration)
Uboot configuration
If not already done, you’ll have to configure Uboot parameters.
-
Connect your host to the serial port on the Renesas board using a USB cable and determine the device created for the serial link using dmesg on your host (usually it is
/dev/ttyUSB0
but it may be different if other USB serial ports are connected to your host):$ dmesg | tail 9 [893087.548231] usb 1-1.4: new full-speed USB device number 99 using xhci_hcd [893087.659494] usb 1-1.4: New USB device found, idVendor=0403, idProduct=6001,bcdDevice= 6.00 [893087.659514] usb 1-1.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [893087.659524] usb 1-1.4: Product: FT232R USB UART [893087.659533] usb 1-1.4: Manufacturer: FTDI [893087.659539] usb 1-1.4: SerialNumber: AK04WWFN [893087.670875] ftdi_sio 1-1.4:1.0: FTDI USB Serial Device converter detected [893087.670988] usb 1-1.4: Detected FT232RL [893087.671943] usb 1-1.4: FTDI USB Serial Device converter now attached to ttyUSB0
-
Start a terminal emulator on the USB serial port:
Here, we use ‘screen’ on device
/dev/ttyUSB0
but you could use any terminal emulator able to open the serial port at 115200 bauds (minicom , picocom …)minicom -b 115200 -D /dev/ttyUSB0
or
picocom -b 115200 /dev/ttyUSB0
or
screen /dev/ttyUSB0 115200
-
Power up the board : short press the power button on the board.
-
Break at uboot prompt (press any key)
-
Set the following uboot variables :
WARNING: don’t make a big copy/paste or some garbage characters may be sent to the console (issue with usb/serial port buffering?). Instead, copy one or two lines at a time.
-
Set the right dtb file for your board:
-
H3
setenv dtbfile r8a77951-ulcb.dtb
-
H3 KINGFISHER
setenv dtbfile r8a77951-ulcb-kf.dtb
-
M3
setenv dtbfile r8a77960-ulcb.dtb
-
M3 KINGFISHER
setenv dtbfile r8a77960-ulcb-kf.dtb
-
-
Set common uboot config:
# For KINGFISHER ROOTPART=/dev/mmcblk0p4 # else ROOTPART=/dev/mmcblk1p4 setenv bootmmc '0:1'; setenv bootkaddr 0x48080000; setenv bootdaddr 0x48000000; setenv bootargs console=ttySC0,115200 ignore_loglevel vmalloc=384M video=HDMI-A-1:1920x1080-32@60 root=$ROOTPART rw rootfstype=ext4 rootwait rootdelay=2 setenv bootcmd 'ext4load mmc ${bootmmc} ${bootkaddr} Image; ext4load mmc ${bootmmc} ${bootdaddr} ${dtbfile}; booti ${bootkaddr} - ${bootdaddr}'
-
Save Uboot environment (optional):
If you want you can save environment in NV flash:
saveenv
-
-
Boot the board
At uboot prompt, type:
run bootcmd
Alternatively, simply reset the board.
NOTE: default credentials of images are login
root
, passwordroot
.
Wait and keep calm, it is booting!
Connect to the board over SSH
It needs ethernet cable plugged into the board, and getting the ip.
- User: root
- Password: root
Getting the ip on target
# on board
ip a
On your computer:
# on computer
ssh root@<ip_found>
Qemu
Optionally the gen3 image can be booted with qemu. In this case, u-boot is not used to load the kernel and no graphics
and specific hardware will be available. It is like the aarch64 generic qemu boot explained here : here.
You must at least do the prerequisites step here.
Extract the kernel for the image
Use virt-copy-out
to extract kernel of the downloaded image after extracting the img file. Example :
$ sudo virt-copy-out -a Redpesk-OS.img /boot/Image .
download: /boot/Image -> ./Image
Launch the Qemu
IMAGE_NAME="Redpesk-OS.img"
KERNEL_IMAGE="Image"
PORT_SSH=3333
qemu-system-aarch64 \
-hda $IMAGE_NAME \
-kernel $KERNEL_IMAGE \
-machine accel=tcg,type=virt \
-m 2048 \
-cpu cortex-a57 \
-smp 4 \
-append 'console=ttyAMA0,115200 root=/dev/vda4 security=smack' \
-net nic -net user,hostfwd=tcp::$PORT_SSH-:22 \
-display none \
-nographic \
-snapshot
Wait! It is booting…
NOTE: Default root password is
root
.
Installing a package
See this section for installing and starting helloworld-binding: Application deployment