Thank you for your respons. To bad you hadn't heard from Pantelis yet. Unfortunately my knowledge is lacking in this area. But I will off course keep investigating. If I find a solution I will let you know.
Regards, Jelle Op maandag 8 februari 2016 22:19:09 UTC+1 schreef john3909: > > This is a known problem. Back on Oct 6, I wrote the following: > > ==== > I have pruss_remoteproc/virtio_rpmsg_bus working on V4.1 when I boot for > the first time. However, when I uninstall the KO with rmmod -f > pruss_remoteproc and then install the KO with modprobe pruss_remoteproc, I > get a kernel exception. > > Investigating further, I found that _omap_device_notifier_call sets > pdev->archdata.od = NULL when the pruss_remoteproc is uninstalled, but when > I install the pruss_remoteproc, pruss_probe tries to run > omap_device_deassert_hardreset which references archdata.od which is is now > NULL. > > Looking at TI’s V3.14 kernel, it does not set archdata.od = NULL, so I can > uninstall and install the KO without issue. > > In the V4.1 code, if I comment out lines 57 & 60 [1], pruss_remoteproc > uninstalls and installs without error. > > My question is how do I recreate archdata.od before pruss_probe > executes omap_device_deassert_hardreset? Given that this patch was authored > by Pantelis, I figured you would be the best person to answer my question. > > [1] > https://github.com/RobertCNelson/linux-dev/blob/master/patches/bbb_overlays/0006-arm-omap-Proper-cleanups-for-omap_device.patch > > <https://www.google.com/url?q=https%3A%2F%2Fgithub.com%2FRobertCNelson%2Flinux-dev%2Fblob%2Fmaster%2Fpatches%2Fbbb_overlays%2F0006-arm-omap-Proper-cleanups-for-omap_device.patch&sa=D&sntz=1&usg=AFQjCNHA4ztlFX21uInjI9Ir1q1TXIYRVA> > > ==== > > Unfortunately, Pantelis never responded so I have no idea how to fix this > issue. > > Regards, > John > > > > > On Feb 8, 2016, at 1:04 PM, Jelle Spijker <[email protected] > <javascript:>> wrote: > > Hello all, > > first post hoping you can help me. > > I have finally got my PRU working on my BBB Debian 4.1.17-ti-rt-r46. > > I used the PRU_gpioToggle example from > https://git.ti.com/pru-software-support-package/pru-software-support-package/trees/master/examples/am335x/PRU_gpioToggle > > which I compiled with CCS6.1 > > I copied the PRU_gpioToggle.out to the BBB in /lib/firmware/ and I made an > symbolic link as /lib/firmware/am335x-pru0-fw > > my uEnv.txt is as follows: > uname_r=4.1.17-ti-rt-r46 > dtb=am335x-boneblack-overlay.dtb > > cape_enable=bone_capemgr.enable_partno=cape-univ-audio,cape-univ-emmc,cape-univ-hdmi > > When I start up the the firmware is loaded onto the PRU: > > [ 20.181078] pruss-rproc 4a300000.pruss: 8 PRU interrupts parsed > [ 20.181178] pruss-rproc 4a300000.pruss: memory dram0: pa 0x4a300000 > size 0x2000 va e0b04000 > [ 20.181206] pruss-rproc 4a300000.pruss: memory dram1: pa 0x4a302000 > size 0x2000 va e0b08000 > [ 20.181230] pruss-rproc 4a300000.pruss: memory shrdram2: pa 0x4a310000 > size 0x3000 va e0b0c000 > [ 20.181253] pruss-rproc 4a300000.pruss: memory intc: pa 0x4a320000 > size 0x2000 va e0b10000 > [ 20.181275] pruss-rproc 4a300000.pruss: memory cfg: pa 0x4a326000 > size 0x2000 va e0b14000 > [ 20.228354] pruss-rproc 4a300000.pruss: creating platform devices for > PRU cores > [ 20.307883] pru-rproc 4a334000.pru0: memory iram: pa 0x4a334000 > size 0x2000 va e0b18000 > [ 20.307951] pru-rproc 4a334000.pru0: memory control: pa 0x4a322000 > size 0x400 va e09fe000 > [ 20.307977] pru-rproc 4a334000.pru0: memory debug: pa 0x4a322400 > size 0x100 va e0b02400 > [ 20.319303] remoteproc1: 4a334000.pru0 is available > [ 20.353277] remoteproc1: Note: remoteproc is still under development > and considered experimental. > [ 20.362293] remoteproc1: THE BINARY FORMAT IS NOT YET FINALIZED, and > backward compatibility isn't yet guaranteed. > [ 20.475842] pru-rproc 4a334000.pru0: booting the PRU core manually > [ 20.482081] remoteproc1: powering up 4a334000.pru0 > [ 20.517432] remoteproc1: Booting fw image am335x-pru0-fw, size 33132 > [ 20.566849] remoteproc1: starting PRU0: entry-point = 0x0 > [ 20.566872] remoteproc1: remote processor 4a334000.pru0 is now up > [ 20.602059] pru-rproc 4a334000.pru0: PRU rproc node > /ocp/pruss@4a300000/pru@4a334000 probed successfully > [ 20.649346] pru-rproc 4a338000.pru1: memory iram: pa 0x4a338000 > size 0x2000 va e0b30000 > [ 20.649419] pru-rproc 4a338000.pru1: memory control: pa 0x4a324000 > size 0x400 va e0b34000 > [ 20.649460] pru-rproc 4a338000.pru1: memory debug: pa 0x4a324400 > size 0x100 va e0b36400 > [ 20.655799] remoteproc2: 4a338000.pru1 is available > [ 20.660810] remoteproc2: Note: remoteproc is still under development > and considered experimental. > [ 20.706800] remoteproc2: THE BINARY FORMAT IS NOT YET FINALIZED, and > backward compatibility isn't yet guaranteed. > [ 20.729074] remoteproc2: Direct firmware load for am335x-pru1-fw > failed with error -2 > [ 20.737528] remoteproc2: failed to load am335x-pru1-fw > [ 20.743186] pru-rproc 4a338000.pru1: booting the PRU core manually > [ 20.749404] remoteproc2: powering up 4a338000.pru1 > [ 20.755598] remoteproc2: Direct firmware load for am335x-pru1-fw > failed with error -2 > [ 20.763983] remoteproc2: request_firmware failed: -2 > [ 20.769068] pru-rproc 4a338000.pru1: rproc_boot failed > [ 20.775630] remoteproc2: releasing 4a338000.pru1 > [ 20.780579] pru-rproc: probe of 4a338000.pru1 failed with error -2 > > And the led begins to blink when I enable the pin as pruout > sudo config-pin 8_28 pruout > > Now it should be possible to unload the pru code en point the symbolic > link /lib/firmware/am335x-pru0-fw towards a new block and reload it again > > but when I'm trying to reload my pru with > sudo rmmod -f pruss_remoteproc.ko > sudo insmod /drivers/remoteproc/pruss_remoteproc.ko > > I get the following output in my dmesg > [ 476.862186] Disabling lock debugging due to kernel taint > [ 476.868205] pru-rproc 4a334000.pru0: pru_rproc_remove: removing rproc > 4a334000.pru0 > [ 476.875941] pru-rproc 4a334000.pru0: stopping the manually booted PRU > core > [ 476.890699] remoteproc1: stopping PRU0 > [ 476.890752] remoteproc1: stopped remote processor 4a334000.pru0 > [ 476.900523] remoteproc1: releasing 4a334000.pru0 > [ 476.917068] pruss-rproc 4a300000.pruss: remove platform devices for PRU > cores > [ 517.877498] pruss-rproc 4a300000.pruss: 8 PRU interrupts parsed > [ 517.877733] pruss-rproc 4a300000.pruss: memory dram0: pa 0x4a300000 > size 0x2000 va e0ccc000 > [ 517.877819] pruss-rproc 4a300000.pruss: memory dram1: pa 0x4a302000 > size 0x2000 va e0cd0000 > [ 517.877897] pruss-rproc 4a300000.pruss: memory shrdram2: pa 0x4a310000 > size 0x3000 va e0cd4000 > [ 517.877972] pruss-rproc 4a300000.pruss: memory intc: pa 0x4a320000 > size 0x2000 va e0cd8000 > [ 517.878047] pruss-rproc 4a300000.pruss: memory cfg: pa 0x4a326000 > size 0x2000 va e0cdc000 > [ 517.878124] Unable to handle kernel NULL pointer dereference at virtual > address 0000000c > [ 517.896746] pgd = dce20000 > [ 517.899515] [0000000c] *pgd=00000000 > [ 517.903170] Internal error: Oops: 5 [#1] PREEMPT SMP THUMB2 > [ 517.903276] Modules linked in: pruss_remoteproc(+) usb_f_ecm g_ether > usb_f_rndis u_ether libcomposite omap_rng rng_core snd_soc_davinci_mcasp > snd_soc_edma spi_omap2_mcspi uio_pdrv_genirq uio [last unloaded: > pruss_remoteproc] > [ 517.903304] CPU: 0 PID: 828 Comm: insmod Tainted: G R > 4.1.17-ti-rt-r46 #1 > [ 517.903315] Hardware name: Generic AM33XX (Flattened Device Tree) > [ 517.903330] task: dc1a1680 ti: ddd90000 task.ti: ddd90000 > [ 517.903380] PC is at omap_device_deassert_hardreset+0x10/0x38 > [ 517.903442] LR is at pruss_probe+0x27a/0x470 [pruss_remoteproc] > [ 517.903462] pc : [<c0024bac>] lr : [<bf893e53>] psr: 60010133 > sp : ddd91cd0 ip : 00000000 fp : ddd91d20 > [ 517.903475] r10: 00000005 r9 : c0b68e80 r8 : dc205e24 > [ 517.903488] r7 : dda08010 r6 : dda08000 r5 : 00000000 r4 : dc205e10 > [ 517.903501] r3 : c0024b9d r2 : dc8ba311 r1 : c094126c r0 : dda08000 > [ 517.903520] Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA Thumb > Segment user > [ 517.903535] Control: 50c5387d Table: 9ce20019 DAC: 00000015 > [ 517.903549] Process insmod (pid: 828, stack limit = 0xddd90218) > [ 517.903563] Stack: (0xddd91cd0 to 0xddd92000) > [ 517.903585] 1cc0: dc205e10 00000008 > dda08000 bf893e53 > [ 517.903610] 1ce0: dc205e38 00002000 e0cdc000 c0175873 df93a7a4 bf895514 > bf895680 dc205e10 > [ 517.903635] 1d00: 00000008 c0b68e80 dda07fa0 bf8951f8 bf895200 bf895208 > bf895214 bf89521c > [ 517.903660] 1d20: c0b3b384 dda08010 dda08010 bf895430 fffffdfb c0cf3ff0 > bf895430 00000038 > [ 517.903685] 1d40: bf895818 c0464acd c0464a99 dda08010 c0c21ea8 00000000 > c0cf3fdc c0463613 > [ 517.903710] 1d60: c0464cad dda08010 dda08010 bf895430 dda08044 c04637d9 > bf895430 00000000 > [ 517.903735] 1d80: ddc10f88 c0463829 dda08010 00000000 00000001 c04620ef > dd8a946c dd9e8bc8 > [ 517.903759] 1da0: bf895430 ddc51100 00000000 c0bde7e8 bf898001 c0462e77 > bf895238 bf895430 > [ 517.903784] 1dc0: c0b49148 bf895430 c0b49148 c0b4d960 ddc104c0 c0463e19 > 00000000 c0b4d960 > [ 517.903809] 1de0: c0b49148 bf898011 c0b4d960 c00096bd dfda0218 c011c1b7 > 00000000 c011c1b7 > [ 517.903833] 1e00: c0b4a270 c0033179 dddd6a40 0040003e 00000001 00000001 > c0b42e60 000000d0 > [ 517.903858] 1e20: dd801e40 c011cd25 c06baa23 c011cd25 0040003f dddd67c0 > c0110a31 c0b4a270 > [ 517.903883] 1e40: dd801e40 dc8ba311 0040003e bf8957d0 bf8957d0 ddc10240 > 00000001 00000001 > [ 517.903908] 1e60: 223ef09c ddc10f88 bf895818 c06baa4d 00000001 00000001 > ddd91f58 bf8957d0 > [ 517.903933] 1e80: ddc10f80 c0096b53 bf8957dc 00007fff c0094731 c01287e5 > c0b49148 bf895818 > [ 517.903957] 1ea0: 7f655e80 bf895958 c0b491ec 00000000 00000103 c0c1d5d0 > 00000000 c012c5c3 > [ 517.903980] 1ec0: 00000000 00000000 00000000 00000000 00000000 00000000 > 00000000 00000000 > [ 517.904004] 1ee0: 00000000 00000000 6e72656b 00006c65 00000000 00000000 > 00000000 00000000 > [ 517.904027] 1f00: 00000000 00000000 00000000 00000000 00000000 00000000 > 00000000 00000000 > [ 517.904052] 1f20: 00000000 dc8ba311 00000038 00000000 00000003 7f655e80 > 0000017b c000ea44 > [ 517.904076] 1f40: ddd90000 00000000 00000000 c00971cb ddd91f5c 00000000 > e0cc1000 00006b74 > [ 517.904101] 1f60: e0cc755c e0cc4847 e0cc59fc 00002968 000033c8 bf895680 > 0000000e 00000000 > [ 517.904125] 1f80: 00000025 00000026 0000001e 00000019 00000015 00000000 > 4d7c1300 7f651cdc > [ 517.904149] 1fa0: b6ff5f10 c000e8a1 4d7c1300 7f651cdc 00000003 7f655e80 > 00000000 00000002 > [ 517.904174] 1fc0: 4d7c1300 7f651cdc b6ff5f10 0000017b 00000000 7f651cdc > 7f668000 00000000 > [ 517.904198] 1fe0: bec01530 bec01520 7f64c6c3 b6f70972 80000030 00000003 > 00000000 00000000 > [ 517.904273] [<c0024bac>] (omap_device_deassert_hardreset) from > [<bf893e53>] (pruss_probe+0x27a/0x470 [pruss_remoteproc]) > [ 517.904361] [<bf893e53>] (pruss_probe [pruss_remoteproc]) from > [<c0464acd>] (platform_drv_probe+0x35/0x74) > [ 517.904401] [<c0464acd>] (platform_drv_probe) from [<c0463613>] > (driver_probe_device+0x177/0x314) > [ 517.904437] [<c0463613>] (driver_probe_device) from [<c0463829>] > (__driver_attach+0x51/0x54) > [ 517.904470] [<c0463829>] (__driver_attach) from [<c04620ef>] > (bus_for_each_dev+0x43/0x64) > [ 517.904503] [<c04620ef>] (bus_for_each_dev) from [<c0462e77>] > (bus_add_driver+0xe3/0x170) > [ 517.904534] [<c0462e77>] (bus_add_driver) from [<c0463e19>] > (driver_register+0x39/0x8c) > [ 517.904593] [<c0463e19>] (driver_register) from [<bf898011>] > (pruss_init+0x10/0x63 [pruss_remoteproc]) > [ 517.904655] [<bf898011>] (pruss_init [pruss_remoteproc]) from > [<c00096bd>] (do_one_initcall+0xa5/0x194) > [ 517.904701] [<c00096bd>] (do_one_initcall) from [<c06baa4d>] > (do_init_module+0x49/0x13c) > [ 517.904752] [<c06baa4d>] (do_init_module) from [<c0096b53>] > (load_module+0x13b7/0x18ec) > [ 517.904791] [<c0096b53>] (load_module) from [<c00971cb>] > (SyS_finit_module+0x4f/0x70) > [ 517.904832] [<c00971cb>] (SyS_finit_module) from [<c000e8a1>] > (ret_fast_syscall+0x1/0x4c) > [ 517.904860] Code: 4605 b108 f8d0 51ec (7b2b) 460e > [ 518.588108] ---[ end trace 0000000000000002 ]--- > > Does anybody get any idea how to reload the pru using remotepro? > > > -- > For more options, visit http://beagleboard.org/discuss > --- > You received this message because you are subscribed to the Google Groups > "BeagleBoard" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected] <javascript:>. > For more options, visit https://groups.google.com/d/optout. > > > -- For more options, visit http://beagleboard.org/discuss --- You received this message because you are subscribed to the Google Groups "BeagleBoard" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
