スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

組み込みAndroidポータブル #12

第12章 電源不具合を解決せよ

ビーグル君とお散歩を目指すプロジェクト。
前回は、モバイル電池を購入してUSB OTGポート経由でBeagleBoardxMに給電しましたが、バックライトが中途半端な明るさで、OSが全く起動しませんでした。

120513_power.jpg

今回はこいつを解決します。


解析
不具合写真をよく見てみると、DCジャック近くのLEDが赤く光っていることがわかる。
LEDのリファレンス番号はD13。
"BeagleBoard-xM System Reference Manual Revision A3"によると、過電圧検知するとD13が点灯すると書いてある。回路図と部品データーシートを睨めっこしてみたが、過電圧検知じゃなくて低電圧検知ではなかろうか?
Revision B → Revision Cの変更点で、この回路が変更されている。やっぱ間違ってたのでは?
Rev Bに話しを戻すと、この検知回路はDC5Vジャックの電圧を検知して、低電圧の場合はFETをOFFにするという仕組みと解釈した。今回はUSB OTGポート電源なのに検知しているのは、FETから電圧が回り込んでいるのだと思う。
つまりは、内部の電圧(DC_5V)が下がっているということだ。
実測してみると、USB OTGポート端の電圧4.8Vに対し、内部電圧(DC_5V)は2.8Vくらいだった。


原因
ビジネスメンは忙しいので結論から先に言うと、原因は「突入電流」だ。
変換基板の3.3V REG ICの回路に電解コンデンサを付けているが、これを外してみるとOSがちゃんと立ち上がる。
電源投入直後は、非常に短い時間であるが、電荷のたまっていないコンデンサに急激に電流が流れる。これが「突入電流」
そして、BeagleBoardxMのUSG OTGポートと内部電圧(DC_5V)の間には"TPS2141PWP"というICがあり、DCジャックの挿入有無を検知してスイッチしているだけかと思っていたが、電流を監視して制限していた。

ICのデータシートをざっくり意訳すると
・突入電流を抑えるために最初は最大100mAに制限している
・その後、出力側の電圧が入力側の93%以上に達したら制限を1800mAまでに引き上げる
ということだ。
何でこんなことやっているのかというと、USB規格で「USBデバイスがUSBホストから電源を得る場合に突入電流による急激な電圧低下を防ぐこと」と決まっているためだ。

しばらく待っていれば、93%に達しそうなものだが、LCD側の負荷により電解コンデンサにたまった電荷がすぐ使われてしまい、電圧が上がらない均衡状態が続いていると思われる。
とりあえず、原因はわかった。


対策
・電解コンデンサ削除
これでいいじゃん! と思うかもしれないが、電解コンデンサは飾りで付いている訳ではない。
実際に外してみると、非常に映像が乱れる。
却下

・給電をUSB OTGポートからDCジャック側へ改造
DCジャック側には電流制限を行うICは居ない。
しかし、BeagleBoardxMの基板に手を入れて改造するのは避けたい。値段高いしね。
またUSBケーブルを改造してDCジャックに変換する手もあるが、こりゃ面倒だ。
却下

・制限抵抗追加
突入電流を防ぐ対策として、間に抵抗を入れる案がある。
しかし、3.3V REG ICに定常的に流れている電流は235mA。
どれくらいの抵抗値が必要なのかはやってみないと分からないが、電圧降下を考えるとそれほど大きな抵抗は入れられない。また、無駄に熱として電力が消費されてしまい、電池の持ち時間を減らしてしまう。
却下

・インダクタ追加
突入電流を防ぐ対策として、間にインダクタを入れる案がある。
インダクタであれば、突入電流時は抵抗値が大きくなり、定常時は抵抗がほぼゼロになるので、無駄な電力が消費されずに済む。
しかし、手持ちのインダクタで試してみたが結果は変わらなかった。
ちゃんと特性を考慮して購入する必要がありそうだ。
保留

電源供給タイミングをずらす
電解コンデンサにしっかり充電させた後に、LCD側の負荷を繋ぐという作戦。
LEDバックライトの電流が支配的なので、ここにトグルスイッチを付けて、手動でバックライトをON/OFF出来るようにした。
120513_power2.jpg
スイッチを挿入する場所はLEDバックライト電流が直接流れている所ではなく、LEDドライバのEN(chip enable)端子。 キャリーボード上でプルアップされているので、トグルスイッチを使ってGNDとショートもしくはオープンを切り替えられるようにした。

トグルスイッチでEN端子とGNDをショートしたまま電源投入
(バックライトOFFのまま起動)
120513_power3.jpg

