Хочу разместить переменную во flash, а не в ОЗУ.
Сделал следующее:
1. В icf-файл линкера написал следующее:
Код
place at address mem: 0x0001000 { readonly section ConstSection1 };
2. Объявил переменную:
Код
typedef struct
{
int array[5];
int value2;
}TEST;
#pragma location = "ConstSection1"
__root const TEST test = {{0,1,2,3,4},100};
{
int array[5];
int value2;
}TEST;
#pragma location = "ConstSection1"
__root const TEST test = {{0,1,2,3,4},100};
В результате она все равно размещается в rw-data:
(из мап-файла:)
Цитата
ConstSection1 inited 0x400049f8 0x18 THROUGHPUT.o [1]
..............
test 0x400049f8 0x18 Data Gb THROUGHPUT.o [1]
..............
test 0x400049f8 0x18 Data Gb THROUGHPUT.o [1]
Если объявить test как const TEST test, то тогда размещается так, как я хочу:
Цитата
Section Kind Address Size Object
------- ---- ------- ---- ------
"A1": 0x3c
.intvec ro code 0x00000000 0x3c cstartup.o [4]
- 0x0000003c 0x3c
"A2": 0x18
ConstSection1 const 0x00001000 0x18 THROUGHPUT.o [1]
- 0x00001018 0x18
....................................................................
test 0x00001000 0x18 Data Gb THROUGHPUT.o [1]
------- ---- ------- ---- ------
"A1": 0x3c
.intvec ro code 0x00000000 0x3c cstartup.o [4]
- 0x0000003c 0x3c
"A2": 0x18
ConstSection1 const 0x00001000 0x18 THROUGHPUT.o [1]
- 0x00001018 0x18
....................................................................
test 0x00001000 0x18 Data Gb THROUGHPUT.o [1]
Компилятор : IAR ARM 5.0.
Мне бы очень хотелось, чтобы во флаш можно было размещать переменные без модификатора соnst, это сильно упростило бы мне жизнь. Такое возможно?