Part Number: TDA2EG-17
Other Parts Discussed in Thread: DRA718
Tool/software: TI C/C++ Compiler
Hello all,
How do address with "Unsupported OS image" during early boot and late attached ?
We have custom board and are using 1G DDR based on PROCESSOR_SDK_VISION 03_07_00_00, to boot from sd or emmc.
But have boot failure during SPL, pls see the completed U-Boot / SPL log here :
U-Boot SPL 2016.05 (Mar 23 2020 - 03:55:26) DRA722-GP ES2.1 no pinctrl for hs200_1_8v no pinctrl for ddr_1_8v i2c_write: error waiting for data ACK (status=0x116) i2c_write: error waiting for data ACK (status=0x116) i2c_write: error waiting for data ACK (status=0x116) i2c_write: error waiting for data ACK (status=0x116) i2c_write: error waiting for data ACK (status=0x116) i2c_write: error waiting for data ACK (status=0x116) Trying to boot from MMC1 reading dra7-ipu2-fw.lzop Core 1 ELF Image is valid Configuring IPU Configuring IOMMU Cleared the page table for MMU Configured the IOMMU Loading ELF Image alloc_mem: count 3 mask 0x1 pageno 0x0 alloc_mem: count 3 mask 0x1 pageno 0x4 alloc_mem: count 64 mask 0x3f pageno 0x40 alloc_mem: count 256 mask 0xff pageno 0x100 alloc_mem: count 240 mask 0xff pageno 0x200 alloc_mem: count 7168 mask 0xff pageno 0x300 Core entry point is 0x00000011 Starting the remote core loading remote core IPU2 successful reading dra7-dsp1-fw.lzop Core 4 ELF Image is valid DSP initialization in progress DSP DPLL configuration in progress DSP DPLL configuration is DONE! Enabled SysBIOS Tick Timer DSP Clock enabled and gated in domain controller DSP MMU out of reset DSP ready for MMU configuration and code loading Configuring IOMMU Cleared the page table for MMU Configured the IOMMU Loading ELF Image alloc_mem: count 3 mask 0x1 pageno 0x0 alloc_mem: count 3 mask 0x1 pageno 0x4 alloc_mem: count 64 mask 0x3f pageno 0x40 alloc_mem: count 512 mask 0xff pageno 0x100 alloc_mem: count 6144 mask 0xff pageno 0x300 alloc_mem: count 240 mask 0xff pageno 0x1b00 Core entry point is 0xa1ac9400 Starting the remote core loading remote core DSP1 successful reading dra7-ipu1-fw.lzop spl_load_file_fat: error reading file dra7-ipu1-fw.lzop, err - -1 spl: error reading image dra7-ipu1-fw.lzop, err - -1 Error loading remotecore IPU1!,Continuing with boot ... reading u-boot.img spl_load_image_fat: error reading image u-boot.img, err - -1 Failed to mount ext2 filesystem... spl_load_image_ext: ext4fs mount err - 0 Unsupported OS image.. Jumping nevertheless.. loaded - jumping to U-Boot... U-Boot SPL 2016.05 (Mar 23 2020 - 03:55:26) DRA722-GP ES2.1 no pinctrl for hs200_1_8v no pinctrl for ddr_1_8v i2c_write: error waiting for data ACK (status=0x116) i2c_write: error waiting for data ACK (status=0x116) i2c_write: error waiting for data ACK (status=0x116) i2c_write: error waiting for data ACK (status=0x116) i2c_write: error waiting for data ACK (status=0x116) i2c_write: error waiting for data ACK (status=0x116) Trying to boot from MMC1 reading dra7-ipu2-fw.lzop Core 1 ELF Image is valid Configuring IPU Configuring IOMMU Cleared the page table for MMU Configured the IOMMU Loading ELF Image alloc_mem: count 3 mask 0x1 pageno 0x0 alloc_mem: count 3 mask 0x1 pageno 0x4 alloc_mem: count 64 mask 0x3f pageno 0x40 alloc_mem: count 256 mask 0xff pageno 0x100 alloc_mem: count 240 mask 0xff pageno 0x200 alloc_mem: count 7168 mask 0xff pageno 0x300 Core entry point is 0x00000011 Starting the remote core loading remote core IPU2 successful reading dra7-dsp1-fw.lzop Core 4 ELF Image is valid DSP initialization in progress DSP DPLL configuration in progress DSP DPLL configuration is DONE! Enabled SysBIOS Tick Timer DSP Clock enabled and gated in domain controller DSP MMU out of reset DSP ready for MMU configuration and code loading Configuring IOMMU Cleared the page table for MMU Configured the IOMMU Loading ELF Image alloc_mem: count 3 mask 0x1 pageno 0x0 alloc_mem: count 3 mask 0x1 pageno 0x4 alloc_mem: count 64 mask 0x3f pageno 0x40 alloc_mem: count 512 mask 0xff pageno 0x100 alloc_mem: count 6144 mask 0xff pageno 0x300 alloc_mem: count 240 mask 0xff pageno 0x1b00 Core entry point is 0xa1ac9400 Starting the remote core loading remote core DSP1 successful reading dra7-ipu1-fw.lzop spl_load_file_fat: error reading file dra7-ipu1-fw.lzop, err - -1 spl: error reading image dra7-ipu1-fw.lzop, err - -1 Error loading remotecore IPU1!,Continuing with boot ... reading u-boot.img spl_load_image_fat: error reading image u-boot.img, err - -1 Failed to mount ext2 filesystem... spl_load_image_ext: ext4fs mount err - 0 Unsupported OS image.. Jumping nevertheless.. loaded - jumping to U-Boot...
Some steps we done as below :
1. Using early boot & late attach. According to VisionSDK_Linux_UserGuide.pdf from TI visionSDK.
2. After applying the patches from linux/kernel/linux-kernel-addon/earlyboot-kernel-patches/* ,as below:
-rwxr-xr-x 1 user user 1264 Jan 5 22:03 0004-config_fragments-Make-remoteproc-built-in-enable-use.patch
-rwxr-xr-x 1 user user 8361 Jan 5 22:03 0003-arm-dts-infoadas-Late-attach-remoteprocs.patch
-rwxr-xr-x 1 user user 1246 Jan 5 22:03 0002-arm-mach-omap2-Remove-edma-related-nodes-from-hwmod-.patch
-rwxr-xr-x 1 user user 28313 Jan 5 22:03 0001-dra7xx-Kernel-Optimizations-for-early-use-case-enabl.patch
3. DTS files.
4. Refer to web to modify u-boot and kernel (The version is Kernel 4.4/u-boot 2016.05) ,and patch file is here :
https://processors.wiki.ti.com/index.php/Early_Boot_and_Late_Attach_in_Linux
--- a/ti_components/os_tools/linux/kernel/omap/arch/arm/boot/dts/dra71-evm-infoadas.dts
+++ b/ti_components/os_tools/linux/kernel/omap/arch/arm/boot/dts/dra71-evm-infoadas.dts
@@ -6,10 +6,11 @@
* published by the Free Software Foundation.
*/
#include "dra71-evm.dts"
+#include "dra71-evm-late-attach.dts"
#define DISABLE_PRCM(label) &label { ti,no-idle; ti,no-reset-on-init; }
#define DISABLE_COMPLETE(label) &label { status = "disabled"; ti,no-idle; ti,no-reset-on-init; }
-#define LATE_ATTACH(label) &label { ti,late-attach; ti,no-idle; ti,no-reset-on-init; }
+/*#define LATE_ATTACH(label) &label { ti,late-attach; ti,no-idle; ti,no-reset-on-init; }*/
/* modules used by BIOS, disable from Linux */
DISABLE_COMPLETE(vip1);
@@ -81,17 +82,23 @@ DISABLE_PRCM(gpio6);
};
&ipu1 {
+/*
/delete-property/ watchdog-timers;
+*/
};
&ipu2 {
+/*
/delete-property/ watchdog-timers;
timers= <&timer9> , <&timer11>;
+*/
};
&dsp1 {
+/*
/delete-property/ watchdog-timers;
timers= <&timer5> , <&timer6>;
+*/
};
&mmc1 {
--------------------------------------------------------------------------
--- a/ti_components/os_tools/linux/kernel/omap/arch/arm/boot/dts/dra71-evm-late-attach.dts
+++ b/ti_components/os_tools/linux/kernel/omap/arch/arm/boot/dts/dra71-evm-late-attach.dts
@@ -6,7 +6,7 @@
* published by the Free Software Foundation.
*/
-#include "dra71-evm.dts"
+/*#include "dra71-evm.dts"*/
#define IPU1_LATE_ATTACH
#define IPU2_LATE_ATTACH
--------------------------------------------------------------------------
--- a/ti_components/os_tools/linux/u-boot/u-boot/board/ti/dra7xx/lateattach.c
+++ b/ti_components/os_tools/linux/u-boot/u-boot/board/ti/dra7xx/lateattach.c
@@ -151,14 +151,14 @@
#define PGT_L2_DESC_SMALLPAGE_MASK 0xfffff000
#define PGT_L2_DESC_LARGEPAGE_MASK 0xffff0000
-#define DRA7_RPROC_CMA_BASE_IPU1 0x9e000000
-#define DRA7_RPROC_CMA_BASE_IPU2 0x99000000
-#define DRA7_RPROC_CMA_BASE_DSP1 0xA1000000
+#define DRA7_RPROC_CMA_BASE_IPU1 0x9d000000
+#define DRA7_RPROC_CMA_BASE_IPU2 0x95800000
+#define DRA7_RPROC_CMA_BASE_DSP1 0x99000000
#define DRA7_RPROC_CMA_BASE_DSP2 0xA3000000
#define DRA7_RPROC_CMA_SIZE_IPU1 0x02000000
-#define DRA7_RPROC_CMA_SIZE_IPU2 0x05000000
-#define DRA7_RPROC_CMA_SIZE_DSP1 0x02000000
+#define DRA7_RPROC_CMA_SIZE_IPU2 0x03800000
+#define DRA7_RPROC_CMA_SIZE_DSP1 0x04000000
#define DRA7_RPROC_CMA_SIZE_DSP2 0x02000000
/*
--------------------------------------------------------------------------
--- a/ti_components/os_tools/linux/kernel/omap/ti_config_fragments/auto.cfg
+++ b/ti_components/os_tools/linux/kernel/omap/ti_config_fragments/auto.cfg
@@ -49,5 +49,5 @@ CONFIG_ICS932S401=n
CONFIG_VMEM_EXP_DMABUF=y
CONFIG_DEBUG_INFO=y
-CONFIG_ARM_LPAE=y
+CONFIG_ARM_LPAE=n
CONFIG_BLK_DEV_NVME=y
--------------------------------------------------------------------------
-CONFIG_ARM_LPAE=y
+CONFIG_ARM_LPAE=n
--------------------------------------------------------------------------
--- a/ti_components/os_tools/linux/u-boot/u-boot/board/ti/dra7xx/lateattach.c
+++ b/ti_components/os_tools/linux/u-boot/u-boot/board/ti/dra7xx/lateattach.c
@@ -151,14 +151,14 @@
#define PGT_L2_DESC_SMALLPAGE_MASK 0xfffff000
#define PGT_L2_DESC_LARGEPAGE_MASK 0xffff0000
-#define DRA7_RPROC_CMA_BASE_IPU1 0x9e000000
-#define DRA7_RPROC_CMA_BASE_IPU2 0x99000000
-#define DRA7_RPROC_CMA_BASE_DSP1 0xA1000000
+#define DRA7_RPROC_CMA_BASE_IPU1 0x9d000000
+#define DRA7_RPROC_CMA_BASE_IPU2 0x95800000
+#define DRA7_RPROC_CMA_BASE_DSP1 0x99000000
#define DRA7_RPROC_CMA_BASE_DSP2 0xA3000000
#define DRA7_RPROC_CMA_SIZE_IPU1 0x02000000
-#define DRA7_RPROC_CMA_SIZE_IPU2 0x05000000
-#define DRA7_RPROC_CMA_SIZE_DSP1 0x02000000
+#define DRA7_RPROC_CMA_SIZE_IPU2 0x03800000
+#define DRA7_RPROC_CMA_SIZE_DSP1 0x04000000
#define DRA7_RPROC_CMA_SIZE_DSP2 0x02000000
/*
--------------------------------------------------------------------------
--- a/ti_components/os_tools/linux/u-boot/u-boot/common/spl/spl.c
+++ b/ti_components/os_tools/linux/u-boot/u-boot/common/spl/spl.c
@@ -413,8 +413,12 @@ static inline void announce_boot_device(u32 boot_device) { }
* of the early load operation is specified by updating this
* array.
*/
+#ifdef CONFIG_ELEAD_BOARD
+u32 cores_to_boot[] = { IPU2, DSP1, IPU1 };
+#else
u32 cores_to_boot[] = { IPU2, DSP1, DSP2, IPU1 };
#endif
+#endif
static int spl_load_image(u32 boot_device)
{
5. To prepare SD card, at last, run early-boot-update.sh to replace the boot partition.
-rw-r--r-- 1 user user 128416 Mar 22 21:07 MLO
-rw-r--r-- 1 user user 3571552 Mar 22 21:15 uImage
-rw-r--r-- 1 user user 102162 Mar 22 21:15 single-stage-boot.dtb
-rw-r--r-- 1 user user 2487754 Mar 22 21:15 dra7-ipu2-fw.lzop
-rw-r--r-- 1 user user 3191857 Mar 22 21:15 dra7-dsp1-fw.lzop
B/R
Matt

