PE勉強会に参加

2/27(土)にid:n7shiさんの主催したPE勉強会に参加してきました。

覚えたこと
  • PEファイルフォーマットにはELFフォーマットのようなセグメントの概念はない。セクションがメモリにマッピングされる。
  • comファイルはヘッダ情報がなく、実行命令がファイルの先頭から書きこまれている。

comファイルにヘッダがないというのは昔はじめて読む8086―16ビット・コンピュータをやさしく語る (アスキーブックス)だかはじめて読むMASM―ソフトウェア環境のからくりを学ぶだかを読んで、debugコマンドで遊んだ時に知ったことでしたが、すっかり忘れていました。
……そういえばMicrosoft環境でのプログラミングって10年くらいしていない。

BeagleBoard-xMがとどく

注文していたBeagleBoard-xMが先週とどきました。サイズがわかるように手でもった写真を載せてきます。

これで、やっと組み込みAndroid本に着手できるようになりました。

基礎から学ぶ 組み込みAndroid

基礎から学ぶ 組み込みAndroid

AndroidmicroSDカードにいれて実行するらしいので、microSDカードとSDカードリーダー/ライターのないPCでも使えるようにカードリーダ/ライタも購入。
BeagleBoard-xMで14000円、SDカード2000円、カードリーダー/ライターで700円くらいかかりました。

入門gitを読む

入門gitを読みました。

入門Git

入門Git

gitの開発者が書いた本です。
実際の使い方、利用のされかただけでなく、gitの思想、なぜそうなのかや、git内部でのデータの持ち方などが書かれていて非常に参考になりました。
gitを使っている人は是非読んでみるとよいと思います。

全12ステップ完了 - 12ステップ本を試す その5

12ステップ本に沿って作成したOSづくりは先日最後の12ステップまですべて完了しました。
感想をまとめておこうと思います。

12ステップで作る組込みOS自作入門

12ステップで作る組込みOS自作入門

この本最後まで作ってみましたが、本当に良い本です。
この本で学べたことは下記のような内容です。

  • 実行形式ファイルELFの理解とローダの実装
  • OSの基本機能の理解と実装
    • 割り込みの処理の実装
    • タスクスケジューリングの実装
    • メモリ管理の実装
    • タスク間通信の実装
    • シリアルコンソールドライバの実装

これらのものが、Minix本よりシンプルに実装され、全ソースコード解説されているので、OS周りの学習をしている私にはとても参考になりました。
巻末にも書いてあるとおり、この本で実装するソースコードブートローダとOS合わせても2721行というコンパクトなサイズで、それを12ステップの段階にわけ、少しずつ実装を修正・追加しながら最終型に近づけていくという流れでの学習なので、忙しい仕事の中でもモチベーションを保ちながら少しづつ進めていくことができ、とても助かりました。

また今後の応用として、

  • 他のプロセッサへの移植
  • TCP/IP対応

など、著者の坂井さん(小僧さん)が色々トライしていることに自分で挑戦することも考えられます。
コンパクトで理解しやすく、扱いやすいOSなので私でもこういったことにチャレンジできそうです。これらについては今後試してみたいと思っています。

BeagleBoard-xMを注文

基礎から学ぶ 組み込みAndroid

基礎から学ぶ 組み込みAndroid

先日この本を買ったので、BeagleBoard-xMを注文しました。
いつ頃届くのだろう。
楽しみです。

リンカ・ローダ実践開発テクニック

12ステップ本が区切りついてきたので、12ステップ本と同じkozoさんが書いた本、リンカ・ローダ実践開発テクニックを読み始めることにしました。

タスク間通信実装完了 - 12ステップ本を試す その4

今週は体調が悪かったんですが、土曜の夜ごろに体調がよくなってきたので、今日少しだけ頑張って12ステップ本を進めました。

12ステップで作る組込みOS自作入門

12ステップで作る組込みOS自作入門

11thステップのタスク間通信まで実装完了できました。
今回もOSを受信するbuffer領域のサイズをリンカ・スクリプトで修正する必要がありましたが、大きな問題はなし。

あとは12thステップを残すのみです。