так я его специально и выставил чтоб убедится в правильности кода.
Добавлено спустя 5 минут 51 секунду: а почему если отладчиком выставить виглер, то дальше этого окна ничего не идет?
Добавлено спустя 2 минуты 13 секунд: а... вроде понял, потому что виглер не правильно в кейле настроен, я-то прошиваю прямо из вигреровской софтинки, а не из кейла
Добавлено спустя 8 минут 53 секунды: кстати, кто нибудь настраивал виглер под кеил? я вроде всё правильно настроил согласно инструкции с его сайта
Q. How to configure KEIL? A. KEIL->PROJECT->OPTIONS FOR TARGET->DEBUG->USE RDI Interface Driver->SETTING->BROWSER->Choose H-JTAG.DLL loacted in the installation folder.
Добавлено спустя 14 минут 28 секунд: тут всё правильно настроено?
Добавлено спустя 23 минуты 19 секунд: Настройка Wiggler совместно со средой IAR, Keil, CrossWorks
Не поленился поставить кейл (правда четвертый). Короче - чтобы программа работала из ОЗУ, если это пример кейловский (я взял пример MCB2100) - у него есть 3 конфигурации, MCB2100 Flash, MCB2100 RAM и Simulator. Вот настройки, которые прописались когда я выбрал RAM. Главный смысл я так понимаю в адресах IROM1/IRAM1 и в Initialization file: . \RAM.ini
Добавлено спустя 1 минуту 6 секунд: Да, злой прикол в том, что когда меняешь тип контроллера - настройки памяти скидываются. На флешевые.
Эд, здесь ядро быстрое, а флешь тормозная. Буфер это исправляет, но не полностью. А оперативка быстрая, в нее можно выгрузить некоторые особо используемые функции и таким образом улучшить производительность своей программы. Хотя на мой взгляд это скорее метод оптимизации на случай, если все уже почти готово, но не влезает по производительности
да я не про то... я имел ввиду что так и не понял куда прошивается мой код т.е. такое впечатление что прошиваю во флеш, а арм стартует из ОЗУ, ну или на оборот.
LPC2294 14,7456Мгц светодиод висит на P0.30 кнопка на P0.29 а если еще и из usb (uart0) будет в терминалку чё нибудь передоваться я ваще умру от счастья
Работа кода из ОЗУ применяется в двух случаях: 1. Чтобы работало побыстрее. Вроде как на LPC не сильно актуально, там MAM есть, аффтары утверждают что программа из флеши тоже исполняется на полной скорости. Реализация: прога вся пишется во флеш, но при старте часть кода, который должен исполняться из ОЗУ, копируется туда (механизм тот же, что и для инициализированных данных). 2. Чтобы флешу зря не мучать. Это тот вариант, про который я говорил. Вся прога, в том числе и векторы прерываний, собирается для работы в ОЗУ и записывается в ОЗУ прямо через JTAG из среды. Естественно размер кода ограничен размером ОЗУ - но это не проблема для светодиодной мигалки. В общем, это идеальный режим для мелких тестов - потому как все очень просто, нажал в IDE кнопку "Debug" - и прога скомпилилась, залилась в МК и побежала. Или встала на начале функции main(), а дальше по шагам.
К сожалению не работал всерьез с кейлом, только с CrossWorks. На приведенных скринах ничего не менял, просто открыл первый попавшийся пример-мигалку и выбрал конфигурацию RAM - файл Ram.ini именно в таком виде прописался сам. Поиск показал, что такой файл есть во многих папках с примерами, в нем написаны некие инструкции для отладчика. Что это за формат - я не знаю, но действия достаточно очевидные: загрузить скомпилированный файл в ОЗУ, установить PC на 0x40000000 (начало ОЗУ) и запустить исполнение. Еще упомянута функция main, возможно на нее поставится брейкпоинт.
А что касается вопроса откуда стартует LPC - вообще он всегда стартует с бутлоадера. Бутлоадер проверяет состояние ножки P0.14 (на олимексовской плате переключатель ICSP), если на ней 0 - переходит в режим ISP. Если 1 - он проверяет, есть ли во флеши программа. Прошивающий софт при прошивке считает контрольную сумму векторов прерываний и помещает ее в специальную ячейку. Бутлоадер считает контрольную сумму векторов во флеши, затем сверяет ее с этой ячейкой. Если сошлось - значит во флеши валидная программа, тогда управление передается ей на адрес 0x00000000. Если нет - опять же ISP (ну то есть он ждет заливки программы по уарту).
Если отладка по JTAG работает, определить куда плюхнулся МК, легко - нажать "стоп" и посмотреть адрес в PC. Флеш находится с нулевого адреса, ОЗУ с 0x40000000, бутлоадер еще дальше (0x7fff....). Отладчик через JTAG может менять ОЗУ и любые регистры - поэтому ему на эти перемычки-суммы глубоко пофиг, он может ручками заставить проц выполнять то, что ему надо.