This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[FAQ] AM625: How to boot from R5 U-Boot SPL directly into the Linux Kernel, skipping A53 SPL and A53 U-Boot (Falcon Mode)

Part Number: AM625

(also applicable to other AM62x, AM62Ax, AM64x, AM65x parts with minor changes)

Overview

In order to optimize boot time, complexity, and storage space requirements it may be desirable to optimize the usual TI AM6x based boot flow of AM6x ROM -> R5 SPL -> A53 SPL -> A53 U-Boot -> Linux Kernel to a much shorter and simplified flow of AM6x ROM -> R5 SPL -> Linux Kernel, essentially skipping the A53 SPL and A53 U-Boot stages. The SPL loading of the Linux Kernel is commonly known as "Falcon Boot" in U-Boot. The solution provided here comprises a short technical discussion and an accompanying set of patches that can be applied to the current AM62x SDK U-Boot tree of the Processor SDK Linux v8.6. The associated ti-u-boot-2021.01 Git tag is 08.06.00.007.

The following boot modes are supported for Falcon boot on AM62x by the solution provided here:

  1. MMC/SD Boot (via am62x_evm_r5_defconfig)
  2. Ethernet boot (via am62x_evm_r5_ethboot_defconfig)
  3. USB DFU boot (via am62x_evm_r5_usbdfu_defconfig)

Note that by giving up the U-Boot components running on the A53 core you will loose access to a number of value-added features U-Boot usually provides, including but not limited to U-Boot's ability to customize the device tree on the fly (to account for board memory sizes, Ethernet MAC addresses, and to apply any potential overlay objects), the ability to pass in a custom Kernel command line (bootargs), the ability to specify the location of boot artifacts in memory, amongst other things. All those items can also be addressed in some other way during "Falcon Mode" boot but are more challenging to do so.

ExclamationNote: The solution here is considered an advanced topic. It is not recommended to be pursued unless you have a strong justification to get the optimized boot flow implemented. It requires familiarity with the AM6x boot architecture and U-Boot internals and manual build flows. If in doubt, stick to the official TI-supported method of using all 3-stages of U-Boot (R5 SPL, A53 SPL, and A53 U-Boot) as per Processor SDK documentation.

Also while the approach discussed and demonstrated here was developed on and is intended for use on AM62x devices, it similarly applies to other AM6x device variants such as AM62Ax, AM64x, and AM65x, and should be easily portable. Support for boot modes other than the ones explicitly advertised and tested as part of this solution should also be straightforward to add.

Technical Deep Dive

The basic operating principle is instead of having the ARM Trusted Firmware-A (ATF) bring up A53 SPL after loading the combined second stage boot image to directly bring up the Linux Kernel. Note that this is not exactly a traditional U-Boot "Falcon Boot" but instead ATF is initializing and bringing up the Kernel. This means the Kernel need to be located at the address expected by ATF, and since there is no parameter passing from U-Boot to the Kernel the device tree blob (DTB) also needs to be located at the exact address ATF is expecting (luckily ATF is nice enough for us to setup the associated x0 argument register). Note that this scheme does not allow passing a ramdisk address to the Kernel to boot from, so the simplest path forward is to directly include a basic initramfs image into the Kernel itself through its CONFIG_INITRAMFS_SOURCE option, in essence creating a single monolithic image. Refer to E2E FAQ https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1176944/faq-linux-how-to-boot-sitara-am3x-am4x-am6x-devices-from-initramfs-cpio-archive-ram-disk for a detailed discussion on how to build a Linux Kernel image with an included initramfs that is readily bootable.

If you don't want to build the initramfs into the Kernel itself for example to avoid re-building the Kernel for every change you can also include the initramfs image directly into the generated atf-tee-dm-kernel-fdt.bin combined image (see later) as an additional artifact by updating the associated generator script accordingly (tools/k3_fit_atf_tee_dm_kernel_fdt.sh), and then also update the Kernel device tree blob that is used for booting to include the address and size of the initramfs image using the linux,initrd-start and linux,initrd-end properties that will need to get added to the chosen node in the device tree blob. For additional guidance on this see the script included in the ARM Trusted Firmware-A firmware documentation on how this can be achieved in an automated fashion: https://github.com/ARM-software/arm-trusted-firmware/blob/master/docs/plat/arm/fvp/index.rst#booting-a-preloaded-kernel-image-base-fvp  Another way to accomplish the same is to update the Kernel device tree blob bootargs property that is part of the chosen node, and including the initrd specification there in the form of initrd=0xADDR,0xSIZE. A similar approach of updating the bootargs property can also be used for booting the system's rootfs from other boot media such as from an MMC/SD ext4 partition by including the appropriate Kernel command line root= (and related) parameter(s) for the desired media holding the rootfs.

