★つれづれ出張所♪

プログラム開発情報(主にWindowsPhone!)を発信していま~す。(*^_^*)

STM32 HALドライバで使うFreeRTOSの罠・・・?



どうもです。
STM32F7の紹介をだいぶ前に行いましたが、開発を続ける上で一つだけ引っかかっている部分がありました。
現在、OBD2機器の開発を遊びで行っているのですが、リアルタイムOSを組み込むと意図としない動作が起こってしまう事でした。
プログラムを実行して、大体30分~2時間くらいでハングアップしてしまうのです!(涙)。

全然原因が分からないので、しばらく放置しておりました・・・w

で、最近やっとどうにかなったのでここに書き出しておきます。

まず、STM提供のHALドライバを使うと一緒にFreeRTOSが付いてきます。(STM32F7は、強制的にHALドライバの使用が勧められています)
ちなみにFreeRTOSは、組み込み系で使えるフリーウェアのリアルタイムOSです。
 ※詳しくは→http://www.freertos.org/

今までもSTM32F4などで、FreeRTOSは使っていたので、それと同じだろう!とプログラム記述していました。

が、、、、それが悪かったようです。orz


最近、STM提供のサンプルプログラムを眺めていたらFreeRTOSを呼び出す関数が違う!?
そう、HALドライバで使用するには、使い方が違ったのです!(;´Д`)

まず、通常であればヘッダーを以下の様にリンクします。
 #include "FreeRTOS.h"
 #include "task.h"
 #include "queue.h"
 #include "portmacro.h"

ですが、HALからは次の様にリンクします。

 #include "cmsis_os.h"
1ファイルのみです。(内部では通常のヘッダーをリンクしていますが・・・)

もう、ここからして怪しさ爆発です!

例としてタスクを生成する関数ですが、、、通常のFreeRTOSでは次の通り・・・。
 xTaskCreate(prvTaskLCD,   (signed portCHAR *)"LCD",   0x400, NULL, 1, NULL);
 xTaskCreate(prvTaskSensor,(signed portCHAR *)"SENSOR",0x200, NULL, 1, NULL);
 xTaskCreate(prvTaskKLINE, (signed portCHAR *)"KLINE", 0x400, NULL, 1, NULL);
 vTaskStartScheduler();

HALからは、次の通り・・・。
 osThreadDef(taskLCD, prvTaskLCD, osPriorityNormal, 0, 0x400);
 taskHandleLCD = osThreadCreate(osThread(taskLCD), NULL);
 osThreadDef(taskSensor, prvTaskSensor, osPriorityNormal, 0, 0x200);
 taskHandleSensor = osThreadCreate(osThread(taskSensor), NULL);
 osThreadDef(taskKLINE, prvTaskKLINE, osPriorityHigh, 0, 0x400);
 taskHandleKLINE = osThreadCreate(osThread(taskKLINE), NULL);
 osKernelStart();

もうねぇ、関数が全然違いますがな・・・。(´・ω・`)

でもこれらHAL側の関数は、マクロになっていて最終的には、FreeRTOSの関数が呼ばれます。
これで今までと同じようにプログラム記述してても動作しちゃって居た訳・・・(汗)。

そんで、最終的にはFreeRTOSの関数が呼ばれても実際には、なにやら色々とHALドライバの方では制御しとるのですよ。
詳しく書くと長くなりすぎるので割愛しますが、FreeRTOSと言っても似て非なるものです。
(大雑把に言うとタイマーの制御に小細工を入れている感じデス)

これだったらHALドライバの解説でFreeRTOSって書かないでほしい!
せめて互換品と書いといてくれ~~~~

ちゅう事で、関数を全てHALドライバのFreeRTOSに置き換えて実行すると5時間以上連続始動させても無事動作するようになりました♪
これで、次のステップに進めます!(;´∀`)

なお、HALドライバのFreeRTOSについてはリファイレンスマニュアルが無い?(見つからなかった)ので、ヘッダーファイル cmsis_os.h から代替え関数を突きとめてプログラムを修正した次第です。辛かった・・・w

それにしてもHALドライバよ、オメ~はいらない子だ!
STMも通常の(今まで通りの)ドライバーを提供してくれ~~~~~~~~!!!!!!!!!!!!!!

おしまい



DAZNのTV出力環境(機器)を考える

Jリーグの視聴目当てにDAZNを契約しています。
今回TVで見るための視聴機器について考察してみます。
なお、TV出力をメインに考えているのでパソコン及びスマホ(タブレット)での視聴は除外しますw

で、現在の手持ちが以下の機器です。
 ①Xbox One
 ②Play Station 4
 ③Play Station 3
 ④新FireTVStick

自室には、①Xbox One と ②PlayStation 4が、あり主にXboxOneを使って視聴しています。
0100
両方とも有線LANでネットに接続しています。
 ※なお、XboxOneはDAZN開設当初から対応しているプラットフォームです。

ここで②Play Station 4で視聴していないのは、FANのノイズがうるさくて避けています。
本当に迷惑なFANの音ですw


次です。

居間でもDAZNを視聴したくて考えました。
まず、ノートPCをHDMIでTV出力してみたのですが、毎回接続設定するのが面倒で挫折しました。orz

そこで居間には、主にTorneでTVを視聴している③Play Station 3が常設で有線LANでつないであります。
で、8月にDAZNが対応したので視聴してみます。
視聴は出来るのですが、、、はっきり言って、UIの速度が遅すぎてイライラします。
 ※Torneはサクサク動作するのでDAZNアプリの問題だとは思うのですが、現時点では実用的ではありません

で、Amazonの④新FireTVStickでもDAZNが視聴できると聞いたのでポチりました。
0300
きちんと設定できれば、問題ありません。ただしその設定が厄介でした。
ネット接続は、WiFiで行います。2.4 or 5GHzで接続できるのですが、2.4GHzは電波が混みあってて少なくとも自分の生息地域ではまともに再生できません。
それで5GHzを使いますが、この周波数帯では電波が届き辛いです。
我が家ではその対策の為に中継器を通しているのですが、FireTVStickでは何故か中継器(buffalo WZR-S600DHP)でつながりません。
 ※その他の機器では全く問題ないのにコイツだけはダメです!(;´Д`)

とは言え、電波が微弱でもこれはこれで視聴できるのですが、はっきり言ってDAZNアプリがプアで、ネットに繋がらなくなるとDAZNアプリを強制終了しなければ再度視聴できなくなり最悪な操作性です。(最近バージョンアップされて多少マシになりましたが・・・)

そこで、、、接続するHDMIを延長ケーブル(1M)で接続してWiFi親機に近づけて対策しました。
 ↓こう言うやつ

たったこれだけで電波の入りが良くなりました。
220311
カーテンに洗濯バサミで固定していますw


と言う事で、最高の環境は、Xbox Oneと言うのが4つ使ってみた感想です。
 ※PlayStation 3 / 4 だとたまに視聴がおかしくなる事があるのであまりお勧めしません

ただしゲーム機は、値段が高いので次点として④新FireTVStickって所でしょうか?
 ※4Kテレビをお持ちであれば、Fire TV (New モデル) でしょうかね


とは言え、DAZNでのJリーグ視聴はサーバー負荷が増えると遅延も多くなりガッカリな感じになります。
まだネット視聴するには、技術的に早すぎる気がします。
スカパーが一番でした。。。(;´Д`)

【追伸】
Amazon FireTVは、DAZNの契約だけでもDAZN視聴のみであれば使えます。
(Amazonプライム会員にならなくても使えます)

【追伸2】
FireTV用に Amazon イーサネットアダプタ がオプションで発売されるようです。
無線LANだと微妙なので、環境が整えられるのであれば有線LANで接続した方が良いと思います!



  

VR?3D?開発用!?に新しく1台PCを作りました

既に購入して一ヶ月ほど経っていますが、世の中の流行り?を体験したくVR系のプログラムをしたくてそのためにPCを作りました。開発に使っているメインPCは、あまりいじりたくなかったので新しく調達した次第。

今回は久しぶりに自作です。

あまり予算を掛けたくなかったので、比較的安いパーツをチョイス!
0001
主な構成は以下の通り・・・。(その他はありもの等々を取り付け)
 CPU  Pentium G4560
 マザー  MSI H270 PC MATE
 メモリー UMAX DDR4 2400 4G x2
 ビデオ  ZOTAC GEFORCE GTX 1060
 ケース  Thermaltake Core V31

ビデオカードに資金をそこそこ投入して、その他はまぁまぁなパーツを選びました。(メモリーも微妙に高いのでいまは8Gで我慢w)
またCPUは、Pentium G4560が最新コア?のKaby Lake-Sであり、かつ性能価格比ですこぶる評価が高いみたいでしたのでお試しも兼ねて購入。
 ※今はCPUの値段が高くなってしまった?のであまり旨味は無いかもしれません・・・(;´Д`)

