コグノスケ


2019年2月2日

小型HDMIディスプレイ購入

小型のHDMIディスプレイを買いました。ELECROWのLR10FHD01です。Amazonで1万円くらい。

買ったきっかけですけども、ROCK64のHDMI出力を見たかったことと、サーバのVGA出力が壊れたのか、今持っている小型VGAディスプレイが映らなくなってしまったため、代替品が欲しかったからです。

  • サイズ: 10インチ
  • 液晶方式: 光沢あり、IPS液晶らしい(確認しようがないけど)
  • 解像度: 最大Full HDつまり1920x1080
  • 入力方式: HDMI or VGA
  • 電源: 付属のACアダプタ

見ての通りスペックはそこそこ良く、価格もお安いです。その分、細かいところはいい加減です。

音量調整がバカでVolume 1でも近所迷惑なデカい音が鳴ります。しかも最大音量は100です。こんなバカでかい音で誰が使うんでしょう?ミュートにできることがせめてもの救いです。

OSDメニューはヘボいです。日本語が選択できますが、漢字は中国語の字体、訳が意味不明、ハングルが混ざるなど、やる気ゼロです。英語に変えた方がマシです。

HDMI入力もバグっていて、HDMI挿抜もしくは電源ON/OFFで画面表示が右にズレて、音が出なくなります。もう一度電源ON/OFFすると直ります……。


OSDに表示される謎の日本語

本体に型番が書いておらず、箱を捨ててしまうと型番が分からなくなります。

細かいところは手抜き感が漂いますが、映れば全て良しです。

メモ: 技術系の話はFacebookから転記しておくことにした。加筆した。

編集者:すずき(2024/08/21 14:03)

コメント一覧

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



2019年2月3日

続編が楽しみなマンガ10作品

目次: マンガ紹介

お気に入りのマンガ紹介シリーズ。

最近読んだ、これからも続編が楽しみなマンガ10作品。並びは、あいうえお順です。

1〜5です。

うらみちお兄さん(10巻、2017年〜)
いわゆる「お母さんといっしょ」の体操のお兄さんが主人公、歌のお姉さん、歌のお兄さん、マスコットの中の人が準主役のギャグマンガです。
お兄さんお姉さんたちは、ブラック社会の大人の事情や抑圧に精神をやられており、子供たちの前では笑顔を振りまきますが、それ以外はやさぐれています。子供たちが妙に悟っているのも面白いです。
桐谷さん ちょっそれ食うんすか!?(17巻、2016年〜)
ゲテモノ食を愛する女子高生、桐谷さんが主人公のグルメマンガです。
昆虫や深海魚、爬虫類など、日本ではあまり食べない食材にチャレンジし続けます。世の中には色々な食材があるもんだと感心します。あとがきを見ると、作者さんが実際にチャレンジした食材を作品にしているそうです。
じけんじゃけん(全7巻、2016年〜2020年)
推理小説マニアでミステリ研の女子高生、その彼女に惹かれてミス研に入った男子高校生が主役のギャグマンガ。
ミステリのネタが所々に入っていますが、ミステリ要素は強くなく、強いて言えば日常系です。元ネタがわからなくても困りませんが、わかるともっと面白いのだろうか?タイトルからもわかるように、舞台は広島です。登場人物の女子達はほぼ全員が広島弁です。気になる。
天地創造デザイン部(8巻、2017年〜)
神様が発注してくる曖昧でデタラメな要件の生物を、デザイン部の皆さんがウンウンうなりながら設計していくギャグマンガです。雑学の要素も強いです。
ギャグのオチに神様のメチャクチャな要望に応えた、メチャクチャな生物が登場しますが、でっち上げの架空生物ではなく、実在する生物(たまに伝説上の生物なども登場します)であるところが、へえ!と唸らせる面白さの1つです。お話の中で登場した生物の解説ページまで付いており、面白くて為になる作品です。
ハクメイとミコチ(12巻、2013年〜)
小人のハクメイとミコチの2人の気ままな生活と、周囲の人々との交流を描く、ファンタジー系のマンガです。
文章がヘタで説明できませんが、2人の住んでいる世界の描画が素晴らしいです。実際に住んだらやや不便そうではありますが、この世界に住みたいと思うこと間違いなしです。

6〜10です。