To allow for this updated sequence the following is done by the "ti: k3: am62x_evm: Enable/demo R5 SPL to Linux Kernel boot" patch provided attached to this FAQ:

  1. Relocate the standard second boot stage load address away from the location the Kernel DTB expected to be
  2. Relocate the R5 SPL post-relocation (DDR) stack away from the location the Kernel is expected to be, maximizing available space for the combined Kernel + initramfs image
  3. Relocate the U-Boot SPL "base" address that is used during FIT processing for example away from the location the Kernel is expected to be
  4. Providing a script to allow creating a suitable its (Image Tree Source) file for a combined image that includes all of ATF, OPTEE, DM Firmare, Linux Kernel, and Linux Kernel DTB that can be loaded by the R5 SPL with a suitable boot mode.

With the patch applied to the U-Boot source tree, the AM62x DDR layout during R5 SPL execution looks as follows:

    0xa0000000 +---------------------------------+ End of DDR (512MB)
               :                                 :
               |             OPTEE               |
    0x9e800000 +---------------------------------+ BL32_BASE in ATF
               :                                 :
               |      ARM Trusted FW (ATF)       |
    0x9e780000 +---------------------------------+ CONFIG_K3_ATF_LOAD_ADDR
               :                                 :
               |       Device Manager (DM)       |
    0x89000000 +---------------------------------+ CONFIG_SPL_STACK_R_ADDR
               |       R5 U-Boot SPL Stack       |
               |                                 |
       80MB    :                                 :
               |    atf-tee-dm-kernel-fdt.bin    |
               |     Initial Download Region     |
    0x84000000 +---------------------------------+ CONFIG_SPL_LOAD_FIT_ADDRESS,
               |                                 | CONFIG_SYS_LOAD_ADDR
       16MB    :                                 :
               |    atf-tee-dm-kernel-fdt.bin    |
               |  Copy Region (less loadables)   |
    0x83000000 +---------------------------------+ CONFIG_SYS_TEXT_BASE
               :                                 :
       16MB    |                                 |
               |          Kernel DTB             |
    0x82000000 +---------------------------------+ K3_HW_CONFIG_BASE in ATF
               |                                 |
               :                                 :
      ~32MB    |                                 |
               |   Combined Kernel + initramfs   |
               |            Image                |
    0x80080000 +---------------------------------+ PRELOADED_BL33_BASE in ATF
               |                                 |
    0x80000000 +---------------------------------+ Start of DDR

Due to constraints of the Kernel load/start address and Kernel DTB address being hard-coded in ATF the combined Linux Kernel + initramfs image must be smaller than ~32MB. This limit can be increased by updating ATF accordingly, while carefully considering the overall R5 SPL memory map during runtime, or by using an initramfs that is separate from the Kernel, located at a different place in DDR (see earlier discussion of how to pass the initramfs image address and location to the Kernel via device tree blob update).

In order to create a suitable combined image for loading via R5 SPL, use a command sequence like this:

# Create an Image Tree Source file (*.its) describing the combined image
$ ATF=<path>/bl31.bin TEE=<path>/bl32.bin DM=<path>/ipc_echo_testb_mcu1_0_release_strip.xer5f tools/k3_fit_atf_tee_dm_kernel_fdt.sh <path>/Image-am62xx-evm.bin <path>/k3-am625-sk.dtb > atf-tee-dm-kernel-fdt.its

# Create the actual combined image as an Image Tree Blob
$ mkimage -E -f atf-tee-dm-kernel-fdt.its atf-tee-dm-kernel-fdt.bin


The combined image file atf-tee-dm-kernel-fdt.bin generated this way together with the usual tiboot3.bin R5 SPL image are the only two artifacts needed to boot an initramfs-based Linux system all the way to prompt. There is no need to build A53 SPL / U-Boot as part of the overall project build, as those are not needed.

Example of Setting up and Booting the AM62-SK from SD Card using Falcon Mode

First, apply the provided patches to the U-Boot tree as shown below. Note that only the first patch is required, the other patches are optional (use as needed).

# Main patch containing all of the "Falcon Mode" boot solution
$ git am 0001-ti-k3-am62x_evm-Enable-demo-R5-SPL-to-Linux-Kernel-b.patch

# Optional patch for cleaner execution
$ git am 0002-am62x_evm-Disable-storing-of-U-Boot-Environment-on-M.patch

# Optional patch to fix an issue with USB DFU boot in SDK v08.06
$ git am 0003-Revert-configs-am62xx_evm-Drop-EXTRA_ENV_DFUARGS-for.patch

Then, build the tiboot3.bin initial boot binary (and only that artifact) as per SDK documentation instructions, see Build U-Boot.

Next, compile and assemble a suitable Kernel image that contains a built-in bootable initramfs as well as a device tree blob and gather the other firmware artifacts needed to boot an AM62x device (ATF, OPTEE, and DM firmwares). Once you have those go ahead and generate an Image Tree Source file (*.its) using the provided tools/k3_fit_atf_tee_dm_kernel_fdt.sh generator script. The steps and results should look similar to the below:

