最近の変更サイトマップ

Teaboard:Hello, world

開発環境の構築も完了したところで、いよいよ「Hello, world」だ。

まずは作業用SDカード領域の確保。

  • ROMディスクから起動していることの確認
    [/SYS]% df
    PATH  DEV      TOTAL      FREE USED  UNIT MAXFILE NAME
    /SYS  rda       1829         0 100%  1024    256  PM:TBMX1

  • パーティションの確保

    [/SYS]% hdpart pcb
    pcb   [C:483  H:64  S:63  B:1953792 (954 MB)]
    No System    Boot   StartCHS      EndCHS         SecNo     SecCnt     Size
    1  13 ------  00     0:  0: 0     0:  0: 0           0          0     0 KB
    2  00 ------  00     0:  0: 0     0:  0: 0           0          0     0 KB
    3  00 ------  00     0:  0: 0     0:  0: 0           0          0     0 KB
    4  00 ------  00     0:  0: 0     0:  0: 0           0          0     0 KB
    ** Create/Delete/Boot/Edit/Quit ? c
    Create PartNo (1-4) ? 1
    Size [GB/MB/KB,All] (<201MB) ? 200M
    No System    Boot   StartCHS      EndCHS         SecNo     SecCnt     Size
    1  13 BTRON   00     0:  2: 4   101: 63:63         129     411135   200 MB
    2  00 ------  00     0:  0: 0     0:  0: 0           0          0     0 KB
    3  00 ------  00     0:  0: 0     0:  0: 0           0          0     0 KB
    4  00 ------  00     0:  0: 0     0:  0: 0           0          0     0 KB
    ** Create/Delete/Boot/Edit/Update/Quit ? b
    Boot PartNo (1-4,Clear) ? 1
    No System    Boot   StartCHS      EndCHS         SecNo     SecCnt     Size
    1  13 BTRON   80     0:  2: 4   101: 63:63         129     411135   200 MB
    2  00 ------  00     0:  0: 0     0:  0: 0           0          0     0 KB
    3  00 ------  00     0:  0: 0     0:  0: 0           0          0     0 KB
    4  00 ------  00     0:  0: 0     0:  0: 0           0          0     0 KB
    ** Create/Delete/Boot/Edit/Update/Quit ? u
    ** pcb: Updated Master Boot Block

  • パーティションのフォーマット

    [/SYS]% format -b pcb0 WORK
    Format pcb0 [STD] WORK
    Logical Formatting...
    Writing BootCode...
    Disk Format Success.
    </coee>
      * **パーティションのマウント**<code bash>
    [/SYS]% att pcb0 pcb0
    pcb0 -> pcb0

  • システムファイルのコピー

    [/SYS]% cp -b -v -r * /pcb0
    copied: SBOOT
    copied: KERNEL.SYS
    copied: SYSCONF
    copied: DEVCONF
    copied: STARTUP.CMD
    copied: STARTUP.CLI
    copied: rsdrv
    copied: netdrv
    copied: unixemu
    copied: tcpipmgr
    copied: NETCONF
    copied: cli
    copied: .xcli
    copied: bin

  • パーティションのアンマウント

    [/SYS]% det pcb0

  • 再起動

    [/SYS]% # bd

  • SDカードからブートしているか確認

    [/SYS]% df
    PATH  DEV      TOTAL      FREE USED  UNIT MAXFILE NAME
    /SYS  pcb0    205564    203312   1%  4096  17408  WORK

上記通りにやったのにもかかわらず、内蔵ROMディスク(rda)から起動するようならば、一度Teaboardの電源を落として(USBケーブルを抜いて)から起動すると、SDカードから起動すると思う。

次は、Hello, worldのコンパイル。

