A couple of things: - Have you sized your DMA transactions so that you have some idea of how much internal bandwidth you’re actually using? This can help you decide whether you’re tight on bandwidth or whether there’s a latency issue that needs to be addressed.
- If you are trying to communicate with other devices and you’re tight on bandwidth, a combination of a USART (possibly in synchronous mode) and DMA priority might help. - Have you enabled the DMA controller FIFO? If you’re not up against the wall for bandwidth, this can win you some insulation against latency. - Can you fit all your frame buffer in SRAM2 (40x/41x) or SRAM3 (42x/43x)? They are separate slaves off the bus matrix, so as long as you keep the CPU out of them while you are DMAing, you will see less contention. On 31 Jan 2014, at 10:31 pm, skeezix <[email protected]> wrote: > On Fri, 31 Jan 2014, Jeff Mitchell wrote: > > # Excellent and many thanks! This will be enormously useful! > > .. and it was; I was able to get an order of magnitude increase in > processing with this trick. > > The DMA problem is still quite a nuisance though; there is other > work to be done.. and just toggling a GPIO pin causes VGA image distortion > by colliding with the DMA. I can toggle a GPIO or read a GPIO during > hsync, or vsync/vblank period. But if some other device sends something to > the stm32, and theres an interupt on the gpio pin to catch it, I'm going > ot have image distortion just to check the gpio values. (The interupt > itself is okay.) > > I can try to do trickery such as receive the pin interupt, set a > volatile flag, and then in the next hsync pull in the gpio state. This > works, but then limits you to receiving only about 30,000 hits per second > which is really not all that high (if you're streaming data between chips, > via bitbang .. or don't want to miss the incoming data before it changes > again; could maybe do i2c/etc, but the chips I'm talking to don't do > any of that.. so I'd have to drop in an avr8 or stm8 or shift register > chain or something, to serialize the incoming requests or change its > protocol.. ugh!) > > Next up.. check the ref guide to see if possibly some GPIOs are on > different buses relative to RAM, or anything like that; with lucky > choices, is it possible to read/write a GPIO without getting in the way of > DMA2 hitting GPIO and RAM.. otherwise, up to serious timing games :/ > > Fun fun fun :) > > jeff > > -- > If everyone would put barbecue sauce on their food, there would be no war. > > ------------------------------------------------------------------------------ > WatchGuard Dimension instantly turns raw network data into actionable > security intelligence. It gives you real-time visual feedback on key > security issues and trends. Skip the complicated setup - simply import > a virtual appliance and go from zero to informed in seconds. > http://pubads.g.doubleclick.net/gampad/clk?id=123612991&iu=/4140/ostg.clktrk > _______________________________________________ > libopencm3-devel mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/libopencm3-devel ------------------------------------------------------------------------------ WatchGuard Dimension instantly turns raw network data into actionable security intelligence. It gives you real-time visual feedback on key security issues and trends. Skip the complicated setup - simply import a virtual appliance and go from zero to informed in seconds. http://pubads.g.doubleclick.net/gampad/clk?id=123612991&iu=/4140/ostg.clktrk _______________________________________________ libopencm3-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/libopencm3-devel
