16+
Вторник
25 сентября
Вход |Карта сайта | |Upload |codebook | PARTS

 О смысле всего сущего 0xFF

 Средства и методы разработки

 Мобильная и беспроводная связь

 Блошиный рынок Объявления

caxapa

Микроконтроллеры ARM 

AVR PIC MSP PLD,FPGA,DSP 

Кибернетика Технологии 

Схемы, платы, компоненты 

ARM-контроллеры

 
   Новая тема Правила Регистрация Поиск »» Архив
Вернуться в конференциюТопик полностью
misyachniy  (13.03.2018 16:43) , в ответ на А вам константа эта зачем? автор: 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. Будет время подправлю.
Главная | Карта сайта | О проекте | Проекты | Файлообменник | Регистрация | Вебмастер | RSS
Лето 7527 от сотворения мира. При использовании материалов сайта ссылка на caxapу обязательна.
MMI © MMXVIII