フラジャイル 病理医岸京一郎の所見(23巻、2014年〜)
患者の前には出ませんが、検査結果を診断する病理医が主人公の医療系マンガです。
現代医療の問題点にグサグサ切り込んでいきます。主人公の岸先生は超優秀ですが、かなりの曲者で周囲との衝突が絶えません。いろいろ揉めまくりますが、最終的には何とかなるので安心して楽しめます。
へんなものみっけ!(10巻、2017年〜)
博物館の事務員として左遷(なのか?)されてきた公務員が主人公で、博物館の研究者や裏方の活動を描いたマンガです。雑学もあります。
博物館の裏方は一般の見学者からはわかりませんし、職員にならない限りまず見られません。自分の知らない世界が垣間見えて面白いです。
マージナルオペレーション(全16巻、2013年〜2020年)
子供だけの傭兵集団を率いる「子供使い」アラタが主人公の現代軍事物のマンガです。中東が出発点で、世界の様々な国で活躍します。12巻ではミャンマー編が盛り上がってきます。
たまに1巻から読み返すと、画も話も結構テイストが変わっていると思います。子供たちを傭兵に送り込んでいることを知って苦しむ初期、覚悟を決めて傭兵業を続ける中期〜、いずれも面白いです。戦争するので、人が死ぬシーンが割と出てきます。苦手な人は注意です。
魔法少女特殊戦あすか(全14巻、2015年〜2021年)
理不尽系+魔法少女+現代軍事物のマンガです。かつて世界を救ったマジカルファイブという魔法少女のリーダー、あすかが主人公です。魔法少女ものって残酷にしなきゃいけないルールでもできたんですかね?
魔法少女なので魔法の力で戦いますが、明らかに殴って撃って斬っていて、敵も味方も重傷で血みどろです。捕まえて拷問したり、マジカル自白剤とか素敵ワードが飛び交う、エグさ満点の作品です。画は綺麗ですがグロいシーンが多いので、苦手な人は注意です。
幼女戦記(30巻、2016年〜)
冷酷で優秀だが神を信じない現代サラリーマンが主人公で、魔法の存在する第一次世界大戦直前のヨーロッパに似た世界に転生します。しかも幼女として。ジャンルとしては近代〜現代軍事物のマンガ。
主人公は後方で楽したいと思っていますが、やることが全て裏目に出て最前線や激戦区に投入され続けます。全員が真面目にやっていて、結果も上々ですが、奇跡的に想いだけがすれ違い続けます。ギャグじゃないのにギャグ要素を感じる面白い作品です。戦争で人が死ぬシーンがそこそこあります。苦手な人は注意です。

メモ: 趣味の話はFacebookから転記しておくことにした。

編集者:すずき(2024/08/21 14:08)

コメント一覧

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



2019年2月4日

ROCK64でHDMIオーディオを使う

目次: ROCK64/ROCKPro64

先日購入したHDMIモニタのおかげで、ROCK64のI2S0つまりHDMI Audioの動作確認ができました。

しかし以前(2018年11月11日の日記参照)悩んでいた通り、単純にI2S0を有効にすることはできません。DMAチャネルが足りない問題が発生するためです。

ROCK64に搭載されているRockchip RK3328のDMACは、16のDMAチャネルを持っていますが、そのうち8chしか同時に使えない仕様になっています。

苦肉の策

現在のlinux-nextのROCK64向けデバイスツリーでは、既に7chを使用(I2S1 2ch, SPDIF 1ch, SPI0 2ch, UART2 2ch)していますから、ここに2chを使用するI2S0を追加すると合計9chになって、オーバーしてしまいます。

仕方ないのでUART2のDMA割り当てを解除して、I2S0に割り当てるパッチを投稿しました。

予想通りの反応

私がパッチに書いた説明が悪かったのだと思いますが、メンテナーのHeikoさんから「どうしてUART2のDMAチャネルをI2S0が使えるのかわからない」という返事がきました。ですよね……私も最初意味不明でしたし。

できる限り説明を加えて返事しましたが、理解してもらえると良いな。

わかりづらい仕様書

ややこしいことに、RK3328の仕様書を見ると、各DMAチャネルにはIDが(仕様書ではReq number)が振られていて、ぱっと見16チャネルが全て同時に使えそうに見えるんですよ。

この仕様書から「各DMAチャネルは独立しているけど、全てのチャネルが同時に使える訳ではない」という意味を読み取れる人はなかなかいないと思います。

