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

 
 
> IAR (STM32+Ext SRAM)
athlon64
сообщение May 3 2012, 07:16
Сообщение #1


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

Группа: Свой
Сообщений: 156
Регистрация: 10-03-10
Из: Уфа
Пользователь №: 55 882



Использую связку STM32F217IG + SRAM CY7C1061AV33 (1 M × 16bit). IAR 6.30

Инициализацию FSMC взял из демо-проекта к плате STM322xG EVAL.
Память прекрасно читается и пишется (если писать 16-битными словами) по указателю. Скорость порадовала.
Пробовал размещать в этой памяти heap FreeRTOS, подменив указатель - некоторые задачи работают, некоторые нет (видимо из-за выравнивания).

Хотелось бы, конечно, чтобы линкер знал про эту область памяти и мог размещать в ней глобальные структуры, которых планируется много. Ну, конечно, с поправкой на выравнивание по 16 бит. Возможно такое? Попытался поправить скрипт линкера, но при попытке разместить в секции любые данные, процессор не стартует. Если такое возможно сделать, поделитесь, плис, примером скрипта линкера. И откуда в данном случае инициализировать FSMC?

Если нет, то какой способ размещения данных можно применить? Данные - массивы, структуры.

Сообщение отредактировал athlon64 - May 3 2012, 07:19


--------------------
Руслан
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
SSerge
сообщение May 3 2012, 16:44
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 719
Регистрация: 13-09-05
Из: Novosibirsk
Пользователь №: 8 528



Цитата(athlon64 @ May 3 2012, 14:16) *
И откуда в данном случае инициализировать FSMC?

Самое подходящее для этого место - функция __low_level_init
Посмотрите в файле \arm\doc\EWARM_DevelopmentGuide.ENU.pdf что это такое и с чем его употребляют.

Добавлено:
Впрочем, если пользоваться STM32F2xx_StdPeriph_Lib от ST, то там уже есть свой стартап CMSIS\CM3\DeviceSupport\ST\STM32F2xx\startup\iar\startup_stm32f2xx.s,
из него вызывается функция SystemInit, её код находится в файле CMSIS\CM3\DeviceSupport\ST\STM32F2xx\system_stm32f2xx.c,
а уже там есть вызов
#ifdef DATA_IN_ExtSRAM
SystemInit_ExtMemCtl();
#endif /* DATA_IN_ExtSRAM */

так что инициализировать FSMC можно и таким способом, только нужно будет поправить эту функцию под свою конфигурацию памяти.


--------------------
Russia est omnis divisa in partes octo.
Go to the top of the page
 
+Quote Post
athlon64
сообщение May 4 2012, 03:41
Сообщение #3


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

Группа: Свой
Сообщений: 156
Регистрация: 10-03-10
Из: Уфа
Пользователь №: 55 882



Цитата(SSerge @ May 3 2012, 22:44) *
Самое подходящее для этого место - функция __low_level_init


Ага, точно. Раскомментировал DATA_IN_ExtSRAM, поправил SystemInit_ExtMemCtl();.
Теперь в майне сразу же могу работать с ОЗУ, инициализация к тому моменту уже выполнена. Вопрос с местом инициализации решён.
Теперь как указать линкеру что это ОЗУ можно использовать? Объявить новый блок с выравниванием 16? А дальше? как разместить в нём нужные мне данные?

Сообщение отредактировал IgorKossak - May 4 2012, 07:07


--------------------
Руслан
Go to the top of the page
 
+Quote Post
_Артём_
сообщение May 12 2012, 11:47
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(athlon64 @ May 4 2012, 06:41) *
как разместить в нём нужные мне данные?

Открыть Compiler Reference- ...-Placing code and data.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- athlon64   IAR (STM32+Ext SRAM)   May 3 2012, 07:16
- - Непомнящий Евгений   Дайте свой скрипт, посмотрим   May 3 2012, 07:39
- - athlon64   Вот, например, моя попытка разместить стек во внеш...   May 3 2012, 08:24
|- - KRS   Цитата(athlon64 @ May 3 2012, 12:24) Вот,...   May 3 2012, 09:53
|- - athlon64   Цитата(KRS @ May 3 2012, 15:53) Вы хотите...   May 3 2012, 12:03
- - Непомнящий Евгений   Дык а вы инициализируете эту память? Это надо дела...   May 3 2012, 12:09
|- - KRS   Цитата(Непомнящий Евгений @ May 3 2012, 16...   May 3 2012, 12:35
|- - _Артём_   Цитата(KRS @ May 3 2012, 15:35) На cortex...   May 3 2012, 13:37
|- - KRS   Цитата(_Артём_ @ May 3 2012, 17:37) А что...   May 3 2012, 15:24
|- - _Артём_   Цитата(KRS @ May 3 2012, 18:24) можно кон...   May 3 2012, 15:30
|- - athlon64   Цитата(_Артём_ @ May 12 2012, 17:47) Откр...   May 14 2012, 07:19
|- - _Артём_   Цитата(athlon64 @ May 14 2012, 10:19) Сил...   May 15 2012, 18:38
|- - athlon64   Цитата(_Артём_ @ May 16 2012, 00:38) Код ...   May 16 2012, 06:36
|- - KRS   Цитата(athlon64 @ May 16 2012, 10:36) а, ...   May 16 2012, 10:56
- - athlon64   Всё ещё актуально   May 12 2012, 03:49
- - athlon64   1. Правильно ли я понял что эту 16-бит память нель...   May 15 2012, 11:53
|- - KRS   Цитата(athlon64 @ May 15 2012, 15:53) 1. ...   May 15 2012, 19:13
- - athlon64   Похоже что ошибка найдена. Конструктора развернули...   May 16 2012, 08:28
- - athlon64   Перепаяли дорожки, запись байта теперь заработала....   May 16 2012, 13:40
|- - KRS   Цитата(athlon64 @ May 16 2012, 17:40) Под...   May 16 2012, 19:10
|- - athlon64   Цитата(KRS @ May 17 2012, 01:10) Вы бы дл...   May 17 2012, 03:50
- - athlon64   Странно, конечно, но глючить начинает только обмен...   May 17 2012, 05:13


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

 


RSS Текстовая версия Сейчас: 21st August 2025 - 20:19
Рейтинг@Mail.ru


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