Teaboardで走るプログラムは「プロセスベース」と「T-Kernelベース」の2つに大別される。基本的にプログラムは、それぞれのベースに合わせたlocal/te/bapplとlocal/te/kappl以下で開発を行う。今回はプロセスベースのHello, worldを作成する。

  • ディレクトリ構成
    /opt/local/te/bappl
     /hello
      /src
      /tbmx1

    hello/srcにソースファイルを格納し、バイナリはhello/tbmx1に格納する。デフォルトのmakerulesでは、バイナリ格納用のディレクトリ名によって、ターゲットを自動的に切り替えるようになっいるっぽい。なので、基本的にはこのディレクトリ構成は変更しない方がいいと思われる。

  • hello.cの作成
    hello/srcにhello.cを作る。

    #include <stdio.h>
     
    int main(void)
    {
        printf("Hello, world¥n");
     
        return 0;
    }

  • Makefileの作成
    これもhello/srcに作る。

    include ../../etc/makerules
    VPATH = ../src
    hello: hello.o

  • make

    make

Teaboard:クロスコンパイラのビルド

Teaboardの開発環境はgccで、CygwinとLinux用のクロスコンパイラが添付されている。これらgccは、当然Mac OS Xでは使用できない。幸い、開発環境再構築用のパッケージ一式が提供されているので、それを使ってOS X用のgccを構築する。

準備

以下のディレクトリ構成で作業を行う。各自の環境にあわせて、適宜読み替えて欲しい。尚、うちの環境では~/にusrディレクトリを作り、/optは~/usrへのシンボリックリンクとなっている。

/opt
 /local
  /te
   te.tlsrc.arm.05.tar.gz
   te.tlsrc.common.04.tar.gz
   te.resource.tbmx1.01.tar.gz
   /tool
    /build
    /gnu
     /distribution
      binutils-2.13.tar.bz2
      gcc-3.2.2.tar.bz2
      gdb-5.2.tar.gz

開発環境再構築用パッケージの展開

cd /opt/local/te/
tar zxvf te.tlsrc.arm.05.tar.gz
tar zxvf te.tlsrc.common.04.tar.gz
tar zxvf te.resource.tbmx1.01.tar.gz

binutilsの構築

cd tool/build/gnu/binutils-2.13-tkernel/
cp ../etc/makerules ../etc/makerules.unknown
make BD=/opt/local/te TARGET=arm-unknown-tkernel extract patch-tkernel
make BD=/opt/local/te TARGET=arm-unknown-tkernel clean configure make
sudo make BD=/opt/local/te TARGET=arm-unknown-tkernel install

gccの構築

cd /opt/local/te/
sudo cp -R include tool/unknown/arm-unknown-tkernel/sys-include
cd tool/build/gnu/gcc-3.2.2-tkernel/
make BD=/opt/local/te TARGET=arm-unknown-tkernel extract patch-tkernel
sudo make BD=/opt/local/te TARGET=arm-unknown-tkernel clean configure make
sudo make BD=/opt/local/te TARGET=arm-unknown-tkernel install
sudo rm -R /opt/local/te/tool/unknown/arm-unknown-tkernel/sys-include

gdbの構築

make中に「gdb-5.2-tmonitor/gdb-5.2/gdb/arm-tdep.c:2692: error: label at end of compound statement」というエラーが出るので、当該箇所を予め修正しておく。

    case ELFOSABI_ARM:
      /* Assume GNU tools with the old APCS abi.  */
      return ARM_ABI_APCS;
 
    default:
    break; // ◆◆この行を加える◆◆
    }
cd ../gdb-5.2-tmonitor/
make BD=/opt/local/te TARGET=arum-unknown-tmonitor extract patch-tmonitor
make BD=/opt/local/te TARGET=arm-unknown-tmonitor clean configure make
sudo make BD=/opt/local/te TARGET=arm-unknown-tmonitor install

makerulesの編集

/opt/local/te/bappl/makerulesと/opt/local/te/kappl/makerulesの「開発環境のベースディレクトリ」を編集する。

ifndef BD
  # 開発環境のベースディレクトリ
  BD := /opt/local/te
endif

Teaboard:とりあえず繋いでみる

学校で、先生にTeaboard/ARM920-MX1

押し付けられた

貸して頂いた。折角だからと、うちのWindows 2000マシンに繋いでみたが、ドライバがはいらねーんですよ、これが。対応OSはWindows XP/Linuxだから、2000で使えなくたって文句は言えない。

Linuxに対応してるんなら、同じUNIX系のOSであるMac OS Xでも行けるだろうと、繋いでみた。そして、あっさりと認識。流石はUNIX。デバイススペシャルファイル名はcu.usbmodem5B2131だった。

