2011年7月2日土曜日

LPCXpressoのライセンス登録方法(LPCXpresso週間)

概要

LPCXpressoは低価格(3千円程度)で購入できることから、中学生、高校生など、エンジニアの卵達にも教材としてもお勧めしたい一品です。

このIDEですが、単にインストールした状態では8Kバイトを超えるコードを生成実行することはできません。例えば、mbedに搭載されているプロセッサLPC1768の場合、512KBのフラッシュロムを持ちますから、単純計算で1/64しか楽しめないのです。

しかし、ライセンス登録するだけで128Kバイトまでのコードを生成実行することができるようになります。
先の例ですと1/2まで楽しめるようになるわけです。

エンジニアの卵達の中には、英語がネックになってライセンス登録を躊躇しているかもしれません。
ということで、今回はライセンスを取って128KBまでのコードに対応できるようにしましょう。

初回起動時のメッセージ

初回起動時、ライセンス登録が行われていない事を示すダイアログが表示されます。


これには
  • 未登録LPCXpressoは評価目的のみで使用可能であること。
  • 登録とアクティベートによって上記制限が取り除かれること。
と書かれています。

ライセンスの登録方法

まずはシリアル番号を生成します。

「Help(ヘルプ)」メニューから「Product activation(製品活性化)」を選択します。
そこにある「Create Serial number and Activate...(シリアル番号の生成と活性化)」を実行します。


以下のようなダイアログが表示されます。
ここに表示されたSerial number(シリアル番号)は、LPCXpresso IDEが自動的に生成したシリアル番号です。
このシリアル番号を選択してCtrl + Cなどで、クリップボードにコピーしておきます。


Copy Serial Number to clipboard(クリップボードへシリアル番号をコピーする)にチェックを付けておけばOKボタンを押した時にクリップボードにシリアル番号を自動的にコピーしてくれます。

次にcode_redのサイトにログインします。


ログイン後にメニューにある「My Registrations(登録)」を選択します。

「Enter serial number here(シリアル番号をここに入力)」と表示されています。
ここに先ほどコピーしたシリアル番号をペーストします。

シリアル番号をペーストしたら「Send me my activation code(活性化コードを送る)」ボタンを押します。


code_redのサイトに登録してあるメールアカウントに活性化コードが送信されます。


英文のメールですので、日本国内のメールサービスの中には誤ってスパムメールとして識別されてしまうかもしれません。


メールの中にある「Your activation code is:(あなたの活性化コードは:)」の下に書いてある文字列が活性化コードです。

「Help(ヘルプ)」から「Product activation(製品活性化)」を選択し、今度は「Enter Activation code(活性化コードを入力)」を実行します。


ダイアログが表示されますので、先ほどコピーした活性化コードをペーストして下さい。


活性化コードを入力してOKボタンを押すと製品活性化が完了します。


以上でめでたく128KBまでのコード生成とデバッグができるようになりました。

まとめ

今回は、エンジニアの卵達にも気軽に使ってほしいとの思いで、ライセンス登録について触れてみました。

2011年6月25日土曜日

LPCXpressoの放置を防ぐお勧め取り組み方法(LPCXpresso週間)

購入後に放置してしまいがちな評価ボード

評価ボードの類は書籍などと同様で取り組むための時間の捻出が欠かせません。
購入したものの部品箱の奥底に埋もれてしまう事はよくあることです。

ありそうな理由を挙げてみましょう。
  • 本当に忙しくて時間を捻出できない。(それって本当?)
  • 購入した時点で興味を失ってしまった。(何がしたかったの?)
  • LEDをチカチカさせた後、どうして良いかわからない。(いかにもありそう。)
  • XXXを試したら興味を失ってしまった。(そのXXXを試す事が目的なら良いけど・・・。)

流石に沢山の人が毎年同じようなループに陥るのは地球資源にも優しくありません。
まず、上記のようになってしまう原因を探ってみましょう。

自分のためになる何かを考える

