SSブログ

HCS08の本が出たらしい - ただし海外 [HCS08]このエントリーを含むはてなブックマーク#

HCS08 Unleashed: Designer's Guide to the Hcs08 Microcontrollers

HCS08 Unleashed: Designer's Guide to the Hcs08 Microcontrollers

  • 作者: Fabio Pereira
  • 出版社/メーカー: Booksurge Llc
  • 発売日: 2007/11/13
  • メディア: ペーパーバック

(たぶん)初のHCS08の本が出たようです。 ただし、英語版。 U.S.のamazon.comでは、取り扱っていますが、 amazon.co.jpでは、まだ取り扱っていない模様です。

amazon.comの情報によると、発行は今年の三月だそうですが、 amazon.co.jpの情報では、昨年の十一月だそうです。 なんで、食い違う?

さあ、日本版はどうする?

2008-07-06 追記

amazon.co.jpでも、取り扱いが始まりました。


nice!(0)  コメント(18)  トラックバック(0)  このエントリーを含むはてなブックマーク#

nice! 0

コメント 18

k_t

うう、英語なんですね。
試しにクリックしてみたら・・・

> 言語 英語, 英語, 英語

そんなに連呼しなくても・・・

by k_t (2008-06-25 15:42) 

noritan

是非、「日本語版」じゃなく「日本版」をやりましょう。

> 言語 大分弁、一関弁、広島弁

で、どうでしょう。

by noritan (2008-06-25 17:00) 

Tsuneo

$23.99とまあ手頃なんでしょうが、Amazon.com で内容見本(Excerpt)を見て買う気が失せてしまいました。今時Computer's History やディスクリートロジックから説き起こすのは勘弁してほしい。

こんなの和訳するより、このあたりで作っちゃった方が良いものができるのでは。
by Tsuneo (2008-06-25 23:17) 

noritan

> 内容見本(Excerpt)を見て
なるほど、これは「HCS08マニュアル」の域を超えていないみたいですね。「デザイナーズ・ガイド」というなら、マニュアルの範囲外の情報も入れてくれないと、興味を引かれません。

# 私も"Computer's History"なんて章があるとは思いませんでした。

> こんなの和訳するより、このあたりで作っちゃった方が
はい、そういう意味での「日本語版」ではない「日本版」です。

by noritan (2008-06-26 08:45) 

hamayan

> # 私も"Computer's History"なんて章があるとは思いませんでした。

まあまあ、400ページもあるこの本の、ほんの3ページなんですから我慢してやっても良いのではと思えます。いきなり重い話から始まると、結構読むのきついですし。
http://www.sctec.com.br/index.php?option=com_content&task=view&id=109

結構まじめに、みっちり解説しているじゃないですか。
入門書であり、参考書としても利用できるのではないかと思います。まあ読んでいないのでなんとも言えないのですが。(と言うか、英語は読めん)

著者のこんな書き込みも有りますね。
http://forums.freescale.com/freescale/board/message?board.id=8BITCOMM&message.id=9758

日本も、装帳に凝らなくても良いので、安くて中身のぎっしり詰まった本を沢山出版できれば良いのですけれどね。多分日本語版を発売すると5000円位になるんじゃないでしょうか。

by hamayan (2008-06-27 17:38) 

Tsuneo

> 入門書であり、参考書としても利用できるのではないかと思います。

いやあ、この目次だと、フリスクのマニュアルにちょっとした説明を加えた解説書で、入門書でも、参考書でも無いと思いますね。マニュアルが手元にあれば、8割方は削除しても良い感じです。

入門書というのは今、盛んに出版されている、さあ作ってみましょう的なものですね。
んで、参考書というのは、MCUのコアから周辺まで、その背景から実装を含めてじっくりと読ませるものでしょう。(あまり売れそうにない :-))

例えば I2Cだと
- プロトコールについて一通り解説した後、
- I2Cエンジンのステータス変化とバス・シーケンスの対応を割込みタイミングを含めてきちんと図示し、
- 割込みでステートマシーンをたたく実装について解説し、
- せめてシリアルEEPROMとマスター・スレーブ通信のコードをのせて解説し、
- 更にこれらの実装でどこに嵌りやすいかを指摘し、どう回避するかを示唆する。
くらいはやってくれないと。

例えばマイクロチップのEEPROMはパワーオンでよくこけるので、9クロックリセットは欠かせないとか :-)

Tsuneo
by Tsuneo (2008-06-28 09:19) 

hamayan

