酔漢電子工作手帳

2008-08-09

EzPortの制御シーケンス

| 09:10 | EzPortの制御シーケンス - 酔漢電子工作手帳 を含むブックマーク はてなブックマーク - EzPortの制御シーケンス - 酔漢電子工作手帳

EzPortを調べていますが、縛りがきついです。

  • Configurationレジスタはリセット後、1度しか書いてはいけない
  • Configurationレジスタではクロックデバイダの値を指定するが、クロックはシステムクロックなのでPLLの設定を誰かが行っていると、正しい値が変わる
  • そもそもEzPortのConfigurationレジスタとCFMCLKDレジスタは同じなのか。
    • Users Manualの21.6節には(EzPortのコンフィグレーションではなく)CFMCLKDレジスタをセットしろと書いてある
    • しかし、EzPortからはセットできない。

CFMCLKDは、マニュアルの間違い*1としても、リセットやPLLの縛りはきついです。結局、

  1. PDコマンドでEzPortからチップをリセットし
  2. WSRDコマンドでコンフィグレーション・レジスタに値を書く

というのが、唯一の許されるシーケンスです。PLLの初期値を調べなきゃ

CVSにアップロード

| 18:38 | CVSにアップロード - 酔漢電子工作手帳 を含むブックマーク はてなブックマーク - CVSにアップロード - 酔漢電子工作手帳

EzPortに対応しようかなぁとAsagaoのコードを眺めていましたが、作業基盤があまりにも不安定すぎるのでCVSにアップロードしました。

その後、コードをリファクタリングしつつ、以前指摘された、プログラム中にUIFをいじれる問題を修正しました。現在、Release-1_1_0のタグを打っているのが最新コードです。

*1:と仮定するしかない

トラックバック - http://ecrafts.g.hatena.ne.jp/suikan/20080809

2008-08-08

EzPortによる内蔵フラッシュへの書き込み

| 21:28 | EzPortによる内蔵フラッシュへの書き込み - 酔漢電子工作手帳 を含むブックマーク はてなブックマーク - EzPortによる内蔵フラッシュへの書き込み - 酔漢電子工作手帳

MCF52233には、EzPortという内蔵フラッシュをSPI FLASHとして見せるエミュレーション回路があります。

EzPort 機能を利用すれば、内蔵フラッシュ ROM を仮想的な SPI EEPROM として扱うことができます。

2008-08-01 - シンセ・アンプラグド

シンセ・アンプラグドを読むまで気づきませんでした。改めて、調べてみると、EzPortのFlashのコマンド体系はSTのM25P04によく似ています。相違点は以下の通り

コマンドM25P04EzPort
RDID製造者IDと製品IDを確認できるコマンド未実装
WRSRステータス・レジスタへの書き込みコンフィグレーション・レジスタへの書き込み(WRCR)
SE64Kブロックの消去2Kセクターの消去
DPディープ・パワー・ダウンプロセッサのリセット

RDIDコマンドが無いのがとても痛いです。ID確認は安全な作業の基本なのですが。特に、MCF52233では、WRCR命令でのCFM_CLKDレジスタへの適切な値の設定が非常に大事で、間違えると壊れるとReference Manualにははっきり書かれています。

背筋がよく冷える点で夏向きかもしれませんが、IC設計に携わるかたがたは、くだらないことで手を抜かないようにしてもらいたいものです。

ともあれ、あさがおの改造で書き込みは可能に思えます。

トラックバック - http://ecrafts.g.hatena.ne.jp/suikan/20080808

2008-07-29

Interface誌のColdfire基板

| 12:36 | Interface誌のColdfire基板 - 酔漢電子工作手帳 を含むブックマーク はてなブックマーク - Interface誌のColdfire基板 - 酔漢電子工作手帳

Interface誌の付録はColdfire基板です。最近のCQ出版は付録が多すぎるだろうという批判もありますが、個人的には

イヤッホーーーーーッ!

って気分ですね。68k万歳。コタツにもぐってMC68000の和文マニュアル初版を読みふけったのも、もう四半世紀前ですか。

基板は64pin DIPと同じフットプリントになっており、これは記事でも強調されているとおり、初代MC68000のフットプリントです。どこまでおっさん達をニヤニヤさせる気でしょうか。基板に搭載されているM52233はROM 256kB、RAM 32kBです。総メモリでいうと、初代マッキントッシュ並みのシステムですよ。

記事のほうは、Coldfireの概略と、付録に焼きこまれているCライクなインタープリターの解説が主体です。なお、同じく焼きこまれているgdbの解説もありました。筆者は横田さん。TOPPERS/JSP for ColdfireやTINETの移植をされた方ですね。

来月号では付録基板用TOPPERS/JSPが披露されるとのこと。楽しみです。付録基板はブレッド・ボードとの相性のよさも強調されています。なにか用意しておこうかな。

トラックバック - http://ecrafts.g.hatena.ne.jp/suikan/20080729

2008-06-29

割り込み制御

| 17:37 | 割り込み制御 - 酔漢電子工作手帳 を含むブックマーク はてなブックマーク - 割り込み制御 - 酔漢電子工作手帳

昨日留守から帰って来た。早速掲示板を覗くが、コードに関しては誰も修正をかけていなかった。ちょっとがっかりするが、たぶん私のステアリングが悪い。気軽にコードを触れる雰囲気を、無意識のうちに壊しているのだろう。

割り込みの制御について考えていたことを書き込むTOPPERS/JSPCPUロック、アンロック、およびその検出はカーネル管理外割り込みにさえ目を瞑れば簡単。

割り込みの出口処理でえらいことに気づいた。CORTEX-M3の全割り込み禁止状態をCPUロック状態に割り当てるとすると、CORTEX-M3は、割り込みハンドラへの以降直後ではCPUロック状態にない。こういうプロセッサはいくつかあるが、出口処理で気をつけないと、大変なことになる。

トラックバック - http://ecrafts.g.hatena.ne.jp/suikan/20080629

2008-06-24

ldスクリプト

| 17:43 | ldスクリプト - 酔漢電子工作手帳 を含むブックマーク はてなブックマーク - ldスクリプト - 酔漢電子工作手帳

ldスクリプトを書く。

m68kのスクリプトは、えらくあっさりしていて、MEMORYコマンドすらない。スタート番地はMakefile.configで宣言し、それがリンカのコマンドラインに与えられるという仕組み。でかいメモリのシステムはそれでも良いが、STM32F103VBのような小メモリシステムでは、メモリが溢れたときに警告が出ないと困る。なので、MEMORYコマンドを追加して領域を明示的に宣言した。

明示するだけだと、RAMの初期化ができないので、LMAとVMAの宣言もする。これはstart.Sがらみ。

ビルドしてエラーが無いことを確認。

C++に関しては後でいいやとおもったが、後に回すほど面倒でもないのでついでに対応する。

トラックバック - http://ecrafts.g.hatena.ne.jp/suikan/20080624