link もっと前
   2018年 7月 30日 -
      2018年 7月 21日  
link もっと後

link 未来から過去へ表示(*)
link 過去から未来へ表示

日々

link permalink

U-Boot の distro boot

昨日(2018年 7月 22日の日記参照)に引き続き、ROCK64 をいじっています。

私も先日知ったばかりで、さほど詳しくありませんが、distro boot はかなり便利です。ROCK64 の SD カードは mmc 1 です(※)ので、SD カードに FAT か ext2 のパーティション(例えば 6番目だとする)を切って mkfs しておいて、

sysboot mmc 1:6 fat 0x500000 /extlinux/extlinux.conf

このようなコマンドを実行すると、extlinux.conf に書いてある設定に従ってカーネルをロードしてくれます。Debian などもこの設定ファイルを使えば起動できて便利です。

アプリの開発者ならば distro boot の方が速いし楽でしょう。カーネルの開発者ならば TFTP ブートの方が嬉しいかもしれません。SD カードを抜き差しせずに済みます。

一応 ROCK64 でカーネルをセルフコンパイルすれば、PC 要らずで自己完結できますし、SD カードの抜き差しも要りません。しかし ROCK64 は、さすがにコンパイルに使うには遅いので、クロスコンパイル+TFTP ブートの方が効率は良さそうです……。

(※)ROCK64 の U-Boot から見ると、SD カードは mmc 1 です。オプションで売っている eMMC ボードが mmc 0 らしいです。私は eMMC ボード持ってないので、詳細はわかりません。

Upstream カーネル

U-Boot の distro boot のお陰で、カーネルの入れ替えはとても楽です。ROCK64 のカーネルを 4.4 から upstream の linux-next に入れ替えてみたところ、本当に入れ替えたのか不安になるくらい、何も問題なく起動しました。Rockchip やるなあ…。

Rockchip は OpenSource プロジェクト Wiki(Wiki へのリンク)があり、ブートローダーから全て OSS で動かせるようです。ブートローダーは隠されていて、ソースコードを見るなんて有り得なかった時代に比べると、隔世の感です。

Rockchip 以外にも AllWinner も Linux への upstream 活動は盛んなようで、upstream カーネルが動く可能性が高そうです。AllWinner のボードは何が良いんでしょうね?お手頃感では NanoPi NEO 2 でしょうか?

Rockchip も AllWinner もシングルボードコンピュータに多く採用されており、性能もなかなかですし、とても安く手に入ります。決して速くないマイコンボードが 1枚何万円もしていた時代に比べると、ありがたい時代になったと思います。

ブートローダーにもチャレンジ

ブートローダーも最新版に入れ替えようと思い、Rockchip Opensource Wiki に乗っていた手順を試しましたが、ちょっと内容が古いのか U-Boot のビルドは通りますが、ATF のビルドはコケてしまいました。

Wiki 曰く SD カードの 0x40 セクタに 2nd ブートローダーを置けば良いらしいですが、U-Boot SPL は廃止されてしまいましたし、ATF はビルドが通らなかったため、肝心のブートローダー(U-Boot SPL もしくは ATF BL31)が作れません。困った。

現状、ブートローダーを変更したい積極的な理由も特にないので、ブートローダーのビルドはまた今度ですね。

[編集者: すずき]
[更新: 2018年 7月 24日 22:34]
link 編集する