その後、トグルスイッチを切り替えてEN端子とGNDをオープンにする
(ちょいと遅れてバックライトをON)
120513_power4.jpg
※実際はandroidのロゴが出るまで待つ必要はない。電源投入直後1秒以内にスイッチを切り替えて問題ない
成功!
→ これを採用


結果
とりあえず、仮ですが組み直しました。
120513_power6.jpg

「これはビーグル君の"しっぽ"です。」と誤魔化す案もありますが
邪魔だし、手動で切り替える手間がかかるので何とかしたいと思います。


続く


必要な部品 [ 購入先 ]
・トグルスイッチ[マルツパーツ館]
・スズコート線材 1.2mm[マルツパーツ館]

参考にしたサイト
BeagleBoard-xM System Reference Manual Revision A3
BeagleBoard-xM System Reference Manual Revision C
TPS3803G15
TPS2141
FDC6331L
IFB-T043S(Carry Board)
RT9293(LED Driver)
Wikipedia(突入電流)
EDN JAPAN(USBデバイスの受電時に突入電流を制限)
宮崎技術研究所(良くわかる 実用ノイズ対策技術)

スポンサーサイト

組み込みAndroidポータブル #11

第11章 電源はどうするよ?

ビーグル君とお散歩を目指すプロジェクト。
前回は持ち運べるようにケースに押し込めました。
今回は電源です。
120510_Beagleboard.png


電源供給方法
そもそもBeagleBoardxMで可能な電源供給方法は何があるのか調べました。
(1)5V DCジャック
今、使用している方法ですが、5Vに変換するACアダプターを繋げるためコンセントが必要。
これでは持ち運べません。

(2)USB OTG Port
USB miniABコネクタにUSBケーブルを繋いで給電
スマホを充電する電池とかUSBタイプのバッテリーはたくさん世に出ているので、これを使えばいけそうだ!


消費電流調査
まずBeagleBoardxM自体の電流値は"BeagleBoard-xM System Reference Manual"よりTyp 750mAということはわかりました。
次に変換基板、キャリーボード、4.3inch LCDでの消費電流をざっくり調査・計算してみました。
Backlight LED 181mA
3.3V Regulator IC 15mA
1.8V Regulator IC 0.6mA
LCD driver 15mA
LED Driver 2.6mA
Logic Level Converter(x4) 21.2mA
NAND gate 0.01mA
------------------------------------
合計 約235mA
※TYPとMAX混在してます。ざっくりだからイイんです。

BeagleBoardxMと合わせると約985mAということがわかりました。


電源購入
BeagleBoardにマウスやキーボードなどのUSB機器やLANケーブルを繋ぐともっと消費することから1500mAくらいは流せるモノが必要そうです。
何か良いのないかな~って探していると、ぴったりなのがありました。

Panasonicモバイル電池パック QE-PL201

USB対応のリチウムイオン充電池
出力:5V 1.5A
寸法:63x70x24mm
質量:150g
端子数:2個
充電時間:約7時間
出力時間:約5時間(1端子)、約2.5時間(2端子)


という訳で、早速購入しました。

(中略)

早速、届きました。
120510_power.jpg
それほど大きくないし、デザインもシンプルでスタイリッシュ。
さすがに、今回作ったケースの中には入りませんが、簡単に持ち運べそうです。
もちろん、スマホとかにも使い回せます。


他のアイテムも必要
ここで注意するのは、1.5AというのはUSBを2端子挿したときの最大値です。
1端子あたりの出力値は仕様書に書いていないので不明。

なので、BeagleBoardxMで使う場合は、USB Yケーブルが必要になります。
家にないか探してみると、Docomoのモバイルルーターの付属品がありました。
120510_power2.jpg
家電量販店とかにも売ってます。


起動
モバイル電池パックをBeagleBoardxMに装着!
120510_power3.jpg


電源オン!
120510_power4.jpg
あれっ? バックライトが中途半端に暗いし、OSも起動もしない...


続く


必要な部品 [ 購入先 ]
・Panasonicモバイル電池パック QE-PL201[楽天]
・ELECOM ダブルパワーUSBケーブル[楽天]


組み込みAndroidポータブル #10

第10章 ケースを作ろう!

ビーグル君とお散歩を目指すプロジェクト。
Android2.3をポーティングし、4.3inch LCDに表示させることができました。

外へ持ち運ぶのに基板むき出しでは、せっかく配線した線がポロリと取れてしまう可能性があります。
そこで今回はケースを作成します!
120508_Beagleboard_case.png


ケースに入れるメリット
・一体型となり持ち運び易くなる
・何となく作った感を味わえる
・誤って配線が取れてしまうことを防げる
・透明ケースに入れると反射光でカッコよく見える
・ホコリがたまりにくい
など色々あります。


