boot loader enableにする方法
STMicroが提供する、ST Visual Programmer (STVP) (.exe)
というソフトを利用します.このソフトは、ST Visual Development
という統合開発環境をインストールすると、同時にインストールされます.
以下、その使い方説明です.
●STM8S
discoveryとホストPCを、USBケーブルでつなぎます
●STVPを起動します.
OPTION BYTEタグをクリックしますと、次の画面がでます.
●つぎにメニューから、Read→Current Tab とします.
OPTION
BYTEタブを下にスクロールさせると、BootLoader Disabledになっています.これだとUART, SPI,
I2C経由でのFLASH焼きはできません.
●OPTION BYTEタブの上部に、00 00 00 08 00 00 00 00 55
というのが見えます.この末尾の55がキモです.55に書き換えてください.すると、BootLoader
Enabledに表示が変わります.
あとは、メニューから、Programm → Current Tab として、ST8M
discoveryに書き込みます.
STVPを終了させてください.
以上で、UART,SPI,I2C経由でFLASH焼きをする準備はおしまいなのですが、STMicroのdocumentを読んだ知識と、上の手順とに食い違いがあるので、それの説明をしておこうと思います.
食い違いとは、2つあります.
Q1:
STMicroのdocumentによると、オプションバイトは4800H〜487FH番地まで割り当てられているわけだけど、STVPで書き換えられるのは、たったの、00
00 00 08 00 00 00 00 55 という9バイトしかないのはなぜ?
Q2:
STMicroのdocumentによると、BootLoader Enableにするには、{487eH,487f}=55AAH
にせよと言っているので、2バイトを書き換えなくちゃいけないはずだが、STVPで書き換えたのは、55だけなのはなぜ?
その答えは、実質的なオプションバイトのマッピングはとてもまばらで、正味9バイト分しかないからなのです.
でも、データシートのオプションバイトの項 (pdf)
を見ると、いくらなんでも9バイトしかないようには見えません.そのギャップの理由は、STVPの動作は、先ほど55を上書きした487EH番地に上書きすると、487FH番地には55をbit反転させたAAを自動的に書き込むようです.なんでこんな仕様なのかは謎ですが、そんなわけで正味9バイト分しか情報がないのです.