コメント一覧

  • t4 
    > U-Boot SPL は廃止されてしまいましたし...

    廃止されてないけど、どこを見たんでしょう? 
    (2018年07月29日 22:33:03)
  • すずき 
    >t4 さん
    ご指摘ありがとうございます。
    トップディレクトリ下にある spl というディレクトリも、u-boot-spl.bin も生成されないため、廃止されたのかと思いました。 
    (2018年07月30日 15:33:41)
  • t4 
    https://github.com/rockchip-linux/u-boot
    https://github.com/ayufan-rock64/linux-u-boot
    http://git.denx.de/u-boot.git/

    一応 1番上がこのデバイスの本家だけど
    他所は、本家の品質が悪るすぎて Pull-Request を蹴ってるような状況
    どこからGetしたのかな?
    本家のヤツには tpl/spl はそのまま残ってる(品質は別として)

    本家はものは、ビルドが通らないとか、クラッシュするとか、
    真っ当な issue を報告しても無視して即刻 Close とか
    ハッキリ言って Pull-Request を蹴られても当然の酷いレベル
    linux-kernel とか その他諸々も、 総じてそんな感じ。

    そんな理由もあって
    よほどのアドバンテージが無い限り、大概の処は 古いやつを 使ってる
    んでも、彼らはデバイスメーカーしか知らない情報を持ってるからね
     
    (2018年07月31日 10:06:36)
  • すずき 
    > t4 さん
    使っているのは、
    http://git.denx.de/u-boot.git/
    です。

    > 本家はものは、ビルドが通らないとか、クラッシュするとか、
    > 真っ当な issue を報告しても無視して即刻 Close とか
    > ハッキリ言って Pull-Request を蹴られても当然の酷いレベル
    > linux-kernel とか その他諸々も、 総じてそんな感じ。

    なんと、そうなんですか。情報ありがとうございます。


    > そんな理由もあって
    > よほどのアドバンテージが無い限り、大概の処は 古いやつを 使ってる
    > んでも、彼らはデバイスメーカーしか知らない情報を持ってるからね

    デバイスメーカーしか知らない情報で、公開できる範囲の情報を
    Linux や U-Boot の Upstream に公開してくれている、
    と思っていたのですが、そううまくは行っていないということですね。

    Linux はとりあえず
    git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
    が動作するようなので、ブートローダはそっとしておいて、こちらで遊ぼうかと思っています。
     
    (2018年07月31日 10:36:16)
  • t4 
    誰でも見れる情報として公開されているのはこれぐらい
    http://opensource.rock-chips.com/images/9/97/Rockchip_RK3328TRM_V1.1-Part1-20170321.pdf
    中をみて見てみれば解るけど、この情報で弄れるのはベーシックなI/O程度がせいぜい
    込み入ったI/O usb, ether, gpu, vpu の類は何も無し。

    データシート/アプリケーション・ノートの代わりに、ソース・コードを公開
    って方針なんだろうけど
    まぁ、詳細資料は出したくない ってのは理解できる

    しかし、
    公開のサンプル・コードが上手く動かない場合、リバースしながら尚且つ推測もしなければならない
    リバースは良しとしても、推測には限界があるよね。
    真摯に issue に対応してくれれば、資料非公開でも一向に構わないんだが…

    git.denx.de: 確か昨年蹴られてたね reason: build-error
    issue を報告した人達: オマエの処には2度と報告しない
    Armbianの人: 怒ってた、俺らのポーティング終わる前にぶっ壊れる(新しいヤツが)

    グチっぽくなったけど、
    それでも pi とに比べれば資料は多い方だとは思うな

    ---
    お付き合い、ありがとうございました。
     
    (2018年08月01日 12:26:53)
  • すずき 
    > t4 さん

    > 誰でも見れる情報として公開されているのはこれぐらい
    > http://opensource.rock-chips.com/images/9/97/Rockchip_RK3328TRM_V1.1-Part1-20170321.pdf
    > 中をみて見てみれば解るけど、この情報で弄れるのはベーシックなI/O程度がせいぜい
    > 込み入ったI/O usb, ether, gpu, vpu の類は何も無し。

    私も、ビデオデコーダや映像出力系の仕様を見たかったのですが、
    Rockchip OSS Wiki には、残念ながら載っていないです。

    グラフィクスも Mali Utgard 系ですが、
    ARM は Mali のドライバ(ユーザ空間側)を公開していないので、
    カーネルモジュールだけあっても、どうにもなりません…。


    > データシート/アプリケーション・ノートの代わりに、ソース・コードを公開
    > って方針なんだろうけど
    > まぁ、詳細資料は出したくない ってのは理解できる

    確かに、社内の抵抗は強そうです。


    > しかし、
    > 公開のサンプル・コードが上手く動かない場合、リバースしながら尚且つ推測もしなければならない
    > リバースは良しとしても、推測には限界があるよね。
    > 真摯に issue に対応してくれれば、資料非公開でも一向に構わないんだが…
    >
    > git.denx.de: 確か昨年蹴られてたね reason: build-error
    > issue を報告した人達: オマエの処には2度と報告しない
    > Armbianの人: 怒ってた、俺らのポーティング終わる前にぶっ壊れる(新しいヤツが)

    Rockchip は OSS とのコラボがうまく行っている方だと思っていたのですが、
    実情はなかなか、そううまくは行かないのですね。

    邪推ですが Rockchip 社が OSS 貢献する社員にどれくらい
    好感触を持つか次第で OSS との付き合い方は変わりそうですね。


    > グチっぽくなったけど、
    > それでも pi とに比べれば資料は多い方だとは思うな
    >
    > ---
    > お付き合い、ありがとうございました。

    こちらこそ、貴重な情報ありがとうございました。

    安価なワンボードコンピュータは普及しましたが、
    完全にオープンになった HW はまだ先なのでしょうね。
    いつかどこかが作る(古い SoC を公開するとか、そんな形でも)
    と期待しています。
     
    (2018年08月01日 20:28:39)
