天嵌 ARM开发社区

 找回密码
 注册
查看: 2070|回复: 5

亚瑟王 请一定要帮忙啊

[复制链接]
netyangarm 发表于 2009-8-7 11:30:54 | 显示全部楼层 |阅读模式
本帖最后由 netyangarm 于 2009-8-7 11:57 编辑

我将tq2440测试程序通过在nor中uboot下载功能直接下载到了nand里运行(不是sdram中)能够正常运行。但我想不通的是,测试程序在直接在nand中运行,由于大于4k所以必须先将程序从nand中拷贝到sdram中,但问题是测试程序只拷贝了256页(128k),而测试程序是5百多k,为啥下载到nand中后还能正常运行呢??

下面是测试程序可执行文件各段的大小   Total RO  Size(Code + RO Data)                48334 (  47.20kB)
    Total RW  Size(RW Data + ZI Data)            711600 ( 694.92kB)
    Total ROM Size(Code + RO Data + RW Data)     600290 ( 586.22kB)


下面的代码在2440init.s里,作用是将代码从nand拷贝到sdram:nand_boot_beg
        mov        r5, #NFCONF
        ;set timing value
        ldr        r0,        =(7<<12)|(7<<8)|(7<<4)
        str        r0,        [r5]
        ;enable control
        ldr           ro, =(0<<13)|(0<<12)|(0<<10)|(0<<9)|(0<<8)|(1<<6)|(1<<5)|(1<<4)|(1<<1)|(1<<0)
        str        r0, [r5, #4]
       
        bl        ReadNandID
        mov        r6, #0
        ldr        r0, =0xec73
        cmp        r5,        r0
        beq        %F1
        ldr        r0, =0xec75
        cmp        r5, r0
        beq        %F1
        mov        r6, #1
1       
        bl        ReadNandStatus
       
        mov        r8, #0
        ldr        r9, =ResetEntry
2       
        ands        r0, r8, #0x1f
        bne                %F3
        mov                r0, r8
        bl                CheckBadBlk
        cmp                r0, #0
        addne        r8, r8, #32
        bne                %F4
3       
        mov        r0, r8
        mov        r1, r9
        bl        ReadNandPage
        r9, r9, #512
                add        r8, r8, #1
4       
        cmp        r8, #256        ;只拷贝了256页啊
        bcc        %B2
       
        mov        r5, #NFCONF                        ;DsNandFlash
        ldr        r0, [r5, #4]
        bic r0, r0, #1
        str        r0, [r5, #4]
        ldr        pc, =copy_proc_beg

下面是使用nor中的uboot下载功能下载时的情况(实质上也烧写2百多k,也没有烧写完):
Enter your selection: 1
USB host is connected. Waiting a download.

Now, Downloading [ADDRESS:30000000h,TOTAL:600302]

RECEIVED FILE SIZE:  600302 (586KB/S, 1S)  //测试程序的大小


NAND erase: device 0 offset 0x0, size 0x40000

Erasing at 0x0 --   6complete.
Erasing at 0x4000 --  12ete.
Erasing at 0x8000 --  18ete.
..............................
Erasing at 0x38000 --  93lete.
Erasing at 0x3c000 -- 100lete.

OK


NAND write: device 0 offset 0x0, size 0x40000

Writing data at 0x0 --   0plete.
Writing data at 0xa00 --   1omplete.
....................................
Writing data at 0x3f400 --  99 complete.
Writing data at 0x3fe00 -- 100 complete.

262144 bytes written: OK  //实际烧写大小256k小于可执行程序的大小



想不通啊,烧写没烧写完(才烧写了256k);就连在nand中执行时拷贝也没拷贝完(才拷贝256页128k) 但程序就是能正常运行,想不通啊 ,老大们求救啊, 很痛苦

评分

参与人数 1 +1 收起 理由
luoyer + 1

查看全部评分

亚瑟王 发表于 2009-8-8 19:33:10 | 显示全部楼层
想不通很正常,你说的是TQ2440_Test.bin,不过你能自己看汇编分析出来这么多真的很不容易,这里有一个很小的细节你没有发现,就是实际上这个程序只有不到60K,而为什么最后编译出来是500多K呢?问题就出来图片文件的信息上,图片文件是在最后编译连接的,也就是说从70K开始就是存放的图片信息了,而程序拷贝了前面200多K,已经把程序的主体部分拷贝到了SDRAM了,剩余的图片部分没有拷贝进去。
你会问为什么要设置为200多K,原因是因为当初只是针对3.5寸屏的,图片很小,256K足够了,后来针对VGA和7寸屏增加了图片,而没有及时修改那个容量,一直没有注意到这个事情。
 楼主| netyangarm 发表于 2009-8-12 11:14:45 | 显示全部楼层
亚瑟王你好,请问你说的程序主体是不是指 code和RO_DATA,  这两段共47.2k, 我将程序改成只拷贝96页(48k)照样运行,这样在内存中只有code和RO_DATA,就没有了RW数据,那为什么还能显示图片呢,
亚瑟王 发表于 2009-8-12 16:39:20 | 显示全部楼层
前面已经回答了,256K里面已经包含了部分图像了,所以你能看到。
 楼主| netyangarm 发表于 2009-8-12 18:54:14 | 显示全部楼层
本帖最后由 netyangarm 于 2009-8-12 18:59 编辑

亚瑟王老大! 你没有读懂我的意思啊,你说的256k指的是587k烧写到nand中256k,而且在从nand(只有256k)启动时,程序自拷贝了256页(128k)到sdram,程序能够运行。甚至你cmp   r8, #256  改为cmp r8, #100
即只自拷贝100页(50k(即只自拷贝code+ro_data))同样正常运行,ram中没有rw为什么还可显示图片和声音?  我发现似乎在ram中运行时不需要rw数据。
你没有将程序烧写到nand 和程序从nand自拷贝到ram 分清楚啊,

    Total RO  Size(Code + RO Data)                48334 (  47.20kB)
    Total RW  Size(RW Data + ZI Data)            711600 ( 694.92kB)
    Total ROM Size(Code + RO Data + RW Data)     600290 ( 586.22kB)
亚瑟王 发表于 2009-8-13 11:19:51 | 显示全部楼层
这个东东我就没有那么仔细分析了,
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2024-5-15 09:01 , Processed in 1.046869 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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