Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Dependencies for sdcard flashing.

Bootloader:

Bananapi r4 follows a atf (arm-trusted firmware) flow for device bootup, by default flash memory is present in the device which will be loaded with BL1  and BL1 will be having bl2 address to load bl2 and make device up.

Device bootup flow as mentioned

...

below.

draw.io Diagram
bordertrue
diagramNameBPIR4_Bootup_flow
simpleViewerfalse
width
linksauto
tbstyletop
lboxtrue
diagramWidth121
height311
revision1

a)BL1: Bootloader one which will be part of flash memory of bpir4 , it will be holding address for bl2.
b)BL2: Bootloader two need to be generated and loaded in a specified sector so that bl1 can load bl2. 
c)fip: Firmware image Package which contains firmware components eg bl31.
d)Kernel: Layer which will be acting between hardware and OS.
e)RDKB : RDKB stack or RDKB OS for user interaction.

"Kernel and rdkb rootfs will be generated as part BPIR4 build instructions"

Generate ATF files.

Used below mentioned git repo for generating bl2.img and fip.bin file.
1) https://github.com/frank-w/u-boot/tree/2024-04-bpi → for generating uboot.bin files .
2) https://github.com/frank-w/u-boot/tree/mtk-atf → for generating atf flow bootloader files (bl2.img and fip.bin)

At initial cloned mentioned git code "https://github.com/frank-w/u-boot/tree/2024-04-bpi" , and made below mentioned changes in u-boot env file to make boot-loader compatible in  loading kernel and rdkb os at initial boot-up itself.

...

After making changes just executed executed build.sh script file. After complete execution of this script file, we can see u-boot.* files will be generated in specific folder.

...

heam@Dell-OptiPlex-9020:~/bootloader/atf/u-boot/build/mt7988/release$ ls
bl2  bl2.bin  bl2.img  bl31  bl31.bin  fdts  fip.bin  lib  libc  libfdt  libwrapper  romlib

Build instructions for SD image for BPIR4.

Generated bl2.img and fip.bin files need to be include in meta-cmf-bananapi layer.

Code Block
collapse
themeRDark
titleBPIR4 build instructios for generating sdcard image.true
repo init -u https://code.rdkcentral.com/r/manifests -b kirkstone -m rdkb-bpi-extsrc.xml
repo sync -j `nproc` --no-clone-bundle --no-tags
MACHINE=bananapi4-rdk-broadband BPI_IMG_TYPE=sdmmc source meta-cmf-bananapi/setup-environment-refboard-rdkb
bitbake rdk-generic-broadband-image

Image generating steps for BPIR4.

After completion of build go to deploy folder and execute "bpir4_sd_image_creater.sh"  script file, to generate final sdcard image.

Script file expansion.

Script content used for final image generation
Code Block
themeRDark
titleImage Generator script info
collapsetrue
#!/bin/bash
board="bpi-r4"
device="sdmmc"
OS="rdk-broadband-image"
IMGDIR=.
IMGNAME=${board}_${device}_${OS}     --> Image name format
LDEV=`sudo losetup -f`               --> Command to find available loob device in pc.
REALSIZE=7456                        
echo "create $IMGNAME.img"
dd if=/dev/zero of=$IMGDIR/$IMGNAME.img bs=1M count=$REALSIZE 1> /dev/null 2>&1
LDEV=`sudo losetup -f`
DEV=`echo $LDEV | cut -d "/" -f 3`     #mount image to loop device
echo "run losetup to assign image $IMGNAME.img to loopdev $LDEV ($DEV)"
sudo losetup $LDEV $IMGDIR/$IMGNAME.img 1> /dev/null #2>&1

bootstart=17408
bootsize=100
rootsize=6600
bootend=$(( ${bootstart}+(${bootsize}*1024*2)-1 ))
rootstart=$(( ${bootend}+1 ))
rootend=$(( ${rootstart} + (${rootsize}*1024*2) ))
sudo sgdisk -o ${LDEV}
sudo sgdisk -a 1 -n 1:34:8191 -A 1:set:2 -t 1:8300 -c 1:"bl2"           ${LDEV}           
sudo sgdisk -a 1 -n 2:13312:17407 -A 2:set:63   -t 2:8300 -c 2:"fip"            ${LDEV}
sudo sgdisk -a 1024 -n 3:17408:${bootend}       -t 3:8300 -c 3:"boot"           ${LDEV}
sudo sgdisk -a 1024 -n 4:${rootstart}:${rootend} -t 4:8300 -c 4:"rootfs"        ${LDEV}

sudo losetup -d $LDEV
sudo losetup -P $LDEV $IMGDIR/$IMGNAME.img 1> /dev/null #2>&1
sudo dd if=atf/bpi-r4_sdmmc_bl2.img of=${LDEV}p1 conv=notrunc,fsync #1> /dev/null 2>&1
sudo dd if=atf/bpi-r4_sdmmc_fip.bin of=${LDEV}p2 conv=notrunc,fsync #1> /dev/null 2>&1
sudo mkfs.vfat "${LDEV}p3" -n BPI-BOOT #1> /dev/null 2>&1
sudo mkfs.ext4 -O ^metadata_csum,^64bit "${LDEV}p4" -L BPI-ROOT #1> /dev/null 2>&1
sudo mount "${LDEV}p3" /mnt/
sudo cp fitImage /mnt/
sudo cp mt7988a-bananapi-bpi-r4-sd.dtb /mnt/
sudo umount "${LDEV}p3"
sudo dd if=rdk-generic-broadband-image-bananapi4-rdk-broadband.ext4 of=${LDEV}p4
sudo losetup -d $LDEV
echo "packing image..."
gzip $IMGDIR/$IMGNAME.img

