dポイントプレゼントキャンペーン実施中!

シングルボードコンピュータのBeagle Bone Black(以下、BBBと略す)をLinuxで動かしている状態でのプログラムのBBBへの書き込み方を教えて下さい。

前任の人からBBBを通信と制御に使用した開発途中の装置を引き継ぎました。
前任の方も退職準備で忙しかったので、引き継ぎを受けたのは以下の部分のみ。
Linux UbuntuをmicroSDに入れてBBBにて起動。Device-Treeだとか色々な設定をして、どうやらBBBはUbuntuとして起動する状態になっている。

さて、今後装置制御をBBBにやって貰うにはBBBにプログラムを書き込む必要があると思うのですが、この点の説明は全くして貰っていません。
BBBをディスプレイやキーボードに繋いだ状態で、直接プログラム(C言語)を書き込んでコンパイルすれば良いのでしょうか? 或いは、PC上で開発して、コンパイルしたものをIP経由(か何かの方法)で入れるのでしょうか?
「BeagleBoneBlackで遊ぼう!」と言う本を参照しているのですが、どうやってBBBに書き込んでいるのかよく分からなくて、混乱しています。

それと、BBBに電源入れたら、上記で準備したプログラムが自動で走るようにするにはどうすれば良いでしょうか?
どなたかお分かりになる方、教えて下さい。

A 回答 (1件)

Ubuntuであれば、基本的なシステムは


deb形式のパッケージを、dpkg,apt,aptitudeといったコマンドや
GUI上のソフトウェアセンターなどを使って管理します。

Ubuntuには、DebianやFedoraなどと同じように
Ubuntu用のリポジトリーと呼ばれるサーバー上のファイル倉庫があり
apt,aptitude,ソフトウェアセンターやSynapticなどは
このリポジトリーにあるソフトを扱うための基本的な管理ツールです。

PPAと呼ばれる、標準のリポジトリー以外のパッケージ群も
PPAの追加といった行程を経て追加することができます。

これらは、依存関係と競合を考慮しながらアップデート管理をできます。
ただし、各パッケージはUbuntuそのリリースごとにリリース時バージョンのものを使い
たとえば、Apache HTTPサーバーは2.4.9や2.2.27が出ていますが
Ubuntu12.04LTSとしては2.2.22のまま、セキュリティパッチを充てたものが供給されています。
(PPAで新しいバージョンを供給するような場合もありえます)

こういったリポジトリーにあるパッケージはBBBの場合はCortex A8というARM系のCPUなので
Cortex A8用としてビルドされたファイルが収納されています。

対して、一般的に配布されているソフトは、ほとんどの場合
ソースコードか、x86かAMD64用としてビルドされたものです。

ですから、そういったものや自作のものであれば
開発環境をBBBの中に入れて、そこでビルドするか
あるいは、クロスコンパイル環境を構築して、PCでビルドすることになります。

Ubuntuでは開発環境の基本的な部分は
build-essentialパッケージを入れるだけで導入できたりします。
多くのソースコードが、これを入れるだけでビルドできるようになります。

ただ、BBBのストレージの小ささとCPU性能の低さを考慮すれば
推奨されるのはクロスコンパイルということになります。


ただ、開発内容によっては、スクリプト言語などを多用して
CPUアーキテクチャーの違いに、束縛されにくい方法もあるかもしれません。

Linux系OSでは、Windowsでは一般的ではない
スクリプト言語による、既成コマンドも広く使われています。



なお、Linux系OSで、外部からファイルを取得する方法は
ftpやwget(HTTP)などが基本的な方法と言えます。

wgetはコマンドラインから、HTTPサーバーからファイルを取得することができます。
ftpはftpサーバーから、必要に応じて、NFSサーバーやSamba(SMB,CIFS)サーバーを
ファイルサーバーとして利用することも考えられます。


スクリプト言語などで追加したコマンドは、もともと実行PATHが設定されている
/usr/local/bin/に置くのが手軽です。
実行PATHを追加設定するなら、任意のディレクトリーでもイケます。


Cなどで開発したソフトも、基本的には/usr/local/binなどに置きます。

ですから、debパッケージにまとめた上で
PCからBBBに受け渡すようにしておけば
インストール先などもdebパッケージ作成時に指定されるので
管理の手間が簡略化できます。
http://sourceforge.jp/magazine/14/01/17/090000


ソフトごとに、独自のディレクトリーを作るというカタチは
Linuxを含むUNIX系OSでは一般的ではありません。

Windowsでは、そういう文化ゆえに、バックアップの煩雑さが問題となり
設定ファイルをバイナリーファイルで統合するレジストリーへと、誤った進化を経たような感があります。


UNIX系OSでは、あるソフトの実行ファイルは/usr/bin/や/usr/sbin/に置き
設定ファイルは/etc/下に置き、説明書は/usr/share/man/<locale>/に置くといった
役割ごとのディレクトリー分けが徹底されています。

クライアントシステムとしての個人設定も
~/とも記述するホームディレクトリー下に保存するようになっており
/etcと/homeをバックアップすれば
ほとんどの設定はまとめて残せると言われています。(例外はあります)
    • good
    • 0
この回答へのお礼

お礼が遅くなり、申し訳ありませんでした。
アドバイス有難うございます。Linux系は分からない事が多いので、大いに参考になりました。まだ不明の点も多いですが、色々試してみます。
有難うございました。

お礼日時:2014/08/21 17:27

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!