あとマザーは、CPU(Kaby Lake-S)が最初から認識すると言われるH270チップセットを積んだものを慎重にセレクト!(※ひとつ前のチップセットでも使えるのですがBIOSアップデートをしないとCPUを認識しないものが殆どなので気をつけましょう)

それで、、、完成したところがコイツです。

0100
真っ黒・・・w
最近のPCパーツって黒いんですね。知らなかったw


0200
で、、、何気に選んだMSIのマザーボードですが、安い割にはしっかり出来てて感心しています。
(※過去某AS○○を選んだときは、コンデンサーなどがすぐに遣られてガッカリした思い出がありますw)

見て下さい!(写真が微妙でわかり辛いかもしれませんが・・・)
0300
ビデオカードを接続するPCI-E 3.0x16 slotがプラスチックではなく、金属で出来ています。
最近の重いビデオカードを装着すると、その重量に耐えきれずに歪んでくるのをコイツは防いでくれるのですよ。
 ※それでも一応ビデオカードは、ワイヤーで補強していますがね。。。(;^ω^)

あとは、USBポートも沢山あるし(2 x USB3.1 Gen2 / 8 x USB3.1 Gen1 / 6 x USB2.0)トータル16個!(笑)
更にマイコン開発に嬉しいレガシー規格のシリアルポート端子/パラレルポート端子も付いていました。
(外部に出すにはオプションのコネクターが必要ですが、過去に使ったマザーボードの余りパーツで沢山あるのでノープロブレム!)
まさか最新マザーでレガシーサポートしているとは思わなかったですよ。
また、おまけ?と思われるAUDIO機能もノイズも全く無くまともです。説明にはHighQuality Audio Capacitersって書いてあります。イイもの使っているんでしょうか?時代は変わったのか!?w
(昔さんざん外付けAUDIOカードを買っていたのは何だったのか?)

0400
高解像度で画像置いてますので、気になった人は拡大して詳細を見てみて下さいね♪


