いろいろ試す5



以前購入したものの全く触れていなかったPSoC5を少し触りました。PSoC5は中の
CPUコアがMAX80MHzで動作するCortex-M3が採用されています。6月位にPSoC5の
評価キットPSoC 5 FirstTOUCHが安価で販売されたので、CypressからSRAMと
一緒に購入しました。


統合開発環境のCPUコア(Cortex-M3)プログラムのビルドはGCCです。
CodeSourceryG++を呼び出すようになっています。


P.O.V.による文字表示がデモプログラムが出荷時に書き込まれています。
電源を入れてぶんぶんふるとメッセージが順次表示されます。

今現在C言語ソースしかいじり方が分からないのでCypressのサイトの
チュートリアルでもみてツールの使用方法を覚えていきますか…。
以上前フリ終わり!



さて、ゆっこちゃんの誕生日(だいぶ前ですが)も無事終わり、少し落ち着いた
のでかねてから考案中だった複数のフォントに対応したFontX2ドライバ作りを
行いました。
ProjectC3氏のページの内容を元に以下のような動かし方にしました。

1.半角・全角ごとにFontX2ファイルのヘッダー部の構造体をSRAM上に構成する。
2.各フォントを登録するごとにSRAM構造体の分だけをゴリゴリ消費。
 (というわけで比較的大規模のマイコン上での使用を想定してます)。
3.半角・全角ともにグローバルなFontX2の構造体ポインタを置き、文字描画する関数
 群は全てこれを参照するようにする。
 使いたいフォントで文字を描画する前に構造体ポインタに「1.」で登録した構造
 体のアドレスを渡すようにする。こうすることで使用したいフォントを簡単に切り
 換えることができる。
4.FontX2側のドライバは使用するFontX2ファイルの登録と、要求されたascii/sjis
 文字コードに対してフォントデータの実体があるアドレスのオフセットを返す。

決め打ちでやるのならばSRAMなぞ消費する必要はないのですが、汎用性を上げたかっ
たのでこんな感じにまとまりました。今はまだマイコンのフラッシュメモリ上にFontX2
のデータをそのままのっけています。こちらも追々と大容量のSPI-ROMに追い出すつ
もりです。

というわけでSTM32やLPC2388のTFT液晶表示プログラムにそれを組み込みました。
タッチパネルの設定の際に使用しています。


当たり前ですがフォントそのものは同じなので以前のと見た目は変わりませんけどね。
表示に使用しているデバイスはSTM025QVT-001を使用しています。何気に使用可能な
MCUバス接続タイプのディスプレイモジュールの種類もどんどん増やしていってます。



あと、IJG JPEGライブラリを使用したjpegファイルのデコードの実験なんかも試みて
います。同ライブラリを使用したsirius506氏作成のmp3プレーヤーのフォトフレーム
部をそら氏がSH-2A向けに利用されたものをさらに参考にさせてもらいました。

いろいろ試行錯誤してようやくビルドが通ったのですがバイナリサイズが220kbyteも
膨れ上がってしまったのでフラッシュメモリ容量がMAX256kByteしかないSTM32F107
系には到底載りません。というわけでjpegデコード機能を乗っけるのはフラッシュ
容量が豊富なLPC2388やSTM32 Primer2向けのみ(将来的にはLPC1769も)
になりそうです。

QVGAサイズの場合LPC2388ではjpegデコードに必要な最低限のRAMは
1024*35=35840Byte
以上必要でした。RAMもそれなりに喰うようです。その際標準関数mallocがheap領域を
使用するのでスタートアップをいじりmakefile内で使用量を明示できるようにしました。



コツ

メカ

ワウソ
やっぱデコード->描画には多少時間かかりますね。他にもIJG JPEGライブラリは
リサイズ機能なんかもあってピクセルサイズが大きいものでも縮小してくれます。
今回使用した小動物たちの画像は大阪海遊館で撮影したコツメカワウソたちです。
まだ全く手を付けてませんが120MHzで動くLPC1769で同じことやるとどんだけ早く
デコードできるかちょっと楽しみです。



最後になりますが、少し前からTFT-LCDShield開発の折にtaobaoで液晶モジュール
などをいろいろ購入していました。その中でひときわ目立ってた3.5inch、
320x480の大解像度、それでいて扱いやすいi8080インターフェースで接続できる
液晶モジュールを紹介します。



デカイ!

で、デカイ!