使用する材料
秋月のポリカーボネート・ケースを使いました。
寸法は縦125mmx横110mmx高さ31mm
このサイズにLCDとキャリーボードと変換基板とBeagleBoardを押し込めると、かなりギリギリです。


使用する工具
白物家電の三種の神器といえば、エアコン、冷蔵庫、洗濯機。
卓上製品の三種の神器といえば、卓上カレンダー、卓上ポールペン、そして 卓上ボール盤

120508_drilling_ machines
あと ヤスリ も必要


作業内容
現物合わせでペンで印を付けて、卓上ボール盤で穴を空け、ヤスリでシコシコと削る地道な作業です。

[空けた箇所]
・USB Aコネクタ×4
・LANコネクタ
・Dsub9pinコネクタ
・DCジャック
・USB miniABコネクタ
・microSDスロット
・HDMIケーブル
・ステレオミニジャック
・基板スぺーサー×4
※マイクとS端子の穴は用意しませんでした。


完成品
こんな感じで出来ました。
120508_case.jpg


アップ画像。
120508_case2.jpg
大雑把過ぎると思われるかもしれませんが、四角を作るのが難しいです。
ヤスリで削る作業が大変すぎます。


BeagleBoardxMを入れてみました。
120508_case3.jpg
ステレオミニジャックは遠いため、別途ジャックを用意しジャンパー線で延長しました。
この後、Beagleboardにスぺーサーも付けました。


フタをしてDCジャックやマウスを挿してAndroidを起動
120508_case4.jpg
良い感じ。
ケースに入れてしまえば、大雑把な穴の形も気にならなくなります。


続く



必要な部品 [ 購入先 ]
・大型ポリカーボネート・ケース 140[秋月電子通商]
・プラスチックナット+連結(6角ジョイント)スペーサー(10mm)セット[秋月電子通商]
・ミニジャックφ3.5ジャック(ステレオ・オープンBOX型)[千石電商]
・スズコート線材 1.2mm[マルツパーツ館]

追伸
熱がたまるので放熱は考えた方が良いかもしれません。
写真だと簡単そうに見えますが、丸一日作業でした。。。
もっと効率の良い作り方があれば、誰か教えて

組み込みAndroidポータブル #9

第9章 Androidポーティングに挑戦(2)

ビーグル君とお散歩を目指すプロジェクト。
前回からの続きで、Android 2.3(GingerBread)をビルドしてBeagleBoardxMに入れます。
120507_Beagleboard.png


全体の流れ
前回(1)、(2)が終わりました。今回は(3)から最後までダーっとやります。
簡単に言うと、"images"というフォルダを作り、ビルドしたモノをそこにどんどん放り込みます。
最後にシェルスクリプトを使ってmircroSDに書き込む という流れです。

(1)事前準備
(2)Source CodeとDevKitをダウンロード

(3)作業準備
(4)MLOを作成
(5)u-bootを作成
(6)KernelをビルドしてuImageを作成
(7)Andoridをビルドしてrootfsを作成
(8)boot script作成と解像度変更
(9)microSDカードへ書き込み
(10)起動


(3)作業準備
"myGingerBread"というフォルダを作成します。
その下に"images"というフォルダを作成します。

mkdir myGingerBread
cd myGingerBread
mkdir images


前回ダウンロードした2つのファイルをドラッグ&ドロップでmyGingerBreadへ移動します。

マウスで作業


以下のコマンドを実行して2つとも解凍

tar zxvf TI_Android_GingerBread_2_3_4Sources.tar.gz
tar zxvf TI_Android_GingerBread_2_3_4_DevKit_2_1.tar.gz


"TI_Android_GingerBread_2_3_4Sources"へ移動し
readmeというファイルに従ってコマンドを実行

cd TI_Android_GingerBread_2_3_4Sources
./.repo/repo/repo sync --local-only


以下コマンドを実行しPATHを通す

export PATH=~/myGingerBread/TI_Android_GingerBread_2_3_4Sources/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin:$PATH

これで、ビルド作業に入れます。


(4)MLOを作成
"x-loader"フォルダへ移動

cd x-loader


クロスコンパイルを実行

make CROSS_COMPILE=arm-eabi- distclean
make CROSS_COMPILE=arm-eabi- omap3beagle_config
make CROSS_COMPILE=arm-eabi-


"x-loader.bin"というファイルができるので、DevKitの中にある"signGP"というプログラムを使ってMLOを作成する

../../TI_Android_GingerBread_2_3_4_DevKit_2_1/Tools/signGP/signGP ./x-load.bin


"x-load.bin.ift"というファイルができるので、"images"フォルダへ移動し、名前を"MLO"に変更する

mv x-load.bin.ift ../../images/MLO



(5)u-bootを作成
"u-boot"フォルダへ移動しビルド

