その1でブートイメージファイルを沢山書きましたが、
宿題が結構残っていましたので消化しました。
まずはxipImage
xipImage
XIP(eXecute in Place)形式というやつで、
RAMへ展開せずに、極力そのまま使えるようにしたものらしいです。
NORフラッシュ等に余裕があるなら使えそうな形ですね。
今度試してみよう。
menuconfigで設定する人は、
”Boot options –> Kernel Execute-In-Place from ROM”にチェックを入れて、
”Boot options –> XIP Kernel Physical Location”にアドレスをいれる。
.config直接いぢる人は、
”CONFIG_XIP_KERNEL”をyにして、
”CONFIG_XIP_PHYS_ADDR”にアドレスを入れる。
んで、お仕事でも使用しているボードでコッソリと試して・・・
試し・・・て・・・・
動かないorz
どうやら、NORがByteアクセス出来ない為に、ちゃんと動かんのです。
まさか実験の為だけにH/W何とかしろなんて言えないので断念です。
お次はrImage
rImage
ramcopy形式とMakefileには書いてありました。
無圧縮の形で、とにかく仮想空間への展開だけしてるのでしょうか?
じつはちょっと動きが分からないので、宿題デス。
# 実際ブートローダからjumpしたら動かなかtt
menuconfigで設定する人は、
”Boot options –> Kernel Uncompressed, RAMCOPY”にチェックを入れて、
”Boot options –> RAMCOPY Kernel source address”にアドレスをいれる。
.config直接いぢる人は、
”CONFIG_RAMCOPY_KERNEL”をyにして、
”CONFIG_RAMCOPY_SOURCE_ADDR”にアドレスを入れる。
こっちは動きました。
ほんとにそのまんま、コピーしてジャンプして動くシンプルな形です。
前回は、一先ずDRAMにイメージを展開して、それをLoadしてた為に、
CONFIG_RAMCOPY_SOURCE_ADDRと展開元アドレスが違ってたから、
うまく動かなかったってところですね。
シンプルなので起動速度は結構早いです。
uImageと比べると300msくらいは早くなった気がします。
・・・・msかよ!
って思われるかもしれませんが、今時の組み込みLinuxの起動時間は、
ms単位で縮めなきゃいけない状況なのですよ。
uncompressedなんでもちろん容量は大きくなりますが、
所詮はkernelなんで数Mの範囲ですしいいかな。
うん、起動時間とは逆にNORの容量がどんどん増えてきてるので、
kernelを極限まで小さく!なんてことはしなくても大丈夫になりましたねぇ。
ってなわけで、宿題消化!
0 件のコメント:
コメントを投稿