韦东山Linux嵌入式课程社区
直播中

李丽

7年用户 1395经验值
私信 关注

为什么NAND FLASH控制器在mini2440板子上无法实现跑灯?

问题描述:代码是从网盘上下载的,支持Mini2440,之前的裸板程序都能很好运行.偏偏这个nand程序有问题?目前还不确定是哪里出了问题,只是程序用oflash烧录进去后,一个led都不亮.

主要是:
1.我还没学会如何调试这种程序
2.不知如何下手
我已尝试的方法:
1.按照@答疑助手-stronger 说的先试一个Led,将main.c的程序修改如下,测试后依然如故:
  • #define        GPBCON                (*(volatile unsigned long *)0x56000010)
  • #define        GPBDAT                (*(volatile unsigned long *)0x56000014)
  • /*
  • * LED1,LED2,LED4对应GPB5、GPB6、GPB7、GPB8
  • */
  • #define        GPB5_out        (1<<(5*2))
  • #define        GPB6_out        (1<<(6*2))
  • #define        GPB7_out        (1<<(7*2))
  • #define        GPB8_out        (1<<(8*2))
  • void  wait(volatile unsigned long dly)
  • {
  •         for(; dly > 0; dly--);
  • }
  • int main(void)
  • {

复制代码



请各位帮忙指点一下下,小生感激不禁.这大半夜的,发帖不容易
另,附加未经修改的原程序反汇编文件nand.dis供各位参考,我先睡觉去

回帖(4)

冯超

2019-8-16 09:57:20
你这是MINI2440代码吗?led接的GPIO是哪个 这你要搞清楚
举报

李玉梅

2019-8-16 10:07:45
sorry,点亮第一个led的代码如下.之前贴的代码好像没复制全就发帖了...


  • #define        GPBCON                (*(volatile unsigned long *)0x56000010)
  • #define        GPBDAT                (*(volatile unsigned long *)0x56000014)


  • /*
  • * LED1,LED2,LED4对应GPB5、GPB6、GPB7、GPB8
  • */
  • #define        GPB5_out        (1<<(5*2))
  • #define        GPB6_out        (1<<(6*2))
  • #define        GPB7_out        (1<<(7*2))
  • #define        GPB8_out        (1<<(8*2))

  • void  wait(volatile unsigned long dly)
  • {
  •         for(; dly > 0; dly--);
  • }

  • int main(void)
  • {
  • //        unsigned long i = 0;

  •         // LED1,LED2,LED3,LED4对应的4根引脚设为输出
  • //        GPBCON = GPB5_out | GPB6_out | GPB7_out | GPB8_out;
  •         GPBCON = GPB5_out;

  •         while(1){
  • //                wait(30000);
  • //                GPBDAT = (~(i<<5));                 // 根据i的值,点亮LED1,2,3,4
  •                 GPBDAT = (~(1<<5));                 // 根据i的值,点亮LED1,2,3,4
  • //                if(++i == 16)
  • //                        i = 0;
  •         }

  •         return 0;
  • }

复制代码
举报

曹丽娜

2019-8-16 10:15:55
还有一点没有说明,这款mini2440用的nand flash型号是 k9f1208u0c
为了便于大家参考,我这里上传整个nand代码和nand数据手册.
举报

李进锋

2019-8-16 10:33:40
问题解决了,原来是k9f1208是small block的.
将nand.c里的

  • #define  LARGER_NAND_PAGE

复制代码
注释掉,即可实现预想结果.

顺便上传一下,我在网上搜到的关于Nand大小块对比资料.供各位参考.
举报

更多回帖

发帖
×
20
完善资料,
赚取积分