cd ../u-boot/
make CROSS_COMPILE=arm-eabi- distclean
make CROSS_COMPILE=arm-eabi- omap3_beagle_config
make CROSS_COMPILE=arm-eabi-


"u-boot.bin"というファイルができたので、"images"フォルダへコピー

cp u-boot.bin ../../images/


母艦PC直下の"/usr/bin"フォルダに、"tools"フォルダの下にある"mkimage"をコピー
これはkernel imageを発生させるのに必要

cd tools
cp mkimage ~/bin



(6)KernelをビルドしてuImageを作成
"kernel"フォルダへ移動

cd ../../kernel


ビルドする。 このとき最後の "-5"というオプションは母艦PCのCPUコア数 + 1 の値にすると速く実行できる。
CPUコアの調べ方は、"cat /proc/cpuinfo"などで調べられる。

make ARCH=arm CROSS_COMPILE=arm-eabi- distclean
make ARCH=arm CROSS_COMPILE=arm-eabi- omap3_beagle_android_defconfig
make ARCH=arm CROSS_COMPILE=arm-eabi- -j5 uImage


"arch/arm/boot"の下に"uImage"ファイルが出来たので、"images"フォルダへコピー

cd arch/arm/boot
cp uImage ../../../../../images/
cd ../../../../



(7)Andoridをビルドしてrootfsを作成
Android File Systemをビルドします。 先ほどと同様にCPUコア数+1 を-jオプションで追加
ちなみに1時間弱放置していたら、いつの間にか出来ていました。

make TARGET_PRODUCT=beagleboard OMAPES=5.x -j5


Android File Systemが作られた位置へ移動

cd out/target/product/beagleboard


"android_rootfs"というフォルダを作成して、その中に"root"フォルダの中身 と "system"フォルダ をコピー

