|
IAP в LPC17x, запись без стирания - возможно-ли? |
|
|
|
Oct 4 2013, 14:55
|
Гуру
     
Группа: Свой
Сообщений: 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 такая запись без стирания возможна. В еррате ничего нет.
Сталкивался-ли кто-нибудь с подобным?
|
|
|
|
|
 |
Ответов
|
Oct 4 2013, 19:07
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(jcxz @ Oct 4 2013, 20:29)  Ясен пень - пишу блоками по 256 (пробовал и по 512). Иначе бы IAP вообще вылетал-бы с ошибкой. Не о тех блоках речь. На каждые строку (16 байт) флеш приходится один байт ECC, поэтому дозапись страницы можно вести исключительно целыми строками. Цитата(jcxz @ Oct 4 2013, 20:29)  Ясно что перед записью своей записи, я определяю границы блока выбранного размера, в который она входит, считываю данные блока в буфер в ОЗУ, копирую туда свою запись, и потом пишу весь блок. Так вот "своя запись" выровнена по границе 16?
|
|
|
|
Сообщений в этой теме
jcxz IAP в LPC17x, запись без стирания - возможно-ли? Oct 4 2013, 14:55   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 Вообще в описании IAP однозначно указано что адрес... Oct 7 2013, 08:35 aaarrr Цитата(KRS @ Oct 7 2013, 12:35) про 16 ба... Oct 7 2013, 08:38  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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|