Как я могу прочитать некоторые структурные параметры в разделе атрибута "тест"? - PullRequest
0 голосов
/ 27 февраля 2020

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_des c тип. но фактический результат - ошибка. я думаю, может быть, я не могу поместить раздел в .data, как я могу это сделать?

Ответы [ 2 ]

1 голос
/ 02 марта 2020

Наконец, я устанавливаю раздел рядом с разделом .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,
                        };

ожидаемый результат, который я могу получить, и параметр не является константным типом.

0 голосов
/ 28 февраля 2020

изменить до

#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.но я не знаю, как я могу это сделать.

...