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

 
 
> Разместить переменную во flash без модификатора const, Как?
Dreamer
сообщение Nov 6 2009, 15:18
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 51
Регистрация: 13-01-06
Из: Санкт-Петербург
Пользователь №: 13 154



Здравствуйте.
Хочу разместить переменную во flash, а не в ОЗУ.
Сделал следующее:

1. В icf-файл линкера написал следующее:
Код
place at address mem: 0x0001000 { readonly section ConstSection1 };


2. Объявил переменную:
Код
typedef struct
{
    int array[5];
    int value2;
}TEST;

#pragma location = "ConstSection1"
__root const TEST test  = {{0,1,2,3,4},100};


В результате она все равно размещается в rw-data:
(из мап-файла:)
Цитата
ConstSection1 inited 0x400049f8 0x18 THROUGHPUT.o [1]
..............
test 0x400049f8 0x18 Data Gb THROUGHPUT.o [1]


Если объявить test как const TEST test, то тогда размещается так, как я хочу:


Цитата
Section Kind Address Size Object
------- ---- ------- ---- ------
"A1": 0x3c
.intvec ro code 0x00000000 0x3c cstartup.o [4]
- 0x0000003c 0x3c

"A2": 0x18
ConstSection1 const 0x00001000 0x18 THROUGHPUT.o [1]
- 0x00001018 0x18
....................................................................
test 0x00001000 0x18 Data Gb THROUGHPUT.o [1]


Компилятор : IAR ARM 5.0.

Мне бы очень хотелось, чтобы во флаш можно было размещать переменные без модификатора соnst, это сильно упростило бы мне жизнь. Такое возможно?


--------------------
Все врут (с) /M.D.House/
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Dreamer
сообщение Nov 17 2009, 10:57
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 51
Регистрация: 13-01-06
Из: Санкт-Петербург
Пользователь №: 13 154



Сергей Борщ. Вы абсолютно правильно меня поняли.

Цитата
Автору надо передать в функцию указатель на данные, размещенные во флешь. Функция ингода (в зависимости от других параметров) может модифицировать передаваемые ей по указателю данные (поэтому автор не может объявить параметр как указатель на константу), но в моменты вызова функции с указателем на флешь другие параметры не допускают такой модификации.


Модифицировать эти данные мне действительно не нужно.

Цитата
Просто не догадался, потом наконец-то так сделал, отписал: "сейчас так и сделано"

Сначала (до поднятия темы на форуме) было сделано так:
1. Функции принимали значения на НЕ КОНСТАНТЫ, так как в зависимости от других параметров в ней возможна модификация.
2. Были объявлены дефолтные значения структур как const .
3. Перед вызовом функции делалось следующее - в стеке создавался экземпляр структуры НЕ константной, с помощью memcpy в него копировалось значение константной структуры, и вызывалась пресловутая функция.

Во многих местах, как выяснилось, мне оказалось достаточным дефолтных значений структуры, и создавать лишний объект в стеке (или в хипе) только лишь ради корректного приведения указателей мне показалось лишним, я хотел соптимизировать этот момент, перебрал несколько идей - в том чиле и этот пост, так как повторюсь, в Кейле для 51 процессоров, с которыми я работал до этого процессора, это прокатывало.
Приведение указателя "конст" к "не конст" с помощью круглых скобок при вызове функции мне не показалось лучшим решением.
Но на данный момент я оставил это место как есть и иду дальше, так как сроки проекта короткие, и если вдаваться в глубокие рассуждения на тему "кто круче, а кто дурак" - то так я точно в сроки не уложусь. Пусть лучше считают дураком, но при этом делается мое дело. А обсуждать что-либо на форуме больше не хочу. Перехожу обратно в разряд читателей.


--------------------
Все врут (с) /M.D.House/
Go to the top of the page
 
+Quote Post
zltigo
сообщение Nov 17 2009, 11:16
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Dreamer @ Nov 17 2009, 13:57) *
Сергей Борщ. Вы абсолютно правильно меня поняли.
...
Модифицировать эти данные мне действительно не нужно.

Э... вообще-то это взаимоисключающие утверждения sad.gif


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Dreamer   Разместить переменную во flash без модификатора const   Nov 6 2009, 15:18
- - zltigo   Цитата(Dreamer @ Nov 6 2009, 18:18) Такое...   Nov 6 2009, 17:43
- - Dreamer   ЦитатаЭ.... ЗАЧЕМ!??? Думаете, что ее сможете ...   Nov 9 2009, 08:20
|- - GetSmart   Цитата(Dreamer @ Nov 9 2009, 14:20) Мне ж...   Nov 9 2009, 08:30
|- - HARMHARM   Гуглите const correctness. Нормально написанная фу...   Nov 9 2009, 08:35
|- - zltigo   Цитата(HARMHARM @ Nov 9 2009, 11:35) Норм...   Nov 9 2009, 09:03
- - Dreamer   GetSmart, с принудительным преобразованием типов п...   Nov 9 2009, 11:22
|- - zltigo   Цитата(Dreamer @ Nov 9 2009, 14:22) А выс...   Nov 9 2009, 11:50
- - Dreamer   zltigo, Почему вы считаете, что если по вашему мн...   Nov 9 2009, 13:07
|- - zltigo   Цитата(Dreamer @ Nov 9 2009, 16:07) счита...   Nov 9 2009, 13:33
- - KRS   А чего вы хотите? Как линкер может разместить данн...   Nov 9 2009, 13:17
- - Dreamer   ЦитатаКак линкер может разместить данные которые м...   Nov 9 2009, 13:33
- - Dreamer   ЦитатаДа, Ваши "желания" это показывают ...   Nov 9 2009, 13:50
|- - zltigo   Цитата(Dreamer @ Nov 9 2009, 16:50) Какое...   Nov 9 2009, 14:21
- - V_G   Цитата(Dreamer @ Nov 7 2009, 01:18) Здрав...   Nov 9 2009, 14:26
|- - Сергей Борщ   Цитата(V_G @ Nov 9 2009, 16:26) В xmega е...   Nov 9 2009, 16:49
|- - defunct   Цитата(V_G @ Nov 9 2009, 16:26) Например,...   Nov 13 2009, 13:26
|- - V_G   Цитата(defunct @ Nov 13 2009, 23:26) Таки...   Nov 13 2009, 15:00
|- - zltigo   Цитата(V_G @ Nov 13 2009, 18:00) К Вашему...   Nov 13 2009, 15:31
||- - V_G   Согласен, есть определенная путаница с терминологи...   Nov 14 2009, 00:44
||- - zltigo   Цитата(V_G @ Nov 14 2009, 03:44) Заглянит...   Nov 14 2009, 01:22
|||- - V_G   Цитата(zltigo @ Nov 14 2009, 11:22) А это...   Nov 14 2009, 01:56
||- - Сергей Борщ   Цитата(V_G @ Nov 14 2009, 02:44) В расшир...   Nov 14 2009, 13:58
||- - V_G   Цитата(Сергей Борщ @ Nov 14 2009, 23:58) ...   Nov 15 2009, 00:16
||- - defunct   Цитата(V_G @ Nov 15 2009, 02:16) Хотя есл...   Nov 15 2009, 00:34
||- - Сергей Борщ   Цитата(V_G @ Nov 15 2009, 02:16) Вопрос т...   Nov 15 2009, 17:56
||- - zltigo   Цитата(Сергей Борщ @ Nov 15 2009, 20:56) ...   Nov 15 2009, 18:03
||- - Сергей Борщ   Цитата(zltigo @ Nov 15 2009, 20:03) потом...   Nov 16 2009, 11:37
||- - zltigo   Цитата(Сергей Борщ @ Nov 16 2009, 14:37) ...   Nov 16 2009, 11:43
|- - defunct   Цитата(V_G @ Nov 13 2009, 17:00) К Вашему...   Nov 13 2009, 15:33
- - Dreamer   Итить, опять двадцать пять. Опять "трансформ...   Nov 9 2009, 14:52
|- - zltigo   Цитата(Dreamer @ Nov 9 2009, 17:37) В тем...   Nov 9 2009, 14:54
- - Dreamer   Цитатаа не используете "свои другие решения...   Nov 9 2009, 15:16
|- - HARMHARM   Цитата(Dreamer @ Nov 9 2009, 17:16) Но эт...   Nov 9 2009, 16:38
- - Dreamer   Сергей Борщ, я сначала специально не давал дальней...   Nov 9 2009, 17:14
- - KRS   да можно это сделать в IAR, можно! Просто надо...   Nov 9 2009, 21:19
- - sigmaN   Не понял. Если НЕ НУЖНО, то чего бы там const не ...   Nov 17 2009, 13:59


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

 


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


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