WZR-600DHP2を触る機会があったので、dd-wrtを導入してみた(のつづき)
前回はdd-wrtのインストールまでを行った。今回は、簡単なプログラムを実行させてみた。
クロスコンパイルをやってみる。
1.準備
ツールチェーンを入手
http://www.mentor.com/embedded-software/sourcery-tools/sourcery-codebench/editions/lite-edition/
ツールチェーンはいろいろ種類があるみたいだけど、
有名どころを使った。まずは動くことが大事。
ツールチェーンはいろいろ種類があるみたいだけど、
有名どころを使った。まずは動くことが大事。
2.スタティックリンクで生成してみる
いきなり難しいことはできないので、
スタティックリンクでやってみる
スタティックリンクでやってみる
hello.c
#include <stdio.h> int main(void) { printf("Hello Wold\n"); return 0; }
いざコンパイル!!
出来上がったhello.exeを600DHP2に転送して試してみる。
できた!
arm-none-linux-gnueabi-gcc hello.c -static -o hello.exe
出来上がったhello.exeを600DHP2に転送して試してみる。
できた!
3.ダイナミックリンクで生成してみる
スタティックだけではつまらないので、ダイナミックリンクでもやってみる。
そのためには、ライブラリを保存できる環境が欲しい。
前回、SDカードが/jffsに自動マウントされるようにしたので、その領域を使う。
共有ライブラリの 保存先libを自由に変更できるようにするために、
SDカードに一式を保存して、それをメイン(/lib)として利用するようにする。
まずは、
/jffs内にclone/libを作成して、現在のlibの中身を全部コピー!!
ついでにclone/bin も作成して、全部コピー!!
そして、ツールチェーンの共有ライブラリもコピーする
CodeSourcery/Sourcery_CodeBench_Lite_for_ARM_GNU_Linux/arm-none-linux-gnueabi/libc/armv4t/lib
これで、下ごしらえはできた。
dd-wrtの「管理」から 「コマンド実行」を選択し、
起動スクリプトを作成する。
前回、SDカードが/jffsに自動マウントされるようにしたので、その領域を使う。
共有ライブラリの 保存先libを自由に変更できるようにするために、
SDカードに一式を保存して、それをメイン(/lib)として利用するようにする。
まずは、
/jffs内にclone/libを作成して、現在のlibの中身を全部コピー!!
ついでにclone/bin も作成して、全部コピー!!
そして、ツールチェーンの共有ライブラリもコピーする
CodeSourcery/Sourcery_CodeBench_Lite_for_ARM_GNU_Linux/arm-none-linux-gnueabi/libc/armv4t/lib
これで、下ごしらえはできた。
dd-wrtの「管理」から 「コマンド実行」を選択し、
起動スクリプトを作成する。
内容としては、
があれば大丈夫。
20秒待つのはおまじない。。
マウントしたSDカードが意図しているものかの簡易的なチェックのために、
/jffs/にoptware.enableをという空のファイルを作っておく。
このファイルがある場合にSDカードのlibとbinを使用するしくみ。
一度再起動して、下準備完了。
早速、ダイナミックリンクで生成してみる。
どや!
#!/bin/sh sleep 20 if [ -f /jffs/optware.enable ]; then mount -o bind /jffs/clone/lib /lib mount -o bind /jffs/clone/bin /bin else exit fi
があれば大丈夫。
20秒待つのはおまじない。。
マウントしたSDカードが意図しているものかの簡易的なチェックのために、
/jffs/にoptware.enableをという空のファイルを作っておく。
このファイルがある場合にSDカードのlibとbinを使用するしくみ。
一度再起動して、下準備完了。
早速、ダイナミックリンクで生成してみる。
arm-none-linux-gnueabi-gcc hello.c -o hello_d.exe
どや!
次は定番プログラムの実行に挑戦
0 件のコメント:
コメントを投稿