マイコン工作実験日記

Microcontroller を用いての工作、実験記録

NUMWORKS

2018-09-16 18:18:23 | Weblog
ネットを徘徊していて、NUMWORKSというフランスの電卓メーカーを知りました。どうやら1年ほど前に製品を発表していたようで、電卓好きな人たちの間ではTIの関数電卓のようにグラフ表示もできる電卓として話題になっていたようです。また、MicroPythonが搭載されていることでも注目されていたようです。


日本向けへの直販はやっていないようなので、米国アマゾンで購入するとか、輸入業者経由で買うとかしないとならないようなのですが、シュミレータが用意されており実物が無くても動かすことができるのが、洒落ています。 このページで表示される電卓画像上のボタンを押して操作してみることができるのです。

そしてさらにすごいのは、中身のハードウェアやソフトウェアまで公開されており、リソースページからは回路図やBOMリスト、SDKのダウンロードをすることができます。メインのマイコンはSTM32F412ですし、使用しているLCDはコントローラにST7789を使用した16ビットパラレル接続のもののようです。その気になれば自分で互換ハードウェアを作れるだけの情報が全て揃っていますし、ソフトのソースはgithubから入手できます。まぁ、このオシャレなデザインが大きな魅力なんで、ハードは買って、ファームを入れ替えたりして遊ぶのが楽しそうです。

STM32のBOOT0ピンは、USBのVBUS端子に接続されています。そのため、PCとUSBケーブルをつないで電源を入れれば、STM32の内蔵DFUブートローダが起動され、ファームウェアの書き換えが可能です。ファーム書き換えにはなんの改造も必要ありません。てか、こんなことまで、ちゃんとWebページで丁寧に説明してくれているのが偉い!!

Device ID

2018-08-16 11:00:23 | Weblog
先日、STM32CubeMXがアップデートされたのと時期を同じくして、STM32CubeProgrammerも更新されていました。USB経由だとSTM32F7とつながらない問題も修正されたようなので、これを機会に以前から気になっていた問題を調べて見ることにしました。




上図は、Nucleo-F767 をDFUでブートして、STM32CubeProgrammerと接続した状態です。USBで接続した後、Device Descriptorや Config DescriptorからSerial NumberやらFirmware Versionやらの情報を引き出していることがわかります。ところが、Device ID (0x0451)をどうやって調べているのかが不明でした。Device Descriptorにも Config Descriptorにも該当する情報は含まれていません。もしかして隠しDescriptorが存在しており、それをアクセスして取得しているのではないかとも想像して、Wiresharkを使ってUSBパケットをキャプチャして調べてみたのですが、やはりそのような情報を取得している様子はありませんでした。一体、どうやってDevice IDを取得しているのか?

Device IDはレジスタを読みだして取得することができます。Enumeration時のDescrptorの読み出しではなく、DFUのプロトコルを使って取得しているのかもしれないと思い調べてみましたが、やはりそのような形跡はありません。STM32の UART BootloaderプロトコルではGet IDというコマンドが用意されており、このコマンドを用いることでDevice IDが取得できるようになっているのですが、DFUのプロトコルにはそのようなコマンドは用意されていないのです。

なぜ、Device IDの取得方法にこだわっているのかというと、それは自分でDFUローダを作った場合にもSTM32CubeProgrammerを使いたいと思ったからです。実際に、CubeMXを使ってUSB DFUを使用するプロジェクトを作成して動かしてみると、次の図に示すようにDevice IDが不明であるためにSTM32CubeProgrammerが使用できないのです。




このように、CubeMXで作成したUSB DFUが、そのままではCubeProgrammerでは動作しない訳で、ツール群としての整合性が取れていないではありませんか。Device IDさえ取得できればCubeProgrammerでの書き込みが行えるはずなのに。。。。

いろいろと調べてみましたが、結論としてはUSBのenumeration手順やDFUプロトコルではDevice ID情報を取得していないということがわかりました。それでは、CubeProgrammerはどうやって、Device IDを知ることができるのか? 直接情報を取得していないからには、他の情報からDevice IDを推定しているとしか思えません。

そこで思い当たったのが、DFUのInterface中に存在するDescriptorです。



DFUブートした時には、上図の上半分のようにFlashの構成だけでなく、Option ByteやOTP Memoryの領域の情報もAlt Interfaceとして表現されています。それに対して、CubeMXで機械的に生成しただけのDFUコードでは、Flash構成を表現するAlt Interfaceしか現れていないのです。もしかすると、CubeProgrammerはこれらの Alt Interfaceが表現するフラッシュメモリの構成からDevice IDを推定しているのかもしれません。

推測を確かめるために、DFUのスタックを改造して複数のAlt Interfaceをサポートできるようにして、Option Bytesを表現するAlt InterfaceのDescriptorを追加。もちろん、該当部分のFlashの読み出しもできるようにコードを追加してやりました。すると....




予想した通り、CubeProgrammer はFlashとOption Bytesの構成方法からDevice IDを推定しているようです。これで自作のDFU Loaderを使った場合でもCubeProgrammerでの書き込みが行えるようになりました。


STM32H743I-DISCO

2018-08-08 18:38:59 | Weblog
先日 STM32CubeMXの新バージョンが出たのでインストールしたところ、ボード一覧に未発売のSTM32H743-DISCOが登録されているのに気がつきました。



USB High speedとかカメラのコネクタはあるようですが、どうやらLCDが載っていない模様。STM32H743だとDSIに対応していないので、LCDはパラレルでつなげることになり、ピン数が足らなくなるのか、他の機能と競合してピン割り当てができないのかもしれません。DISCOボードって、比較的安価でLCDが載っているのが大きな魅力だったので、とっても残念。

MacでWiresharkを使ってUSBをキャプチャする