マイコン評価ボードは「そのマイコンを使ってみる」というところの主眼を置くと、ほとんどの場合触らなくなってしまいます。その触らなくなる瞬間までに何かが得られれば良いのですが、用意された環境を実行して終わりになってしまっては勿体無い限りです。

そこで、評価ボードを使うということに必然性のある理由を追加します。
例を挙げてみましょう。
  • この評価ボードを使ってネットワーク機能の実装方法を習得しよう。
  • この評価ボードを使ってUSBに関する理解を深めよう。
  • この評価ボードを使ってCANに関する理解を深めよう。
  • この評価ボードを使ってOSをポーティングし、アセンブラやOSに関する理解を深めよう。
「この評価ボードに搭載されたXXXというマイコンを使う」というだけでは漠然とした目的になってしまいがちです。これでは忙しい毎日の生活の中で時間の捻出に繋がる動機を生み出せません。

そこで、各自の「最終的に実現したいこと(学習のターゲット)」を要素として加えることで具体的な目標にします。
これにより時間の捻出をしようという動機に繋げるという仕組みです。


例えば、上記は「FATファイルシステムの動作を確かめればそれで良い。」という方向で使用した例です。(ぐちゃぐちゃですが、きれいに実装することが目的ではないので気にしません。)

LPCXpressoがなぜお勧めなの?

単に「マイコンを使う」という視点で見た場合、もっと他に楽しいボードが沢山ありそうです。
LPCXpressoをお勧めするのは、
  • 「具体的な目標」に適切なボードが存在。
  • 開発環境のセットアップに比較的容易。
  • 実現したいことに対する投資としては安価。
  • 可搬性に優れた設計。
  • ターゲット回路構成がシンプル。
など妥当な理由が存在するからです。


例えばLPCXpressoの場合であれば、以下のような選択肢が考えられます。

最終的に実現したいこと
(学習のターゲット)
ボード
ネットワークLPC1769 LPCXpresso
USBLPC11U14 LPCXpresso
CANLPC11C24 LPCXpresso
OSLPCXpresso全般

組み込みエンジニアとしてネットワークやUSB、そしてOSに関する学習は外したくないところです。
車載系装置のエンジニアならばCANも加わることでしょう。

こんな風に、最終的に実現したいことを学習のターゲットとして設定し、LPCXpressoを購入することで、学習への第1段階に到達することができるのがLPCXpressoをお勧めする1つの理由です。

もし、ご自宅で眠っているLPCXpressoがあれば、視点を変えて再度取り組んでみませんか?
次回以降は環境の構築と具体的な学習への取り組みについて触れて行こうと思います。

2011年6月24日金曜日

LPCXpressoを選ぶ(LPCXpresso週間)

色々あるけど全部一緒でしょ?

前回の記事で現状で6つのLPCXpressoが存在することをお伝えしました。
実は、単に搭載されているプロセッサが異なるだけというわけではありません。


モデルによって搭載されている外部デバイスが異なったり、興味深い工夫が施されていたりします。今回はそれらを1つずつ見て行くことにしましょう。

LPC1769 LPCXpresso



現在のラインナップでの兄貴分と言えるのがLPC1769 LPCXpressoです。
このボードにはイーサネット物理層デバイスも搭載されています。
要するにRJ-45コネクタを外部に接続するだけでネットワーク機能を試す事ができます。
搭載されているデバイスはSMSCのLAN8720Aです。
ボード上にはネットワーク動作確認用のLEDも搭載されています。

回路図から少し抜粋してみます。


LAN8720AとLPC1769との間は、RMII(Reduced Media Independent Interface)で接続されています。RMIIは、主にMII(Media Independent Interface)の接続端子数を削減するために作られたものです。この辺りは興味深い事が沢山ありますので、色々と調べてみると面白そうです。

また、EEPROMも搭載されています。


I2Cペリフェラルを使ってみたい人は、このボード1つ購入するだけで試す事ができます。

LPC1343 LPCXpresso