Info regarding script execution

Code Block
themeEclipse
titleScript execution creating sdcard image.
collapsetrue
bananapi4-rdk-broadband$ ./bpir4_sd_image_creater.sh
create bpi-r4_sdmmc_rdk-broadband-image.img
run losetup to assign image bpi-r4_sdmmc_rdk-broadband-image.img to loopdev /dev/loop24 (loop24)
Creating new GPT entries in memory.
Warning: The kernel is still using the old partition table.
The new table will be used at the next reboot or after you
run partprobe(8) or kpartx(8)
The operation has completed successfully.
Setting name!
partNum is 0
Warning: The kernel is still using the old partition table.
The new table will be used at the next reboot or after you
run partprobe(8) or kpartx(8)
The operation has completed successfully.
Setting name!
partNum is 1
Warning: The kernel is still using the old partition table.
The new table will be used at the next reboot or after you
run partprobe(8) or kpartx(8)
The operation has completed successfully.
Setting name!
partNum is 2
Warning: The kernel is still using the old partition table.
The new table will be used at the next reboot or after you
run partprobe(8) or kpartx(8)
The operation has completed successfully.
Setting name!
partNum is 3
Warning: The kernel is still using the old partition table.
The new table will be used at the next reboot or after you
run partprobe(8) or kpartx(8)
The operation has completed successfully.
480+1 records in
480+1 records out
246069 bytes (246 kB, 240 KiB) copied, 0.165271 s, 1.5 MB/s
562+1 records in
562+1 records out
288153 bytes (288 kB, 281 KiB) copied, 0.0626902 s, 4.6 MB/s
mkfs.fat 4.2 (2021-01-31)
mke2fs 1.46.5 (30-Dec-2021)
Discarding device blocks: done                            
Creating filesystem with 1689600 4k blocks and 422656 inodes
Filesystem UUID: 2ec68480-e1a2-4c40-aadb-b739a3edf4af
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done 

539116+0 records in
539116+0 records out
276027392 bytes (276 MB, 263 MiB) copied, 2.14511 s, 129 MB/s
packing image...
heam@Dell-OptiPlex-9020:~/Downloads/BPIR4_latest_23_oct/bananapi4-rdk-broadband$ ls
atf
bpir4_sd_image_creater.sh
bpi-r4_sdmmc_rdk-broadband-image.img.gz
fitImage
fitImage-1-5.4.271+git0+feeb59687b_3fec063b05-r0-bananapi4-rdk-broadband-20241023065547.bin
fitImage-bananapi4-rdk-broadband.bin
fitImage-its-1-5.4.271+git0+feeb59687b_3fec063b05-r0-bananapi4-rdk-broadband-20241023065547.its
fitImage-its-bananapi4-rdk-broadband
fitImage-linux.bin-1-5.4.271+git0+feeb59687b_3fec063b05-r0-bananapi4-rdk-broadband-20241023065547.bin
fitImage-linux.bin-bananapi4-rdk-broadband
hash-summary
modules-1-5.4.271+git0+feeb59687b_3fec063b05-r0-bananapi4-rdk-broadband-20241023065547.tgz
modules-bananapi4-rdk-broadband.tgz
mt7988a-bananapi-bpi-r4-sd-1-5.4.271+git0+feeb59687b_3fec063b05-r0-bananapi4-rdk-broadband-20241023065547.dtb
mt7988a-bananapi-bpi-r4-sd-bananapi4-rdk-broadband.dtb
mt7988a-bananapi-bpi-r4-sd.dtb
rdkb-generic-broadband-image_rdk-next_20241023114221.bin.ext4
rdkb-generic-broadband-image_rdk-next_20241023114221.bin.manifest
rdkb-generic-broadband-image_rdk-next_20241023114221.bin.squashfs-xz
rdkb-generic-broadband-image_rdk-next_20241023114221.testdata.json
rdk-generic-broadband-image-bananapi4-rdk-broadband.ext4
rdk-generic-broadband-image-bananapi4-rdk-broadband.manifest
rdk-generic-broadband-image-bananapi4-rdk-broadband.squashfs-xz
rdk-generic-broadband-image-bananapi4-rdk-broadband-sysupgrade.bin
rdk-generic-broadband-image-bananapi4-rdk-broadband.testdata.json
heam@Dell-OptiPlex-9020:~/Downloads/BPIR4_latest_23_oct/bananapi4-rdk-broadband$ 

...

Image can be flashed to sdcard using dd command or balenaEtcher.

Flashing steps.

1)Image generated after execution of script "bpi-r4_sdmmc_rdk-broadband-image.img.gz"can be flashed directly to sdcard using dd command or balenaEtcher.
2)For 2nd time flashing you can follow below mentioned flashing instructions instead if executing script,but use existing sdcard only.

...