реклама на сайте
подробности

 
 
> Размещение констант по фиксированным адресам, IAR,AVR,C
west329_
сообщение Jan 30 2009, 10:23
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 378
Регистрация: 10-09-07
Из: UKR/Voz
Пользователь №: 30 423



Ув. подскажите как правильно прописывается массив констант на С в ИАР, только по фиксированному адрессу, хочу разместить его в конце флеш памяти, чтоб потом подручными средствами можно было прочесть прошивку и изманить нужные константы, не копаясь в самой прошивке.

Сообщение отредактировал west329_ - Jan 30 2009, 10:25
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Сергей Борщ
сообщение Jan 30 2009, 11:46
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



В скрипте линкера создаете свой сегмент (там много похожих строчек, разберетесь). В коде на С указываете #pragma location = имя сегмента. В коде на ассемблере - RSEG имя сегмента


Примеры - в документации, описании #pragma location и RSEG


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
west329_
сообщение Jan 30 2009, 12:53
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 378
Регистрация: 10-09-07
Из: UKR/Voz
Пользователь №: 30 423



Цитата(Сергей Борщ @ Jan 30 2009, 15:46) *
В скрипте линкера создаете свой сегмент (там много похожих строчек, разберетесь). В коде на С указываете #pragma location = имя сегмента. В коде на ассемблере - RSEG имя сегмента


Примеры - в документации, описании #pragma location и RSEG


в файле cfg3s.xcl

в пункте

//////////////////////////////////////////////////////////////////////////////
// Code (flash) segments
...
...
...
...
пишу следущее
-Z(CODE)MAIN_DATA_F=0x3FF0-0x3FFF



потом в файде маин
#pragma location = MAIN_DATA_F;



в итоге
Код
Error[Pe020]: identifier "MAIN_DATA_F" is undefined E:\RADIO\IAR4.21A\avr\tutor\eth_rem_dev_tcp-2.11\main.c 142
------
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jan 30 2009, 18:29
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Ну документацию-то надо было почитать...
Код
#pragma segment = "MAIN_DATA_F"
#pragma location = "MAIN_DATA_F"

const __flash unsigned char my1[] =
{
    0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88,
    0x99,0xAA,0xBB,0xCC,0xDD,0xEE,0xFF,0x11
};


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th July 2025 - 12:54
Рейтинг@Mail.ru


Страница сгенерированна за 0.014 секунд с 7
ELECTRONIX ©2004-2016