幾つかのデバイスが搭載されていたLPC1769 LPCXpressoと対象的なのがLPC1343 LPCXpressoです。
ターゲット側の回路図を見てみましょう。


デバイスに接続されているのはLEDのみです。


LPC1227 LPCXpresso



LPC1227 LPCXpressoはパッと見ると何も面白くないのですが、中々興味深い工夫が施されています。
その部分を回路図から抜粋します。


低消費電力アプリケーション向けに意図されている事もあって、この評価ボードで簡単に消費電力を計測できるように意図されています。

チカチカさせたい人のためのLEDももちろんあります。


LPC11C24 LPCXpresso



LPC11C24 LPCXpressoのターゲットにはCANが実装されています。
そうです。LPC11C24のCはCANのCなんです。


この評価ボードでお手軽にCANが試せると言うわけです。

LPC11U14 LPCXpresso



LPC11C24 LPCXpressoのCはCANのCでした。
このLPC11U14 LPCXpressoに搭載されているデバイス、LPC11U14のUは何でしょうか?
答えは・・・


USBなのです。
LPC11U14 LPCXpressoにはターゲット側にUSBコネクタまでが搭載されています。
小型アプリケーションをプロセッサで実現したい時にUSBデバイスとして扱いたい事があります。
そんな実験にもってこいなのがLPC11U14 LPCXpressoというわけです。

LPC11U14 LPCXpressoの回路図にも低消費電力アプリケーション向けを意識した工夫を見つける事ができます。


LPC1114 LPCXpresso



LPC1114 LPCXpressoはC(CAN)もU(USB)もない普通のLPC1100シリーズのデバイスです。
回路図にはLPC1343 LPCXpressoとの互換性に関する配慮がされています。


今回のまとめ

一口にLPCXpressoと言っても、ご覧の通りデバイスの特徴に合わせてちょっとした工夫が施されているのがLPCXpresso評価基板の特徴です。(LPC1343 LPCXpressoやLPC1114 LPCXpressoでさえも、際立った特徴を持たせないのが特徴だったりします。)

LPCXpressoには沢山の種類があってどれを選んで良いのかわからなくなりそうですが、実際にやってみたい事や評価してみたい事を思い浮かべて回路図を眺めてみると、「これかな?」という候補が浮かんできたりします。


是非みなさんも「これがやってみたい!」ということを頭に思い浮かべて、モデル選択を楽しんでみませんか?
全ての回路図はボードを設計されているEmbedded Artists社のサイトからダウンロードすることができます。

参考までに簡単な比較表を用意しました。

名称搭載プロセッサシリーズSRAM[KB]Flash[KB]最大クロック周波数[MHz]デバッグLED
LPC1114 LPCXpressoLPC1114Cortex-M083250PIO0_7
LPC11U14 LPCXpressoLPC11U14Cortex-M063250PIO0_7
LPC11U24 LPCXpressoLPC1124Cortex-M083250PIO0_7
LPC1227 LPCXpressoLPC1227Cortex-M0812845PIO0_7
LPC1343 LPCXpressoLPC1343Cortex-M383272PIO0_7
LPC1769 LPCXpressoLPC1769Cortex-M364512120PIO0_22

2011年6月22日水曜日

LPCXpressoを皆でいじり倒そう!(LPCXpresso週間)

LPCXpresso週間のイントロダクション

ここ最近Embedded Artists社のLPCXpressoシリーズの動きが活発です。
気付いたら6つものプロセッサから選択できるようになっていました。


そこでCuBeatSystemsとしても何かやろうということで、「LPCXpressoを皆でいじり倒そう!」と題してLPCXpresso週間を始めることにしました。
  • 8ビット、16ビットマイコンを使っているけれど、ARMマイコンにも興味がある。
  • とりあえずARMマイコンを使っているけれど、もっと中身を知りたい。
  • その他。
色々な方に楽しんで頂けるようなメニュー構成で進めたいと思います。

LPCXpressoって何?

