[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [microblaze-uclinux] a question about opb bus
Hi Leo,
It's my favourite part about working with MicroBlaze - building real
systems that match those you can imagine!
Now, on to your question:
leo han wrote:
> I found a strange problem. When I disables all the writes from
> microblaze 5, the system works. WHen I allow it to write memory, it
> could only run a little bit, then microblaze 1 will report a pipelin
> stall and abort.
> When I slow down the microblaze 5's execution by adding some idle loops
> (like a loop for 50000 times), it works again. However, if you just run
> the idle loop for 10000 times, it will fail.
>
> I don't use any fancy opb features, even not using the dynamic priority.
> I don't use any locks for the data memory. BTW, I am using XUP board
> with EDK 7.1.
>
> Can anybody point out some possible problem with the design?
It sounds like you are saturating the OPB bus. While the physical limit
is 16 masters (or is it 32?), if they are all trying to master the bus
at once, the arbiter has to schedule them somehow. This may manifest
itself as bus timeouts. So basically MicroBlaze's bus accesses are
failing.
There is an option in microblaze v4 to trigger a HW exception on a bus
error - maybe you can enable this option and install an exception
handler, that just keeps trying until it succeeds?
Another approach is to partition your OPB bus into multiple segments
with opb2opb bridges. However, I've had problems before trying to do
this, for similar reasons (bus timeout errors etc).
Hope this helps,
John
___________________________
microblaze-uclinux mailing list
microblaze-uclinux@xxxxxxxxxxxxxx
Project Home Page : http://www.itee.uq.edu.au/~jwilliams/mblaze-uclinux
Mailing List Archive : http://www.itee.uq.edu.au/~listarch/microblaze-uclinux/