こんにちは、皆さん
私は、カスタム LED ディスプレイ パネルを駆動するために、ベアメタル C プロジェクト(OS なし) でMIMXRT1064-EVKを使用しています。
私はMCUXpresso IDE 25.6.136を使用しています最新の SDKs を使用します。
ソフトウェアスタック
レベルGL: 9.2.1
フリータイプ: 2.13.3
ハーフバズ: 8.3.0
RTOSなし – 純粋なベアメタル
HarfBuzz + FreeType を追加した目的は、LVGL の組み込みレンダラーがインド系文字 (マラヤーラム語、デーヴァナーガリー文字の合字、マトラなど) を処理できないため、インド系文字の複雑なテキスト形成をサポートすることです。
フォント
アンジャリオールドリピ-レギュラー (マラヤーラム語)
NotoSansDevanagari
フォントは埋め込みC配列形式でFlashに保存されます。
FreeType (FT_New_Memory_Face) 経由でメモリにロードされます
メモリ・コンフィグレーション
スタック: SRAM_DTCに 32 KB 配置
ヒープ: SRAM_OC2に 256 KB
ヒープ増加に使用される_sbrk_r()実装
問題
HarfBuzz を介してインド語のテキストを形成する場合、システムは最終的にHardFault_Handlerに入ります。
障害は次の内部で発生します:
これは、HarfBuzz が複雑なシェーピング中に GSUB/GPOS ルックアップを適用するときに発生するようです。
これまでのSOの観察
ヒープサイズは十分に大きく(256 KB)、SRAM_OC2 に配置されています。
スタックは32KB(DTCM)
Linuxでは同じライブラリバージョンを使用してもフォントは有効で、正しい形状になります。
HarfBuzzシェーピング中にCortex-M7ベアメタルでクラッシュが発生する
ENOMEMは_sbrk_r()から以前に見られましたが、ヒープを増やした後もハードフォールトは発生します
コミュニティへの質問
Cortex-M7 で HarfBuzz を使用する場合、既知のスタック深度の要件や落とし穴はありますか?
GSUB/GPOS OpenType ルックアップ テーブルには、OCRAM での特定の配置または MPU 設定が必要ですか?
インド語のテキストを形成する場合、FreeType + HarfBuzz には 32 KB のスタックは小さすぎますか?
MCU 上のHarfBuzz メモリ最小化に推奨されるビルド フラグはありますか?
RT106x シリーズでマラヤーラム語/デーバナーガリ語のシェーピングを正常に実行できた人はいますか?
あらゆるガイダンス、推奨されるリンカーの変更、またはメモリ設定の例があれば、大変助かります。
ありがとう、
アイスワリヤ