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

 
 
> NXP ARM7 не прописывается последняя запись в Local SRAM
GetSmart
сообщение Oct 24 2015, 08:34
Сообщение #1


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



При отладке обнаружил, что последняя запись из команд STR/STM в Local SRAM [0x40000000..0x4000xxxx] не доходит до SRAM. Вероятно все записи (через Internal SRAM Controller) буферизуются и если поступает сигнал Reset, то последняя запись не пропишется при любом ожидании, даже если прочитать из этого же (последнего) адреса. Проблема актуальна только для устройств, при сбросе сохраняющих в памяти какие-то переменные. Проверял на LPC213x и LPC214x. Т.к. не имею ARM7 с DMA, например LPC24xx, то не могу проверить тот же эффект в DMA SRAM. Но эта память работает не через Internal SRAM Controller.

Если где-то описана эта фича срам-контроллера, то кто-нибудь подскажите где.


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Alechek
сообщение Oct 26 2015, 07:34
Сообщение #2


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

Группа: Свой
Сообщений: 1 241
Регистрация: 15-11-05
Из: Челябинск
Пользователь №: 10 882



Ничего странного. Кэширование записи.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Oct 26 2015, 08:37
Сообщение #3


Гуру
******

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



QUOTE (Alechek @ Oct 26 2015, 10:34) *
Ничего странного. Кэширование записи.

Вы открыли всем нам глаза! А как только быть с тем фактом, что кэша у LPC2148 нет, не было и не будет?


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Alechek
сообщение Oct 26 2015, 12:21
Сообщение #4


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

Группа: Свой
Сообщений: 1 241
Регистрация: 15-11-05
Из: Челябинск
Пользователь №: 10 882



Цитата(zltigo @ Oct 26 2015, 13:37) *
Вы открыли всем нам глаза! А как только быть с тем фактом, что кэша у LPC2148 нет, не было и не будет?

Ага, не было... Было есть и будет!
Цитата("Philips Semiconductors UM10139")
8. On-chip Static RAM (SRAM)
The SRAM controller incorporates a write-back buffer in order to prevent CPU stalls
during back-to-back writes. The write-back buffer always holds the last data sent by
software to the SRAM. This data is only written to the SRAM when another write is
requested by software (the data is only written to the SRAM when software does another
write). If a chip reset occurs, actual SRAM contents will not reflect the most recent write
request (i.e. after a "warm" chip reset, the SRAM does not reflect the last write operation).
Any software that checks SRAM contents after reset must take this into account. Two
identical writes to a location guarantee that the data will be present after a Reset.
Alternatively, a dummy write operation before entering idle or power-down mode will
similarly guarantee that the last data written will be present in SRAM after a subsequent
Reset.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Oct 26 2015, 16:33
Сообщение #5


Гуру
******

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



QUOTE (Alechek @ Oct 26 2015, 15:21) *
Ага, не было... Было есть и будет!

Здорово! Хорошая все объясняющая цитата. Только ведь, это действительно не кэш sm.gif. Хотя бы по той причне, что авторы этого решения НЕ назвали это кэшем.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
ViKo
сообщение Oct 26 2015, 17:27
Сообщение #6


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(zltigo @ Oct 26 2015, 19:33) *
Только ведь, это действительно не кэш sm.gif.

Это не кэш, а какой-то косяк разработчиков. Надо было принимать в буфер и тут же записывать в память.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Oct 26 2015, 17:38
Сообщение #7


Гуру
******

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



QUOTE (ViKo @ Oct 26 2015, 20:27) *
Это не кэш, а какой-то косяк разработчиков. Надо было принимать в буфер и тут же записывать в память.

И не косяк. Они прияли такое решение и даже, как оказалось, документировали. Хотя, конечно, этому абзацу больше пригодно место в errata, как описание неявных особенностей поведения контролера памяти и способа обхода. В общем случае такое поведение (задержка записи в собственно память на такт записи к памяти) совершенно безобидно.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
ViKo
сообщение Oct 26 2015, 17:53
Сообщение #8


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(zltigo @ Oct 26 2015, 20:38) *
В общем случае такое поведение (задержка записи в собственно память на такт записи к памяти) совершенно безобидно.

Я с LPC не знаком, просто заинтересовался. Из приведенной выдержки из руководства не следует, что там задержка на такт. Там задержка на целую запись. rolleyes.gif
Иначе можно было барьером обойтись.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 08:26
Рейтинг@Mail.ru


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