明日にはでっかい太陽が昇るかもしれません。

「覚悟」とは!! 暗闇の荒野に!!進むべき道を切り開く事だッ!

2017-01-01から1年間の記事一覧

Linux (aarch64) on Qemu を動作させたい (2)

Qemu への SEV 対応は、以下のような情報があり、 "パフォーマンスが悪いから nop にしているよ" みたいな感じに読めたけど、今回はパフォーマンスよりも動作の再現性を優先したいので、実装してみる。 Re: [Qemu-devel] implemetation of wfe and sev instr…

Linux (aarch64) on Qemu を動作させたい (1)

U-Boot をひと通り動かすことができるようになったので、引き続き Linux を動作させていく。 Linux も、 NXP-SDK 付属のものを使用して、ターゲット向けのバイナリをそのまま動作させることを目指す。 FIT ファイルの作成 ビルドしたあと、 U-Boot からよみ…

U-Boot (aarch64) on Qemu を動作させたい (10)

github.com ほそぼそと開発を続けていたのですが、ようやく eMMC (実態は SDHC デバイス) の実装がある程度まともに動作するようになり、 U-Boot から ext2 パーティションをマウントできるようになりました。 仕事で使用しているカスタムボードは eMMC から…

SDIO におけるコマンドの CRC について

Qemu の MMC / SDエミュレーションのコードを見ると、すべてのデバイスで CRC が crc = 0 /* FIXME */ とかになっているので、真面目に実装しようかなと思って調べた情報を記載しておく。 全体の仕様は、 https://www.sdcard.org/cht/developers/overview/sd…

docker コンテナ内で byobu (tmux) を利用する

Tmux and Screen | Intuitive documentation for using Docker containerization 最近は docker exec で直接コンテナ内に入っているけど、 ssh 経由の場合などと対処を混同しちゃうので、まとめておく。 $ docker exec -ti YOUR_CONTAINER_NAME script -q -c…

U-Boot (aarch64) on Qemu を動作させたい (9)

github.com 結論からいうと、公式の U-Boot をターゲット向けビルドのモジュールのまま Qemu 上で起動することができるようになった。 ここでの公式は、オリジナル U-Boot に NXP のカスタマイズが入った今回のターゲットボードである LS1046A RDB 向け U-Bo…

U-Boot (aarch64) on Qemu を動作させたい (8)

