Hi,
We are porting some linux distro (developed at our university) to the Snowball
board as a study assignment. Mostly it is just a minimalistic and striped
version of Ubuntu with minimal set of drivers. We have some problem with cache
on this board. Currently only one core is active. Also we are using U-boot,
which comes with the board. Mostly we rely on hardware initialization done there
.
The system hangs at some point. We have identified the problem. So let me
describe it. If we have some memory region, which is cached then it takes some
time till it gets updated from cache. Let me explain this by giving some
example:
1.
....
memset(cacheddata,5,1000000);
printf("%u",cacheddata[1000]);//prints garbage
.....
2.
.....
memset(cacheddata, 5,1000000);
Delay();//about 0.5 sec, delay should be at least 0.5 sec
printf("%u",cacheddata[1000]);//works just fine
.....
If memory region is uncached than it works fine and doesn't need delay. Also
inserting delays in caching functions solves the problem with hanging.
So it seems that it takes some time to complete data transfers between cache
and memory but the code continues to execute while caching operation is not
finished. I am not sure if I can dig solution from linaro distro. I have never
seen anything like that before. Can you please tell what can be possibly wrong
there? Maybe there is some hardware component that we have to add support for.
Any ideas are welcome.
Thanks
_______________________________________________
linaro-dev mailing list
[email protected]
http://lists.linaro.org/mailman/listinfo/linaro-dev