Полная версия этой страницы:
Помогите запустить LPC2101
LexRoss
Jan 5 2010, 15:44
Есть LPC2101, стабилизаторы 3,3В, 1,8В на LM317;
RESET через 10к на 3.3В, через кнопку на землю;
P0.14 и DBGSEL на землю;
TXD0 и RXD0 к преобразователю на max232;
кварц 11.0592 Мгц
Посылаю в терминале "?", получаю:
ььааь<0>а<0><0>ањ<0><0>–Af–{В<0>9yуЁ±<0>|Њря|гЂа|ѓрЊ|ѓ|cгЊЂрЊ|<0>p8~і<0>Synchronized
dэ
Так и должно быть?
Во Flash magic нажимаю Display flash memory, ошибка: Operation Failed. Failed to autobaud - step 1.
Менял скорость, не помогло.
Может, настройки какие-нибудь поменять?
LexRoss
Jan 7 2010, 09:15
Что должно приходить в терминал после "?" ?
Каждый раз приходят разные символы, потом Synchronized, потом еще несколько символов. Почему так?
Цитата(LexRoss @ Jan 7 2010, 12:15)

Что должно приходить в терминал после "?"
Просто Synchronized и CR LF. В документации есть подробности.
LexRoss
Jan 7 2010, 09:43
А в чем может быть проблема, в питании, длинных проводах? Питание с юсб, провода от max232 до компа 1м, от max232 до lpc 10см.
LexRoss
Jan 15 2010, 19:42
Flash magic перестала выдавать ошибку после замены преобразователя на max3232.
Я зашил программку blinky из примеров keil. Что дальше делать, кроме ресета, чтобы она запустилась? Уровни на p0.14 и DBGSEL должны оставаться низкими?
toweroff
Jan 15 2010, 20:18
Цитата(LexRoss @ Jan 15 2010, 22:42)

Уровни на p0.14 и DBGSEL должны оставаться низкими?
нет, конечно. При низком уровне как раз bootloader запускается
Цитата(LexRoss @ Jan 5 2010, 18:44)

RESET через 10к на 3.3В, через кнопку на землю;
емкость 0.1мкФ параллельно кнопке поставьте
LexRoss
Jan 16 2010, 13:45
Напишите, пожалуйста, последовательность действий, чтобы запустить программу.
Содержимое памяти после прошивки:
Код
00000000 18F09FE518F09FE518F09FE518F09FE5 ................
00000010 18F09FE5805F20B9F0FF1FE518F09FE5 ....._ .........
00000020 58000000400000004400000048000000 X...@...D...H...
00000030 4C000000000000005000000054000000 L.......P...T...
00000040 FEFFFFEAFEFFFFEAFEFFFFEAFEFFFFEA ................
00000050 FEFFFFEAFEFFFFEA98009FE5AA10A0E3 ................
00000060 5520A0E32430A0E3043080E50130A0E3 U ..$0...0...0..
00000070 003080E50C1080E50C2080E5083090E5 .0....... ...0..
00000080 013B13E2FCFFFF0A0330A0E3003080E5 .;.......0...0..
00000090 0C1080E50C2080E55C009FE50410A0E3 ..... ..\.......
000000A0 041080E50210A0E3001080E54C009FE5 ............L...
000000B0 DBF021E300D0A0E1000040E2D7F021E3 ..!.......@...!.
000000C0 00D0A0E1000040E2D1F021E300D0A0E1 ......@...!.....
000000D0 000040E2D2F021E300D0A0E1800040E2 ..@...!.......@.
000000E0 D3F021E300D0A0E1080040E210F021E3 ..!.......@...!.
000000F0 0C009FE510FF2FE180C01FE000C01FE0 ....../.........
00000100 88040040080100000CD09FE5240000EB ...@........$...
00000110 00009FE500F0A0E13801000000040040 ........8......@
00000120 0000A0E3000000EA010080E2000010E1 ................
00000130 200050A01AFF2FA004E02DE1040020E1 .P.../...-... .
00000140 580080E1080481E5000000E0000000E2 X...............
00000150 010000E2040000E0000080E5042080E1 ............. ..
00000160 28009FE10C0080E5002080E1000000E1 (........ ......
00000170 020552220020A022001000E2040000E0 ..R". ."........
00000180 100080E5042080E100009FE1040080E5 ..... ..........
00000190 002080E1000000E101085282E2F7FF8A . ........R.....
000001A0 008002E000000000000002E0000000E0 ................
000001B0 000094E0030000E0030080E0004080E0 .............@..
000001C0 010000E110408422000054E108020000 .....@."..T.....
000001D0 08020000000000000000000000004202 ..............B.
000001E0 043080140020421204B080000AF0A000 .0... B.........
000001F0 0000A0E1000000E10000000200000000 ................
00000200 00204212040080001802000000000040 . B............@
00000210 000000000000000088040000F8010000 ................
00000220 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ................
После ресета прога должна начать исполняться автоматически, или ее надо загружать в озу как-то?
На caxapa.ru/lib/lpc2000.html про это написано, но я не совсем понял:
Цитата
Загрузчик не умеет грузить программу в ОЗУ, однако, при смене версии
bootloader'а, код загружается именно в ОЗУ и ему передается управление.
Он (загрузчик) , как утверждается Филипсом, не имеет также никаких
функций мониторинга или отладки.
На p0.14 и DBGSEL пробовал подавать все комбинации уровней.
Что я не то делаю?
esaulenka
Jan 16 2010, 16:10
Цитата(LexRoss @ Jan 16 2010, 16:45)

Напишите, пожалуйста, последовательность действий, чтобы запустить программу.
Содержимое памяти после прошивки:
на правду похоже. дизассемблировать не обучен,

но начало на вектора прерываний похожи...
Цитата(LexRoss @ Jan 16 2010, 16:45)

После ресета прога должна начать исполняться автоматически, или ее надо загружать в озу как-то?
После резета стартует загрузчик, проверяет необходимость обновления прошивки (нога boot в нуле или отсутствие контрольной суммы векторов) и передаёт управление по адресу 0 (это начало флеша).
Если программа собрана правильно (т.е. для работы из флеш), всё должно быть хорошо.
LexRoss
Jan 16 2010, 16:21
Что значит "программа собрана правильно (т.е. для работы из флеш)" ?
В протеусе все работает, в железе - нет.
LexRoss
Jan 16 2010, 20:43
Сигнатуру нужно вписывать в стартап, или там должен быть NOP? Если нужно, как правильно, так?
Код
Vectors LDR PC, Reset_Addr
LDR PC, Undef_Addr
LDR PC, SWI_Addr
LDR PC, PAbt_Addr
LDR PC, DAbt_Addr
DCD 0x0004FF11 ; Reserved Vector
; LDR PC, IRQ_Addr
LDR PC, [PC, #-0x0FF0]; Vector from VicVectAddr
LDR PC, FIQ_Addr
Reset_Addr DCD Reset_Handler
Undef_Addr DCD Undef_Handler
SWI_Addr DCD SWI_Handler
PAbt_Addr DCD PAbt_Handler
DAbt_Addr DCD DAbt_Handler
DCD 0x0004FF11 ; Reserved Address
IRQ_Addr DCD IRQ_Handler
FIQ_Addr DCD FIQ_Handler
esaulenka
Jan 18 2010, 09:01
В протеусе программа ложится, начиная с адреса 0 ? Тогда всё должно быть нормально.
Не сильно в это верю, но если напрячься, можно заставить линкер собрать программу для работы в ОЗУ (т.е. адреса там будут начинаться с 0x40000000), а hex сформировать с адреса 0. Работать такое не будет

Сигнатуру (кстати, в число не верю. как считали?) флешмэджик считает (и перезаписывает) самостоятельно.
Может, допустим, что программа всё-таки стартует?
LexRoss
Jan 22 2010, 17:39
Цитата
В протеусе программа ложится, начиная с адреса 0 ?
Где это в протеусе можно посмотреть?
Если программа стартует, то как это проверить?
Может, есть у кого-то рабочая прошивка, любая, для lpc2101, чтобы можно было осцилом что-либо увидеть на ногах?
LexRoss
Jan 23 2010, 09:02
LPC2101 питается от 2-х стабилизаторов на LM317, прошиваю через UART, преобразователь на MAX3232, с помощью FlashMagic.
В терминале на "?" отвечает Synchronized.
Пробовал шить из примеров Keil blinky - в протеусе работает, в железе - нет.
Программируется через раз, память читается тоже не всегда сразу.
Плата:
P0.14 подтяжка через резистор на +3.3В есть? DBGSEL через резистор на GND есть?
LexRoss
Jan 23 2010, 14:33
Подтяжка на p0.14 (pin 44) к 3,3 через 5,1К и DBGSEL на землю через 5,1К.
Вот что написано на сахаре:
Цитата
P0.16 или P0.14 ??? "Этих признаков два - состояние ноги P0.16 в момент сброса...". Смотрю на схему "Ashling Eval Board" и там ISP MODE выбирается через P0.14 (pin44).
Это ошибка. Бутлоадер запускает нога P0.16. Это выяснено опытным
путем на имеющихся кристаллах lpc210х. На остальных кристаллах
bootloader запускается сигналом на P0.14.
Внимание! Похоже гуляет две версии кристалла lpc210x - старый с ногой
P0.16 и новый - c ногой P0.14
Так на какую ногу подавать?
Сейчас подавал и на p0.16, никаких изменений.
у меня LPC2103 - работает с P0.14. Смотрите правильность монтажа, остатки флюса, может по питанию больше емкостей.
Прикрепил hex - мигает на P0.22 (32 pin) где-то раз в секунду.
adnega
Jan 24 2010, 05:40
Схему собирал на макетке, сейчас ее уже нет. Насколько помню, тоже долго боролся за стабильность работы (шилась через раз), и главное что понял - не надо жалеть конденсаторов на 0.1uF ))
Они у Вас в полном объеме? На макете не очень видно. Конденсаторы должны быть как можно ближе к процессору.
Идею подглядывал тут (http://www.olimex.com/dev/images/lpc-h2103-sch.gif)
adnega
Jan 24 2010, 07:39
Еще вопросик. А почему именно LPC2101?!
Может STM32F103T4 какой-нить лучше будет

...
LexRoss
Jan 24 2010, 11:36
Цитата
Они у Вас в полном объеме?
0,1 на каждой ноге питания стоят
Цитата
А почему именно LPC2101?!
По LPC хотя бы книжка есть, а 2101 - это то, что не жалко спалить
Поставил другие стабилизаторы, подключил от 9в батарейки, по осцилу питание чистое.
Пробовал прошивать несколько программок, никаких изменений.
Может все-таки что-то с LPC ? Стоит ли заказывать другую?
adnega
Jan 24 2010, 20:09
Конечно, не образец по написанию кода...
В терминале с настройками 9600-8N1 на команду "who" должен кое-что ответить )
Моргает светодиодом PORT1.11
Кварц 18.432MHz
LexRoss
Jan 25 2010, 09:06
на who приходит эхо, p0.11 не моргает.
adnega
Jan 25 2010, 11:07
печатаем who и нажимаем enter.
моргает p1.11 (первый порт, а не нулевой)
Сори, p0.11
LexRoss
Jan 25 2010, 11:28
да, в протеусе проверил, моргает p0.11
Может, вместо flash magic чем-то еще можно прошить?
adnega
Jan 25 2010, 14:14
LPC2000 Flash Utility 2.2.3
LexRoss
Jan 25 2010, 15:48
2.2.3 у меня не работает - контроллер не могу выбрать, а 2.2.0 не поддерживает LPC2101.
Нет ли у кого версии 2.2.2, что то не могу найти?
adnega
Jan 25 2010, 16:12
У меня все выбирается, версия 2.2.3
Утилита в архиве
LexRoss
Jan 25 2010, 19:56
Не хочет у меня 2.2.3 работать
Может, есть другая версия?
zltigo
Jan 25 2010, 20:12
AT200 на этом форуме найдете, заодно отладку включите и весь обмен запротоколируете.
LexRoss
Jan 26 2010, 09:31
AT200 не входит в загрузчик
esaulenka
Jan 26 2010, 10:20
Цитата
AT200 не входит в загрузчик
ключик -debug с цифрой побольше выдаёт кучу информации, возможно, по ней получится что-то разобрать.
а вообще, кажется мне, тут возможны три причины:
неправильное питание
неправильный преобразователь rs232
неправильный процессор
осциллографа, как я понимаю, нету?
LexRoss
Jan 26 2010, 11:41
Заработало!
Все-таки прошил раза с десятого.
Интересно, почему с flash magic не работало...
Огромное спасибо всем за советы!
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.