2018-08-06 14:39:03 | Weblog
WindowではWiresharkを使って、USBパケットのキャプチャができることは知っていたのですが、Macではできないと思い込んでいました。Wikiのここの説明を読んでも、Linuxを除けば他のUnix系では全滅状態です。でも、このページの説明だとWindowsでもUSBのキャプチャはできないことになっており、USBPCapについては言及されていません。

そこでダメ元で検索してみたところ、この記事を見つけました。ifconfigしなければならないので、一手間必要にはなりますが、確かにWiresharkでUSBを捕まえられるようになりました。これで、マイコンとのUSB接続を調査したりデバックしたりする作業も、大幅に楽になります。

TouchGFX

2018-07-16 17:39:37 | Weblog
1週間ほど前に、STMicrocがTouchGFXの開発元であるDRAUPNERを買収したという発表があったので、何か続報はないのかと着目しているのですが、今のところは何も新しい話は出てこないようです。「TrueSTUDIOのように、TouchGFXが無料で使えるようになるのかも!?」と期待していたのですが。。。

Gigatron & PiDP-11

2018-05-03 11:10:29 | Weblog
EEVblogにてGigatronを知りました。先日、何やらボードを組み立ての様子をライブ配信しているのには気づいていたのですが、このボードだったのですね。組み立てマニュアルが丁寧にできているのは感心。できることは限られているけど、半日もあれば充分に組み立てられるというお手軽さは、それなりに万人受けするかも。

そういえばと思いPiDP-11のページを久しぶりに訪れてみたら、なんとベータテストが開始されていることを知り驚き。



このフロントパネルの出来栄えは、サイコーですよね。Digitalのロゴもたまりません。これを見るだけで欲しくなります。パネルに精力を注ぎ込んでおり、CPU本体はラズパイだったりするのですが、実物に比べれて半分程度のサイズになっているので、これならインテリアとして飾るだけでも満足できそうです。またしばらくしたら、状況を確認してみよう。


BT815/6

2018-03-28 10:06:42 | Weblog
年明けから忙しくなってきてブログの記事ネタを作れないでいるうちに、気づくと2ヶ月もの間、何も書いていませんでした。

FTDIからNews Letterが届いたので見てみたら、EVEの第3世代の製品が出るらしい。どうやらASTCに対応して、画像データ保存用のQuad SPI Nor Flashをぶら下げられるようになったようです。そのため、パッケージがQFN48からQFN64になっています。もうひとつの気になる変化がネーミングですね。これまでは、型番の最初の2文字はFTDIを表すFTだったのですが、この製品ではBridgeTekを表すBTに変化しています。

実は、昨年 第2世代であるFT813のボードを買ってあって、ちょっとデモソフトも作ったのですがまだ記事にもしていません。この調子だと、ろくに遊ぶこともできないうちに、新しいボードが発売になってしまいそう。

TrueSTUDIO for STM32

2018-01-20 09:01:53 | Weblog
買収された際に公約となっていたフリーバージョンのTrueSTUDIOが TrueSTUDIO for STM32としてリリースされたようです。ダウンロードして、インストールすれば、そのまま何のライセンス手続きも必要無しでフル機能が使えるようです。どんなものなのか一度使ってみたい気はするのですが、まだMac OSバージョンは用意されていません。どうやら、将来的にはMac対応も計画はされているようなんですが。。。近い将来に実現されることを希望!!


STM32CubeProgrammer

2018-01-10 13:00:59 | Weblog


年末にリリースされたSTM32CubeProgrammer, インストールはしてあったのですが、なかなか試す時間が取れなくて放置状態だったのですが、思い出してNucleo-L452で試してみることにしました。

これまでOption byteの確認や変更をしたい時には、Windowsでしか使えないST-Link Utilityを使っていましたが、STM32CubeProgrammerはMac OSやLinuxでも動くところが嬉しい点です。接続のためにはST-Linkだけでなく、USBやUSARTも使うことができます。わたしの場合、NucleoのST-Link部分はJ-Link化してしまっているので、ST-LinkがMacOS環境で使えるようになっただけではあまりご利益が無いのですが、STM32CubeProgrammerはUSB DFUでの操作もサポートしているのがありがたいです。

というわけで、USBコネクタをつなげてあるNucleo-L452のBOOT0をVDDにつないで、ブートローダを起動した状態で、STM32CubeProgrammerを使ってみた様子を示したのが、冒頭の画面です。ちゃんとOption Byteの内容も確認できます。手持ちの積み基板をいくつか試してみたところ、Nucleo-F767を正しく認識できないことを発見。最新のL4+ならわかるけど、なんでF767がつながらない?



デバイスデータベースが壊れているということなので、再インストールしてみるも変化なし。Forumで調べてみようかと思ったけど、未だに障害から復旧できていないようで、満足にアクセスできません。うーん、残念。



Atollic

2017-12-14 13:09:05 | Weblog
STのホームページで、STがAtollicを買収というニュースリリースを見つけました。自社製品のIDE環境整備を強化すると共に、他社の開発環境に打撃を与えることを目的としているんでしょうか?NXPもCodeRedを買収したりしてましたね。

そいういえば, 以前Freescale向けにKDS(Kinetis Design Studio)の開発に携わっていたSOMNINUMは、事業継続が困難になりSEGGERに資産売却したようです。

もともと STM32CubeはEclipseのプラグインとしても用意されていましたから、今後はTrueSTUDIOとの統合化が進んだりするんでしょうか?わたくしとしては、今のところTrueSTUDIOがMac対応していないので、今後のMac環境サポートがどうなるかがちょっと心配ではあります。

12/14追記
STのブログ記事によると、これまでのTrueSTUDIO Proが無料で提供されるようです。ワォ!! Mac OSもサポートしてくれ〜。