Armadilloフォーラム

Linuxカーネル、hermitを新フラッシュに対応させたい

th

2018年7月24日 11時13分

【質問】
Armadillo-440のフラッシュメモリが変更されたので、
hermit、linuxカーネルを新フラッシュメモリに対応させようとしています。
Armadillo-400シリーズ 「新フラッシュメモリ移行ガイド」をみながら、作業を行っています。

Linuxカーネルにパッチをあてたのですが、エラーが発生しています。
どのようにすればよいでしょうか?
以下に私の環境、hermit の状況、Linuxカーネルの状況を記載しました。
新フラッシュ対応のLinuxカーネルに対して、私オリジナルの変更を加えていかないと動きませんか?

[ 私の環境 ]
・hermit-at 2.1.1
・linux-2.6.26-at14

[ hermit の状況 ]
hermit-at2.1.1 に公開パッチを当て、
電源をONすると「hermit > 」という表示が出てこなくなってしまいました。
パッチを当てた方法は「new_flash_memory_hermit-at-2.x.x.patch」ファイルを
エディタで開いて、該当箇所を目で見ながら、変更しました。
「hermit > 」という表示が出てこなくなってしまったので、
新フラッシュ対応のhermit-at 2.4.0をダウンロードして、私オリジナルの変更を加えました。
電源をONすると「hermit > 」という表示がでてきました。
hermit-at2.1.1にパッチを当てて動かす方法は後から、試みたいと思います。

[ Linuxカーネルの状況 ]
Linuxカーネルに公開パッチを当てたのですが、エラーが発生しました。
パッチを当てた方法はpatchコマンドを使いました。
パッチを当てたときのログを添付します。
・Linuxカーネルにパッチを当てたときのログ
atmark@atde3:~/linux-2.6.26-at14$ patch -p 1 < ../new_flash_memory_linux-2.6.26-at.patch
patching file arch/arm/configs/armadillo400_defconfig
Hunk #1 succeeded at 659 (offset -7 lines).
patching file arch/arm/configs/armadillo400_wlan_defconfig
Hunk #1 succeeded at 651 (offset -7 lines).
patching file arch/arm/mach-mx25/Kconfig
Hunk #1 FAILED at 33.
1 out of 1 hunk FAILED -- saving rejects to file arch/arm/mach-mx25/Kconfig.rej
patching file arch/arm/mach-mx25/armadillo400.c
Hunk #1 succeeded at 172 (offset -62 lines).
Hunk #2 succeeded at 202 (offset -62 lines).
Hunk #3 succeeded at 574 (offset -165 lines).
Hunk #4 succeeded at 1094 with fuzz 1 (offset -183 lines).
Hunk #5 succeeded at 1126 with fuzz 2 (offset -201 lines).
patching file arch/arm/mach-mx25/armadillo400_gpio.c
Hunk #1 succeeded at 1162 with fuzz 2 (offset -20 lines).
Hunk #2 succeeded at 1252 (offset -32 lines).
Hunk #3 succeeded at 1385 (offset -41 lines).
patching file arch/arm/mach-mx25/board-armadillo400.h
Hunk #1 succeeded at 21 with fuzz 2 (offset -2 lines).
patching file arch/arm/tools/mach-types
Hunk #1 FAILED at 1725.

コメント

at_kojiro.yamada

2018年7月24日 14時46分

> 【質問】
> Armadillo-440のフラッシュメモリが変更されたので、
> hermit、linuxカーネルを新フラッシュメモリに対応させようとしています。
> Armadillo-400シリーズ 「新フラッシュメモリ移行ガイド」をみながら、作業を行っています。
>
> Linuxカーネルにパッチをあてたのですが、エラーが発生しています。
> どのようにすればよいでしょうか?
> 以下に私の環境、hermit の状況、Linuxカーネルの状況を記載しました。
> 新フラッシュ対応のLinuxカーネルに対して、私オリジナルの変更を加えていかないと動きませんか?

hermit-at 2.1.1, linux-2.6.26-at14
でも適切にソースコードを修正することで対応可能です。

patchコマンドでパッチを適用できなかった場合の対処ですが、
基本的には、.rej ファイルを見てソースを修正していくことになります。
.rej ファイルは patchコマンドが失敗した時に生成され、パッチの適用できなかった部分が記述されています。
.rej ファイルが生成されたかどうかは、patchコマンド実行時のログを見るとわかります。

上記バージョンの(標準の)ソースにパッチを適用した際の .rej を確認したところ、
主に Armadillo-410, Armadillo-460 未対応のソースだったため、パッチを適用できなかったようでした。

http://download.atmark-techno.com/armadillo-440/source/bootloader/hermi…
http://download.atmark-techno.com/armadillo-440/source/kernel/linux-2.6…
上記ソースに適用可能なパッチを作成しましたので添付します。

添付のパッチを適用後、ソースにお客様の変更を入れていただければうまく動くかと思います。
デフォルトコンフィギュレーションを変更していますので、イメージをビルドする前に必ずデフォルトコンフィギュレーションを適用するようお願いします。

ファイル ファイルの説明
new_flash_memory_linux-2.6.26-at14.patch
new_flash_memory_hermit-at-2.1.1.patch

th

2018年7月27日 10時20分

返信が遅くなりすみません。
パッチを作成していただき、ありがとうございます。
下記の質問(1), (2)をさせてください。
(1)
> デフォルトコンフィギュレーションを変更していますので、イメージをビルドする前に必ずデフォルトコンフィギュレーションを適用するようお願いします。
デフォルトコンフィグレーションの適用方法ですが、以下でよろしいですか?
・Linuxカーネル
[PC ~/atmark-dist]$ make config
と入力し、コンフィグレーションを行う。

・hermit
[PC ~/hermit-at]$ make armadillo4x0_defconfig
とコマンドを実行する。

上記は方法は Armadillo-400 シリーズソフトウェアマニュアル 第6章ビルド
https://manual.atmark-techno.com/armadillo-4x0/armadillo-400_series_sof…
・6.1. カーネルイメージとユーザーランドイメージのビルド
6.1.2. デフォルトコンフィギュレーションの適用
・6.2. ブートローダーイメージのビルド
6.2.2. ビルド
を参考にしています。

(2)
以下のようした場合、新フラッシュで動作しますか?
・hermit
新フラッシュ対応のhermit-at 2.4.0をダウンロードして、私オリジナルの変更を加える。
・linuxカーネル
linux-2.6.26-at14にパッチを当てて、新フラッシュに対応にする。

at_kojiro.yamada

2018年7月27日 11時14分

> (1)

問題ありません。

> (2)
> 以下のようした場合、新フラッシュで動作しますか?
> ・hermit
> 新フラッシュ対応のhermit-at 2.4.0をダウンロードして、私オリジナルの変更を加える。
> ・linuxカーネル
> linux-2.6.26-at14にパッチを当てて、新フラッシュに対応にする。

上記組み合わせの場合は問題ありません。

ブートローダーとカーネルのバージョンの組み合わせによっては
Hermit-at ブートローダーとLinuxカーネルがそれぞれ持っているフラッシュメモリのメモリマップが異なる場合があり、
- 起動できない
- フラッシュメモリへのイメージ書き込みが正しく反映されない
といったことが起きる可能性がありますので注意してください。