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

 
 
4 страниц V  < 1 2 3 4 >  
Reply to this topicStart new topic
> Как программить flash в LPC без IAP ?
zltigo
сообщение Oct 12 2008, 13:00
Сообщение #31


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(VslavX @ Oct 12 2008, 14:33) *
Разница ощущается?

Нет.
Никакого принципиального достоинства в ограничении свободы не вижу. У Вас либо есть свобода отключить все совсем, либо есть возможность оставить эквивалент той самой "Erase" ввиде полностью урезанного штатного загрузчика. Хотите еще и свой "Erase"? Берете любую удобную для себя ножку и назначаете ее в своем загрузчике/приложении "Erase". У меня это, например, один из пинов на JTAG.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
bus16
сообщение Oct 13 2008, 08:36
Сообщение #32


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

Группа: Свой
Сообщений: 78
Регистрация: 10-01-07
Пользователь №: 24 270



Интересно, а как на этапе производства этот-самый bootloader попадает во-флеш?
Go to the top of the page
 
+Quote Post
Abo
сообщение Oct 13 2008, 09:33
Сообщение #33


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

Группа: Свой
Сообщений: 101
Регистрация: 9-01-06
Пользователь №: 12 967



Цитата(bus16 @ Oct 13 2008, 12:36) *
Интересно, а как на этапе производства этот-самый bootloader попадает во-флеш?

А наверное через JTAG.
Go to the top of the page
 
+Quote Post
bus16
сообщение Oct 13 2008, 09:50
Сообщение #34


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

Группа: Свой
Сообщений: 78
Регистрация: 10-01-07
Пользователь №: 24 270



Цитата(Abo @ Oct 13 2008, 13:33) *
А наверное через JTAG.

Сомневаюсь, эти чипы без bootloader-а пользователю прошить нельзя (через JTAG вызываются функции IAP, сам JTAG ничего о порядке работы с FLASH незнает)
Go to the top of the page
 
+Quote Post
VslavX
сообщение Oct 13 2008, 10:11
Сообщение #35


embarrassed systems engineer
*****

Группа: Свой
Сообщений: 1 083
Регистрация: 24-10-05
Из: Осокорки
Пользователь №: 10 038



Цитата(bus16 @ Oct 13 2008, 12:50) *
Сомневаюсь, эти чипы без bootloader-а пользователю прошить нельзя (через JTAG вызываются функции IAP, сам JTAG ничего о порядке работы с FLASH незнает)

А кто мешает залить в RAM функции которые "шьют" флеш без IAP? У производителя такие явно должны быть, это ведь только клиенты не удостоены чести знать алгоритмы.
Основной вопрос в том, разлочится ли JTAG если в "секретный" регистр не будет прописано нужное значение CRPx - при пустом флеше такого явно не происходит - некому прописать. Изначально сразу после аппаратного сброса JTAG залочен и, возможно, есть какой-то счетчик, который спустя некоторое время должен JTAG разлочить, если "секретный" регистр не прописан.
Go to the top of the page
 
+Quote Post
bus16
сообщение Oct 13 2008, 10:29
Сообщение #36


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

Группа: Свой
Сообщений: 78
Регистрация: 10-01-07
Пользователь №: 24 270



Цитата(VslavX @ Oct 13 2008, 14:11) *
А кто мешает залить в RAM функции которые "шьют" флеш без IAP? У производителя такие явно должны быть, это ведь только клиенты не удостоены чести знать алгоритмы.

Согласен полностью.
Цитата
Основной вопрос в том, разлочится ли JTAG если в "секретный" регистр не будет прописано нужное значение CRPx - при пустом флеше такого явно не происходит - некому прописать. Изначально сразу после аппаратного сброса JTAG залочен и, возможно, есть какой-то счетчик, который спустя некоторое время должен JTAG разлочить, если "секретный" регистр не прописан.

После подачи питания JTAG не залочен - TAP контроллер захватывает работу ядра, время ему на это надо, вот и создаётся впечатление что JTAG залочен. А CRP - наоборот запрещает работу JTAG если записаны "магические слова" по фикс. адресу во флеш (расположенные рядом с загрузчиком - не путать с 0х1FC)
Go to the top of the page
 
