APC8750にNetBSD/evbarmを移植するための記録 8/9
2014/01/04(土) 27:01 NetBSD はてブ情報 はてブに登録 はてブ数

BeagleBone Blackを買って遊んだり、JNUG総会&BoFを欠席して懇親会だけ参加してみたり、納涼もんご祭りに遊びに行ったり、OSC京都でLuna見たり、そんなこんなで3か月ほど間が空きました。

さて、initarmまで来たら、次はprintfを動かすのが大きなマイルストンです。
そのための第一歩として、コンソールの初期化ルーチンであるconsinitを実装しなければなりません。

この時点でなぜかシリアルインタフェースが16550互換だと信じ込んでおり、evbarm/armの下にある16550関連のソースを読み比べて、シンプルなhdlg_machdep.cのconsinitをまねてcomドライバを呼ぶ処理を書いてみました。

そして...
U-Boot 1.1.4 (Dec  5 2012 - 19:23:59)
WonderMedia Technologies, Inc.
U-Boot Version : 0.28.00.00
U-Boot code: 03F80000 -> 03FCEE38  BSS: -> 03FF0A88
boot from spi flash.
SF0: ManufID = C2, DeviceID = 2013 (Missing or Unknown FLASH)
     Use Default - Total size = 8MB, Sector size = 64KB
SF1: ManufID = FF, DeviceID = FFFF (Missing or Unknown FLASH)
     Use Default - Total size = 8MB, Sector size = 64KB
flash:
     Bank1: FF800000 -- FFFFFFFF
     Bank2: FF000000 -- FF7FFFFF