私の考えるマイコンの入門書は、初めて使う人が、取り敢えず立ち上げが出来る程度のガイドであれば良いと思うんですよね。
例えて言うならば、船が東京湾を出るまではパイロットが先導して、相模湾に出てしまえば後は各々の目的地に向かって勝手に行くでしょう。
実際私の場合で言えば、他のマイコンで経験を積んでいたとしても、この部分は必ず戸惑いますし。

「さあ作ってみましょう」と言った本は、範疇としては「電子工作本」ではないかと。

実際のところ内容に関しては目次を眺めているだけなので判りません。
ただのマニュアルの焼き直しなのか、それともマニュアルを著者が独自の言葉で理解し易く書いているのか。

ただ、目次を眺めている限り、ポイントは押さえている様に思えます。
例えばC言語で開発すると言っても実際にはさまざまな依存性を考慮しないとより深くマイコンを使う事が出来ない訳ですが、
2章ではアーキテクチャの解説
3章ではIDEの使い方
4章ではC言語の解説、特に4.2章以降では開発環境固有に触れている様に見受けられます。
5章以降ではハードウエア固有の解説になっています。
5章以降は自分が必要となった時に読み返す参考のページでしょう。何時も全ての周辺機能を使う訳ではないので。

とは言え、立ち読みしないと判らないのですが。

I2Cは、、、まあそこまで行ったらI2Cの解説書が一冊できてしまうのではないかと。マイクロチップの問題も含めてもう別問題と言うか、本当に別の本にした方が良い。

I2Cのデバイスがロックしてしまうのは、I2Cの通信方式その物に問題がありますよね。デバイスのリセットが電源ONでしかできないのだから。
だからI2Cで通信中にマイコン側に問題が起きてマイコンのみリセットしてしまうと、やっぱりデバイスがロックしてしまう。

私はマイコンの初期化時にSCLを100回くらいバタバタやっていますが、でもこれマルチマスターでやるとひんしゅくですし。

by hamayan (2008-06-28 13:15) 

Tsuneo

私はむしろ、網羅的であるという点でこの本に対する評価が低いのです。ターゲットをしぼり損なっていると思うんですね。

これが問題のConputer's HistoryとBasic Conceptsの章です。
絵だけでもながめてくださいな。

http://www.amazon.com/gp/reader/1419685929/ref=sib_dp_bod_ex?ie=UTF8&p=S00G#reader-link

このイントロといい、章立てといい、まるで教科書のようです。網羅的にちょっとずつ解説はしているが、実際の問題に応用できるところまで、それぞれこのページ数でカバーできるとはとても思えません。

> 初めて使う人が、取り敢えず立ち上げが出来る程度のガイド

ということであれば、「さあ作ってみましょう」本は充分カバーしていると思います。むしろ、「さあ作ってみましょう」本は、その本によって何が達成できるのかはっきり示している点で、入門書として好ましいと思います。

> I2Cは、、、まあそこまで行ったらI2Cの解説書が一冊できてしまうのではないかと。

半分はそれを狙っているんですが。よくできたアプリケーションノートくらいの感じで。
UART,SPI,I2C さらにUSBなどは、ベースに確立した規格があって、それに基づいて周辺のエンジンが作られています。そしてファームウェア上での定型的な処理手順も確立しています。しかし、個々のMCUでエンジンの実装はそこそこ異なっています。レジスタやフラグの割付、あるいは簡略化されたステートコードなどなど。そこをどうすりあわせるかという点を解説しようというわけですね。これは個々のMCUの問題ですから、一般的なシリアルインターフェースの解説書ではなく、MCUそのものの「参考書」でやることでしょう。そうなると、いきおい規格とファームウェアの定型的手順についてもある程度は書かざるを得ない。

もうひとつは、こういったインターフェースについてまともな解説書が見あたらない、という思いもあります。


まあ、いまひとつ議論がかみ合わないのは、「入門書」とか「参考書」をどうとらえるか、どういった読者層を想定するのか、の違いのような気もします。

私は、入門書は、
- これからマイコンというものを始めよう、
- 多少は他の MCUでかじったけれど今ひとつよく分からなかったのでこのMCUで再チャレンジ
- ちょうど作りたいと思ったものに近いものが具体的に掲載されている
といった読者を想定しています。

そして参考書は、おおよそMCUとはどんなものか判っているけど、このMCUについてどこがポイントなのかが知りたい、という読者を想定しています。ポイントだけ書いても良いんですが、定型的な部分についての理解が人によってまちまちなので、定型についてもある程度は書くというスタンスです。


