Magic Lanternの解析メモ

Magic Lanternの解析メモ ただし550D(X4用)

開発環境構築

Magic Lanternのコンパイル対象の選定

前回の続き。

コンパイル対象とするバージョンであるが、
開発環境が正常に構築できたことを確認するため、
サイトから配布されているバイナリと
自分でコードからコンパイルした結果のバイナリが、
手元の比較で一致するのが望ましい。

安定化版である2010-12-19のリリースを選択することにした。
windows配下でできるよという掲示板の書き込みも2010.12.28なので、このバージョンで試されたと思われる。

バイナリ
magiclantern-0.2.0.rc1.550d.fw109.zip
ソースコード



・・・・ところが、今のところ、問題点として、make時に、標準ライブラリ関数のリンクでエラーになってしまう。
make_err

パスが通っていない等の凡ミスでもなさそうだし、/arm-elf/lib/libc.aも存在する。

・・・・今のところここで断念している。

最新版マジックランタンでも結果は同じ。
Yagartoの最新版は4.6.0で、「arm-elf-gcc」ではなく、「arm-none-eabi-gcc」に変更されている。
マジックランタンの最新版では、既にyagartoの4.6.0でのビルドが試みられている。


さて、
550D(X4)用の別のブランチがいくつか派生しており、
 libc.aを使用しないmakeファイルのバージョンがリリースされており、
修正理由は「Removed most compiler warnings」。
・・・・550Dの場合、標準関数いらないのか?? 確かにsetjmp関数1つのみなのであるが。


試したのは下記の物である。
https://bitbucket.org/hudson/magic-lantern/changeset/c528951f5d6f

magic


これを使用してmakeしてみたところ、一応autoexec.binはできたっぽい。
これが成功画面なのかどうかまだわからないが、autoexec.binが出来ればOKのようなので良しとした。
make_ok

ちなみに、Notice:・・・と出ているが、構わないらしい


ところが、これ、バイナリファイルが配布されていない。
つまりうまく出来たのかどうかファイル比較できないのである。

・・・・むう。困ったな。


Eclipseとgccの連携

EclipseでOpenOCDを使ってソースレベルのデバッグをするためのプラグインZylin CDTをインストールする


Eclipse環境への適用の仕方は「組み込みとともに」が詳しい。

http://www.micro4you.com/files/openjtag/OpenJtag-Arm-All_manualv1.3.pdf

windows配下でMagic Lanternをコンパイルする

windows配下でCYGWIN を利用してMagic Lanternをコンパイルできると
下記に書かれていた。 めっちゃ小さいリンクで見落としていた。。。

http://groups.google.com/group/ml-devel/browse_thread/thread/53a24c0dad76db3b/ 

・・・やっぱできるじゃん。とCygwinでも出来る模様。Win32がダメなだけで、UNIX互換のCygwinならできる。
とはいえ、ほとんど仕事では使用しないCygwinとgcc。 お勉強がてら挑戦してみる。

1.Cygwinのインストール
Cygwin のインストールの前に、Windows 側で、環境変数を次のように設定。 
「システムのプロパティ」「詳細設定」「環境変数」
変数        値
CYGWIN      tty glob
HOME       /home
MAKE_MODE  UNIX
SHELL       /bin/bash

セットアップで実行したのはこれ 
http://www.cygwin.com/setup.exe
ALLインストールだとDLにかなり時間がかかるので
下記が最低限必要なものらしい。バイナリがあればOK。ソースコードは不要。

Base: Everything 
Devel: gcc, gcc-core, gcc-g++, make, patchutils, automake, autoconf, binutils, subversion, nasm, libtool,bison, byacc 
Web: wget 
Archive: unzip, zip 
Utils: bzip2, cygutils, diffutils, patch, patchutils 
Libs: libbz2-devel 
Perl: perl 
Python: python 

インストール後、下記を参照
http://sohda.net/cygwin/setenv.html

2. Yagartoのインストール 
windows配下でのArmのクロス開発環境らしい。
  
下記が本家らしい 本家の最新版だとGCCのバージョンが異なってしまうので注意。
http://www.yagarto.de/

