内核在iMx6solo定制板上启动时卡住

时间:2019-02-25 06:05:44

标签: linux-kernel imx6

我有一个定制的imx6独奏板。 1 GB的DDR3内存和MMC进行引导。

我已经移植了u-boot(fslc社区之一),它似乎工作正常。 我还运行了压力RAM测试,结果正常。 (校准数据用于imximage.cfg)

当我尝试运行内核时,它停留在“ 启动内核”上 命令:

>>ext4load mmc 0 ${loadaddr} zImage
>>ext4load mmc 0 ${fdt_addr} *.dtb
>>bootz ${loadaddr} - ${fdt_addr}

(loadaddr = 0x12000000和fdt_addr = 0x18000000  bootargs具有正确的ttymxc和波特率值)

早期printk表示: “ 解压缩Linux ...完成,启动内核

printk 不起作用,(猜想初始化未完成)。 幸运的是,我板上有一些LED,因此我尝试使用它们并跟踪代码。 内核似乎无法启用MMU:

/arch/arm/kernel/head.S:

.
.
    ENTRY(__turn_mmu_on)
        mov r0, r0
        instr_sync
        mcr p15, 0, r0, c1, c0, 0
        mrc p15, 0, r3, c0, c0, 0
        instr_sync
        mov r3, r3
        mov r3, r13
        ret r3
    __turn_on_mmu_end
    ENDPROC(__turn_mmu_on)`enter code here`
...

那些mcr和mrc是我可以在它们之前而不是之后切换GPIO的地方!

我应该添加:要切换到GPIO,我要在它们之前使用物理地址,然后在之后使用虚拟地址。(我还测试了物理添加) 物理地址:例如0x0209c000-> gpio数据寄存器 哪个虚拟地址是:0xf429c000(仅在iMX平台中)

在启动内核之前,我也禁用了I / D缓存。 不知道如何禁用MMU,但根据u-boot似乎已禁用。

请帮助我找到解决方案。 谢谢 瓦希德(Vahid)

0 个答案:

没有答案