• «
  • 1
  • 2
  • »
  • Pages: 1/2     Go
主题 : 如何修改vivi代码使2440支持128M nand flash 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 9254
精华: 0
发帖: 44
金钱: 450 两
威望: 225 点
综合积分: 88 分
注册时间: 2009-09-23
最后登录: 2009-12-12
楼主  发表于: 2009-09-23 10:47

 如何修改vivi代码使2440支持128M nand flash

管理提醒: 本帖被 kasim 从 QQ2440资料下载中心 移动到本区(2009-10-30)
我修改了vivi代码,使它支持128M NAND FLASH,现在vivi能够起来,,但是我用,load flash vivi x重新下载vivi后,就无法启动了,我看了源码的nand_erase()和nand_write(),感觉应该是地址和操作的问题,可是我觉得和文档对着,,不知道该怎么办,请斑竹给点建议。。。
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
1楼  发表于: 2009-09-23 11:47
抱歉,我猜不到你是怎么改的
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 新手上路
UID: 9254
精华: 0
发帖: 44
金钱: 450 两
威望: 225 点
综合积分: 88 分
注册时间: 2009-09-23
最后登录: 2009-12-12
2楼  发表于: 2009-09-23 15:04
我主要修改了nand_read.c文件中的nand_read_ll()这个函数,因为head.s调用这个函数,我改了操作方式,            
           NFCMD = 0;
        
                     NFADDR = 0x0;
        NFADDR = 0x0;
        NFADDR = (i >> 11) & 0xff;
        NFADDR = (i >> 19) & 0xff;
                    NFCMD=0x30;
然后就是修改了每页的大小的那个宏,现在vivi能跑起来,,但是,load命令用不了,一烧完就起不来了,我用sourceinsight跟踪代码,感觉就是nand_erase()和nand_write()这两个函数的问题,版主能不能给点意见。。
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
3楼  发表于: 2009-09-23 15:25
我的建议是去对比512 page size和2048 page size的NAND Flash datasheet, 找出erase和program时两种Flash的命令,地址时序不同,然后相应的调整nand_erase()和nand_write()
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 新手上路
UID: 9254
精华: 0
发帖: 44
金钱: 450 两
威望: 225 点
综合积分: 88 分
注册时间: 2009-09-23
最后登录: 2009-12-12
4楼  发表于: 2009-09-23 16:28
我也是这个思路,,我已经对比过这两个芯片手册了,他们的erase和write命令是一样的的,至于地址时序问题,感觉是一样的,我再仔细看看。。
级别: 新手上路
UID: 9254
精华: 0
发帖: 44
金钱: 450 两
威望: 225 点
综合积分: 88 分
注册时间: 2009-09-23
最后登录: 2009-12-12
5楼  发表于: 2009-09-24 16:06
版主,我现在用vivi烧写vivi已经可以了,但是烧写内核时却出现以下的信息
Downloaded file at 0x30000000, size = 1753088 bytes
Found block size = 0x001c0000
Erasing...   nand_erase(): Unaligned address
... failed
Unaligned address是什么意思呢?是没有对齐吗,难道这个和vivi中kernel的起始地址还有关?请斑竹指点一下。。
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
6楼  发表于: 2009-09-24 16:24
2048 page size的NAND Flash的block size应该是2048 * 64 = 128K, 因为NAND Flash擦除的最小单位是一个block,所以擦除操作的起始地址必须是128K对齐的(相对于NAND Flash的偏移量)。
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 新手上路
UID: 9254
精华: 0
发帖: 44
金钱: 450 两
威望: 225 点
综合积分: 88 分
注册时间: 2009-09-23
最后登录: 2009-12-12
7楼  发表于: 2009-09-24 16:29
也是就说,我在vivi分区时,,必须把vivi,kernel,root的offset地址对齐128k,我的内核的offset是0x00050000,这个地址是不行的,是这个意思吗?
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
8楼  发表于: 2009-09-24 16:52
是的,因为写内核之前必须擦除内核镜像所在的NAND Flash区域,这块区域的起始地址和长度必须是128K对齐的
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 新手上路
UID: 9254
精华: 0
发帖: 44
金钱: 450 两
威望: 225 点
综合积分: 88 分
注册时间: 2009-09-23
最后登录: 2009-12-12
9楼  发表于: 2009-09-25 13:03
版主,现在我把内核和文件系统都烧进去了,,然后引导,又出现了这样的问题: <0>Kernel panic - not syncing: Attempted to kill init!,我在网上查了一下,,也没有解决,另外我想了解一下内核是如何加载文件系统这一流程?是不是需要读内核的启动过程呢?请斑竹给些建议。。。
  • «
  • 1
  • 2
  • »
  • Pages: 1/2     Go