DMAチャネルの割り当て

少なくとも私はDMAのReq numberとチャネル数の関係を理解するのは無理だったので、DMACのドライバ(PL330)を追いかけました。

サウンド系からDMAチャネルの割り当てを要求するとき、次のような呼び出し関係になります。

RK3328のDMAチャネルの割り当て

rockchip_pcm_platform_register()
  devm_snd_dmaengine_pcm_register()
    snd_dmaengine_pcm_register()
      dmaengine_pcm_request_chan_of()
        dma_request_slave_channel_reason()
          of_dma_request_slave_channel()
            ofdma->of_dma_xlate() => of_dma_pl330_xlate()
              dma_get_slave_channel()
                dma_chan_get()
                  pl330_alloc_chan_resources()
                    pl330_request_channel()

まず、関数of_dma_pl330_xlate() にはローカル変数chan_idが登場します。これがDMAのIDに相当します。例えばUART2の送信側ならchan_id = 6になります。

元になる数字はどこから来るかというと、of_dma_match_channel() でデバイスツリーから情報を貰っています。RK3328の場合、デバイスツリーでDMAチャネルを指定する際は、Req numberを書くようです。

次に、関数pl330_request_channel() に構造体struct pl330_dmacのメンバーchannelsという配列が登場します。このchannelsの数がDMACのDMAチャネルの数と等しいです。Req numberとは無関係に、DMAチャネルを要求されると先頭から埋まっていきます。

こんな仕様が初見でわかる訳ないじゃない。むり。

メモ: 技術系の話はFacebookから転記しておくことにした。1節加筆。

編集者:すずき(2020/10/30 01:39)

コメント一覧

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



2019年2月11日

Linuxのクロック分周器

目次: Linux

Linuxのクロックフレームワークで実装できるクロック分周器のドライバは2種類あります。

1つはinteger dividerで、入力されたクロック周波数の1/3や1/4など整数比の周波数で出力するハードウェアです。もう1つはfractional dividerで、周波数をx/yにするハードウェアです。

後者のfractional dividerドライバは、標準動作とカスタム動作のドライバが書けます。標準動作の場合、分子と分母に設定できる値に、何ら制約がないものとして動作します。カスタム動作のドライバは、特殊な制約のあるハードウェア向けです。

今のところカスタム動作のfractional dividerドライバを実装しているのはRockchipだけです。Rockchipの場合、分母が分子の20倍以上でなければ出力周波数が不安定になる制約があるようです。

Rockchipが変な仕様であることは間違いないと思いますが、Linuxに対応しているだけ、まだマシとも取れますね。世の中には「どうしてこうなった??」としか思えない、変な仕様のハードウェアがたくさん存在しますし……。

メモ: 技術系の話はFacebookから転記しておくことにした。

編集者:すずき(2024/01/06 00:46)

コメント一覧

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



2019年2月17日

ROCKPro64のシリアル文字化け - オシロスコープで解析

目次: ROCK64/ROCKPro64

以前(2018年12月)にROCKPro64を購入したのですが、シリアルが文字化けして使い物にならず、ずっとお蔵入りになっていました。

最初はケーブルの接続や、接地がおかしいのかと思いましたが、GND側はきっちり0Vでした。どうも単純な原因ではなさそうだったので、オシロスコープで信号を見ることにしました。テストパターンとして0と1が交互に出現し、一番転送が難しいパターンと思われる0x55 'U' の文字を出力しています。

正常に出力できているROCK64と比較すると、ROCK64は出力が0 → 1 → 0と変化する際に0V → 3V → 0Vのように電圧が振れますが、ROCKPro64は、0V → 2.48V → 0Vのように立ち上がり側が遅く、中途半端な電圧になっています。

下記の画像の青色の線がROCK64のシリアル出力で、オレンジ色の線がROCKPro64のシリアル出力です。どちらも1秒ごとに 'U' を出力して、最初の立ち下がり(Start Bit、必ず0)にトリガを掛けています。


ROCK64のシリアル出力の波形


ROCKPro64のシリアル出力の波形

ROCK64は綺麗な波形ですが、ROCKPro64は0V → 3Vへの立ち上がりが間に合っていないことが分かるかと思います。

