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

 
 
5 страниц V  < 1 2 3 4 > »   
Reply to this topicStart new topic
> LPC 2366 проблема в ISP, Не получается перезаписать начальные адреса Flash
KRS
сообщение Mar 26 2015, 20:10
Сообщение #16


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

Группа: Модераторы
Сообщений: 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
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 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
KRS
сообщение Mar 26 2015, 20:32
Сообщение #18


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

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



Кроме того если нужно ускорить прошивку. можно загрузить в ОЗУ подпрограмму которая принимает данные из UART по другому протоколу - например просто принимает напр 4 кб данных и возвращает контрольную сумму для проверки и возвращается в бутлоадер, а программатор потом вызывает команду записи флеша, потом опять подпрограмму загрузки для следующей старницы и т.д.
Причем подпрограмму можно грузить один раз ни бутлоадер ни IAP не портят память, они используют те области которые указаны в даташите.

Ускорение полезно для больших прошивок, особенно когда к чипу через USBUART идет подключение.
Go to the top of the page
 
+Quote Post
lavrik
сообщение Mar 26 2015, 23:16
Сообщение #19


Участник
*

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



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


Поподробнее, если можно....пока что не понимаю как конкретно пошагово это делать...какие команды и т.д.
Go to the top of the page
 
+Quote Post
KRS
сообщение Mar 27 2015, 00:20
Сообщение #20


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

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



загрузить в ОЗУ, например по адресу
0x40000200
24 байта
(0x0C, 0x00, 0x9F, 0xE5, 0x01, 0x10, 0xA0, 0xE3, 0x00, 0x10, 0x80, 0xE5, 0x0E, 0xE0, 0x81, 0xE1, 0x1E, 0xFF, 0x2F, 0xE1, 0x40, 0xC0, 0x1F, 0xE0,)

Потом дать бутлоадеру команду
"G 1073742336 A"

код этот не очень "красивый", взят ЕМНИП снифером из первого филисовского программатора.
Код
     LDR     R0, =0xE01FC040  
     MOV     R1, #1            
     STR     R1, [R0]          
     ORR     LR, R1, LR        
     BX      LR


но тут оптимизации не к чему sm.gif Работает вроде на всех LPC2xxx.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Mar 28 2015, 04:34
Сообщение #21


Гуру
******

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



Цитата(KRS @ Mar 27 2015, 06:20) *
но тут оптимизации не к чему sm.gif Работает вроде на всех LPC2xxx.

На всех, у которых ROM-код исполняется в Thumb. :-)

ЗЫ: Его можно оптимизировать по размеру, переписав в Thumb. :-)
Go to the top of the page
 
+Quote Post
KRS
сообщение Mar 29 2015, 20:54
Сообщение #22


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

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



Цитата(jcxz @ Mar 28 2015, 07:34) *
На всех, у которых ROM-код исполняется в Thumb. :-)

ЗЫ: Его можно оптимизировать по размеру, переписав в Thumb. :-)

А у всех LPC ARM7 boot код в THUMB, а что IAP (который часть boot rom) в THUMB - так явно в даташите указано.

Инструкция
ORR LR, R1, LR
лишняя, если конечно в какой то версии бутлоадера не было баги в реализации команды G.

А так можно смело в THUMB запускать, кстати удобно тесты железа запускать еще до прошивки.
Go to the top of the page
 
+Quote Post
lavrik
сообщение Apr 2 2015, 12:13
Сообщение #23


Участник
*

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



Спасибо всем огромное! В очередной раз форумчане выручают начинающего чайника!)
Go to the top of the page
 
+Quote Post
lavrik
сообщение Apr 8 2015, 07:41
Сообщение #24


Участник
*

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



Думал что на этом эпопея закончится, ан нет...

Новый виток: перед тем как шиться выполняю из оперативной памяти код, который скинул форумчанин KRS, получаю всю память в FF как и желаю, пишу первый блок в 256 байт, он записывается как положено, потом дописываю все остальное (всего чуть больше килобайта). Записываемая программа должна моргать диодом с периодом в 1-2 секунды. Что происходит по окончании прошивки: диод начинает моргать циклично, но период увеличен раз так в 10-20, и после выключения-включения питания первые 64 байта опять переписываются как им удобно и код перестает работать.

Что здесь можно предпринять?
Go to the top of the page
 
+Quote Post
KRS
сообщение Apr 8 2015, 07:45
Сообщение #25


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

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



Цитата(lavrik @ Apr 8 2015, 10:41) *
и после выключения-включения питания первые 64 байта опять переписываются как им удобно и код перестает работать.

Именно переписываются? Или все таки это бутлоадер туда отмаплен?

Контрольная сумма векторов прерываний посчитана?

Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Apr 8 2015, 08:02
Сообщение #26


Гуру
******

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



Надо отпустить ногу бута.
Go to the top of the page
 
+Quote Post
lavrik
сообщение Apr 8 2015, 08:04
Сообщение #27


Участник
*

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



Цитата(Golikov A. @ Apr 8 2015, 11:02) *
Надо отпустить ногу бута.


Порт 2.10? Отпущен.

Go to the top of the page
 
+Quote Post
KRS
сообщение Apr 8 2015, 08:11
Сообщение #28


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

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



Если контрольная сумма векторов прерываний не посчитана, чип будет переходить в бутлоадер в любом случае!
Go to the top of the page
 
+Quote Post
lavrik
сообщение Apr 8 2015, 08:12
Сообщение #29


Участник
*

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



Цитата(KRS @ Apr 8 2015, 10:45) *
Именно переписываются? Или все таки это бутлоадер туда отмаплен?

Контрольная сумма векторов прерываний посчитана?


Я думал, что в готовой прошивке все должно быть посчитано....

Вот что в даташите написано по этому поводу
Прикрепленное изображение


Как в таком случае самому подсчитать и записать куда надо эту контрольную сумму?
Go to the top of the page
 
+Quote Post
KRS
сообщение Apr 8 2015, 08:32
Сообщение #30


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

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



При записи по 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

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

 


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


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