zltigo 0 12 октября, 2008 Опубликовано 12 октября, 2008 · Жалоба Разница ощущается? Нет. Никакого принципиального достоинства в ограничении свободы не вижу. У Вас либо есть свобода отключить все совсем, либо есть возможность оставить эквивалент той самой "Erase" ввиде полностью урезанного штатного загрузчика. Хотите еще и свой "Erase"? Берете любую удобную для себя ножку и назначаете ее в своем загрузчике/приложении "Erase". У меня это, например, один из пинов на JTAG. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bus16 0 13 октября, 2008 Опубликовано 13 октября, 2008 · Жалоба Интересно, а как на этапе производства этот-самый bootloader попадает во-флеш? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Abo 0 13 октября, 2008 Опубликовано 13 октября, 2008 · Жалоба Интересно, а как на этапе производства этот-самый bootloader попадает во-флеш? А наверное через JTAG. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bus16 0 13 октября, 2008 Опубликовано 13 октября, 2008 · Жалоба А наверное через JTAG. Сомневаюсь, эти чипы без bootloader-а пользователю прошить нельзя (через JTAG вызываются функции IAP, сам JTAG ничего о порядке работы с FLASH незнает) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VslavX 0 13 октября, 2008 Опубликовано 13 октября, 2008 · Жалоба Сомневаюсь, эти чипы без bootloader-а пользователю прошить нельзя (через JTAG вызываются функции IAP, сам JTAG ничего о порядке работы с FLASH незнает) А кто мешает залить в RAM функции которые "шьют" флеш без IAP? У производителя такие явно должны быть, это ведь только клиенты не удостоены чести знать алгоритмы. Основной вопрос в том, разлочится ли JTAG если в "секретный" регистр не будет прописано нужное значение CRPx - при пустом флеше такого явно не происходит - некому прописать. Изначально сразу после аппаратного сброса JTAG залочен и, возможно, есть какой-то счетчик, который спустя некоторое время должен JTAG разлочить, если "секретный" регистр не прописан. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bus16 0 13 октября, 2008 Опубликовано 13 октября, 2008 · Жалоба А кто мешает залить в RAM функции которые "шьют" флеш без IAP? У производителя такие явно должны быть, это ведь только клиенты не удостоены чести знать алгоритмы. Согласен полностью. Основной вопрос в том, разлочится ли JTAG если в "секретный" регистр не будет прописано нужное значение CRPx - при пустом флеше такого явно не происходит - некому прописать. Изначально сразу после аппаратного сброса JTAG залочен и, возможно, есть какой-то счетчик, который спустя некоторое время должен JTAG разлочить, если "секретный" регистр не прописан. После подачи питания JTAG не залочен - TAP контроллер захватывает работу ядра, время ему на это надо, вот и создаётся впечатление что JTAG залочен. А CRP - наоборот запрещает работу JTAG если записаны "магические слова" по фикс. адресу во флеш (расположенные рядом с загрузчиком - не путать с 0х1FC) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VslavX 0 13 октября, 2008 Опубликовано 13 октября, 2008 · Жалоба После подачи питания 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 - Вы это подразумевали? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
TanT 0 14 октября, 2008 Опубликовано 14 октября, 2008 · Жалоба Уважаемые эксперты, позвольте вмешаться с вопросиком. Собственно вопрос: Возможно программно ввести LPC2378 в режим программирования ISP? Чтобы в терминалке знак вопроса, Synchronized и прочее. Пробовал коверкать данные по адресу 14, виснет на раз, но в режим программирования не становиться. :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bus16 0 14 октября, 2008 Опубликовано 14 октября, 2008 · Жалоба Что значит "захватывает работу ядра"? :07: TAP - отдельно, ядро - отдельно. Вот потому по подаче питания ядро может выполнить несколько инмтрукций до захвата его работы TAP-контроллером, а что эти инструкции собой представляют - скажет bootloader (как-раз может отрубаться JTAG, активность которо определяется состоянием отдельного пина при старте). "Магические слова" проверяются по адресу 0x1FC кодом в загрузчике почти сразу при старте. Если слово в 0x1FC "магическое", то загрузчик блокирует JTAG прописывая 0x87654321 в "секретный" регистрик @0xE01FC184 - Вы это подразумевали? не, где-то инфа пробегала о возможности защиты от считывания/записи отдельных секторов стандартными ф-ми bootloader-а Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VslavX 0 14 октября, 2008 Опубликовано 14 октября, 2008 · Жалоба Уважаемые эксперты, позвольте вмешаться с вопросиком. Собственно вопрос: Возможно программно ввести LPC2378 в режим программирования ISP? Чтобы в терминалке знак вопроса, Synchronized и Команда IAP "reinvoke ISP" чем-то не устраивает? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 0 14 октября, 2008 Опубликовано 14 октября, 2008 · Жалоба Возможно программно ввести.... Да, - привести контроллер в максимально исходное состояние (контроллер прерывний, PLL, ....); - запрограммировать пин по которому при старте загрузчик сваливается в консоль на выход, записать туда 0; - перейти по вектору сброса; - прочитав на желаемом пине 0 загрузчик свалится в консоль. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
TanT 0 3 ноября, 2008 Опубликовано 3 ноября, 2008 · Жалоба Да, - привести контроллер в максимально исходное состояние (контроллер прерывний, 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); - перейти по вектору сброса; А вот здесь не знаю что делать. Ассемлерную вставку по идее надо типа "переход по адресу" Комада вроде "В". Или не прав? Как записать грамотно? Может ещё в чём-то не прав? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
defunct 0 3 ноября, 2008 Опубликовано 3 ноября, 2008 · Жалоба Основной вопрос в том, разлочится ли JTAG если в "секретный" регистр не будет прописано нужное значение CRPx - при пустом флеше такого явно не происходит - некому прописать. "Магические слова" проверяются по адресу 0x1FC кодом в загрузчике почти сразу при старте. Если слово в 0x1FC "магическое", то загрузчик блокирует JTAG прописывая 0x87654321 в "секретный" регистрик @0xE01FC184 - Вы это подразумевали? Ну вот Вы сами ответили на вопрос. Нет загрузчика, никто и не прописывает никакие кодовые слова - значит JTAG в голом чипе доступен всегда. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 0 3 ноября, 2008 Опубликовано 3 ноября, 2008 · Жалоба Ассемлерную вставку по идее надо типа "переход по адресу" Комада вроде "В". Или не прав? Чуть что, так сразу ASM :). name - это собственно адрес чего-либо; name() - это вызов по адресу.... теперь вместо name берем константу 0, говорим, что это указатель на функцию без параметров и вызываем: ((void(*)(void))0)(); Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
TanT 0 7 ноября, 2008 Опубликовано 7 ноября, 2008 · Жалоба Уважаемый, zltigo, переход на нулевой адрес работает отлично... но в режим AUTO-BAUD не становиться. PLL отключил, ноль сформировал на P2.10 (у меня LPC2378). Перезапускается и привет. Пробовал отключать стожевик, уарт (находил примеры для 2100) - бесполезно. CRPх не разрешал. Смотрел по алгоритму в мануале на LPC2378 больше ничего криминального нет. Что не учел? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться