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

 
 
> LPC 2366 проблема в ISP, Не получается перезаписать начальные адреса Flash
lavrik
сообщение Mar 25 2015, 12:38
Сообщение #1


Участник
*

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



Здравствуйте форумчане! Прошу помочь, т.к. уже не знаю что делать...

Пишу внутрисистемный (ISP) программатор для LPC 2366, и столкнулся с тем, что в процессе прошивки не получается стереть полностью весь флэш, адреса с 0x00 по 0x40 зарезервированы под вектора прерываний. При форматировании всего флэша посредством ISP-команды "E 0 14\r\n" в этом диапазоне остается что-то, все остальное как и положено - FF.

Согласно hex-файлу прошивки, которую я пытаюсь туда записать, в этом диапазоне должны находиться определённые данные, которые туда не записываются.

Вот то что надо записать в формате Intel HEX, адрес предшествует данным.
Прикрепленное изображение


Вот как выглядит флэш после полного форматирования:
Прикрепленное изображение


Вот что я пытаюсь записать из оперативной памяти во флэш по адресу 0x0:
Прикрепленное изображение


Во флэше по указанному адресу это появляется в следующем искаженном виде:
Прикрепленное изображение



Что скажете?

Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Golikov A.
сообщение Mar 25 2015, 17:02
Сообщение #2


Гуру
******

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



ну я так понимаю что он мапит бут ром в начало флеш и по этой причине загружается в загрузчик, а не в пользовательское приложение... То есть это как бы принцип работы или я чего то не понимаю?
Go to the top of the page
 
+Quote Post
KRS
сообщение Mar 25 2015, 18:13
Сообщение #3


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

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



Цитата(Golikov A. @ Mar 25 2015, 20:02) *
ну я так понимаю что он мапит бут ром в начало флеш и по этой причине загружается в загрузчик, а не в пользовательское приложение... То есть это как бы принцип работы или я чего то не понимаю?

Нет! у NXP при включении питания или по ресету всегда отмаплен загрузчик, первыми командами он отключает возможность отладки у NXP ARM7 чисто софтовая защита, потом проверяет можно ли включить отладку, потом проверяет ногу для запуска загрузчика по UART, если в загрузчик входить не надо мапит флешь и запускает пользовательскую программу.
Кстати это надо учитывать при отладке - и обходить место отключения ног отладчика в ARM7 если есть необходимость шагать с самого запуска (на самом деле после ресета отладчиком). Для cortex -ов я не разбирался как защита устроена, но схема очень похожа, не разбирался только как они блокируют возможность подключения по SWD пока ресет активен.

Так вот мапинг bootrom нужен только что бы стартовал загрузчик, загрузчик не использует прерывания и больше не обращается по 0ым адресам. По хорошему после старта надо мапить флешь, все равно загрузчик ее мапит перед запуском пользовательской программы и почему бы это не делать сразу непонятно. И в LPC11C14, например это происходит, но почему только для UART. в LPC17xx не происходит, там тоже надо всегда запускать программу.

Но это все надо делать только если хочется проверить запись флеша или считать его. Запись, стирание будет корректно и без мапинга.
По идее это - ближе к баге! Т.к. в даташитах расписан ISP - в частности команда чтения и нигде не указано что надо что то мапить!!! И родной бутлоадер без костылей не обеспечивает ее работу. А про костыли NXP умалчивает.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Mar 26 2015, 05:44
Сообщение #4


Гуру
******

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



Цитата(KRS @ Mar 26 2015, 00:13) *
Но это все надо делать только если хочется проверить запись флеша или считать его. Запись, стирание будет корректно и без мапинга.
По идее это - ближе к баге! Т.к. в даташитах расписан ISP - в частности команда чтения и нигде не указано что надо что то мапить!!! И родной бутлоадер без костылей не обеспечивает ее работу. А про костыли NXP умалчивает.

Что-то странное Вы говорите....
Уже много лет пользуем в своих устройствах LPC2378. Прошиваем и стираем его FlashMagic-ом. В том числе и 0-сектор. И вроде проблем с этим никогда не было (если конечно P2.10 в нужном положении при снятии RESET).
И как Вы с ISP что-то отмапите? Это-же не IAP. ISP выполняет ROM-код он и должен рулить мапингом при необходимости.
Go to the top of the page
 
+Quote Post
KRS
сообщение Mar 26 2015, 20:10
Сообщение #5


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

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



Цитата(jcxz @ Mar 26 2015, 08:44) *
Это-же не IAP. ISP выполняет ROM-код он и должен рулить мапингом при необходимости.