事前知識の無い方に「LPCXpresso」と言っても何が何だかですので、簡単に特徴を整理しておきましょう。
  • NXPセミコンダクターズ社のARMマイコンが搭載された評価ボードです。
  • デバッガとターゲットが1つのコンパクトな基板になっています。(持ち運びが便利です。)
  • パソコンのUSBポートに接続するだけで使えます。(どこでもデバッグが楽しめます。)
  • 国内でも秋月電子通商、マルツパーツ館などから容易に購入できます。
  • 評価ボードの部類ではかなり安いです。(3000円前後)
  • ダウンロード可能な開発環境が便利です。(Windows, Linuxで使えます。)
  • お手元のお気に入りな開発環境も使用可能です。
  • FreeRTOSやTOPPERS/ASPなどの動作も可能。
近年、多くのマイコン評価ボードが出現しています。
その中でも、ARM Cortex-M0やARM Cortex-M3を試すならLPCXpressoはかなりお勧めの選択肢です。

インチキ・セレクション・マップ

今回は私の体験を基にしたインチキなセレクション・マップを作ってみました。


LPCXpressoやmbedが手元にあると「ちょっと何かを試したい時」に便利です。
事前評価などでいちいち基板設計する必要もありません。
また、価格も3000円前後と安く、気軽に様々な事を試す事ができるのも嬉しいポイントです。

次回以降はその魅力に触れながら様々な活用方法について触れていきたいと思います。

2011年5月28日土曜日

野良管理していたソフトウェアをsourceforgeでホスティングする事にしました。

先日まで野良管理していたソフトウェアですが、sourceforgeで正式に(?)ホスティングすることにしました。バージョン管理はgitを採用しています。


Natural Tiny Shell (NT-Shell)

以下のウェブページからアクセス可能です。


H8/3069F writer for KOZOS (kz_h8write)

以下のウェブページからアクセス可能です。


ドキュメントなどもこれから充実させていく予定です。

2011年5月26日木曜日

H8/3069F writer for KOZOS - kz_h8write 「h8writeリベンジ解決編」

概要


先日の記事で勢いよく「改良しました!」と宣言したh8writeですが、やっぱり書き込みに失敗するという事がわかりました。
そもそも真の原因を掴めないまま改良したと言っても、何を改良したのか意味がわかりません。
自分でもそんな突っ込みを入れたくなるのですが、その日はグングン快調に書けていた上、オリジナルで実行するとやっぱり書けないという状態で、完全に勘違いモードに突入していました。


既に行く先の見えているH8/3069Fに肩入れするつもりはなかったのですが、KOZOS本(と著者!)が楽しくて仕方がないのと、宣言して出来なかった悔しさから本格的に問題を追及すべく、データーシートを片手にh8writeのソースコードを本格レビューしていくことにしました。

判明した事実


データーシートのプログラミングシーケンスを数分眺めていて、すぐに気付いたことがあります。

先日までは、プログラミングシーケンスなど気にも留めていなかったのです。
なぜなら10年もの間、皆さんが使い倒していて、正常に動いていたからです。
そこにあえて突っ込みを入れる必要はないだろうと思っていたのですが、ここが肝心な部分でした。

問題となっているのはホスト側のボーレートをマイコンが自動検出するメカニズムの部分です。

まずはデーターシートを見てみましょう。


このシーケンスで重要なのはホストからブートプログラムに送られる0x00です。

図にもあるように「MAX30回」です。
この意味が重要です。
決して、「いつも30回」ではありません。

それでは、h8write.cを見てみます。


関連する定義は以下のようになっています。


上記でお分かりのとおり、「最大30回」ではなく、「常に30回」送信しています。
これの何がいけないのでしょう?

答えはデーターシートに書いてあります。


要するにブートローダが合わせ込み完了を通知したら、次の状態に遷移しているのです。
では、遷移した先の問い合わせ選択コマンドとは何なのか?見てみましょう。


デバイスに関する様々な情報をホストが問い合わせするためのコマンドを受け付ける状態のようです。

