FreeRTOS(with IoT libraries)について質問

マイコン初心者です。

いつもかふぇルネから情報を頂き、RX72N-Envisonキットでプログラムを突いています。

今回FreeRTOS(Kernel-Only)で数個のtaskを登録し期待した動作が
出来たのではと思い、FreeRTOS(with IOT libraries)に手をのばし始めました。
これについて質問ポストします。よろしくお願いします。

Kernel-Only版ではSocket機能を含んでいないのでこれを組み込みたいと考えています。
(PCとのローカル通信機能のみ)
T4-もありますが、FreeRTOS+TCPが提供されているので試そうと考えました。

環境:
IDE:E2Studio 2022-07
コンパイラ:GCC 8.3.0.202202(E2Studio:2022-07)
arf:【v202012.00-rx-1.0.2】
基板:RX72N Envision Kit

1. afr  FreeRTOS(with IOT libraries)のお勧めバージョンがありましたらお教えください。
   ダウンロード時、日付では2021xx.xx.-rx-x.x.xなど沢山見えますが
   ダウンロードすると途中で止まり、成功率が良くありません。
   使用中のプロバイダに問題が有るのと思いますが、何度もトライし取得したいと思います。

   また、新規プロジェクト作成時以外で、FreeRTOS(with IOT libraries)の希望バージョンの
   取得方法がありましたらお教えください。

【afr-v202012.00-rx-1.0.2】は何度かトライし成功しました。


2. プロジェクト生成のオブジェクト削減方法がありましたらお教えください。
    afrを指定し新規プロジェクト生成で大量のソースが得られ、コンパイルすると約900kBオーバーです。
   また、RAM、RAM2空間何れも使用され、GLCD用バッファが確保できない状況でです。
   そこでフォルダ【application_code】-【demos】下の【include】と【network_manager】以外は削除。
(一部関数などは別モジュールに保存)
  また【libraries】の一部も削除。結果 bssも含めRAM領域に詰めることができました(?)。
(これでRAM2領域を空け GLCD用バッファ確保できるの状態かと思っています。map情報では)
  LEDチカチカタスク(Kernel-Onlyと同じ処理)とソケットタスクで(main記載の関数から起動)
  LED点滅とPCからのPINGは確認できました。(簡単なメッセージ通信も含め)

  この削除手順をプロジェクト作成時(E2Studioのインポート機能などで)で選択することは
  可能でしょうか? 可能ならお教えください。(削除作業はカット&トライで確認です)


3. afrのマニュアルの入手法をご存知でしたらお教え願います。
  上記の様に資料も確認しないで行った為、誤りが多々あると思われますので確認したいと
  考えています。

以上、よろしくお願い致します。

  • NoMaYさん、 こんにちは。
    マイコン初心者です。

    記載内容不備で内容不案内になり申し訳ありません。
    今回箇条書き頂いた内容の通りです。
    ありがとうございます。

    glcdc_initialize()内で、R_GLCDC_Open(&glcdc_init_cfg)を実行すると
    LCD表示はしませんが表示のためのスキャン動作が始まるようです。
    (VPOS割り込みがこれ以降発生しブレークしました)

    同様なことを行っている方がいましたら情報お願いします。

  • 皆さん こんにちは。

    マイコン初心者です。


    その後、今回の環境を試されてる方からの情報がありませんでしたので
    GCLDCのVPOS割り込み無しで試しています。

    これまでFreeRTOSでのソケット通信でPCとローカル通信が
    可能となったので、タイムサーバーから時間情報を得ようと調べたところ
    以下に記載がありました。(既に試された方も居るかとは思いますが)
    <aws.amazon.com/.../>

    この環境は以下のgithubからライブラリとデモアプリが入手でします。
    興味のある方参照してみてください。
    <github.com/.../coreSNTP>
    <github.com/.../coreSNTP_Windows_Simulator>

    【demo_config.h】に以下を追加して試しました(設定値が正しいかは不明ですがエラーになるので)
        #define democonfigLIST_OF_TIME_SERVERS "time.cloudflare.com", "pool.ntp.org"
        #define democonfigLIST_OF_AUTHENTICATION_SYMMETRIC_KEYS
        #define democonfigLIST_OF_AUTHENTICATION_KEY_IDS
        #define democonfigSNTP_CLIENT_POLLING_INTERVAL_SECONDS (1000) //1秒
        #define pkcs11AES_CMAC_SIGNATURE_LENGTH (16UL)
        #define pkcs11configLABEL_CMAC_KEY "CMAC Key"

        以下はafrの別ファイルで定義済みでしたので適当な名前に変更
        #define democonfigDEMO_STACKSIZE configMINIMAL_STACK_SIZE

    【SNTPClient.c】修正
        xPlatformIsNetworkUp() が無いのでFreeRTOS_IsNetworkUp()に変更

        以下はワーニング対応(無視でも可?)
           以下の関数の第1引数 &pBackoffContextをpBackoffContextに変更
              BackoffAlgorithm_InitializeParams
              BackoffAlgorithm_GetNextBackoff
          その他複数のワーニングにはキャストで対応(スタックへの配列確保は無視)

    デモはSNTPクライアントタスクと、時間取得タスクが準備されていてます。
    SNTPクライアントタスクは以下の周期で取得しました(お試しのため早いですが)
    vTaskDelay( pdMS_TO_TICKS( systemClock.pollPeriod * 60 ) ); // 1分=1秒*60
    (時間情報はターミナル(SCI2)に出力されるので確認可能)

    以上