我如何读取属性部分 "test" 中的一些结构参数?
how can i read some struct param in attribute section "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 中,我该怎么做?
修改
之前
#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.but 我不知道我该怎么做。
最后,我设置了 .data 旁边的部分 section.like this
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类型
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 中,我该怎么做?
修改 之前
#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.but 我不知道我该怎么做。
最后,我设置了 .data 旁边的部分 section.like this
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类型