+Quote Post
VslavX
сообщение Oct 13 2008, 16:35
Сообщение #37


embarrassed systems engineer
*****

Группа: Свой
Сообщений: 1 083
Регистрация: 24-10-05
Из: Осокорки
Пользователь №: 10 038



Цитата(bus16 @ Oct 13 2008, 13:29) *
После подачи питания JTAG не залочен - TAP контроллер захватывает работу ядра, время ему на это надо,

Что значит "захватывает работу ядра"? 07.gif
TAP - отдельно, ядро - отдельно. Через TAP можно рулить ICE, а уже ICE в некотором роде рулит ядром.
Просто пока успеешь проинициализировать TAP+ICE и выставить Debug Request в DCSR - JTAG уже отваливается - ядро работает и пишет "Magic Number". Действительно, может сам JTAG и не залочен smile.gif, но сделать ничего полезного до включения блокировки ядром не получается.
Были мысли притормозить ядро, но LPC23 стартует на внутреннем генераторе - тактовую не остановишь, игры с RESET-ом тоже ни к чему полезному не привели - ICE при сбросе блокируется.
Цитата(bus16 @ Oct 13 2008, 13:29) *
вот и создаётся впечатление что JTAG залочен. А CRP - наоборот запрещает работу JTAG если записаны "магические слова" по фикс. адресу во флеш (расположенные рядом с загрузчиком - не путать с 0х1FC)

"Магические слова" проверяются по адресу 0x1FC кодом в загрузчике почти сразу при старте. Если слово в 0x1FC "магическое", то загрузчик блокирует JTAG прописывая 0x87654321 в "секретный" регистрик @0xE01FC184 - Вы это подразумевали?
Go to the top of the page
 
+Quote Post
TanT
сообщение Oct 14 2008, 05:36
Сообщение #38


Участник
*

Группа: Участник
Сообщений: 61
Регистрация: 22-11-05
Из: Россия->Омск
Пользователь №: 11 210



Уважаемые эксперты, позвольте вмешаться с вопросиком. Собственно вопрос: Возможно программно ввести LPC2378 в режим программирования ISP? Чтобы в терминалке знак вопроса, Synchronized и прочее. Пробовал коверкать данные по адресу 14, виснет на раз, но в режим программирования не становиться. smile.gif


--------------------
Если вы не можете объяснить что-то шестилетнему ребенку, значит, вы сами этого не понимаете.
Альберт Эйнштейн
Go to the top of the page
 
+Quote Post
bus16
сообщение Oct 14 2008, 05:46
Сообщение #39


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

Группа: Свой
Сообщений: 78
Регистрация: 10-01-07
Пользователь №: 24 270



Цитата(VslavX @ Oct 13 2008, 20:35) *
Что значит "захватывает работу ядра"? 07.gif
TAP - отдельно, ядро - отдельно.

Вот потому по подаче питания ядро может выполнить несколько инмтрукций до захвата его работы TAP-контроллером, а что эти инструкции собой представляют - скажет bootloader (как-раз может отрубаться JTAG, активность которо определяется состоянием отдельного пина при старте).
Цитата
"Магические слова" проверяются по адресу 0x1FC кодом в загрузчике почти сразу при старте. Если слово в 0x1FC "магическое", то загрузчик блокирует JTAG прописывая 0x87654321 в "секретный" регистрик @0xE01FC184 - Вы это подразумевали?

не, где-то инфа пробегала о возможности защиты от считывания/записи отдельных секторов стандартными ф-ми bootloader-а
Go to the top of the page
 
+Quote Post
VslavX
сообщение Oct 14 2008, 06:00
Сообщение #40


embarrassed systems engineer
*****

Группа: Свой
Сообщений: 1 083
Регистрация: 24-10-05
Из: Осокорки
Пользователь №: 10 038



Цитата(TanT @ Oct 14 2008, 08:36) *
Уважаемые эксперты, позвольте вмешаться с вопросиком. Собственно вопрос: Возможно программно ввести LPC2378 в режим программирования ISP? Чтобы в терминалке знак вопроса, Synchronized и

Команда IAP "reinvoke ISP" чем-то не устраивает?
Go to the top of the page
 
