![]() |
|
Модераторы: PILOT, ManiaK, Mazzi |
![]()
|
|
| CnApTaK |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 9.1.2012 Репутация: нет Всего: нет |
Добрый день.
Посоветуйте кто чем может Есть желание начать разбираться в программировании чипа LPC1766FBD100. Объясню почему именно его. Есть готовое устройство в котором этот чип используется. Есть разъём с выводами для подключения к ISP. Не поленился и уже почитал немного мануал по чипу на тему защиты флешки от чтения и записи. На сколько я понимаю, если чип даёт войти в режим ISP то защиты нет? Или есть? Как это проверить? Пишу сюда потому что при попытке синхронизировать скорость порта в режиме ISP (посылаю символ "?") получаю ответ не тот который должен. Должен получить ответ "Synchronized" (11 байт), а получаю какие-то другие 11 байт - 694D99B10C8E2A87A5AB77. Причём протестировал на нескольких аналогичных устройствах. Везде ответ одинаковый. Я где-то ошибся в подключении или я получаю какой-то шифрованный ответ? Это защита какая-то? Подскажите как ещё можно было бы проверить доступен ли флеш на запись хотя бы. В наличии только само устройство с чипом и компьютер с компортом, поэтому jtag не предлагать. негде взять. Вобщем интересно, можни ли использовать эту устройство в качестве тестовой платы P.S. разъём на устройстве такой (слева чёрный к компу (картинка COM порта справа) подключаю 3 проводами. 10 - GROUND, 8 - TX, 7 - RX. ресет 5-ый на землю срабатывает. если 9-ый кинуть на землю и сделать ресет то судя по мануалу я попадаю в загрузчик то бишь в режим ISP ну и там как я уже писал посылаю вопросик Это сообщение отредактировал(а) CnApTaK - 9.1.2012, 18:08 |
|||
|
||||
| Mazzi |
|
|||
|
Правильный ![]() ![]() Профиль Группа: Комодератор Сообщений: 825 Регистрация: 3.4.2003 Репутация: 9 Всего: 21 |
Обычно после включения защиты считываемые данные просто искажаются без возможности восстановления. Если программу "стереть", то защита убирается и чип готов к записи новой программы.
-------------------- Мне нужны помощники. |
|||
|
||||
| CnApTaK |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 9.1.2012 Репутация: нет Всего: нет |
Какие именно данные искажаются и как их стереть?
Загрузчик, который запускается при иницализации ISP разве находиться не в ROM? Как клиентское приложение может исказить данные загрузчика? Читать код клиентского приложения мне не требуется. Он у меня есть. Мне требуется найти возможность, записать на флешку чипа свой код, который после включения запустится на выполнение.
Если я правильно понял, то это меры по ограничению доступа к коду пользователя. Тут не сказано что данные загрузчика как-то искажаются. Из написанного следует, что CRP3 блокирует вход в ISP используя P2[10] при включении или ресете. Но устройства, которые у меня в распоряжении, реагируют на заземление этого пина. В том плане что они перестают работать так как должны и входят в некий режим диалога через последовательный порт. Вобщем мне сложно анализировать ситуацию. Я своими глазами не видел как правильно должен работать ISP и сам порт в нормальном режиме. Я уверен только в том, что COM порт компьютера исправен и порты устройства тоже. Я проверил множество устройств. Все ведут себя одинакого. А вот защита это или какая-то несовместимость я и хотел узнать у знающих людей. Хотя вот только что из дома проверил послать команду "?" и получил тоже 11 байт но уже другие A354BA3D9154B1A4DAC5F3 Это сообщение отредактировал(а) CnApTaK - 9.1.2012, 23:29 |
|||
|
||||
| UniBomb |
|
|||
|
Новичок ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 1754 Регистрация: 24.10.2006 Где: Санкт-Петербург Репутация: 9 Всего: 97 |
Меня смущает одна вещь - ты чего, мк подключаешь напрямую к ком-порту? Этого делать категорически нельзя. У большинства "прошивательных" интерфейсов TTL-логика, т.е. 0..5 вольт. У ком-порта мало того, что -15..15, так ещё и уровень сигнала наоборот интерпретируется. Для прошивания мк необходимо использоваться специальные адаптеры, именуемые программаторами. И прошиваются они не через терминал, а с помощью специальных утилит. Я с элпецешками никогда не работал, не могу рассказать о последних веяниях моды, но на вскидку вот тебе ссылка, в качестве отправной точки думаю должно хватить.
Загрузчик, или bootloader, как правило находится в специальном месте (обычно в конце памяти программ), и этот сектор имеет ряд особенностей в работе направленных на защиту от случайной порчи. Mazzi немного не так выразился. При включённой защите чтения загрузчик на запрос о чтении возвращает случайные данные, не имеющие никакого отношения к пользовательской программе. Например мк фирмы атмел возвращают "00 01 02 03 04 05 06 ..." и т.д. |
|||
|
||||
| CnApTaK |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 9.1.2012 Репутация: нет Всего: нет |
а можно поподробнее про ТТЛ логику? про программатор? можно как-то простым способом его сделать или купить?
я просто в электронике не силён. хотел хотел просто чип попрограммировать P.S. а точно для LPC1766FBD100 нужно 5В, а не 3.3? или 5В тоже подойдёт? я нашёл схему для 5В. она решит мою проблему? http://freecircuitdiagram.com/2009/03/27/s...ing-transistor/ Это сообщение отредактировал(а) CnApTaK - 10.1.2012, 12:33 |
|||
|
||||
| UniBomb |
|
|||
|
Новичок ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 1754 Регистрация: 24.10.2006 Где: Санкт-Петербург Репутация: 9 Всего: 97 |
ТТЛ регламентирует, что максимальное напряжение равно 5 вольт. Низкое напряжение интерпретируется как логический ноль, высокое соответственно как единица. Уровни сигналов при этом у каждого производителя/семейства/экземпляров могут различаться. Скажем у одной микросхемы низкий уровень это 0..0,4 вольта, 2.4..5 высокий. У другой микросхемы 0..0,8 - ноль, 2.7..5 - единица. Конкретнее надо смотреть в даташите. Значение между максимальным нулевым и минимальном единичным тоже могут по разному интерпретироваться. Что касается сабжевого мк, тот у него питание оказывается вообще 3,3 вольта. В даташите про уровни сигналов там вона чо написано:
![]() т.е. 0..0,3 - логический ноль, 0,7...3,3 - единица. У ком порта же -15..-3 - единица, 3..15 - ноль. Но в принципе тебе этим голову можно не забивать, раз ты не собираешься строить своё программатор. Далее, к сожалению, я тебе ничем не помогу. Я не работал с lpc, я не знаю чем они шьются. Может быть они вообще умеют по usb программироваться, без всяких адаптеров. |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 8 Всего: 223 |
||||
|
||||
| CnApTaK |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 9.1.2012 Репутация: нет Всего: нет |
то есть если я возьму например http://www.digilentinc.com/Data/Products/P...232_rm_RevB.pdf
то с подключением проблема будет решена? работать с ISP я умею. у него есть команды. да и программ много которые могут заливать/скачивать данные на/с флешки. |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 8 Всего: 223 |
Да, вполне (если только вы не успели уже спалить ноги LPC сигналами с RS232) |
|||
|
||||
| CnApTaK |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 9.1.2012 Репутация: нет Всего: нет |
Вобщем дело сдвинулось с мёртвой точки. Детали купить не удалось, ну и ладно.
Зато был в наличии вот такой вариант. Скачал/установил драйвер для него. Воткнул в USB и получил виртуальный COM порт, а на пинах rx/tx напряжение 0-5В инвертированное. Подключил к этим выводам контакты 7,8 и 10 с того разъёма устройства на картинке и после подключения на 9600/8/NONE/1 и посылки в порт команды "?" получил в ответ "Syncronized" вобщем чтение флешки оказалось недоступным в силу защиты первого уровня. но запись первый уровень не блокирует. поэтому я обнулил флеш память. теперь защиты нет. как нет и загрузчика который мигал диодами и делал из устройства флешку при подключении к усб но меня особо это не смущает. моя цель научиться писать софт под арм, а испытывать его теперь есть на чём спасибо все кто откликнулся. с этой темой разобрались. теперь приступаем к программированию. тут явно будет много вопросов первый вопрос: в чём лучше писать и чем компилировать? попробовал Keil uVision4. не понравилось. открываю любой проект для других чипов и собрать его под мой чип уже невозможно. интерфейс и настройки программы какие-то непонятные и расположено всё неудобно. потом скачал LPCXpresso. другое дело. отличный софт. умный. подсветка синтаксиса. куча примеров (хотя интересующих меня я так и не нашёл). может где-то есть база примеров побольше? крякнутую версию не нашёл. как вообще решить на моём чипе казалось бы тривиальную задачку - программа запускается и отслеживает событие поступления информации на допустим UART1 RX и делает эхо на UART2 TX? сложно ли это сделать и можете ли поделиться примерчиком на эту тему? P.S. есть ещё желание снять защиту на моём устройстве. у меня таких несколько. одно уже лежит без загрузчика и служит моим реальным полигоном испытаний компилированного кода. но вот на других защита на чтение присутствует. я сегодня анализировал память. она как бы делаться на 22 блока по 11Кб каждый.. на рабочем устройстве я вижу что заняты первые 4 блока, два следующих блока свободны и потом ещё 13 занятых блоков. исходя из того, что у меня есть бинарник которым я могу защить новую версию в устройство через программу производителя и он занимает по размеру чуть меньше чем размер 13 блоков, я предположил что "прошивальщик" производителя заливает эти бинарники как раз в область этих 13 блоков начиная с 7-ого... я сегодня поробовал занулить всё что выше 6-ого блока после повторного включения устройства оно перестало работать по назначению и запустился загрузчик. при подключении к компу через усб разъём в компе появляется съёмный диск размером 256кб - 24кб = 232кб. видимо это часть внутренней флешки отображается. но на этом диске лежит файлик firmware.bin который весь забит нулями. тем не менее если закинуть вместо него банарник последней версии от производителя и перезагрузить, то устройство опять работает как надо меня разбирает любопытство. есть какой-то способ определить с какого адреса загрузчик запускает код? чтобы допустим записать туда свой и запустить и уже в коде написать процедуру которая сдампит код загрузчика допустим в оперативку или я занимаюсь фигнёй и реально скопировать загрузчик с одного устройства на другое нет никакой возможности? Это сообщение отредактировал(а) CnApTaK - 11.1.2012, 21:10 |
|||
|
||||
![]()
|
| Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)" | |
|
|
На данный раздел помимо Правил форума распространяются текже следующие правила:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, PILOT, ManiaK, UniBomb, Mazzi. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Микроконтроллеры (MCU) и микропроцессоры (MPU) | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |