FRDM-KL25Zその4
お次はデバッグ。IAR Embedded Workbench IDEでデバッグボタンを
押してみる。
おぉ・・ main関数で止まっている。すばらしい。
OpenSDAプロトコルを制御するオンボードデバッガ=マイコンチップと、それ上で動作するアプリの力を借りている。
子のアプリがワークベンチからはデバッガとして指定するものなので、
プロジェクトのデバッガ設定でJ-Link/J-Traceを選択してある。
「表示」メニューでレジスタを出してみると
PC 0x0000134C
とある。ステップインしてみると
PC 0x0000134E
おお、変わった。感動wwww
アドレスが2バイト進んだ?
もう一回ステップイン(BOARD_InitPis関数に入る)
PC 0x000012E0
おぉ、110バイト番地が戻った。
つまり、BOARD_InitPins関数のアドレスはスタートアップ(main)
よりも手前なのか、当たり前なのかもだけど感動するwwww
FRDM-KL25Z その3
さて、実際、OpenSDA USBポートでFRDM-KL25Zに接続しているわけだが、
オープンデバッガとゆーことは、つまりシリアル通信しているわけで、
(といってもUSB自体がシリアルか?)
シリアルポートとして見えるはずなのだ。
つまり、シリアルポートを持つデバイスとしてWindowsからみえるはずなのだ。
デバイスマネージャを開くと・・・あった。
ポート(COMとLPT)
JLink CDC UART Port (COM4)
ふむふむ、UARTなんだ。
ボード側で動作しているアプリ名が見えている。JLink。
なので当然シリアル接続してみる。
ボーレートは 115200らしい。
ボードにはhelloworldサンプルをダウンロードしてあるので
リセットキーを押すと・・・
でた。
キーボードになんか入力すると、
aaaabbbccc
ふむ、ふむ、キーボード入力をエコーバックしてるそうな。
なるほどなるほど。
FRDM-KL25Z その2
さて、OpenSDAが何かいまいちわかってないけど、フラッシュへの書き込みやデバッグをするためのオープンなプロトコル仕様だと思うことにしよう。
そのプロトコルを制御するためのチップというか、マイコンがターゲットボードに搭載され、そのマイコンごしに、Cortex-Mxマイコン(コアそのものでなく)と通信する。
Cortexマイコンのインタフェースを吸収してくれるマイコンとゆーことだろうか。
UARTや、SPIで、オンボードデバッガ=OpenSDAマイコンと、ターゲットボード=Cortexマイコンと繋がってるので、UART/SPIでプロトコル通信している、という事か。
前回OpenSDAのブートローダやデバッグファームウェアを書き換えることで、
Windows10から仮想ドライブとして見えるようになった。
そしてOpenSDAマイコン上で動作する専用アプリを今度はダウンロードしなければいけないらしい。
ここでは Segger J-Linkというアプリを使う(アプリにも複数メーカ製があるらしい)
↑ここから、FRDM-KL25Z用のアプリを落としてきた。それはそうか、Cortexコアは一緒でもCortex搭載マイコンは各社異なるだろうから、OpenSDAというお約束事は一緒でも、プロトコル内容は違うわけだ。
例によってリセット+接続でBOOTLOADERと認識されるので、上記から落としてきた
12_OpenSDA_FRDM-KL25Z.binをドロップし再起動する。
すると起動時のFRDM-KL25Zの内容が少し変わる。
Segger.html
↑今入れたアプリのHTMLが入っている。
なるほど、なるほど、こうやって入れたものによって仮想ドライブの内容が変わっていくのか。
FRDM-KL25Z
触り始めた。
ただ、OpenSDA用のファームウェアが古いと、
Windows10では正常に動作しない、という話があり、
ブートローダを更新してみる。
BOOTUPDATEAPP_Pemicro_v111.SDAというファイルだ。
これは、リセット状態でFRDM-KL25Zを接続(OpenSDA側)すると
中にサイトリンクがあるのでクリックすると取ってこれる。
Windows 8以降でFRDM-KL25Zのファームウェアアップデートができない場合の対処法 | コーヒーサーバは香炉である
↑こちらのサイトに従って、Windows10のレジスタとサービスを停止させてから
↑ブートローダを更新する。
上手くいくのだけど、FRDM-KL25Zを接続すると、「BOOTLOADER」としてしか認識されない。「FRDM-KL25Z」という名称で認識されない。
一方で、mbed化する記事を見ると、BOOTLOADER更新後に
mbed用のファームウェア?を放り込んでいた。
mbed FRDM KL25Z ゲッティングスターテッド | mbed
なるほど、もしかして・・と思い、落としてきたOpenSDAツールの中に・・・
あった。
MSD-DEBUG-FRDM-KL25Z_Pemicro_v118.SDA
これだ。これを入れて初めて、OpenSDAがxx化するのではないか。
リセット起動で「BOOTLOADER]認識させ、このファイルを放り込んで
再接続・・
よし、見えた!「FRDM-KL25Z】として認識されたぜぃ。
無題
Cortex-M0つまり、ARMのマイコンファミリを扱う事の利点はあたらりまえだけど、シンプルにARMプロセッサ上でコードを動かすことに専念できるからである。
(arm-GCCがあればよい)
Cortex-A0では巨大なOS(たいていLINUX)を動かすために、複雑なツールチェーンを構築する必要があるし、そこで「うわっ」ってなって本質がボヤけてしまう。
(Yoctoを使えば楽なんだろうけど、微妙に組み合わせで苦しんだりするとくじける)
そもそも巨大なOSというのは、プロセッサを扱う事を完全に隠蔽してしまう、すなわちLinuxの仮想ファイルシステム、ドライバ、仮想メモリシステムに隠されてしまうため、よろしくない。(まぁ、Aファミリで動画使ったり、音楽流したり、シビアな性能要求されたり、あれこれあると、LinuxOSによる超ハイパワーなプロセッサ活用フレームワークを使いこなすのが本道なんでしょうが)
これだとしかしポーティングでトラブル事が結構さけられない。
とゆーわけで、やはり、プロセッサを扱う事の本質(もちろんI/O、ペリフェラル含めて)を抑えるには、シンプルなMファミリは最適なのだ。
ARMアセンブリ本読み終わった。
肝心なところ=割り込みサンプルが中途半端に終わったけど、これでcortex-mの勉強に入れるなぁ。
ベアメタルに入る前に、cortex-mで勉強だぁ
暴露話
森友学園の話もそうだが、こういう暴露系というのは世の中に正義の原則があって裁かれるのではなく、【最も高く売れる】タイミングとなって、世に出てくる。
今回の場合は、総裁任期をバンと伸ばした事がトリガーになったように思う。
つまり、自民党内部からリークした話ではなかろうか。
終身総裁とか言ってたら、もっとこの話は速攻暴露されていたと思う。
総裁任期を伸ばした事で、「順繰りじゃないのかよふざけんな」的な勢力が
「よーし、そんなら任期前に突き落としたるわ」と決心したのだと思う。
もちろん、自民党として巻き込まれて大爆死となっては元も子もない。
自民党の反対派は、どのネタを暴露すればよいか、について慎重に
議論を重ねたと思う。
その結果、政府に直接害が及ばない、安倍総理個人をピンポイントに爆撃する
ネタとして投下されたのが、森友爆弾である。
反対派にとって問題なのは、党の保身に走りすぎて、もう一つ、総理へのトドメになりきらない可能性である。野党が息を吹き返してもいけないので、
ピンポイント爆撃したわだが、ピンポイント過ぎたかもしれない。
まぁ、ただ、総理に対して恫喝としての役割は果たせたかもしれない。
「つぎはこんなもんじゃすまないぜ」的な。
まぁ、どっちがどっちというのは個人的にはなく、あくまで今のタイミングで暴露されたのはなぜか、について想像した話、以上。