Intel 8051を学ぶ

さて、昨日購入したMINI EZ-USBに搭載されているAN2131SCというチップですが、これが内蔵しているCPUがIntelの8051というもの。

googleしてみるとSDCCなるコンパイラ発見。ポータルの説明を見る限りでは

SDCC will compile natively on Linux using gcc.

ということなのですし、8051ターゲットのgcc構築は可能との証言が多数あります。(2004-03-21 追記: この記述は一部勘違いがありました。わたしはSDCCがgccベースで実装されていると思って引用しましたが、本当はSDCC自体がgccコンパイルされるプログラムであるという意味でした。gccを8051へポートできるかどうかについてはまだ調査中です。) Cypressのページでも

Uses commercially-available 8051 software tools

とはあるのですが、CypressのページからもEZ-USB向け開発ツールがダウンロード可能です。これはフリーなんですがターゲットはWindows。うーん、マイコン遊びにWindowsが必須なんてなんだか納得できない。

AN2131SCのデータシートを軽く斜め読みしてみると8051 Extensionという文が目につきますし8051をベースにしているけど拡張機能もあるって事なのでしょうか。GCCベースではAN2131SCをしゃぶり尽くすことはできないのでしょうか。このあたりが気になるところです。

まず8051のデータシートも手に入れてこの8bitマイコンの事を良く知ろう、と思いIntelのサイトで8051の資料を探す。関連ドキュメントがいっぱい引っかかってきて参りました。どうも8051搭載のチップがいっぱいあって、そのチップのデータシートがずらっと並んでしまった模様。わたしが欲しいのは8051の基本的なインストラクションとかの情報なので「MCS(R) 51 Microcontroller Family User's Manual」というやつをDLしてみました。うむ、どうやらこれが望むものだった模様。これから勉強しておきます。

Kinkos's

久々に動きのあったWataru's memoを始めいくつかの巡回先で最近よく見かけるkinko's Japanというコピー、プリント、製本などのサービスを提供してくれる会社があります。店舗一覧やサービス内容を見ているうちにわたしも一度体験したくなってきました。ちょうどEZ-USBのマニュアルを読もうとしていたところですし、最初におつきあいするチップですから、気合いを入れて綺麗に紙媒体で持っておきたい。というかこうして初期投資を増やして自分を追いつめる作戦な訳ですね。

というわけで渋谷店のkinkoに行って来ました。手ぶらで出かけて設置されているPCの環境をレンタルしてCypressのHPから直接DL。白黒両面印刷で出力してもらいます。300ページ近い内容に店員さんにちょっと驚かれてしまいましたが、わたしも出力された紙束を渡されて思ったより厚かったのにビビってしまいました。両面なので約150枚で1.5cmくらいになります。なおプリントアウトに際してはプリンタへの設定など店員さんが逐一やってくれました。適当にデフォルトの設定で印刷しなくて良かった。

出力結果を手に「製本もしたいんですが」と申し出ると、二階フロアへと誘導されました。二階のカウンターで製本の種類など丁寧に説明してくれます。今回は厚みもあることと、大開きにできる方がいいだろうということでリングタイプの仕上げにしてもらいました。製本には若干時間がかかるようで、今日は2 時間後の受け取りにしてもらいました。

印刷が白黒で9円×296ページ。PC利用と製本で200円ずつ。表紙のクリアシートと裏表紙の厚紙も含めて計約3400円。昨日に続けてまたお金を使ってしまいました。3000円というとそれなりの書籍程度の出費にはなりますね。高いと見るか安いと見るかは場合によりけりだと思いますが、EZ-USBのマニュアルはUSBの規格についての入門書的な側面もあるのでまあ本で買ったと思えば納得できる範囲です。

Linux2.6ビルド&2.4も再コンパイル

先週から、そろそろLinux Kernel 2.6の導入に手を出そうかなともくろみつつ動き始めていました。

で、一応コンパイルはしたものの、モジュール周りの変更があるは、先日導入したばかりのnvidiaのモジュールが2.6では動かないは結構一筋縄ではいかなかったです。まだnvidiaに関しては対策中。

ところが2.6のビルド中にカーネルコンフィグの設定をいじっているときに、HDDのDMA設定についての項目でふと手が止まりました。

わたしは現在2.4系のカーネルを使用しているのですが、ATA133対応のHDDドライブを使用していて、マザーボードIDEコントローラも対応しているにもかかわらず、DMA設定ができなかったのです。ところが今回コンフィグしながら、「CONFIG_BLK_DEV_VIA82CXXX」の項目をチェックした記憶がないことに気がついたのです。

もしかして……。と思いつつチェックしてみると、確かに2.4の現役カーネルの設定に上記項目は漏れています。まさかこんな定番ミスを犯していたとは。早速2.4版も再コンパイルし、ついでにdebパッケージ化にも挑戦してみたところ、起動時に自動でDMAモードに設定されました。

hdbenchで計測してみたところReadが41775KB/s、Writeが37854KB/s。あー、間違いなくこれまでここがボトルネックになってたな。