と言う事で、最新のPC(パーツ?)に触れてちょっとカルチャーショックを受けたのでありました・・・。
 ※もしかするとメイン機で使っているHPのPCよりも速いかも!?(;´Д`)

あ!、開発の事書いてない。。。

VR(3D?)関連はじめましたw


【おまけ】
Windowsをインストールする時にUEFIを使わずインストール(MBRブートってやつ)しまくってしまいました。
MBRからGPTに変更すると起動が速くなるので本当はGPTしたかったのですが、再度インストールし直すのは面倒だと思っていた所、Windows 10 Creators Updateには、標準で変換ツールが使えると言うので狂喜乱舞w
http://pc.watch.impress.co.jp/docs/news/1054773.html
さっそくPowerShellから呪文コマンド"mbr2gpt /convert /disk:0"を実行!
SSDでは、数秒間であっという間にGPTに変換されました。起動も速くなって満足です♪




  

横田基地日米友好祭2017に行ってきました

日本に台風が上陸横断すると言うとっても残念な天気の中開催された『横田基地日米友好祭2017』と言うものに行ってきました。
前年、たまたま友好祭前日に国道16号で横田基地の前を通ったらカメラを持った沢山の人達がいて、戦闘機が着陸していくのを目撃しました。
後日改めて調べたら友好祭なるものが開催されていることを知り、翌年に行くぞ!っと思ってついにその時がやってきました。

事前に調べると米軍の最強爆撃機B1-Bが展示されるという情報が!!!
さらに天気予報を見ると午前中は、雨が降らない感じだったので朝一に行く!のを心に誓い決行しました。

横田基地の会場には、駐車場は無く公共交通機関で来場するのが推奨されていたのでその通りに行く事に。
横田基地のある場所は、電車オンリーで行くと家からとてつもなく大変なので、途中八高線の駅まで車で行き有料パーキングに停めてから現地の駅(東福生)まで電車で移動しました。


開場予定時刻9:00です。その40分前に着いたのですが、すでに人も多く入場までに結構時間が掛かりました。
もっと早く行くべきでしょうか?(^^;)

つぅ事で、あとは写真で会場内の様子を・・・

0000
ゲート前です。

0100
やっとゲートをくぐれます!(がっつり持ち物検査アリ)
※基地内は治外法権です。アメリカです。犯罪するとアメリカの司法により罰せられます。
※入場には身分証などが必要です

0200
メイン会場の滑走路?まで歩いていきます。

0300
早々にパトリオットのお出迎えです。

0400
メインステージのある格納庫。まだ早いので人は少なめ。すぐに一杯になりました!

0500
すぐに輸送機が展示されていました。

0600
乗せてくれるみたいなのでバカ(自分)は、列に並びますw
これは、はっきり言って失敗しました。並んで待っている間(1時間以上)に会場内が人であふれかえりました。

0700
一応、コックピットに乗れたので良かったのですが・・・w
 ※長い列が最終的に一人ずつになる(コックピットで記念写真)ので時間が掛かっていた模様・・・

0800
ちゅう事で、会場内を散策。

0900
行けども行けども輸送機ばっかり・・・


1000
あっても大型ヘリ位・・・

1101
とりあえずグローバルホーク発見!

1102
無人機です。横田基地に配備されていたみたい。。。(思ってたよりもデカかった)

1200
野外ステージ

1300
滑走路端に日本庭園みたいなのと鳥居を発見。

1400
会場内(滑走路)が混んできました

1500
最初に空いていたメインステージ格納庫も劇混み!

1600
屋台で買えるハンバーガーなどアメリカンフードも長者の列
 ※本当は買いたかったけど、雨も降りそうだし並ぶのを断念しました


と言う事で、、、横田基地友好祭でした。(おみやげにアメリカンなケーキを買って帰りました。写真失念w)

てか、一番見たかった戦闘機やB1-B爆撃機は展示されていませんでした。
翌日の新聞には、社会情勢(北朝鮮関連)もあり展示が見送られたみたいに書かれていました。
残念ですが、仕方がないですね。

来年こそは、戦闘機を含めたメイン機を見に行きたい!
平和になってほしいものです。(*´ω`*)

PS.
例年は8月に行われているみたいです。
今年は9月でしかも台風が来る前だったので涼しかったですが、夏場だとこの広い会場はしんどいかもしれません。(>_<)

PS2.
横田基地のとなり(国道16号)は、よく通るので知っているつもりでしたが、実際に中に入ってみると横田基地はすごくデカかったです。
友好祭で全ての滑走路が使われているのかと思っていましたが、会場をうろついている時に輸送機が着陸してきてビックリしました。てか、まだ滑走路があったなんて・・・。(;´Д`)



HUAWEI MediaPad M3(8インチ WiFi版)なるものを買いました♪

家では、スマホではなく画面の大きなタブレットを使っています。
いままでNexus 7 (2013)を開発にも便利なので使っていたいたのですが、この機種の持病?であるGPSおよび回転センサーが動かなくなってしまいました。
(筐体を思いっきり圧し潰したりすると動作したりするのでダマしながら使っていましたw)
フレキ配線をきちんと接続し直せば治るとの話がありますが、もう結構使って古いのと裏ブタを空けるのに専用工具?も必要、中身が詰まっている様な事もあり修理は諦めました。

そこで、色々と次機種を探していたらスペックも高く、値段もほどほどに安いHUAWEIのMediaPad M3 8インチなるものがヒットしました。
今まで使っていたNexus7で、それなりに便利に使っていたNFCが搭載されていないのが残念ですが、NFCはメインで使っているスマホ(ZTE AXON7)で済ませる事にしました。
NFCが付いていない以外のスペックは、Nexus7よりも高く、CPU性能も向上、画面解像度も向上、指紋認証も付いていて良い事づくめです。

早速ポチりました!
P0100
最近の端末は、すごい綺麗に(オシャレに?)梱包されていますね!
P0200
※液晶保護フィルム、USBケーブル、充電用ACアダプター、簡易説明書などが付いています

と言う事で、まずは即電源を入れるのを我慢して満充電します。
※その間に付属の液晶保護もフィルム貼りまする・・・(;´Д`)
P0300
Nexus7には無かった通知LEDランプがついていました。(充電中は白っぽいオレンジ。満充電でグリーンが点灯します)
※ちなみにNexus7に無かったバイブレーションもありますヨ!