この辺は、私だけの思い入れかもしれません。
他の方々にも聞いてみましょう。
HCS08について、どんな本が読みたいと思いますか? (もちろん日本語で :-))

Tsuneo
by Tsuneo (2008-06-29 01:14) 

hamayan

私はアマゾンの中身検索はまったく評価できないんですね。表表紙、裏表紙に先頭からの文章すらまともに書かれていないどうでも良いページ、それに目次、まあこれは良いとして、ようやく本文に入ったと思ったらハイ終了。
これならCQでやっている各章の先頭2ページをPDFで公開している方が遥かに参考になる。

これを参考にするくらいならばどうでしょう、アマゾン.COMの方では既に書評が付いているみたいですし、そちらを参考にすると言うのは。
http://www.amazon.com/review/product/1419685929/ref=dp_top_cm_cr_acr_txt/103-2343385-4883855?_encoding=UTF8&showViewpoints=1

by hamayan (2008-06-29 03:05) 

Tsuneo

著者の好意で、この本に載っているコードサンプルがここからダウンロードできます。
http://www.sctec.com.br/content/view/107/31/

各章に3〜10個のサンプルが付いています。確かにいっぱいありますね。
いくつか見てみました。
んで、早速バグを見つけてしまいました。(実は狙ったんですが :-))
嵌るところに見事に嵌っていますね。バグレポートを出しておきました。

-----------------------------
Subject: Bug report: example of HCS08 Unleashed
To: fabio@sctec.com.br

Hello,

Congratulations for your new book.
As your book isn't sold yet by Amazon in Japan, unfortunately, we can't buy it now. But I expect they'll sell it soon, because they have already web pages for your book. So far, we are enjoying just the examples on the ScTec site, opened by your courtesy. Thanks for so many valuable examples !!

I found a minor bug on this example.
Chapter 11, example 10, main.c

// DEMO9S08QE128 - SCI example (circular buffer)

void interrupt VectorNumber_Vsci1rx isr_sci1rx(void)
{
...
flags.rx_flag = 1; // set the rx_flag (there is data into the rx buffer)
}

char read_char_sci_buffer(void)
{
...
if (rx_buf_read_pointer==rx_buf_write_pointer) flags.rx_flag = 0; // -- (a)
...
}

As above excerpt shows, flags.rx_flag is raised by the SCI ISR, isr_sci1rx(), and dropped by read_char_sci_buffer(), which is called in the main loop.

An atomicity problem arises on the (a) line.
As this line is expanded to multiple instructions by the compiler, the SCI ISR has a chance to drop in between the execution of these instructions.
Disassembly listing of this line:

105: if (rx_buf_read_pointer==rx_buf_write_pointer) flags.rx_flag = 0;
000000C2 C60000 LDA rx_buf_write_pointer
000000C5 C10000 CMP rx_buf_read_pointer
000000C8 2602 BNE *+4 ;abs = 0x00CC
000000CA 1100 BCLR 0,flags

When it occurs, flags.rx_flag is raised by the ISR, and immediately dropped by the last instruction of this line. That is, the main loop misses flags.rx_flag until next character arrives.
The chance may be rare, but certainly there.

To solve this problem, guard the (a) line from the SCI interrupt; disable the SCI interrupt around the line.

This is a typical bug, often found in cyclic buffer implementations.


One another suggestion (not a bug),
In your code, many lines compare "pointer" variables (actually index) with the array size, and reset it.
For example,

#define RX_BUF_SIZE 32 // RX buffer size = 32 characters

