Step 6 : Boot the OS

  • In this program, you are going to learn

  • How to ?

Topics in this section,

  • Disconnect the micro SD Card reader from Linux Desktop machine.

  • Insert SD Card to the RPI Board

  • Then, use serial usb cable to connect the RPI board and Linux Desktop machine.

  • After connecting, check whether /dev/ttyUSB0 created or not.

$ ls /dev/ttyUSB0
  • Run minicom to access RPI board using following command:

$ sudo minicom -s
  • Once the above minicom command is given, below configuration options will be displayed:

    Diagram
  • Scroll down to “Serial port setup” and press “Enter”:

    Diagram
  • Inside “Serial port setup”, the option “Serial Device” should be set as shown below:

    Diagram
  • Now come back to [configuration] option, scroll down and select “Save setup as dfl”:

    Diagram
  • Finally select “Exit” from the main configuration as shown below:

    Diagram
  • Power on RPI board, and you would see the following prints:

Welcome to minicom 2.8

OPTIONS: I18n
Port /dev/ttyUSB0, 19:57:47

Press CTRL-A Z for help on special keys


Read start4.elf bytes  2257024 hnd 0x00000064
Missing/empty 'fixup4.dat' continuing
Firmware: fef7849c350cb250be836afc6d43c742f9ebc97a May  3 2024 19:32:18
0x00c03114 0x00000000 0x00001fff
MEM GPU: 76 ARM: 948 TOTAL: 1024
Starting start4.elf @ 0xcec00200 partition 0
PCI reset
+

MESS:00:00:04.025365:0: arasan: arasan_emmc_open
MESS:00:00:04.027022:0: arasan: arasan_emmc_set_clock C0: 0x00800000 C1: 0x000e0047 emmc: 200000000 actual: 390625 div: 0x00000100 target: 400000 min: 400000 max: 400000 delay: 5
MESS:00:00:04.147244:0: arasan: arasan_emmc_set_clock C0: 0x00800000 C1: 0x000e0047 emmc: 200000000 actual: 390625 div: 0x00000100 target: 400000 min: 400000 max: 400000 delay: 5
MESS:00:00:04.160114:0: arasan: arasan_emmc_set_clock C0: 0x00800f00 C1: 0x000e0047 emmc: 200000000 actual: 390625 div: 0x00000100 target: 400000 min: 390000 max: 400000 delay: 5
MESS:00:00:04.200706:0: arasan: arasan_emmc_set_clock C0: 0x00800f02 C1: 0x000e0407 emmc: 200000000 actual: 25000000 div: 0x00000004 target: 25000000 min: 0 max: 25000000 delay: 1
MESS:00:00:04.215981:0: brfs: File read: /mfs/sd/config.txt
MESS:00:00:04.219118:0: brfs: File read: 60 bytes
MESS:00:00:04.244785:0: HDMI0:EDID error reading EDID block 0 attempt 0
MESS:00:00:04.249293:0: HDMI0:EDID giving up on reading EDID block 0
MESS:00:00:04.266231:0: HDMI1:EDID error reading EDID block 0 attempt 0
MESS:00:00:04.270731:0: HDMI1:EDID giving up on reading EDID block 0
MESS:00:00:04.276369:0: brfs: File read: /mfs/sd/config.txt
MESS:00:00:04.810922:0: gpioman: gpioman_get_pin_num: pin DISPLAY_DSI_PORT not defined
MESS:00:00:04.817884:0: *** Restart logging
MESS:00:00:04.819640:0: brfs: File read: 60 bytes
MESS:00:00:04.829216:0: hdmi: HDMI0:EDID error reading EDID block 0 attempt 0
MESS:00:00:04.834238:0: hdmi: HDMI0:EDID giving up on reading EDID block 0
MESS:00:00:04.844862:0: hdmi: HDMI0:EDID error reading EDID block 0 attempt 0
MESS:00:00:04.849891:0: hdmi: HDMI0:EDID giving up on reading EDID block 0
MESS:00:00:04.855490:0: hdmi: HDMI:hdmi_get_state is deprecated, use hdmi_get_display_state instead
MESS:00:00:04.869280:0: hdmi: HDMI1:EDID error reading EDID block 0 attempt 0
MESS:00:00:04.874310:0: hdmi: HDMI1:EDID giving up on reading EDID block 0
MESS:00:00:04.884932:0: hdmi: HDMI1:EDID error reading EDID block 0 attempt 0
MESS:00:00:04.889952:0: hdmi: HDMI1:EDID giving up on reading EDID block 0
MESS:00:00:04.895551:0: hdmi: HDMI:hdmi_get_state is deprecated, use hdmi_get_display_state instead
MESS:00:00:04.904315:0: HDMI0: hdmi_pixel_encoding: 300000000
MESS:00:00:04.909783:0: HDMI1: hdmi_pixel_encoding: 300000000
MESS:00:00:04.925108:0: dtb_file 'bcm2711-rpi-4-b.dtb'
MESS:00:00:04.937573:0: brfs: File read: /mfs/sd/bcm2711-rpi-4-b.dtb
MESS:00:00:04.940816:0: Loaded 'bcm2711-rpi-4-b.dtb' to 0x100 size 0xd9f4
MESS:00:00:04.961040:0: brfs: File read: 55796 bytes
MESS:00:00:04.982593:0: brfs: File read: /mfs/sd/config.txt
MESS:00:00:04.998377:0: brfs: File read: 60 bytes
MESS:00:00:05.000054:0: Failed to open command line file 'cmdline.txt'
MESS:00:00:05.518838:0: brfs: File read: /mfs/sd/u-boot.bin
MESS:00:00:05.521309:0: Loaded 'u-boot.bin' to 0x200000 size 0x9e958
MESS:00:00:05.528060:0: Kernel relocated to 0x80000
MESS:00:00:05.531980:0: Device tree loaded to 0x7fe2100 (size 0xde62)
MESS:00:00:05.540281:0: uart: Set PL011 baud rate to 103448.300000 Hz
MESS:00:00:05.547222:0: uart: Baud rate change done...
MESS:00:00:05.549241:0:

U-Boot 2024.07-rc2-00066-g5c5565cfec-dirty (May 08 2024 - 15:46:45 +0530)

DRAM:  128 MiB (effective 3.1 GiB)
RPI 4 Model B (0xc03114)
Core:  212 devices, 16 uclasses, devicetree: board
MMC:   mmcnr@7e300000: 1, mmc@7e340000: 0
Loading Environment from FAT... Unable to read "uboot.env" from mmc0:1...
In:    serial,usbkbd
Out:   serial,vidconsole
Err:   serial,vidconsole
Net:   eth0: ethernet@7d580000

PCIe BRCM: link up, 5.0 Gbps x1 (SSC)
starting USB...
Bus xhci_pci: Register 5000420 NbrPorts 5
Starting the controller
USB XHCI 1.00
scanning bus xhci_pci for devices... 2 USB Device(s) found
scanning usb for storage devices... 0 Storage Device(s) found
Hit any key to stop autoboot:  0
Card did not respond to voltage select! : -110
No EFI system partition
No EFI system partition
Failed to persist EFI variables
No EFI system partition
Failed to persist EFI variables
No EFI system partition
Failed to persist EFI variables
** Booting bootflow '<NULL>' with efi_mgr
Loading Boot0000 'mmc 0' failed
EFI boot manager: Cannot load any image
Boot failed (err=-14)
Card did not respond to voltage select! : -110
ethernet@7d580000 Waiting for PHY auto negotiation to complete......... TIMEOUT !
bcmgenet: PHY startup failed: -110
ethernet@7d580000 Waiting for PHY auto negotiation to complete......... TIMEOUT !
bcmgenet: PHY startup failed: -110
U-Boot>
U-Boot>
U-Boot>
  • Print the u-boot environment

u-boot > printenv
arch=arm
baudrate=115200
board=rpi
board_name=4 Model B
board_rev=0x11
board_rev_scheme=1
board_revision=0xC03114
boot_targets=mmc usb pxe dhcp
bootcmd=bootflow scan
bootdelay=2
cpu=armv8
dfu_alt_info=u-boot.bin fat 0 1;uboot.env fat 0 1; config.txt fat 0 1;Image fat 0 1
dhcpuboot=usb start; dhcp u-boot.uimg; bootm
ethact=ethernet@7d580000
ethaddr=e4:5f:01:3c:f4:4f
fdt_addr=7fe2100
fdt_addr_r=0x02600000
fdt_high=ffffffffffffffff
fdtcontroladdr=7b14ee0
fdtfile=broadcom/bcm2711-rpi-4-b.dtb
initrd_high=ffffffffffffffff
kernel_addr_r=0x00080000
loadaddr=0x1000000
preboot=pci enum; usb start;
pxefile_addr_r=0x02500000
ramdisk_addr_r=0x02700000
scriptaddr=0x02400000
serial#=100000000f75b945
soc=bcm283x
stderr=serial,vidconsole
stdin=serial,usbkbd
stdout=serial,vidconsole
usb_ignorelist=0x1050:'*',
usbethaddr=e4:5f:01:3c:f4:4f
vendor=raspberrypi

Environment size: 850/16380 bytes
  • Load the OS/Application image from SD Card, using the below commands.

u-boot> setenv autostart yes
u-boot> dcache off
u-boot> fatload mmc 0:1 0x1000000 freertos.elf
u-boot> dcache flush
u-boot> bootelf 0x1000000
  • Code flow is as below

do_bootelf                      ---> Source code in "u-boot"
        entry == _bootd
                _boot           ---> Source code in "uart"
                        main
  • Output is as shown below,

****************************

    FreeRTOS UART Sample
  (This sample uses UART2)

****************************

What is /.bashrc file?