サイズ比較用にどうぞ・・・①
P0400
サイズ比較用にどうぞ・・・②
P0405

で、早速電源ON!

WiFiの設定をしたら速攻でバージョンアップの通知。
P0408
何も考えずバージョンアップします。(^^;)

で、、、使いやすくなる様に色々とアプリのインストールやら設定をしていきます。
※標準のランチャーだけは使い辛いので速攻でNova Launcherに変えましたw

ここで困ったのが、chromeブラウザがスマホUIモードになってしまう事。せっかくの大画面タブレットが台無しです。調べたら設定を変える事でタブレットモードで使えるとの事。これ先のバージョンアップから出来るようになったとの事。ヨカッタ!

方法は、設定画面から「画面」→「表示モード」→「小」にして再起動するとOKです。
P0410
これでこんな感じ↓で、PCみたいにタブを開いてブラウジングできます!P0500

てな感じで、大変便利に使い出しています。値段を考えるとお勧めです。

あと購入してから気付きましたが、スピーカーがステレオなんですよね。
AKM社製オーディオチップセットAK4376も搭載していて、それも相まって音が良いです♪

また画面もNexus7より1.4インチですが、大きくなったので電子書籍を見るのが実用的になりました。
DSCN53021
小さな文字も潰れずに見えます。解像度も高くなったのも見やすくなった要因と思います。(^^)/


ですが、、、唯一のネガな部分を書いておきましょう。
『バッテリー充電時間が長い』
容量が5100mAhもあります!が、急速充電未対応なのでそれなりです。これだけは仕方が無いので覚悟しておきましょう。(;´Д`)
『ちょっと重い』
Nexus7よりもちょっと重いっす!これも画面が大きくなったのと金属筐体(アルミ?)なので仕方がない部分です。その代わり質感はすごく良いです。


と言う事で、まとめとして色々とNexus7からの比較利点を書いてみましょう。
 ・処理速度が速い ※Kirin 950 オクタコア (4 x A72@2.3GHz + 4 x A53@1.8GHz)
 ・RAMが4GBと倍になっている
 ・画面が綺麗 ※8.4インチ 2560x1600 IPS液晶搭載
 ・通知ランプが付いている
 ・バイブレーションが付いている
 ・指紋認証が付いている
 ・ステレオスピーカー搭載
 ・マイクロSDカードが使える
 ・バッテリー容量が5100mAhと増大! ※Nexus7は3950mAhです
 ・カメラが綺麗!
てな感じでしょうか?NFC非搭載を除けば全ての面で進化しています!

それにしても、最近中華端末ばっかり買っているような気がします。
残念ですが、色々と比較すると日本のメーカー品は購入対象すら入りません。日本人としては辛いですが、これが現在の日本の実力だと思います。
※日本メーカーの方々、良いものを作ってくださ~い!

追伸:
自分で作ったOBD2アプリですが、MediaPad M3を標準状態で使うとメーター画面が残念な事になります。
上記のchromeブラウザーでの設定を変えれば、問題なくなりますが、近いうちに対策しようと思いますのでしばしお待ちください。
それにしても、こんな問題良く出てくるからAndroidの開発メンドイわぁ~(-_-;)


【広告】