要するに既にブートプログラム側は「ビットレート合わせ込みシーケンス完了」を宣言し、全く異なるシーケンスを持つ次の状態に遷移しようとているのに、ホスト側がだらだらとビットレート合わせ込み用データをまだまだ垂れ流しているというわけです。

これはいけません。

本来は、ブートプログラムから「ビットレート合わせ込み完了」が来た時点で、以下の図の赤で囲ったシーケンスを実行しなくてはならないからです。
だらだら0x00を送っているということは、本来確認用コード0x55を送るべきところで、0x00を送っている事を意味します。


オリジナルのh8writeの出力をもう一度確認してみます。


当然ながら実装の通り、ブートローダから「合わせ込み完了」が返ってきているにも関わらず、どんどん0x00を送出しています。


上記例は”たまたま”うまく動作している時の例です。
”たまたま”の根拠は先ほど挙げたデータシートの通りです。
明らかにデータシートで示唆されたシーケンスとは異なる事がわかります。

次に示すのは互いのシーケンスが一致していない事による失敗の例です。
失敗する時と明らかなタイミングの違いがあるかと思ったのですが、そのようには見えないのが不思議です。紙一重で動いていると言う事なのでしょうか?


ここで、ふと疑問に思われる事でしょう。
「なぜ皆はうまくいっているんだ?」
システムではよくある話ですが、おそらく偶然動いているだけです。

これにはいくつものタイミングが絡んでいます。
  • ソフトウェアが処理を行うまでの時間。
  • シリアルポートドライバが処理を開始するまでの時間。
  • カーネルが処理を開始するまでの時間。
  • H8側のブートプログラムが合わせ込みを完了するまでの時間。
  • H8側のブートプログラムが次の状態へ遷移するまでの時間。
特に、近年はレガシーポートが姿を消しています。
USBの先にシリアルポートデバイスが接続されるような場合には更にタイミングが従来より異なるでしょう。

まさに今回のh8writeの問題はここに原因がありました。
従来は偶然書けていたのです。

h8writer for KOZOS - kz_h8write


h8writeは長年沢山の方々がお使いになっていて実績という意味では申し分ないのですが、実装が美しくありません。
車輪の再開発をするつもりはないのですが、頭の整理も兼ねて綺麗に実装しなおすことにしました。

プログラムは「KOZOS本と一緒に使う」という意味でkz_h8writeと名付けました。

kz_h8writeは以下の要素から構成されています。
  • motモジュール(motファイルを読み込むモジュールです。)
  • serialモジュール(シリアルポートを制御するモジュールです。)
  • kz_h8write(全体の制御を行うモジュールです。)
オリジナルh8writeの実装は各機能が癒着気味で修正の影響が見えにくくなっていました。
また、失敗した時に何の処理で失敗したのか見当がつきにくかった問題もあります。

問題のビットレート合わせ込みは以下のように実装しました。
データーシートにあるように計測用マーカーを送信して、ブートプログラムからの返答を確認した時点でこちらも応答を返すという手順にしてあります。


実際のやりとりもロジックアナライザで観察してみました。
ホストからのビットレート合わせ込み用コード(0x00)に対して3回目には応答が返ってきています。


kz_h8writeは応答があった時点でデータシート通り、確認用のコード(0x55)を送出しH8から返答(0xE6)を受けています。


これでホストとH8は合わせ込まれたビットレートで正しく通信できるわけです。

kz_h8writeコマンドツールにはmotファイル名、クロック周波数[MHz]、シリアルポート名を与えて使用します。

kz_h8write kzload.mot 20 /dev/ttyUSB0

各シーケンスが実行されていく様子を確認する事ができます。

=======================================
 KOZOS H8/3069F Flash Writer.          
 Copyright(C) 2011 Shinichiro Nakamura 
=======================================
Bitrate sequence: Done.
Inquiry device: Done.
Select device: Done.
Inquiry clock mode: Done.
Select clock mode: Done.
Select bitrate: Done.
Write erase: Done.
Complete.