$ PREBUILD_IMAGES=~/ti/ti-processor-sdk-linux-am62xx-evm-08.06.00.42/board-support/prebuilt-images KERNEL_IMAGES=~/git/linux/arch/arm64/boot && \
ATF=$PREBUILD_IMAGES/bl31.bin TEE=$PREBUILD_IMAGES/bl32.bin DM=$PREBUILD_IMAGES/ipc_echo_testb_mcu1_0_release_strip.xer5f tools/k3_fit_atf_tee_dm_kernel_fdt.sh $KERNEL_IMAGES/Image $KERNEL_IMAGES/dts/ti/k3-am625-sk.dtb > atf-tee-dm-kernel-fdt.its

$ cat atf-tee-dm-kernel-fdt.its
/dts-v1/;

/ {
        description = "Configuration to load ATF and SPL";
        #address-cells = <1>;

        images {
                atf {
                        description = "ARM Trusted Firmware";
                        data = /incbin/("/home/a0797059/ti/ti-processor-sdk-linux-am62xx-evm-08.06.00.42/board-support/prebuilt-images/bl31.bin");
                        type = "firmware";
                        arch = "arm64";
                        compression = "none";
                        os = "arm-trusted-firmware";
                        load = <0x9e780000>;            /* This load/entry address pair is for use with AM62x */
                        entry = <0x9e780000>;
                };
                tee {
                        description = "OPTEE";
                        data = /incbin/("/home/a0797059/ti/ti-processor-sdk-linux-am62xx-evm-08.06.00.42/board-support/prebuilt-images/bl32.bin");
                        type = "tee";
                        arch = "arm64";
                        compression = "none";
                        os = "tee";
                        load = <0x9e800000>;            /* Needs to match BL32_BASE in ATF */
                        entry = <0x9e800000>;
                };
                dm {
                        description = "DM binary";
                        data = /incbin/("/home/a0797059/ti/ti-processor-sdk-linux-am62xx-evm-08.06.00.42/board-support/prebuilt-images/ipc_echo_testb_mcu1_0_release_strip.xer5f");
                        type = "firmware";
                        arch = "arm32";
                        compression = "none";
                        os = "DM";
                        load = <0x89000000>;
                        entry = <0x89000000>;
                };
                kernel {
                        description = "Linux Kernel (64-bit)";
                        data = /incbin/("/home/a0797059/git/linux/arch/arm64/boot/Image");
                        type = "standalone";
                        os = "linux";
                        arch = "arm64";
                        compression = "none";
                        load = <0x80080000>;            /* Needs to match PRELOADED_BL33_BASE in ATF */
                        entry = <0x80080000>;
                };
                fdt {
                        description = "k3-am625-sk";
                        data = /incbin/("/home/a0797059/git/linux/arch/arm64/boot/dts/ti/k3-am625-sk.dtb");
                        type = "flat_dt";
                        arch = "arm";
                        compression = "none";
                        load = <0x82000000>;            /* Needs to match K3_HW_CONFIG_BASE in ATF */
                };
        };
        configurations {
                default = "k3-am625-sk";

                k3-am625-sk {
                        description = "k3-am625-sk";
                        firmware = "atf";
                        loadables = "tee", "dm", "kernel", "fdt";
                };
        };
};

Now it's time to generate the Image Tree Blob that with everything in it, ready to get loaded and booted by R5 SPL. Also here the steps and results should look similar to the below:

$ mkimage -E -f atf-tee-dm-kernel-fdt.its atf-tee-dm-kernel-fdt.bin
FIT description: Configuration to load ATF and SPL
Created:         Mon Mar 13 14:41:04 2023
 Image 0 (atf)
  Description:  ARM Trusted Firmware
  Created:      Mon Mar 13 14:41:04 2023
  Type:         Firmware
  Compression:  uncompressed
  Data Size:    45801 Bytes = 44.73 KiB = 0.04 MiB
  Architecture: AArch64
  OS:           ARM Trusted Firmware
  Load Address: 0x9e780000
 Image 1 (tee)
  Description:  OPTEE
  Created:      Mon Mar 13 14:41:04 2023
  Type:         Trusted Execution Environment Image
  Compression:  uncompressed
  Data Size:    421601 Bytes = 411.72 KiB = 0.40 MiB
 Image 2 (dm)
  Description:  DM binary
  Created:      Mon Mar 13 14:41:04 2023
  Type:         Firmware
  Compression:  uncompressed
  Data Size:    154169 Bytes = 150.56 KiB = 0.15 MiB
  Architecture: Unknown Architecture
  OS:           Unknown OS
  Load Address: 0x89000000
 Image 3 (kernel)
  Description:  Linux Kernel (64-bit)
  Created:      Mon Mar 13 14:41:04 2023
  Type:         Standalone Program
  Compression:  uncompressed
  Data Size:    22028800 Bytes = 21512.50 KiB = 21.01 MiB
  Architecture: AArch64
  Load Address: 0x80080000
  Entry Point:  0x80080000
 Image 4 (fdt)
  Description:  k3-am625-sk
  Created:      Mon Mar 13 14:41:04 2023
  Type:         Flat Device Tree
  Compression:  uncompressed
  Data Size:    55750 Bytes = 54.44 KiB = 0.05 MiB
  Architecture: ARM
  Load Address: 0x82000000
 Default Configuration: 'k3-am625-sk'
 Configuration 0 (k3-am625-sk)
  Description:  k3-am625-sk
  Kernel:       unavailable
  Firmware:     atf
  Loadables:    tee
                dm
                kernel
                fdt
