【BeagleBoard】シリアル接続
前の記事書いてからだいぶ時間が空いてしまいましたが、今回はBeagleBoardとPCをシリアル接続してみます。
Windowsの場合はteratermを使っていたのですが、ubuntuの場合はminicomを使えば良いようです。
UbuntuでUSBシリアルを使ってコンソール接続する - HiiHahWIKI - making some notes for... -
ほぼ上記の記事とかぶってしまいますが、シリアルポートの設定をBeagleBoard用にしないといけないので、メモがわりに作業内容を記載します。
まずはBeagleBoardを立ち上げた状態でUSBシリアルケーブルでPCと接続します。
ただしく接続されたか確認するために下記のコマンドを実行します。
$ls /dev/ttyUSB0/ /dev/ttyUSB0/
ファイルがあれば接続できています。ドライバーとか特に設定しなくても認識しました。便利だな〜
次にminicomのインストールです。下記のコマンドでインストールします。
$sudo apt-get install minicom
次に設定画面を起動します。
$sudo minicom -s
設定画面でシリアルポートを選択します。ちなみに設定画面は下記のような形式でカーソルキーで選択してエンターで決定です。
+-----[設定]------+ | ファイル名とパス名 | | ファイル転送プロトコル | | シリアルポート | | モデムとダイヤル | | 画面とキーボード | | "dfl" に設定を保存 | | 新規に設定を保存 | | 終了 | | Minicom を終了 | +---------------+
シリアルポートの設定は下記のようにします。変更するのは「シリアルポート」と「速度/パリティ/ビット」の項目です。
+-----------------------------------------------------------------------+ | A - シリアルデバイス : /dev/ttyUSB0 | B - ロックファイルの位置 : /var/lock | C - Callin Program : | | D - Callout Program : | | E - 速度/パリティ/ビット : 115200 8N1 | F - ハードウェア流れ制御 : いいえ | G - ソフトウェア流れ制御 : いいえ | | | どの設定を変更しますか? +-----------------------------------------------------------------------+
「シリアルボード」には最初に確認したファイルパスを入れます。
変更が完了したら、Escキーで設定を終了して、「"dtl"に設定を保存」の項目を選択します。
設定を保存しましたという表示になるので、最後に「Minicomを終了」を選択して設定は終了です。
接続の開始は下記のコマンドで行います。
$minicom
接続に成功すると下記のような表示になると思います。
minicom へようこそ 2.5 オプション: I18n コンパイルされた日時は: May 2 2011, 00:39:27. Port /dev/ttyUSB0 CTRL-A Z を押すと、説明画面になります。 ています | : not found # AT S7=45 S0=0 L1 V1 X4 &c1 E1 Q0 AT: not found c1: not found #
あとは通常のコンソール接続と同じように使えます。
【BeagleBoard】Androidのポーティング【イメージ書き込み編】
前回の記事でカーネルもビルドできたので実際にイメージを書きこんで実行してみたいと思います。
実際にはTI SGXグラフィックドライバーのインストールも必要ですが、これは下記の参考資料通りに実施すればうまくいったので割愛します。
まずはイメージ保存用のディレクトリを作成します。
$ mkdir ~/image
次にboot.scriptを作成します。こちらは参考資料ではXM用なので下記のWikiを参考にC3用を作成します。
TI-Android-FroYo-DevKit-V2.2 UserGuide - Texas Instruments Wiki
作成したboot.scriptは下記のようになります。
mmc init fatload mmc 1 80200000 uImage setenv bootargs 'console=ttyS2,115200n8 androidboot.console=ttyS2 mem=256M omapfb.mode=dvi:1280x720MR-16 omapdss.def_disp="dvi" root=/dev/mmcblk0p2 rw rootfstype=ext3 rootdelay=1 init=/init ip=off mpurate=720 omap_vout.vid1_static_vrfb_alloc=y' bootm 0x80200000
次にu-boot用の「boot.scr」を作成します。こちらは参考書通りに実行します。
$mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n "BeagleBoard" -d boot.script boot.scr
最後にビルドしたカーネルをコピーしてきます。
$ cp ~/myFroyo/kernel/arch/arm/boot/uImage .
作成したイメージをSDカードに書きこんでいきます。
~/images$ cp boot.scr /media/boot/ ~/images$ cp uImage /media/boot/
Android本体もSDカードに書きこんでいきます。
/out/target/product/beagleboard$ sudo ../../../../build/tools/mktarball.sh ../../../host/linux-x86/bin/fs_get_stats android_roofs . rootfs android_rootfs.tar.bz2 sudo tar xjvf android_rootfs.tar.bz2 -C /media/rootfs
これで起動したのですが、黒い画面のままで立ち上がりませんでした。
そこでRS232C経由でコンソール画面を立ち上げてみたところ下記のエラーが
PVR_K: (FAIL) SGXInit: Incompatible HW core rev (10205) and SW core rev (10201).
調べてみるとBeagleBoard C3で立ち上げる場合はデバイスドライバを「OMAPES=3.x」のオプションをつけてビルドしなければいけないとのこと
OMAP35x_Android_Graphics_SDK_3_01_00_03$ make install OMAPES=3.x
これでビルドしてから再度Android本体をSDカードに書きこんで実行したところうまく立ち上がった・:*:・(*´∀`*)ウットリ・:*:・
ちょっと解像度があっていないのか、ロゴが中央からずれてる:(;゙゚'ω゚'):
ただ以前でていたディスプレイ側のエラーがなくなったのでやっぱりデモ用だとデバイスドライバーの設定がうまく行っていなかったみたい^^;
起動直後にこのエラーが、更にホームキーとかも効かない(;´Д`)
デバイスドライバーの作成までを目標にしていたけどまだ先は長そうだ(´・ω・`)
【BeagleBoard】ビルド済みイメージをSDに書き込む際のエラー
イメージの作成に失敗したのか起動しなかったので以前書き込んだビルド済みのイメージを再度書き込んだ時下記のエラーが発生した。
$ sudo ./mkmmc-android.sh /dev/sdd Assuming Default Locations for Prebuilt Images All data on /dev/sdd now will be destroyed! Continue? [y/n] y [Unmounting all existing partitions on the device ] umount: /dev/sdd: マウントされていません [Partitioning /dev/sdd...] ディスク /dev/sdd は正常なパーティションテーブルを含んでいません DISK SIZE - bytes (standard_in) 1: syntax error CYLINDERS - expr: 構文エラー [Making filesystems...] [Copying files...] [Copying START_HERE floder to boot partition] mount: スペシャルデバイス /dev/sdd2 が存在しません umount: /dev/sdd2: 見つかりません [Copying all clips to data partition] mount: スペシャルデバイス /dev/sdd3 が存在しません cp: ディレクトリ `/mnt/Audio' を作成できません: 入力/出力エラーです cp: ディレクトリ `/mnt/Images' を作成できません: 入力/出力エラーです cp: ディレクトリ `/mnt/Video' を作成できません: 入力/出力エラーです umount: /dev/sdd3: 見つかりません [Done]
メッセージに表示している日本語が悪さしているようで正しくsh内の変数(CYLINDERS)に値が入っていなくてうまく行かなった模様。根本的な原因はわかりませんでしたが(特に追ってないけど)、LANG変数を日本語から英語にすることでうまく行きます。
$ export LANG=en_US $ sudo ./mkmmc-android.sh /dev/sdd Assuming Default Locations for Prebuilt Images All data on /dev/sdd now will be destroyed! Continue? [y/n] y [Unmounting all existing partitions on the device ] umount: /dev/sdd: not mounted [Partitioning /dev/sdd...] Disk /dev/sdd doesn't contain a valid partition table DISK SIZE - 2002780160 bytes CYLINDERS - 243 [Making filesystems...] [Copying files...] [Copying START_HERE floder to boot partition] [Copying all clips to data partition] [Done]
ビルド環境作っていくなかで変な設定したのかな?と思っていたがまさか日本語とは...
【BeagleBoard】Androidのポーティング【カーネルビルド編】
前回の記事でビルドが完了したのでカーネルのビルドを行います。
今回はbeagleBoard C3用のイメージを作成するので下記のページを参考にdefault configを「omap3_beagle_android_defconfig」にして実行します。
TI-Android-FroYo-DevKit-V2.2 UserGuide - Texas Instruments Wiki
$ cd kernel/ kernel$ make CROSS_COMPILE=../prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi- omap3_beagle_android_defconfig # # configuration written to .config #
次に実際のビルドを行います。
kernel$ make CROSS_COMPILE=../prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi- uImage scripts/kconfig/conf -s arch/arm/Kconfig CHK include/linux/version.h make[1]: `include/asm-arm/mach-types.h' は更新済みです CHK include/linux/utsrelease.h SYMLINK include/asm -> include/asm-arm CALL scripts/checksyscalls.sh:1523:2: warning: #warning syscall recvmmsg not implemented CHK include/linux/compile.h GZIP kernel/config_data.gz IKCFG kernel/config_data.h CC kernel/configs.o LD kernel/built-in.o LD vmlinux.o MODPOST vmlinux.o GEN .version CHK include/linux/compile.h UPD include/linux/compile.h CC init/version.o LD init/built-in.o LD .tmp_vmlinux1 KSYM .tmp_kallsyms1.S AS .tmp_kallsyms1.o LD .tmp_vmlinux2 KSYM .tmp_kallsyms2.S AS .tmp_kallsyms2.o LD .tmp_vmlinux3 KSYM .tmp_kallsyms3.S AS .tmp_kallsyms3.o LD vmlinux SYSMAP System.map SYSMAP .tmp_System.map OBJCOPY arch/arm/boot/Image Kernel: arch/arm/boot/Image is ready GZIP arch/arm/boot/compressed/piggy.gz AS arch/arm/boot/compressed/piggy.o LD arch/arm/boot/compressed/vmlinux OBJCOPY arch/arm/boot/zImage Kernel: arch/arm/boot/zImage is ready UIMAGE arch/arm/boot/uImage Image Name: Linux-2.6.32 Created: Sun Jul 13 02:28:53 2014 Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 2618348 Bytes = 2556.98 kB = 2.50 MB Load Address: 80008000 Entry Point: 80008000 Image arch/arm/boot/uImage is ready
カーネルのビルドは特に問題が起きなかったので記事にする必要なかったかも^^;
【BeagleBoard】Androidのポーティング【ビルド編】
前回の記事から大分時間が開いてしまいましたが、ソースコードの準備ができたのでビルドを実行したいと思います。
とりあえず実行すると下記のエラー達が
$ make TARGET_PRODUCT=beagleboard -j2 ============================================ PLATFORM_VERSION_CODENAME=REL PLATFORM_VERSION=2.2 TARGET_PRODUCT=beagleboard TARGET_BUILD_VARIANT=eng TARGET_SIMULATOR= TARGET_BUILD_TYPE=release TARGET_BUILD_APPS= TARGET_ARCH=arm HOST_ARCH=x86 HOST_OS=linux HOST_BUILD_TYPE=release BUILD_ID=MASTER ============================================ build/core/Makefile:19: 警告: ターゲット `out/target/product/beagleboard/system/usr/keylayout/qwerty.kl' へのコマンドを置き換えます sdk/emulator/keymaps/Android.mk:13: 警告: ターゲット `out/target/product/beagleboard/system/usr/keylayout/qwerty.kl' への古いコマンドは無視されます host Java: apicheck (out/host/common/obj/JAVA_LIBRARIES/apicheck_intermediates/classes) Header: out/host/linux-x86/obj/include/libpng/png.h ...省略 host Java: dx (out/host/common/obj/JAVA_LIBRARIES/dx_intermediates/classes) 注:入力ファイルの操作のうち、未チェックまたは安全ではないものがあります。 注:詳細については、-Xlint:unchecked オプションを指定して再コンパイルしてください。 Notice file: frameworks/base/libs/utils/NOTICE -- out/host/linux-x86/obj/NOTICE_FILES/src//lib/libutils.a.txt ...省略 host Java: junit (out/host/common/obj/JAVA_LIBRARIES/junit_intermediates/classes) 注:一部の入力ファイルは推奨されない API を使用またはオーバーライドしています。 注:詳細については、-Xlint:deprecation オプションを指定して再コンパイルしてください。 注:入力ファイルの操作のうち、未チェックまたは安全ではないものがあります。 注:詳細については、-Xlint:unchecked オプションを指定して再コンパイルしてください。 host Java: androidprefs (out/host/common/obj/JAVA_LIBRARIES/androidprefs_intermediates/classes) Notice file: prebuilt/common/commons-compress/NOTICE -- out/host/linux-x86/obj/NOTICE_FILES/src//framework/commons-compress-1.0.jar.txt host Java: archquery (out/host/common/obj/JAVA_LIBRARIES/archquery_intermediates/classes) 注:一部の入力ファイルは推奨されない API を使用またはオーバーライドしています。 注:詳細については、-Xlint:deprecation オプションを指定して再コンパイルしてください。 注:入力ファイルの操作のうち、未チェックまたは安全ではないものがあります。 注:詳細については、-Xlint:unchecked オプションを指定して再コンパイルしてください。 ...省略 Notice file: prebuilt/common/jfreechart/NOTICE -- out/host/linux-x86/obj/NOTICE_FILES/src//framework/jfreechart-1.0.9-swt.jar.txt host Java: descGen (out/host/common/obj/JAVA_LIBRARIES/descGen_intermediates/classes) cts/tools/utils/DescriptionGenerator.java:40: パッケージ com.sun.javadoc は存在しません。 import com.sun.javadoc.AnnotationDesc; ^ ...省略 cts/tools/utils/DescriptionGenerator.java:578: シンボルを見つけられません。 シンボル: クラス MethodDoc 場所 : DescriptionGenerator.TestClass の クラス for (MethodDoc method : superClass.methods()) { ^ エラー 32 個 make: *** [out/host/common/obj/JAVA_LIBRARIES/descGen_intermediates/javalib.jar] エラー 41 make: *** 未完了のジョブを待っています....
上のほうに出てくる警告はあとから対処するとしてまずはエラーを消していきます。
host Java: descGen (out/host/common/obj/JAVA_LIBRARIES/descGen_intermediates/classes) cts/tools/utils/DescriptionGenerator.java:40: パッケージ com.sun.javadoc は存在しません。 import com.sun.javadoc.AnnotationDesc; ^
sunのjavadocが無いとでてる...
ちょっと調べたら下記のサイトを発見。
com.sun.javadoc パッケージは、ドックレット API を定義するいくつかのインタフェースで構成されています。これらのインタフェースは、Java 2 SDK の lib/tools.jar ファイルに含まれています。
libの下にあるtools.jarが必要なのか〜前回設定した「bashrc」の参照は「bin」からになっていたので読み込めなかったんだという仮定のもとその上から参照するように変更してみます。
$ vim ~/.bashrc
最終行というかJAVAの参照を下記のように変えます。
PATH=$PATH:/usr/local/jdk1.5.0_22/ #JDK Java5
これで再度実行してみます
$ make TARGET_PRODUCT=beagleboard -j2 ============================================ PLATFORM_VERSION_CODENAME=REL PLATFORM_VERSION=2.2 TARGET_PRODUCT=beagleboard TARGET_BUILD_VARIANT=eng TARGET_SIMULATOR= TARGET_BUILD_TYPE=release TARGET_BUILD_APPS= TARGET_ARCH=arm HOST_ARCH=x86 HOST_OS=linux HOST_BUILD_TYPE=release BUILD_ID=MASTER ============================================ build/core/Makefile:19: 警告: ターゲット `out/target/product/beagleboard/system/usr/keylayout/qwerty.kl' へのコマンドを置き換えます sdk/emulator/keymaps/Android.mk:13: 警告: ターゲット `out/target/product/beagleboard/system/usr/keylayout/qwerty.kl' への古いコマンドは無視されます host C: acp <= build/tools/acp/acp.c host C++: libhost <= build/libs/host/pseudolocalize.cpp host C: libhost <= build/libs/host/CopyFile.c target Generated: libclearsilver-jni <= out/host/common/obj/JAVA_LIBRARIES/clearsilver_intermediates/javalib.jar target Generated: libclearsilver-jni <= out/host/common/obj/JAVA_LIBRARIES/clearsilver_intermediates/javalib.jar host C: libneo_util <= external/clearsilver/util/neo_err.c ...省略 host C++: aapt <= frameworks/base/tools/aapt/Command.cpp In file included from frameworks/base/tools/aapt/AaptAssets.h:18:0, from frameworks/base/tools/aapt/AaptAssets.cpp:5: frameworks/base/tools/aapt/ZipFile.h:65:5: 警告: ‘typedef’ was ignored in this declaration [デフォルトで有効] In file included from frameworks/base/tools/aapt/AaptAssets.h:18:0, from frameworks/base/tools/aapt/Main.h:14, from frameworks/base/tools/aapt/Command.cpp:6: ...省略 frameworks/base/tools/aapt/Resource.cpp:566:98: 警告: 書式 ‘%ld’ は引数の型が ‘long int’ であると予期されますが、第 2 引数の型は ‘size_t {aka unsigned int}’ です [-Wformat] host C++: aapt <= frameworks/base/tools/aapt/SourcePos.cpp host C++: aapt <= frameworks/base/tools/aapt/ZipEntry.cpp host C++: aapt <= frameworks/base/tools/aapt/ZipFile.cpp In file included from frameworks/base/tools/aapt/ZipFile.cpp:26:0: frameworks/base/tools/aapt/ZipFile.h:65:5: 警告: ‘typedef’ was ignored in this declaration [デフォルトで有効] ...省略 frameworks/base/libs/utils/RefBase.cpp: メンバ関数 ‘void android::RefBase::weakref_type::trackMe(bool, bool)’ 内: frameworks/base/libs/utils/RefBase.cpp:483:67: エラー: passing ‘const android::RefBase::weakref_impl’ as ‘this’ argument of ‘void android::RefBase::weakref_impl::trackMe(bool, bool)’ discards qualifiers [-fpermissive] make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/libutils_intermediates/RefBase.o] エラー 1 make: *** 未完了のジョブを待っています....
以前出ててたjavaのエラーがなくなってC++のエラーが発生したorz
これはjavaのほうがうまくいったのか、ただ参照できなくなってコンパイル出来なかったのかわからないな(´・ω・`)
とりあえずC++のエラーを潰します。
エラーメッセージでググったら海の向こう側の人も同じエラー出てたみたい
Building Android: error: passing ‘const android::RefBase::weakref_impl’ | Bicosyes – since evermore…
frameworks/base/libs/utils/Android.mkに「fpermissive」オプションをつければ良いみたい。
fpermissiveオプションは適合しないコードを許可するらしい。
とりあえず情報を鵜呑みにしてmakeファイルを書き換えます。
LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS)
LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS) -fpermissive
再度実行してみたら結局javadocが見つからないエラーが...
さっきjavaのエラーが出なかったのはmake cleanしてなかったから一度終わったjavaのところ飛ばしてたっぽい(凡ミス
問題のエラーの出ているmakeファイル「/cts/tools/utils/Android.mk」に
LOCAL_CLASSPATH := $(HOST_JDK_TOOLS_JAR) $(LOCAL_PATH)/lib/junit.jar
無理やり参照を追加してみた
LOCAL_CLASSPATH := $(HOST_JDK_TOOLS_JAR) $(LOCAL_PATH)/lib/junit.jar /usr/local/jdk1.5.0_22/lib/tools.jar
参照を加えたら加えた部分のエラーは発生しなくなった模様(・∀・)
大元の参照に追加したらうまく行くかも(´・ω・`)ってことで先程のmakeファイルから参照を定義している大元を調べて書き換えてみた(^^)
/build/core/config.mk
HOST_JDK_TOOLS_JAR:= $(shell $(BUILD_SYSTEM)/find-jdk-tools-jar.sh)
HOST_JDK_TOOLS_JAR:= $(shell $(BUILD_SYSTEM)/find-jdk-tools-jar.sh) /usr/local/jdk1.5.0_22/lib/tools.jar
shell読むの大変なのでまずは直書き
これで実行すると下記のエラーが^^;
$ make TARGET_PRODUCT=beagleboard -j2 ...省略 /home/sho/myFroyo/system/core/libcutils/threads.c:27: undefined reference to `pthread_getspecific' out/host/linux-x86/obj/STATIC_LIBRARIES/libcutils_intermediates/libcutils.a(threads.o): In function `thread_store_set': /home/sho/myFroyo/system/core/libcutils/threads.c:36: undefined reference to `pthread_key_create' /home/sho/myFroyo/system/core/libcutils/threads.c:44: undefined reference to `pthread_setspecific' collect2: ld はステータス 1 で終了しました make: *** [out/host/linux-x86/obj/EXECUTABLES/aapt_intermediates/aapt] エラー 1 make: *** 未完了のジョブを待っています.... host Executable: dexlist (out/host/linux-x86/obj/EXECUTABLES/dexlist_intermediates/dexlist) true
「pthread_key_create」とかが参照できないっぽい(´・ω・`)
調べてみると「pthread.h」が必要な模様
使うために必要なライブラリは「-lpthread」らしい。
エラーが出ているソースのある「system/core/libcutils/Android.mk」の中を見ると「-lpthread」の参照はある。そこでもう少し調べてみると下記の記事が
endroid: fix Android building error on ubuntu 11.10
完全に同じエラーで困ってる(´・ω・`)
この直し方を鵜呑みにして下記のように「frameworks/base/tools/aapt/Android.mk」(元記事では「appt」になってたけど実際は「aapt」)と「frameworks/base/tools/localize/Android.mk」を変更します。
ifeq ($(HOST_OS),linux) LOCAL_LDLIBS += -lrt endif
ifeq ($(HOST_OS),linux) LOCAL_LDLIBS += -lrt -lpthread endif
書き換えてからビルドすると今度は下記のエラーが
$ make TARGET_PRODUCT=beagleboard -j2 ...省略 Exception in thread "main" java.lang.NoClassDefFoundError: /usr/local/jdk1/5/0_22/lib/tools/jar make: *** [out/host/linux-x86/obj/EXECUTABLES/vm-tests_intermediates/tests] エラー 1 make: *** 未完了のジョブを待っています....
なぜこれで直るのか全然わからないけどとりあえず同じ事例を見つけたのでやってみる(´・ω・`)
AndroidFAQ < Android4SAM < TWiki
「/etc/security/limits.conf」の最終行を下記のように変更
#@student - maxlogins 4 # End of file
#@student - maxlogins 4 * soft nofile 8192 * hard nofile 8192 # End of file
次はこのエラー^^;
$ make TARGET_PRODUCT=beagleboard -j2 ...省略 Install: out/host/linux-x86/framework/cts-dalvik-buildutil.jar acp: file 'out/host/linux-x86/obj/EXECUTABLES/vm-tests_intermediates/tests/data' does not exist make: *** [out/host/linux-x86/bin/../cts_dalviktests/timestamp] エラー 1
やっぱり同じくエラーが起きてる人がいたので参考に
対処療法な気がするけど存在しないディレクトリを作成します。
$ mkdir -p out/host/linux-x86/obj/EXECUTABLES/vm-tests_intermediates/tests/data
とりあえずやってみたけどなんで結果出力先に必要なディレクトリが生成されないんだろう?
それについては後で調べるとして再度実行
$ make TARGET_PRODUCT=beagleboard -j2 ...省略 Image Name: Linux-2.6.32 Created: Sun Jul 13 01:19:10 2014 Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 2618364 Bytes = 2557.00 kB = 2.50 MB Load Address: 80008000 Entry Point: 80008000 Image arch/arm/boot/uImage is ready make[1]: ディレクトリ `/home/sho/myFroyo/kernel' から出ます make -C external/ti_android_sgx_sdk ANDROID_ROOT_DIR=`pwd` TOOLS_PREFIX=prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi- make[1]: ディレクトリ `/home/sho/myFroyo/external/ti_android_sgx_sdk' に入ります make[1]: 警告: jobserver が利用不可: -j1 を使い, 親 make ルールに `+' を追加しましょう Installing OMAP35x Android Graphics SDK... make[1]: ./internal_install_SDK.exp: コマンドが見つかりませんでした make[1]: *** [prepare] エラー 127 make[1]: ディレクトリ `/home/sho/myFroyo/external/ti_android_sgx_sdk' から出ます make: *** [sgx] エラー 2
メッセージ見てたらそろそろ終わるかなと思った時に再びエラー
日本語で書いてあるけど「親 makeルールに`+' を追加しましょう」の意味がわからない^^;どこにだよ。。。
とりあえずオプションを「-j1」にして再度実行してみる。
$ make TARGET_PRODUCT=beagleboard -j1 ...省略 make -C external/ti_android_sgx_sdk ANDROID_ROOT_DIR=`pwd` TOOLS_PREFIX=prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi- make[1]: ディレクトリ `/home/sho/myFroyo/external/ti_android_sgx_sdk' に入ります Installing OMAP35x Android Graphics SDK... make[1]: ./internal_install_SDK.exp: コマンドが見つかりませんでした make[1]: *** [prepare] エラー 127 make[1]: ディレクトリ `/home/sho/myFroyo/external/ti_android_sgx_sdk' から出ます make: *** [sgx] エラー 2
「親 makeルールに`+' を追加しましょう」は特になにもしなくてよかった感じ(・∀・)
コマンドが見つからないのはインストールされてないからだよなと思いつつ調べてみると案の定インストールされていないものがあった。
TI-Android-Froyo-DevKit-V2.2のビルドでinternal_install_SDK.expが見つからないとエラーが出るときの対処 - ゲームとかプログラムとかパソコンとか
$ sudo apt-get install expect
でインストールしてから再度実行
make TARGET_PRODUCT=beagleboard -j1 ...省略 Installation complete! make[2]: ディレクトリ `/home/sho/myFroyo/external/ti_android_sgx_sdk/SDK' から出ます make[1]: ディレクトリ `/home/sho/myFroyo/external/ti_android_sgx_sdk' から出ます
キタ━━━━(゚∀゚)━━━━ッ!!やっと終わった
試行錯誤の過程全部書いちゃったから長い記事になってしまった^^;
ポーティング完了したらまとめ直そう。
【BeagleBoard】Androidのポーティング【BeagleBoard用Androidソースの取得】
前回repoでBeagleBoardのソース取得しようとして失敗したのですが、manifestファイルを変えたらできたのでそのメモ。
まず再度イニシャライズするために「.repo」ファイルを削除します。
rm -rf .repo
これしてなかったせいで、下記のエラーがでてなにが悪いんだかわからなった^^;
$ repo init -u git://gitorious.org/rowboat/manifest.git -m TI-Android-FroYo-DevKit-V2.2.0.0.xml fatal: manifest 'TI-Android-FroYo-DevKit-V2.2.0.0.xml' not available fatal: manifest TI-Android-FroYo-DevKit-V2.2.0.0.xml not found
本題のmanifestを変えてのイニシャライズは下記を実行
$ repo init -u git://gitorious.org/rowboat/manifest.git -m TI-Android-FroYo-DevKit-V2.2.0.0.xml
ソースコードの取得は時間がかかるのでうまくいくことを祈るばかり。
【BeagleBoard】Androidのポーティング【ビルド準備編】
前回はビルドされているAndroidのイメージをBeagleBoardに書きこんでAndroidを起動させることに成功したので今回はポーティングに挑戦してみたいと思います。
作業が多くなると思うので今回はビルドできる環境の構築からソースの取得まで。
参考資料ではFroyoをビルドして使っていますが、かなり古いのでBeagleBoardM3にポーティングできる最新のものを取得したいと思います。
参考資料どおりにGetting the Sorceにアクセスしようと思ったら、ページがなくなっていたので、まず下記のサイトにアクセス
Initializing a Build Environment | Android Developers
ビルド環境の部分を読んでみるとGengerBreadからは64bitでないとビルドできないらしい。俺のPC32bitじゃん\(^o^)/
結局Froyoをビルドすることにしますorz そろそろ変えどきだと思ってたのでPC買い換えたら最新バージョンのビルドに挑戦しよう。
Java
気をとり直してまずはビルドするためにJavaの環境を構築していきます。最新のバージョンの場合はOpenJDKのJava7で良いようなのですが、今回ビルドする「Froyo」はJava 5でなければならないようなのでOracleのサイトからJDKをダウンロードします。
ダウンロードが完了したらファイルをJavaのファイルを展開したい場所に移動して実行します。
私は「/usr/local」にしました。
$ sudo mv jdk-1_5_0_22-linux-i586.bin /usr/local $ cd /usr/local/ $ chmod 777 jdk-1_5_0_22-linux-i586.bin $ sudo ./jdk-1_5_0_22-linux-i586.bin
実行するとライセンス文が表示されるのでスペースキーで飛ばします。
最後にyesを入力します。
展開が完了したら、パスを通します。
$ vim ~/.bashrc
最終行に展開したディレクトリの中のbinのパスを記載します。
PATH=$PATH:/usr/local/jdk1.5.0_22/bin/ #JDK Java5
記載内容を反映させてJavaのバージョンを確認します。
$ source ~/.bashrc $ java -version java version "1.5.0_22" Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_22-b03) Java HotSpot(TM) Server VM (build 1.5.0_22-b03, mixed mode)
ビルドに必要なパッケージのインストール
まずソフトのインストールに必要な「aptitude」をインストールします。
普段は「apt-get」使っているんですが、参考書は「aptitude」を使ってたので。
$ sudo apt-get install aptitude
参考書でインストールが必要と言っているもので入っていないもののみインストールします。
$ sudo aptitude install git-core flex gperf libsdl-dev libesd0-dev libwxgtk2.6-dev libreadline5-dev uboot-mkimage
実行してみると下記のメッセージが出た^^;
libreadline5-dev のインストール候補のバージョンが見つかりません
Ubuntu – lucid の libreadline5-dev パッケージに関する詳細
ここを参考にインストールします。まずはapt-getのリストにミラーサイトを登録します。
$ sudo vi /etc/apt/sources.list
開いたファイルの最終行に下記のアドレスを追加します。
deb http://mirrors.kernel.org/ubuntu lucid main
再度インストールを試みます
$ sudo apt-get install libreadline5-dev パッケージリストを読み込んでいます... 依存関係ツリーを作成しています... 状態情報を読み取っています... パッケージ libreadline5-dev はデータベースには存在しますが、利用できません。 おそらく、そのパッケージが見つからないか、もう古くなっているか、 あるいは別のソースからのみしか利用できないという状況が考えられます しかし、以下のパッケージで置き換えられています: libreadline-gplv2-dev lib64readline-gplv2-dev E: パッケージ 'libreadline5-dev' にはインストール候補がありません
ということなので「libreadline-gplv2-dev」を変わりにインストールします。
$ sudo aptitude install libreadline-gplv2-dev 以下の新規パッケージがインストールされます: libreadline-gplv2-dev 0 個のパッケージを更新、 1 個を新たにインストール、 0 個を削除予定、0 個が更新されていない。 233 k バイトのアーカイブを取得する必要があります。 展開後に 586 k バイトのディスク領域が新たに消費されます。 以下のパッケージには満たされていない依存関係があります: libreadline6-dev : 競合: libreadline-gplv2-dev [5.2-11 がインストール予定となっています] 以下のアクションでこれらの依存関係の問題は解決されます: 以下のパッケージを削除する: 1) libreadline6-dev この解決方法を受け入れますか? [Y/n/q/?]
上位のバージョンだと動かない可能性もありますが、とりあえず削除してインストールします。
repoのインストール
ソースコードの取得に必要なrepoをインストールします。
作業用のディレクトリを作成してパスを通してrepoをダウンロードします。
$ mkdir bin $ export PATH=$PATH:~/bin $ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo $ chmod a+x ~/bin/repo $ ls -l bin/repo -rwxr-xr-x 1 username workgroup 24081 5月 21 22:29 bin/repo
実行できる権限もつけておきます。
ソースの取得
とりあえずカレントディレクトリに「myFroyo」というディレクトリを作成してソースコードを取得してみます。
$ mkdir myFroyo $ cd myFroyo /myFroyo$ repo init -u git://gitorious.org/rowboot/manifest.git -m TI-Android-FroYo-Devkit-V2.xml gpg: 鍵輪「/home/user/.repoconfig/gnupg/secring.gpg」ができました gpg: 鍵輪「/home/user/.repoconfig/gnupg/pubring.gpg」ができました gpg: /home/user/.repoconfig/gnupg/trustdb.gpg: 信用データベースができました gpg: 鍵920F5C65: 公開鍵“Repo Maintainer <repo@android.kernel.org>”を読み込みました gpg: 鍵692B382C: 公開鍵“Conley Owens <cco3@android.com>”を読み込みました gpg: 処理数の合計: 2 gpg: 読込み: 2 (RSA: 1) Get https://gerrit.googlesource.com/git-repo remote: Counting objects: 117, done remote: Finding sources: 100% (117/117) remote: Total 2866 (delta 1519), reused 2866 (delta 1519) Receiving objects: 100% (2866/2866), 2.40 MiB | 2.09 MiB/s, done. Resolving deltas: 100% (1519/1519), done. From https://gerrit.googlesource.com/git-repo * [new branch] maint -> origin/maint * [new branch] master -> origin/master * [new branch] stable -> origin/stable * [new tag] v1.0 -> v1.0 * [new tag] v1.0.1 -> v1.0.1 ...省略 * [new tag] v1.9.5 -> v1.9.5 * [new tag] v1.9.6 -> v1.9.6 Get git://gitorious.org/rowboot/manifest.git fatal: The remote end hung up unexpectedly fatal: The remote end hung up unexpectedly fatal: cannot obtain manifest git://gitorious.org/rowboot/manifest.git
古い本なのでいやな予感はしましたがリポジトリなくなっているっぽいです。
とりあえず本家からダウンロードしてみます。
こっちの方法ならうまくいきました(・∀・)
【BeagleBoard】Androidのポーティング【BeagleBoard用Androidソースの取得】 - コンピュータカウボーイ見習いのメモ帳
/myFroyo$ repo init -u https://android.googlesource.com/platform/manifest Get https://android.googlesource.com/platform/manifest % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 curl: (22) The requested URL returned error: 404 Server does not provide clone.bundle; ignoring. remote: Counting objects: 106, done remote: Finding sources: 100% (106/106) remote: Total 1251 (delta 244), reused 1251 (delta 244) Receiving objects: 100% (1251/1251), 1.05 MiB, done. Resolving deltas: 100% (244/244), done. From https://android.googlesource.com/platform/manifest * [new branch] android-1.6_r1 -> origin/android-1.6_r1 * [new branch] android-1.6_r1.1 -> origin/android-1.6_r1.1 ...省略 * [new tag] android-sdk-adt_r20 -> android-sdk-adt_r20 * [new tag] android-sdk-support_r11 -> android-sdk-support_r11 Your Name [user]: user Your Email [user@user-desktop.(none)]: user@mail.co.jp Your identity is: user <user@mail.co.jp> is this correct [y/N]? y Testing colorized output (for 'repo diff', 'repo status'): black red green yellow blue magenta cyan white bold dim ul reverse Enable color display in this user account (y/N)? y repo has been initialized in /home/user/myFroyo
途中でユーザー名やらメールアドレスが聞かれるのでそのまま答えていきます。 Froyoは2.2なのでそのリポジトリを設定します。
/myFroyo$ repo init -u https://android.googlesource.com/platform/manifest -b android-2.2_r1 Your Name [user]: user Your Email [user@user-desktop.(none)]: user@mail.co.jp Your identity is: user <user@mail.co.jp> is this correct [y/N]? y repo has been initialized in /home/user/myFroyo
早速ダウンロードを開始します。
repo sync
これでダウンロードまでの手順は終わりです。実際にビーグルボードで動くかは次回書きたいと思います、