как я могу прочитать некоторые параметры структуры в разделе атрибутов "test"?
Test .h
struct test_desc {
const char *name;
}
#define PFM_TEST(a,name) struct test_desc a \
__attribute__((section("test"))) = {name}
test.c
PFM_TEST(name1,abc);
PFM_TEST(name2,dec);
main.c
#pragma section = "test"
void main(void)
{
struct struct test_desc *start,*stop;
start = (struct test_desc *)__section_begin("test");
stop = (struct test_desc *)__section_end("test");
printf("start->name = %s\n",start->name);
}
test.icf
define symbol __ICFEDIT_region_TEST_start__ = (0x10080000);
define symbol __ICFEDIT_region_TEST_end__ = (0x100DFFFF);
define region TEST_region = mem:[from __ICFEDIT_region_TEST_start__ to __ICFEDIT_region_TEST_end__];
keep { section test};
place at start of TEST_region {readwrite,section test};
фактический результат
hard fault patch...
ожидать результата
start->name = abc
Я могу прочитать начальный и конечный адрес тестового раздела, думаю, я мог бы использовать их как тип test_desc. но на самом деле результат - ошибка. я думаю, может я не могу поместить раздел в.data, как я могу это сделать?
2 ответа
Решение
Наконец, я установил раздел рядом с разделом.data. Вот так
define block .ram_image2.data with fixed order{ section .data*,
section DATA,
section test*,
section .iar.init_table,
section __DLIB_PERTHREAD,
block CPP_INIT,
};
ожидайте результат, который я могу получить, и параметр не является типом const.
Изменить до
#define PFM_TEST(a,name) struct test_desc a \
__attribute__((section("test"))) = {name}
позже
#define PFM_TEST(a,name) const struct test_desc a \
__attribute__((section("test"))) = {name}
он может получить ожидаемый результат, но я не хочу, чтобы структура была константной. Я думаю, что мне нужно поместить этот раздел в нужную память, например.data. Но я не знаю, как это сделать.