Flash: 16 MB
sfboot: NAND init:env nand config fail, use default flash id list info
pllb=0x2270001, spec_clk=0x140a0cff
T1=2, clk1=18, div1=9, Thold=1, tREA=20+delay(9)
T2=1, clk2=36, div2=18, Thold2=1, comp=1
Tim1=442368 , Tim2=589824
T2 is greater and not use
T=2, clk=18, divisor=9, Thold=0x601
divisor is set 0x9, NFC_timing=0x2424
USE_HW_ECC ECC12bit
2048 MB
In:    serial
Out:   serial
Err:   serial
Abort WMT Display Logo Function
WMT #
WMT #
WMT #
WMT #
WMT # set serverip 192.168.0.10
WMT # tftpboot 1000000 netbsd.bin
EEP-less strapping = TRUE
TFTP from server 192.168.0.10; our IP address is 192.168.0.2
Filename 'netbsd.bin'.
Load address: 0x1000000
Loading: ####################################T #############################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         ################################
done
Bytes transferred = 2489792 (25fdc0 hex)
WMT # go 1000000
## Starting application at 0x01000000 ...
01000328
NetBSD
00000000 00000000 01473863 00000412
00000000 00000412 00000014 00000412
c0000000 00000000 01473863 0000041e
00003000 0000041e 00000014 0000041e
fe000000 d8000000 010fffff 00000412
00003f80 d8000412 00000010 00000412
00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000
NetB1S
NetBSD/evbarm (APC) booting ...
initarm: Configuring system ...
physmemory: 0 pages at 0x00000000 -> 0xffffffff
Allocating page tables
Creating L1 page table at 0x01274000
Mapping kernel
pmap_map_chunk: pa=0x0 va=0xc0000000 size=0x119b000 resid=0x119b000 prot=0x3 cache=1
SSSSSSSSSSSSSSSSSLLLLLLLLLPPPPPPPPPPP
pmap_map_chunk: pa=0x119b000 va=0xc119b000 size=0xd9000 resid=0xd9000 prot=0x3 cache=1
PPPPPLLLLLLLLLLLLLPPPP
Constructing L2 page tables
pmap_map_chunk: pa=0x1282000 va=0xc1282000 size=0x1000 resid=0x1000 prot=0x3 cache=1
P
pmap_map_chunk: pa=0x1283000 va=0xc1283000 size=0x1000 resid=0x1000 prot=0x3 cache=1
P
pmap_map_chunk: pa=0x1284000 va=0xc1284000 size=0x1000 resid=0x1000 prot=0x3 cache=1
P
pmap_map_chunk: pa=0x1285000 va=0xc1285000 size=0x1000 resid=0x1000 prot=0x3 cache=1
P
pmap_map_chunk: pa=0x1286000 va=0xc1286000 size=0x2000 resid=0x2000 prot=0x3 cache=1
PP
pmap_map_chunk: pa=0x1274000 va=0xc1274000 size=0x4000 resid=0x4000 prot=0x3 cache=2
PPPP
pmap_map_chunk: pa=0x1278000 va=0xc1278000 size=0x1000 resid=0x1000 prot=0x3 cache=2
P
pmap_map_chunk: pa=0x1279000 va=0xc1279000 size=0x1000 resid=0x1000 prot=0x3 cache=2
P
pmap_map_chunk: pa=0x127a000 va=0xc127a000 size=0x1000 resid=0x1000 prot=0x3 cache=2
P
pmap_map_chunk: pa=0x127b000 va=0xc127b000 size=0x1000 resid=0x1000 prot=0x3 cache=2
P
pmap_map_chunk: pa=0x127c000 va=0xc127c000 size=0x1000 resid=0x1000 prot=0x3 cache=2
P
pmap_map_chunk: pa=0x127d000 va=0xc127d000 size=0x1000 resid=0x1000 prot=0x3 cache=2
P
pmap_map_chunk: pa=0x127e000 va=0xc127e000 size=0x1000 resid=0x1000 prot=0x3 cache=2
P
pmap_map_chunk: pa=0x127f000 va=0xc127f000 size=0x1000 resid=0x1000 prot=0x3 cache=2
P
pmap_map_chunk: pa=0x1280000 va=0xc1280000 size=0x1000 resid=0x1000 prot=0x3 cache=2
P
devmap: d8000000 -> d8ffffff @ fe000000
pmap_map_chunk: pa=0xd8000000 va=0xfe000000 size=0x1000000 resid=0x1000000 prot=0x3 cache=0
SSSSSSSSSSSSSSSS
                             Physical              Virtual        Num
                       Starting    Ending    Starting    Ending   Pages
               SDRAM: 0x00000000 0xffffffff 0xc0000000 0xbfffffff 0
        text section: 0x00000000 0x0119a473 0xc0000000 0xc119a473 4507
        data section: 0x011a0000 0x0125fdc0 0xc11a0000 0xc125fdc0 192
         bss section: 0x0125fdc0 0x01273864 0xc125fdc0 0xc1273864 21
   L1 page directory: 0x01274000 0x01277fff 0xc1274000 0xc1277fff 4
   Exception Vectors: 0x01281000 0x01281fff 0xffff0000 0xffff0fff 1
           FIQ stack: 0x01282000 0x01282fff 0xc1282000 0xc1282fff 1
           IRQ stack: 0x01283000 0x01283fff 0xc1283000 0xc1283fff 1
           ABT stack: 0x01284000 0x01284fff 0xc1284000 0xc1284fff 1
           UND stack: 0x01285000 0x01285fff 0xc1285000 0xc1285fff 1
           SVC stack: 0x01286000 0x01287fff 0xc1286000 0xc1287fff 2
      Message Buffer: 0x01288000 0x01288fff                       1
         Free Memory: 0x01289000 0xffffffff 0xc1289000 0xbfffffff 1043831
switching to new L1 page table  @0x1274000...OK.
freestart = 0x01289000, free_pages = 1043831 (0x000fed77)
bootstrap done.
init subsystems: stacks vectors undefined page panic: uvm_page_physload: start >= end
Undefined instruction in kernel
Stopped in pid 0.1 (system) at  c100e5b8:
うぉーっ、printfが動いた!
NetBSD/evbarm (APC) booting ...からはprintfで出力されております。

printfが動いた感動を味わう。

名前:  非公開コメント   

  • TB-URL  http://www.tokuda.net/diary/0822/tb/