求助OK6410裸机显示,调试正常,但是用sd烧录,会有2个图显示乱码

hyfwjhhyf 2015-04-05 11:35:19

最近本人在OK6410开发板上遇到一个问题,用RVDS2.2调试都ok,但是,用SD写入到falsh后(编译启动为0xc0008000,然后SD卡上有U-boot,zImage),启动后,大致正常,但是有2个菜单显示有乱码,(rvds调试时30多个菜单界面都正常!),后来,通过串口把这2个界面的显示数据传了出来,发现这样一个现象:本来图片界面数据是用数据const unsigned char gImage_set[261120] 定义的,然后显示时,从falsh中取出,送到显示缓冲,我发现在这个过程中,串口把falsh中取出的数与gImage_set数据不对,如图片gImage_set是0X86,0X31, 而从flash读出,送到串口为0X84,0X33 这样 。所以,我一直无法解决,不知道是编译出错,还是从PC机传zImage给SD卡错,还是SD启动后,传给NandFlash错?请大家指点,谢谢!
...全文
265 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
hyfwjhhyf 2015-04-10
  • 打赏
  • 举报
回复
引用 10 楼 Huntercao 的回复:
感觉是掉电之后,SD卡有了多余的动作。 看看你在掉电时候系统做了什么备份阿,保护之类的动作没有。或者说SD卡要求掉电时候有一些延时保护之类的,你的系统没有做。
您好, 感谢指点,烧录后,我就把SD卡取出来了,因为已经把zlmage写到Nandflash了,所以 我一写完就拔掉了,保护没有做哦,因为是裸机,一掉电,啥的也没法干了。
hyfwjhhyf 2015-04-10
  • 打赏
  • 举报
回复
[quote=引用 7 楼 Huntercao 的回复:] 那内容不对有什么规律么?都不对还是部分不对? 看看SD卡上的内容分布,是不是某些区域越界了? 试了一个晚上,发现有规律的事,每次烧录好,复位运行,这2幅图也是正常的,但是 ,一旦断电了,就出问题了。且出问题的总是这2个图,比如tu1【261120】、tu2【261120】是有问题的,而tu3【261120】一直没有问题,我就把tu3【261120】的名字改为tu1【261120】,此时显示ok,而把tu2的名字改为tu3,则也显示乱码,按说,这样就只定位在tu1【261120】、tu2【261120】里面的数据有问题,但是,不能解释的是,为何JILNK调试正常,SD烧录后不断电的时候正常? 而且另外发现调用延时函数时, void msdelay(int time) { volatile unsigned int i,j; for(i = 0; i < 2000; i++) for(j=0; j<time; j++); } SD烧录后msdelay(50); =15ms ;而rvds调试, 才2ms! 但是 用定时器产生的时间却是一致的。
曹大夯 2015-04-10
  • 打赏
  • 举报
回复
感觉是掉电之后,SD卡有了多余的动作。 看看你在掉电时候系统做了什么备份阿,保护之类的动作没有。或者说SD卡要求掉电时候有一些延时保护之类的,你的系统没有做。
hyfwjhhyf 2015-04-09
  • 打赏
  • 举报
回复
[quote=引用 7 楼 Huntercao 的回复:] 那内容不对有什么规律么?都不对还是部分不对? 看看SD卡上的内容分布,是不是某些区域越界了? 内容不对 有些规律,就是一个字节中 有1-2个bit变了,目前就是2个菜单不对,嗯 你提的SD上的内容分布, 我仔细看看,谢谢答复!!
曹大夯 2015-04-08
  • 打赏
  • 举报
回复
那内容不对有什么规律么?都不对还是部分不对? 看看SD卡上的内容分布,是不是某些区域越界了?
hyfwjhhyf 2015-04-08
  • 打赏
  • 举报
回复
你是说,gImage_set定义了图片数据,数据存在Flash上。 通过串口读到PC上,发现gImage_set内容不对?[/quote] 嗯 是啊 ,所以觉得很奇怪,且就是那2个图片有这样的问题,这几天也换了4块板子来试,也是这样,就是这2个图片,而 我用Jlink调试时,没一点问题,郁闷中啊!不知怎办,我今天打电话去问了 飞凌售后,他们说,在把SD的zlmage文件读入,写到Nandflash前,他们会检查flash的坏块,有坏的标记的不去写的,所以,现在不知怎办了。
hyfwjhhyf 2015-04-08
  • 打赏
  • 举报
回复
顶起,大家继续指教啊!
曹大夯 2015-04-08
  • 打赏
  • 举报
回复
引用 楼主 hyfwjhhyf 的回复:
本来图片界面数据是用数据const unsigned char gImage_set[261120] 定义的,然后显示时,从falsh中取出,送到显示缓冲,我发现在这个过程中,串口把falsh中取出的数与gImage_set数据不对,如图片gImage_set是0X86,0X31, 而从flash读出,送到串口为0X84,0X33 这样 。!
你是说,gImage_set定义了图片数据,数据存在Flash上。 通过串口读到PC上,发现gImage_set内容不对?
hyfwjhhyf 2015-04-07
  • 打赏
  • 举报
回复
不会,我用rvda 调试时,完全ok,且别的图片显示也正常,就这2个图 在SD烧录后 才不对,同调用一个显示程序,只是数组内容不同。
fly 100% 2015-04-07
  • 打赏
  • 举报
回复
感觉是显示格式错误了
hyfwjhhyf 2015-04-06
  • 打赏
  • 举报
回复

附上显示的效果,背景原来是 像 计算器一样的输入窗口, 目前只有后来叠加的显示框正确,背景乱码了!
请大家指点!

21,600

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