72MHz駆動のSTM32F107VCT6だとSDカードから320x480,24bitの標準的なWindowsBMP
ファイルの一枚絵を読み取り表示するのに掛かる時間を測定したところ約360mSec掛
かりました。
(全画面消去->SDカード読み出し->RGBデータ24bit->16bit変換->GPIO転送)


普通これくらいの解像度になるとRGBインターフェースしかないのですがこの
モジュールはi8080のMCUバスで接続できるコントローラIC(ILI9481)が内蔵されて
いてAVR等のワンチップマイコンでも手軽に扱えます(ただし16bitバス強制)。
まだタッチパネルが搭載されたモデルは一般に出回っていないものの、簡易で
フォトフレームを作成するのなら見栄えがあるものができると思います。



おや?aitendoにも似たようなものが…?(棒読み)
追:私のはFPCの形状・ピン間隔・外観が全く違う別物です!

Comments

ご無沙汰しております。色々お世話になっている「がた老」です。

見当違いのところへコメントを上げて申し訳ないのですが、現在、ねむいさんに刺激されて、CQ-STARMのCPUの換装(VB6からVE6)を試みているところです。

何とかJTAGレベルでは認識し、ファームも書けたのですが、フラッシュローダーが相変わらず不調なのとDFUがロードできません。

ねむいさんの2009年5月のソースでDFUを動かそうとしていますが、DFuSeが認識してくれません。USBは「不明なディバイス」として動いているようですが。

Makefile、リンカーなどのMD_densityの設定をHD_densityに換えているのですが、まだ設定漏れがあるような。何かヒントだけでもいただけると幸いです。ビルドはno errorでした。

がた老様

ねむいです。お久しぶりです。
こちらでコメントさせてもらいますがフォトフレームの完成おめでとうございます。

さてお問い合わせの件ですが、まずシリアルブートローダーの方について、以下の2点
について確認してみてください(前回の「Versaloonクックブック」の記事にも記載があります)。
1.UART-Txも10kohmでプルアップする。
2.接続しに行くときの設定を115200bps,パリティビット「even」,echoを「disabled」にする。
また、フリーソフトで「MCUISP」なるISPライタソフトがあり、STM32のシリアルブートローダー
経由の書き込みに対応していますのでそちらでも試してみてください。
http://www.mcuisp.com/

そしてもう一件の方について、ちょっと私も気になる点がありますのでがた老さんの
DFUがうまく動いていない状態のコードを精査したいです。
お手数ですが私のプロフィール(下のURL参照)欄の一番下に記載してあるメールアドレスに
ソースファイル一式を送っていただくようお願いします。
http://nemuisan.blog.bai.ne.jp/?pid=2819

その後のご報告。
メールでソースを送ってからこちらで色々やったことの報告です。

・フラッシュローダーはご指示の通り、even partity、 echo disable で動かしたところ、一瞬動き、1本プログラムがロードできましたが、その後また不調になりました。

・mcuispをダウンロードしてみました(しかし、良く見つけましたねえ)。こいつは最初から楽々と、STM32を認識し、DFUも簡単に書けました。それでDFUSeも動きました!

・喜んで別のファイルをDFUSeで焼きましたが、DFUSeをスキップするはずのジャンパーが効かず、いつまでたってもDFUモードのままになりました。

・しかし、JTAGでエラーになって、フラッシュで動くというのは???良くわかりませんねえ。

がた老です。
動きました。ありがとうございました。

メールで詳しい回答ありがとうございました。
よく見たら、103VE_EVALという評価ボードは、VB用とは別に存在し、これをVEだからと指定していたからだと気づきました(CQ-STARMはVB_EVALのコピーと思われる)。

とういうので、ねむいさんのソースを参考に、Makefileで、EVAL_BOARD = USE_STM3210B_EVALに戻してビルドしたら、一発で動きました。DFUdemoも順調に動きました。

いやいや、大変お世話になりました。ありがとうございました。あ、hex2dfuもnon spaceのディレクトリに移したら何と言うこともなく動きました。他のtoolはスペースのあるディレクトリでも動いていたので油断していました。

とりあえずご報告。詳しくはまたメールでもします。

ねむいです。こんにちは。

上手くいったようでなによりです。
後はディスクリプタのフラッシュ容量(128kb->512kb)の定義の書き換え
等の細かい作業が残っていますが、がた老さんなら難なく出来るでしょう。

Post a Comment








Go to top of page