(日々の記録)デジタルオシロを買った。(土)グラフィックLCD画面のスクロールライブラリ公開2013年は年明け早々から、久しぶりのソフト開発に熱中していた。ことでAitendoのモノクログラフィックLCDにキャラクターを出してスクロールするライブラリが出来たので公開することにする。その前に、ちょっと電子工作以外の話題をご紹介。久しぶりの家族旅行を楽しむ(1/7/2013)お正月明けに何年ぶりかで家族揃って泊りがけの旅行に出かけた。行き先は鳥取県の皆生(かいけ)温泉というところで、お目当ては温泉と松葉ガニをたらふく食べることである。昔なら東京から山陰と言うと汽車を乗り継いで1日がかりの旅だったが、今は、飛行機でひとっ飛びである。昨年結婚した娘も夫婦で参加し賑やかな家族旅行になった。ひとり、娘が残っているので、お礼参りと縁結びを願って出雲大社に初詣する。宿の蟹料理は、評判どおり何から何まで蟹づくしで、暫く蟹を見たくなくなるほど堪能した。物価は明らかに東京より3割は安い。松江城の近くで昼食にとった出雲そばの鴨せいろも¥900でたっぷり鴨がのっていた。松江は落ち着いた地方都市で、松江城のお堀端にある小泉八雲の旧邸や近くの武家屋敷は俗な観光地化がされていなく(人力車などいない)風情のある佇まいが残され、とても気に入った。温泉を少し離れたところにしてしまったので今度はもう少し近いところに宿をとり、もういちど訪ねてみたいところだ。AVRでフォントファイルをオブジェクトファイルとして組み込む(1/3/2013)それはともかく、電子工作である。AitendoのモノクログラフィックLCD(JCG12864)をSTM8Sで動かしてやろうと言うプロジェクトは、とりあえずAVRで始めている。さんのソースを利用させてもらって、画面に文字が出てくるところまでは確認した。前回の記事で、このプロジェクトのロードマップを提示したが、当面の目的であるスクロールを開発する前に、やっておきたいことがある。現在のフォントは8X16なので、128X64の現在の画面ではスクロールさせるには大きすぎて具合が悪い。小さいフォントにしたい。ないとスクロールのありがたみが薄れる。いうので、ChaNさんの「FONTXの使い方」や「32ビットのお誘い」のページを参考に、小さいフォントを取り込んでみることにした。STM8Sではオブジェクトファイルを埋め込むことはできないが、EEPROMで入れる予定で、フォントファイルそのものも勉強しておきたい。ウェブであちこち適当なフォントを探す。すると、Shuji009さんのブログで洒落たフォントをTFTに沢山表示されており、ソースコードも公開されているのを見つけた。おお、結構沢山のフォントが収容されている。フォントデータの実装は、ChaNさんのオブジェクトファイルに埋め込む方式が一番スマートだ。詳しい解説も載っている。shuji009さんのフォントライブラリーから、6X12のフォントを選んで、objcopyの方法でFONTXファイルのオブジェクトを作ることとした。AVRではobjcopyではなくavr-objcopyを使う(1/5/2013)ところが、WINAVRには、objcopyがないのである。調べてみると、avr-objcopyというのがあり、これで代用できそうだ。WinXPのDOS画面で試してみる。長いパラメーターを打ち込んで実行。ふむ、指示通りオブジェクトファイルが出来たようだ。AVRStudioに持ち込んで、makeしてみる。「出力ファイルのフォーマットが違う」というエラーではねられる。ChaNさんのコマンド例のelf32-littleではないようだ。なになに、avr-objcopyのヘルプメッセージに、サポートする出力フォーマットの種類が出ている。10個近くあるうち、AVRの名が付いた、elf32-avrというのがくさい。コンパイルとmakeが通った。あれ、SRAMが5KBもある。なにー、フォントデータがフラッシュではなくSRAMに入ってしまったようだ。うーむ、ChaNさんのコマンド例はどうもARM用のようで、AVR用ではないようだ。ふつうの組み込みマイコンはフラッシュに較べるとSRAMははるかに少ない。SRAMにこういうデータを入れることはまず有り得ない。何かパラメーターがあってそれが抜けているだけなのだろうが、それが何なのかわからない。objcopyの機能は盛りだくさんでそう簡単には見つからない。あれこれマニュアルや、ウェブサイトで情報を漁る。ROM(定数領域)に配置(AVRなら.progmem)と書いてあるのを見つけた(下線は筆者)。objcopyのパラメーターのひとつに、.data=.rodataというのがある。ここを.progmemに直せば良いのではないか。