天嵌 ARM开发社区

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

自做的UBOOT出现诡异问题。。

[复制链接]
y296144646q 发表于 2010-7-4 20:34:04 | 显示全部楼层 |阅读模式
你好:最近自己做了个UBOOT移植到TQ2440上,一切都正常啦 启动如下:
U-Boot 1.1.6 (Jun 20 2010 - 09:35:17)

DRAM:  64 MB
Flash:  1 MB
NAND:  256 MiB
*** Warning - bad CRC, using default environment

In:    serial
Out:   serial
Err:   serial
Hit any key to stop autoboot:  0
[ ~ljh@GDLC ]#
可发现用JTAG烧写uboot进NANDFLASH后 断电  在一小段时间内开机 一切正常  但只要断电时间一长 然后在开机啥都没反应 需要重新下   换一种方式烧写后(用TQ的uboot从NOR FLASH启动 然后通过USB将我的自制uboot烧进NAND FLASH)烧完后不能断电 一断电在重起就没反映啦  请问下是不是我的uboot还是有问题啊
 楼主| y296144646q 发表于 2010-7-5 10:19:47 | 显示全部楼层
本帖最后由 y296144646q 于 2010-7-5 10:20 编辑

我找到原因啦 是因为start.S文件中没加下面一段代码引起的(但不太明白,所以把代码附上想问下为什么?)

@ HJ
.globl Launch
    .align        4
Launch:   
    mov r7, r0
    @ diable interrupt
        @ disable watch dog timer
        mov        r1, #0x53000000
        mov        r2, #0x0
        str        r2, [r1]

    ldr r1,=INTMSK
    ldr r2,=0xffffffff  @ all interrupt disable
    str r2,[r1]

    ldr r1,=INTSUBMSK
    ldr r2,=0x7ff       @ all sub interrupt disable
    str r2,[r1]

    ldr     r1, = INTMOD
    mov r2, #0x0        @ set all interrupt as IRQ (not FIQ)
    str     r2, [r1]

    @
        mov        ip, #0
        mcr        p15, 0, ip, c13, c0, 0      @        /* zero PID */
        mcr        p15, 0, ip, c7, c7, 0       @        /* invalidate I,D caches */
        mcr        p15, 0, ip, c7, c10, 4      @        /* drain write buffer */
        mcr        p15, 0, ip, c8, c7, 0       @        /* invalidate I,D TLBs */
        mrc        p15, 0, ip, c1, c0, 0       @        /* get control register */
        bic        ip, ip, #0x0001             @        /* disable MMU */
        mcr        p15, 0, ip, c1, c0, 0       @        /* write control register */

    @ MMU_EnableICache
    @mrc p15,0,r1,c1,c0,0
    @orr r1,r1,#(1<<12)
    @mcr p15,0,r1,c1,c0,0

#ifdef CONFIG_SURPORT_WINCE
    bl Wince_Port_Init
#endif

    @ clear SDRAM: the end of free mem(has wince on it now) to the end of SDRAM
    ldr     r3, FREE_RAM_END
    ldr     r4, =PHYS_SDRAM_1+PHYS_SDRAM_1_SIZE    @ must clear all the memory unused to zero
    mov     r5, #0

    ldr     r1, _armboot_start
    ldr     r2, =On_Steppingstone
    sub     r2, r2, r1
    mov     pc, r2
On_Steppingstone:
2:  stmia   r3!, {r5}
    cmp     r3, r4
    bne     2b

    @ set sp = 0 on sys mode
    mov sp, #0

    @ add by HJ, switch to SVC mode
        msr        cpsr_c,        #0xdf        @ set the I-bit = 1, diable the IRQ interrupt
        msr        cpsr_c,        #0xd3        @ set the I-bit = 1, diable the IRQ interrupt
    ldr sp, =0x31ff5800       
   
    nop
        nop
    nop
        nop

        mov     pc, r7  @ Jump to PhysicalAddress
        nop
    mov pc, lr
没有这段代码问啥断电一段时间就出问题啊
回复

使用道具 举报

亚瑟王 发表于 2010-7-6 11:20:44 | 显示全部楼层
没有搞懂你的意思。
回复

使用道具 举报

liushuiyue 发表于 2010-7-19 15:23:23 | 显示全部楼层
上面是首先进行关闭看门狗,关闭中断和内存管理单元,拷贝flash的内容到ram运行之类的一些初始化操作,如果没有的话,他怎么运行啊,我是这样理解的
回复

使用道具 举报

亚瑟王 发表于 2010-7-24 20:56:56 | 显示全部楼层
问题是
.globl Launch
    .align        4
Launch:   
这段是在Wince运行时才会用到的,和他现在的情况不一样。
回复

使用道具 举报

 楼主| y296144646q 发表于 2010-8-8 14:43:15 | 显示全部楼层
谢谢啦  是我自己找原因找错了 现在知道啦
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2025-8-8 15:00 , Processed in 2.043000 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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