文字化けの原因ですけども、シリアルの転送速度(1.5Mbps、1ビット666ns)に対し、0 → 1の立ち上がりが遅すぎる(650nsくらい)からでしょう。出力側は1を送出しているつもりでも、信号が立ち上がるのが遅いため、受信側は0だと解釈してしまう場合があります。

転送速度を落とせば改善するかもしれません。しかしRockchipのU-Bootはなぜか1.5Mbps固定で転送してくる困った奴で、下手にシリアルの転送速度を変えるとU-Bootが操作できなくなり、非常に使いづらいのです。イマイチですね……。

ROCKPro64のシリアル出力の文字化けを改善する

ROCKPro64にはRockchipのRK3399と言うSoCが搭載されていて、RK3399は一部のピンのDrive Strength、つまりピンに流せる電流量を調整できます。決して特殊な機能ではなく、大抵のSoCが持つ普通の機能です。

ROCKPro64がコネクタに引き出しているシリアルはUART2です。UART2はGPIO4_C4(TX)とGPIO4_C3(RX)というピンに割り当てられています。幸運なことにRK3399ではこれらのピンのDrive Strengthが変更できるので、設定値を振って(※)オシロで波形を見てみました。

下記の画像が測定結果です。1枚目はデフォルトかつ最小の3mA、2枚目は最大の12mA設定です。出力している文字は前回同様0x55 'U' で、トリガも前回同様Start Bitの立ち下がりに仕掛けています。オシロのRising, Falling Time解析をONにしたので、立ち上がり、立ち下がりに掛かった時間も一緒に表示されています。


Drive Strength = 3mAのときのシリアル出力波形


Drive Strength = 12mAのときのシリアル出力波形

字が若干見づらいので、一応書いておくと、立ち上がりの時間は650ns → 300nsくらいに改善しました。良い感じですね。

ちなみにスクリーンショットの色が変で、文字が読みづらいのは仕様です。Tektronixさん、スクリーンショット背景の白黒反転処理、バグってますよ……??

それはさておきDrive Strengthの変更で、ROCKPro64のシリアル文字化けはかなり改善されました。しかし完全ではなく大量に出力した際に若干文字化けします。

さらなる改善のためには、シリアルの転送速度を落とすくらいしか思いつきません。が、U-Bootの書き換えをするのが面倒くさいので、また今度にします……。

(※)レジスタ名はGRF_GPIO4C_Eで、アドレスは0xff77e138です。書き込む値は0x03c00xx0をお勧めします。xxの部分はドライブ能力を最小にするなら00で、最大にするなら3cです。

メモ: 技術系の話はFacebookから転記しておくことにした。追記、文章の組み換えをした。

編集者:すずき(2020/10/30 00:48)

コメント一覧

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



2019年2月18日

ROCKPro64のシリアル文字化け - 回路図を見る

目次: ROCK64/ROCKPro64

ROCKPro64のシリアル文字化けの原因は、RK3399の端子ドライブ能力不足が原因である可能性は高そうですが、最大値の12mAに設定しても立ち上がりが遅い(立ち下がり50ns以下に対し、立ち上がり300ns以上かかる)点が気になります。

SoC以外に原因があるとすれば、ボードの回路くらいですが、回路となると門外漢も良いところで、確かめ方がわかりません。

ROCKPro64のSchematicsを素直に信じると、SoCの出力ピンが直接コネクタに接続されていて、抵抗も何もないように読めます。RK3399はSoC裏面がハンダ付けされている(BGA)ため、コネクタ〜SoC端子間に、本当に抵抗や断線がないかどうかは確かめようがありません。

文字化けの頻度はかなり減ったので、今のままでもそれなりに使えますが、なぜ立ち上がりだけが異常に遅いのか、釈然としません。うーん……。

ドライバ観点からのROCK64やROCKPro64の使いやすさ

ROCK64というかRockchip RK3328のHDMIドライバはdrivers/gpu/drm/rockchip/dw_hdmi-rockchip.cです。このドライバは多くの処理をdrivers/gpu/drm/bridge/synopsys/dw-hdmi.cつまりSynopsys DesignWareのHDMI IP用のドライバに頼っています。

SynopsysのHDMIドライバは映像出力と、音声出力の機能を持っています。映像側の作りは知りませんが、音声側はASoCフレームワークに合わせて作られています。そのお陰でROCK64にHDMI音声出力対応を追加するときは、デバイスツリーに記述を足すだけで良く、非常に楽でした。

