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

 
 
> Разместить массив во Flash STM32, IAR ARM v6.21
bingo
сообщение May 17 2012, 02:16
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 88
Регистрация: 9-04-12
Пользователь №: 71 256



Здравствуйте
Есть большой набор не изменяемых массивов байт (целевые команды). Размещать из в RAM- не рационально.
Подскажите пожалуйста как объявить в IAR ARM С инициализированный массив , так чтобы он был расположен во FLASH, а не в RAM. Естественно, массив только для чтения.

Ранее для IAR AVR я делал так:
__flash char* num1 = "58749455350";

Для IAR ARM v6.21 это не проходит.
Но и такие объявления не получаются:
uint8_t Cmd [] = {3,2,1} @ "FLASH";

Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
bingo
сообщение May 18 2012, 01:56
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 88
Регистрация: 9-04-12
Пользователь №: 71 256



Цитата(_Артём_ @ May 18 2012, 04:41) *
Может где-то не там смотрите... Причина может быть в настройках проекта или ещё в чём-нибудь .
Создал массив по адресу(__root - запрет сооптимизировать):
Код
__root const unsigned char Test[3]@0x1005={
    1,2,3
};


[attachment=68534:flash_iar.JPG]

Массив по адресу 0x1005 - что есть FLASH.


Верно, но это (@ 0x1005) вариант использования когда нужно разместить по конкретному location
А есть еще потребность, чтобы было просто во FLASH (неважно где). Для этого используется нотация
.... @ "FLASH";
Она как раз и не работает с инициализированным при объявлении массивом

В проекте я отключил оптимизацию (none).

==========================================================================
Всем спасибо!
Вот пример правильной записи :-)

uint8_t HCI_Reset[] @ "FLASH" = {3,2,1};

Сообщение отредактировал bingo - May 18 2012, 01:57
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение May 18 2012, 02:24
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(bingo @ May 18 2012, 04:56) *
...
А есть еще потребность, чтобы было просто во FLASH (неважно где). Для этого используется нотация
.... @ "FLASH";
Она как раз и не работает с инициализированным при объявлении массивом

Это у Вас не работает! wink.gif
У меня почему-то работает.

Прикрепленное изображение


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
bingo
сообщение May 18 2012, 04:57
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 88
Регистрация: 9-04-12
Пользователь №: 71 256



Цитата(Dog Pawlowa @ May 18 2012, 05:24) *
Это у Вас не работает! wink.gif
У меня почему-то работает.

Прикрепленное изображение


Я же перед Вашим постом написал, что все уже OK
Просто, вместо правильного синтаксиса:
uint8_t HCI_Reset[] @ "FLASH" = {3,2,1};

Я бодался с неочевидной ошибкой (из документации совешенно не видно, пример я привел выше):
uint8_t HCI_Reset[] = {3,2,1} @ "FLASH" ;

rolleyes.gif

Цитата(_Артём_ @ May 18 2012, 05:28) *
Верно. Есть такая потребность:
Код
__root const unsigned char Test[3]={
    1,2,3
    
};


[attachment=68536:flash_iar2.JPG]



А ведь пригодится...
Оптимизация none/high.


Конечно же позже я ее включю rolleyes.gif
Дайте только все отладить.

Сообщение отредактировал bingo - May 18 2012, 04:57
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение May 18 2012, 06:43
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(bingo @ May 18 2012, 07:57) *
Я же перед Вашим постом написал, что все уже OK
Просто, вместо правильного синтаксиса:
uint8_t HCI_Reset[] @ "FLASH" = {3,2,1};

Вы не поняли.
У меня никакого "FLASH" нет, это видно на картинке, и все работает правильно.
Что наводит на мысли, где же Вы свою переменную объявляете.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
bingo
сообщение May 18 2012, 10:40
Сообщение #6


Частый гость
**

Группа: Свой
Сообщений: 88
Регистрация: 9-04-12
Пользователь №: 71 256



Цитата(Dog Pawlowa @ May 18 2012, 10:43) *
Вы не поняли.
У меня никакого "FLASH" нет, это видно на картинке, и все работает правильно.
Что наводит на мысли, где же Вы свою переменную объявляете.


Хмм.... Вы правы!
Как ни странно, но массив оказался снова в RAM!!!
Хотя это, на мой взгляд, противоречит документации .

Так какое решение Вы видите?
Использовать принудительное указание места размещения, типа "... @ 0x80...005=.." ?
Это не очень удобно.
Использование const , как у Вас? Но про это явно написано в документации (я ее цитировал ранее).


В понедельник буду снова пытать программу/плату.

Сообщение отредактировал bingo - May 18 2012, 10:47
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- bingo   Разместить массив во Flash STM32   May 17 2012, 02:16
- - SergeyL   Так должно получиться static const uint8_t Cmd [] ...   May 17 2012, 02:46
|- - bingo   Цитата(SergeyL @ May 17 2012, 05:46) Так ...   May 17 2012, 11:30
|- - PheeL   Цитата(bingo @ May 17 2012, 15:30) Неее...   May 17 2012, 11:55
|- - haker_fox   QUOTE (PheeL @ May 17 2012, 19:55) Ключев...   May 17 2012, 15:05
||- - PheeL   Цитата(haker_fox @ May 17 2012, 19:05) co...   May 17 2012, 16:51
|- - demiurg_spb   Цитата(PheeL @ May 17 2012, 14:55) Ключев...   May 17 2012, 17:51
|- - bingo   Цитата(demiurg_spb @ May 17 2012, 20:51) ...   May 18 2012, 01:01
|- - _Артём_   Цитата(bingo @ May 18 2012, 04:01) Вот ци...   May 18 2012, 01:41
||- - PheeL   Цитата(Dog Pawlowa @ May 18 2012, 10:43) ...   May 18 2012, 06:58
||- - Dog Pawlowa   Цитата(bingo @ May 18 2012, 13:40) Так ка...   May 18 2012, 13:51
|- - _Артём_   Цитата(bingo @ May 18 2012, 04:56) Верно,...   May 18 2012, 02:28
- - derstik   Цитата(bingo @ May 17 2012, 08:16) Здравс...   May 24 2012, 04:37
- - ViKo   Я поддерживаю сообщение №2. Нужно описывать в виде...   May 24 2012, 05:20
- - muravei   Цитата(ViKo @ May 24 2012, 09:20) Нужно о...   Aug 17 2013, 09:45


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

 


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


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