現在、STM32CubeMx と Keil uVision を使用して STM32F407 用のアプリケーションを開発しています。組み込みシステムでの動的メモリ割り当てがほとんど推奨されていないことは知っていますが、インターネット上のスポットからスポットへと、それを支持するいくつかの議論を見つけることができます.
私の発明家魂のために、私はそれをやってみたいと思っていましたが、安全に行ってください。着信 UART メッセージ用に動的に割り当てられた fifo を作成し、メッセージ自体とその長さで構成される構造体を保持していると仮定しましょう。ただし、すべてのヒープサイズを消費したくないので、どれだけ残っているかを確認したいと思います:私の新しい(?)アイデアは、メモリの大きなチャンク(たとえば 100 文字)を一時的に割り当ててみることです-成功した場合は着信メッセージを受け入れ、そうでない場合は、ヒープが不足していることを意味し、メッセージを無視します(または受け入れて最も古いメッセージをキューから取り出します)。チェックした後、もちろん一時メモリを解放します。
いくつかの疑問が頭に浮かびます:
- まず第一に、それはまったく理にかなっていますか?あなたの経験に基づいて、それは便利で安全だと思いますか?
- ESでRAMを正確に共有しているものについての正確な情報を見つけることができなかったので(ヒープ、スタック、および揮発性変数について知っています)、私の質問は次のとおりです。上記のコントローラーに一時メモリチェッカーを選択しますか?
- マイクロ自体について-192kBのRAMがありますが、Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm\startup_stm32f407xx.sファイルでは、512B + 1024Bのみがヒープとスタックに割り当てられています-それはほとんどありません、百日咳を残して、揮発性変数用に 190kB を残しますか? ヒープサイズを 50kB に増やすのは賢明でしょうか? はいの場合、このファイルで直接実行しますか、それとも別の場所で実行する方が良い方法ですか?
おそらく、「安全な動的メモリ」と「埋め込み」が 1 つの投稿に含まれていると、衝撃的で眩しいと感じる人もいるでしょうが、これは実験であり、新しい地平を模索していることを覚えておいてください :) ありがとうございます。