Synopsysのドライバはlinux-nextにUpstreamされていますが、コミットログを見る限りSynopsysのメールアドレスの人はあまり出現しません

社外の人や、会社と関係のない所属の人がわざわざドライバに修正をコミットしてくれるなんて、凄いことだと思います。人気のあるIPのドライバをOSSにすると、色々な人が直してくれて、正のスパイラルが構築される、良い例と言えるでしょう。

この辺の根回しの良さは、さすがIP屋さんのSynopsysって感じがしました。

メモ: 技術系の話はFacebookから転記しておくことにした。追記した。

編集者:すずき(2020/10/30 00:48)

コメント一覧

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



2019年2月19日

RISC-V向けクロスコンパイラ

目次: GCC

目次: Linux

Crosstool-NGはRISC-Vに対応していないのかと思っていたら、Experimentalオプション(CT_EXPERIMENTAL)をYに設定したらRISC-Vが選べるみたいです。

GCCのビルドはARM向けに昔チャレンジしましたが、結構面倒くさいので、コンパイラを含むツールチェーンを簡単にビルドできるCrosstool-NGの存在は非常にありがたいです。あとはLLVMにも対応してくれたら最高なんですけどね。

ExperimentalというだけあってRISC-V 32bit用のコンパイラはビルドエラーになってしまって作成できません。RISC-V 64bit用のコンパイラは作成できます。

作成したコンパイラで適当なコードをビルドして逆アセンブルを見ると、命令長が32bitのものと、16bitのものが混在していました。そういえばARMもARM命令とThumb命令の2種類の命令長があります。最近はRISCでも命令長可変の仕様が流行りなんでしょうか?

メモ: 技術系の話はFacebookから転記しておくことにした。少し加筆。

編集者:すずき(2024/07/16 17:51)

コメント一覧

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



2019年2月20日

ROCKPro64のHDMI Audioを有効にする

目次: ROCK64/ROCKPro64

RK3399のDrive Strength設定をMaxにしたことで、文字化けだらけでポンコツ状態だったROCKPro64のシリアルが割とまともになったので、最近はROCKPro64を触っています。

どうもlinux-nextのROCKPro64のデバイスツリーはHDMI Audioを有効にするのを忘れている?ようで、HDMIから音が出ません。有効にするパッチをLMKLに投げつけておきました……といっても、たった3行のパッチです。

動かしたら一瞬で気づくはずですが、誰も直さなかったのかなあ?

ROCK64もROCKPro64も割と有名な部類のボードですが、Rockchip Linuxじゃなくて、わざわざlinux-nextで動かす人は少ないかもしれませんね。

メモ: 技術系の話はFacebookから転記しておくことにした。

編集者:すずき(2020/10/30 01:03)

コメント一覧

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



2019年2月26日

RISC-V 64向けLinux開発環境の構築

目次: GCC

目次: Linux

以前AArch64向けに開発環境を構築しました(その1その2)。今回は流行りのRISC-Vに対して作成してみます。

全く違うアーキテクチャですが、AArch64向けと同じツール、ほぼ同じ手順が使えます。ツールを整備してくれた開発者の皆様には感謝の極みです。

  • クロスコンパイラ: crosstool-NG
  • カーネル: linux-next
  • ブートローダ: riscv-pk
  • ルートファイルシステム: busybox + 手作業
  • エミュレータ: qemu

さっと動かしてみたかったので、前回との変化点としてはbuildrootを使わず、busyboxのみの最小環境を作成しています。buildrootは後日チャレンジしたいと思います。

クロスコンパイラ

Crosstool-NGのct-ngのビルド方法は前回と全く同じ(2018年7月15日の日記を参照)なので、割愛します。

crosstool-NGビルド
$ ./ct-ng menuconfig
- Paths and misc options  --->
    [ ] Try features marked as EXPERIMENTAL
      選択する

- Target options  --->
  Target Architecture (alpha)  --->
    riscvに変更する

  [ ] Use the MMU
    選択する

  Bitness: (32-bit)  --->
    64-bitに変更する

- Operating System  --->
    Target OS (bare-metal)  --->
      linuxに変更する

- C-library  --->
    C library (musl)  --->
      glibcに変更する


$ ./ct-ng build
[00:34] /

設定もAArch64のときと大体同じですが、大きな違いはEXPERIMENTALを有効にする点です。通常はTarget Architectureの選択肢にRISC-Vが存在しません。

