天嵌 ARM开发社区

 找回密码
 注册
查看: 1886|回复: 0

NAND FLASH复制到SDRAM执行

[复制链接]
chinxue 发表于 2018-10-28 00:27:35 | 显示全部楼层 |阅读模式
将韦东山的第8节NAND FLASH 4096地址起复制到SDRAM,再跳转到SDRAM运行,几经波折终于成功,各种论坛和网上资料都查了,相似问题不少,但是都没有解决自己问题。卡了3,4天,最后还是解决了,留给需要的TX。
1.先了解到卫东山FLASH是1608而TQ2440是2G08,页大小不一样,就要改nand.c的驱动,结果加上了cmd0x30的命令,不行;
2.可能是flash时序参数问题,就照着TQ的时序参数改了下,还是不行;
3.用点LED的子代码嵌入到韦东山程序中,一直执行到nand的复制都可以点灯,但是main就不点灯了;
4.怀疑汇编里面的跳转不对,又开始边学边改汇编,结果不行;
5.网上说uboot可能有问题,开始研究TQ的uboot,结果发现串口打印里面有个写地址到1f800,一算是63页,就开始怀疑是UBOOT搬的位置不对,找UBOOT,找到TQ其他的UBOOT,开始用JLINK烧UBOOT,结果UBOOT破解的被禁了。。不能烧UBOOT。。。发现DNW里面有个选项可以通过SDRAM烧,烧了个TQ另外的,还是不行,就没烧韦东山的了;
6.又开始重头走查一遍代码,理一遍思路,结果发现TQ的搬运代码里面,把ADD移了11位而不是12位,这和手册的理解不符,原来地址移位也重新改过那个函数没什么用,反正死马当活马,改了11一烧,灯亮了!!
7.为了证明不是程序跑飞点亮灯,小心将main里面灯值取反,灯灭了!!这下就知道已经复制成功了,再走查一遍,将卫东山的程序复制过来,改了ADD,弄上去应该是跑马灯,结果一直亮。。。又出新问题了;
8.以为管脚不对,又对一遍管脚,结果没问题,将延时和赋值换下顺序,发现灯会一闪。应该是延时函数问题,再加一层延时到3000,结果还是常亮,又改为FOR循环,还是亮,逼急了,改两层,弄成20000*30000,改为取反,不弄“复杂”的走马灯,结果来回闪,劳资一下想哭,终于。。。
9.弄完复盘总结,中间走了不少弯路,那几天晚上都没睡好,东西都看完了这么简单的还没出来,今晚不出来准备暂时放一下搞后面的UBOOT章了,驱动其他都走完了就剩这一章,中间还考虑过时钟,PLL等等都试了不行,现在看走偏路在第2的地方,被head.s的汇编带偏,一来不熟汇编,二来不熟链接,总认为这个地方有问题,如果今晚放弃了,弄UBOOT章节,可能还是卡,而汇编的跳转和复制代码是UBOOT的精髓,弄完之后nand那几段代码都会背了。。。由于自己半路出家,硬件是本职,所以学习都是从下往上,理解东西还是很快,但是代码还是要一个一个编,没有放弃而最终弄出来了,这种感觉带来的自信是放弃之后无法感受的,尽管论坛现在较冷清,但是用的TQ的板子,还是记在TQ的论坛,也以此自勉,遇到困难的时候不要放弃。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

评分

参与人数 1 +1 收起 理由
stephen2019 + 1 赞一个!

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号 )

GMT+8, 2024-4-16 12:19 , Processed in 1.046875 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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