読者です 読者をやめる 読者になる 読者になる

video + microblze + mmu

合成終了。
1時間30分くらいかかった模様。
途中、理由は分からないが、chipscope が合成の邪魔をしていたので外すことにした。nommu 版ではなかったのに、、、
MMU の linux も動いた模様。あれ?/bin/init が動かない?あっそうか、FLAT だからね。ELF にしたら動くでしょう。ここは実績があるから心配するところではない。
問題はちゃんとドライバが動くかどうか。ここも実績があるから、トラブルがあっても収束は早いはず。

あれまー
__ioremap(): phys addr 52000000 is RAM lr c01a0c44

        /*
         * Don't allow anybody to remap normal RAM that we're using.
         * mem_init() sets high_memory so only do the check after that.
         *
         * However, allow remap of rootfs: TBD
         */
        if (mem_init_done &&
                p >= memory_start && p < virt_to_phys(high_memory) &&
                !(p >= virt_to_phys((unsigned long)&__bss_stop) &&
                p < virt_to_phys((unsigned long)__bss_stop))) {
                printk(KERN_WARNING "__ioremap(): phys addr "PTE_FMT
                        " is RAM lr %p\n", (unsigned long)p,
                        __builtin_return_address(0));
                return NULL;
        }

high_memory を設定する必要と bss のチェックが必要だな。

Oops: kernel access of bad area, sig: 11
 Registers dump: mode=57825CDC
 r1=00000400, r2=00000000, r3=C018FE35, r4=81610104
 r5=81610000, r6=00000076, r7=00000021, r8=00000001
 r9=00000001, r10=00000000, r11=C018FE35, r12=81610000
 r13=00000000, r14=C01A9C54, r15=C0143F10, r16=00000000
 r17=C0144230, r18=00000000, r19=C018FE34, r20=00000000
 r21=00000000, r22=C018FE35, r23=00000000, r24=C018FE34
 r25=C018FD98, r26=00000000, r27=00000000, r28=00000000
 r29=00000000, r30=00000000, r31=C7821CC0, rPC=C0144230
 msr=000042A2, ear=81610104, esr=00000872, fsr=C7825DB7

はいカーネルパニック。ひとつだけ物理アドレスを直接使っていました。
修正して、実行と、、、、
オー動いた。かどうかはわからないけど、カーネルパニックは起きずに、DVI はつながった。