また、現時点だと32bit版はビルドエラーになるようなので、64bit版を選択しています。

カーネル

AArch64のビルドとほぼ同じです。

linux-nextコード取得、セットアップ、ビルド
$ git clone git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
$ cd linux-next

$ export ARCH=riscv
$ export CROSS_COMPILE=riscv64-unknown-linux-gnu-

$ make defconfig

$ make all

ビルドが成功するとソースコードのトップディレクトリにvmlinuxが生成されるはずです。

ブートローダ

AArch64ではqemuの -kernelオプションにImageファイルを渡せば起動しましたが、RISC-VではImageファイルを渡してもエラーになり起動しません。

調べてみると、qemuでRISC-V向けのLinuxを動作させるには、Imageではなくブートローダ付きのvmlinuxを渡してあげる必要があるみたいです。

ブートローダriscv-pkコード取得、セットアップ、ビルド
$ git clone https://github.com/riscv/riscv-pk
$ cd riscv-pk

$ mkdir build
$ cd build

$ ../configure \
  --enable-logo \
  --host=riscv64-unknown-linux-gnu \
  --with-payload=../linux-next-riscv/vmlinux

$ make

成功するとbuildディレクトリの下にbblという名前のファイルができます。これがブートローダ+カーネルのバイナリです。bblはBerkeley Boot Loaderの略です。

このリポジトリの名前pkはProxy Kernelの略で、RISC-Vのプロセッサ開発を行う際に、周辺のハードウェアを作り込む代わりに、ホストのシステムコールを呼び便利な実行環境を提供するためのソフトウェアのようです。

プロキシカーネルに用事はないんですけど、付属品のブートローダに用事があります。

このriscv-pkはビルドシステムがちょっとイマイチで、buildディレクトリを作らずにconfigureやmakeをすると、ソースコードの入っているpkディレクトリが吹っ飛びます。ご注意ください……。

ルートファイルシステム

以前はbuildrootを使って全自動でinitramfsを生成してもらいましたが、今回は趣向を変えまして、手動でinitramfsを作ります。

busyboxコード取得、セットアップ、ビルド
$ git clone https://git.busybox.net/busybox

$ cd busybox
$ export CROSS_COMPILE=riscv64-unknown-linux-gnu-

$ make menuconfig

- Settings  --->
  [ ] Build static binary (no shared libs) (NEW)

$ make

ビルドに成功するとbusyboxという実行ファイルが生成されるはずです。

次にinitramfsを作成します。基本的な流れはディレクトリに必要なファイルを配置し、cpioで固めるだけです。

initramfs作成
$ mkdir initramfs-work-riscv
$ mkdir initramfs-work-riscv/root
$ cd initramfs-work-riscv/root

$ mkdir bin
$ cp ../../busybox/busybox bin/
$ ln -s busybox bin/sh
$ ln -s bin/busybox init

$ mkdir dev
$ sudo cp -a /dev/tty* dev/

$ find . | cpio --format=newc -o > ../initramfs.cpio

本来はinit, sh以外のシンボリックリンクも作った方が良いです。このあと、qemuで動かしてみたらわかりますが、すごく不便です。/dev/ttyも横着してホストマシンのデバイスファイルをコピーするのではなく、mkdevで作るべきです。

が、しかし、美しいinitramfsは次回トライするbuildrootにお任せしましょう。今回は適当なまま行きます。

実行

実行する設定はAArch64とは違います。qemuの引数は多すぎるし難しすぎるので、全く覚えられません。私の場合は、動かすたびにわからなくなるので、調べることが多いです。

qemu実行
$ qemu-system-riscv64 \
  -machine virt \
  -kernel riscv-pk/build/bbl \
  -initrd initramfs-work-riscv/initramfs.cpio \
  -serial stdio

    
bbl loader
              vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
                  vvvvvvvvvvvvvvvvvvvvvvvvvvvv
