MediaTek MT3620 M4 Driverを(ざっくり)調べた

Azure Sphere MT3620のCortex-A7(HLApp)に対しては、Azure Sphere SDKライブラリが含まれていますが、Cortex-M4(RTApp)に対してはライブラリが提供されていません。軽く作るならgithubに公開されているサンプルコードを流用、ちゃんと作るならNDA契約の下、M4データシートを入手して様々なレジスタと格闘することになります。

そんな状況がしばらく続いていましたが、先日、MT3620を製造するMediaTekから、M4向けライブラリがオープンソースで(!)公開されました。

techcommunity.microsoft.com

そこで、このMediaTek MT3620 M4 Driverがどんな雰囲気のものなのか調べました。

続きを読む

IoT Hubへ接続するときの認証やキーなど

2017年に書いた「Azure IoT HubのSASトークンについて」が、いまでもまぁまぁなアクセス数があります。

matsujirushi.hatenablog.jp

Azure IoT SDKsを使わずに、Azure IoT HubにMQTT, AMQP, HTTPSなどで接続するにはSASトークという文字列を渡さなければいけないのだが、このSASトークが一体何者か良く分からない。

この記事では、SASトークにフォーカスして書いていましたが、、、
2年経って、ようやく理解できた(!)ので、少し広い視野で、IoT Hubへ接続するときの認証やキーなどを、体系立てて書いてみたいと思います。

続きを読む

HLAppを3つ動かしてみる

2020/7/2追記 Microsoft Q&Aのコメント


2019/12/30追記
マイクロソフトからコンタクトがありまして、情報追加しました。(一番最後の結果のとこに。)


前記事。

matsujirushi.hatenablog.jp

RTAppは同時に2つまでしか実行(というかデプロイ)できませんでしたが、HLAppはどうだろう?

続きを読む

RTAppを2つ動かしてみる

前記事。

matsujirushi.hatenablog.jp

あぁ、この記事のシリーズ、写真も無いし画像も少ないし、ちょっとマニアックな内容で、、、誰か読む人いるんだろうか?と思いながら、備忘的に書いています。

今回はRTAppを2つ同時に動かしてみましょう。

RTApp 2つ = RTCore 2つ

RTApp、というかRTCoreは、アプリケーションの実行を管理する「OS」というものが存在しません。
ので、RTAppを2つ動かすということは、必然的にRTCoreを2つ使うことになります。1つ目のRTAppがRTCore #0で動いているとすると、2つ目のRTAppはRTCore #1で動かすこと。

実行するRTApp

前記事と同様、サンプルのSamples/HelloWorld/HelloWorld_RTApp_MT3620_BareMetalを使います。

1つ目のRTAppは、サンプルを未修正で使います。ビルドして出来たHelloWorld_RTApp_MT3620_BareMetal.imagepackageを、別ファイル名にコピーしておきます。

copy HelloWorld_RTApp_MT3620_BareMetal.imagepackage c:\azuresphere\HelloWorld_RTApp_MT3620_BareMetal-tick.imagepackage
        1 個のファイルをコピーしました。

2つ目のRTAppは、app_manifest.jsonのComponentIdを良い感じに変更して(w)、ついでにmain.cのシリアル送信メッセージも変更して、ビルド、コピーします。

1つ目 ... d3b80666-feaf-433a-b294-6a5846853b4a、"Tick"/"Tock"
2つ目 ... d3b80666-feaf-433a-b294-6a5846853b4b、"One"/"Two"

実行!

念のためdeleteしてから、2つのRTAppを手動でデプロイします。

C:\AzureSphere>azsphere device sideload delete

C:\AzureSphere>azsphere device sideload deploy --imagepackage HelloWorld_RTApp_MT3620_BareMetal-tick.imagepackage
Deploying 'HelloWorld_RTApp_MT3620_BareMetal-tick.imagepackage' to the attached device.
warn: This app targets Beta APIs that may change or be removed in future.
Image package 'HelloWorld_RTApp_MT3620_BareMetal-tick.imagepackage' has been deployed to the attached device.

