ViKo 1 26 апреля, 2010 Опубликовано 26 апреля, 2010 · Жалоба Были ли у кого проблемы с ULINK-ME? В хэлпе uVision4 написано: ULINK-ME is only delivered and supported as part of Keil Starter Kits. It is not guaranteed to work with custom hardware. Скомпилировал свой проект (начало). Что-то во флэш STM32F103 загружаю. Но не заводится генератор. И не знаю, где рыться. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
oleg_lwd 0 27 апреля, 2010 Опубликовано 27 апреля, 2010 · Жалоба Со своим проектом и со своей платой все режимы отладки JTAG/SW и трассировка вроде работают Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 27 апреля, 2010 Опубликовано 27 апреля, 2010 · Жалоба Со своим проектом и со своей платой все режимы отладки JTAG/SW и трассировка вроде работают Спасибо! Судя по тому, что загрузка и верификация флэш проходит, дело в программе или аппаратной части. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 3 мая, 2010 Опубликовано 3 мая, 2010 · Жалоба Где-то у Keil писалось, что ULINK-ME по первой ноге JTAG выдает +3.3V, которыми может запитывать тестируемую плату. А для своих разработок рекомендует отрезать эту дорожку или выпаять диод на ULINK-ME. Возможно, в этом и состоит "ограниченность" этого устройства? Второй (и главный) вопрос - кто-нибудь из пользователей ULINK-ME отлаживал процессоры с внешней шиной, с адресацией за пределы внутренней памяти микроконтроллера? Генератор у меня запускается, но в какой-то момент вываливается в HardFault. P.S. Если можно перенести тему в раздел "для начинающих", не возражаю. Я про этот раздел "забыл" :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bseyur 0 3 мая, 2010 Опубликовано 3 мая, 2010 · Жалоба Вы не можете определить место, где возникает HardFault? Если да, то почему бы просто не создать обработчик этого события и не проанализировать содржимое регистров? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 3 мая, 2010 Опубликовано 3 мая, 2010 · Жалоба ...почему бы просто не создать обработчик этого события и не проанализировать содржимое регистров? По-умолчанию программа зацикливается там, насколько я понимаю. Поставив там точку останова, получаю: R13(SP)=0x64000398 R14(LR)=0xfffffff9 Т.е., стек почему-то организовался во внешнем ОЗУ. А программа залетела в HardFault_Handler из несуществующего адреса. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bseyur 0 3 мая, 2010 Опубликовано 3 мая, 2010 · Жалоба А изначально стек где находился? На счет регистра LR вы не правы. При переходе в режим исключительной ситуации адрес возврата нужно выгребать из верхушки стека. LR предоставляет всего лишь информацию о режиме, в котором находилось ядро до возникновения исключения. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 3 мая, 2010 Опубликовано 3 мая, 2010 · Жалоба А изначально стек где находился? На счет регистра LR вы не правы. При переходе в режим исключительной ситуации адрес возврата нужно выгребать из верхушки стека. LR предоставляет всего лишь информацию о режиме, в котором находилось ядро до возникновения исключения. Я в этом совсем "зеленый". Вот код из startup_stm32f10x_hd.s ; Reset handler routine Reset_Handler PROC EXPORT Reset_Handler [WEAK] IMPORT __main LDR R0, = SystemInit_ExtMemCtl; initialize external memory controller BLX R0 LDR R1, = __initial_sp ; restore original stack pointer MSR MSP, R1 LDR R0, =__main BX R0 ENDP После сброса стек в 0x20000400. После команды MSR в MSP загружается 0x64000400. Потому что в свойствах проекта я задал, что есть внешнее ОЗУ по адресу 0x64000000 размером 0x40000. Есть и еще пара устройств на шине. Почему стек прицепился к этой области, мне невдомек. Потом скачет в main и где-то там заскакивает в HardFault. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bseyur 0 3 мая, 2010 Опубликовано 3 мая, 2010 · Жалоба Так MSP - это и есть указатель стека... вот он и перепрыгивает на область внешней ОЗУ. ;) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 3 мая, 2010 Опубликовано 3 мая, 2010 · Жалоба Так MSP - это и есть указатель стека... вот он и перепрыгивает на область внешней ОЗУ. ;) Я его об этом "не просил" :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 15 мая, 2010 Опубликовано 15 мая, 2010 · Жалоба Со стеком разобрался (в разделе для начинающих написано). Теперь о главном. Пытался использовать библиотеку STM32F10x_StdPeriph_Lib_V3.1.2. Имел описанные выше проблемы. Буквально только что установил V3.3.0. Цитирую CMSIS_changes.htm: The old startup concept (calling SystemInit_ExtMemCtl from startup file and calling SystemInit from main) has the weakness that it does not work for controllers which need a already configuerd clock system to configure the external memory controller. Перевожу эту абракадабру так - "индусы" лажанулись, с внешней памятью работать не будет. Перешел на версию V3.3.0, выбросил из main, как написано, SystemInit - заработало! В-общем, с ULINK-ME проблем нет. С библиотекой, надеюсь,... Только не говорите выкинуть ее нахрен. Потом, потом... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться