主题 : 裸机程序超过2.5M,有的画面显示不出来 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 38216
精华: 0
发帖: 19
金钱: 95 两
威望: 19 点
综合积分: 38 分
注册时间: 2011-02-23
最后登录: 2011-03-31
楼主  发表于: 2011-03-28 17:00

 裸机程序超过2.5M,有的画面显示不出来

我写了个2440的裸机程序,大概的功能是图片不停的切换。240x320的图片。我就往程序里面加了很多图片的c文件,发现.bin文件超过2.8M左右(16幅图片),下载到nand里面,图片也只能显示16幅,加再多的图片也只有16幅可以显示,但是下载到sdram里面运行就可以, 求高手点拨!

感觉像从nand启动的时候,从nand往ram里面拷贝程序的时候没有考完,有大小的限制,不知道从哪里下手。
级别: 新手上路
UID: 38216
精华: 0
发帖: 19
金钱: 95 两
威望: 19 点
综合积分: 38 分
注册时间: 2011-02-23
最后登录: 2011-03-31
1楼  发表于: 2011-03-29 16:22
自己顶下~
级别: 新手上路
UID: 38706
精华: 0
发帖: 3
金钱: 15 两
威望: 3 点
综合积分: 6 分
注册时间: 2011-02-28
最后登录: 2011-08-08
2楼  发表于: 2011-03-29 17:35
顶,我也遇到了同样的问题。求高手指点。
级别: 新手上路
UID: 38216
精华: 0
发帖: 19
金钱: 95 两
威望: 19 点
综合积分: 38 分
注册时间: 2011-02-23
最后登录: 2011-03-31
3楼  发表于: 2011-03-30 11:17
待高手出现!
级别: 新手上路
UID: 9385
精华: 0
发帖: 8
金钱: 45 两
威望: 12 点
综合积分: 16 分
注册时间: 2009-09-27
最后登录: 2014-08-19
4楼  发表于: 2011-05-21 14:08
在2240init.s文件内有如下代码:
    mov    r0, r8
    mov    r1, r9
    bl    ReadNandPage
    add    r9, r9, #512
    add    r8, r8, #1
4    
    ;cmp    r8, #512
    cmp    r8, #20480
    bcc    %B2
    
    mov    r5, #NFCONF            ;DsNandFlash
    ldr    r0, [r5, #4]
    bic r0, r0, #1
    str    r0, [r5, #4]
    ]
    ldr    pc, =copy_proc_beg

;cmp    r8, #512
改为
    cmp    r8, #20480
其意思是拷贝多少个“块”的内容到SDRAM内。
在nand.c内也需要修改
如下:
void CopyProgramFromNand(void)
{
    const int bLargeBlock = Nand_Init();
    //const unsigned StartSector = 0, StopSector = 5120;
    const unsigned StartSector = 0, StopSector = 20480;    //修改
    const unsigned byte_sector_shift = 9;