マイコン入門spacer ad
トップページに戻る(マイコン徹底入門:STM32で始めるARM/Cortex-M3組み込み開発)
「マイコン徹底入門」とは? |  「マイコン徹底入門」を読む |  ダウンロード |  掲示板 |  筆者の自己紹介


Previous: 13.2.3. フラッシュへの書き込み

Up: 13. フラッシュメモリプログラミング

Next:  


マイコン徹底入門:周辺回路編:STM32のペリフェラルを活用: 13. フラッシュメモリプログラミング:

13.3. サンプルプログラム(メッセージの記録)

サンプルプログラム

flash_memorize_message

 先述のEEPROMにメッセージを書き込むプログラムと同様の手順で、フラッシュメモリに、ユーザが入力したメッセージを記録するプログラムです。リセット後、リセット前に入力したメッセージが表示されます。DFUを利用している場合には前項と同じく書き換えが必要です。

 サンプルプログラムを実行すると、メッセージの入力を求められ、入力すると書き込みが始まります。ここでは「Enjoy Flash Programming with STM32!」と入力しました。

Hellow Cortex-M3/STM32 World!

Expand your creativity and enjoy making.

 

No message found. It looks it is the first time to run this progra

m.

Type what you want to memorize in Backup registers.

Maximum number to type in is :2046

Enjoy Flash Programming with STM32!

What you type is

Enjoy Flash Programming with STM32!

Unlocking Flash.

Clearing pending flags.

Erasing Flash Pages.

Writing Magic word to Flash.

Writing your message to Flash.

..................................................................

..................................................................

..................................................................

..................................................................

..................................................................

..................................................................

..................................................................

..................................................

Writing finished.

 リセットすると、先ほど入力したメッセージが表示されます。

Hellow Cortex-M3/STM32 World!

Expand your creativity and enjoy making.

 

Message found. The message stored in flash is

Enjoy Flash Programming with STM32!

Type what you want to memorize in Backup registers.

Maximum number to type in is :2046

 フラッシュメモリプログラミング部分の手順は前項のサンプルと同じです。このサンプルプログラムのポイントとしては、まず、以前にこのプログラムが実行されたことがあるかどうかを、以下のようにして、メモリ上に記録された特定のキーワードの有無を参照することによって行っています。

if (*(uint32_t*)(FlashBaseAddr + (StartPage * FLASH_PAGE_SIZE)) == MAGIC_WORD)

? {

??? cprintf("Message found. The message stored in flash is \r\n");

??? cprintf((int8_t*)(FlashBaseAddr + (StartPage * FLASH_PAGE_SIZE)) + 4);

??? cprintf("\r\n");

? }

 もう一つのポイントですが、フラッシュへの書き込みはワード単位なのですが、アスキー文字のメッセージはバイト単位です。そこで書き込みの際には、以下のように4文字ずつ、1ワードにまとめて書き込みを行っています。

FLASHStatus =

? FLASH_ProgramWord(FlashBaseAddr + (StartPage * FLASH_PAGE_SIZE) + Address + 4,

????? (RxBuffer[Address + 0] <<? 0 ) +

????? (RxBuffer[Address + 1] <<? 8 ) +

????? (RxBuffer[Address + 2] << 16 ) +

????? (RxBuffer[Address + 3] << 24 ) );

ブックガイド 27 他のマイコン

 初めてマイコンのことを学ぶ際には、まずは一つのマイコンを徹底して学ぶのがよいと思います。もっとも他のマイコンを知ることで自分が学んでいるマイコンに対する理解がより進むということもあります。国産のマイコンやArduinoには、よい解説書がたくさん出版されています。視点を広げるという意味でも一度目を通してみるとよいでしょう。

 

Massimo Banzi;『Arduinoをはじめよう』,オライリージャパン,20093月.

Tom Igoe;『Making Things Talk Arduinoで作る会話するモノたち』,オライリージャパン,200811月.

GainerBook Labo他;『+GAINER』,オーム社,200810月.

布留川英一;『はじめてのGainerプログラミングガイド』,工学社,20085月.

佐藤佳恭;『超低コストインターネット・ガジェット設計 USB・μIPmicroSDプロトコールスタックの活用』,オーム社,20085月.

山根彰;『AVRマイコン・リファレンス・ブック』,CQ出版社,20064月.

土井滋貴;『試しながら学ぶAVR入門』,CQ出版社,20085月.

松原拓也;『AVRマイコン活用ブック』,電波新聞社,20072月.

横田一弘;『C言語によるH8マイコン制御』,東京電気大学出版局,20054月.

今野金顕;『マイコン技術教科書 H8編』,CQ出版社,20026月.

山崎尊永;『今すぐ使える!H8マイコン基板』,CQ出版社,20104月.

藤沢雪穂;『H8マイコン完全マニュアル』,オーム社,200012月.

熊谷あき他;『Interface増刊 SH-2マイコンで学ぶ組み込み開発入門』,CQ出版社,20093月.

横山直隆;『C言語によるSH?2マイコンプログラミング入門』,技術評論社,20081月.

鹿取祐二;『SuperHファミリのCプログラミング』,オーム社,20089月.

内藤竜治;『USBマイコンでパソコンI/O! 78KO基板付き』,CQ出版社,20098月.

桑野雅彦;『はじめての78Kマイコン』,CQ出版社,20067月.

桑野雅彦他;『PSoCマイコン・スタートアップ PSoC基板&書き込み器付き』,CQ出版社,200912月.

石丸善行他;『R8C/Tinyマイコン・リファレンス・ブック』,CQ出版社,200510月.

鈴木美朗志;『わかるマイコン電子工作 PICC言語でつくる赤外線リモコン』,電波新聞社,20079月.

ブックガイド 28 更なるレベルアップのために

Peter van der Linden;『エキスパートCプログラミング 知られざるCの深層』,アスキー出版局,19964月.

これが読めるようになると実力が付いてきた証拠だと思います。ちなみに筆者はまだ読みこなせていません。

 

ヘンリー・S・ウォーレン他;『ハッカーのたのしみ 本物のプログラマはいかにして問題を解くか』,エスアイビー・アクセス,20049月.

頭のいい人がコードを書くとこうなるのかと感心させられます。読んでいると脳みそから汗が出そうになります。

 

Ozy;『Short Coding 職人達の技法』,毎日コミュニケーションズ,20078月.

いかにして短く書くかという職人芸の解説です。このスタイルを習得するというよりも、C言語の柔軟さを知る素材として読むのが面白いでしょう。

 

ジェイムズ・ノーブル他;『省メモリプログラミング メモリ制限のあるシステムのためのソフトウェアパターン集』,ピアソン・エディケーション,20026月.

どちらかというとPC向けの本ですが、メモリの節約はマイコンだけの問題ではないということで、視点を広げるために読んでみるとよいと思います。

 

ジョン・ベントリー;『珠玉のプログラミング』,ピアソン・エディケーション,200010月.

プログラムの論理構造の本質的な部分をきちんと理解してアルゴリズムを構築し、ソフトを書きたい人のための本です。


Previous: 13.2.3. フラッシュへの書き込み

Up: 13. フラッシュメモリプログラミング

Next:  


このページはITと知的財産の法律情報「法務ネット」の管理人が制作・運営しています。
_Toc266801166