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

 
 
5 страниц V  < 1 2 3 4 5 >  
Reply to this topicStart new topic
> LPC 2366 проблема в ISP, Не получается перезаписать начальные адреса Flash
Golikov A.
сообщение Apr 8 2015, 08:35
Сообщение #31


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



а записать ее надо в серединку таблицы прерыванийsm.gif в адрес 0х14 если от нуля
UPD, не заметил ее там уже пихают в 5 ячейку
Go to the top of the page
 
+Quote Post
lavrik
сообщение Apr 8 2015, 08:49
Сообщение #32


Участник
*

Группа: Участник
Сообщений: 34
Регистрация: 16-01-15
Пользователь №: 84 635



Цитата(KRS @ Apr 8 2015, 11:32) *
При записи по 0 адресу:
Код
        uint32_t s;
        s=((uint32_t*)buf)[0]+
            ((uint32_t*)buf)[1]+
            ((uint32_t*)buf)[2]+
            ((uint32_t*)buf)[3]+
            ((uint32_t*)buf)[4]+
            //((uint32_t*)buf)[5]+ !!skip!!
            ((uint32_t*)buf)[6]+
            ((uint32_t*)buf)[7];
        ((uint32_t*)buf)[5]=-s;


пока что не очень понятно....
Go to the top of the page
 
+Quote Post
KRS
сообщение Apr 8 2015, 08:58
Сообщение #33


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

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



Цитата(lavrik @ Apr 8 2015, 11:49) *
пока что не очень понятно....


Я не знаю "архитектуру" Вашего программатора, но логично предположить...
что есть функция которая записывает блок флеша, на вход подаются данные и адрес, так вот если адрес = 0, buf - указатель на данные надо перед отправкой данных вставить этот код.
Go to the top of the page
 
+Quote Post
lavrik
сообщение Apr 8 2015, 09:04
Сообщение #34


Участник
*

Группа: Участник
Сообщений: 34
Регистрация: 16-01-15
Пользователь №: 84 635



Там же возможна запись из ОЗУ во Flash только блоками по 256 байт минимум...и это ограничение от NXP
Go to the top of the page
 
+Quote Post
KRS
сообщение Apr 8 2015, 09:11
Сообщение #35


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

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



Цитата(lavrik @ Apr 8 2015, 12:04) *
Там же возможна запись из ОЗУ во Flash только блоками по 256 байт минимум...и это ограничение от NXP

Да все равной какой размер! Главное что первый блок будет больше 32 байт и перед передачей его в ОЗУ для записи надо вставить этот код, который заменит одно слово.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Apr 8 2015, 09:37
Сообщение #36


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



В вашей прошивке в начале лежит таблица прерываний, в 0x14 - это 5 ячейка если ее мерить 32 битными словами, должна лежать контрольная сумма этой таблицы, такая что сумма по всей таблице должна давать 0.

То есть после того как вы получили файл прошивки, с ним выполняете указанные действия считаете сумму всей таблицы кроме 5 ячейки. И отрицательное значение записываете в 5 ячейку, таким образом сумма по всей таблице станет 0. После этого такую поправленную прошивку пихаете во флэш и все будет!
Go to the top of the page
 
+Quote Post
jcxz
сообщение Apr 8 2015, 09:38
Сообщение #37


Гуру
******

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



Цитата(lavrik @ Apr 8 2015, 15:04) *
Там же возможна запись из ОЗУ во Flash только блоками по 256 байт минимум...и это ограничение от NXP

В LPC17xx минимум == 16 байт. Скорей всего в LPC23xx так же.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Apr 8 2015, 09:41
Сообщение #38


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



да не в размере дело, а в том что надо поправить 4 байта с адреса 0х14 в прошивке, это надо сделать еще до записи всей прошивки, так что абсолютно не важно какими блоками потом ее записывать...
Go to the top of the page
 
+Quote Post
KRS
сообщение Apr 8 2015, 09:41
Сообщение #39


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

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



Цитата(jcxz @ Apr 8 2015, 12:38) *
В LPC17xx минимум == 16 байт. Скорей всего в LPC23xx так же.

флеш 128 битный с ECC поэтому меньше 16 байт = 128 бит нельзя.
Но это только если Вы умеете сами писать. Через документированное API нельзя! И в LPC17xx тоже
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Apr 8 2015, 09:43
Сообщение #40


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



так же как нельзя писать в не стертую флэшь (если мы конечно хотим верных в ней данных) потому дописать ничего не получиться, надо писать с 1 раза.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Apr 8 2015, 09:51
Сообщение #41


Гуру
******

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



Цитата(KRS @ Apr 8 2015, 15:41) *
Но это только если Вы умеете сами писать. Через документированное API нельзя! И в LPC17xx тоже

Можно. Если предварительно считать страничку. У меня так даже журналы (с размером записей кратным 16 байт) в эту флешь пишутся.

Цитата(Golikov A. @ Apr 8 2015, 15:43) *
так же как нельзя писать в не стертую флэшь (если мы конечно хотим верных в ней данных) потому дописать ничего не получиться, надо писать с 1 раза.

Можно дописывать. Только элементами выровненными по границам 16-байтных кусочков.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Apr 8 2015, 10:36
Сообщение #42


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



на то место куда уже писали нельзя, хоть как кратно...
если тот кто спрашивает приминительно к записи прошивки, сначала запишет ее, а потом поверх попробует записать контрольную сумму большая вероятность что кончится это обломом.
Go to the top of the page
 
+Quote Post
den_po
сообщение Apr 8 2015, 12:35
Сообщение #43


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

Группа: Участник
Сообщений: 139
Регистрация: 9-11-12
Из: Санкт-Петербург
Пользователь №: 74 315



Цитата(jcxz @ Apr 8 2015, 14:51) *
Можно. Если предварительно считать страничку. У меня так даже журналы (с размером записей кратным 16 байт) в эту флешь пишутся.

Одно время столкнулся с проблемой на LPC2368: когда дописывал таким образом, иногда получал случайно запорченные данные по соседству.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Apr 8 2015, 16:30
Сообщение #44


Гуру
******

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



Цитата(den_po @ Apr 8 2015, 18:35) *
Одно время столкнулся с проблемой на LPC2368: когда дописывал таким образом, иногда получал случайно запорченные данные по соседству.

Писали невыровненные на 16 байт данные.
Go to the top of the page
 
+Quote Post
KRS
сообщение Apr 8 2015, 19:41
Сообщение #45


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

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



Цитата(jcxz @ Apr 8 2015, 12:51) *
Можно. Если предварительно считать страничку.

да в общем можно и не считывать, а просто заполнить FF, кроме нужных 16 байт, может в таком случае и писать быстрее будет.

Только вот способ не гарантированный, теоретически NXP может поменять технологию флеша.
Go to the top of the page
 
+Quote Post

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

 


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


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