全ての作業が完了した時には「Complete.」と表示が行われます。

今回の実装で複数の環境で昨日今日と試していますが、期待通りに動いています。
※まれに電源投入後1回目は失敗するのですが、もう一度実行するとうまくいきます。

前回と異なるのは明らかにおかしい箇所を修正したバージョンだということです。
原因(の1つ)を解明して修正していますので、先日の「何だかわからないけど動くようになりました!」とは意味が違います。

このkz_h8writeを暫く使ってみようと思っています。

ソースコード


LinuxとWindows上で動作させることができます。
ソースコード:ここからダウンロードして下さい。

(2011/05/28追記)
http://sourceforge.jp/projects/kz-h8write/で管理することにしました。
最新版は上記サイトからダウンロードして下さい。

ライセンス


MITライセンスを適用します。
商用、非商用を問わず自由にお使い頂けます。

関連リンク


2011年5月23日月曜日

Linux上でH8/3069の書き込みに失敗する件 (h8write for KOZOSを実装しました)

(2011/05/25追記)
この記事で取り上げられているh8write for KOZOSの対策は本質的な解決策を示していません。
後日取り上げる別の記事で「リベンジ解決編」をお届けする予定です。
暫くお待ち下さい。

(2011/05/26追記)
この投稿記事で取り上げられている内容は本質的な解決策を示しているとは言えませんでした。
そこでH8/3069F writer for KOZOS - kz_h8write 「h8writeリベンジ解決編」を公開しました。

h8write for KOZOSって何?
h8writeはMitsuiwa Yukioさんが実装したH8書き込み用ツールです。
(ウェブ:Open SH/H8 writer)
このh8write for KOZOSは三岩さんが実装したオリジナルのh8writeの実装修正バージョンです。

主にKOZOSをLinux上で体験したい方に向けて公開します。

KOZOSとは坂井弘亮さんがフルスクラッチで設計実装されたOSで「組み込みOS自作入門」という書籍の題材にもなっているOSです。


これがかなり面白い内容で、坂井さんのオリジナリティ溢れる視点で最後まで楽しく読む事ができます。ちなみにこんな勢いで読み進める事ができます。

KOZOSについては以下のページもご覧下さい。
http://kozos.jp/kozos/

さて、本題です。

この書籍ではプラットフォームに秋月電子通商のH8/3069Fネット対応マイコンLANボードが使われています。

実は、H8がプラットフォームとして選択されていたので、敬遠していたのですが、「これはやっぱり面白い」と書籍の内容を一目見て衝動買いしてしまいました。それも、随分と前・・・。

随分と前に購入しておきながら、なぜ触れなかったかと言うと、書き込みツールであるh8writeで書き込みができなかったからなのです。

私は個人的に開発環境にUbuntuを好きで利用しています。Windowsの端末環境では開発がスムーズに進まないからです。実際にh8writeをコンパイルして動作させてみると、稀に書き込みに成功するものの、殆ど失敗します。

私は「OSを作りたかった」わけなので、「h8writeのデバッグがしたかった」わけではありません。
プライオリティの関係から少しずつ放置状態になっていました。
(皆さんの中にもこういう方はきっといるはず。)

ふと思い立ちh8writeのソースコードを調べてみたところ、実装があまり美しいとは言えません。

シリアルポート周辺の実装を見るとなんだかごちゃごちゃしています。
そして、今回問題となっているのはシリアルポート周辺処理です。

問題を後々整理できるようにと、第1段階としてシリアルポート周辺処理を整理することにしました。
また、この過程で気になる実装を修正して完成したのがserial.cとserial.hです。

このserial.cとserial.hにシリアルポートの処理を任せた実装が私の改良実装版です。
そして、「ダメ元」で試してみたところ、かなりの確率で書き込みに成功することがわかりました。

そこで、この実装をh8write for KOZOSと名付け、早々に公開することにしました。

