ядро зависло при запуске на плате iMx6solo - PullRequest
0 голосов
/ 25 февраля 2019

У меня настроенная сольная доска imx6.1 ГБ оперативной памяти 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 не работает, (думаю, инициализация не выполнена).К счастью, у меня на борту есть несколько светодиодов, поэтому я попытался их использовать и отследить код.кажется, что ядро ​​зависает при включении 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, но в зависимости от загрузки он кажется отключенным.

, пожалуйста, помогите мне найти решение.спасибо Вахид

...