Я использую MPC5644A freescale EVB board.Как определить константную переменную в ОЗУ?
Мне нужно найти способ определения константной переменной в ram. Так что в файле LCF я указал эту переменную на расположение RAM mpc5644. Но во время выполнения я принимаю IVOR1, как я ожидал.
Существует одно основное правило. Я не могу изменить тип или имя переменной const. Но мне нужно использовать эти переменные в ОЗУ с определенной областью, как «calibration_ram»
Любая помощь может быть такой хорошей.
Мой C Источник, как показано ниже:
#pragma push /* Save the current state */
#pragma section sconst_type ".__cal_DataArea"
volatile const real32_T freq2rpm;
volatile const real32_T high_voltage;
#pragma pop
...
МОЙ LCF Файл:
MEMORY
{
calibration_ram : org = 0x40040000, len = 0x00010000
...
SECTIONS
{
.__bam_bootarea LOAD (ADDR(resetvector)): {} > resetvector
.__cal_DataArea LOAD (ADDR(calibration_ram)): {} > calibration_ram
...
Я не совсем понимаю ваш вопрос. Вы хотите 'const' в ОЗУ? скомпилируйте его. Вы хотите его в определенном месте? Вы, кажется, достигли этого (или находитесь на вашем пути. Файлы дескриптора компоновщика очень специфичны для цепочки инструментов, поэтому я не могу сказать, правильно ли вы выполняете какой-либо безымянный набор инструментов, который вы используете). Если вы хотите что-то другое, объясните, что вы хотите выполнить. –
Вы используете компилятор Codewarrior, правильно? И действительно, этот вопрос не имеет никакого смысла в микроконтроллере на основе флеш-памяти. Если вы хотите константу, поставьте ее во flash. Если вам нужна непостоянная, но она в ОЗУ, период. – Lundin
В любом случае, я далек от мастера сценария компоновщика, но попробуйте это: '#pragma section sconst_type" .__ cal_DataArea "" .__ cal_DataArea " __declspec (раздел" .calibration_ram ")'. Насколько я могу судить, файл LCF выглядит нормально. – Lundin