$ ll atf-tee-dm-kernel-fdt.bin
-rw-rw-r-- 1 a0797059 a0797059 22707468 Mar 13 14:41 atf-tee-dm-kernel-fdt.bin

Once this is done copy the two artifacts needed for the complete Linux boot to the boot partition of your SD card, similar like this:

$ cp -v {tiboot3.bin,atf-tee-dm-kernel-fdt.bin} /media/a0797059/boot1/ && sync
'.out_r5/tiboot3.bin' -> '/media/a0797059/boot1/tiboot3.bin'
'atf-tee-dm-kernel-fdt.bin' -> '/media/a0797059/boot1/atf-tee-dm-kernel-fdt.bin'

Then, inserting the SD card into an AM62-SK board and powering up the board should result in the below boot sequence. Note the direct transition/handover from R5 SPL into ATF into the Linux Kernel.

ExclamationNote: The messages "Warning: Detected image signing certificate on GP device. Skipping certificate to prevent boot failure. This will fail if the image was also encrypted" in the boot log result from running/booting AM62x SDK v08.06 artifacts on a General Purpose (GP) AM62x device variant and can be ignored. This is due to the default target of this SDK version being switched to High Security (HS-FS) device variants. See the AM62x SDK v8.6 GP to HS-FS Migration Guide for more background on this.

U-Boot SPL 2021.01-00001-gc5c0743865 (Mar 13 2023 - 13:35:54 -0500)
SYSFW ABI: 3.1 (firmware rev 0x0008 '8.6.4--v08.06.04 (Chill Capybar')
SPL initial stack usage: 13424 bytes
Trying to boot from MMC2
Warning: Detected image signing certificate on GP device. Skipping certificate to prevent boot failure. This will fail if the image was also encrypted
Warning: Detected image signing certificate on GP device. Skipping certificate to prevent boot failure. This will fail if the image was also encrypted
Warning: Detected image signing certificate on GP device. Skipping certificate to prevent boot failure. This will fail if the image was also encrypted
Loading Environment from MMC... *** Warning - No MMC card found, using default environment

Starting ATF on ARM64 core...

