Перейти к содержанию
    

Как программить flash в LPC без IAP ?

Разница ощущается?

Нет.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Интересно, а как на этапе производства этот-самый bootloader попадает во-флеш?

А наверное через JTAG.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А наверное через JTAG.

Сомневаюсь, эти чипы без bootloader-а пользователю прошить нельзя (через JTAG вызываются функции IAP, сам JTAG ничего о порядке работы с FLASH незнает)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сомневаюсь, эти чипы без bootloader-а пользователю прошить нельзя (через JTAG вызываются функции IAP, сам JTAG ничего о порядке работы с FLASH незнает)

А кто мешает залить в RAM функции которые "шьют" флеш без IAP? У производителя такие явно должны быть, это ведь только клиенты не удостоены чести знать алгоритмы.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А кто мешает залить в RAM функции которые "шьют" флеш без IAP? У производителя такие явно должны быть, это ведь только клиенты не удостоены чести знать алгоритмы.

Согласен полностью.

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

После подачи питания JTAG не залочен - TAP контроллер захватывает работу ядра, время ему на это надо, вот и создаётся впечатление что JTAG залочен. А CRP - наоборот запрещает работу JTAG если записаны "магические слова" по фикс. адресу во флеш (расположенные рядом с загрузчиком - не путать с 0х1FC)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

После подачи питания JTAG не залочен - TAP контроллер захватывает работу ядра, время ему на это надо,

Что значит "захватывает работу ядра"? :07:

TAP - отдельно, ядро - отдельно. Через TAP можно рулить ICE, а уже ICE в некотором роде рулит ядром.

Просто пока успеешь проинициализировать TAP+ICE и выставить Debug Request в DCSR - JTAG уже отваливается - ядро работает и пишет "Magic Number". Действительно, может сам JTAG и не залочен :), но сделать ничего полезного до включения блокировки ядром не получается.

Были мысли притормозить ядро, но LPC23 стартует на внутреннем генераторе - тактовую не остановишь, игры с RESET-ом тоже ни к чему полезному не привели - ICE при сбросе блокируется.

вот и создаётся впечатление что JTAG залочен. А CRP - наоборот запрещает работу JTAG если записаны "магические слова" по фикс. адресу во флеш (расположенные рядом с загрузчиком - не путать с 0х1FC)

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что значит "захватывает работу ядра"? :07:

TAP - отдельно, ядро - отдельно.

Вот потому по подаче питания ядро может выполнить несколько инмтрукций до захвата его работы TAP-контроллером, а что эти инструкции собой представляют - скажет bootloader (как-раз может отрубаться JTAG, активность которо определяется состоянием отдельного пина при старте).

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

не, где-то инфа пробегала о возможности защиты от считывания/записи отдельных секторов стандартными ф-ми bootloader-а

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Команда IAP "reinvoke ISP" чем-то не устраивает?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Возможно программно ввести....

Да,

- привести контроллер в максимально исходное состояние (контроллер прерывний, PLL, ....);

- запрограммировать пин по которому при старте загрузчик сваливается в консоль на выход, записать туда 0;

- перейти по вектору сброса;

- прочитав на желаемом пине 0 загрузчик свалится в консоль.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да,

- привести контроллер в максимально исходное состояние (контроллер прерывний, PLL, ....);

Примерно так:

PLLCON &= ~(1 << 1); // Disconnect the PLL

PLLCON &= ~(1 << 0); /* Disable the PLL */

VICIntEnClear |=0xFFFFFFFF;

- запрограммировать пин по которому при старте загрузчик сваливается в консоль на выход, записать туда 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);

- перейти по вектору сброса;

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

Ну вот Вы сами ответили на вопрос.

Нет загрузчика, никто и не прописывает никакие кодовые слова - значит JTAG в голом чипе доступен всегда.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ассемлерную вставку по идее надо типа "переход по адресу" Комада вроде "В". Или не прав?

Чуть что, так сразу ASM :).

name - это собственно адрес чего-либо;

name() - это вызов по адресу....

теперь вместо name берем константу 0, говорим, что это указатель на функцию без параметров и вызываем:

((void(*)(void))0)();

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...