どうしてオリジナルではいけないの?

オリジナルではいけないということはありません。
このh8write for KOZOSはオリジナルのh8writeで書き込みに失敗する方のためのツールです。

近年、レガシーポートがコンピュータから姿を消し、結果的に当該ボードにはUSB-シリアル変換ケーブルを使って書き込む事が多くなっているように思います。

KOZOSの書籍で扱っているH8は3069です。
実は、オリジナルのh8writeでは、USB-シリアル変換ケーブルを使うケースにおいて、一部の環境で書き込めない問題が発生しています。

実際に調べてみるとH8/3069の書き込み時には、ボーレート9600でCPU情報を確認した後、COMポートを一度クローズし、ボーレート19200で再オープンして書き込みを行っている事がわかりました。

オリジナルのコードではこのボーレートを指定しながらのオープン・クローズ処理周辺の実装に問題があるように見えました。

と言っても、ツールの実装当時から見ると、カーネル側の処理も随分変わりましたし、USB-シリアル変換ケーブルに搭載されたデバイスのドライバの実装の甘さも関連があるかもしれません。

そこでシリアルポートの処理を中心に実装を試験的に見直し、書き込みに失敗する幾つかの環境で試行してみたところ、うまく書き込めることがわかりました。

ダウンロード

こちらからソースコードをダウンロードして下さい。
簡単なMakefile付きです。

Ubuntu 10.10上でのみコンパイルと動作を確認しています。
その他の環境での動作確認等が出来ましたら、是非御報告頂ければ幸いです。

(2011/05/26追記)
この投稿記事で取り上げられている内容は本質的な解決策を示しているとは言えませんでした。
そこでH8/3069F writer for KOZOS - kz_h8write 「h8writeリベンジ解決編」を公開しました。

何が違うの?(実装面)

  • シリアルポートの実装を分離しました。
  • シリアルポートの実装を見直しました。
  • 関数名を一部変更しました。
  • Windowsに対する実装サポートはバッサリ削除してあります。

何が違うの?(実動作)

うまく動作することがわかったら、どんな風に実動作が異なるのか知りたくなります。


オリジナルのh8writeを使って書き込みに失敗する環境を用意し、観察してみます。
確認したのは「最初にH8にデータを送信する箇所」です。

NG: オリジナルのh8write


OK: 改良実装版h8write


最初に送信するデータはボーレート9600で送信されます。
なんだか、最後の方が異なります。
もう一度書いておきますが、シリアル周辺の実装を修正しただけです。


続くパケットではプロセッサの種別を確認するのですが、オリジナルの実装ではこの時点で動作していないことがわかりました。

まとめ

h8writeの実装には気になる点がいくつもあります。
今回は深追いをせずにシリアル周辺の実装のみを修正して効果を確かめました。

今のところノートパソコン、デスクトップに作った2つの環境で書き込みが出来ています。
実は、この2つの環境はオリジナルのh8writeでは書き込みに失敗します。

本来であれば、もう少し丁寧に追い込まなければならない点が残っています。
しかし、かなり多くの方が「書き込めない」で困っている様子(私自身がそう)でしたので、早めに公開することにしました。

皆さんのh8writeの問題が解決し、KOZOSを楽しんで頂ければ幸いです。

(検証に御協力頂ける方)Linuxディストリビューション名と使ったUSB-シリアル変換ケーブルなどもろもろの情報と共にhttp://groups.google.com/group/kozos_tomonokaiまで動作結果を御連絡下さい。

(2011/05/26追記)
この投稿記事で取り上げられている内容は本質的な解決策を示しているとは言えませんでした。
そこでH8/3069F writer for KOZOS - kz_h8write 「h8writeリベンジ解決編」を公開しました。

ライセンス等
  • ライセンスはオリジナルに従います。
  • 但し、serial.cとserial.hをh8write.cと切り離して用いる場合、MITライセンスを適用します。
  • 使用した如何なる結果についても、当方は責任を持ちません。