コグノスケ


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

link もっと前
2015年12月7日 >>> 2015年11月24日
link もっと後

2015年12月5日

Device Treeを試したらハマった

ARM Linuxのブート方法は3種類あって、一番古い方式はもう使われていません。自作エミュレータの内蔵ブートローダで使っているのは2番目に新しい、ATAGSと呼ばれる方式です。

最新の流行はDevice Treeを使う方式らしいので、内蔵ブートローダを改造して試してみました。が、なぜかカーネルが異常なアドレスにアクセスして死にます。アドレスを調べても、仕様書にないレジスタです。

発動条件を調べるとDevice Treeを有効(CONFIG_MACH_VERSATILE_DTを有効にする)にして、Device Treeを使ってブートするとハマるようです。

Linuxカーネルのコードを見てもATAGSで起動したときと、Device Treeで起動したときに実行されるコードがなぜか違うし、どういう意味なんだこれ…。

怪しいレジスタアドレス

Linuxカーネルのコードに出てくるレジスタ名で調べていたら、どうもmach-integratorにあるコードと同じレジスタアドレスを使っているように見えます。

下記がIntegratorのレジスタアドレス定義です。

arch/arm/mach-integrator/hardware.h

#‎define IRQ_STATUS 0
#define IRQ_RAW_STATUS 0x04
#define IRQ_ENABLE 0x08
#define IRQ_ENABLE_SET 0x08
#define IRQ_ENABLE_CLEAR 0x0C

#define INT_SOFT_SET 0x10
#define INT_SOFT_CLEAR 0x14

#define FIQ_STATUS 0x20
#define FIQ_RAW_STATUS 0x24
#define FIQ_ENABLE 0x28
#define FIQ_ENABLE_SET 0x28
#define FIQ_ENABLE_CLEAR 0x2C

で、下記がDevice Treeで起動したときのVersatile PB/ABのレジスタアドレス定義です。コピペだと思えるくらいに似ています。

drivers/irqchip/irq-versatile-fpga.c

#define IRQ_STATUS 0x00
#define IRQ_RAW_STATUS 0x04
#define IRQ_ENABLE_SET 0x08
#define IRQ_ENABLE_CLEAR 0x0c
#define INT_SOFT_SET 0x10
#define INT_SOFT_CLEAR 0x14
#define FIQ_STATUS 0x20
#define FIQ_RAW_STATUS 0x24
#define FIQ_ENABLE 0x28
#define FIQ_ENABLE_SET 0x28
#define FIQ_ENABLE_CLEAR 0x2C

#define PIC_ENABLES 0x20 /* set interrupt pass through bits */

こちらが正しいレジスタアドレス定義です。ATAGSで起動した場合はこちらのアドレスが使われます。

arch/arm/mach-versatile/include/mach/platform.h

#define SIC_IRQ_STATUS                  0
#define SIC_IRQ_RAW_STATUS              0x04
#define SIC_IRQ_ENABLE                  0x08
#define SIC_IRQ_ENABLE_SET              0x08
#define SIC_IRQ_ENABLE_CLEAR            0x0C
#define SIC_INT_SOFT_SET                0x10
#define SIC_INT_SOFT_CLEAR              0x14
#define SIC_INT_PIC_ENABLE              0x20    /* read status of pass through mask */
#define SIC_INT_PIC_ENABLES             0x20    /* set interrupt pass through bits */
#define SIC_INT_PIC_ENABLEC             0x24    /* Clear interrupt pass through bits */

私もそんなに詳しいわけではありませんが、Versatile AB/PB (DUI0225D) とIntegrator CP (DUI0159B) は全く別のボードだと思うので、恐らくDevice Treeに対応した人が間違えたのでしょうね…。

バグってるっぽい

気になったのでqemuで試してみましたが、やはりエラーが出ます。もしかして動作確認してないのかなあ??

しかしqemuさんは強い子でして、明らかに未定義領域にwriteされたのに警告を出すのみで、とにかく先に突き進んでくれます。それで結果的に動くからスゴイですよね…。

QEMUでversatile dt (device tree) を試してみた
$ qemu-system-arm -kernel linux-4.1.13/arch/arm/boot/zImage \
 -dtb linux-4.1.13/arch/arm/boot/dts/versatile-pb.dtb \
 -M versatilepb \
 -append 'console=ttyAMA0' \
 -nographic -serial mon:stdio

Uncompressing Linux... done, booting the kernel.
vpb_sic_write: Bad register offset 0x2c★★★エラー出てる★★★
Booting Linux on physical CPU 0x0
Linux version 4.1.13 (katsuhiro@vbox) (gcc version 4.9.2 (GCC) ) #4 Sun Dec 6 01:46:36 JST 2015
CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00093177
CPU: VIVT data cache, VIVT instruction cache
Machine model: ARM Versatile PB

