I didn’t adjust anything in the device tree. I never had to do that before to successfully run the Remoteproc examples. The only thing I have ever had to tweak is the pull-up/down resistors in the pads.
When I run lsmod, I am seeing normal Remoteproc drivers after modprobe commands, except for the rpmsg driver which is not getting inserted when I think it should.
I would think there is at least some element of the device tree entries in /sys which are independent of loadable kernel modules?
I’m trying to understand the approach to debug this type of problem.
I think I need to verify solid device tree entries for the PRUs and go from there. ???
So a while back, in one of the board overlay, or regular overlays, maybe
one of the includes( I forget which ) Robert had comments, and commented
out code for enabling UIO, or remoteproc in the latest TI kernels. I'm not
sure if the newer version of these files have the remoteproc includes
commented out or not. So what I'm saying here may not apply.
Let me search the groups here and find what I'm thinking of.
Yeah, Gregs’ working kernel is from before this change. So only had remoteproc ability. Where these new kernels have the ability to enable either / or.
So if my assumption that the left most bit of the first nibble is meant to be 0 for input. You’re device tree operation mode is incorrect. It’d be set in input mode with the current code I’m seeing. Mode 5 with output enabled. Should be 1101b or 0xDh. Then tacking on the 0x20h, you get 0x2Dh. LIke below:
You really need to check the actual pin address, and the pinmux field though to make sure what I’m saying is valid. I honestly don’t know for a fact. I’m making the assumption that the left most bit of the first nibble is in fact to set IO direction, and that your pin address is also valid.
Additionally, I have no idea what 0x20h is meant to do. I’m assuming it’s either for pull up or pull down enable, but I have not checked the documentation. I would think you could do away with the pullup / pulldown, for an output. But I honestly do not know what you’re attempting to do. In which case a value of 0xD would be sufficient. For the mux mode( if you do not need a pull up or pull down) Assuming my assumption is correct . . .
Blah, I got it wrong again. Seems 0xD was correct. But anyway, you have the means to do what you need. Just make sure you read the second link correctly. I got it wrong at first look because instead of reading what each bit Fields is intended to mean, I made assumptions again . . . like disabled = 0 when actually according to that page disabled = 1 . . .
I blended two types of overlays I have seen on the web, this is what the final working version looked like. My notable changes were in fragment 1 - pru_pru_pins_pinmux { } addition and the compatible = “bone-pinmux-helper”; (whatever that is seemed helpful)
I also in fragment 0 set a basic output pinmux to mode / settings of 0x05 (simple output).
/* identification */ part-number = “BB-BONE-PRU”; version = “00A0”;
/* state the resources this cape uses */ exclusive-use = /* the pin header uses */ “P9.27”, /* pru0: pr1_pru0_pru_r30_5 /
__/ the hardware IP uses */__ "pr1_pru0_pru_r30_5";