mkdir android_rootfs
cp -r root/* android_rootfs
cp -r system android_rootfs


圧縮して"rootfs.tar.bz2"というファイル名にした後、"images"フォルダへコピー

sudo ../../../../build/tools/mktarball.sh ../../../host/linux-x86/bin/fs_get_stats android_rootfs . rootfs rootfs.tar.bz2
cp rootfs.tar.bz2 ../../../../../images/



(8)boot script作成と解像度変更
DevKitへ移動し、"mkbootscr"を実行

cd ~/BeagleBoard/TI_Android_GingerBread_2_3_4_DevKit_2_1/Tools/mk-bootscr/
./mkbootscr


"boot.script"というファイルが出来るので、編集する

sudo emacs boot.script


以下を入力して保存。 ここで解像度を480x272にしています。

mmc init
fatload mmc 1 80200000 uImage
setenv bootargs 'console=ttyO2,115200n8 androidboot.console=ttyO2 mem=256M root=/dev/mmcblk0p2 rw rootfstype=ext3 rootdelay=1 init=/init omap_vout.vid1_static_vrfb_alloc=y omapfb.mode=dvi:480x272MR-24 omapdss.def_disp="dvi" vram=8M omapfb.vram=0:8M'
bootm 0x80200000


"boot.scr"を作成して、"images"フォルダへコピー

sudo ./mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n BeagleBoard -d boot.script boot.scr
cp boot.scr ../../../images/



(9)microSDカードへ書き込み
シェルスクリプトを"images"フォルダへコピー

cd ../mk-mmc
cp mkmmc-android.sh ../../../images/


さあ、これで役者はそろいました!
書き込む microSDカードを母艦PCへ繋ぎます。
ドライブの場所を確認してください。
システム→Administration→ディスク・ユーティリティ でわかります。
もしくは、dfコマンドでも確認できます。
エレバカの母艦の場合は "/dev/sdc" ということが分かりました

cd ../../../images
LANG=C sudo ./mkmmc-android.sh /dev/sdc MLO u-boot.bin uImage boot.scr rootfs.tar.bz2

書き込みが終了したら、microSDカードをBeagleBoardxMへ挿入!


(10)起動
電源オン!
120507_android1.jpg


とりゃー!
120507_android2.jpg
おおー!
ドロイド先生登場! しかも2体もいらっしゃる! 恐れ入ります!

120507_android3.jpg
ロゴ出ました!


120507_android4.jpg
ログイン画面!

120507_android5.jpg
マウスでログイン!

120507_android6.jpg
ランチャー画面!

ちょっと、画像が乱れている?
そんな小さな事は気にしてはいけない!
とりあえず成功だ! 今夜は良い夢が見られそうだ

続く



参考にしたサイト
知らんがな  ← こちらのサイトを激しく参考にさせていただきました!
TI-Android-GingerBread-2.3.4-DevKit-2.1 DeveloperGuide


追伸
以前に参考書を見ながらやってましたが、数時間要するダウンロードに何度も失敗し、上手く行きませんでした。
根幹となる部分は変わりませんが、ダウンロード先のURLなどは、変更が激しいので最新の情報をキャッチする必要があります。
ここに書いた情報もいつの日か古くなってしまうときが来ると思いますが、参考にされる方は めげずに頑張ってください。必ず解決策があります。


組み込みAndroidポータブル #8

第8章 Androidポーティングに挑戦(1)

ビーグル君とお散歩を目指すプロジェクト。
今回は いよいよAndroid 2.3(GingerBread)をビルドしてBeagleBoardxMに入れます。
120506_Beagleboard.png


全体の流れ
若干手順が多いですが、着実に行えばできます。
(1)事前準備
(2)Source CodeとDevKitをダウンロード
(3)作業準備
(4)MLOを作成
(5)u-bootを作成
(6)KernelをビルドしてuImageを作成
(7)Andoridをビルドしてrootfsを作成
(8)boot script作成と解像度変更
(9)microSDカードへ書き込み
(10)起動


(1)事前準備
ここは最初1回だけ必要な手順です。
人によっては既に導入済みのものもあると思います。

・環境について
前回同様、母艦PCにLinux環境が必須です。
エレバカはwubiでインストールしてUbuntu 10.04でやってます。
環境が異なる場合は、最後に記述している"参考にしたサイト"を参照して下さい。
ちなみにBeagleBoardxMは"rev B"です。

・空き容量確認
ダウンロードファイルと各作業で16GBくらい消費しましたので、最低20GB以上空き容量があることをお勧めします。
既にインストールしたUbuntuで空き容量を増やすには"LVPM"が便利です。

・JDKのインストール

sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"
sudo apt-get update
sudo apt-get install sun-java6-jdk


・その他の必要なソフトのインストール

sudo apt-get install git-core gnupg flex bison gperf build-essential \
zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs \
x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev \
libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown \
libxml2-utils xsltproc


・作業ディレクトリ準備
まずbinディレクトリを作成し、そこにPATHを通す

mkdir ~/bin
export PATH=~/bin:$PATH


・repoの入手
repoをダウンロードし、実行できるように設定する

curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
chmod a+x ~/bin/repo


・checksumを確認

sha1sum repo

エレバカが以前にDLしたときと、現在versionが変わっているようです。
For version 1.15, the SHA-1 checksum for repo is 8eb56d98b36d615c3efec51868e87bebe757feb1
For version 1.16, the SHA-1 checksum for repo is f3bfa7fd2d0a44aa40579bb0242cc20df37b5e17
android open source project(Downloading the Source)で確かめてください。

・repo initを実行
これが絶対に必要なコマンドかわかりませんが、一応書いておきます。

repo init -u git://gitorious.org/rowboat/manifest.git -m TI-Android-GingerBread-2.3.4-DevKit-2.1.xml

これを実行すると、名前とEmailアドレスを聞かれるので入力します。
特にmailが返ってくるわけでもありません。


(2)Source CodeとDevKitをダウンロード
Texas Instruments(BeagleBoardのCPUを作っているメーカー)が用意しているBeagleBoard用のAndroidソースコードと開発用キットをダウンロードします。
ダウンロードに6時間弱かかりましたので、寝る前に行うことをお勧めします

以下のページから2つのファイルをrepo syncを使わず直接ダウンロードします。
TI_Android_DevKit TI_Android_GingerBread_2_3_4_DevKit_2_1 Product Download Page
"TI_Android_GingerBread_2_3_4Sources.tar.gz"
"TI_Android_GingerBread_2_3_4_DevKit_2_1.tar.gz"

とりあえず、ダウンロードを仕掛けたら寝るべし
続きはまた明日。

続く


ポイント
・repoはURLが間違っていてもDLできてしまう。たまに正しいファイルが取得できていない場合もある。これでハマった。checksumが合っていることを必ずチェック!

参考にしたサイト
android open source project(Initializing the Build Environment)
android open source project(Downloading the Source)
TI-Android-GingerBread-2.3.4-DevKit-2.1 DeveloperGuide
知らんがな(Gingerbread (Android 2.3.4) on BeagleBoard-xM Rev.C)

組み込みAndroidポータブル #7

第7章 UbuntuにGUIを入れろ

ビーグル君とお散歩を目指すプロジェクト。
前回遂に4.3inch LCDへの表示が成功しました。

しかし文字だけのCUI(Character User Interface)画面では物足りないので、
今回はGUI(Graphical User Interface)画面を表示させます。
120505_ubuntuGUI.png

何度かインストール作業を繰り返して、やっとこさ成功したので、時系列でその記録をお伝えします。


事前準備
ちっちゃいLCDだと見づらいので、前回修正したuEnv.txtファイルの内容を元に戻しBeagleBoardxMにHDMIケーブルを繋ぎ、母艦PCの液晶モニターに映してインストール作業を行った。


1回目
・ログイン
まずBeagleBoard上でUbuntuを起動してログイン

Default user: ubuntu
pass: temppwd


・イーサネット有効化
BeagleBoardにLANケーブルを挿し込んでからコマンド実行

sudo  ifconfig  -a
sudo  dhclient  eth0


・アップデート

sudo  apt-get  update


・GUIをインストール

sudo apt-get install gdm xubuntu-desktop

→エラーが出て失敗。


2回目
再び、電源OFF/ONしてログイン→イーサネット有効化→アップデート→GUIインストール を実行
エラーとその対処が出ていたので、それに従いコマンドを打ち込んだ

sudo dpkg --configure -a

"gdm" か "lightdm" か選ぶ箇所があったので、"gdm"を選択
→しばらくして途中で映像が消えてしまう。

3回目
microSDカードを別のモノに変えてやってみた
→ダメ。同じく映像が消える

4回目
途中の選択を"lightdm"にしてみた。
→ダメ。同じ。

5回目
BeagleBoardxMのDsubコネクタにRS232C-USBケーブルを繋ぎ母艦PCのUSBコネクタと接続。
母艦のUbuntu上では、"minicom"というソフトを利用。
BeagleBoard上ではなく、母艦PCの"minicom"からインストール作業を実行
ログイン→イーサネット有効化→アップデート→GUIインストール を実行

→どうやら、HDMI端子から出力されている映像が消えた後もBeagleBoardはインストール作業を実行し続けているということが判明した!

2,3時間くらいかかった。

BeagleBoardの電源をOFF/ONして起動
いつもと違う感じ。
なんか、GUIを出そうとしてるが、すぐ画になってしまう。
そういえば、今回は"gdm" か "lightdm" かを選ぶ箇所がなかった気がする。

とりあえず"ふて寝"


6回目
今回は母艦PCをWindowsで立ち上げていたので、"minicon"ではなく"teraterm"を使用しインストール作業を行った。ついでにuEnv.txtファイルの内容を480x272に再び変更した。

電源ONしてログイン→イーサネット有効化→アップデート→GUIインストール を実行
前回はこの画面が出ていなかった気がする
120505_ubuntuGUI2.jpg
※PC液晶モニターの映像

Enterキーを押すと、"gdm" か "lightdm" かを選ぶ画面に
120505_ubuntuGUI3.jpg
※PC液晶モニターの映像

その後、1時間くらい放置して、気づくと終了していた。
そして電源をOFF/ONすると・・・
120505_ubuntuGUI4.jpg
GUI来ました!
マウスも動きます。

120505_ubuntuGUI5.jpg
しかし! 色々クリックしてみるが、どうしてもこれ以上先に進まない。
なぜだ?
再び "ふて寝"


7回目
先に進まない原因がわかった。
4.3inch LCDではパスワード入力のインプットボックスが画面上に見えていなかったのだ。
uEnv.txtファイルの内容を元に戻し、PC用の液晶モニターに表示してみてわかった。
120505_ubuntuGUI6.jpg
※PC液晶モニターの映像

えっ?、じゃあ4.3inchだとログイン不可能なのか?
いいえ、大丈夫です。
こういうときは心の眼で打ち込むべし。

ポイント
・左下のプルダウンメニューで「Xubuntu Session」を選択
・Demo Userをクリックして一旦フォーカスをここに合わせる
・キーボードでTabを押し、フォーカスを見えないパスワード入力インプットボックスに移動させる
・そこでパスワード「temppwd」を間違わずに入力してEnterを押す

そうすると・・・
120505_ubuntuGUI7.jpg
4.3inch LCDでUbuntu11.10 GUIログイン成功!

ちょっと、画像が乱れている?
いいや、そんな小さな事は気にしてはいけない!
次は、Androidに挑戦だ!!

続く


まとめ
・作業内容は、ログイン→イーサネット有効化→アップデート→GUIインストール だけ
・BeagleBoard上でのインストールの際は、シリアルケーブルを繋げて母艦PCで状況をチェック
・途中で、"gdm" か "lightdm" かを選ぶ必要あり
・インストールに1時間くらいはかかる
・480x272の解像度でログインする場合は、ポイントに書いたように工夫して入力する

参考にしたサイト
Embedded Linux Wiki(BeagleBoardUbuntu)
Ichmy's Web Site(Beagleboard-xM で遊ぼうのこーなー)
とりあえずやってみる

組み込みAndroidポータブル #6

第6章 Ubuntuを入手して解像度を変更

ビーグル君とお散歩を目指すプロジェクト。
LCDに表示させるための3つの対策中2つは出来ました。
残り1つの対策である、解像度の変更を行います。

Androidをポーティングすることでも可能ですが、ちょっと時間がかかりそうなので、我慢できません。
まずは、手っ取り早く確認ができそうなUbuntu11.10のプリビルドイメージを入れることとします。Androidは後のお楽しみです。
120504_ubuntu0.png
※イメージ図


ここからは、Linuxと にらめっこ大会が始まりますので、母艦となるPCにUbuntuがインストールされていることが前提です。
Ubuntuのインストール方法などについてはこちらを参照してください。

Pre-Build Imageを入手
まずダウンロード。数十秒でDLできます。

wget http://rcn-ee.net/deb/rootfs/oneiric/ubuntu-11.10-r7-minimal-armel.tar.xz


チェックサムを実行
正しくダウンロードできているかチェックします。

md5sum ubuntu-11.10-r7-minimal-armel.tar.xz

"58092de96f8934da74ea00e6a7b8eccf ubuntu-11.10-r7-minimal-armel.tar.xz"と出ればOK

解凍

tar xJf ubuntu-11.10-r7-minimal-armel.tar.xz


解凍したディレクトリへ移動

cd ubuntu-11.10-r7-minimal-armel



microSDカードへ展開
microSDカードを母艦へ接続し、マウントしてドライブの場所を確認します。
システム→Administration→ディスク・ユーティリティ でわかります。
もしくは、dfコマンドでも確認できます。
エレバカの母艦の場合は "/dev/sdc" ということが分かりました。

シェルスクリプトを実行します。

sudo ./setup_sdcard.sh --mmc /dev/sdc --uboot beagle_xm

※赤字部分は母艦によって異なりますので、よくご確認下さい。

本当に良いか聞かれるので"y"を打ち込むが、何やら足りないとエラーが出ました。
インストールすべきコマンドが表示されているので、それに従ってコマンドを打ちました。

sudo apt-get install uboot -mkimage wget pv dosfstools btrfs -tools parted

インストール完了後、再びシェルスクリプトを実行すると、数分かかってから
"setup sdcard.sh script complete" と表示が出て完了。


設定ファイルを変更
microSDカードの中の"boot"パーティションの中にある"uEnv.txt"を開きます。
以下のように修正保存します。 "#"を入れればコメント行扱いになります。

#dvimode=1280x720MR-16@60
dvimode=480x272MR-16@60

これで解像度が変更され、LCDスペック内のCLK周波数になります。(約11MHz)
保存したらアンマウントして、microSDカードを母艦から取り出します。


電源ON
作成したmicroSDをBeagleBoardに挿入し、いよいよ電源ON!
とりゃー!
120504_ubuntu1.jpg
おおーーー! やったーーー!!

120504_ubuntu3.jpg
ペンギンさん、いらっしゃい!


120504_ubuntu2.jpg
CUIまで出来たので、次回はGUIに挑戦だ!


続く


ポイント
ログインID:ubuntu
パスワード:temppwd

参考にしたサイト
Embedded Linux Wiki(BeagleBoardUbuntu)
Ichmy's Web Site(Beagleboard-xM で遊ぼうのこーなー)

追伸
LCDに映ったときは感動しました。

組み込みAndroidポータブル #5

第5章 変換基板を製作せよ

ビーグル君とお散歩を目指すプロジェクト。
前回 変換基板の設計図ができたので、ユニバーサル基板にモクモクと結線してゆきます。

最終的にケースの中に押し込めたいので、BeagleBoardがギリギリ入りそうなポリカーボネートケースを購入し、それと現物合わせをしながら、部品のレイアウトや配線の引き回しを決めました。


変換基板結線の様子(Top)
120502_ConverterBoard_Top.jpg
BeagleBoardxMのLCDコネクタが1.27mmピッチであるため、1.27mmピッチのユニバーサル基板を使っています。
右下のピンヘッダはLCDコネクタ用。1列用のピンヘッダを2列に並べる場合はヤスリで削る必要あります。
左下のピンヘッダは回路的には使用しておらず、BeagleBoardと合体したときに安定させるために付けました。
下側に4つ並んでいるのが「8ビット双方向ロジックレベル変換モジュール」
左上が1.8VのレギュレーターIC、右上が3.3VのレギュレーターIC。ケースに入れることを考慮すると裏面には配置できません。そこで、無理矢理表面にユニバーサル基板を小さく切った基板に載せてセロテープで付けました。良い子はマネしてはいけません。
コンデンサの足が長すぎたので、後で短くしようと思います。


変換基板結線の様子(Bottom)
120502_ConverterBoard_Bottom.jpg
左上がNANDゲート。足を曲げたりして、ピン直で線付けしました。
途中まで、φ0.56mmのETFE(ジュンフロン)線で繋いでいましたが、ケースに押しこめることを考えると、もっと細い線が必要であることに気づき、途中からφ0.2mmのUEW(ポリウレタン銅)線に変えました。
電源とGNDは太いスズコート線を使っています。


CarryBoardと結線し、BeagleBoardxMと合体した様子
120502_ConverterBoard.jpg
すっかりスパゲティ状態です。
後半は疲れて、もうどうでもよくなってきました。


回路自体は複雑ではないのですが
信号線が60本以上あることと基板が1.27mmピッチで作業しづらく、丸一日かかりました・・・
お疲れさん!!
次は解像度の設定だ!

続く


必要な部品 [ 購入先 ]
・片面ガラス・ユニバーサル基板Cタイプ1.27mmピッチ(72x48mm)[秋月電子通商]
・大型ポリカーボネート・ケース 140[秋月電子通商]
・8ビット双方向ロジックレベル変換モジュール[秋月電子通商]
・CMOS 2入力 NANDゲート TC74AC00FT[秋月電子通商]
・三端子レギュレーター(3.3V1.5A) AZ1086H-3.3[秋月電子通商]
・低損失表面実装型三端子レギュレーター(1.8V800mA) NJM2845DL1-18[秋月電子通商]
・1.27mmピッチピンヘッダ1x40(40P)[秋月電子通商]
・電解コンデンサー10μF50V[秋月電子通商]
・電解コンデンサー22μF50V[秋月電子通商]
・積層セラミックコンデンサー0.22μF50V[秋月電子通商]
・スズコート線材 1.2mm[マルツパーツ館]
・ポリウレタン銅線 0.2mm[マルツパーツ館]

ポイント(というか反省)
・配線はなるべく短く
・信号は全てUEW(ポリウレタン銅)線で接続した方が良い
・できれば基板にGND面を作った方が良い

参考にしたサイト
#include "matsu.h"


組み込みAndroidポータブル #4

第4章 変換基板を設計せよ

ビーグル君とお散歩を目指すプロジェクト。
BeagleBoardxMとLCDを直接繋いでもダメで、3つの対策を行う必要があるということが前回まででわかりました。
今回は、その中の2つの対策を盛り込んだ変換基板を設計します。


全体イメージはこんな感じ
120502_Beagble_LCD2.png


変換基板を中心としたブロック図です。
red,green,blueはそれぞれ8bitなので、実際には24本の信号があります。
120502_Block.png


それぞれの部位について、画像付きの回路図で説明します。
LCD Connector
BeagleBoardxMのLCDコネクタです。
変換基板にピンヘッダを付けて、BeagleBoardxMと合体することを想定しています。
120502_LCD_Connector.png


Voltage Converter
各信号を1.8Vから3.3Vへ変換します。
秋月の「8ビット双方向ロジックレベル変換モジュール」を利用しました。
裏面から見た図になっています。OEはGNDに繋げます。
120502_VoltageConverter.png



Inverter
VSYNCとHSYCNをNANDゲートを使って反転させます。
「CMOS 2入力 NANDゲート TC74AC00FT」を使用
120502_Inverter.png


Power3.3V
レギュレーターICを使って5Vから3.3Vを作りだします。
手持ちの「三端子レギュレーター(3.3V1.5A) AZ1086H-3.3」を使用しましたが、500mAくらいでも問題ないと思います。
120502_Power3_3v.png


Power1.8V
レギュレーターICを使って3.3Vから1.8Vを作りだします。
低損失表面実装型三端子レギュレーター(1.8V800mA) NJM2845DL1-18を使用しました。
120502_Power1_8v.png


CarryBoard
変換基板から線を飛ばして、CarryBoardの20pinコネクタの足に付けます。
LED driverについてはCarryBoardに既に実装されているため、特に何もする必要はありません。
120502_carry_board.png


大文字小文字に注意して、黒丸で示した同じ信号名同士を結線すれば完成です。
ちょっと長くなってしまったので、実際の結線の様子は次回へ。


続く
04 | 2012/05 | 06
Su Mo Tu We Th Fr Sa
- - 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 - -
プロフィール

エレクトリックバカ

Author:エレクトリックバカ

ポケコンでプログラミングに目覚め、PICマイコンで電子工作に希望を抱き、来たるべきUGDの時代を夢見て眠る。
そんな うだつが上がらないサラリーメン。
先生、電子工作はおやつに入りますか?




Electric Baka

最新記事
カテゴリ
月別アーカイブ
最新コメント
最新トラックバック
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。