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

zltigo, не сложно ли будет добавить семейство LPC17xx?

Возникла необходимость с ними работать.

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


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

zltigo, не сложно ли будет добавить семейство LPC17xx?

Полагаю, что не сложно, только живьем нет, но теоретически могу. Для младших с 32K Flash, можно подобный LPC джокером -LPC2xxx задать.

А так вообще, забью вечерком табличку и для LPC13/17

 

Теоретически добавил 19 чипов LPC11xx/LPC13xx/LPC17xx

полный список, как обычно, при запуске с ключем `-list`

 

За IgorKossak - проверка и логи, если что :)

 

Внимание! Облом - с Cortex пока работать не будет :( - через несколько часов подправлю еще несколько мест. Кроме банального изменения таблиц надо еще место контрольной суммы менять, начальный адрес RAM, команды отличаются, может и что еще найду...

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


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

Версия 0.31.1 - можно пробовать на кортексах.

- области RAM под буфера соответствует LPC1xxx

- запуск загруженного в LPC1xxx приложения в THUMB режиме

- контрольная сумма векторов для LPC1xxx в правильном месте

- до кучи еще LPC2109 и несколько экзотических romless добавлены.

at200_311.rar

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


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

Версия 0.31.3. Так не знаю :(, пробовал-ли кто-то на Cortex-ах предыдущую.

Добавлено:

- отображение версии Windows;

- увеличение буферов за COM портом терминала;

- ключик для изменения Code Read Protect Level `-crp <0|1|2>` с контролем содержимого (не запишет поверх кода, как это делает родная утилита) контроль производится на значения 0x00000000, 0xFFFFFFFF, CRP1, CRP2, CRP3 по адресу 0x1FC. CRP3 от греха подальше не устанавливатся - только отключается, или меняется;

- в ожидании нажатия 'AnyKey' убрана безумная загрузка процессора.

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


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

Попробовал, наконец, сегодня на Cortex-е LPC1758. Прошить не смог. :smile3046:

Использовал следующую командную строку:

 

at200 COM6 -baud 115200 -osc 24000 -ctrl 1 -l log.txt -crp 2 -flash AutosndLPC1758.hex

 

Лог-файл отсутствует (не нашел нигде), поэтому привожу вывод командной строки:

 

at200 COM6 -baud 115200 -osc 24000 -ctrl 1 -l log.txt -crp 2 -flash AutosndLPC1758.hex

AT200/AES ISP/Terminal for LPC2/1000 V0.31.3 by I.Zalts. Windows 6.1

Set Boot Control mode: 1

Log output to:`log.txt`

Set CRP Level: 2

HEX file: [Ctrl+F9] AutosndLPC1758.hex

Serial Port: COM6 Baud: 115200

Oscilator: 24000KHz

Entering to LPCxxxx Bootloader -Ok

Bootcode: 4.1.0

Chip ID: LPC1758 512KB ROM/64KB SRAM (ID:620838711/0x25013F37)

File : 'AutosndLPC1758.hex' -Loaded

Load Address: 00000000

Run Address Found: 000052A5

End of File

Image size: 28884. Data Aligned to 4096 Bytes (28884->32768)

Code Protect: CRP2 Enabled

Sector 00

Wrong answer on Erase-Command (Sector 0)

Error:

Press AnyKey to Exit

 

При указании директивы -detect сигнатура успешно считывается. В момент запуска уровень crp2 уже стоял на чипе, возможно, в этом-то и заключается проблема. На "чистом" чипе пока проверить не могу.

Помимо прочего, еще один непрятный момент. Выполнение идет слишком долго, между стадиями "вхождение в бутлоадер", "чтение ID чипа" и, собственно, "начала прошивки" наблиюдаются паузы от 15 до 25 секунд.

 

ОС: Windows 7

 

P.S. Благодарю за программку. Прошивку с помощью ком. строки нахожу весьма удобным. Вот только довести бы ее до ума. :rolleyes:

 

Update: Указал директиву -fullerase - прошивка налалась. Но шьет ооооочень долго, в час по чайной ложке. :(

Ячейка CRP размеслилась неверно, для lpc17xx адрес - 2FC.

Изменено пользователем bseyur

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


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

При указании директивы -detect сигнатура успешно считывается. В момент запуска уровень crp2 уже стоял на чипе, возможно, в этом-то и заключается проблема.

Да в этом. Надо стирать перед программированием.

Update: Указал директиву -fullerase - прошивка налалась.

Так и задумывалось :)

Но шьет ооооочень долго, в час по чайной ложке. :(

Для начала уберите указание частоты кварца - оно неверное - загрузчик LPC1xxx работает на внутреннем 14.746MHz она и стоит по

умолчанию. -ctrl и боды тоже по умолчанию указанным Вами соответствуют.

На Win7 не работаю, но вроде никто на скорость не жаловался. Завтра на работе возьму ноутбук с семеркой и посмотрю сам. Вообще там голый WinAPI - трудно что-нибудь неправильно написать. Есть только маленький прибамбасик с увеличением размеров буферов (это не для целей LPC загрузчика ) который идет только на NT-образных Win - для этого введено определение версии Win.

Ячейка CRP размеслилась неверно, для lpc17xx адрес - 2FC.

Ой! Прсмотрел :( в документации. Исправленная версия в приложении.

 

Лог-файл отсутствует (не нашел нигде), поэтому привожу вывод командной строки:

Лог файл это терминальный и он таки создается в текущей директории, или где укажете, но лога загрузки в нем нет. Надо :( переназначить вывод.

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


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

Для начала уберите указание частоты кварца - оно неверное - загрузчик LPC1xxx работает на внутреннем 14.746MHz она и стоит по

умолчанию. -ctrl и боды тоже по умолчанию указанным Вами соответствуют.

Сделал в соответствии с Вашими рекомендациями. Проблема со скоростью осталась...

Картина такая. На платке-программаторе стоят светодиоды, которые загораются во время передачи данных. Во время отправки очередной порции светодиоды моргнут, затем пауза в примерно пол-минуты, затем снова и т.д. Не поленился проделать те же дейтвия на ноутбуке с WinXP - прошивается так же медленно. :smile3046: Может, это как-то связано с типом процессора?

Прошивается программа верно, CRP заработал. После завершения прошивки команда запуска выполняется с ошибкой:

Now launching <0052a5> the brand new code....Failed: Error:

Press AnyKey to Exit

И еще, Win7 определяется как версия 6.1. :blink: Думаю, что это неправильно, т.к. обычно эти номером обозначается Vista. WinXP - 5.x соответственно.

 

Лог файл это терминальный и он таки создается в текущей директории, или где укажете, но лога загрузки в нем нет. Надо :( переназначить вывод.

Увы, лога нет ни в текущей директории (где находится hex-файл), ни в папке с at200.exe (к приложению обращаюсь через path), ни в корне...

 

...

:bb-offtopic:

Изменено пользователем bseyur

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


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

ноутбуке с WinXP - прошивается так же медленно. :smile3046:

Ну тогда совсем не ведаю, что творится. Может кто еще попробует. Тогда хоть какое-то направление для мыслей появится.

Тем не менее, прошивается программа верно. После завершения прошивки команда запуска выполняется с ошибкой:

А программа при этом запускается, или только после reset?

Что-то там со строкой ответа в этом загрузчике не то :(

Давайте включим отладку. Делаем так:

at200 COM6 -debug 4 -flash AutosndLPC1758.hex > debug.txt

Ждем.... ждем... сколько там у Вас все шьется и запускается. Прерываем и выкладываем сюда результат debug.txt

И еще, Win7 определяется как версия 6.1. :blink: Думаю, что это неправильно, т.к. обычно эти номером обозначается Vista. WinXP - 5.x соответственно.

Нет. Vista 6.0

http://msdn.microsoft.com/en-us/library/ms...3(v=VS.85).aspx

 

Увы, лога нет ни...

Повторяю еще раз - лог для ТЕРМИНАЛЬНОГО ввда/вывода. Не для загрузчика. Для лога загрузчика переназначить вывод в файл, как

показано выше.

В приложении немножко подправленный AT200

P.S.

А вообще-то команду 'G' для Corteх после загрузки надо херить :(. Указатель стека некому устанавливать,так что только в общем случае только через сброс. Для сброса, если нет доступа можно попробовать watchdog недокументированной командой 'T' запустить.

Но пока жду лога.

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


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

Вот, пожалуйста...

Отличный лог. Ругается ошибкой номер 13 (разборку ошибок совершенствую - будет показывать )

13: "Address is not on word boundary (ADDR_ERROR)"

Таки и действительно адрес для Corteх странный - нечетный. Сейчас сделаю

- сброс младшего бита адреса, похоже он лишний, ибо в команде "G" уже передаю ключик "Thumb"

- ключик для отключения команды "G" и замены ее на попытку сбросить (причины в предыдущем письме)

- допишу разборку ошибок, дабы ответы этого загрузчика тоже понимала и расшифровывала. И попробуем....

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


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

Можно ведь просто ножкой DTR дернуть для сброса, как делается в FlashMagic... или это не вариант?

Изменено пользователем bseyur

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


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

Сделано. Версия 0.31.6

- Добавлен ключик `-reset`. Отменяет после загрузки переход по стартовому адресу указанному в HEX файле и делает аппаратный сброс.

Если нет поддержки апаратного сброса ( не -ctrl 1|3 ) то пытается задействовать watchdog (не документированная команда).

- Корректная разборка строк с кодами ошибок, и в том случае, если в строке отсутствуют пары CR/LF

- Обнуление младшего бита адреса в команде 'G' для Cortex

 

Можно ведь просто ножкой DTR дернуть для сброса, как делается в FlashMagic... или это не вариант?

Вариант, если есть этот проводок :). Лично я обычно уже не использую - в пустой заливается свой загрузчик и все. Если что, то из вторичного загрузчика есть запуcк родного. Собственно по ключу -reset пытается сбросить всеми способами.

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


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

Прошил. Собственно сброс состоялся, видел, как DTR дернулся.

Дык самое итересное глянуть реакцию на G. Что будет без -reset.

 

Знаю, сейчас пытаюсь создать эту ситуацию.

Ну если ситуация ушла, и G тоже заработало, то все относительно нормально, только надо помнить, что по G Вы до, например, старта приложения своим загрузчиком, или до установки стеков, например, операционной системой, работаете в стеке оставшемся от первичного загрузчика. Так-то сейчас хочу просто глянуть на исполнение команды и, пожалуй, надо закрыть это дело для Cortex.

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


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

Ну если ситуация ушла, и G тоже заработало, то все относительно нормально, только надо помнить, что по G Вы до, например, старта приложения своим загрузчиком, или до установки стеков, например, операционной системой, работаете в стеке оставшемся от первичного загрузчика. Так-то сейчас хочу просто глянуть на исполнение команды и, пожалуй, надо закрыть это дело для Cortex.

 

Да, G заработало, отсоединил аппаратный reset для надежности. Но для меня (при наличии сброса через DTR) это было не главное. Все же основная проблема в большом времени прошивки, непонятными паузами после каждой транзакции... :(

Попробую завтра замутить тест на ARM7 - сообщу результат.

 

debug.txt

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


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

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

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

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

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

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

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

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

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

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