私は大きな懸念に直面しています。私は現在サンドイッチコースに参加しており、組み込みシステムでソフトウェアを開発する方法を自分で学んでいます。たまたま、open1788ボードでソフトウェアを開発しています。
LCD画面にちらつきが見られるので、ダブルバッファリング機能を実装することを計画しました。確かに描きながら形を見ることができます!
ダブルバッファリングを使用すると、画面全体の再描画が十分に速くなります。たぶん、クリッピングの管理を掘り下げて、必要な画面の一部だけを再描画する必要があるのでしょうか。しかし、それは問題ではありません。
そこで、ダブルバッファリングオプションの選択を処理するために、いくつかの関数を作成しました。ソフトウェアでダブルバッファリングを使用したくない場合は、メモリを割り当てません。そうでなければ私はします。
問題は、ヒープに割り当てられたデフォルトのスペースが最大1024バイトになることです。そして私の一時バッファの長さは261120バイトです!(高さ272ピクセルあたり幅481ピクセル、それぞれ16bpp)。
結果として、mallocはNULLを返しました。
私が取った最初の解決策は、静的バッファーを配置することです。つまり、次のようになります。
static WORD s_double_buf[481*272];
ただし、明らかな欠点は、ダブルバッファリングを使用しなくても割り当てられることです。
2番目の解決策は、構成ファイルを編集してヒープを大きくし、たとえば1048576バイト(0x100000)あたり1024バイトを置き換えることです。メモリスペースの節約に集中する必要があるため、このソリューションは好きではありません。
多分私は埋め込まれたプログラミングスキルをひどく逃しますか?それによると、最善の解決策は何ですか?どうすれば進歩できますか?データシートを読んだり掘り下げたりする私の厄介な能力についてはお話ししません。
誰かが私にプログラミングしているボードにほとんど付き添っている初心者のためのリファレンスを提供してくれたら本当にありがたいです。
前もって感謝します!