また、cygwinでコンパイルする場合、C:\cygwin\home\配下へ
フォルダ名「arm-toolchain」として指定してインストールする(yagatoフォルダにしない)。
別フォルダの場合は、makeファイルの先頭のパス指定をいじる必要がある。
インストールの実行はwindows側からでOKな模様。

他のパスへインストールする場合も、
YagatoはC:/Program Files/ のようなフォルダ名にスペースがあるパス配下に
インストールしてはならないので注意。


正式なMAC用のやりかたは、「bash summon-arm-toolchain」で行うらしいが、
Cygwinで実行するとFTPがらみでエラーになる。なんでかしらんが。パッシブFTPの問題か?


3.File-Slurp-9999.13 インストール
 
Perlでのファイル操作モジュールらしい。Perlからのファイルの読み書き。
http://search.cpan.org/CPAN/authors/id/D/DR/DROLSKY/File-Slurp-9999.1...
上記から落とせと書いているが、
Cygwinのコンソールから「perl -MCPAN -e 'install File::Slurp'」を実行すれば入る。
色々聞かれるが、yesで。 
成功すればCygwin 配下のPerlのどこかにSlurp.pmファイルが出来上がるはず。

Win用のActivePerlとかではなくCygwin上でインストールしなくてはダメ。 

4.環境パスの設定
必要に応じてCygwinのパスを指定する。不要であればいらない。
C:\cygwin\home\配下の.bashrcの編集で追加する
改行はCRLFではなくLFなので注意。 秀丸等でファイル保存方法を選択すること。

5.gccの動作テスト
hello.c ファイルを作成し、テストする
//hello.cのファイルの中身
#include <stdint.h>
#include <sys/types.h>
int main() 
{
    int x;
    x = 5;
}

コンパイルテスト
「PATH=~/arm-toolchain/bin:$PATH」のコマンド後
「arm-elf-gcc -c hello.c」で
hello.o が出来ればOK


7.バージョン管理ソフト
Mercurialを使用している模様。たぶん入手は不要。
make時にhgファイルで警告がでるが無視。

8.Magic Lantern をコンパイルする
ビルドの実行は cygwinをソースコードのカレントに移動して「make」と打つだけ。
中間オブジェクトファイルを削除して1からリビルドしたい場合は、「make clean」を実行。

さて、肝心のコンパイル対象に関しては
次回へ続く





下記、掲示板書き込みの原文
1. Install CYGWIN 
Base: Everything 
Devel: gcc, gcc-core, gcc-g++, make, patchutils, automake, autoconf, 
binutils, subversion, nasm, libtool, bison, byacc 
Web: wget 
Archive: unzip, zip 
Utils: bzip2, cygutils, diffutils, patch, patchutils 
Libs: libbz2-devel 
Perl: perl 
Python: python 
 
Install Yagarto 

Install 
File-Slurp-9999.13 

Compile Magic Lantern 

Magic Lanternの開発環境構築

コンパイル・ビルド
http://magiclantern.wikia.com/wiki/For_Developers

http://magiclantern.wikia.com/wiki/Build_instructions
To build the firmware I'm using arm-elf-gcc 4.3.2 on Mac OS X and arm-linux-gcc 3.4.4 on Linux. Beyond that I can't make any promises of things compiling or working. You must also have mercurial, perl, make, binutils, etc. There is no support for cross compiling from Win32.

・・・とここではWinはダメなのか? とあきらめかけたが、後で可能らしいことがわかる。


ビルド手順 ただしMAC用
http://magiclantern.wikia.com/wiki/Build_instructions/550D
ソースコード
https://bitbucket.org/hudson/magic-lantern/

DL場所、わかりにくいのでメモ 最新版は(ブランチで550Dを選んでから?) get_sourceでどれかの圧縮ファイルを落とす
sorcecode_dl
DownLoadの所はビルド済みのバイナリファイルと
Tagの方でソースコードが落とせる(リリース版を手に入れるならこっちの方がいいかも)。


doxygen
http://www.doxygen.jp/
http://www.stack.nl/~dimitri/doxygen/download.html#latestsrc


記事検索
最新コメント
プロフィール

かじやん

タグクラウド
QRコード
QRコード
  • ライブドアブログ