Armadilloフォーラム

実機への開発環境の構築について

to0524

2015年7月27日 16時04分

お世話になります。

Armadillo-440で質問があり、投稿させて頂きます。
現在下記のようなことを検討しているのですが、可能なのでしょうか?

①実機のSDカードへatmark-distで作成したイメージからRAMに書き込むのと同じ
 環境を構築
②①の構築した環境にgccコンパイラを導入

上記のような内容なのですが、可能なのでしょうか?

恐れ入りますが、アドバイス頂けると幸いです。

コメント

at_yashi

2015年7月28日 15時08分

> ①実機のSDカードへatmark-distで作成したイメージからRAMに書き込むのと同じ
>  環境を構築
> ②①の構築した環境にgccコンパイラを導入
>
> 上記のような内容なのですが、可能なのでしょうか?

多分できないことはないと思いますが、ごめんなさい、用意はされていません。

イチからやるなら https://gcc.gnu.org/install/prerequisites.html とおなじことをする必要があります。

GCCに引きづられていろいろなツールが入るので、結局は Distで構築した意味がなくなる
ような気がします。もし良ければ、上記のような環境を構築したい理由を教えていただけますか?

もし、コンパイルからテストまでの時間を短縮するのが目的であれば、Debian を
SDに構築してはどうでしょうか?Debianの話も Distを SDに構築する話も
マニュアルに載っているので、参考にしてください。

http://manual.atmark-techno.com/armadillo-4x0/armadillo-400_series_soft…

SDに Distの環境を構築する話は、このフォーラムでも何度か出ているので、
検索してみてください。

to0524

2015年7月30日 11時04分

at_yashi様

ご回答ありがとうございます。
回答が遅くなり申し訳ございません。

> GCCに引きづられていろいろなツールが入るので、結局は Distで構築した意味がなくなる
> ような気がします。もし良ければ、上記のような環境を構築したい理由を教えていただけますか?

当方にあまり経験がないので的外れな回答や内容になるかもしれませんが
ご容赦ください。
目的としてはGPIOの変更や、Lihghttpdなどatmark-distで生成されるイメージを
ベースにした部分のテストや効率を考慮した点です。
具体的にはGPIOの設定やLighttpdなどの各種設定をatmark-distで生成されるイメージに
組み込んでおりその環境を実機に書き込んだ状態でコンパイラも組み込めれば、
デバッグなどが効率に進めれるのではないかと考えてです。

> SDに Distの環境を構築する話は、このフォーラムでも何度か出ているので、
> 検索してみてください。

例えばですが、上記のようにSDにDistの環境を構築するとADTEで行うように
GPIOの設定やLighttpdなどの各種設定を反映させてデバッグも行えるのでしょうか?
具体例としては例えばGPIOの設定(割り当て等)を反映させた状態で
コンパイル環境が出来るとありがたいのですが・・・

恐れ入りますが、何かアドバイスを頂けると幸いです。

to0524

2015年7月30日 13時09分

自レスになります。

> SDに Distの環境を構築する話は、このフォーラムでも何度か出ているので、
> 検索してみてください。

http://manual.atmark-techno.com/armadillo-4x0/armadillo-400_series_soft…

上記サイトを参考にしてSDカードにdistを構築してみたのですが、起動時に下記表示が起こり、正常に起動しているか
判断が付きません。

init started: BusyBox v1.00 (2015.04.24-11:24+0000) multi-call binary
Starting fsck for root filesystem.
fsck 1.25 (20-Sep-2001)
ext2fs_check_if_mount: No such file or directory while determining whether /dev/mmcblk0p1 is mounted.
fsck.ext3: No such file or directory while trying to open /dev/mmcblk0p1
/dev/mmcblk0p1:
The superblock could not be read or does not describe a correct ext2
filesystem. If the device is valid and it really contains an ext2
filesystem (and not swap or ufs or something else), then the superblock
is corrupt, and you might try running e2fsck with an alternate superblock:
e2fsck -b 8193

WARNING: Error while checking root filesystem.
You can login as root now, the system will reboot after logout.

Give root password for system maintenance
(or type Control-D for normal startup):

エラーを頼りに調査してみると、/etc/fstabがおかしいとのようですが、
下記のように設定しております。

/dev/mmcblk0p1 / ext3 defaults 0 1
proc /proc proc defaults 0 0
usbfs /proc/bus/usb usbfs defaults 0 0
sysfs /sys sysfs defaults 0 0

度々すみませんが何かアドバイスを頂けると助かります。

at_takashi.sasayama

2015年7月30日 13時33分

笹山です。

> init started: BusyBox v1.00 (2015.04.24-11:24+0000) multi-call binary
> Starting fsck for root filesystem.
> fsck 1.25 (20-Sep-2001)
> ext2fs_check_if_mount: No such file or directory while determining whether /dev/mmcblk0p1 is mounted.
> fsck.ext3: No such file or directory while trying to open /dev/mmcblk0p1
> /dev/mmcblk0p1:

上記ですが、Armadillo起動時に行われるファイルシステムチェックに失敗しています。

対応方法ですが、以下の手順で作業を行ってみてください。

■1. fsck.ext3 をシステム上に作成します。

標準では fsck.ext3 が存在しない為、これを作成します。

[armadillo]# ln -s /bin/e2fsck /bin/fsck.ext3
[armadillo]# ls -al /bin |grep fsck.ext3
lrwxrwxrwx    1 root     root           11 Jan  2 13:08 fsck.ext3 -> /bin/e2fsck*

■2. /etc/init.d/rc に添付の rc-mmc-fsck.txt を上書きします。

ここではファイルシステムチェックのタイミングを、標準より遅らせています。

[armadillo]# cp rc-mmc-fsck.txt /etc/init.d/rc

■3. システム reboot 後、ファイルシステムチェックが正常に行われることを確認します。

起動時のログ抜粋

Starting fsck for root filesystem.
fsck 1.25 (20-Sep-2001)
/dev/mmcblk0p1: clean, 1338/121088 files, 19607/242176 blocks
Checking root filesystem:                                       done
Remounting root rw:                                             done
ファイル ファイルの説明
rc-mmc-fsck.txt atmark-dist SDブート用 /etc/init.d/rc fsckタイミング修正版

at_yashi

2015年7月31日 18時09分

> 例えばですが、上記のようにSDにDistの環境を構築するとADTEで行うように
> GPIOの設定やLighttpdなどの各種設定を反映させてデバッグも行えるのでしょうか?

sysfs からの GPIOの設定や、lighttpdの設定ファイルを修正するくらいであれば可能です。
しかし Dist を SD においても、自動的にコンパイラーやデバッガーが入るわけではないので、
こちらは難しいですね。

> 具体例としては例えばGPIOの設定(割り当て等)を反映させた状態で
> コンパイル環境が出来るとありがたいのですが・・・

たとえば、ATDEでプログラムをコンパイルしたプログラムをすぐに Distで実行できると
良かったりしませんか?

たとえば、↓こんな感じで。
http://armadillo.atmark-techno.com/howto/root-on-nfs

これは、rootfs を nfs にしてしまっていますが、ここまでやらなくても
armadillo の /home/atmark/foo に、ATDEの /home/atde/myprogram を mount することとか
できます。そうすれば、コンパイル後に armadillo 上で

~$ foo/myprogram

とするだけです。

もっといろいろな方法があると思います。
この辺の話は、Armadillo 開発セミナーに参加してもらえるとお伝えできるかと。
http://armadillo.atmark-techno.com/seminar