|
Разместить переменную во flash без модификатора const, Как? |
|
|
|
Nov 6 2009, 15:18
|
Участник

Группа: Участник
Сообщений: 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/
|
|
|
|
|
 |
Ответов
|
Nov 9 2009, 08:20
|
Участник

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

|
Цитата Э.... ЗАЧЕМ!??? Думаете, что ее сможете менять??? Мне не нужно ее менять. У меня есть МНОГО функций, принимающие на вход что-то вроде Код void MyFunc(struct MYSTRUCT1 * param1, struct MYSTRUCT2 *param2) { ////// } Если передать в такую функцию указатель на константную структуру, то компилятор вполне обоснованно выругается. Мне же надо для некоторых случаев подставлять в эти функции значения по умолчанию, которые я хочу хранить во флеше. Но вопрос-то не о том, зачем это мне нужно. Вопрос в том - можно так сделать или нет?
--------------------
Все врут (с) /M.D.House/
|
|
|
|
|
Nov 9 2009, 08:35
|

читатель даташитов
   
Группа: Свой
Сообщений: 853
Регистрация: 5-11-06
Из: Днепропетровск
Пользователь №: 21 999

|
Гуглите const correctness. Нормально написанная функция, которая работаеет с const данными, должна получать const параметры. Если уж совсем хочется, сделайте typecast: Код const char a[] = "a"; char *b = (char*) a; Но проблемы возникнут сразу как будет произведено изменение данных, которые на самом деле const.
|
|
|
|
Сообщений в этой теме
Dreamer Разместить переменную во flash без модификатора const Nov 6 2009, 15:18 zltigo Цитата(Dreamer @ Nov 6 2009, 18:18) Такое... Nov 6 2009, 17:43 GetSmart Цитата(Dreamer @ Nov 9 2009, 14:20) Мне ж... Nov 9 2009, 08:30 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 Dreamer Сергей Борщ. Вы абсолютно правильно меня поняли.
... Nov 17 2009, 10:57 zltigo Цитата(Dreamer @ Nov 17 2009, 13:57) Серг... Nov 17 2009, 11:16 sigmaN Не понял.
Если НЕ НУЖНО, то чего бы там const не ... Nov 17 2009, 13:59
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|