次に、ZTermというシリアル通信ソフトで、認識されたTeaboardに接続。これまたあっさりと成功。特に設定などは弄る必要はなかった。

さて、次は開発環境の構築だ。

P.S. Terminalでシリアル通信を行う方法がわからない。「ftp hoge.com」みたいな感じで、シリアル端末に接続・通信を行う方法はないんだろうか…?

多言語ロケールの憂鬱

Mac OS Xは、本格的に多言語ロケールに対応した、(恐らく世界初の)OSだ。これが意味するところは、世界中の様々な言語ならびに地域文化(例えば「暦」や「年号」「通過単位」など)を、実に優雅にシームレスに扱えるということだ。

[システム環境設定]-[言語環境]で、言語を英語にすれば、OSの各種メニュー・メッセージは英語表記になるし、他の言語を選べばその言語表記になる。また、一般アプリケーションも対応するロケール情報さえ持っていれば、システム環境にあわせた言語表記になる。某OSの一般の多言語対応アプリケーションのように、メニューの言語一覧から、表示に使う言語を選ぶ必要などない。

なので、英語の勉強もかねて、うちのMac OS Xは今、英語ロケールで地域文化は日本という設定になっている。

このロケールの仕組みは、(かなり単純なものではあるが)先進的でアンビリーバブルなだけに、一般アプリケーションの対応は、まだまだ今一つという感じだ。

実際、英語ロケールで使っていると、様々な不具合に遭遇する。

まずはiTunes。これは昨日の日記に書いた通り。

次にMicrosoft Messenger。こいつは、ロケールによって、ソフトの設定や会話ログの設定先が違う(具体的には、ディレクトリ名が違う)。そのため、ロケールを切り替える度に一部設定が初期化されていたり、会話ログがロケール単位でしか管理できなかったりと、不便。

そしてFlash Player。全角文字が化ける時がある。発現条件は不明。ブラウザのロケール設定を日本語にしても化けるので、Flash Playerのロケールはブラウザのそれとは独立してるっぽい。まぁ、大体のFlashは化ける事なく表示されるので、今のところはそんなに難儀はしてないけど。

……とまぁ、現在わかってる不具合はこんなもの。話に聞くところ、Javaのコンパイルで日本語が通らなくなったりもするとか。

折角、OS自体は多言語環境に対応してるのに、肝心のアプリがこれじゃなぁ…。

iTunes小ネタ

システム設定の言語環境を英語にして、曲を再生したら曲情報が文字化けした!

ID3タグの処理の問題(?)で、日本語ロケール以外で起動させると文字化けが発生するらしい。

iTunes.appを右クリックメニューの「情報をみる」で開き、「言語」ってところで「Japanese」以外のチェックを外せば、無条件で日本語ロケールで起動させることができる。これで解決。これはiTuensに限った事じゃなく、多言語ロケールを持つ他のアプリケーションにも応用可能。 個人的には、iTunesは英語ロケールの方がフォントがカッコイイ&見やすいんだよね。日本語ロケールでも昔は見やすかったのに、なんでヒラギノで表示するようにしちゃったんだよ……。

曲情報を編集したのに、反映されない!再生すると変更前の曲情報に戻ってる!!(MP3限定?)

「ID3タグを変換」で、「ID3タグバージョン」を「なし」に一旦[OK]。その後、改めてタグバージョンを設定する。されば編集した情報が反映されるようになるであろう。

曲名の頭に付いてるチェックボックス、1つずつ設定するのが面倒だ!

⌘+左クリックでチェックボックスを押すと、一括してON/OFFを切り替えられる。

切り替えはプレイリストウィンドウ単位で行われ、任意に選択した曲単位での切り替えは出来ない。どうしても任意の曲単位で操作したい場合は、検索やスマートプレイリストで上手い事絞り込むしかない。

「ライブラリを書き出し」で書き出したファイルには「再生回数」情報も入ってるのに、「読み込み」で考慮されないのはなぜ!?

最近のバージョン(少なくとも7)では考慮されるようになった模様。

start.txt · 最終更新: 2016-05-07 17:46 by decomo
CC Attribution-Noncommercial-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0