rrrrrrrrrrrrr       vvvvvvvvvvvvvvvvvvvvvvvvvv
rrrrrrrrrrrrrrrr      vvvvvvvvvvvvvvvvvvvvvvvv
rrrrrrrrrrrrrrrrrr    vvvvvvvvvvvvvvvvvvvvvvvv
rrrrrrrrrrrrrrrrrr    vvvvvvvvvvvvvvvvvvvvvvvv
rrrrrrrrrrrrrrrrrr    vvvvvvvvvvvvvvvvvvvvvvvv
rrrrrrrrrrrrrrrr      vvvvvvvvvvvvvvvvvvvvvv
rrrrrrrrrrrrr       vvvvvvvvvvvvvvvvvvvvvv
rr                vvvvvvvvvvvvvvvvvvvvvv
rr            vvvvvvvvvvvvvvvvvvvvvvvv      rr
rrrr      vvvvvvvvvvvvvvvvvvvvvvvvvv      rrrr
rrrrrr      vvvvvvvvvvvvvvvvvvvvvv      rrrrrr
rrrrrrrr      vvvvvvvvvvvvvvvvvv      rrrrrrrr
rrrrrrrrrr      vvvvvvvvvvvvvv      rrrrrrrrrr
rrrrrrrrrrrr      vvvvvvvvvv      rrrrrrrrrrrr
rrrrrrrrrrrrrr      vvvvvv      rrrrrrrrrrrrrr
rrrrrrrrrrrrrrrr      vv      rrrrrrrrrrrrrrrr
rrrrrrrrrrrrrrrrrr          rrrrrrrrrrrrrrrrrr
rrrrrrrrrrrrrrrrrrrr      rrrrrrrrrrrrrrrrrrrr
rrrrrrrrrrrrrrrrrrrrrr  rrrrrrrrrrrrrrrrrrrrrr

       INSTRUCTION SETS WANT TO BE FREE
[    0.000000] OF: fdt: Ignoring memory range 0x80000000 - 0x80200000
[    0.000000] No DTB passed to the kernel
[    0.000000] Linux version 5.0.0-rc7-next-20190225 (katsuhiro@blackbird) (gcc version 8.2.0 (crosstool-NG 1.23.0.610-db4fdf0)) #2 SMP Tue Feb 26 19:07:38 JST 2019
[    0.000000] Initial ramdisk at: 0x(____ptrval____) (1691648 bytes)
[    0.000000] Zone ranges:
[    0.000000]   DMA32    [mem 0x0000000080200000-0x0000000087ffffff]
[    0.000000]   Normal   empty
[    0.000000] Movable zone start for each node
...

[    0.346331] sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver
[    0.348500] NET: Registered protocol family 17
[    0.349051] Key type dns_resolver registered
[    0.370752] Freeing unused kernel memory: 192K
[    0.370952] This architecture does not have kernel memory protection.
[    0.371164] Run /init as init process
can't run '/etc/init.d/rcS': No such file or directory

Please press Enter to activate this console.
/ # ls
-/bin/sh: ls: not found
/ # busybox uname -a
Linux (none) 5.0.0-rc7-next-20190225 #2 SMP Tue Feb 26 19:07:38 JST 2019 riscv64 GNU/Linux

無事Linuxの起動画面を拝めました。良かった良かった。

編集者:すずき(2024/07/26 20:14)

コメント一覧

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



2019年2月28日

作業スペース

現在住んでいる家には私の作業部屋がないので、リビングの食事するテーブルで、ROCKPro64などのボードとオシロスコープとノートPCを置いて波形を見ています。

リビングのテーブルは広くて色々置けるものの、食事するときは邪魔なので撤去する必要があります。場合によって機材や配線の再セットアップが発生するのが難点です。あと、水が掛かる可能性があり、精密機械(オシロスコープとか)を置くには適していない気がしますが、他に置く場所もありません。

最近は、作業の中断から再開までの時間を短縮するため、リモートで作業するようにしています。ノートPCはリモートアクセス端末として使い、メインPCにリモートアクセスして作業しています。ノートPCのネットワークを切ったり、シャットダウンしたりしても、メインPCの開発、解析の環境はそのまま保持されますから、すぐに作業に復帰できるという寸法です。

ソフトウェアの開発をするなら十分な環境ですが、ROCKPro64のUART出力を解析したときのようにオシロスコープが必要になってくると、リモートアクセスだけではうまくいきません。今のところ、オシロスコープを常用することはないので問題はありませんが、今後必要になったときはもう一工夫いりますね……。

編集者:すずき(2019/03/02 23:34)

コメント一覧

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



こんてんつ

open/close wiki
open/close Linux JM
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 2019年
open/close 2020年
open/close 2021年
open/close 2022年
open/close 2023年
open/close 2024年
open/close 過去日記について

その他の情報

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