NOTICE:  BL31: v2.8(release):v2.8-226-g2fcd408bb3-dirty
NOTICE:  BL31: Built : 05:06:58, Feb 24 2023
[    0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034]
[    0.000000] Linux version 5.10.162 (a0797059@dasso) (aarch64-none-linux-gnu-gcc (GNU Toolchain for the A-profile Architecture 9.2-2019.12 (arm-9.10)) 9.2.1 20191025, GNU ld (GNU Toolchain for the A-profile Architecture 9.2-2019.12 (arm-9.10)) 2.33.1.20191209) #1 SMP PREEMPT Mon Mar 13 14:00:25 CDT 2023
[    0.000000] Machine model: Texas Instruments AM625 SK
[    0.000000] earlycon: ns16550a0 at MMIO32 0x0000000002800000 (options '')
[    0.000000] printk: bootconsole [ns16550a0] enabled
[    0.000000] efi: UEFI not found.
[    0.000000] [Firmware Bug]: Kernel image misaligned at boot, please fix your bootloader!
[    0.000000] Reserved memory: created DMA memory pool at 0x000000009c800000, size 3 MiB
[    0.000000] OF: reserved mem: initialized node ipc-memories@9c800000, compatible id shared-dma-pool
[    0.000000] Reserved memory: created DMA memory pool at 0x000000009cb00000, size 1 MiB
[    0.000000] OF: reserved mem: initialized node m4f-dma-memory@9cb00000, compatible id shared-dma-pool
[    0.000000] Reserved memory: created DMA memory pool at 0x000000009cc00000, size 14 MiB
[    0.000000] OF: reserved mem: initialized node m4f-memory@9cc00000, compatible id shared-dma-pool
[    0.000000] Reserved memory: created DMA memory pool at 0x000000009da00000, size 1 MiB
[    0.000000] OF: reserved mem: initialized node r5f-dma-memory@9da00000, compatible id shared-dma-pool
[    0.000000] Reserved memory: created DMA memory pool at 0x000000009db00000, size 12 MiB
[    0.000000] OF: reserved mem: initialized node r5f-memory@9db00000, compatible id shared-dma-pool
[    0.000000] Zone ranges:
[    0.000000]   DMA      [mem 0x0000000080000000-0x00000000ffffffff]
[    0.000000]   DMA32    empty
[    0.000000]   Normal   empty
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000080000000-0x000000009c7fffff]
[    0.000000]   node   0: [mem 0x000000009c800000-0x000000009e6fffff]
[    0.000000]   node   0: [mem 0x000000009e700000-0x000000009e77ffff]
[    0.000000]   node   0: [mem 0x000000009e780000-0x000000009fffffff]
[    0.000000]   node   0: [mem 0x00000000a0000000-0x00000000ffffffff]
[    0.000000] Initmem setup node 0 [mem 0x0000000080000000-0x00000000ffffffff]
[    0.000000] cma: Reserved 512 MiB at 0x00000000dd000000
[    0.000000] psci: probing for conduit method from DT.
[    0.000000] psci: PSCIv1.1 detected in firmware.
[    0.000000] psci: Using standard PSCI v0.2 function IDs
[    0.000000] psci: Trusted OS migration not required
[    0.000000] psci: SMC Calling Convention v1.2
[    0.000000] percpu: Embedded 22 pages/cpu s50392 r8192 d31528 u90112
[    0.000000] Detected VIPT I-cache on CPU0
[    0.000000] CPU features: detected: ARM erratum 845719
[    0.000000] CPU features: detected: GIC system register CPU interface
[    0.000000] CPU features: kernel page table isolation forced ON by KASLR
[    0.000000] CPU features: detected: Kernel page table isolation (KPTI)
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 516096
[    0.000000] Kernel command line: console=ttyS2,115200n8 earlycon=ns16550a,mmio32,0x02800000
[    0.000000] Dentry cache hash table entries: 262144 (order: 9, 2097152 bytes, linear)
[    0.000000] Inode-cache hash table entries: 131072 (order: 8, 1048576 bytes, linear)
[    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
[    0.000000] Memory: 1453016K/2097152K available (11200K kernel code, 1160K rwdata, 4300K rodata, 4736K init, 433K bss, 119848K reserved, 524288K cma-reserved)
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
[    0.000000] rcu: Preemptible hierarchical RCU implementation.
[    0.000000] rcu: 	RCU event tracing is enabled.
[    0.000000] rcu: 	RCU restricting CPUs from NR_CPUS=256 to nr_cpu_ids=4.
[    0.000000] 	Trampoline variant of Tasks RCU enabled.
[    0.000000] 	Tracing variant of Tasks RCU enabled.
[    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies.
[    0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=4
[    0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
[    0.000000] GICv3: GIC: Using split EOI/Deactivate mode
[    0.000000] GICv3: 256 SPIs implemented
[    0.000000] GICv3: 0 Extended SPIs implemented
[    0.000000] GICv3: Distributor has no Range Selector support
[    0.000000] GICv3: 16 PPIs implemented
[    0.000000] GICv3: CPU0: found redistributor 0 region 0:0x0000000001880000
[    0.000000] ITS [mem 0x01820000-0x0182ffff]
[    0.000000] GIC: enabling workaround for ITS: Socionext Synquacer pre-ITS
[    0.000000] ITS@0x0000000001820000: Devices Table too large, reduce ids 20->19
[    0.000000] ITS@0x0000000001820000: allocated 524288 Devices @82400000 (flat, esz 8, psz 64K, shr 0)
[    0.000000] ITS: using cache flushing for cmd queue
[    0.000000] GICv3: using LPI property table @0x0000000081840000
[    0.000000] GIC: using cache flushing for LPI property table
[    0.000000] GICv3: CPU0: using allocated LPI pending table @0x0000000081850000
[    0.000000] arch_timer: cp15 timer(s) running at 200.00MHz (phys).
[    0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x2e2049d3e8, max_idle_ns: 440795210634 ns
[    0.000004] sched_clock: 56 bits at 200MHz, resolution 5ns, wraps every 4398046511102ns
[    0.008533] Console: colour dummy device 80x25
[    0.013127] Calibrating delay loop (skipped), value calculated using timer frequency.. 400.00 BogoMIPS (lpj=800000)
[    0.023808] pid_max: default: 32768 minimum: 301
[    0.028618] LSM: Security Framework initializing
[    0.033406] Mount-cache hash table entries: 4096 (order: 3, 32768 bytes, linear)
[    0.040985] Mountpoint-cache hash table entries: 4096 (order: 3, 32768 bytes, linear)
[    0.050828] rcu: Hierarchical SRCU implementation.
[    0.056011] Platform MSI: msi-controller@1820000 domain created
[    0.062330] PCI/MSI: /bus@f0000/interrupt-controller@1800000/msi-controller@1820000 domain created
[    0.071584] EFI services will not be available.
[    0.076515] smp: Bringing up secondary CPUs ...
[    0.081813] Detected VIPT I-cache on CPU1
[    0.081852] GICv3: CPU1: found redistributor 1 region 0:0x00000000018a0000
[    0.081867] GICv3: CPU1: using allocated LPI pending table @0x0000000081860000
[    0.081932] CPU1: Booted secondary processor 0x0000000001 [0x410fd034]
[    0.082581] Detected VIPT I-cache on CPU2
[    0.082604] GICv3: CPU2: found redistributor 2 region 0:0x00000000018c0000
[    0.082615] GICv3: CPU2: using allocated LPI pending table @0x0000000081870000
[    0.082651] CPU2: Booted secondary processor 0x0000000002 [0x410fd034]
[    0.083259] Detected VIPT I-cache on CPU3
[    0.083280] GICv3: CPU3: found redistributor 3 region 0:0x00000000018e0000
[    0.083290] GICv3: CPU3: using allocated LPI pending table @0x0000000081880000
[    0.083321] CPU3: Booted secondary processor 0x0000000003 [0x410fd034]
[    0.083391] smp: Brought up 1 node, 4 CPUs
[    0.163127] SMP: Total of 4 processors activated.
[    0.167940] CPU features: detected: 32-bit EL0 Support
[    0.173212] CPU features: detected: CRC32 instructions
[    0.185967] CPU: All CPU(s) started at EL2
[    0.190177] alternatives: patching kernel code
[    0.195973] devtmpfs: initialized
[    0.206017] KASLR disabled due to lack of seed
[    0.210774] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
[    0.220751] futex hash table entries: 1024 (order: 4, 65536 bytes, linear)
[    0.242165] pinctrl core: initialized pinctrl subsystem
[    0.248189] DMI not present or invalid.
[    0.252796] NET: Registered protocol family 16
[    0.258992] DMA: preallocated 256 KiB GFP_KERNEL pool for atomic allocations
[    0.266341] DMA: preallocated 256 KiB GFP_KERNEL|GFP_DMA pool for atomic allocations
[    0.274411] DMA: preallocated 256 KiB GFP_KERNEL|GFP_DMA32 pool for atomic allocations
[    0.283129] thermal_sys: Registered thermal governor 'step_wise'
[    0.283135] thermal_sys: Registered thermal governor 'power_allocator'
[    0.289793] hw-breakpoint: found 6 breakpoint and 4 watchpoint registers.
[    0.303519] ASID allocator initialised with 32768 entries
[    0.333761] HugeTLB registered 1.00 GiB page size, pre-allocated 0 pages
[    0.340642] HugeTLB registered 32.0 MiB page size, pre-allocated 0 pages
[    0.347512] HugeTLB registered 2.00 MiB page size, pre-allocated 0 pages
[    0.354365] HugeTLB registered 64.0 KiB page size, pre-allocated 0 pages
[    0.362254] cryptd: max_cpu_qlen set to 1000
[    0.369565] k3-chipinfo 43000014.chipid: Family:AM62X rev:SR1.0 JTAGID[0x0bb7e02f] Detected
[    0.378627] vcc_5v0: supplied by vmain_pd
[    0.383128] vcc_3v3_sys: supplied by vmain_pd
[    0.388023] vcc_1v8: supplied by vcc_3v3_sys
[    0.393412] iommu: Default domain type: Translated 
[    0.398752] SCSI subsystem initialized
[    0.403002] mc: Linux media interface: v0.10
[    0.407390] videodev: Linux video capture interface: v2.00
[    0.413063] pps_core: LinuxPPS API ver. 1 registered
[    0.418138] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[    0.427487] PTP clock support registered
[    0.431525] EDAC MC: Ver: 3.0.0
[    0.435396] omap-mailbox 29000000.mailbox: omap mailbox rev 0x66fc9100
[    0.442560] FPGA manager framework
[    0.446134] Advanced Linux Sound Architecture Driver Initialized.
[    0.453224] clocksource: Switched to clocksource arch_sys_counter
[    0.459688] VFS: Disk quotas dquot_6.6.0
[    0.463753] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
[    0.476122] NET: Registered protocol family 2
[    0.480865] IP idents hash table entries: 32768 (order: 6, 262144 bytes, linear)
[    0.489573] tcp_listen_portaddr_hash hash table entries: 1024 (order: 2, 16384 bytes, linear)
[    0.498350] TCP established hash table entries: 16384 (order: 5, 131072 bytes, linear)
[    0.506560] TCP bind hash table entries: 16384 (order: 6, 262144 bytes, linear)
[    0.514292] TCP: Hash tables configured (established 16384 bind 16384)
[    0.521184] UDP hash table entries: 1024 (order: 3, 32768 bytes, linear)
[    0.528080] UDP-Lite hash table entries: 1024 (order: 3, 32768 bytes, linear)
[    0.535559] NET: Registered protocol family 1
[    0.540503] RPC: Registered named UNIX socket transport module.
[    0.546576] RPC: Registered udp transport module.
[    0.551415] RPC: Registered tcp transport module.
[    0.556229] RPC: Registered tcp NFSv4.1 backchannel transport module.
[    0.562820] NET: Registered protocol family 44
[    0.567378] PCI: CLS 0 bytes, default 64
[    0.705806] hw perfevents: enabled with armv8_cortex_a53 PMU driver, 7 counters available
[    0.718040] Initialise system trusted keyrings
[    0.722850] workingset: timestamp_bits=46 max_order=19 bucket_order=0
[    0.732983] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[    0.739567] NFS: Registering the id_resolver key type
[    0.744780] Key type id_resolver registered
[    0.749057] Key type id_legacy registered
[    0.753227] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
[    0.760083] nfs4flexfilelayout_init: NFSv4 Flexfile Layout Driver Registering...
[    0.767849] 9p: Installing v9fs 9p2000 file system support
[    0.808171] Key type asymmetric registered
[    0.812369] Asymmetric key parser 'x509' registered
[    0.817397] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 243)
[    0.824962] io scheduler mq-deadline registered
[    0.829594] io scheduler kyber registered
[    0.835786] pinctrl-single 4084000.pinctrl: 34 pins, size 136
[    0.842158] pinctrl-single f4000.pinctrl: 171 pins, size 684
[    0.855597] Serial: 8250/16550 driver, 10 ports, IRQ sharing enabled
[    0.875646] brd: module loaded
[    0.885944] loop: module loaded
[    0.890062] megasas: 07.714.04.00-rc1
[    0.897530] tun: Universal TUN/TAP device driver, 1.6
[    0.903268] igbvf: Intel(R) Gigabit Virtual Function Network Driver
[    0.909692] igbvf: Copyright (c) 2009 - 2012 Intel Corporation.
[    0.915799] sky2: driver version 1.30
[    0.920489] VFIO - User Level meta-driver version: 0.3
[    0.926771] i2c /dev entries driver
[    0.932020] sdhci: Secure Digital Host Controller Interface driver
[    0.938380] sdhci: Copyright(c) Pierre Ossman
[    0.943185] sdhci-pltfm: SDHCI platform and OF driver helper
[    0.950079] ledtrig-cpu: registered to indicate activity on CPUs
[    0.956578] SMCCC: SOC_ID: ARCH_SOC_ID not implemented, skipping ....
[    0.964715] optee: probing for conduit method.
[    0.969315] optee: revision 3.20 (8e74d476)
[    0.969588] optee: dynamic shared memory is enabled
[    0.979098] optee: initialized driver
[    0.984950] NET: Registered protocol family 17
[    0.989672] 9pnet: Installing 9P2000 support
[    0.994125] Key type dns_resolver registered
[    0.998641] Loading compiled-in X.509 certificates
[    1.014885] ti-sci 44043000.system-controller: ABI: 3.1 (firmware rev 0x0008 '8.6.4--v08.06.04 (Chill Capybar')
[    1.081039] davinci-mcasp 2b10000.mcasp: IRQ common not found
[    1.089639] omap-gpmc 3b000000.memory-controller: GPMC revision 6.0
[    1.096084] gpmc_mem_init: disabling cs 0 mapped at 0x0-0x1000000
[    1.105264] omap_i2c 20000000.i2c: bus 0 rev0.12 at 400 kHz
[    1.112906] omap_i2c 20010000.i2c: bus 1 rev0.12 at 100 kHz
[    1.119226] ti-sci-intr 4210000.interrupt-controller: Interrupt Router 5 domain created
[    1.127590] ti-sci-intr bus@f0000:interrupt-controller@a00000: Interrupt Router 3 domain created
[    1.136835] ti-sci-inta 48000000.interrupt-controller: Interrupt Aggregator domain 28 created
[    1.146324] ti-udma 485c0100.dma-controller: Number of rings: 82
[    1.154399] ti-udma 485c0100.dma-controller: Channels: 48 (bchan: 18, tchan: 12, rchan: 18)
[    1.165466] ti-udma 485c0000.dma-controller: Number of rings: 150
[    1.175340] ti-udma 485c0000.dma-controller: Channels: 35 (tchan: 20, rchan: 15)
[    1.185491] printk: console [ttyS2] disabled
[    1.189936] 2800000.serial: ttyS2 at MMIO 0x2800000 (irq = 27, base_baud = 3000000) is a 8250
[    1.198707] printk: console [ttyS2] enabled
[    1.198707] printk: console [ttyS2] enabled
[    1.207151] printk: bootconsole [ns16550a0] disabled
[    1.207151] printk: bootconsole [ns16550a0] disabled
[    1.221936] spi-nor spi0.0: s28hs512t (65536 Kbytes)
[    1.226954] 7 fixed-partitions partitions found on MTD device fc40000.spi.0
[    1.233907] Creating 7 MTD partitions on "fc40000.spi.0":
[    1.239301] 0x000000000000-0x000000080000 : "ospi.tiboot3"
[    1.246015] 0x000000080000-0x000000280000 : "ospi.tispl"
[    1.252426] 0x000000280000-0x000000680000 : "ospi.u-boot"
[    1.258826] 0x000000680000-0x0000006c0000 : "ospi.env"
[    1.264973] 0x0000006c0000-0x000000700000 : "ospi.env.backup"
[    1.271745] 0x000000800000-0x000003fc0000 : "ospi.rootfs"
[    1.278171] 0x000003fc0000-0x000004000000 : "ospi.phypattern"
[    1.291066] davinci_mdio 8000f00.mdio: Configuring MDIO in manual mode
[    1.337236] davinci_mdio 8000f00.mdio: davinci mdio revision 9.7, bus freq 1000000
[    1.351837] davinci_mdio 8000f00.mdio: phy[0]: device 8000f00.mdio:00, driver TI DP83867
[    1.359950] davinci_mdio 8000f00.mdio: phy[1]: device 8000f00.mdio:01, driver TI DP83867
[    1.368139] am65-cpsw-nuss 8000000.ethernet: initializing am65 cpsw nuss version 0x6BA01103, cpsw version 0x6BA81103 Ports: 3 quirks:00000006
[    1.381124] am65-cpsw-nuss 8000000.ethernet: Use random MAC address
[    1.387393] am65-cpsw-nuss 8000000.ethernet: initialized cpsw ale version 1.5
[    1.394518] am65-cpsw-nuss 8000000.ethernet: ALE Table size 512
[    1.401279] am65-cpsw-nuss 8000000.ethernet: CPTS ver 0x4e8a010c, freq:500000000, add_val:1 pps:0
[    1.411591] am65-cpsw-nuss 8000000.ethernet: set new flow-id-base 19
[    1.421845] rtc-ti-k3 2b1f0000.rtc: registered as rtc0
[    1.427043] rtc-ti-k3 2b1f0000.rtc: setting system clock to 1970-01-01T00:00:03 UTC (3)
[    1.539667] mmc0: CQHCI version 5.10
[    1.544806] davinci-mcasp 2b10000.mcasp: IRQ common not found
[    1.562845] pca953x 1-0022: supply vcc not found, using dummy regulator
[    1.569583] pca953x 1-0022: using AI
[    1.583893] mmc0: SDHCI controller on fa10000.mmc [fa10000.mmc] using ADMA 64-bit
[    1.596608] sii902x 1-003b: supply iovcc not found, using dummy regulator
[    1.603538] sii902x 1-003b: supply cvcc12 not found, using dummy regulator
[    1.613380] i2c i2c-1: Added multiplexed i2c bus 2
[    1.620245] [drm] Initialized tidss 1.0.0 20180215 for 30200000.dss on minor 0
[    1.627991] tidss 30200000.dss: [drm] Cannot find any crtc or sizes
[    1.636998] vdd_mmc1: supplied by vcc_3v3_sys
[    1.643231] wlan_lten: supplied by vcc_3v3_sys
[    1.649415] debugfs: Directory 'pd:53' with parent 'pm_genpd' already present!
[    1.656766] debugfs: Directory 'pd:52' with parent 'pm_genpd' already present!
[    1.656990] mmc1: CQHCI version 5.10
[    1.664012] wlan_en: supplied by wlan_lten
[    1.664110] debugfs: Directory 'pd:51' with parent 'pm_genpd' already present!
[    1.664406] debugfs: Directory 'pd:182' with parent 'pm_genpd' already present!
[    1.676378] ALSA device list:
[    1.679139] mmc2: CQHCI version 5.10
[    1.686232]   No soundcards found.
[    1.689465] mmc0: Command Queue Engine enabled
[    1.692808] Warning: unable to open an initial console.
[    1.696158] mmc0: new HS200 MMC card at address 0001
[    1.708946] mmc1: SDHCI controller on fa00000.mmc [fa00000.mmc] using ADMA 64-bit
[    1.711365] mmcblk0: mmc0:0001 S0J56X 14.8 GiB 
[    1.723074] mmcblk0boot0: mmc0:0001 S0J56X partition 1 31.5 MiB
[    1.725260] mmc2: SDHCI controller on fa20000.mmc [fa20000.mmc] using ADMA 64-bit
[    1.729304] mmcblk0boot1: mmc0:0001 S0J56X partition 2 31.5 MiB
[    1.740145] Freeing unused kernel memory: 4736K
[    1.742774] mmcblk0rpmb: mmc0:0001 S0J56X partition 3 4.00 MiB, chardev (237:0)
[    1.754681] sdhci-am654 fa20000.mmc: card claims to support voltages below defined range
[    1.765300] Run /init as init process
[    1.774928] mmc2: new high speed SDIO card at address 0001
[    1.802264] mmc1: new ultra high speed SDR104 SDHC card at address aaaa
[    1.809589] mmcblk1: mmc1:aaaa SC16G 14.8 GiB 
[    1.819574]  mmcblk1: p1 p2
[    2.419651] /dev/root: Can't open blockdev
Failed to set mode -0664- for -/var/log/wtmp-.
[    2.715030] random: dd: uninitialized urandom read (512 bytes read)
[    2.839619] am65-cpsw-nuss 8000000.ethernet eth0: PHY [8000f00.mdio:00] driver [TI DP83867] (irq=POLL)
[    2.848958] am65-cpsw-nuss 8000000.ethernet eth0: configuring for phy/rgmii-rxid link mode

 _____                    _____           _         _   
|  _  |___ ___ ___ ___   |  _  |___ ___  |_|___ ___| |_ 
|     |  _| .'| . | . |  |   __|  _| . | | | -_|  _|  _|
|__|__|_| |__,|_  |___|  |__|  |_| |___|_| |___|___|_|  
              |___|                    |___|            

Arago Project am62xx-evm /dev/ttyS2

Arago 2021.09 am62xx-evm /dev/ttyS2

am62xx-evm login:

am62-r5-spl-to-kernel-boot-sdk-v08.06-13-mar-23.tar.gz