IgorKossak 0 6 февраля, 2010 Опубликовано 6 февраля, 2010 · Жалоба zltigo, не сложно ли будет добавить семейство LPC17xx? Возникла необходимость с ними работать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 2 6 февраля, 2010 Опубликовано 6 февраля, 2010 · Жалоба zltigo, не сложно ли будет добавить семейство LPC17xx? Полагаю, что не сложно, только живьем нет, но теоретически могу. Для младших с 32K Flash, можно подобный LPC джокером -LPC2xxx задать. А так вообще, забью вечерком табличку и для LPC13/17 Теоретически добавил 19 чипов LPC11xx/LPC13xx/LPC17xx полный список, как обычно, при запуске с ключем `-list` За IgorKossak - проверка и логи, если что :) Внимание! Облом - с Cortex пока работать не будет :( - через несколько часов подправлю еще несколько мест. Кроме банального изменения таблиц надо еще место контрольной суммы менять, начальный адрес RAM, команды отличаются, может и что еще найду... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 2 7 февраля, 2010 Опубликовано 7 февраля, 2010 · Жалоба Версия 0.31.1 - можно пробовать на кортексах. - области RAM под буфера соответствует LPC1xxx - запуск загруженного в LPC1xxx приложения в THUMB режиме - контрольная сумма векторов для LPC1xxx в правильном месте - до кучи еще LPC2109 и несколько экзотических romless добавлены. at200_311.rar Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 2 27 апреля, 2010 Опубликовано 27 апреля, 2010 · Жалоба Версия 0.31.3. Так не знаю :(, пробовал-ли кто-то на Cortex-ах предыдущую. Добавлено: - отображение версии Windows; - увеличение буферов за COM портом терминала; - ключик для изменения Code Read Protect Level `-crp <0|1|2>` с контролем содержимого (не запишет поверх кода, как это делает родная утилита) контроль производится на значения 0x00000000, 0xFFFFFFFF, CRP1, CRP2, CRP3 по адресу 0x1FC. CRP3 от греха подальше не устанавливатся - только отключается, или меняется; - в ожидании нажатия 'AnyKey' убрана безумная загрузка процессора. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bseyur 0 30 мая, 2010 Опубликовано 30 мая, 2010 (изменено) · Жалоба Попробовал, наконец, сегодня на 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. Изменено 30 мая, 2010 пользователем bseyur Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 2 30 мая, 2010 Опубликовано 30 мая, 2010 · Жалоба При указании директивы -detect сигнатура успешно считывается. В момент запуска уровень crp2 уже стоял на чипе, возможно, в этом-то и заключается проблема. Да в этом. Надо стирать перед программированием. Update: Указал директиву -fullerase - прошивка налалась. Так и задумывалось :) Но шьет ооооочень долго, в час по чайной ложке. :( Для начала уберите указание частоты кварца - оно неверное - загрузчик LPC1xxx работает на внутреннем 14.746MHz она и стоит по умолчанию. -ctrl и боды тоже по умолчанию указанным Вами соответствуют. На Win7 не работаю, но вроде никто на скорость не жаловался. Завтра на работе возьму ноутбук с семеркой и посмотрю сам. Вообще там голый WinAPI - трудно что-нибудь неправильно написать. Есть только маленький прибамбасик с увеличением размеров буферов (это не для целей LPC загрузчика ) который идет только на NT-образных Win - для этого введено определение версии Win. Ячейка CRP размеслилась неверно, для lpc17xx адрес - 2FC. Ой! Прсмотрел :( в документации. Исправленная версия в приложении. Лог-файл отсутствует (не нашел нигде), поэтому привожу вывод командной строки: Лог файл это терминальный и он таки создается в текущей директории, или где укажете, но лога загрузки в нем нет. Надо :( переназначить вывод. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bseyur 0 30 мая, 2010 Опубликовано 30 мая, 2010 (изменено) · Жалоба Для начала уберите указание частоты кварца - оно неверное - загрузчик 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: Изменено 30 мая, 2010 пользователем bseyur Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 2 30 мая, 2010 Опубликовано 30 мая, 2010 · Жалоба ноутбуке с 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' запустить. Но пока жду лога. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bseyur 0 30 мая, 2010 Опубликовано 30 мая, 2010 (изменено) · Жалоба Вот, пожалуйста... debug.txt Изменено 30 мая, 2010 пользователем bseyur Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 2 30 мая, 2010 Опубликовано 30 мая, 2010 · Жалоба Вот, пожалуйста... Отличный лог. Ругается ошибкой номер 13 (разборку ошибок совершенствую - будет показывать ) 13: "Address is not on word boundary (ADDR_ERROR)" Таки и действительно адрес для Corteх странный - нечетный. Сейчас сделаю - сброс младшего бита адреса, похоже он лишний, ибо в команде "G" уже передаю ключик "Thumb" - ключик для отключения команды "G" и замены ее на попытку сбросить (причины в предыдущем письме) - допишу разборку ошибок, дабы ответы этого загрузчика тоже понимала и расшифровывала. И попробуем.... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bseyur 0 30 мая, 2010 Опубликовано 30 мая, 2010 (изменено) · Жалоба Можно ведь просто ножкой DTR дернуть для сброса, как делается в FlashMagic... или это не вариант? Изменено 30 мая, 2010 пользователем bseyur Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 2 30 мая, 2010 Опубликовано 30 мая, 2010 · Жалоба Сделано. Версия 0.31.6 - Добавлен ключик `-reset`. Отменяет после загрузки переход по стартовому адресу указанному в HEX файле и делает аппаратный сброс. Если нет поддержки апаратного сброса ( не -ctrl 1|3 ) то пытается задействовать watchdog (не документированная команда). - Корректная разборка строк с кодами ошибок, и в том случае, если в строке отсутствуют пары CR/LF - Обнуление младшего бита адреса в команде 'G' для Cortex Можно ведь просто ножкой DTR дернуть для сброса, как делается в FlashMagic... или это не вариант? Вариант, если есть этот проводок :). Лично я обычно уже не использую - в пустой заливается свой загрузчик и все. Если что, то из вторичного загрузчика есть запуcк родного. Собственно по ключу -reset пытается сбросить всеми способами. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bseyur 0 30 мая, 2010 Опубликовано 30 мая, 2010 · Жалоба Прошил. Собственно сброс состоялся, видел, как DTR дернулся. debug.txt Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 2 30 мая, 2010 Опубликовано 30 мая, 2010 · Жалоба Прошил. Собственно сброс состоялся, видел, как DTR дернулся. Дык самое итересное глянуть реакцию на G. Что будет без -reset. Знаю, сейчас пытаюсь создать эту ситуацию. Ну если ситуация ушла, и G тоже заработало, то все относительно нормально, только надо помнить, что по G Вы до, например, старта приложения своим загрузчиком, или до установки стеков, например, операционной системой, работаете в стеке оставшемся от первичного загрузчика. Так-то сейчас хочу просто глянуть на исполнение команды и, пожалуй, надо закрыть это дело для Cortex. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bseyur 0 30 мая, 2010 Опубликовано 30 мая, 2010 · Жалоба Ну если ситуация ушла, и G тоже заработало, то все относительно нормально, только надо помнить, что по G Вы до, например, старта приложения своим загрузчиком, или до установки стеков, например, операционной системой, работаете в стеке оставшемся от первичного загрузчика. Так-то сейчас хочу просто глянуть на исполнение команды и, пожалуй, надо закрыть это дело для Cortex. Да, G заработало, отсоединил аппаратный reset для надежности. Но для меня (при наличии сброса через DTR) это было не главное. Все же основная проблема в большом времени прошивки, непонятными паузами после каждой транзакции... :( Попробую завтра замутить тест на ARM7 - сообщу результат. debug.txt Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться