搜索
bottom↓
回复: 8

ARM9 S3C2440 启动代码 到这就飞了 并且复位了 为什么? 初学者希望前辈指点下 谢谢

[复制链接]

出0入0汤圆

发表于 2010-12-16 19:53:52 | 显示全部楼层 |阅读模式
; boot from NAND flash
        mov     r0,r1
        sub     r2,r2,r1
        mov     r1,#0
        ldr     lr, =On_The_Ram
        b       nand_read_ll  ///  调用后没有问题
///////////////////////////上面是启动代码里面的 下面是调用函数////////



    int nand_read_ll(unsigned char *buf, unsigned long start_addr, int size)
{
    int i;
    unsigned long addr, baddr;

    if ((start_addr & NAND_BLOCK_MASK)/* || (size & NAND_SECTOR_MASK)*/) {
        return -1;        /* invalid alignment */
    }

    /* chip Enable */
    NAND_CHIP_ENABLE;
    for(i=0; i<100; i++);

    for(baddr=start_addr&~NAND_BLOCK_MASK; size>0; baddr+=NAND_BLOCK_SIZE) {

        /* READOOB */
        NAND_CLEAR_RB;
        NFCMD = NAND_CMD_READOOB;
         
        /* Write Address */
                NFADDR = (5) & 0xff;
                NFADDR = (baddr >> 9) & 0xff;
                NFADDR = (baddr >> 17) & 0xff;
                NFADDR = (baddr >> 25) & 0xff;
               
                NAND_DETECT_RB
                if ((NFDATA & 0xff)!= 0xff) {
                    //Uart0_Printf ("bad block at %d\r\n",baddr>>14);
                    continue;   //bad block
                }
         
        for(addr=0; addr<NAND_BLOCK_SIZE && (size>0); size-=NAND_SECTOR_SIZE,addr+=NAND_SECTOR_SIZE) {
          /* READ0 */
          NAND_CLEAR_RB;
          NFCMD = 0;
   
         
          /* Write Address */
                    NFADDR = (baddr+addr) & 0xff;
                    NFADDR = ((baddr+addr) >> 9) & 0xff;
                    NFADDR = ((baddr+addr) >> 17) & 0xff;
                    NFADDR = ((baddr+addr) >> 25) & 0xff;
   
          NAND_DETECT_RB
   
          for(i=0; i < NAND_SECTOR_SIZE; i++) {
                *buf = (NFDATA & 0xff);        //////函数在这就死机了  不知道为什么  希望得到指点
                buf++;
          }
        }
    }

    /* chip Disable */
    NAND_CHIP_DISABLE;

    return 0;
}

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2010-12-16 20:17:26 | 显示全部楼层
估计data abort了。

出0入0汤圆

发表于 2010-12-16 20:21:15 | 显示全部楼层
检查一下调用c函数时传递进来的参数是否正确.

出0入0汤圆

 楼主| 发表于 2010-12-17 22:13:43 | 显示全部楼层
bootload 怎么也不好用 我也不知道我的硬件是不是有问题了  我还出现了一个问题 别人做的bin 我用就可以   arm 太难了 谢谢楼上的回答 我会努力的

出0入0汤圆

发表于 2010-12-17 22:35:42 | 显示全部楼层
你是用的软仿真还是硬件联调?

出0入0汤圆

 楼主| 发表于 2010-12-18 09:09:09 | 显示全部楼层
回复【4楼】lanxing18
-----------------------------------------------------------------------

我用硬件在sdram上调试 好用 但是 我修改ao后00x00000000  用h-jtag flash 烧写后 总是到上面所说的位置又返回到了 复位地址。 为什么我用仿真好用 ,硬件不好用那 难道我还有设置不对的地方,全看说明书来操作的那,迷茫了 对arm都害怕了。 谢谢四楼的关注!

出0入0汤圆

发表于 2010-12-18 14:35:20 | 显示全部楼层
堆栈、外部ram初始化

出0入0汤圆

 楼主| 发表于 2010-12-20 15:15:40 | 显示全部楼层
搞定了 起始地址给弄错了 我吧转移的地址设成0x000000000了 当然要复位了 谢谢各位了

出0入0汤圆

发表于 2011-3-2 14:27:20 | 显示全部楼层
mark!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 23:24

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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