ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Вторник
26 ноября
823486 Топик полностью
misyachniy (13.03.2018 16:43, просмотров: 142) ответил Bill на А вам константа эта зачем?
Нужно поделить память в скрипте для boot и app секций Для cortex M0 нужно определять ROM для кода, и RAM где хранить вектора преложения. Хочу чтобы в случае передела территории памяти менять только скрипт линкера В программе чтото-типа такого: extern const char *__ICFEDIT_region_ROM_start__; extern volatile uint32_t *__ICFEDIT_region_APP_VECTOR__start__; volatile uint32_t *VectorTable; void remapMemToSRAM( void ) //copy the vector table to SRAM { VectorTable = __ICFEDIT_region_APP_VECTOR__start__; for(uint32_t vecIndex = 0; vecIndex < 48; vecIndex++) { VectorTable[vecIndex] = *(__ICFEDIT_region_ROM_start__ + (vecIndex << 2)); } // __HAL_SYSCFG_REMAPMEMORY_SRAM(); SYSCFG->CFGR1 &= ~(SYSCFG_CFGR1_MEM_MODE); SYSCFG->CFGR1 |= (SYSCFG_CFGR1_MEM_MODE_0 | SYSCFG_CFGR1_MEM_MODE_1); } ЫЫукпу писал: "С точки зрения линкера image_application_start это метка. Значение этой метки (адрес куда она указывает) равно 0x08002000. А в программе на С это целая переменная расположенная по адресу 0x08002000." __ICFEDIT_region_ROM_start__ берет правильно. __ICFEDIT_region_APP_VECTOR__start__ почему-то не хочет корректно присваивать значение указателя. Я присваиваю указателю указатель, должно копировать "буква в букву". Похоже линкер меня не понимает. В руководстве на компилятор написано, что можно создать что угодно:
Creating an exported configuration symbol by using the command line option --config_def or the configuration directive define symbol, and exporting the symbol using the export symbol directive. ILINK will create a public absolute constant symbol that the application can use as a label, as a size, as setup for a debugger, etc. One advantage of this symbol definition is that this symbol can also be used in expressions in the configuration file, for example to control the placement of sections into memory ranges.
Пока поставил костыль заменив в c файле __ICFEDIT_region_APP_VECTOR__start__ на 0x20000000. Будет время подправлю.