Upgrade to Pro — share decks privately, control downloads, hide ads and more …

NetBSD/evbarm on Radxa Rock

adukot
October 19, 2014

NetBSD/evbarm on Radxa Rock

NetBSD/evbarm on Radxa Rock

Radxa Rock is Rockchip RK3188 based Single Board Computer.

adukot

October 19, 2014
Tweet

More Decks by adukot

Other Decks in Technology

Transcript

  1. NetBSD/evbarm
    on
    Radxa Rock
    @tokudahiroshi

    View Slide

  2. Radxa Rockとは?
    ● Rockchip RK3188 based Single Board
    Computer.
    ● Cortex A9 Quad Core 1.6GHz
    ● 2GB RAM, 8GB Flash, MicroSD SDXC
    ● Mali400, HDMI, Avoutput
    ● 10/100M Ether, 802.11b/g/n, Bluetooth4.0
    ● USB2.0, micro-USB OTG
    ● IR remote
    http://www.radxa.org/

    View Slide

  3. NetBSD/evbarm on Radxa Rock
    ● らくらく3ステップ
    ● カーネルの移植
    ● カーネルをロード
    ● カーネルを実行
    ● いろいろつまづくこともあります
    ● シリアルコンソール
    ● ブートローダ

    View Slide

  4. USBシリアルケーブル2014
    ● おなじみ秋月のシリアルケーブル
    ● FTDI
    ● 1,580円
    ● BeagleBone Blackだとばっちり
    ● ケーブル長1.8m
    ● ジャンパーケーブル必要
    ● http://akizukidenshi.com/catalog/g/gM-05840/

    View Slide

  5. USBシリアルケーブル2014
    ● 新たな選択、千石のシリアルケーブル
    ● PL2303
    ● 880円
    ● ジャンパーケーブル不要
    ● ケーブル長1m
    ● Windowsドライバは工夫が必要
    ● PL2303_Prolific_DriverInstaller_v1.5.0.zip
    ● http://www.sengoku.co.jp/mod/sgk_cart/detail
    .php?code=EEHD-4HJ7

    View Slide

  6. ドライバのバージョンを切り替える

    View Slide

  7. microSDからのブート
    ● androtab.infoが大変すばらしい
    ● http://androtab.info/radxa_rock/sdboot/
    ● dd最強です
    dd if=sdboot_rk3188.img of=/dev/sd0d conv=sync,fsync
    dd if=parameter.img of=/dev/sd0d conv=sync seek=$((0x2000))
    dd if=kernel.img of=/dev/sd0d conv=sync seek=$((0x2000+0x4000))
    dd if=boot.img of=/dev/sd0d conv=sync seek=$((0x2000+0xc000))
    ● つまりkernel.imgをnetbsd.binに入れ替えればOK
    ● かと思いきや、うまく動かない問題

    View Slide

  8. microSDからのブート
    ● ひと手間かけてrkcrc
    ● https://github.com/naobsd/rkutils
    # gcc -o rkcrc rkcrc.c; cp /usr/bin
    # rkcrc -k netbsd.bin netbsd.img
    # dd if=netbsd.img of=/dev/sd0d conv=sync seek=$((0x2000+0x4000))

    View Slide

  9. ある日の出来事
    kernelとかUSBから突っ込んで起動とは?

    View Slide

  10. SD-RAMからの起動
    ● 母艦からkernelをRadxa RockのSD-RAMに転
    送し、そのまま実行するということ
    ● 道具は二つ (u-bootとrkflashtool)
    ● http://files.androtab.info/radxa/sdboot_rk3188.zip
    ● github.com/linux-rockchip/rkflashtool
    ● まずはmicroSDを作成し、ブートする
    # dd if=sd_header_64.enc of=/dev/sd0d conv=sync seek=64
    # dd if=FlashData.bin of=/dev/sd0d conv=sync seek=68
    # dd if=FlashBoot.bin of=/dev/sd0d conv=sync seek=92
    # dd if=parameter.img of=/dev/sd0d conv=sync seek=$((0x2000+0x0))

    View Slide

  11. SD-RAMからの起動
    ● rkflashtoolを作る
    1.pkgsrcからgmake, libusb1をインストール
    2.githubからlinux-rockchip/rkflashtoolを持ってくる
    3.LDFLAGSにLIBUSB=/usr/pkgと-R/usr/pkg/lib足して
    gmake
    ● rkflashtoolでカーネルを転送、実行
    # rkflashtool M 0x60408000 0x1000000 <
    /usr/obj/sys/arch/evbarm/compile/RADXA/netbsd.bin
    # rkflashtool B 0x60408000 0x60408000
    ● この場合のカーネルはrkcrcしなくてよい
    ● microSDの抜き差しがないため、大変便利です

    View Slide

  12. つついさん曰く
    NetBSD移植 いまむかし, Tsutsui Izumi, OSC2012愛媛 より
    http://www.ceres.dti.ne.jp/tsutsui/osc12eh/img32.html

    View Slide

  13. 今回の移植
    ● 既存のCortex向けドライバを動かしただけ
    ● gic: 割り込みコントローラ
    ● pl310: L2キャッシュコントローラ
    ● a9tmr: グローバルタイマ
    ● a9wdt: ウォッチドッグ
    ● シリアルコンソール
    ● comドライバでOK、ただし16750じゃないとダメ
    ● a9_mpsubr.cに一文字出力用xputcが存在していた

    View Slide

  14. 移植の記録
    ● 2014年7月30日 やる気を出し始める (sdboot)
    ● 2014年9月2日 移植スタート
    ● 2014年9月4日 シリアルから文字が出る
    ● 2014年9月8日 Cの世界へ (initarm)
    ● 2014年9月11日 printfが動く
    ● 2014年9月14日 NetBSDバナー表示
    ● 2014年9月29日 /bin/shが動いた
    ● 2014年10月9日 [email protected]に報告

    View Slide

  15. まとめ
    ● Radxa Rockは良い
    ● 解析情報やブートまわりの情報が多め (Thanks! @naobsd)
    ● 電子工作不要
    ● USB経由で快適開発
    ● NetBSD上で完結 (ツール類含めて)
    ● NetBSDが動くと楽しい
    ● 既存資産があると手軽
    ● 適切な課題設定が大切(よくばらない)
    ● USBとか動かしたいなー

    View Slide