Должен, но он этого не делает!
Все программаторы, если они хотят счтитать или проверить первые 64 байта флеша, при помощи команд ISP грузят в ОЗУ подпрограмму которая мапит флеш на адрес 0! После этого все работает как ожидается.

Да и кстати это, по крайней мере не у всех серий, не ROM - а флешь. У первых серий это вообще была последняя страница флеша. Для некоторых серий NXP выкладывал апгрейд бутлоадера.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Mar 26 2015, 20:17
Сообщение #6


Гуру
******

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



Цитата(KRS @ Mar 27 2015, 02:10) *
Все программаторы, если они хотят счтитать или проверить первые 64 байта флеша, при помощи команд ISP грузят в ОЗУ подпрограмму которая мапит флеш на адрес 0! После этого все работает как ожидается.

Ну что-ж - вполне правдоподобно. Значит ТС может сделать то же самое.
Go to the top of the page
 
+Quote Post
lavrik
сообщение Mar 26 2015, 23:16
Сообщение #7


Участник
*

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



Цитата(jcxz @ Mar 26 2015, 23:17) *
Ну что-ж - вполне правдоподобно. Значит ТС может сделать то же самое.


Поподробнее, если можно....пока что не понимаю как конкретно пошагово это делать...какие команды и т.д.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- lavrik   LPC 2366 проблема в ISP   Mar 25 2015, 12:38
- - Golikov A.   Уже было тут недавно про не стираемое начало флеши...   Mar 25 2015, 13:57
- - KRS   Цитата(lavrik @ Mar 25 2015, 15:38) Пишу ...   Mar 25 2015, 16:03
|- - KRS   Цитата(jcxz @ Mar 26 2015, 08:44) Что-то ...   Mar 26 2015, 18:57
- - Golikov A.   ну не знаю... мне казалось бут пин зажал, там и ре...   Mar 25 2015, 19:24
- - Golikov A.   Вот и мне так кажется... Единственное что я сейча...   Mar 26 2015, 05:56
|- - Сергей Борщ   Цитата(Golikov A. @ Mar 26 2015, 07:56) Е...   Mar 26 2015, 07:42
|- - Палыч   ТС знает ли о существовании CRP (Code Read Protect...   Mar 26 2015, 07:54
|- - lavrik   Цитата(Палыч @ Mar 26 2015, 10:54) ТС зна...   Mar 26 2015, 11:06
- - Golikov A.   ЦитатаBlank check Не что-то вы обманываете UM1060...   Mar 26 2015, 09:51
|- - Сергей Борщ   Цитата(Golikov A. @ Mar 26 2015, 11:51) Н...   Mar 26 2015, 10:46
- - Golikov A.   чудно однако.... ведь FlashMagic реально сначала ...   Mar 26 2015, 11:07
- - KRS   Кроме того если нужно ускорить прошивку. можно заг...   Mar 26 2015, 20:32
- - KRS   загрузить в ОЗУ, например по адресу 0x40000200 24...   Mar 27 2015, 00:20
|- - jcxz   Цитата(KRS @ Mar 27 2015, 06:20) но тут о...   Mar 28 2015, 04:34
|- - KRS   Цитата(jcxz @ Mar 28 2015, 07:34) На всех...   Mar 29 2015, 20:54
- - lavrik   Спасибо всем огромное! В очередной раз форумча...   Apr 2 2015, 12:13
- - lavrik   Думал что на этом эпопея закончится, ан нет... Но...   Apr 8 2015, 07:41
|- - KRS   Цитата(lavrik @ Apr 8 2015, 10:41) и посл...   Apr 8 2015, 07:45
|- - lavrik   Цитата(KRS @ Apr 8 2015, 10:45) Именно пе...   Apr 8 2015, 08:12
|- - KRS   При записи по 0 адресу: Код uint32_t s; s=...   Apr 8 2015, 08:32
|- - lavrik   Цитата(KRS @ Apr 8 2015, 11:32) При запис...   Apr 8 2015, 08:49
|- - KRS   Цитата(lavrik @ Apr 8 2015, 11:49) пока ч...   Apr 8 2015, 08:58
- - Golikov A.   Надо отпустить ногу бута.   Apr 8 2015, 08:02
|- - lavrik   Цитата(Golikov A. @ Apr 8 2015, 11:02) На...   Apr 8 2015, 08:04
- - KRS   Если контрольная сумма векторов прерываний не посч...   Apr 8 2015, 08:11
- - Golikov A.   а записать ее надо в серединку таблицы прерываний ...   Apr 8 2015, 08:35
- - lavrik   Там же возможна запись из ОЗУ во Flash только блок...   Apr 8 2015, 09:04
|- - KRS   Цитата(lavrik @ Apr 8 2015, 12:04) Там же...   Apr 8 2015, 09:11
|- - jcxz   Цитата(lavrik @ Apr 8 2015, 15:04) Там же...   Apr 8 2015, 09:38
|- - KRS   Цитата(jcxz @ Apr 8 2015, 12:38) В LPC17x...   Apr 8 2015, 09:41
|- - jcxz   Цитата(KRS @ Apr 8 2015, 15:41) Но это то...   Apr 8 2015, 09:51
|- - den_po   Цитата(jcxz @ Apr 8 2015, 14:51) Можно. Е...   Apr 8 2015, 12:35
||- - jcxz   Цитата(den_po @ Apr 8 2015, 18:35) Одно в...   Apr 8 2015, 16:30
||- - den_po   Цитата(jcxz @ Apr 8 2015, 21:30) Писали н...   Apr 9 2015, 03:38
||- - jcxz   Цитата(den_po @ Apr 9 2015, 09:38) Нет, т...   Apr 9 2015, 09:42
|- - KRS   Цитата(jcxz @ Apr 8 2015, 12:51) Можно. Е...   Apr 8 2015, 19:41
|- - jcxz   Цитата(KRS @ Apr 9 2015, 01:41) Только во...   Apr 9 2015, 02:26
- - Golikov A.   В вашей прошивке в начале лежит таблица прерываний...   Apr 8 2015, 09:37
|- - lavrik   Цитата(Golikov A. @ Apr 8 2015, 12:37) В ...   Apr 9 2015, 10:35
|- - KRS   Цитата(lavrik @ Apr 9 2015, 13:35) То ест...   Apr 9 2015, 10:49
|- - lavrik   Цитата(KRS @ Apr 9 2015, 13:49) там выдел...   Apr 9 2015, 11:09
|- - KRS   Цитата(lavrik @ Apr 9 2015, 14:09) В моем...   Apr 9 2015, 13:42
- - Golikov A.   да не в размере дело, а в том что надо поправить 4...   Apr 8 2015, 09:41
- - Golikov A.   так же как нельзя писать в не стертую флэшь (если ...   Apr 8 2015, 09:43
- - Golikov A.   на то место куда уже писали нельзя, хоть как кратн...   Apr 8 2015, 10:36
- - Сергей Борщ   А я заставил линкер gcc считать контрольную сумму....   Apr 9 2015, 05:13
|- - KRS   Цитата(Сергей Борщ @ Apr 9 2015, 08:13) А...   Apr 9 2015, 09:48
|- - Сергей Борщ   Цитата(KRS @ Apr 9 2015, 11:48) А у Вас н...   Apr 9 2015, 11:02
|- - Сергей Борщ   Цитата(Сергей Борщ @ Apr 9 2015, 13:02) к...   Apr 9 2015, 11:19
||- - lavrik   Цитата(Сергей Борщ @ Apr 9 2015, 14:19) ...   Apr 9 2015, 11:37
|- - jcxz   Цитата(Сергей Борщ @ Apr 9 2015, 17:02) А...   Apr 10 2015, 01:51
|- - Сергей Борщ   Цитата(jcxz @ Apr 10 2015, 03:51) но никт...   Apr 10 2015, 05:09
|- - lavrik   Цитата(Сергей Борщ @ Apr 10 2015, 08:09) ...   Apr 10 2015, 06:23
|- - jcxz   Цитата(Сергей Борщ @ Apr 10 2015, 11:09) ...   Apr 10 2015, 09:00
|- - Сергей Борщ   Цитата(jcxz @ Apr 10 2015, 11:00) Использ...   Apr 10 2015, 09:16
- - lavrik   Появился сдвиг! Я сделал следующее: прошил чер...   Apr 9 2015, 12:52
- - Obam   Так как написано в User Manual: "…Criterion ...   Apr 9 2015, 13:20
- - Golikov A.   надо сложить не 5 значений! а всю таблицу вект...   Apr 9 2015, 16:09
|- - lavrik   Цитата(Golikov A. @ Apr 9 2015, 19:09) на...   Apr 9 2015, 20:25
|- - KRS   Цитата(Golikov A. @ Apr 9 2015, 19:09) а ...   Apr 10 2015, 13:01
- - Golikov A.   Цитатаоткуда ж я знал что там Little Endian... sad...   Apr 10 2015, 04:59
- - IgorKossak   Когда я слышу фразу: "... каждый такт на счет...   Apr 10 2015, 09:30
|- - jcxz   Цитата(IgorKossak @ Apr 10 2015, 15:30) К...   Apr 10 2015, 09:38
- - Golikov A.   под инвертировать имел ввиду, конечно, инверсию зн...   Apr 10 2015, 15:33


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

 


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


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