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

 
 
> IAP в LPC17x, запись без стирания - возможно-ли?
jcxz
сообщение Oct 4 2013, 14:55
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Пытаюсь дописывать в сектор программной flash LPC1758 без предварительного стирания сектора.
Исходное состояние области в которую пишу - все 0xFF.
Так вот: иногда запись проходит нормально, иногда - записанное не соответствует записываемому (как правило - в каком-либо одном байте).
Если предварительно стереть сектор - то всегда всё ок.
Перепробовал уже вроде всё, что можно: запрещал прерывания на всю процедуру записи, менял сектора, размеры записываемого сегмента, писал кодом из ОЗУ и flash и т.п. - всё без толку.
Вот такой блок (hex):
18,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,81,15,3A,18
,94
даёт сбой каждую 4-ю запись. После проверки получаю что записано:
18,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,20,00,81,15,3A,18
,94
И результат всегда такой. Каждая 4-я запись у меня идёт по адресу, кратному 0x20 (может это как-то влияет).
Повторная многократная запись поверх по этим-же адресам этого-же блока не помогает.

Согласно AN11008 с сайта NXP такая запись без стирания возможна. В еррате ничего нет.

Сталкивался-ли кто-нибудь с подобным?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
KRS
сообщение Oct 7 2013, 08:35
Сообщение #2


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

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



Вообще в описании IAP однозначно указано что адрес должен быть выравнен на 256 байт! И размер блока может быть тоже от 256 байт.

про 16 байт - это размер шины флеша - 128 бит + ECC, но это был хак опубликованный для LPC2000. Для новых чипов в принципе тоже можно по 16 байт писать, но это не документировано.
Если хотите штатно - размер блока 256 байт и выравнены они на 256 байт! Все работает отлично!
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Oct 7 2013, 08:38
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(KRS @ Oct 7 2013, 12:35) *
про 16 байт - это размер шины флеша - 128 бит + ECC, но это был хак опубликованный для LPC2000. Для новых чипов в принципе тоже можно по 16 байт писать, но это не документировано.

Для LPC13xx документировано. По какой причине "забыли" для других - вопрос.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- jcxz   IAP в LPC17x, запись без стирания - возможно-ли?   Oct 4 2013, 14:55
- - aaarrr   Дозапись возможна, но только блоками, размер котор...   Oct 4 2013, 15:27
|- - jcxz   Ясен пень - пишу блоками по 256 (пробовал и по 512...   Oct 4 2013, 16:29
|- - aaarrr   Цитата(jcxz @ Oct 4 2013, 20:29) Ясен пен...   Oct 4 2013, 19:07
|- - jcxz   Цитата(aaarrr @ Oct 5 2013, 01:07) Не о т...   Oct 5 2013, 10:45
|- - Axel   Цитата(jcxz @ Oct 5 2013, 14:45) Что Вы и...   Oct 6 2013, 03:13
|- - jcxz   SYSCFG.FLASHCFG = (CCLK - 1) / 20000 << 12 |...   Oct 6 2013, 15:51
|- - Axel   Цитата(jcxz @ Oct 6 2013, 18:51) SYSCFG.F...   Oct 6 2013, 18:55
- - Axel   Вполне себе работает. У меня таким образом организ...   Oct 4 2013, 21:08
- - Sanya_kv   Та же проблема (В один блок нельзя писать более 1 ...   Oct 7 2013, 04:36
- - KRS   Цитата(aaarrr @ Oct 7 2013, 12:38) Для LP...   Oct 7 2013, 08:48
- - aaarrr   Цитата(KRS @ Oct 7 2013, 12:48) а вот в 1...   Oct 7 2013, 09:54
- - jcxz   Цитата(KRS @ Oct 7 2013, 14:48) причем и ...   Oct 7 2013, 10:03
- - KRS   Цитата(jcxz @ Oct 7 2013, 14:03) Так вот,...   Oct 7 2013, 10:38


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

 


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


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