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
linaro-dev@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-dev

Reply via email to