Цитата(scifi @ Jan 15 2015, 14:22)

Там есть забавная прагма include_alias.
Спасибо, этот вариант подходит! Только код пришлось написать немного по-другому:
Код
#pragma include_alias("math.h", "safemath.h")
#pragma include_alias(<math.h>, <safemath.h>)
Цитата(jcxz @ Jan 15 2015, 14:14)

RAM - это не секция, это одна из целевых областей линковки.
Я говорил о выходных секциях компилятора (для IAR это: .text, .bss и т.п.).
Часто бывает что в библиотеках определяют собственные имена секций, для возможности более оптимально размещать их в памяти.
Хорошо, но bss - это тоже стандартная секция.
Цитата
В icf-файле:
place in MPU_RO_mem {section .bss object errno.o};
Попробовал так:
define region MPU_region = mem:[from 0x20000000 to __ICFEDIT_region_RAM_start__ - 1];
place in MPU_region {section .bss object errno.o};
// Place in RAM_region .data, .bss, and .noinit
place in RAM_region { readwrite };Возможно place in RAM_region перекрывает директиву place in MPU_region - __iar_Errno у меня остался на прежнем месте в RAM.
Цитата
Минус такого способа конечно в том, что гранулярность защиты памяти в MPU довольно большая (дискретность границ вроде около 1 кБ).
Вроде бы нет. Регистр MPU_RASR в Cortex-M4:
Bits 5:1 SIZE: Size of the MPU protection region.
The minimum permitted value is 3 (b00010), see SIZE field values for more information.
Bit 0 ENABLE: Region enable bit.
SIZE field values
The SIZE field defines the size of the MPU memory region specified by the MPU_RNR
regsiter as follows:
(Region size in bytes) = 2(SIZE+1)
The smallest permitted region size is 32B, corresponding to a SIZE value of 4.Цитата
Правда косяк, что прерывание будет происходить и при модификации __iar_Tls_setup___iar_Errno если она будет случаться. Это нужно будет учесть в ISR.
А в ISR MPU можно получить, скажем, адрес функции, которая вызвала прерывание?
Цитата
Зато будет польза что разобрались с ним

Честно говоря, сейчас скорее всего не будет на это времени. Но разобраться все равно хотел бы

.
XeniaВариант интересный, спасибо. Хотя у нас подключается math.h, но через алиас можно и xmath.h подключить. Перекомпиляция нужна, если меняется один из дефайнов, используемых в библиотеке? Я этим никогда не занимался, не представляю как это делается, хотя сейчас наверно и не понадобится.
Еще раз всем спасибо за ответы! Вопрос в принципе решен

.
Сообщение отредактировал cyrax0 - Jan 15 2015, 13:48