STM32F411REを使用しています。RAMにメモリがなくなったので。大きな変数をフラッシュに保存することにしました。そのために、 にセクションを作成しましたsection.ld
。
.large_buffer: ALIGN(4)
{
. = ALIGN(4) ;
*(.large_buffer.large_buffer.*)
. = ALIGN(4) ;
} >FLASH
ファイルではmain.c
、次のように変数を宣言します。
uint8_t buffer[60 * 200] __attribute__ ((section(".large_buffer"), used));
この時点ですべて問題ありません。バッファは RAM (bss) にストックされていません。アクセスして書き換えることができます。
buffer[25] = 42;
printf("%d\n", buffer[25]); // 42
問題は、他のファイルから変数を編集したいときに発生します。
main.c
uint8_t buffer[60 * 200] __attribute__ ((section(".large_buffer"), used));
int main()
{
myFunc(buffer);
}
other.c
myFunc(uint8_t* buffer)
{
buffer[25] = 42;
printf("%d\n", buffer[25]); // 0
}
buffer
別のファイルで変更されることはありません (パラメーターとして渡されます)。
私は何か見落としてますか ?