STM32CubeIDEでfreeRTOSを使えます.
具体的には、STM32CubeMXを操作するとthreadをポコポコ生成できます.右画面でthreadの様々なparameterを設定できますが、何の意味なのかぜんぜん分かりません.なにせ初体験なもので.→参考サイト
お試しで3つのthreadを生成させるように設定したら、、、main.cに3つのloop()が出現しました.こんな風に.
void orange(void const * argument){
for(;;) {
osDelay(*((uint32_t*)argument));
}
}
void blue(void const * argument){
for(;;) {
osDelay(1);
}
}
void red(void const * argument){
for(;;) {
osDelay(1);
}
}
ふ~ん、便利でいい.
RTOS抜きのprogrammingだと単一のloop()内で、
・データ処理
・push SWをチェック
・host commandをチェック
・LED indicatorを点滅
などの数多くの仕事を1箇所でやるのでアタマを使います.
でもloop()の複数併存が許されるのでしたら、個々の仕事は個々のloop()でやらしとけばいいので脳みそがらくちんです.
世の中がRTOSいう理由がわかりました.
こないだprogramしたSTM32オシロもRTOSで作り直そうかな.
かしこ
>ふ~ん、便利でいい
返信削除「ようこそ、マルチxxの世界へ!」
>脳みそがらくちんです
皆、始めは「そうやって感激」します(笑)
※そのうち、それは「全く逆」であることに気づくのですが・・・ まぁ、
・「お互い全く無関係な処理」を、させてるウチは、「らくちん」な、ままですが。)
しかし、こんな「ワンチップマイコン風情」ですら、(ガチで)「マルチxx出来ちゃう」なんて、ホントに「隔世の感」がありますねぇ・・・
※しかも、STM32CubeIDE には、「専用画面」まであるんですね・・・ パソコン用の開発環境で有名な「Visual Studio」にすら、こんな画面無いですよ。
(なので、一々個別にプログラミングをしなければならない。とても大変です。)
まぁこれも、「ハード決め打ち」「プロプライエタリ」環境だから、出来る技なんでしょうが。
せまふぉ...
削除就職したばかりのころ、ソフト屋のレポートに「せまふぉ」と書かれていて「へんな言葉」と思いました.CPUはMC68000とかだったのかなあれは.
いまじゃSTM32F103とかいう安っちいCPUでも簡単に使えるのでナイスです.IDEが無料で使えるとかもナイスです.
>せまふぉ...
削除https://ja.wikipedia.org/wiki/%E9%A3%9F%E4%BA%8B%E3%81%99%E3%82%8B%E5%93%B2%E5%AD%A6%E8%80%85%E3%81%AE%E5%95%8F%E9%A1%8C
食事する哲学者の問題
の、解法で使うテクニックの一つですね。
※コンピュータ用語には「変な名前」なのが多いです。
「プロトコル」とかも、かつては「一般人が、一生出会うことが無い」ような言葉が語源だし。
なお、「セマフォ(semaphore)」自体は、鉄道由来らしいです。
削除(こういうのも、調べてくと思いもよらないものが出て来て、面白いです。)
そのスパゲッティのデッドロックの件って、解決法があるんですか.永久にダメというのがオチなのかと思っとったわたし.
削除俺だったらフォークを増やすとか考えてしまう粗暴哲学.
>解決法があるんですか
削除これは、「卒論の課題」みたいなものなので、
・自分で考えろ!
が、答えです(笑)
※実は、これには「模範解答」は無いです。
「有名な回答」の一部が、Wikipedia には載ってますが、コレが全てではありません。つい最近も、どこかで、
・「食事する哲学者の問題」の、新しい解法
というのを、聞いたような気がする。
そうですか、そうですか、計算機科学者もっとがんばれー
削除>コレが全てではありません。
削除・「模範解答」は無い
というか、
・唯一の正解は無い
と言うほうが、正しいか・・・
※あくまで「排他制御とは、何か?」を、考えるネタですので。よく出来た「抽象化」です。
現実のシステムは、
・もっと複雑怪奇
なので、ある意味「この程度も分からない奴」には、太刀打ちできません・・・
(「セマフォ」も、よく使われるけど、それだけ知ってれば『何とかなる』ワケでも無いし・・・この辺が「経験がモノを言う」ところでしょうか。)
↑の、「参考サイト」にも注意がありますが、この界隈では、
返信削除・プロセス
・タスク
・スレッド
(他にも、イロイロ言い方がある・・・)
は、「各者各様」で定義されてるので、互換性がありません。
(Aが言う「プロセス」がBで言う「タスク」とか、は、日常茶飯事。
なので、私は「マルチxx」と、↑で書いたのですが。)
※参考サイトのタイトル自体が、「スレッド(タスク)」って、書いてあるし(笑)
何処かの規格で「ハッキリ定義」して欲しいといつも思うが、私の知る限り、そのようなモノは無いです。まぁ、この技術自体が、未だに「発展途上」だからかも知れませんが。
ゲスの極み乙女。の楽曲に「スレッドダンス」というのがありました.JPOPになってしまうくらいなのでみんな「かっこいいからthread」が好きなのでしょう.わたしはUNIX星人なのでプロセスが好きです.
削除>「スレッドダンス」
削除「スレッド」(thread)は、直訳すると、「糸」なんですが、いわゆる、
・直線的に進むものや、そういう状態
の例えによく使われてますね。
※「スレッドダンス」何ソレ?と思いましたが、「(ブレイク)ダンスのテクニック」に、そう言うものがあるらしいですね。(この辺は疎いので、Google検索の受け売り)
>「ようこそ、マルチxxの世界へ!」
返信削除※なんか、これ自体が、
・何かのアニメのタイトル
みたいですね・・・(意図して書いたワケでは無いです。)
※私ももはや「アニメ脳」なのかも知れない
どっちかというとマルチ商法と思ってしまふ
削除「食事する哲学者の問題」は、
返信削除・古くて新しく、かつ、考察に値するテーマ
なので、知っておいたほうがいいと思います。
※前にも書いたと思いますが、「プロのプログラマー」でも、この辺になると、
「分かっていない」人が多いです(そして、この辺に起因する問題にハマる)
「近代的なシステム」では、避けて通れない話題で、かつ、実は知らずに「その恩恵にあずかっている」モノです。
※日本では、「小学校からプログラミングを教える」みたいですが、この辺は、ちゃんとカリキュラムに入ってんのかなー。見てないから知りませんが。
困った時はAIの調停にお任せを.(と悪魔は囁く)
削除小学生のプログラムってシーケンシャルなものを教えてるイメージなんだけど、まさかブール代数なんか教えてないだろうなぁ.
∧とか∪とか.....