搜索
bottom↓
回复: 5

嵌入式学习之移植篇

[复制链接]

出0入0汤圆

发表于 2011-7-6 18:33:12 | 显示全部楼层 |阅读模式
最近狂搞跨平台移植,小到小型游戏,大到文件系统、GUI以及OS,这里拿文件系统作为例子,主要阐述一个观点:编译器是死的,人是活的!


例 1


1 (原文件名:1.jpg)
上图为FatFs文件系统常用子函数,主要功能检查文件系统是否存在。其中"DWORD temp;”为本人额外定义,也就是说后两个if语句中"temp="也是原先没有的。当我完成前面所有移植工作,测试文件系统是否可用时,问题就出来了,挂载磁盘返回正确参数,但打开不了磁盘,测试程序死等,百般纠结,通过各种方法最终锁定问题根结所在,就是后两个if语句无法正确执行,根据以往经验立刻推断问题归咎编译平台不同。


例 2


2 (原文件名:2.jpg)
这个问题更为恶劣,文件系统移植完成,确认文件系统可用,并且前一天还在此文件系统上实现各种应用程序,第二天重新编译,发现显示屏显示不对劲,最下边稍微花屏,然后整个显示就乱了套,完全不符合本人的意愿,代码丝毫没有改动,显示却差之万里。首先确认故障原因不在硬件,然后,屏蔽所有显示子函数,花屏现象依然存在,真是郁闷。不过,此类问题不是一回两回碰到过,于是,对文件系统翻箱倒柜,确认问题出在上图所示子函数(该函数功能是读磁盘),其中"void *buff'上,传递给此参数的是一个数组名,此数组为


3 (原文件名:3.jpg)
其中"static"是后面加上去的,起初,由显示屏花屏判断问题跟底层显示驱动有关系,于是开干,往底层找,对底层很熟,三下五除二,找出了原因,显示屏显示要在内存开辟缓存,缓存为二维数组,如下图示


4 (原文件名:4.jpg)
花屏必定是buf数组跟缓存数组有叠加区域,为了把这两个区域强行隔开,buf数组加上关键字"static",问题迎刃而解!


总结:编译器类别纷繁多样,不存在一款万能的编译平台,它只是模拟人类的思维,按照我们预定的规则替我们办事,但往往不能尽如人意,跟我们的思维总会有差距。所以,编译器只是依照预定的规则给我们办事,规矩是死的,人是活的!

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2011-7-6 18:51:34 | 显示全部楼层
楼主研究的很仔细啊。咨询下楼主那个文件系统buf数组为啥会和LCD_BUFFER叠加起来呢?

出0入0汤圆

 楼主| 发表于 2011-7-6 19:01:38 | 显示全部楼层
回复【1楼】tedden
-----------------------------------------------------------------------

这也是本人依据现象做出的推断而已,估计编译器自身的问题!

出0入0汤圆

发表于 2011-7-6 19:10:50 | 显示全部楼层
回复【2楼】S418  
-----------------------------------------------------------------------

上次也有人问我类似的问题,说是定义两个数组改一个数组的元素另一个数组的也会变,估计就是这个情况。

出0入0汤圆

 楼主| 发表于 2011-7-7 09:15:03 | 显示全部楼层
回复【3楼】tedden
-----------------------------------------------------------------------

呵呵!

出0入0汤圆

发表于 2011-7-19 12:35:30 | 显示全部楼层
移植确实是一门学问啊
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 13:10

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表