ハングの原因を追いかけると、リロケーション後に特定のメモリ領域 (キャッシュ関連) に値が入っていないため、例外が発行されていることがわかった。 U-Boot 的には final_mmu_setup() > enable_caches() 内の asm volatile ("msr tcr_el3, %0" : : "r" (tc…

U-Boot (aarch64) on Qemu を動作させたい (7)

なんとか、 DDR の SDP も実装し、 board_f.c の init_sequence_f の初期化シーケンスについては抜けられるようになった。 だが、どこかでハングが発生して、プロンプトまでは到達していない。 u-boot の処理では、プログラムのリロケーションが実行されてお…

U-Boot (aarch64) on Qemu を動作させたい (6)

現在は、仕事で触れている freescale の ls1046a Reference Design Board の U-Boot を Qemu で動作させるべく、仮想ボードを作成中。 CPU, RAM, UART と何とか整えてきて、i2c の調整を行っています。 U-Boot 2016.092.0+ga06b20925c (Oct 22 2017 - 21:04:…

U-Boot (aarch64) on Qemu を動作させたい (5)

u-boot.bin をダンプすると、 init_sequence_f のアドレスには関数ポインタが格納されていることを確認した。 0004cb70 1c 07 09 00 00 00 00 00 48 9c 09 00 00 00 00 00 |........H.......| 0004cb80 00 08 09 00 00 00 00 00 38 2d 08 00 00 00 00 00 |..…

U-Boot (aarch64) on Qemu を動作させたい (4)

更に処理を追いかけると、 board_init_f() (common/board_f.c) で static に取られた変数の init_sequence_f のデータが空になっていることがわかった。。 本来は、ボードの初期化メソッドのテーブルなので、関数ポインタが入っているべきところ。 どゆこと…

U-Boot (aarch64) on Qemu を動作させたい (3)

確認していくと、どうやら u-boot の _start (arch/arm/cpu/armv8/start.S:22) がちゃんと処理されていることが確認できた。 確認手順は、 $ qemu-system-aarch64 \ -S -gdb tcp::1234 \ -machine $MACHINE \ -kernel u-boot/u-boot \ -nographic してから、…

U-Boot (aarch64) on Qemu を動作させたい (2)

とりあえず、期待通り U-Boot の entry point である 0x80000 (_start) に制御が移っているのか?ということの確認を目指してみる。 qemu 自体を gdb で解析してみる。 gdb --args qemu-system-aarch64 -machine raspi3 -kernel u-boot/u-boot -nographic 途…

U-Boot (aarch64) on Qemu を動作させたい (1)

なんとか、動作させるまで漕ぎ着けたいな。。 現状は以下のような状態です。 qemu-system-aarch64 -M raspi2 -cpu cortex-a53 -kernel u-boot ... (u-boot with rpi_3_defconfig) は全く(?) 動作していないっぽい。 同じ aarch64 (cortex-a53) の xlinx-zcu1…

Das U-Boot on Qemu (aarch64) を動かしてみる

U-Boot を aarch64 emulated by Qemu な環境で動作させることができるか試してみる。 Qemu のビルド まずは、 Qemu をビルドしてみる。 ### とりあえず、現状最新の v2.10.1 で試してみる。 $ git clone git://git.qemu.org/qemu.git $ cd qemu $ git checko…

node.js の (泥臭い) デバッグ方法 - ログ編 -

github.com 今回、 Let’s Chat のリバースプロキシプラグインを自動ログインに対応させたところ、XMPP のログインで例外が出るようになってしまったので、泥臭くデバッグしました。 そこで、 console.log でオブジェクトを出力すると [object object] としか…

luajit に入門してみた

ことの始まり 仕事で Lua を使うことになりそう (というか、使う方向に持って行こうとしている) ので、 LuaJIT の使い勝手を事前に確認してみた。 C との IF が多くあるっぽいので、個別に binding を実装するととんでもないことになりそうなので、 LuaJIT …

Bitbucket のプルリクエストの差分を patch 形式で取得する

忘れそうなので備忘録として。 Github では、プルリクエストから patch 形式でダウンロードするのは単純に URL の最後に .patch をつければ良いけど、 Bitbucket では単純に同じことはできなかったので調べると、 API を叩けばできることがわかった。 https:…

Kallithea の DB を SQLite から PostgreSQL に移行する戦い

仕事で Kallithea を使用しているのだけれど、標準の SQLite にはプロジェクトの規模が大きすぎるのか、 python がお亡くなりになる現象が多発している。 (Windows 上で動作させていることも原因かも。。) そのため、公式の情報に従い、 SQLite から Postgre…

Hubot から ErrBot に乗り換えたい

Node.js および Coffee Script に関して、あまり詳しくないため、 Hubot では実現したい機能をどのように実装すればよいかわからないことが多い。 そのため Node.js よりは使い慣れている Python で実装されたチャットボットである ErrBot への乗り換えを検…

Trac に JSON-RPC の機能を追加して、curl でチケットを作成してみた

今の仕事では、客先は Redmine を使用している。 だが、客先の Redmine には社内事情をかけないため、必然的に社内的な作業を管理する ITS が必要となるのだが、個人的な事情 (Ruby ×、Python ○ なので) により Trac を使用している。 ちょっとした事情から…

サーバアプリのアップデートに、えらい手間取っている話

会社のサーバ PC が近々新しくなるので、手元環境で開発に導入しているアプリをアップデートの予行演習をしようとしたら、めちゃくちゃ手間取っている。 全然進んでいないけど、本番環境のアップデートの際の備忘録として残しておく。 Let’s Chat の更新 更…

Yahoo が継続的デリバリーシステムの ScrewDriver を OSS として公開した

github.com 米 Yahoo が作成した継続的デリバリーシステムの ScrewDriver を OSS として公開したらしい。 継続的デリバリーと継続的インテグレーションの厳密なカバー範囲はよくわかっていないけど、今プロジェクトで使用している Jenkins を置き換えること…