2024年4月21日日曜日

BlackpillというSTM32 board(7)freeRTOS初体験

中華STM32基板のBlackpillを味見しています.

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で作り直そうかな.

かしこ

16 件のコメント:

  1. >ふ~ん、便利でいい
    「ようこそ、マルチxxの世界へ!」
    >脳みそがらくちんです
    皆、始めは「そうやって感激」します(笑)
    ※そのうち、それは「全く逆」であることに気づくのですが・・・ まぁ、
    ・「お互い全く無関係な処理」を、させてるウチは、「らくちん」な、ままですが。)

    しかし、こんな「ワンチップマイコン風情」ですら、(ガチで)「マルチxx出来ちゃう」なんて、ホントに「隔世の感」がありますねぇ・・・
    ※しかも、STM32CubeIDE には、「専用画面」まであるんですね・・・ パソコン用の開発環境で有名な「Visual Studio」にすら、こんな画面無いですよ。
    (なので、一々個別にプログラミングをしなければならない。とても大変です。)
    まぁこれも、「ハード決め打ち」「プロプライエタリ」環境だから、出来る技なんでしょうが。

    返信削除
    返信
    1. せまふぉ...
      就職したばかりのころ、ソフト屋のレポートに「せまふぉ」と書かれていて「へんな言葉」と思いました.CPUはMC68000とかだったのかなあれは.
      いまじゃSTM32F103とかいう安っちいCPUでも簡単に使えるのでナイスです.IDEが無料で使えるとかもナイスです.

      削除
    2. >せまふぉ...
      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
      食事する哲学者の問題
      の、解法で使うテクニックの一つですね。
      ※コンピュータ用語には「変な名前」なのが多いです。
      「プロトコル」とかも、かつては「一般人が、一生出会うことが無い」ような言葉が語源だし。

      削除
    3. なお、「セマフォ(semaphore)」自体は、鉄道由来らしいです。
      (こういうのも、調べてくと思いもよらないものが出て来て、面白いです。)

      削除
    4. そのスパゲッティのデッドロックの件って、解決法があるんですか.永久にダメというのがオチなのかと思っとったわたし.
      俺だったらフォークを増やすとか考えてしまう粗暴哲学.

      削除
    5. >解決法があるんですか
      これは、「卒論の課題」みたいなものなので、
      ・自分で考えろ!
      が、答えです(笑)
      ※実は、これには「模範解答」は無いです。
      「有名な回答」の一部が、Wikipedia には載ってますが、コレが全てではありません。つい最近も、どこかで、
      ・「食事する哲学者の問題」の、新しい解法
      というのを、聞いたような気がする。

      削除
    6. そうですか、そうですか、計算機科学者もっとがんばれー

      削除
    7. >コレが全てではありません。
      ・「模範解答」は無い
      というか、
      ・唯一の正解は無い
      と言うほうが、正しいか・・・
      ※あくまで「排他制御とは、何か?」を、考えるネタですので。よく出来た「抽象化」です。
      現実のシステムは、
      ・もっと複雑怪奇
      なので、ある意味「この程度も分からない奴」には、太刀打ちできません・・・
      (「セマフォ」も、よく使われるけど、それだけ知ってれば『何とかなる』ワケでも無いし・・・この辺が「経験がモノを言う」ところでしょうか。)

      削除
  2. ↑の、「参考サイト」にも注意がありますが、この界隈では、
    ・プロセス
    ・タスク
    ・スレッド
    (他にも、イロイロ言い方がある・・・)
    は、「各者各様」で定義されてるので、互換性がありません。
    (Aが言う「プロセス」がBで言う「タスク」とか、は、日常茶飯事。
    なので、私は「マルチxx」と、↑で書いたのですが。)
    ※参考サイトのタイトル自体が、「スレッド(タスク)」って、書いてあるし(笑)
    何処かの規格で「ハッキリ定義」して欲しいといつも思うが、私の知る限り、そのようなモノは無いです。まぁ、この技術自体が、未だに「発展途上」だからかも知れませんが。

    返信削除
    返信
    1. ゲスの極み乙女。の楽曲に「スレッドダンス」というのがありました.JPOPになってしまうくらいなのでみんな「かっこいいからthread」が好きなのでしょう.わたしはUNIX星人なのでプロセスが好きです.

      削除
    2. >「スレッドダンス」
      「スレッド」(thread)は、直訳すると、「糸」なんですが、いわゆる、
      ・直線的に進むものや、そういう状態
      の例えによく使われてますね。
      ※「スレッドダンス」何ソレ?と思いましたが、「(ブレイク)ダンスのテクニック」に、そう言うものがあるらしいですね。(この辺は疎いので、Google検索の受け売り)

      削除
  3. >「ようこそ、マルチxxの世界へ!」
    ※なんか、これ自体が、
    ・何かのアニメのタイトル
    みたいですね・・・(意図して書いたワケでは無いです。)
    ※私ももはや「アニメ脳」なのかも知れない

    返信削除
    返信
    1. どっちかというとマルチ商法と思ってしまふ

      削除
  4. 「食事する哲学者の問題」は、
    ・古くて新しく、かつ、考察に値するテーマ
    なので、知っておいたほうがいいと思います。
    ※前にも書いたと思いますが、「プロのプログラマー」でも、この辺になると、
    「分かっていない」人が多いです(そして、この辺に起因する問題にハマる)
    「近代的なシステム」では、避けて通れない話題で、かつ、実は知らずに「その恩恵にあずかっている」モノです。

    ※日本では、「小学校からプログラミングを教える」みたいですが、この辺は、ちゃんとカリキュラムに入ってんのかなー。見てないから知りませんが。

    返信削除
    返信
    1. 困った時はAIの調停にお任せを.(と悪魔は囁く)

      小学生のプログラムってシーケンシャルなものを教えてるイメージなんだけど、まさかブール代数なんか教えてないだろうなぁ.
      ∧とか∪とか.....

      削除