-
-
Notifications
You must be signed in to change notification settings - Fork 7
Description
We currently have an IRQ implementation for the EV3 display. Since we have to write big continuous buffers we should be using the EDMA for this. All the necessary config can be found here but I could not get it to work in our driver.
The DMA does not seem to write any data, or perhaps reads only zeros. Could it be that the MMU/Cache is not configured properly? Do we need to do this in our firmware or maybe in u-boot? Note that that EV3RT driver is in turn based on the ev3dev driver. I have taken a minimal combination of both, stripping away almost all of the Linux stuff.
On a related note: I got some unusual behavior when I originally had the buffers as large static arrays in the driver module. They seemed to cause out of bound reads or writes, as adjacent variables (according to the elf map file) got bad values. I was able to work around this by putting the buffers in a dedicated spot with the linker file. Putting them there is probably not a bad thing, but we really shouldn't have to do that just to work around memory problems, so maybe there is something deeper going on here.