★を付けたところ(vpb_sic_write〜 と出ている部分)がqemuの警告です。

編集者:すずき(2015/12/06 03:11)

コメント一覧

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



2015年11月29日

Facebookにも意外と書いていた

Facebookでの2013〜2014年辺りの書き込みを、この日記にも転記しておきました。

大した数ではないだろうと甘く見ていたら意外と数が多くて、結局50個近くのエントリを作る羽目になりました。うーん、疲れた……。

編集者:すずき(2015/12/01 01:09)

コメント一覧

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



2015年11月28日

さようならnottv

ドコモ、NOTTV/モバキャスを2016年6月に終了 周波数は返還 - ITmedia Mobileを読んで。

ニュース見てnottvの開始時期いつだっけ?と思って調べたら2011年でしたから、約5年で終わってしまったんですね。

テレビ放送は放送局の都合で番組が流れるだけですが、VoDなら見たい番組をすぐに見ることができるわけで。どちらも有料なら、テレビ放送は選ばないですよね…。

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

編集者:すずき(2015/12/27 19:44)

コメント一覧

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



2015年11月26日

ARM向けクロスコンパイラを自分でビルド

目次: GCC

自作ARMエミュレータでLinaroのクロスコンパイラで作ったバイナリを動かすまでは道が遠すぎて(ARMv6, Thumb-2, ARMv7の実装が要る)、すぐに出来そうにないので、

ARM9用のgccとglibcをビルドすれば良いんじゃねー?と軽い気持ちで始めたのですが、エラー大量発生&何を変えたら直るかさっぱりわからず、悪戦苦闘でした。

一応libc付き&スタンドアローンで動作するARM用クロスコンパイラが作れましたが、疲れましたね…。

Linaroはcrosstool-NGを使っているようです。次はこれも試してみようと思います。自前でやって苦戦した今だからこそ、ビルド自動化ツールのありがたさが理解できるはずです。

GitHubに怒られた

適当にgccとlinuxのソースtarballをGithubに叩き込んだら、Githubに「デカいファイル置くな」って怒られた…。

GitHubにpushした時の警告
remote: warning: GH001: Large files detected. You may want to try Git Large File Storage - https://git-lfs.github.com/
remote: warning: See http://git.io/iEPt8g for more information.
remote: warning: File gcc-shared/gcc-4.9.2.tar.bz2 is 85.77 MB; this is larger than GitHub's recommended maximum file size of 50.00 MB
remote: warning: File linux-headers/linux-3.18.11.tar.xz is 77.21 MB; this is larger than GitHub's recommended maximum file size of 50.00 MB
remote: warning: File gcc-shared/gcc-4.8.4.tar.bz2 is 82.23 MB; this is larger than GitHub's recommended maximum file size of 50.00 MB

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

編集者:すずき(2023/09/24 11:42)

コメント一覧

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



2015年11月24日

日記のPermanent Link先

このサイトの日記には「permalink」というリンクを出していて、リンク先はあらかじめ保存しておいたHTMLファイルへのリンクとなっています。

内容は同じですが、動的に生成するトップページに比べ、permalink先は単なるHTMLファイルですので表示が速いはずです。実はきちんと測ったことないので、どれくらい速いかまでは知らないですけど…。

で、permalinkのリンク先であるHTMLファイルは、今まで記事を書くごとに手動で更新していたわけです。しかし面倒だし良く忘れてリンク切れになるし、ロクなことがないので、自動更新するように変えました。

現状は自宅サーバから更新を掛けており、昼と夜の1日2回更新です。たしかSakuraのサーバでもcrontabを設定できたはずですが、書き方が悪いのか動かなかったので放棄しました。

編集者:すずき(2015/11/26 01:15)

コメント一覧

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



link もっと前
2015年12月7日 >>> 2015年11月24日
link もっと後

管理用メニュー

link 記事を新規作成

<2015>
<<<12>>>
--12345
6789101112
13141516171819
20212223242526
2728293031--

最近のコメント5件

  • link 14年6月13日
    2048player...さん (09/26 01:04)
    「最後に、この式を出すのに紙4枚(A4)も...」
  • link 14年6月13日
    2048playerさん (09/26 01:00)
    「今のところ最も簡略化した式です。\n--...」
  • link 14年6月13日
    2048playerさん (09/16 01:00)
    「返信ありがとうございます。\nコメントが...」
  • link 14年6月13日
    すずきさん (09/12 21:19)
    「コメントありがとうございます。同じ結果に...」
  • link 14年6月13日
    2048playerさん (09/08 17:30)
    「私も2048の最高スコアを求めたのですが...」