C:\AzureSphere>azsphere device sideload deploy --imagepackage HelloWorld_RTApp_MT3620_BareMetal-one.imagepackage
Deploying 'HelloWorld_RTApp_MT3620_BareMetal-one.imagepackage' to the attached device.
warn: This app targets Beta APIs that may change or be removed in future.
Image package 'HelloWorld_RTApp_MT3620_BareMetal-one.imagepackage' has been deployed to the attached device.

C:\AzureSphere>

どれどれ、、、

C:\AzureSphere>azsphere device app show-status
d3b80666-feaf-433a-b294-6a5846853b4a: App state: running

d3b80666-feaf-433a-b294-6a5846853b4b: App state: running


C:\AzureSphere>

動いているっぽい。

ロジアナで測定すると、

f:id:matsujirushix:20191224200056p:plain

f:id:matsujirushix:20191224200218p:plain

f:id:matsujirushix:20191224200148p:plain

オォー!動いてる♪

IO0_TXDがサンプル無修正品で、IO1_TXDがサンプル修正品。

実行しているRTCoreを入れ替え

それでは、RTAppの起動順を変えてみて、実行するRTCoreが入れ替わるか見てみましょう。

C:\AzureSphere>azsphere device app stop -i d3b80666-feaf-433a-b294-6a5846853b4a
d3b80666-feaf-433a-b294-6a5846853b4a: App state: stopped


C:\AzureSphere>azsphere device app stop -i d3b80666-feaf-433a-b294-6a5846853b4b
d3b80666-feaf-433a-b294-6a5846853b4b: App state: stopped


C:\AzureSphere>azsphere device app start -i d3b80666-feaf-433a-b294-6a5846853b4b
d3b80666-feaf-433a-b294-6a5846853b4b
App state: running
Core     : 1


C:\AzureSphere>azsphere device app start -i d3b80666-feaf-433a-b294-6a5846853b4a
d3b80666-feaf-433a-b294-6a5846853b4a
App state: running
Core     : 0


C:\AzureSphere>

あれ!?

f:id:matsujirushix:20191224200639p:plain

入れ替わらねー

デプロイ順かな?試してみます。

C:\AzureSphere>azsphere device sideload delete
Component 'd3b80666-feaf-433a-b294-6a5846853b4a' deleted or was not present beforehand.
Component 'd3b80666-feaf-433a-b294-6a5846853b4b' deleted or was not present beforehand.

C:\AzureSphere>azsphere device sideload deploy --imagepackage HelloWorld_RTApp_MT3620_BareMetal-one.imagepackage
Deploying 'HelloWorld_RTApp_MT3620_BareMetal-one.imagepackage' to the attached device.
warn: This app targets Beta APIs that may change or be removed in future.
Image package 'HelloWorld_RTApp_MT3620_BareMetal-one.imagepackage' has been deployed to the attached device.

C:\AzureSphere>azsphere device sideload deploy --imagepackage HelloWorld_RTApp_MT3620_BareMetal-tick.imagepackage
Deploying 'HelloWorld_RTApp_MT3620_BareMetal-tick.imagepackage' to the attached device.
warn: This app targets Beta APIs that may change or be removed in future.
Image package 'HelloWorld_RTApp_MT3620_BareMetal-tick.imagepackage' has been deployed to the attached device.

C:\AzureSphere>

f:id:matsujirushix:20191224200831p:plain

入れ替わった!!

ということは、デプロイ時に実行するRTCoreの割り当てがされているんですね。

おまけ

RTAppを3つデプロイするとエラー。(ふむふむ)

f:id:matsujirushix:20191224201152p:plain

Visual StudioでRTApp(RTCore)をデバッグ実行したときの振る舞い

前記事。

matsujirushi.hatenablog.jp

以前は、HLApp(HLCore)のデバッグ実行を見ました。
今回は、RTApp(RTCore)がどう振舞うのかを確認しました。

続きを読む