2010年7月25日日曜日

制御を勉強しよう!

私は制御は専門外ですが、最近、勉強してます。熊谷研究室の講義資料なかなか簡潔にまとまっていそうです。時間をかけて読んでみます。

2010年7月17日土曜日

「12ステップで作る 組込みOS自作入門」- KOZOSのスレッド生成を変えてみる part3



p.14~p.17にかけてクロスコンパイラのビルドの話があります。先週ブログに書いたように、cygwinでビルドしようとすると、なんとシェル(shell)がハング! コントロールCでも応答なし。おまけにWindowsのシャットダウンもできなくなる始末です。

cygwinのデフォルトのシェル(shell)の問題ではないかと思い、cygwinのsetupからminttyを選択し新しいシェルとして追加インストールしました。試しにbinutilsをビルドしてみましたが、ここまではまったく問題なしです。

2010年7月10日土曜日

Cygwinハング!?

とりあえず、cygwinでH8用のクロス環境を作ろうと、cygwin環境を設定の上、binutilsをダウンロードしてビルドしたが、binutilsのビルド中にcygwinが固まる。別のパソコンでやってみてもcygwinが固まる。更には、Windowsをシャットダウンできなくなる。

参考:H8マイコンのソフトウェア開発環境を整備しよう

2010年7月4日日曜日

「12ステップで作る 組込みOS自作入門」- KOZOSのスレッド生成を変えてみる part2



KOZOSのレディキューですが、次のようにプライオリティごとにあります。

static struct {
    kz_thread *head;
    kz_thread *tail;
} readyque[PRIORITY_NUM];

一方、レディキューは1つにするという考え方もあると思います。そのほうが
シンプルですし。例えば、こんな感じで

typedef struct _kz_list {
    kz_thread *thrd; /* スレッド */
    int aux;         /* 補助情報 */
    struct _kz_list *next; /* 次の要素 */
} kz_list;
static kz_list readyque;

auxという補助情報ですが、基本的にはプライオリティ値を入れます。ただ、
先頭要素であるreadyqueにはリストにつながっている要素数を入れておきます。

次にリスト操作のAPIを考えて見ますが、

/* スレッドをリストに挿入する */
void kz_insert(kz_list* list, kz_thread* thrd);

例えば、新しくスレッドを作成した場合は、kz_insertを呼び出してreadyque
にスレッドを挿入します。スレッドの挿入は、プライオリティ値の小さい順に
しておきます。

iPhone OSの進化で見放されるiPod Touch ?

うーむ、互換性がないのでインストールされませんでした、とiTunesに言われても困りますね。最初にアプリケーションを買った時は、この古いOSで動いてたのですから。新しいOSについていくアプリケーションは、古いOSしか動かないハードウェアを見放すというわけでしょうか? 今後もiPhone OSは進化を続けるでしょうね。そして、アプリケーションはそれを追いかける。すると、古いOSしか動かないハードは魅力を失い、新しいハードへ移行する。

2010年7月3日土曜日

MSIに対する誤解

MSI(Message Signaled Interrupt)って誤解されてるんですね。ここを読むとそれが書いてあります。確かに、Memory Writeの仕様になってますが、実際は「特別なアドレスウィンドウ」への書き込みが割込みをアサートする仕組み。