TMDS64EVM: Launching an ADC application from Linux

Part Number: TMDS64EVM
Other Parts Discussed in Thread: ADC-PHI-PRU-EVM, ADS8588SEVM-PDK

Tool/software:

I am using TMDS64EVM with ADC-PHI-PRU-EVM and ADS8588SEVM-PDK.
I want to launch an R5F application from Linux; the R5F application will be used for the ADC.

I successfully built, tested in CCS, and then launched the following example from Linux
( following this video: www.ti.com/.../6274438209001 ):
- mcu_plus_sdk_am64x_11_01_00_17/examples/empty/am64x-evm/r5fss0-0_freertos

However, although I can build and run the ADC example in CCS, I cannot successfully launch it from Linux :
- mcu_plus_sdk_am64x_11_01_00_17/examples/pru_io/adc/ads85x8

Could you please advise on the correct procedure to launch the ADC application from Linux?
Thank you for your help.

  • Hi, I'll send this thread to a colleague, but in the meantime, let me share a link to our Academy module that explains application development on remote cores, which could be helpful for you to review.

    https://dev.ti.com/tirex/explore/node?a=7qm9DIS__LATEST&node=A__AfSHr0vWbFdGCnmoPeMXzg__AM64-ACADEMY__WI1KRXP__LATEST 

    Thank you

    Paula

  • Hello SoonRyul,

    Please follow the AM64x academy > Multicore module > Application Development on Remote cores that Paula posted above.

    I am the author of the Multicore academy. So if you have any questions after you follow all the steps, I can provide assistance.

    Regards,

    Nick

  • Hello Nick,

    I was able to launch the following example from Linux without issues:
    mcu_plus_sdk_am64x_11_01_00_17/examples/empty/am64x-evm/r5fss0-0_freertos.

    In contrast, launching the ADC example from Linux fails:
    mcu_plus_sdk_am64x_11_01_00_17/examples/pru_io/adc/ads85x8.

    Symptoms:
    - The core name shows as “unknown.”
    - The application does not progress past System_init().

    Would you please provide the correct steps or configuration required to start the ADC example from Linux?

    Additionally, I would like to confirm whether the following file also needs to be copied to Linux and launched as part of the procedure: ads85x8_am64x-evm_icss_g0_pru0_fw_ti-pru-cgt.out.


    Thank you in advance for your guidance.

  • Hello SoonRyul,

    Show boot logs

    Please provide your Linux boot logs so that we can see how the Linux remoteproc driver is interacting with the R5F core. You can either attach your entire boot logs to your response by going "Insert > code" and copy-pasting the logs there, or attach the logs as a separate file with Insert > Image/video/file.

    If you do not want to post the full boot logs, give me this terminal output:
    $ dmesg | grep -e remoteproc r5 rproc virtio rpmsg

    What about the PRU firmware? 

    If you want the R5F cores to control the PRU cores, then you need to disable the PRU subsystem in the Linux devicetree file. Please disable the icssg subsystem in the Linux devicetree file, similar to section "Linux" in this e2e FAQ:
    RE: [FAQ] PROCESSOR-SDK-AM64X: How to enable PRU-ICSS Ethernet example with IPC remoteproc

    For more information about allocating peripherals & PRU cores between Linux and MCU+ cores, refer to the AM64x multicore academy "Allocate peripherals"
    https://dev.ti.com/tirex/explore/node?node=A__AaxbsDidZkzMnkMKgzk7bQ__AM64-ACADEMY__WI1KRXP__LATEST

    Regards,

    Nick

  • Hello Nick,

    Here is my Linux boot logs:

    [    0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034]
    [    0.000000] Linux version 6.6.58-rt45-ti-rt-01780-gc79d7ef3a56f-dirty (oe-user@oe-host) (aarch64-oe-linux-gcc (GCC) 13.3.0, GNU ld (GNU Binutils) 2.42.0.20240723) #1 SMP PREEMPT_RT Wed Nov 27 14:15:26 UTC 2024
    [    0.000000] Machine model: Texas Instruments AM642 EVM
    [    0.000000] earlycon: ns16550a0 at MMIO32 0x0000000002800000 (options '')
    [    0.000000] printk: legacy bootconsole [ns16550a0] enabled
    [    0.000000] efi: UEFI not found.
    [    0.000000] OF: reserved mem: 0x000000009e800000..0x000000009fffffff (24576 KiB) nomap non-reusable optee@9e800000
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a0000000, size 1 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-dma-memory@a0000000, compatible id shared-dma-pool
    [    0.000000] OF: reserved mem: 0x00000000a0000000..0x00000000a00fffff (1024 KiB) nomap non-reusable r5f-dma-memory@a0000000
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a0100000, size 15 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-memory@a0100000, compatible id shared-dma-pool
    [    0.000000] OF: reserved mem: 0x00000000a0100000..0x00000000a0ffffff (15360 KiB) nomap non-reusable r5f-memory@a0100000
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a1000000, size 1 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-dma-memory@a1000000, compatible id shared-dma-pool
    [    0.000000] OF: reserved mem: 0x00000000a1000000..0x00000000a10fffff (1024 KiB) nomap non-reusable r5f-dma-memory@a1000000
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a1100000, size 15 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-memory@a1100000, compatible id shared-dma-pool
    [    0.000000] OF: reserved mem: 0x00000000a1100000..0x00000000a1ffffff (15360 KiB) nomap non-reusable r5f-memory@a1100000
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a2000000, size 1 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-dma-memory@a2000000, compatible id shared-dma-pool
    [    0.000000] OF: reserved mem: 0x00000000a2000000..0x00000000a20fffff (1024 KiB) nomap non-reusable r5f-dma-memory@a2000000
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a2100000, size 15 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-memory@a2100000, compatible id shared-dma-pool
    [    0.000000] OF: reserved mem: 0x00000000a2100000..0x00000000a2ffffff (15360 KiB) nomap non-reusable r5f-memory@a2100000
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a3000000, size 1 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-dma-memory@a3000000, compatible id shared-dma-pool
    [    0.000000] OF: reserved mem: 0x00000000a3000000..0x00000000a30fffff (1024 KiB) nomap non-reusable r5f-dma-memory@a3000000
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a3100000, size 15 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-memory@a3100000, compatible id shared-dma-pool
    [    0.000000] OF: reserved mem: 0x00000000a3100000..0x00000000a3ffffff (15360 KiB) nomap non-reusable r5f-memory@a3100000
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a4000000, size 1 MiB
    [    0.000000] OF: reserved mem: initialized node m4f-dma-memory@a4000000, compatible id shared-dma-pool
    [    0.000000] OF: reserved mem: 0x00000000a4000000..0x00000000a40fffff (1024 KiB) nomap non-reusable m4f-dma-memory@a4000000
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a4100000, size 15 MiB
    [    0.000000] OF: reserved mem: initialized node m4f-memory@a4100000, compatible id shared-dma-pool
    [    0.000000] OF: reserved mem: 0x00000000a4100000..0x00000000a4ffffff (15360 KiB) nomap non-reusable m4f-memory@a4100000
    [    0.000000] OF: reserved mem: 0x00000000a5000000..0x00000000a57fffff (8192 KiB) nomap non-reusable ipc-memories@a5000000
    [    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-0x000000009e7fffff]
    [    0.000000]   node   0: [mem 0x000000009e800000-0x00000000a57fffff]
    [    0.000000]   node   0: [mem 0x00000000a5800000-0x00000000ffffffff]
    [    0.000000] Initmem setup node 0 [mem 0x0000000080000000-0x00000000ffffffff]
    [    0.000000] cma: Reserved 32 MiB at 0x00000000fbe00000 on node -1
    [    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.5
    [    0.000000] percpu: Embedded 21 pages/cpu s46656 r8192 d31168 u86016
    [    0.000000] pcpu-alloc: s46656 r8192 d31168 u86016 alloc=21*4096
    [    0.000000] pcpu-alloc: [0] 0 [0] 1
    [    0.000000] Detected VIPT I-cache on CPU0
    [    0.000000] CPU features: detected: GIC system register CPU interface
    [    0.000000] CPU features: kernel page table isolation disabled by kernel configuration
    [    0.000000] CPU features: detected: ARM erratum 845719
    [    0.000000] alternatives: applying boot alternatives
    [    0.000000] Kernel command line: console=ttyS2,115200n8 earlycon=ns16550a,mmio32,0x02800000 omap2-nand.0:2m(NAND.tiboot3),2m(NAND.tispl),2m(NAND.tiboot3.backup),4m(NAND.u-boot),256k(NAND.u-boot-env),256k(NAND.u-boot-env.backup),-(NAND.file-system) root=PARTUUID=f297bd16-02 rw rootfstype=ext4 rootwait
    [    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] Built 1 zonelists, mobility grouping on.  Total pages: 516096
    [    0.000000] mem auto-init: stack:all(zero), heap alloc:off, heap free:off
    [    0.000000] software IO TLB: area num 2.
    [    0.000000] software IO TLB: mapped [mem 0x00000000f7c00000-0x00000000fbc00000] (64MB)
    [    0.000000] Memory: 1829944K/2097152K available (10496K kernel code, 1202K rwdata, 2512K rodata, 2176K init, 457K bss, 234440K reserved, 32768K cma-reserved)
    [    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1
    [    0.000000] rcu: Preemptible hierarchical RCU implementation.
    [    0.000000] rcu:     RCU restricting CPUs from NR_CPUS=256 to nr_cpu_ids=2.
    [    0.000000] rcu:     RCU_SOFTIRQ processing moved to rcuc kthreads.
    [    0.000000]  No expedited grace period (rcu_normal_after_boot).
    [    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 100 jiffies.
    [    0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=2
    [    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] Root IRQ handler: 0xffff8000800100c0
    [    0.000000] GICv3: GICv3 features: 16 PPIs
    [    0.000000] GICv3: CPU0: found redistributor 0 region 0:0x0000000001840000
    [    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 @80800000 (flat, esz 8, psz 64K, shr 0)
    [    0.000000] ITS: using cache flushing for cmd queue
    [    0.000000] GICv3: using LPI property table @0x0000000080030000
    [    0.000000] GIC: using cache flushing for LPI property table
    [    0.000000] GICv3: CPU0: using allocated LPI pending table @0x0000000080040000
    [    0.000000] rcu: srcu_init: Setting srcu_struct sizes based on contention.
    [    0.000000] arch_timer: cp15 timer(s) running at 200.00MHz (phys).
    [    0.000000] clocksource: arch_sys_counter: mask: 0x3ffffffffffffff max_cycles: 0x2e2049d3e8, max_idle_ns: 440795210634 ns
    [    0.000001] sched_clock: 58 bits at 200MHz, resolution 5ns, wraps every 4398046511102ns
    [    0.000289] Console: colour dummy device 80x25
    [    0.000356] Calibrating delay loop (skipped), value calculated using timer frequency.. 400.00 BogoMIPS (lpj=200000)
    [    0.000369] pid_max: default: 32768 minimum: 301
    [    0.000455] LSM: initializing lsm=capability,selinux,integrity
    [    0.000481] SELinux:  Initializing.
    [    0.000691] Mount-cache hash table entries: 4096 (order: 3, 32768 bytes, linear)
    [    0.000718] Mountpoint-cache hash table entries: 4096 (order: 3, 32768 bytes, linear)
    [    0.009206] rcu: Hierarchical SRCU implementation.
    [    0.009219] rcu:     Max phase no-delay instances is 400.
    [    0.049756] Platform MSI: msi-controller@1820000 domain created
    [    0.050085] PCI/MSI: /bus@f4000/interrupt-controller@1800000/msi-controller@1820000 domain created
    [    0.050290] EFI services will not be available.
    [    0.069196] smp: Bringing up secondary CPUs ...
    [    0.181522] Detected VIPT I-cache on CPU1
    [    0.181631] GICv3: CPU1: found redistributor 1 region 0:0x0000000001860000
    [    0.181649] GICv3: CPU1: using allocated LPI pending table @0x0000000080050000
    [    0.181709] CPU1: Booted secondary processor 0x0000000001 [0x410fd034]
    [    0.192231] smp: Brought up 1 node, 2 CPUs
    [    0.192239] SMP: Total of 2 processors activated.
    [    0.192245] CPU features: detected: 32-bit EL0 Support
    [    0.192251] CPU features: detected: CRC32 instructions
    [    0.192305] CPU: All CPU(s) started at EL2
    [    0.192308] alternatives: applying system-wide alternatives
    [    0.194134] devtmpfs: initialized
    [    0.209251] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 1911260446275000 ns
    [    0.209281] futex hash table entries: 512 (order: 3, 32768 bytes, linear)
    [    0.210751] pinctrl core: initialized pinctrl subsystem
    [    0.211471] DMI not present or invalid.
    [    0.212222] NET: Registered PF_NETLINK/PF_ROUTE protocol family
    [    0.214855] DMA: preallocated 256 KiB GFP_KERNEL pool for atomic allocations
    [    0.215123] DMA: preallocated 256 KiB GFP_KERNEL|GFP_DMA pool for atomic allocations
    [    0.215344] DMA: preallocated 256 KiB GFP_KERNEL|GFP_DMA32 pool for atomic allocations
    [    0.215432] audit: initializing netlink subsys (disabled)
    [    0.216181] audit: type=2000 audit(0.214:1): state=initialized audit_enabled=0 res=1
    [    0.216535] thermal_sys: Registered thermal governor 'step_wise'
    [    0.216822] ASID allocator initialised with 65536 entries
    [    0.222593] /bus@f4000/interrupt-controller@1800000: Fixed dependency cycle(s) with /bus@f4000/interrupt-controller@1800000
    [    0.235132] Modules: 28512 pages in range for non-PLT usage
    [    0.235147] Modules: 520032 pages in range for PLT usage
    [    0.236111] HugeTLB: registered 1.00 GiB page size, pre-allocated 0 pages
    [    0.236128] HugeTLB: 0 KiB vmemmap can be freed for a 1.00 GiB page
    [    0.236134] HugeTLB: registered 32.0 MiB page size, pre-allocated 0 pages
    [    0.236137] HugeTLB: 0 KiB vmemmap can be freed for a 32.0 MiB page
    [    0.236142] HugeTLB: registered 2.00 MiB page size, pre-allocated 0 pages
    [    0.236146] HugeTLB: 0 KiB vmemmap can be freed for a 2.00 MiB page
    [    0.236151] HugeTLB: registered 64.0 KiB page size, pre-allocated 0 pages
    [    0.236154] HugeTLB: 0 KiB vmemmap can be freed for a 64.0 KiB page
    [    1.026533] k3-chipinfo 43000014.chipid: Family:AM64X rev:SR2.0 JTAGID[0x1bb3802f] Detected
    [    1.028972] iommu: Default domain type: Translated
    [    1.028989] iommu: DMA domain TLB invalidation policy: strict mode
    [    1.029522] SCSI subsystem initialized
    [    1.029726] libata version 3.00 loaded.
    [    1.030039] usbcore: registered new interface driver usbfs
    [    1.030081] usbcore: registered new interface driver hub
    [    1.030124] usbcore: registered new device driver usb
    [    1.030870] pps_core: LinuxPPS API ver. 1 registered
    [    1.030877] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
    [    1.030899] PTP clock support registered
    [    1.031205] EDAC MC: Ver: 3.0.0
    [    1.031732] scmi_core: SCMI protocol bus registered
    [    1.032129] FPGA manager framework
    [    1.032275] Advanced Linux Sound Architecture Driver Initialized.
    [    1.033894] clocksource: Switched to clocksource arch_sys_counter
    [    1.034172] VFS: Disk quotas dquot_6.6.0
    [    1.034206] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
    [    1.043765] NET: Registered PF_INET protocol family
    [    1.044151] IP idents hash table entries: 32768 (order: 6, 262144 bytes, linear)
    [    1.046356] tcp_listen_portaddr_hash hash table entries: 1024 (order: 3, 40960 bytes, linear)
    [    1.046415] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear)
    [    1.046427] TCP established hash table entries: 16384 (order: 5, 131072 bytes, linear)
    [    1.046661] TCP bind hash table entries: 16384 (order: 8, 1310720 bytes, linear)
    [    1.048303] TCP: Hash tables configured (established 16384 bind 16384)
    [    1.048544] UDP hash table entries: 1024 (order: 4, 98304 bytes, linear)
    [    1.048683] UDP-Lite hash table entries: 1024 (order: 4, 98304 bytes, linear)
    [    1.049132] NET: Registered PF_UNIX/PF_LOCAL protocol family
    [    1.049702] RPC: Registered named UNIX socket transport module.
    [    1.049709] RPC: Registered udp transport module.
    [    1.049713] RPC: Registered tcp transport module.
    [    1.049716] RPC: Registered tcp-with-tls transport module.
    [    1.049719] RPC: Registered tcp NFSv4.1 backchannel transport module.
    [    1.049736] PCI: CLS 0 bytes, default 64
    [    1.051471] Initialise system trusted keyrings
    [    1.051735] workingset: timestamp_bits=62 max_order=19 bucket_order=0
    [    1.052245] squashfs: version 4.0 (2009/01/31) Phillip Lougher
    [    1.052554] NFS: Registering the id_resolver key type
    [    1.052596] Key type id_resolver registered
    [    1.052600] Key type id_legacy registered
    [    1.052623] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
    [    1.052630] nfs4flexfilelayout_init: NFSv4 Flexfile Layout Driver Registering...
    [    1.091335] Key type asymmetric registered
    [    1.091353] Asymmetric key parser 'x509' registered
    [    1.091453] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 244)
    [    1.091462] io scheduler mq-deadline registered
    [    1.091468] io scheduler kyber registered
    [    1.091504] io scheduler bfq registered
    [    1.103445] pinctrl-single 4084000.pinctrl: 33 pins, size 132
    [    1.104172] pinctrl-single f4000.pinctrl: 180 pins, size 720
    [    1.114553] Serial: 8250/16550 driver, 12 ports, IRQ sharing enabled
    [    1.132245] loop: module loaded
    [    1.133727] megasas: 07.725.01.00-rc1
    [    1.139642] tun: Universal TUN/TAP device driver, 1.6
    [    1.141185] VFIO - User Level meta-driver version: 0.3
    [    1.142695] usbcore: registered new interface driver usb-storage
    [    1.144147] i2c_dev: i2c /dev entries driver
    [    1.145044] sdhci: Secure Digital Host Controller Interface driver
    [    1.145054] sdhci: Copyright(c) Pierre Ossman
    [    1.145309] sdhci-pltfm: SDHCI platform and OF driver helper
    [    1.146480] SMCCC: SOC_ID: ARCH_SOC_ID not implemented, skipping ....
    [    1.147522] usbcore: registered new interface driver usbhid
    [    1.147534] usbhid: USB HID core driver
    [    1.148766] optee: probing for conduit method.
    [    1.148807] optee: revision 4.4 (8f645256efc0dc66)
    [    1.182027] optee: dynamic shared memory is enabled
    [    1.183366] optee: initialized driver
    [    1.183952] random: crng init done
    [    1.184614] mmio-mux a40000.mux-controller: mux-reg-masks property missing or invalid: -22
    [    1.184627] mmio-mux: probe of a40000.mux-controller failed with error -22
    [    1.186560] Initializing XFRM netlink socket
    [    1.186612] NET: Registered PF_PACKET protocol family
    [    1.186713] Key type dns_resolver registered
    [    1.200025] Loading compiled-in X.509 certificates
    [    1.215167] ti-sci 44043000.system-controller: ABI: 4.0 (firmware rev 0x000a '10.1.8--v10.01.08 (Fiery Fox)')
    [    1.337283] mmc0: CQHCI version 5.10
    [    1.339610] pca953x 0-0038: supply vcc not found, using dummy regulator
    [    1.339792] pca953x 0-0038: using no AI
    [    1.351764] omap_i2c 20000000.i2c: bus 0 rev0.12 at 400 kHz
    [    1.354092] pca953x 1-0022: supply vcc not found, using dummy regulator
    [    1.354323] pca953x 1-0022: using AI
    [    1.367417] omap_i2c 20010000.i2c: bus 1 rev0.12 at 400 kHz
    [    1.367959] ti-sci-intr bus@f4000:interrupt-controller@a00000: Interrupt Router 3 domain created
    [    1.368373] ti-sci-inta 48000000.interrupt-controller: Interrupt Aggregator domain 28 created
    [    1.372285] ti-udma 485c0100.dma-controller: Number of rings: 68
    [    1.374691] ti-udma 485c0100.dma-controller: Channels: 24 (bchan: 12, tchan: 6, rchan: 6)
    [    1.377250] ti-udma 485c0000.dma-controller: Number of rings: 288
    [    1.379583] mmc0: SDHCI controller on fa10000.mmc [fa10000.mmc] using ADMA 64-bit
    [    1.392829] ti-udma 485c0000.dma-controller: Channels: 44 (tchan: 29, rchan: 15)
    [    1.397771] printk: console [ttyS2] disabled
    [    1.467055] mmc0: Command Queue Engine enabled
    [    1.467083] mmc0: new HS200 MMC card at address 0001
    [    1.467949] mmcblk0: mmc0:0001 S0J56X 14.8 GiB
    [    1.470552] mmcblk0boot0: mmc0:0001 S0J56X 31.5 MiB
    [    1.472353] mmcblk0boot1: mmc0:0001 S0J56X 31.5 MiB
    [    1.474003] mmcblk0rpmb: mmc0:0001 S0J56X 4.00 MiB, chardev (239:0)
    [    1.586551] 2800000.serial: ttyS2 at MMIO 0x2800000 (irq = 310, base_baud = 3000000) is a 8250
    [    1.595470] printk: console [ttyS2] enabled
    [    1.595477] printk: legacy bootconsole [ns16550a0] disabled
    [    1.605912] spi-nor spi0.0: s28hs512t (65536 Kbytes)
    [    1.606087] 7 fixed-partitions partitions found on MTD device fc40000.spi.0
    [    1.606101] Creating 7 MTD partitions on "fc40000.spi.0":
    [    1.606109] 0x000000000000-0x000000100000 : "ospi.tiboot3"
    [    1.608170] 0x000000100000-0x000000300000 : "ospi.tispl"
    [    1.609940] 0x000000300000-0x000000700000 : "ospi.u-boot"
    [    1.611659] 0x000000700000-0x000000740000 : "ospi.env"
    [    1.613412] 0x000000740000-0x000000780000 : "ospi.env.backup"
    [    1.615147] 0x000000800000-0x000003fc0000 : "ospi.rootfs"
    [    1.616857] 0x000003fc0000-0x000004000000 : "ospi.phypattern"
    [    1.680743] davinci_mdio 8000f00.mdio: Configuring MDIO in manual mode
    [    1.714890] davinci_mdio 8000f00.mdio: davinci mdio revision 9.7, bus freq 1000000
    [    1.717636] davinci_mdio 8000f00.mdio: phy[0]: device 8000f00.mdio:00, driver TI DP83867
    [    1.717704] am65-cpsw-nuss 8000000.ethernet: initializing am65 cpsw nuss version 0x6BA00903, cpsw version 0x6BA80903 Ports: 3 quirks:00000006
    [    1.718078] am65-cpsw-nuss 8000000.ethernet: initialized cpsw ale version 1.4
    [    1.718087] am65-cpsw-nuss 8000000.ethernet: ALE Table size 512
    [    1.718963] pps pps0: new PPS source ptp0
    [    1.719373] am65-cpsw-nuss 8000000.ethernet: CPTS ver 0x4e8a010c, freq:500000000, add_val:1 pps:1
    [    1.777345] am65-cpsw-nuss 8000000.ethernet: set new flow-id-base 16
    [    1.784613] pps pps1: new PPS source ptp1
    [    1.785102] am65-cpts 39000000.cpts: CPTS ver 0x4e8a010c, freq:500000000, add_val:1 pps:1
    [    1.792798] mmc1: CQHCI version 5.10
    [    1.807372] j721e-pcie f102000.pcie: host bridge /bus@f4000/pcie@f102000 ranges:
    [    1.807458] j721e-pcie f102000.pcie:       IO 0x0600001000..0x0600100fff -> 0x0000001000
    [    1.807483] j721e-pcie f102000.pcie:      MEM 0x0600101000..0x06ffffffff -> 0x0000101000
    [    1.807506] j721e-pcie f102000.pcie:   IB MEM 0x0000000000..0x0fffffffff -> 0x0000000000
    [    1.840702] mmc1: SDHCI controller on fa00000.mmc [fa00000.mmc] using ADMA 64-bit
    [    1.895442] mmc1: new ultra high speed SDR104 SDXC card at address aaaa
    [    1.896380] mmcblk1: mmc1:aaaa SN128 119 GiB
    [    1.898918]  mmcblk1: p1 p2
    [    2.918008] j721e-pcie f102000.pcie: PCI host bridge to bus 0000:00
    [    2.918085] pci_bus 0000:00: root bus resource [bus 00-ff]
    [    2.918099] pci_bus 0000:00: root bus resource [io  0x0000-0xfffff] (bus address [0x1000-0x100fff])
    [    2.918108] pci_bus 0000:00: root bus resource [mem 0x600101000-0x6ffffffff] (bus address [0x00101000-0xffffffff])
    [    2.918151] pci 0000:00:00.0: [104c:b010] type 01 class 0x060400
    [    2.918170] pci 0000:00:00.0: reg 0x10: [mem 0x00000000-0xfffffffff 64bit pref]
    [    2.918254] pci 0000:00:00.0: supports D1
    [    2.918261] pci 0000:00:00.0: PME# supported from D0 D1 D3hot
    [    2.921047] pci 0000:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
    [    2.921319] pci_bus 0000:01: busn_res: [bus 01-ff] end is updated to 01
    [    2.921360] pci 0000:00:00.0: BAR 0: no space for [mem size 0x1000000000 64bit pref]
    [    2.921371] pci 0000:00:00.0: BAR 0: failed to assign [mem size 0x1000000000 64bit pref]
    [    2.921381] pci 0000:00:00.0: PCI bridge to [bus 01]
    [    2.921562] pcieport 0000:00:00.0: of_irq_parse_pci: failed with rc=-22
    [    2.922366] pcieport 0000:00:00.0: PME: Signaling with IRQ 513
    [    2.922735] pcieport 0000:00:00.0: AER: enabled with IRQ 513
    [    2.930432] clk: Disabling unused clocks
    [    2.952448] ALSA device list:
    [    2.952462]   No soundcards found.
    [    3.166462] EXT4-fs (mmcblk1p2): recovery complete
    [    3.167918] EXT4-fs (mmcblk1p2): mounted filesystem a2a12612-36d1-43b0-a9d2-f942359ba9b7 r/w with ordered data mode. Quota mode: none.
    [    3.168041] VFS: Mounted root (ext4 filesystem) on device 179:98.
    [    3.170952] devtmpfs: mounted
    [    3.172482] Freeing unused kernel memory: 2176K
    [    3.172611] Run /sbin/init as init process
    [    3.172615]   with arguments:
    [    3.172618]     /sbin/init
    [    3.172620]   with environment:
    [    3.172622]     HOME=/
    [    3.172625]     TERM=linux
    [    3.398843] systemd[1]: System time before build time, advancing clock.
    [    3.448576] NET: Registered PF_INET6 protocol family
    [    3.449987] Segment Routing with IPv6
    [    3.450026] In-situ OAM (IOAM) with IPv6
    [    3.472551] systemd[1]: systemd 255.13^ running in system mode (+PAM -AUDIT -SELINUX -APPARMOR +IMA -SMACK +SECCOMP -GCRYPT -GNUTLS -OPENSSL +ACL +BLKID -CURL -ELFUTILS -FIDO2 -IDN2 -IDN -IPTC +KMOD -LIBCRYPTSETUP +LIBFDISK -PCRE2 -PWQUALITY -P11KIT -QRENCODE -TPM2 -BZIP2 -LZ4 -XZ -ZLIB +ZSTD -BPF_FRAMEWORK -XKBCOMMON +UTMP +SYSVINIT default-hierarchy=unified)
    [    3.472645] systemd[1]: Detected architecture arm64.
    [    3.517122] systemd[1]: Hostname set to <am64xx-evm>.
    [    3.997929] systemd[1]: /usr/lib/systemd/system/bt-enable.service:9: Standard output type syslog is obsolete, automatically updating to journal. Please update your unit file, and consider removing the setting altogether.
    [    4.146408] systemd[1]: /etc/systemd/system/sync-clocks.service:11: Standard output type syslog is obsolete, automatically updating to journal. Please update your unit file, and consider removing the setting altogether.
    [    4.239380] systemd[1]: Queued start job for default target Graphical Interface.
    [    4.260695] systemd[1]: Created slice Slice /system/getty.
    [    4.276978] systemd[1]: Created slice Slice /system/modprobe.
    [    4.292997] systemd[1]: Created slice Slice /system/serial-getty.
    [    4.309223] systemd[1]: Created slice User and Session Slice.
    [    4.323592] systemd[1]: Started Dispatch Password Requests to Console Directory Watch.
    [    4.343621] systemd[1]: Started Forward Password Requests to Wall Directory Watch.
    [    4.360315] systemd[1]: Expecting device /dev/ttyS2...
    [    4.373333] systemd[1]: Reached target Path Units.
    [    4.386253] systemd[1]: Reached target Remote File Systems.
    [    4.400228] systemd[1]: Reached target Slice Units.
    [    4.413252] systemd[1]: Reached target Swaps.
    [    4.426667] systemd[1]: Listening on RPCbind Server Activation Socket.
    [    4.442270] systemd[1]: Reached target RPC Port Mapper.
    [    4.465616] systemd[1]: Listening on Process Core Dump Socket.
    [    4.480722] systemd[1]: Listening on initctl Compatibility Named Pipe.
    [    4.497856] systemd[1]: Listening on Journal Audit Socket.
    [    4.513235] systemd[1]: Listening on Journal Socket (/dev/log).
    [    4.529392] systemd[1]: Listening on Journal Socket.
    [    4.544476] systemd[1]: Listening on Network Service Netlink Socket.
    [    4.561344] systemd[1]: Listening on udev Control Socket.
    [    4.576194] systemd[1]: Listening on udev Kernel Socket.
    [    4.591215] systemd[1]: Listening on User Database Manager Socket.
    [    4.619463] systemd[1]: Mounting Huge Pages File System...
    [    4.644331] systemd[1]: Mounting POSIX Message Queue File System...
    [    4.675572] systemd[1]: Mounting Kernel Debug File System...
    [    4.684668] systemd[1]: Kernel Trace File System was skipped because of an unmet condition check (ConditionPathExists=/sys/kernel/tracing).
    [    4.709497] systemd[1]: Mounting Temporary Directory /tmp...
    [    4.736784] systemd[1]: Starting Create List of Static Device Nodes...
    [    4.768783] systemd[1]: Starting Load Kernel Module configfs...
    [    4.799954] systemd[1]: Starting Load Kernel Module drm...
    [    4.832177] systemd[1]: Starting Load Kernel Module fuse...
    [    4.864184] systemd[1]: Starting RPC Bind...
    [    4.876643] systemd[1]: File System Check on Root Device was skipped because of an unmet condition check (ConditionPathIsReadWrite=!/).
    [    4.882350] systemd[1]: systemd-journald.service: unit configures an IP firewall, but the local system does not support BPF/cgroup firewalling.
    [    4.882383] systemd[1]: systemd-journald.service: (This warning is only shown for the first unit using IP firewalling.)
    [    4.919754] systemd[1]: Starting Journal Service...
    [    4.955360] systemd[1]: Starting Load Kernel Modules...
    [    4.983324] fuse: init (API version 7.39)
    [    5.000838] systemd[1]: Starting Generate network units from Kernel command line...
    [    5.037121] systemd[1]: Starting Remount Root and Kernel File Systems...
    [    5.054858] systemd-journald[120]: Collecting audit messages is enabled.
    [    5.079786] systemd[1]: Starting Coldplug All udev Devices...
    [    5.107753] cryptodev: loading out-of-tree module taints kernel.
    [    5.121366] cryptodev: driver 1.14 loaded.
    [    5.140231] systemd[1]: Started RPC Bind.
    [    5.152412] systemd[1]: Mounted Huge Pages File System.
    [    5.170412] systemd[1]: Mounted POSIX Message Queue File System.
    [    5.189561] systemd[1]: Mounted Kernel Debug File System.
    [    5.206547] systemd[1]: Mounted Temporary Directory /tmp.
    [    5.225264] systemd[1]: Finished Create List of Static Device Nodes.
    [    5.254692] systemd[1]: modprobe@configfs.service: Deactivated successfully.
    [    5.259739] systemd[1]: Finished Load Kernel Module configfs.
    [    5.278992] EXT4-fs (mmcblk1p2): re-mounted a2a12612-36d1-43b0-a9d2-f942359ba9b7 r/w. Quota mode: none.
    [    5.300586] systemd[1]: Started Journal Service.
    [    5.666009] systemd-journald[120]: Received client request to flush runtime journal.
    [    9.062376] dbus-broker-lau[284]: memfd_create() called without MFD_EXEC or MFD_NOEXEC_SEAL set
    [    9.723137] CAN device driver interface
    [    9.822347] at24 0-0050: supply vcc not found, using dummy regulator
    [    9.833928] at24 0-0050: 131072 byte 24c1024 EEPROM, writable, 1 bytes/write
    [    9.867360] omap-mailbox 29020000.mailbox: omap mailbox rev 0x66fc9100
    [    9.868126] omap-mailbox 29040000.mailbox: omap mailbox rev 0x66fc9100
    [    9.873329] omap-mailbox 29060000.mailbox: omap mailbox rev 0x66fc9100
    [   10.289021] k3-m4-rproc 5000000.m4fss: assigned reserved memory node m4f-dma-memory@a4000000
    [   10.289844] k3-m4-rproc 5000000.m4fss: configured M4 for remoteproc mode
    [   10.290439] k3-m4-rproc 5000000.m4fss: local reset is deasserted for device
    [   10.292239] remoteproc remoteproc0: 5000000.m4fss is available
    [   10.297449] remoteproc remoteproc0: powering up 5000000.m4fss
    [   10.297484] remoteproc remoteproc0: Booting fw image am64-mcu-m4f0_0-fw, size 88248
    [   10.303294] rproc-virtio rproc-virtio.0.auto: assigned reserved memory node m4f-dma-memory@a4000000
    [   10.306773] virtio_rpmsg_bus virtio0: creating channel ti.ipc4.ping-pong addr 0xd
    [   10.307070] virtio_rpmsg_bus virtio0: creating channel rpmsg_chrdev addr 0xe
    [   10.307239] virtio_rpmsg_bus virtio0: rpmsg host is online
    [   10.307294] rproc-virtio rproc-virtio.0.auto: registered virtio0 (type 7)
    [   10.307306] remoteproc remoteproc0: remote processor 5000000.m4fss is now up
    [   10.559174] platform 78000000.r5f: configured R5F for remoteproc mode
    [   10.560492] platform 78000000.r5f: assigned reserved memory node r5f-dma-memory@a0000000
    [   10.564078] remoteproc remoteproc1: 78000000.r5f is available
    [   10.601063] remoteproc remoteproc1: powering up 78000000.r5f
    [   10.602910] remoteproc remoteproc1: Booting fw image am64-main-r5f0_0-fw, size 86352
    [   10.624056] rproc-virtio rproc-virtio.1.auto: assigned reserved memory node r5f-dma-memory@a0000000
    [   10.634604] virtio_rpmsg_bus virtio1: rpmsg host is online
    [   10.635522] virtio_rpmsg_bus virtio1: creating channel rpmsg_chrdev addr 0xe
    [   10.649999] rproc-virtio rproc-virtio.1.auto: registered virtio1 (type 7)
    [   10.650073] remoteproc remoteproc1: remote processor 78000000.r5f is now up
    [   10.653986] platform 78200000.r5f: configured R5F for remoteproc mode
    [   10.654462] platform 78200000.r5f: assigned reserved memory node r5f-dma-memory@a1000000
    [   10.665970] remoteproc remoteproc2: 78200000.r5f is available
    [   10.682323] remoteproc remoteproc2: powering up 78200000.r5f
    [   10.682358] remoteproc remoteproc2: Booting fw image am64-main-r5f0_1-fw, size 141772
    [   10.704701] rproc-virtio rproc-virtio.2.auto: assigned reserved memory node r5f-dma-memory@a1000000
    [   10.743526] virtio_rpmsg_bus virtio2: rpmsg host is online
    [   10.744293] virtio_rpmsg_bus virtio2: creating channel rpmsg_chrdev addr 0xe
    [   10.745494] rproc-virtio rproc-virtio.2.auto: registered virtio2 (type 7)
    [   10.745518] remoteproc remoteproc2: remote processor 78200000.r5f is now up
    [   10.885382] platform 78400000.r5f: configured R5F for remoteproc mode
    [   10.896263] platform 78400000.r5f: assigned reserved memory node r5f-dma-memory@a2000000
    [   10.905104] remoteproc remoteproc3: 78400000.r5f is available
    [   10.939176] remoteproc remoteproc3: powering up 78400000.r5f
    [   10.945180] remoteproc remoteproc3: Booting fw image am64-main-r5f1_0-fw, size 93260
    [   10.965035] rproc-virtio rproc-virtio.3.auto: assigned reserved memory node r5f-dma-memory@a2000000
    [   10.973513] virtio_rpmsg_bus virtio3: creating channel rpmsg_chrdev addr 0xe
    [   10.988719] virtio_rpmsg_bus virtio3: rpmsg host is online
    [   10.990198] platform 78600000.r5f: configured R5F for remoteproc mode
    [   10.990848] platform 78600000.r5f: assigned reserved memory node r5f-dma-memory@a3000000
    [   10.991003] rproc-virtio rproc-virtio.3.auto: registered virtio3 (type 7)
    [   10.991018] remoteproc remoteproc3: remote processor 78400000.r5f is now up
    [   10.998539] remoteproc remoteproc4: 78600000.r5f is available
    [   11.028172] remoteproc remoteproc4: powering up 78600000.r5f
    [   11.028206] remoteproc remoteproc4: Booting fw image am64-main-r5f1_1-fw, size 91520
    [   11.045823] rproc-virtio rproc-virtio.4.auto: assigned reserved memory node r5f-dma-memory@a3000000
    [   11.055541] virtio_rpmsg_bus virtio4: rpmsg host is online
    [   11.055636] rproc-virtio rproc-virtio.4.auto: registered virtio4 (type 7)
    [   11.055648] remoteproc remoteproc4: remote processor 78600000.r5f is now up
    [   11.056210] virtio_rpmsg_bus virtio4: creating channel rpmsg_chrdev addr 0xe
    [   11.369111] m_can_platform 20701000.can: m_can device registered (irq=523, version=32)
    [   11.412030] m_can_platform 20711000.can: m_can device registered (irq=524, version=32)
    [   11.472098] gpio-mux mux-controller: 2-way mux-controller registered
    [   11.620627] Bluetooth: Core ver 2.22
    [   11.632481] NET: Registered PF_BLUETOOTH protocol family
    [   11.632500] Bluetooth: HCI device and connection manager initialized
    [   11.632527] Bluetooth: HCI socket layer initialized
    [   11.632538] Bluetooth: L2CAP socket layer initialized
    [   11.632574] Bluetooth: SCO socket layer initialized
    [   12.019630] cfg80211: Loading compiled-in X.509 certificates for regulatory database
    [   12.110974] Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7'
    [   12.123279] Loaded X.509 cert 'wens: 61c038651aabdcf94bd0ac7ff06c7248db18c600'
    [   12.407450] am65-cpsw-nuss 8000000.ethernet eth0: PHY [8000f00.mdio:00] driver [TI DP83867] (irq=POLL)
    [   12.437314] am65-cpsw-nuss 8000000.ethernet eth0: configuring for phy/rgmii-rxid link mode
    [   12.483956] am65-cpsw-nuss 8000000.ethernet eth1: PHY [mdio_mux-0.1:03] driver [TI DP83869] (irq=POLL)
    [   12.493357] am65-cpsw-nuss 8000000.ethernet eth1: configuring for phy/rgmii-rxid link mode
    [   13.129192] m_can_platform 20701000.can main_mcan0: renamed from can0
    [   13.184279] m_can_platform 20711000.can main_mcan1: renamed from can1
    [   16.549966] am65-cpsw-nuss 8000000.ethernet eth0: Link is Up - 1Gbps/Full - flow control off
    root@am64xx-evm:~#

    I disabled the PRU subsystem in the Linux device tree and System_init() completes successfully.
    However, the application gets stuck at "i2c_io_expander(NULL)" within ADC_init().
    I assume the I2C IO Expander is initialized when booting the TMDS64EVM with Linux.
    Therefore, I wonder if I can remove i2c_io_expander(NULL) from ADC_init().
    In this case, ADC_init(), ADC_powerUp(), ADC_reset(), and ADC_startConversion() complete successfully.
    However, the application then gets stuck at SemaphoreP_pend(&gAdcDataRecSem, SystemP_WAIT_FOREVER).
    Could you please guide me on how I can resolve this problem?

  • edited Oct 8 2025

    Hello SoonRyul,

    Glad to hear that you are able to make progress after resolving the resource conflict with the PRU subsystem.

    I suspect that now you are running into a resource conflict with the I2C instance. It does look like the R5F core is using an I2C instance:
    https://github.com/TexasInstruments/mcupsdk-core/blob/next/examples/pru_io/adc/ads85x8/am64x-evm/r5fss0-0_freertos/example.syscfg

    Based on the comments in i2c_io_expander, it seems like someone needs to set CPSW_FET_SEL (I have to move fast today, so I do not have time to dig into this much). That can either be done by the R5F, or you could disable the I2C in the R5F project and set the signal from Linux. Note that if you are setting this from Linux, you would need to sequence the code execution so that Linux set the IO Expander signal before the R5F code tried to initialize the ADC.

    The easiest way to do this is probably to rename the firmware link in the Linux filesystem under /lib/firmware so that the R5F no longer gets loaded during boot time. Then, after you set the IO Expander signals from Linux, you can initialize the R5F during runtime by following the steps in AM64x academy > Evaluating Linux > Booting Remote Cores
    https://dev.ti.com/tirex/explore/node?node=A__AdAyuKWUWVV5j4wBc7C6XA__AM64-ACADEMY__WI1KRXP__LATEST 

    How do I set an IO Expander GPIO signal from Linux? 

    Refer to the next reply. The e2e FAQ is based on using sysfs to interface with gpio, but this interface is disabled in more recent versions of Linux.

    Here is an FAQ on how to do something similar from a few years ago:
    [FAQ] SK-AM62: Steps to enable Expansion Header I2C and power 

    I have not tried these steps myself, so I am not sure whether this is still valid, or if the steps need to be changed in SDK 11.1.

    Regards,

    Nick

  • Edit, please refer to this documentation on setting IO Expander signals from Linux instead:

    AM64x academy > Evaluating Linux > IO Expander
    https://dev.ti.com/tirex/explore/node?node=A__Af0bRG6mHdc4iYsKhDOZDw__AM64-ACADEMY__WI1KRXP__LATEST

    Regards,

    Nick

  • Hello Nick,

    Thanks to your guidance, I was able to successfully launch the ADC application in Linux.
    The application is loaded onto the R5F, and the ADC is working correctly.
    However, the following message is continuously printed:
    [ 278.500381] omap_i2c 20010000.i2c: controller timed out

    I would greatly appreciate any advice you could provide on how to resolve this issue.

    Regards,
    SoonRyul Nam.

  • Hello SoonRyul,

    I am on vacation for the next few business days. Feel free to ping the thread if you do not get a response by Friday Oct 17.

    "controller timed out" means that AM64x is trying to communicate with one of the peripherals attached to 20010000.i2c (where 0x2001_0000 is the address of the I2C in the processor memory map. Refer to the TRM chapter "memory map" to figure out which I2C instance is complaining), and that communication is failing in some way.

    The first step would be to figure out which peripheral is causing the "timed out" message, and then you can start debugging what is going on.

    Regards,

    Nick

  • Hello Nick,

    I hope you are enjoying your vacation.

    I have resolved the “controller timed out” issue by removing I2C1 from example.syscfg, instead of disabling the i2c_io_expander(NULL) function.

    However, I have encountered another issue.
    When I configure CPSW_FET_SEL as an output and set it High, I can no longer use eth0, even though the ADC application launches successfully in Linux.

    I found the following description in PROC101B:

    - GPIO NETNAME: CPSW_FET_SEL
    - GPIO Description: One GPIO is required to control the MUX select between HSE and Ethernet PHY

    Is there any method to keep eth0 functional while the ADC application is running in Linux?
    I would greatly appreciate any advice or suggestions you could provide.
    Thank you for your help.

    Regards,
    SoonRyul Nam.

  • Hello SoonRyul,

    There are several stages here:

    Stage 1, get the demos working with TI software on TI hardware

    Stage 2, 3, etc: start to port software so that it works with your custom software on your custom hardware

    What are your Ethernet connectivity needs in your design? How many Ethernet ports do you need? What specs do you need on those ports? Generic Ethernet, industrial networking protocols, etc?

    In general on a custom board, I would expect you to be able to connect multiple Ethernet ports at the same time that the PRU is controlling an ADC through the PRU GPIO signals. This may or may not be possible on the AM64x EVM, given how they pinned out the signals on the EVM. I did not have time today to look at the board schematic and see if there was an alternative pinmux.

    Regards,

    Nick

  • Hello Nick,

    I’ll look into this later. Thanks for your help.

    Regards,
    SoonRyul Nam.