open/close この記事にコメントする



link permalink

ROCK64

Rockchip RK3328 搭載のシングルボードコンピュータ、ROCK64 4GB 版を買いました。秋月電子で 6,500円くらいでした。メモリの少ない 1GB 版にすると、さらにお安いです。

ROCK64 は SD カードから起動できます。OS イメージは開発元が用意している Etcher を使うと(GitHub からダウンロードできます)ダウンロード+SD カードへの書き込みが簡単にできます。便利です。

しかし手持ちの SD カードが 4GB だったため、Etcher に 8GB のカードを入れろと言われてしまい、OS イメージが書き込めませんでした。

最近は暑すぎて、電器屋に行くのさえ辛いですが、こればかりは行くしかないですね。昼の外出は危険だと思い、夕方にしましたが、それでも暑いです。

汗だくになりつつ 16GB の SD カードを買ってきて Debian を書き込み、起動しましたがシリアルが出ません。何でだ。

ROCK64 の爆速 UART

どうして ROCK64 の UART が表示されないのかなと思ってググってみたら、ボーレートがまさかの 1.5Mbps でしたサポートフォーラムへのリンク)。UART で 1.5Mbps なんてボーレート初めて使いました。

偶然、手持ちの FT232R(USB-UART 変換チップ)が 1.5Mbps に対応していてラッキーでした。一方の HC06(Bluetooth-UART 変換チップ)は 1.5Mbps に対応しておらず、UART を無線化しようと思ってせっかく買いましたが撃沈です…。

シリアルを見ていると、独自ローダー(?)、ATF(ARM Trusted Firmware)、U-Boot の順に動いており、U-Boot は distro boot を使って Linux 4.4.77 をロードしているようです。

