Re: Task switching in the case of the bus congestion



Vladimir Vassilevsky wrote:

Recently I run into the following problem: the CPU gets blocked for a relatively long period of time (~50us) because the bus is occupied by the high priority DMA transfer to the slow peripheral device. I solved that particular problem by changing the bus priorities and breaking the long DMA transfer into a series of the short bursts. I don't like this solution because it is too specific to the application and it also increases the bus overhead.

It's the bus occupation that's the problem, so switching tasks won't help unless the other tasks execute purely from internal memory and don't use the bus at all. Even using short bursts won't reduce the bus hogging by the slow peripheral, though it will reduce the dead time of other tasks. The only way I can think of offhand is to physically partition the bus using a custome DMA controller, so that the long slow DMA can happen at leisure. Or use a 68E09 (remember the Dragon 32/ Tandy Color Computer and its display subsystem?).

.