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
Hi,
if you don't get any answers here on linaro-dev you might try users@igloocommunity.org or kernel@igloocommunity.org.
/Patrik
On 20 November 2011 01:02, X Y xyxy1901@mail.ru wrote:
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:
.... memset(cacheddata,5,1000000);
printf("%u",cacheddata[1000]);//prints garbage .....
..... 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