最近の記事20件

  • link 24年9月14日
    すずき (09/22 11:23)
    「[OpenSBIを調べる - scratch領域の詳細] 目次: Linux今回はOpenSBIのコード内に頻出するscrat...」
  • link 21年8月11日
    すずき (09/22 00:15)
    「[Kindle - まとめリンク] 目次: Kindle初代Kindle Fire HDの話。Kindle Fire HDのカ...」
  • link 24年8月11日
    すずき (09/22 00:14)
    「[Amazonマイリストへの問い合わせの返事がきた] 目次: Kindle先日(2024年8月4日の日記参照)Amazonへ問...」
  • link 24年5月19日
    すずき (09/21 23:23)
    「[Yocto - まとめリンク] 目次: YoctoHello YoctoYoctoのセットアップスクリプトとビルドディレクト...」
  • link 24年9月17日
    すずき (09/21 23:22)
    「[Yoctoの並列Fetchでエラーが起きるとき] 目次: YoctoYoctoは特に何も指定せずにビルドすると全スレッドを使...」
  • link 23年4月24日
    すずき (09/19 22:25)
    「[Arty A7のFPGAを書き換える方法] 目次: RISC-VいつもArty A7-100を書き換えるときSPI Flas...」
  • link 23年4月10日
    すずき (09/17 21:06)
    「[Linux - まとめリンク] 目次: Linux関係の深いまとめリンク。目次: RISC-V目次: ROCK64/ROCK...」
  • link 24年9月13日
    すずき (09/17 19:26)
    「[OpenSBIを調べる - OpenSBIとRISC-V ISA extensions] 目次: Linux今回はOpenS...」
  • link 24年8月31日
    すずき (09/01 15:01)
    「[Microsoftマウスが壊れた] 3年前くらいに購入した(2021年3月6日の日記参照)Microsoft Basic O...」
  • link 23年5月15日
    すずき (09/01 15:00)
    「[車 - まとめリンク] 目次: 車三菱FTOの話。群馬県へのドライブ将来車を買い替えるとしたら?FTOのオイル交換とオイル漏...」
  • link 24年8月25日
    すずき (09/01 14:59)
    「[レガシィの7回目の車検完了] 目次: 車ディーラーまで車検の車を取りに行きました。外は非常に暑くて辛いです…&...」
  • link 21年3月6日
    すずき (09/01 14:14)
    「[気に入るマウスはどれ?] 手に合うワイヤレスマウスを探し続け、高級製品、小さい製品、お手ごろ製品と買いまくり、一時は家に5個...」
  • link 24年8月27日
    すずき (08/28 23:42)
    「[Milk-V Jupiterが届いた] 目次: RISC-VMilk-V Jupiterが届きました。お値段が非常に安かった...」
  • link 21年6月18日
    すずき (08/28 23:29)
    「[RISC-V - まとめリンク] 目次: RISC-V関係の深いまとめリンク。目次: LinuxSiFive社ボードの話、C...」
  • link 22年12月22日
    すずき (08/28 22:05)
    「[x86とARMとRISC-VでCoreMark対決] 目次: RISC-VCoreMarkを以前(2019年7月5日の日記参...」
  • link 22年5月26日
    すずき (08/27 12:39)
    「[glibcのスレッドとスタック] 目次: C言語とlibc誰も興味ないglibcの話シリーズ、スレッドのスタックはどうやって...」
  • link 22年8月29日
    すずき (08/21 16:22)
    「[マンガ紹介] 目次: マンガ紹介久しぶりにお気に入りのマンガ紹介シリーズ。短めの完結作品を2つ。赤髪の女商人(全3巻、202...」
  • link 22年7月8日
    すずき (08/21 14:21)
    「[マンガ紹介 - まとめリンク] 目次: マンガ紹介一覧が欲しくなったので作りました。5作品乙女ゲームの破滅フラグしかない悪役...」
  • link 19年3月28日
    すずき (08/21 14:19)
    「[マンガ紹介] 目次: マンガ紹介お気に入りのマンガ紹介シリーズ。こわもてかわもて(全2巻、2019年)(アマゾンへのリンク)...」
  • link 19年1月31日
    すずき (08/21 14:15)
    「[ハコヅメ] 目次: マンガ紹介Facebookで教えてもらったマンガ「ハコヅメ」を買ってみました。面白いです。次が楽しみです...」
link もっとみる

こんてんつ

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 サイトの情報

合計:  counter total
本日:  counter today

link About www2.katsuster.net
RDFファイル RSS 1.0

最終更新: 09/26 01:04