void interrupt VectorNumber_Vsci1rx isr_sci1rx(void)
{
...
if (rx_buf_write_pointer>=RX_BUF_SIZE) rx_buf_write_pointer = 0;

When the array size is a number of power of 2 (actually you take 32), this line is optimized as follows.

#define RX_BUF_MASK (RX_BUF_SIZE - 1)
rx_buf_write_pointer &= RX_BUF_MASK;


Regards,
-----------------------------


by Tsuneo (2008-06-29 15:07) 

hamayan

うーん、仕事早いですね。

リエントラント性の問題は、自分でもうっかりやってしまいそう(すでにやっていそう)で怖い。
割込みの中でフラグ立てるとかよくやりますしね。

肝に銘じておきます。
by hamayan (2008-06-29 16:24) 

Tsuneo

CodeWorrier を久々にいじってみたのですが、今更ながら、デバイスイニシャライゼーションとプロセッサエキスパートに気づきました。今時のMCUなので何かそういったものがあるだろうとは思っていたのですが、やはりあったんですね。

# Windows で CodeWorrier ってまだ違和感が.. Mac で使い込んでいたもので

HCS08 Unleashed ではすっかり無視しているようですが、
周辺に関しては、プロセッサエキスパートを中心に据えた方が良いかなと思います。
そうすれば、個々のMCUの細かい相違はほとんど気にならなくなります。
でも、プロセッサエキスパートが吐くコードとはいえ、万能ではありません。それぞれ使い方の作法や制約があります。
- どんな作法や制約があるのか
- 何故そのような作法や制約が出てくるのか、
- どうすれば回避なり緩和できるのか
- どこに嵌りやすいか

などなど、サンプルをあげて解説していくというのはどうでしょう。

Tsuneo
by Tsuneo (2008-06-30 07:07) 

noritan

> どこに嵌りやすいか
バグの残っているビーンが結構あるので、初心者の方は要注意です。
?!?!?!

by noritan (2008-06-30 16:34) 

hamayan

> バグレポートを出しておきました。

早速errataに反映されていますね。
Thanks forにはお名前も。

by hamayan (2008-06-30 23:23) 

Tsuneo

> バグの残っているビーンが結構あるので、初心者の方は要注意です。

これは、重要な項目ですね。解説を書く意義でもあります。

この類のエキスパートシステムは、やはり人が作る物である以上完全にバグフリーにするのは無理です。組み合わせが多岐にわたるので、その全てを検証し尽くすのは困難です。そこで使う側でも、バグがある可能性はそこそこあるのだ、と充分覚悟しておく必要があります。

- エキスパートの吐いた初期化コードは、マニュアルに照らして確認する。初期値だけでなく、初期化の順序も確認する。
- 周辺の処理手順も、一通りコードをながめて検証しておく。

こう書いてくると、エキスパートを使ってる意味ないじゃん、と思われるかもしれません。しかし、エキスパートの吐くコードは「ほぼ」正しいので、一からマニュアルと首っ引きで初期値を決めたり、定型手順を合わせ込んだりする労力に比べればはるかに楽になります。特に周辺の使い方に慣れていないうちは、複数のレジスターに渡る関連性を良く見落とします。あやふやな理解のもとにえいやっと初期値を決めて、動かすまで結果が分からないというのが積み重なるのは、時間も精神的疲労も相当にこたえます。エキスパートを使って周辺の設定を理解してゆくのが楽です。

また、エキスパートは設定が必要な部分だけを抽出してくれます。使う側ではマニュアルのその部分にだけ注目すれば良いわけです。「選択」と「集中」ですね。網羅的な行き方とはちょうど反対です。

周辺の初期値に関してはマニュアルという判断基準があるので、使う側ではそれに乗っ取って検証します。しかし、周辺の処理手順の検証は、使う側がある程度知識があることが前提になります。「初心者の方は要注意」なわけです。そこで、「参考書」でエキスパートで使われている定型的処理手順について解説し、使う側に検証に十分な知識を持ってもらおうということになります。

このような定型的処理手順は、MCUが変わってもそうそう変わるものではありません。一度身につけてしまえば、どんなMCUを持ってきても通用します。いつまでも初心者じゃないぞっと。

Tsuneo
by Tsuneo (2008-07-01 06:14) 

Tsuneo

遠隔レスですが、
> うう、英語なんですね。

突然英語のE-mailを投稿して申し訳ありませんでした。hamayan さんは英語は読めんと公言されているのに配慮が足りませんでした。何とか読んでいただいたようですね。

私は英語に思い入れ(というか恨み)があります。日本の学校教育は英語を教えていません。日本人が英語が不得意なのは、和訳中心の日本の英語教育が間違っているからです。
日本の学校教育は、
英語を読んで、和訳して、日本語で理解し、英訳して、英語で答える

という大変難しい作業を強います。和訳をはさむとどうしても理解の速度がずいぶん落ちてしまうのです。そして英訳はさらに難しい。これを、
英語を読んで、英語のまま理解し、英語で答える

という単純な回路に戻さなければなりません。あちらでは小学生でもやってることです。日本人だからといってできないはずがない。また、あちらの人々が英語を理解するのに和訳しているはずもありません。ところが、一度和訳の「癖」が染みつくと、そこから脱却するのは大変な苦労を要します。どうしても頭が和訳の方向に行ってしまうのです。私も未だにこれに苦しめられています。つまり日本の教育は、わざわざ英語が使えない、英語が嫌いな子供達を大量生産してきたのです。我々は間違った英語教育の被害者なのです。和訳なんて英語を使う上で百害あって一利無し。翻訳家や通訳を目指す人にだけ、大学で教えれば良いのです。

英会話を小学校で教えるかどうかが取りざたされていますが、それよりもまず大学入試で和訳を一切無くす方が効果的でしょう。英語の試験で英語の問題文は当然ですが、設問も回答もすべて英語で、問題用紙も解答用紙もすべて英語、一切日本語が出てこない。といった提案を、大学で英語の入試問題を作成している教授に話したことがありますが、まったく相手にされませんでした。まあ、彼らは翻訳で食ってますからね。一般の人と価値観が違う。これが元凶ですね。

私は帰国子女でもないし、留学経験もありません。
高校の頃は英語はむしろ得意科目でした。和訳は得意中の得意。少々単語が分からなくても気にしないで雰囲気でつかみ、日本語の語彙でごまかしました。ところが、実は自分は英語がまるで出来ないと気づいたのは、大学で英語抄録を書けと言われたときです。何日もうんうん頑張って2ページほどの学会抄録をようやく書いて教授に見せたところ、ぼろくそに言われました。それ以来、英語は不得意中の不得意になりました。

英会話の教材を買ってみたり、会話学校に行ってみたり。しかし、どれも一週間と続きませんでした。面白くなかったのです。しかし、4年ほど前に、こんどこそ何とか英語を使ってみようと、ある海外のデバイスメーカのユーザ掲示板に投稿するようになりました。最初は2、3ヶ月ほどROMして、技術用語と言い回しを覚えました。それから簡単な質問に恐る恐る英語でレスを書きました。今見ても汗が出るほどひどい英語でした。

掲示板の読み書きの方が、リアルタイムの英会話よりもはるかに楽です。英語がネイティブな方々は、外国人のへたくそな英語に大変寛容です。少々の文法や前置詞の間違いなど大して気にもしません。書いてある内容に興味があれば、一生懸命読んでくれます。それに勇気づけられて、ちょっとずつ投稿するようになりました。4年たった今では常連になって長文を垂流し、むしろうるさがられています。:-)
そして、ようやく少しは英語が使えるようになった気がします。しかし、今でも英語はまだちょっと不得意なんですよね。

