Intrinsyc 410c SOM refusing to boot from SD card

Hi,
I have a custom board design [carrier board] with an Intrinsyc 410c SOM. I am trying to bring it up by booting the latest Debian package for the DB410 via the boot by SD method.

I have checked the following:

  1. The bootstrap pin for SD boot is ON.
  2. The image on the SD card works as it successfully boots when installed in a dragonboard.

I have logged the UART output and here it is,

Blockquote
Format: Log Type - Time(microsec) - Message - Optional Info
Log Type: B - Since Boot(Power On Reset), D - Delta, S - Statistic
S - QC_IMAGE_VERSION_STRING=BOOT.BF.3.0-00276
S - IMAGE_VARIANT_STRING=HAAAANAAA
S - OEM_IMAGE_VERSION_STRING=build4
S - Boot Config, 0x000002e3
S - Core 0 Frequency, 0 MHz
B - 1544 - PBL, Start
B - 3489 - bootable_media_detect_entry, Start
B - 68969 - bootable_media_detect_success, Start
B - 68973 - elf_loader_entry, Start
B - 70031 - auth_hash_seg_entry, Start
B - 70240 - auth_hash_seg_exit, Start
B - 85414 - elf_segs_hash_verify_entry, Start
B - 145246 - PBL, End
B - 152164 - SBL1, Start
B - 215208 - pm_device_init, Start
D - 14701 - pm_device_init, Delta
B - 230397 - boot_flash_init, Start
D - 30 - boot_flash_init, Delta
B - 234392 - boot_config_data_table_init, Start
D - 15067 - boot_config_data_table_init, Delta - (0 Bytes)
B - 254065 - CDT version:3,Platform ID:24,Major ID:1,Minor ID:0,Subtype:0
B - 260134 - sbl1_ddr_set_params, Start
B - 263916 - cpr_init, Start
D - 0 - cpr_init, Delta
B - 269528 - Pre_DDR_clock_init, Start
D - 183 - Pre_DDR_clock_init, Delta
D - 0 - sbl1_ddr_set_params, Delta
B - 282094 - pm_driver_init, Start
D - 6862 - pm_driver_init, Delta
B - 297619 - clock_init, Start
D - 30 - clock_init, Delta
B - 307745 - Image Load, Start
D - 23790 - QSEE Image Loaded, Delta - (459624 Bytes)
B - 331565 - Image Load, Start
D - 213 - SEC Image Loaded, Delta - (2048 Bytes)
B - 338794 - sbl1_efs_handle_cookies, Start
D - 183 - sbl1_efs_handle_cookies, Delta
B - 346602 - Image Load, Start
D - 11132 - QHEE Image Loaded, Delta - (51952 Bytes)
B - 357765 - Image Load, Start
D - 12231 - RPM Image Loaded, Delta - (149052 Bytes)
B - 369995 - Image Load, Start
D - 18880 - APPSBL Image Loaded, Delta - (533744 Bytes)
B - 388905 - QSEE Execution, Start
D - 61 - QSEE Execution, Delta
B - 394609 - SBL1, End
D - 244793 - SBL1, Delta
S - Flash Throughput, 112000 KB/s (1196420 Bytes, 10644 us)
S - DDR Frequency, 400 MHz
Android Bootloader - UART_DM Initialized!!!
[0] welcome to lk
[10] platform_init()
[10] target_init()
[30] SDHC Running in HS200 mode
[60] Done initialization of the card
[60] enable boot part access SUCCESS!
[60] Reading block…
[70] enable boot part access SUCCESS!
[70] Serial No: 233010011111839909
[70] MAC Address: 00D0CA011B45
[80] pm8x41_get_is_cold_boot: cold boot
[1040] No ‘frp’ partition found
[1040] Not able to search the panel:adv7533_1080p
[1050] Target panel init not found!
[1050] pm8x41_get_is_cold_boot: cold boot
[1050] Unable to locate /bootselect partition
[1060] use_signed_kernel=1, is_unlocked=1, is_tampered=0.
[1060] boot_verifier: Device is in ORANGE boot state.
[1070] Device is unlocked! Skipping verification…
[1070] Loading boot image (32276480): start
[1280] Loading boot image (32276480): done
[1480] DTB Total entry: 182, DTB version: 3
[1480] Using DTB entry 0x000000f7/00000000/0x00000018/0 for device 0x000000f7/00010000/0x00010018/0
[1490] target_display_panel_node:510: hw_id=24 panel_name=“adv7533_1080p”
[1500] cmdline: console=ttyHSL0,115200,n8 androidboot.console=ttyHSL0 androidboot.hardware=qcom msm_rtb.filter=0x237 ehci-hcd.park=3 androidboot.bootdevice=7824900.sdhci lpm_levels.sleep_disabled=1 earlyprintk androidboot.selinux=permissive wlan_mac=00D0CA011B45[1520] Updating device tree: start
[1680] Updating device tree: done
[1690] booting linux @ 0x80080000, ramdisk @ 0x82000000 (794728), tags/device tree @ 0x81e00000
[1700] Jumping to kernel via monitor
[ 0.000000] Initializing cgroup subsys cpu
[ 0.000000] Initializing cgroup subsys cpuacct
[ 0.000000] Linux version 3.10.49-ga6c0070 (bwalker@410-build-test) (gcc version 4.9.x-google 20140827 (prerelease) (GCC) ) #1 SMP PREEMPT Fri May 12 16:14:35 MDT 2017
[ 0.000000] CPU: AArch64 Processor [410fd030] revision 0
[ 0.000000] Machine: Qualcomm Technologies, Inc. APQ 8016 SBC
[ 0.000000] No earlyprintk arguments passed.
[ 0.000000] WLAN init with mac address: 00D0CA011B45
[ 0.000000] WLAN convert to 00:d0:ca:01:1b:45
[ 0.000000] cma: Found external_image__region@0, memory base 0x0000000086000000, size 8 MiB, limit 0xffffffffffffffff
[ 0.000000] cma: Found modem_adsp_region@0, memory base 0x0000000086800000, size 43 MiB, limit 0xffffffffffffffff
[ 0.000000] cma: Found pheripheral_region@0, memory base 0x0000000089300000, size 6 MiB, limit 0xffffffffffffffff
[ 0.000000] cma: Found secure_region@0, memory base 0x0000000000000000, size 109 MiB, limit 0xffffffffffffffff
[ 0.000000] cma: Found venus_qseecom_region@0, memory base 0x0000000000000000, size 18 MiB, limit 0x0000000090000000
[ 0.000000] cma: Found audio_region@0, memory base 0x0000000000000000, size 3 MiB, limit 0xffffffffffffffff
[ 0.000000] cma: Found splash_region@83000000, memory base 0x0000000083000000, size 20 MiB, limit 0xffffffffffffffff
[ 0.000000] cma: CMA: reserved 8 MiB at 0x0000000086000000 for external_image_mem
[ 0.000000] cma: CMA: reserved 43 MiB at 0x0000000086800000 for modem_adsp_mem
[ 0.000000] cma: CMA: reserved 6 MiB at 0x0000000089300000 for peripheral_mem
[ 0.000000] cma: CMA: reserved 112 MiB at 0x00000000b9000000 for secure_mem
[ 0.000000] cma: CMA: reserved 20 MiB at 0x000000008ec00000 for venus_qseecom_mem
[ 0.000000] cma: CMA: reserved 4 MiB at 0x00000000b8c00000 for audio_mem
[ 0.000000] cma: CMA: reserved 20 MiB at 0x0000000083000000 for cont_splash_mem
[ 0.000000] cma: CMA: reserved 64 MiB at 0x00000000b4c00000 for default region
[ 0.000000] PERCPU: Embedded 17 pages/cpu @ffffffc034ac7000 s40000 r8192 d21440 u69632
[ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 243456
[ 0.000000] Kernel command line: sched_enable_hmp=1 console=ttyHSL0,115200,n8 androidboot.console=ttyHSL0 androidboot.hardware=qcom msm_rtb.filter=0x237 ehci-hcd.park=3 androidboot.bootdevice=7824900.sdhci lpm_levels.sleep_disabled=1 earlyprintk androidboot.selinux=permissive wlan_mac=00D0CA011B45 androidboot.emmc=true androidboot.serialno=233010011111839909 androidboot.baseband=apq adv7533_dsi2hdmi.panel=hdmi1080p mdss_mdp.panel=1:dsi:0:qcom,mdss_dsi_adv7533_1080p
[ 0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes)
[ 0.000000] Dentry cache hash table entries: 131072 (order: 8, 1048576 bytes)
[ 0.000000] Inode-cache hash table entries: 65536 (order: 7, 524288 bytes)
[ 0.000000] software IO TLB [mem 0xb3800000-0xb3900000] (1MB) mapped at [ffffffc033800000-ffffffc0338fffff]
[ 0.000000] Memory: 717372K/990208K available (12320K kernel code, 1759K rwdata, 5584K rodata, 2787K init, 1808K bss, 272836K reserved)
[ 0.000000] Virtual kernel memory layout:
[ 0.000000] vmalloc : 0xffffff8000000000 - 0xffffffbbffff0000 (245759 MB)
[ 0.000000] vmemmap : 0xffffffbc02000000 - 0xffffffbc03000000 ( 16 MB)
[ 0.000000] modules : 0xffffffbffc000000 - 0xffffffc000000000 ( 64 MB)
[ 0.000000] memory : 0xffffffc000000000 - 0xffffffc040000000 ( 1024 MB)
[ 0.000000] .init : 0xffffffc001400000 - 0xffffffc0016b8c40 ( 2788 kB)
[ 0.000000] .text : 0xffffffc000080000 - 0xffffffc00137c3d4 ( 19441 kB)
[ 0.000000] .data : 0xffffffc0016b9000 - 0xffffffc001870d30 ( 1760 kB)
[ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
[ 0.000000] HMP scheduling enabled.
[ 0.000000] Preemptible hierarchical RCU implementation.
[ 0.000000] RCU dyntick-idle grace-period acceleration is enabled.
[ 0.000000] RCU restricting CPUs from NR_CPUS=8 to nr_cpu_ids=4.
[ 0.000000] NR_IRQS:64 nr_irqs:64 0
[ 0.000000] Architected cp15 and mmio timer(s) running at 19.20MHz (virt/virt).
[ 0.000000] sched_clock: 56 bits at 19MHz, resolution 52ns, wraps every 3579139424256ns
[ 0.004651] Calibrating delay loop (skipped), value calculated using timer frequency… 38.40 BogoMIPS (lpj=192000)
[ 0.004671] pid_max: default: 32768 minimum: 301
[ 0.005043] Security Framework initialized
[ 0.005076] SELinux: Initializing.
[ 0.005274] Mount-cache hash table entries: 256
[ 0.006992] Initializing cgroup subsys debug
[ 0.007009] Initializing cgroup subsys freezer
[ 0.007556] /cpus/cpu@0: Unknown CPU type
[ 0.007571] /cpus/cpu@1: Unknown CPU typees 32-bit capabilities (legacy support in use)
.
.
.
.
[ 25.356257] mdss_hw_rev_init: MDP Rev=10060000
[ 25.399022] avc: denied { set } for property=sys.listeners.registered scontext=u:r:tee:s0 tcontext=u:object_r:system_prop:s0 tclass=propert▒[ 25.453516] init: cannot find ‘/system/bin/cnss_diag’, disabling ‘cnss_diag’
[ 25.478691] init: cannot find ‘/system/bin/qrngd’, disabling

From my understanding of the logs, lk boots an image from the emmc and not from the sd card.
Ps. The image on the sd card is Linux version 4.14.0-qcomlt-arm64 (abuild@worksonarm) (gcc version 8.2.0 (Debian 8.2.0-15))

Any leads on how to debug this issue?

An SD card boot should result in the board loading LK (and the proprietary stuff that runs before LK) from the SD card. This doesn’t look like the traces I would expect from the LK image we’d put into our SD card images so I wonder if the problem is that that the wrong LK has been loaded (e.g. LK itself was loaded from eMMC rather than SD card).

Only fairly basic stuff: double check the boot mode ties, review the DB410C SD card schematic against the SoM and carrier schematics (especially anything to do with presence detect) and, if all that looks good, then attach a logic analyser to the SD card pins to see if the SoC even tried to read from the SD card during start up.

If it does start clocking the SD card port then you’d have to compare the SoM to the DB410C; for example you could use a logic analyzer to compare the first millisecond of activity on DB410C.

@danielt Thanks for the response. I will try your suggestions. I am also trying to find some documentation on the Boot Config value the Primary bootloader displays. I have noticed that the value is same ie. 0x000002e3 during DB410 sd boot and my custom boot. Am i right to assume that the boot mode ties are correct?

Not 100% sure to be honest… It sounds right but that message
comes from the proprietary bootloader code (so I seldom read the
messages :wink: ).

Did you ever figure this out? I have a Variscite SD410 which I haven’t played with yet but it looks like it might have the same issues…

Cheers,
R