Tool/software: TI-RTOS
The c66x is running the IPC example for Linux ex02_messageq.
When I connect to the c66x core, I cannot access registers in the 0x4A000000 space (even from the CCS memory window)
An error is thrown:
root@solix:~# [ 71.900607] ------------[ cut here ]------------
[ 71.905266] WARNING: CPU: 0 PID: 0 at /kernel-source//drivers/bus/omap_l3_noc.c:147 l3_interrupt_handler+0x25c/0x378
[ 71.915835] 44000000.ocp:L3 Standard Error: MASTER DSP1_CFG TARGET EVE1 (Read Link): At Address: 0x02620018 : Data Access in User mode during Functional access
[ 71.930151] Modules linked in: bc_example(O) pru_rproc pruss_intc xhci_plat_hcd xhci_hcd usbcore unified_kbd(O) rpmsg_proto pruss dwc3 udc_core usb_common bluetooth ecdh_generic extcon_usb_gpio pvrsrvkm(O) omap_aes_driver c_can_platform omap_wdt c_can can_dev pruss_soc_bus omap_sham ti_vpe ti_sc ti_csc ti_vpdma dwc3_omap omap_des ad799x des_generic snd_soc_tlv320aic3x crypto_engine omap_crypto atmel_mxt_ts omap_remoteproc virtio_rpmsg_bus rpmsg_core remoteproc sch_fq_codel cryptodev(O) cmemk(O)
[ 71.974302] CPU: 0 PID: 0 Comm: swapper/0 Tainted: G O 4.14.54-g1170dda772 #1
[ 71.982601] Hardware name: Generic DRA72X (Flattened Device Tree)
[ 71.988717] Backtrace:
[ 71.991184] [<c020b808>] (dump_backtrace) from [<c020baec>] (show_stack+0x18/0x1c)
[ 71.998789] r7:00000009 r6:60060193 r5:00000000 r4:c1055bdc
[ 72.004477] [<c020bad4>] (show_stack) from [<c094d664>] (dump_stack+0x90/0xa4)
[ 72.011738] [<c094d5d4>] (dump_stack) from [<c022b9ec>] (__warn+0xec/0x104)
[
I expect that this is due to the configuration of RTOS SYS/BIOS. It is in user mode I believe.
I would like to modify some registers from the DSP running firmware to clock the PRU units and bring them online.
How would I go about giving user mode access to these registers so that they can be modified (under RTOS)?
Or, should I try to escape user mode if that is even possible?
Here is are the DSP IOMMU page tables at runtime.
L: da: pte:
--------------------------
1: 0x48000000 0x48000002
1: 0x48100000 0x48100002
1: 0x48400000 0x48400002
1: 0x48500000 0x48500002
1: 0x48600000 0x48600002
1: 0x48700000 0x48700002
1: 0x48800000 0x48800002
1: 0x48900000 0x48900002
1: 0x48a00000 0x48a00002
1: 0x48b00000 0x48b00002
1: 0x48c00000 0x48c00002
1: 0x48d00000 0x48d00002
1: 0x48e00000 0x48e00002
1: 0x48f00000 0x48f00002
1: 0x4a000000 0x4a040002
1: 0x4a100000 0x4a040002
1: 0x4a200000 0x4a040002
1: 0x4a300000 0x4a040002
1: 0x4a400000 0x4a040002
1: 0x4a500000 0x4a040002
1: 0x4a600000 0x4a040002
1: 0x4a700000 0x4a040002
1: 0x4a800000 0x4a040002
1: 0x4a900000 0x4a040002
1: 0x4aa00000 0x4a040002
1: 0x4ab00000 0x4a040002
1: 0x4ac00000 0x4a040002
1: 0x4ad00000 0x4a040002
1: 0x4ae00000 0x4a040002
1: 0x4af00000 0x4a040002
and so on