+Quote Post
zltigo
сообщение Oct 14 2008, 07:21
Сообщение #41


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(TanT @ Oct 14 2008, 07:36) *
Возможно программно ввести....

Да,
- привести контроллер в максимально исходное состояние (контроллер прерывний, PLL, ....);
- запрограммировать пин по которому при старте загрузчик сваливается в консоль на выход, записать туда 0;
- перейти по вектору сброса;
- прочитав на желаемом пине 0 загрузчик свалится в консоль.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
TanT
сообщение Nov 3 2008, 12:15
Сообщение #42


Участник
*

Группа: Участник
Сообщений: 61
Регистрация: 22-11-05
Из: Россия->Омск
Пользователь №: 11 210



Цитата(zltigo @ Oct 14 2008, 10:21) *
Да,
- привести контроллер в максимально исходное состояние (контроллер прерывний, PLL, ....);

Примерно так:
PLLCON &= ~(1 << 1); // Disconnect the PLL
PLLCON &= ~(1 << 0); /* Disable the PLL */
VICIntEnClear |=0xFFFFFFFF;
Цитата(zltigo @ Oct 14 2008, 10:21) *
- запрограммировать пин по которому при старте загрузчик сваливается в консоль на выход, записать туда 0;

Что-то вроде:
PINSEL4 &= ~(0x03 << 20); /* Clear P2.10 function bits, enabling GPIO function */
FIO40DIR &= ~(1 << 10); /* Configure P2.10 as an input bit */
FIO4PIN &= ~(1<<10);
Цитата(zltigo @ Oct 14 2008, 10:21) *
- перейти по вектору сброса;

А вот здесь не знаю что делать. Ассемлерную вставку по идее надо типа "переход по адресу" Комада вроде "В". Или не прав? Как записать грамотно? Может ещё в чём-то не прав?


--------------------
Если вы не можете объяснить что-то шестилетнему ребенку, значит, вы сами этого не понимаете.
Альберт Эйнштейн
Go to the top of the page
 
+Quote Post
defunct
сообщение Nov 3 2008, 13:01
Сообщение #43


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(VslavX @ Oct 13 2008, 12:11) *
Основной вопрос в том, разлочится ли JTAG если в "секретный" регистр не будет прописано нужное значение CRPx - при пустом флеше такого явно не происходит - некому прописать.


Цитата(VslavX @ Oct 13 2008, 18:35) *
"Магические слова" проверяются по адресу 0x1FC кодом в загрузчике почти сразу при старте. Если слово в 0x1FC "магическое", то загрузчик блокирует JTAG прописывая 0x87654321 в "секретный" регистрик @0xE01FC184 - Вы это подразумевали?

Ну вот Вы сами ответили на вопрос.
Нет загрузчика, никто и не прописывает никакие кодовые слова - значит JTAG в голом чипе доступен всегда.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Nov 3 2008, 13:04
Сообщение #44


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(TanT @ Nov 3 2008, 15:15) *
Ассемлерную вставку по идее надо типа "переход по адресу" Комада вроде "В". Или не прав?

Чуть что, так сразу ASM smile.gif.
name - это собственно адрес чего-либо;
name() - это вызов по адресу....
теперь вместо name берем константу 0, говорим, что это указатель на функцию без параметров и вызываем:
((void(*)(void))0)();


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
TanT
сообщение Nov 7 2008, 09:10
Сообщение #45


Участник
*

Группа: Участник
Сообщений: 61
Регистрация: 22-11-05
Из: Россия->Омск
Пользователь №: 11 210



Уважаемый, zltigo, переход на нулевой адрес работает отлично... но в режим AUTO-BAUD не становиться. PLL отключил, ноль сформировал на P2.10 (у меня LPC2378). Перезапускается и привет. Пробовал отключать стожевик, уарт (находил примеры для 2100) - бесполезно. CRPх не разрешал. Смотрел по алгоритму в мануале на LPC2378 больше ничего криминального нет. Что не учел?


--------------------
Если вы не можете объяснить что-то шестилетнему ребенку, значит, вы сами этого не понимаете.
Альберт Эйнштейн
Go to the top of the page
 
+Quote Post

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

 


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


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