- 興味が深い分野の海外のサイトや掲示板を選ぶ
- ほぼ毎日のぞく。どうしても分からない単語以外、一切和訳無し。技術用語は英語のWikiを見る
- 慣れてきたら、時々で良いから投稿する。
- とにかく続ける、そのためにも興味が深い分野を選ぶ

電子系、ソフトウェア系の掲示板は、概して国内の方がレベルが高いです。だから、興味があればあるほど海外の掲示板は内容的にはつまらないかもしれません。しかしだからこそ、英語さえ書けば簡単に回答できてしまうのです。いつか常連回答者を張ることを目指してやってみてください。海外の掲示板を乗っ取っちゃいましょう。

Freescale Forum
http://forums.freescale.com/

PICな人は Microchip Forum
http://forum.microchip.com/

AVRな人は AVR Freaks
http://www.avrfreaks.net/index.php?name=PNphpBB2&file=index

固い掲示板ばかりじゃなく、ガジェットでも園芸でもアニメでも何でもいいんです。私も一時は海外のゲーム掲示板に出没していました。

英語が使えるようになれば、世界は自分にとってまたひとつ違ったものになるだろう。誰しもこの予感はあると思います。そして、その予感は正しい。英会話学校が繁盛するのもそのあたりの心理をつかんだものです。しかし、私がここで述べた方法は、ネットにつながってさえいれば今日からタダでできます。さらに、いつ使うのかも分からない英会話よりも、楽で、実用性のある方法です。勿論、これが唯一の方法だとは思っていません。この方法が使えそうだと思う人は試してみて下さい。

Tsuneo
by Tsuneo (2008-07-01 19:11) 

DAI

こんばんは。

なるほど、その様な方法があるのですね。
問題は、私のリフレッシュタイミングが遅すぎると言うことですね。
自由になる今頃の時間帯はそろそろ力が抜ける頃ですし、
本職は英語を必要としません。エンジニア系の職場でもありませんし。

ただ、今の職場には年に数回、JICA系の外国人がやってきます。
彼らはほぼ英語でしゃべります。日本とは英語を学ぶ目的が違うんだろうなと思います。
ライフスタイルを変えて時間を作ればいいのでしょうが、日本語の掲示板を見る時間が無くなるのは痛いなあ。
by DAI (2008-07-02 22:35) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

トラックバックの受付は締め切りました