リセットから U-Boot 手前までのログ
DDR version 1.06 20170424
In
SRX
LPDDR3
786MHz
Bus Width=32 Col=11 Bank=8 Row=15/15 CS=2 Die Bus-Width=32 Size=4096MB
ddrconfig:7
OUT
Boot1 Release Time: 2017-05-18, version: 2.43
ChipType = 0x11, 187
emmc reinit
emmc reinit
SdmmcInit=2 20
SdmmcInit=0 0
BootCapSize=0
UserCapSize=14832MB
FwPartOffset=2000 , 0
StorageInit ok = 48105
Raw SecureMode = 0
SecureInit read PBA: 0x4
SecureInit read PBA: 0x404
SecureInit read PBA: 0x804
SecureInit read PBA: 0xc04
SecureInit read PBA: 0x1004
SecureInit ret = 0, SecureMode = 0
LoadTrustBL
No find bl30.bin
No find bl32.bin
Load uboot, ReadLba = 2000
Load OK, addr=0x200000, size=0x92d74
RunBL31 0x10000
NOTICE:  BL31: v1.3(debug):f947c7e
NOTICE:  BL31: Built : 09:28:45, May 31 2017
NOTICE:  BL31:Rockchip release version: v1.3
INFO:    ARM GICv2 driver initialized
INFO:    Using opteed sec cpu_context!
INFO:    boot cpu mask: 1
INFO:    plat_rockchip_pmu_init: pd status 0xe
INFO:    BL31: Initializing runtime services
WARNING: No OPTEE provided by BL2 boot loader, Booting device without OPTEE initialization. SMC`s destined for OPTEE will return SMC_UNK
ERROR:   Error initializing runtime service opteed_fast
INFO:    BL31: Preparing for EL3 exit to normal world
INFO:    Entry point address = 0x200000
INFO:    SPSR = 0x3c9
U-Boot の起動ログ
U-Boot 2017.09-g5aef9f7 (Oct 12 2017 - 09:11:39 +0000), Build: jenkins-linux-build-rock-64-136

Model: Pine64 Rock64
DRAM: 4 GiB
MMC: rksdmmc@ff500000: 1, rksdmmc@ff520000: 0
*** Warning - bad CRC, using default environment

In: serial@ff130000
Out: serial@ff130000
Err: serial@ff130000
Model: Pine64 Rock64
Net: eth0: ethernet@ff540000
Hit any key to stop autoboot: 0

U-Boot の日付は 2017年で、まだ新し目ですが、Linux はかなり古いですね。後で Upstream カーネルに入れ替えてみましょうか。

[編集者: すずき]
[更新: 2018年 7月 24日 22:30]
link 編集する

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link permalink

Bluetooth UART 変換

UART を Bluetooth に変換してくれる HC-06(モジュールの販売サイト、仕様書も置いてある)モジュール搭載ボードを買いました。技適マークが無いように見えます、これ日本で使ったらダメな奴かな…?

電源は 5V で、UART は 3.3V です。Arduino とか Raspberry Pi 用の USB - UART 変換ケーブルを使えば、電源から UART まで全ての線が揃っているはずです。Raspberry Pi に繋いでも動きます。

私が購入したボード(HiLetgo 製 ZS-040)の場合、電源を入れると LED が点滅し始めます。この状態で Bluetooth デバイスの検索を行うと HC-06 という名前(変更可)のデバイスが見つかりますので、ペアリングします。PIN は 1234 です(変更可)。

ペアリングすると COM が 2つ増えると思います。なぜ 2つなのか良くわかりません。片方はうんともすんとも言いませんので、使いません。もうひとつのやや接続に時間が掛かる方を使います。

2つの COM のどちらを使うべきかは、LED で見分けることができます。LED が点滅→点灯に変わる方が本物(?)です。まあ、両方繋いでも問題は起きないようなので、面倒なら両方繋いでしまえば良いと思います。

設定の変更

ペアリングを解除した状態(LED が点滅)にすると、HC-06 の設定を変更することができます。シリアルの設定は、ボーレート 9600、8ビット、パリティなしにします。

このデバイスは送った文字をエコーバックしないので、ローカルエコーを強制的に ON にしてください。またキーボードで入力すると、AT コマンド先頭の AT 二文字を打った段階で「OK」が返ってきてしまい、コマンド発行ができません。コマンド全体をメモ帳などに打ち、コピペで貼り付けるとうまくいきます。

メモ帳からコピペはイマイチなので、ライン編集モードを ON にすれば良いだろと思ったら、行の最後に CR が送られてしまうためか、AT+PIN コマンドなどがうまくいかなくなります。

デバイス名、つまり Bluetooth デバイスの検索のときに出てくる名前です。デバイス名を変更するには AT+NAME の後に名前を打ちます。例えば "HC-06-1" に変えたければ AT+NAMEHC-06-1 を送ります。大文字と小文字は区別されます。返事に OKsetname と返ってくれば成功です。

また PIN を変える際は AT+PIN を送ります。例えば 8888 に変えたければ AT+PIN8888 です。返事に OKsetPIN と返ってくれば成功です。

シリアルの設定を変更するコマンドもあります。興味があれば仕様書を見てくださいまし。

[編集者: すずき]
[更新: 2018年 7月 22日 04:22]
link 編集する

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link もっと前
   2018年 7月 30日 -
      2018年 7月 21日  
link もっと後

管理用メニュー

link 記事を新規作成

合計:  counter total
本日:  counter today

link About www.katsuster.net
RDF ファイル RSS 1.0
QR コード QR コード

最終更新: 11/14 02:08

カレンダー

<2018>
<<<07>>>
1234567
891011121314
15161718192021
22232425262728
293031----

最近のコメント 5件

  • link 18年10月12日
    すずき 「なるほど!\n京急、京成はヤバそうですね...」
    (更新:10/15 23:02)
  • link 18年10月12日
    ちかふみ 「閉会式直後の出国ラッシュ対策のためだそう...」
    (更新:10/15 20:43)
  • link 18年10月12日
    すずき 「あー、なるほど!閉会式の次にくっつけたん...」
    (更新:10/14 15:44)
  • link 18年10月12日
    hdk 「2020年の東京オリンピックが8月9日ま...」
    (更新:10/14 10:45)
  • link 18年09月07日
    すずき 「ありがとう!\nこちらこそ、楽しみにして...」
    (更新:09/11 19:30)

最近の記事 3件

link もっとみる
  • link 18年11月13日
    すずき 「[お気に入りのマンガ] Kindle Fire HD は大量の本を...」
    (更新:11/14 02:08)
  • link 18年11月10日
    すずき 「[ROCK64 の I2S が動かない] 先日(2018年 7月 ...」
    (更新:11/14 01:53)
  • link 18年11月11日
    すずき 「[linux-next で動かない ROCK64 の I2S] 昨...」
    (更新:11/14 01:52)

こんてんつ

open/close wiki
open/close Java API

過去の日記

open/close 2002年
open/close 2003年
open/close 2004年
open/close 2005年
open/close 2006年
open/close 2007年
open/close 2008年
open/close 2009年
open/close 2010年
open/close 2011年
open/close 2012年
open/close 2013年
open/close 2014年
open/close 2015年
open/close 2016年
open/close 2017年
open/close 2018年
open/close 過去日記について

その他の情報

open/close アクセス統計
open/close サーバ一覧
open/close サイトの情報