Armadilloフォーラム

Armadillo-840  システム再起動後/dev/mtdblock6がありません

motoko_chen

2021年5月7日 10時50分

お世話になります。

ホームページからArmadillo-840最新版のソースファイルのダウンロードし、 makeした後下記三つのファイルがありました。
1. loader-armadillo840-nor-v3.11.0.bin
2. linux.bin.gz
3. romfs_serial.img.gz 
上記ファイルを使用し、システムを起動した後、/dev/mtdblock6がなかったので、/mntにマウントされなく、
アプリケーションが動きませんでした。
原因及び解決案をご教示頂けますよう宜しくお願い致します。

コメント

at_akihito.irie

2021年5月7日 11時31分

入江です。

> 上記ファイルを使用し、システムを起動した後、/dev/mtdblock6がなかったので、/mntにマウントされなく、
> アプリケーションが動きませんでした。

ダウンロードしてきた標準ソースファイルから生成できる標準イメージには、
/dev/mtdblock6は含まれていません。

/dev/mtdblock6を使用する場合は、追加する処理を追記した上でビルドしてく
ださい。
以下の記事が参考になります。
https://armadillo.atmark-techno.com/blog/750/2142

> 入江です。
>
> > 上記ファイルを使用し、システムを起動した後、/dev/mtdblock6がなかったので、/mntにマウントされなく、
> > アプリケーションが動きませんでした。
>
> ダウンロードしてきた標準ソースファイルから生成できる標準イメージには、
> /dev/mtdblock6は含まれていません。
>
> /dev/mtdblock6を使用する場合は、追加する処理を追記した上でビルドしてく
> ださい。
> 以下の記事が参考になります。
> https://armadillo.atmark-techno.com/blog/750/2142
>

入江様
お世話になっております。
ご回答いただき有難うございました。

頂いた参考記事にてビルドし、システムを再起動した後、メモリアドレス消去が出来なく、sectorがロックされているという情報が出ました。
例えば:jffs2: Erase at 0x027c0000 failed immediately: -EROFS. Is the sector locked?

また、/dev/mtdblock6 を/mntにマウントしてみたいですが、「Device or resource busy」でマウントできません。

添付にて具体的な起動情報とDisk partitionの状況をお送りしますので、
ご確認頂いた上対策案をご教示頂きますよう宜しくお願い致します。

ファイル ファイルの説明
Armadillo-840 メモリについて.txt
実物.jpg

at_akihito.irie

2021年5月27日 17時55分

入江です。

前の私の回答で挙げた参考URLの情報が古い情報であったため、実際のソース
コードと記事の内容が大きく違っていたかと思います。
申し訳ございませんでした。

可能であれば、紹介した記事を参考にお客様がhermitとLinuxカーネルに対し
て行った修正を見せて頂ければアドバイスできるかと思います。

以上、よろしくお願いいたします。

> 入江です。
>
> 前の私の回答で挙げた参考URLの情報が古い情報であったため、実際のソース
> コードと記事の内容が大きく違っていたかと思います。
> 申し訳ございませんでした。
>
> 可能であれば、紹介した記事を参考にお客様がhermitとLinuxカーネルに対し
> て行った修正を見せて頂ければアドバイスできるかと思います。
>
> 以上、よろしくお願いいたします。

入江様
お世話になっております。
メモリアドレスに関する修正内容を添付にてお送りします。
修正した内容を赤い枠で示しました。
ご確認頂いた上アドバイスを頂きますよう宜しくお願い致します。

ファイル ファイルの説明
1.jpg
2.jpg

at_akihito.irie

2021年6月1日 11時28分

入江です。

お使いのArmadillo-840は、NORフラッシュメモリの変更前のものであり、対象
製品につきましてはフラッシュメモリへの書き込みの前にunlockし、書き込み
完了後にはlockして使用して頂くことになっています。

詳細は以下のページをご確認ください。
https://armadillo.atmark-techno.com/news/announce/20180409

つきましては、対象のパーティションのフォーマットから再度行っていただけ
ますでしょうか。

[armadillo]# flash_unlock /dev/mtd6
[armadillo]# flash_eraseall -j /dev/mtd6

使用する際にも、対象のパーティションをマウントする前にunlockし、アプリ
ケーション終了後にはlockするようお願いします。

[armadillo]# flash_unlock /dev/mtd6
: (アプリケーション実行)
[armadillo]# flash_lock /dev/mtd6

入江様

いつもお世話になっております。
ご回答いただき有難うございました。

頂いた対応方法でメモリアドレスの消去が出来ました。
しかし、最後のlockコマンドにつきまして、
どのスクリプトファイルでアプリケーションを実行するか分かりません。
現状は、アプリケーション終了後lockしておりません。
アプリケーション実行のデフォルトのスクリプトファイルはどれでしょか?
ご教示頂きますよう宜しくお願い致します。

アットマークテクノの古賀です。

motoko_chenさん(2021年6月2日 14時51分):
>ご回答いただき有難うございました。
>
>頂いた対応方法でメモリアドレスの消去が出来ました。
>しかし、最後のlockコマンドにつきまして、
>どのスクリプトファイルでアプリケーションを実行するか分かりません。
>現状は、アプリケーション終了後lockしておりません。
>アプリケーション実行のデフォルトのスクリプトファイルはどれでしょか?
>ご教示頂きますよう宜しくお願い致します。

お使いのアプリケーションが、どのようなものかによるかと思いますが、簡単な対応として、アプリケーションの起動と、起動後に取得したアプリケーションの PID を wait コマンドで待つ、という動作を行うスクリプトを作るというのは、いかがでしょうか?

たとえば、次のようなスクリプトです:

#!/bin/sh
 
$1&
wait $!
echo "the app is finished."

ATDE の場合ですが、このスクリプトを使い、次のようにして Libre Office を起動すると、Libre Office を終了した時に、
"the app is finished." というメッセージが出ます。

$ ./app_runner loffice &

ここで、上のスクリプトを app_runner という名前のファイルに保存して、実行権限を付けてあるものとします。上のスクリプト例で、echo 行の代わりに、flash_lock /dev/mtd6 と書けば、アプリケーションの終了時に lock できるかと思います。

wait コマンドや、bash のシェル変数 '$!' については、たとえば以下が参考になるでしょう:
https://www.atmarkit.co.jp/ait/articles/1906/28/news025.html
https://man7.org/linux/man-pages/man1/wait.1p.html
https://qiita.com/laikuaut/items/1daa06900ad045d119b4