|
STM32F103x, делимся впечатлениями |
|
|
|
Jan 12 2008, 08:01
|
Участник

Группа: Участник
Сообщений: 40
Регистрация: 10-01-07
Из: Вильнюс
Пользователь №: 24 290

|
Вёл проект на LPC3264, потом предложили STM32 (Cortex-M3), ресурсов в последнем ровно столько сколько нужно и, всвязи с тем, что это довольно новый продукт, решил поделиться впечатлениями. Схемы и программы у обоих проектов идентичные.
Сравнительные плюсы: Ток потребления меньше чем у лпц (35-40 мА, соответственно и источник питания проще и дешевле) Не так чувствителен к скачкам напряжения питания (2-3.6 В, тут ещё будем тестировать, но лпц сбрасывался в определённых условиях) Багов не замечено (в лпц2364 критичная проблема с МАМ)
Сравнительные минусы: Дебагить не слишком удобно (если интересно смогу пояснить подробнее) Флэш меньше
Буду признателен если кто-нибудь пополнит список или расскажет с чем ещё нехорошим могу тут столкнуться.
Сообщение отредактировал OVladimir - Jan 12 2008, 08:13
|
|
|
|
20 страниц
1 2 3 > »
|
 |
Ответов
(1 - 99)
|
Jan 12 2008, 16:34
|
Участник

Группа: Свой
Сообщений: 33
Регистрация: 4-11-04
Пользователь №: 1 042

|
В корпусах <=64 - нет возможности REF с наружи завести , а внутренних 1.5в не хватает.
|
|
|
|
|
Jan 12 2008, 16:41
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(OVladimir @ Jan 12 2008, 10:01)  (в лпц2364 критичная проблема с МАМ) 1. Уже в прошлом 2. У STM - вообще мамообразных вещей нет. Цитата тут ещё будем тестировать Да уж лучше без голословия  Цитата Дебагить не слишком удобно (если интересно смогу пояснить подробнее) Естественно интересно. Я не особый поклонник внутрисхемной отладки, но попробовал с RLink в Ride7 ничего особо неудобного не заметил. Цитата(YAM @ Jan 12 2008, 10:25)  Особенно радует F/2 при работе c SPI. Делиться пока нечем  У LPC тоже типа есть, но с проблемами на прием
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Jan 12 2008, 17:15
|
Участник

Группа: Участник
Сообщений: 40
Регистрация: 10-01-07
Из: Вильнюс
Пользователь №: 24 290

|
Цитата(zltigo @ Jan 12 2008, 18:41)  У STM - вообще мамообразных вещей нет.
Естественно интересно. Я не особый поклонник внутрисхемной отладки STM хвалятся своими самыми быстрыми в мире флэш, но конечно же, они не такие быстрые как надо для того чтобы оправдать частоту ядра в 72 MHz, думаю, влепят рано или поздно. Суть не в том. Для определённых задач скорости более чем предостаточно. "Да уж лучше без голословия  " куда уж тут, не дома сидим, и вещи для людей делаем, как им потом в глаза смотреть. Про дебаг: Практически во всех случаях приходится это делать в реальной схеме, так сразу видно почти все огрехи (как программы, так и самой схемы). А с STM при дебаге если после точки останова необходимо сделать шаг (step over, например), попадаешь в процедуры обработки какого-нибудь прерывания, поэтому приходится расставлять доп. брейкпоинты чтобы просто пройти по процедуре основного цикла, тут я не знаю, может есть другой какой-нить способ, но в лпц такого не наблюдалось.
|
|
|
|
|
Jan 12 2008, 18:28
|

Профессионал
    
Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555

|
Цитата(OVladimir @ Jan 12 2008, 20:15)  А с STM при дебаге если после точки останова необходимо сделать шаг (step over, например), попадаешь в процедуры обработки какого-нибудь прерывания, поэтому приходится расставлять доп. брейкпоинты чтобы просто пройти по процедуре основного цикла, тут я не знаю, может есть другой какой-нить способ, но в лпц такого не наблюдалось. Дело в том, что LPC - ARM7 и его ICE не поддерживает single step, он реализуется отладчиком (разными способами можно посмотреть например исходники GDB). А у Cortex-M3 уже есть аппаратный single step и поэтому вы попадаете в прерывания - здесь опять же хороший отладчик, если не требуется отлаживать прерывания должен их обходить.
|
|
|
|
|
Jan 12 2008, 19:01
|
Участник

Группа: Участник
Сообщений: 40
Регистрация: 10-01-07
Из: Вильнюс
Пользователь №: 24 290

|
Цитата(KRS @ Jan 12 2008, 20:28)  у Cortex-M3 уже есть аппаратный single step и поэтому вы попадаете в прерывания
хороший отладчик, если не требуется отлаживать прерывания должен их обходить. Вот, спасибо, есть объяснение. и, не в тему вопрос, у кейла хороший отладчик? и где у него это настраивается?
|
|
|
|
|
Jan 12 2008, 19:36
|

Ally
     
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050

|
Особенно он хорош в связке с STR912. Ваааще убийца становится. http://aly.ogmis.lt/OpenProjects/ARMDominator4/ARMD4.htmА про отладку говорить мало смысла не сказав в какой среде отлаживаете. Цитата(OVladimir @ Jan 12 2008, 12:31)  Вёл проект на LPC3264, потом предложили STM32 (Cortex-M3), ресурсов в последнем ровно столько сколько нужно и, всвязи с тем, что это довольно новый продукт, решил поделиться впечатлениями. Схемы и программы у обоих проектов идентичные.
Сравнительные плюсы: Ток потребления меньше чем у лпц (35-40 мА, соответственно и источник питания проще и дешевле) Не так чувствителен к скачкам напряжения питания (2-3.6 В, тут ещё будем тестировать, но лпц сбрасывался в определённых условиях) Багов не замечено (в лпц2364 критичная проблема с МАМ)
Сравнительные минусы: Дебагить не слишком удобно (если интересно смогу пояснить подробнее) Флэш меньше
Буду признателен если кто-нибудь пополнит список или расскажет с чем ещё нехорошим могу тут столкнуться.
|
|
|
|
|
Jan 12 2008, 19:41
|
Участник

Группа: Участник
Сообщений: 40
Регистрация: 10-01-07
Из: Вильнюс
Пользователь №: 24 290

|
Цитата(AlexandrY @ Jan 12 2008, 21:36)  в какой среде отлаживаете. RealView Microcontroller Development Kit Version 3.11 это всё
|
|
|
|
|
Jan 12 2008, 22:40
|
Знающий
   
Группа: Свой
Сообщений: 509
Регистрация: 19-07-07
Из: г. Таганрог
Пользователь №: 29 246

|
Цитата(zltigo @ Jan 13 2008, 00:51)  Не знаю, как на Моссковской, но если, как на остальных, то собствено семейство было только обозначено и соответственно в документе по ссылке о нем практически ничего нет. Там немного описана переферия (стр 28) и место, которое он должен занимать на рынке (словом информация для продавцов). Флеши и RAM обещается явно по-больше, чем сейчас у ST. Модуль Ethernet MAC наверняка будет от LPC23xx/24xx с DMA. Я был на этой конференции. Представитель NXP утверждал, что эта серия ориентирована на замену 8 и 16 битных МК при той же стоимости, производительности, привосходящей ARM7 и низком энергопотреблении. Больше всего "хвалили" эту архитектуру STMicroelectronix. Посмотрим, что получится у NXP
Сообщение отредактировал Vitaliy_ARM - Jan 12 2008, 22:44
--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
|
|
|
|
|
Jan 13 2008, 06:30
|
Участник

Группа: Участник
Сообщений: 40
Регистрация: 10-01-07
Из: Вильнюс
Пользователь №: 24 290

|
Цитата(AlexandrY @ Jan 12 2008, 21:51)  Таже скорость пошагового прохода гораздо выше. это может потому что частота JTAG в 1 MHz вместо 200 kHz в лпц Вопрос в другом, реально ли в кейле сделать обход обработчиков прерываний, о котором упоминал KRS, и начиная с какой версии это возможно сделать?
|
|
|
|
|
Jan 13 2008, 08:37
|

Ally
     
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050

|
Лучше скажите как умудрится сделать чтобы отладчик все время спотыкался на прерываниях. Такого никогда не было и в последнем компилере нет. Подозреваю, что была либо целостность сигналов нарушена, либо ядро не в режиме из-за неправильной инициализации. Кстати в Cortex увеличилось количество допустимых брекпойнтов. Цитата(OVladimir @ Jan 13 2008, 11:00)  это может потому что частота JTAG в 1 MHz вместо 200 kHz в лпц
Вопрос в другом, реально ли в кейле сделать обход обработчиков прерываний, о котором упоминал KRS, и начиная с какой версии это возможно сделать?
|
|
|
|
|
Jan 13 2008, 08:43
|
Участник

Группа: Участник
Сообщений: 40
Регистрация: 10-01-07
Из: Вильнюс
Пользователь №: 24 290

|
Цитата(AlexandrY @ Jan 13 2008, 10:37)  Лучше скажите как умудрится сделать чтобы отладчик все время спотыкался на прерываниях. Такого никогда не было и в последнем компилере нет.
Подозреваю, что была либо целостность сигналов нарушена, либо ядро не в режиме из-за неправильной инициализации.
Кстати в Cortex увеличилось количество допустимых брекпойнтов. Ничего не делал специально, иннициализация ровно такая же как и в примерах с сайта кейл, буду ковырять тогда глубже, а точек останова да, больше: 8 вместо 2 в ARM7
|
|
|
|
|
Jan 13 2008, 09:18
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(OVladimir @ Jan 13 2008, 08:30)  это может потому что частота JTAG в 1 MHz вместо 200 kHz в лпц Про 200 что-то ну совсем не то. Вот прямо случайно прямо сейчас работал как обычно на 4000 (четырех тысячах килогерц) рекордами не занимался, просто работал. Код - Connecting via USB to J-Link device 0 - J-Link firmware: V1.20 (J-Link compiled Jun 14 2007 14:36:33 ARM Rev.5) - JTAG speed: 50 kHz (Fixed) - Initializing CPU core (Init sequence) ... - Initialized successfully - WARNING: Measured CPU clock frequency is higher than selected. (Measured: 59760 kHz, Selected: 14745 kHz) - CPU clock frequency: 14745 kHz (Measured: 59760 kHz) - JTAG speed: 4000 kHz (Fixed) - J-Link found 2 JTAG devices. Core ID: 0x4F1F0F0F (ARM7) - Connected successfully Reading entire flash chip ... - 27 sectors, 1 range, 0x0 - 0x7CFFF - RAM tested O.K. - Using DCC mode - Target memory read successfully. (86000 bytes, 2 ranges) - Completed after 0.861 sec Core ID это LPC2138.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Jan 20 2008, 23:19
|
Знающий
   
Группа: Свой
Сообщений: 509
Регистрация: 19-07-07
Из: г. Таганрог
Пользователь №: 29 246

|
Если кому интересно - выкладываю демоплату от ST (проект в AltiunDesigner 6.?).
Сообщение отредактировал Vitaliy_ARM - Jan 20 2008, 23:20
--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
|
|
|
|
|
Jan 24 2008, 13:14
|
Знающий
   
Группа: Свой
Сообщений: 509
Регистрация: 19-07-07
Из: г. Таганрог
Пользователь №: 29 246

|
Цитата(Сергей Борщ @ Jan 24 2008, 14:41)  Это твой GNU gcc-frendly проект был, или в комплекте шел? Если твой - выложишь? Надо с чего-то начинать когда-нибудь, а то пока все доку читаю. У меня есть куча примеров для платы, которую я выкладывал и не только.
--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
|
|
|
|
|
Jan 24 2008, 13:49
|

бессмертным стать можно тремя способами
    
Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912

|
Цитата(zltigo @ Jan 24 2008, 14:27)  На счет денег только это показалось, то, что ты получил все-в-одном это ограниченная версия платного продукта рекламу которого ST отспонсировало.  ага, моий проект - за 3 минуты наваял !! не тконечно, пример был зашит вдевайс - катание шарика по экрану (обработка сигнала акселеромеров), графическое меню, какието еще игрушки типа arcanoid и тд,. Установив Raid7 скаченный с сайта там же обнаружился именно тот пример для STM32 который зашит производителем (видимо они дружат). 2 Zltigo А что платное, в чем подвох то? На сайте Raid7 написано что все тулсы при использовании GNU GCC и использовании STM32 "No software limitation"
|
|
|
|
|
Jan 24 2008, 14:56
|
Знающий
   
Группа: Свой
Сообщений: 509
Регистрация: 19-07-07
Из: г. Таганрог
Пользователь №: 29 246

|
Цитата(klen @ Jan 24 2008, 16:49)  А что платное, в чем подвох то? На сайте Raid7 написано что все тулсы при использовании GNU GCC и использовании STM32 "No software limitation" А бесплатные j-таги не пробовали прикручивать?
Сообщение отредактировал Vitaliy_ARM - Jan 24 2008, 14:58
--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
|
|
|
|
|
Jan 26 2008, 09:14
|
Участник

Группа: Участник
Сообщений: 40
Регистрация: 10-01-07
Из: Вильнюс
Пользователь №: 24 290

|
Цитата(cebotor @ Jan 25 2008, 15:46)  I2C немного криво реализован. сначала тоже так показалось, но потом разобрался и понял что, в принципе, реализация вполне приемлемая и работает стабильно. Цитата(cebotor @ Jan 25 2008, 15:46)  прилагающимися примерами от команды индусов пользоваться опасно, заструктурировано все до нельзя, а на верхнем уровне куча багов (проверять все используемое фирмваре лайбрари до низу!) это уже не по поводу самого процессора, такие явления сплош и рядом, в своих ошибках легче разобраться чем в чужих
Сообщение отредактировал OVladimir - Jan 26 2008, 09:21
|
|
|
|
|
Jan 26 2008, 20:52
|

Ally
     
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050

|
А вот это не очевидно. У ST явная политика на сворачивание документирования чипов. Они переходят на предоставление либ без подробного описания железа. Как это сейчас делается у OEM-щиков. Вот как тест, к примеру, скажите мне где в доке на STM32 указано от какого источника и с какой частотой идет клок на таймеры 2,3,4. Цитата(OVladimir @ Jan 26 2008, 13:44)  это уже не по поводу самого процессора, такие явления сплош и рядом, в своих ошибках легче разобраться чем в чужих
|
|
|
|
|
Jan 27 2008, 00:56
|
Участник

Группа: Участник
Сообщений: 40
Регистрация: 10-01-07
Из: Вильнюс
Пользователь №: 24 290

|
Цитата(AlexandrY @ Jan 26 2008, 22:52)  скажите мне где в доке на STM32 указано от какого источника и с какой частотой идет клок на таймеры 2,3,4. в data sheet и в референс мануал есть блок схема, там всё видно, плюс есть описание всех блоков словами. само описание выполнено в другом стиле нежели у эникспи, сложнее немного, но всё есть
|
|
|
|
|
Jan 28 2008, 07:03
|

Ally
     
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050

|
Ну что ж, я считаю что вы не нашли. Элементы тактирования таймеров на блоксхеме либо не верны либо не описаны. Стиль это не какая-то мелочь, по опросам более чем для 50% разработчиков основным критерием в выборе кристалла является качество документации. Собственно эта документация отражает качество работы команды разработчиков чипа, т.е. косвенно определяет и качество самого чипа. А по опыту плохая дока на пару месяцев может спокойно задержать проект. Другое дело, что чипы для ST разрабатывают по аутсорсу, а доку пишут ихние индусы и видно очень ленивые. Т.е. чипы сами по себе не хуже других, но во тем кто их продает я не позавидую. Цитата(OVladimir @ Jan 27 2008, 05:26)  в data sheet и в референс мануал есть блок схема, там всё видно, плюс есть описание всех блоков словами.
само описание выполнено в другом стиле нежели у эникспи, сложнее немного, но всё есть
|
|
|
|
|
Jan 28 2008, 07:47
|

Частый гость
 
Группа: Свой
Сообщений: 135
Регистрация: 6-04-07
Из: Бронницы
Пользователь №: 26 809

|
Цитата(zltigo @ Jan 26 2008, 23:58)  Жутко раздражает, чувствуешь себя идиотом пытающимся восстановить облик мамонта по куче его окаменелых экскрементов  с одной стороны может это и полезно , например попользовавшись ератами атмела и филипса приходишь к выводу , что с таким количеством "особенностей" лучше бы сразу предоставили код которым можно пользоваться. предоставили софтварный интерфейс вместо хардварного так сказать. Только пhи этом нельзя оставлять прежнее отношение к этим апнотам - "это всего лишь пример , и поставляется as it is ". А так лично мне было бы все равно с какой абстракцией работать - с битом в кфг регистре , или с членом структуры.
--------------------
если еррата пуста - это не хорошо а плохо
|
|
|
|
|
Jan 28 2008, 09:31
|
Участник

Группа: Участник
Сообщений: 40
Регистрация: 10-01-07
Из: Вильнюс
Пользователь №: 24 290

|
Цитата(AlexandrY @ Jan 28 2008, 09:03)  Элементы тактирования таймеров на блоксхеме либо не верны либо не описаны. RM0008 Reference manual STM32F101xx and STM32F103xx advanced ARM-based 32-bit MCUs на 48 странице "Clock tree" плюс описание самих таймеров: The counter clock can be provided by the following clock sources: ● Internal clock (CK_INT) ● External clock mode1: external input pin ● External clock mode2: external trigger input ETR ● Internal trigger inputs (ITRx):..... Или я чего-то не понимаю, но по-моему это именно та информация, а по поводу ошибок в ней хотелось бы поподробней. Ай, был в ST офисе в Паге целую неделю, ни одного индуса не видел
|
|
|
|
|
Jan 29 2008, 20:32
|

Профессионал
    
Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555

|
Цитата(Vitaliy_ARM @ Jan 24 2008, 17:56)  А бесплатные j-таги не пробовали прикручивать? Недавно купили кит EKI-LM3S6965 Ethernet Evaluation Kit for IAR Embedded Workbench от Stellaris так вот на нем интегрирован JTAG в виде FTDI2232C, и есть фича при удерживании reset при включекнии он может работать наружу, пробовал подключать его к ARM7 но IAR пишет что LMFTDI поддерживает только Cortex-M3, похоже можно любой cortex подключить ( у меня к сожалению нет другого под рукой что бы проверить) сделали плату с STM32F103x но вывели только SWD наружу (это отдельная песня). К чему я это все - к тому что, можно взять обычный JTAG на FT2322C и указать IAR что это LMFTDI, одно только надо либо прошить eeprom штатной программой FTDI (прошивку еепром если надо выложу inf файлы для драйвера тоже все сдалено как описано в FTDI) либо подправить DLL чтобы цеплялась к первой попавшейся FTDI. Есть еще CodeSourcery вариант - там интересен GDB server (ради этого одного exe пришлось качать 400 метров CD к данному варианту кита) который цепялется на этот FTDI (ему уже прошивка еепром пофиг, специально проверил стер), но он работает только в режиме SWD (как раз для этого и нужа простенькая FPGA на плате в основном она делает следующее - одна из ног FTDI выбрает режим JTAG / SWD если JTAG то просто насквозь пропускает, а если SWD то FTDI TMS управляет направлением, а FTDI TDO и FTDI TDI объеденяются на SWDIO(TMS), а FTDI TCK так и идет на SWDCK(TCK)) Вот этот вариант, после долгих танцев с бубном ( пришлось отрезать TMS от LM3S6965 потому что в режиме SWD, даже если при включении держать кнопку все равно цепляется к внутреннему процу даже ресет пофиг это какой то прикол SWD) у меня подключился к STM32F103, но поругался что это не Stellaris и что флеш и еще что то не работает, но что Cortex-M3 все ок. Завтра продолжу эксперементы. А то IAR4 не поддерживает gdb server, а IAR 5.10 не поддерживает Cortex, вот приходится 5.11 качать
|
|
|
|
|
Jan 30 2008, 06:25
|
Участник

Группа: Участник
Сообщений: 40
Регистрация: 10-01-07
Из: Вильнюс
Пользователь №: 24 290

|
Получил newsletter "The ST Microcontroller Newsletter - January/February 2008" сегодня, там написано:
STM32 receives EG3 "editor's choice" award! Ну это так, просто
|
|
|
|
|
Jan 30 2008, 08:10
|

Частый гость
 
Группа: Свой
Сообщений: 135
Регистрация: 6-04-07
Из: Бронницы
Пользователь №: 26 809

|
Цитата(KRS @ Jan 29 2008, 23:32)  Есть еще CodeSourcery вариант - там интересен GDB server (ради этого одного exe пришлось качать 400 метров CD к данному варианту кита) который цепялется на этот FTDI (ему уже прошивка еепром пофиг, специально проверил стер), но он работает только в режиме SWD (как раз для этого и нужа простенькая FPGA на плате в основном она делает следующее - одна из ног FTDI выбрает режим JTAG / SWD если JTAG то просто насквозь пропускает, а если SWD то FTDI TMS управляет направлением, а FTDI TDO и FTDI TDI объеденяются на SWDIO(TMS), а FTDI TCK так и идет на SWDCK(TCK)) Вот этот вариант, после долгих танцев с бубном ( пришлось отрезать TMS от LM3S6965 потому что в режиме SWD, даже если при включении держать кнопку все равно цепляется к внутреннему процу даже ресет пофиг это какой то прикол SWD) у меня подключился к STM32F103, но поругался что это не Stellaris и что флеш и еще что то не работает, но что Cortex-M3 все ок. а можно поподробнее: 1 что за пакет CodeSourcery и где его скачать (если на http://www.codesourcery.com/ , то где конкретно) 2 почему GDB сервер входящий в состав этого пакета работает только как SWD (правильно я понял ) 3 на какой плате стоит фпга и поподробнее какую глобальную функцию она выполняет - позволяет работать процу STM по SWD ? (он вроде и так для этого заточен). 4 правильно ли я понял что вам удалось прошивкой FTDI-ного епрома заставить иар видеть важ ЖТАГ как некий LMFTDI - про который он говорит что тот предназначет только для кортекса ? если да , то чем Вас такой вариант не устраивает ? мне удалось заставить работать олимексовский адаптер на FTDI c LPC2138 в ИАРЕ 5.11 через GDB сервер входящий в состав пакета OPENOCD. Однако в последней версии этого пакета нету скрипта настройки цели сервера GDB именно для cortexa. хотя текст этого скрипта есть в pdf хелпа к GDB (вероятно остался от старой версии, но будет ли работать пока не проверил )
--------------------
если еррата пуста - это не хорошо а плохо
|
|
|
|
|
Jan 30 2008, 11:18
|

Профессионал
    
Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555

|
Цитата(cebotor @ Jan 30 2008, 11:10)  а можно поподробнее: 1 что за пакет CodeSourcery и где его скачать (если на http://www.codesourcery.com/ , то где конкретно) это кастомизированный eclipse + gcc + поддержка жлеза я брал верисю которая лежит у luminary http://www.luminarymicro.com/products/ekc-...uation_kit.htmlEKC-LM3S6965-CD-148 LM3S6965 Evaluation Kit for CodeSourcery CD Цитата(cebotor @ Jan 30 2008, 11:10)  2 почему GDB сервер входящий в состав этого пакета работает только как SWD (правильно я понял ) есть exe файл arm-stellaris-eabi-sprite.exe если его запустить с правильными параметрами он станет gdb server ом (параметра выбирающего SWD / JTAG нет да и устройство знает одно на FTDI ) Цитата(cebotor @ Jan 30 2008, 11:10)  3 на какой плате стоит фпга и поподробнее какую глобальную функцию она выполняет - позволяет работать процу STM по SWD ? (он вроде и так для этого заточен). про FPGA я писал (FPGA на плате в основном она делает следующее - одна из ног FTDI выбрает режим JTAG / SWD если JTAG то просто насквозь пропускает, а если SWD то FTDI TMS управляет направлением, а FTDI TDO и FTDI TDI объеденяются на SWDIO(TMS), а FTDI TCK так и идет на SWDCK(TCK)) это даже не FPGA а CPLD LC4032V уже зашитая но логическая схема есть в даташите она очень простая, если делать клон можно обойтись рассыпухой схему можно скачать http://www.luminarymicro.com/products/ekc-...uation_kit.htmlUM-EK-LM3S6965-01 Stellaris LM3S6965 Evaluation Board User's Manual сейчас при коннекте с stm32f103 получается следующее Код arm-stellaris-eabi-sprite -l 3333 -a -v armusb:?speed=7 test arm-stellaris-eabi-sprite: CodeSourcery ARM Debug Sprite (Sourcery G++ 4.2-68) arm-stellaris-eabi-sprite: Target has now been reset arm-stellaris-eabi-sprite: Target is already halted arm-stellaris-eabi-sprite: Connected to Cortex-M3 successfully and passed all validation. arm-stellaris-eabi-sprite: E031: BusFault on access to memory arm-stellaris-eabi-sprite: error: Stellaris Flash access failure надо как то отключить опознование и работу с флешой. Цитата(cebotor @ Jan 30 2008, 11:10)  4 правильно ли я понял что вам удалось прошивкой FTDI-ного епрома заставить иар видеть важ ЖТАГ как некий LMFTDI - про который он говорит что тот предназначет только для кортекса ? если да , то чем Вас такой вариант не устраивает ? Я стандартными средствами ( MProg 3.0a ) сичтал eeprom, потом его стер iar перестал коннектится и записал заново опять все заработало. (отlельной платы с FTDI у меня нет) но все зделано стандартно никакой хитрой защиты нет. У меня на плате выведен только SWD хочется его запустить
|
|
|
|
|
Jan 30 2008, 14:43
|

Профессионал
    
Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555

|
Свершилось чудо!Я запустил STM32F103 с отладчиком JTAG на FTDI FT2232C и IAR 511 (gdb server) и openocd даже IAR flash loader заработал и прошил flash. Конфигурация такая STM32F103 <-> FT2232C <-> OpenOCD <-> IAR 5.11 только OpenOcd пришлось подправить в файле armv7m.c закоментарил 339 строчку Код /* ARMV7M is always in thumb mode, try to make GDB understand this if it does not support this arch */ /* armv7m->process_context->reg_list[15].value[0] |= 1; */ а то IAR честно воспринимал текущую позицию как PС+1
|
|
|
|
|
Jan 31 2008, 08:39
|

Частый гость
 
Группа: Свой
Сообщений: 135
Регистрация: 6-04-07
Из: Бронницы
Пользователь №: 26 809

|
Цитата(KRS @ Jan 30 2008, 17:43)  Конфигурация такая STM32F103 <-> FT2232C <-> OpenOCD <-> IAR 5.11 только OpenOcd пришлось подправить в файле armv7m.c закоментарил 339 строчку Код /* ARMV7M is always in thumb mode, try to make GDB understand this if it does not support this arch */ /* armv7m->process_context->reg_list[15].value[0] |= 1; */ а то IAR честно воспринимал текущую позицию как PС+1 Вы пересобрали OPENOCD как я понял? а после этого получившийся openocd-ftd2xx.exe запустили и у Вас заработал GDB сервер? а файл кфг откуда взяли если не секрет ? ведь запуск этого файла : openocd-ftd2xx.exe --file lpc2xxx_armusbocd.cfg (для ЛПЦ например ) или я не прав ?
--------------------
если еррата пуста - это не хорошо а плохо
|
|
|
|
|
Jan 31 2008, 12:17
|

Профессионал
    
Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555

|
Цитата(cebotor @ Jan 31 2008, 11:39)  Вы пересобрали OPENOCD как я понял? а после этого получившийся openocd-ftd2xx.exe запустили и у Вас заработал GDB сервер? а файл кфг откуда взяли если не секрет ? ведь запуск этого файла : openocd-ftd2xx.exe --file lpc2xxx_armusbocd.cfg (для ЛПЦ например ) или я не прав ? Да пересобрал OPENOCD скачал исходники последнии из svn... как собирать здесь описано http://openfacts.berlios.de/index-en.phtml...uilding_OpenOCDзаконфигурил как ./configure --enable-ft2232_ftd2xx --with-ftd2xx=/cygdrive/e/..... собрал. у меня один exe получился openocd.exe запускаю как openocd.exe -f test.cfg Конфигурационный файл взял отсюда http://openfacts.berlios.de/index-en.phtml...OpenOCD_scriptsГлавное там: Код #jtag scan chain #format L IRC IRCM IDCODE (Length, IR Capture, IR Capture Mask, IDCODE) jtag_device 4 0x1 0xf 0xe jtag_device 5 0x1 0x1 0x1e #target <type> <startup mode> #target cortex_m3 <endianness> <reset mode> <chainpos> <variant> target cortex_m3 little run_and_halt 0 run_and_halt_time 0 30 working_area 0 0x20000000 16384 nobackup #flash bank <driver> <base> <size> <chip_width> <bus_width> flash bank stm32x 0x08000000 0x00010000 0 0 0 Ну я еще добавил что reset_config none у меня только TMS TCK TDI TDO подключены Ну естественно еще описание ftdi ( у меня кривое птому что я плату как отладчик использую), полный мой конфиг такой Код #daemon configuration telnet_port 4444 gdb_port 3333
#interface interface ft2232 ft2232_device_desc "Stellaris Evaluation Board A" ft2232_layout jtagkey ft2232_vid_pid 0x0403 0xbcd9 jtag_speed 10
#reset config reset_config none
#jtag scan chain #format L IRC IRCM IDCODE (Length, IR Capture, IR Capture Mask, IDCODE) jtag_device 4 0x1 0xf 0xe jtag_device 5 0x1 0x1 0x1e
#target configuration daemon_startup reset
#target <type> <startup mode> #target cortex_m3 <endianness> <reset mode> <chainpos> <variant> target cortex_m3 little run_and_halt 0 run_and_halt_time 0 30 working_area 0 0x20000000 16384 nobackup #flash bank <driver> <base> <size> <chip_width> <bus_width> flash bank stm32x 0x08000000 0x00010000 0 0 0
|
|
|
|
|
Jan 31 2008, 12:58
|

Частый гость
 
Группа: Свой
Сообщений: 135
Регистрация: 6-04-07
Из: Бронницы
Пользователь №: 26 809

|
Цитата(KRS @ Jan 31 2008, 15:17)  алладин ! колоссальное спасибо за предоставленную информацию !
--------------------
если еррата пуста - это не хорошо а плохо
|
|
|
|
|
Jan 31 2008, 14:02
|
Знающий
   
Группа: Свой
Сообщений: 509
Регистрация: 19-07-07
Из: г. Таганрог
Пользователь №: 29 246

|
Цитата(KRS @ Jan 31 2008, 15:17)  Да пересобрал OPENOCD скачал исходники последнии из svn... как собирать здесь описано http://openfacts.berlios.de/index-en.phtml...uilding_OpenOCDКак OpenOCD с IAR стыковать? Через RDI драйвер? Может ссылку подкинете?
--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
|
|
|
|
|
Jan 31 2008, 14:27
|

Частый гость
 
Группа: Свой
Сообщений: 135
Регистрация: 6-04-07
Из: Бронницы
Пользователь №: 26 809

|
Цитата(Vitaliy_ARM @ Jan 31 2008, 17:02)  Как OpenOCD с IAR стыковать? Через RDI драйвер? Может ссылку подкинете? OpenOCD запускается как GDB сервер - то есть висит на локалхосте - для его использования надо выбрать в опциях проэкта в свойствах дебаггера GDB server а в свойствах самого GDB сервера указать адрес 127.0.0.1,2331 где 2331 - порт на котором запускается OpenOCD. все это касается ИАРа 5.11 который поддерживает GDB
--------------------
если еррата пуста - это не хорошо а плохо
|
|
|
|
|
Jan 31 2008, 20:23
|
Знающий
   
Группа: Свой
Сообщений: 509
Регистрация: 19-07-07
Из: г. Таганрог
Пользователь №: 29 246

|
Цитата(cebotor @ Jan 31 2008, 17:27)  OpenOCD запускается как GDB сервер - то есть висит на локалхосте - для его использования надо выбрать в опциях проэкта в свойствах дебаггера GDB server а в свойствах самого GDB сервера указать адрес 127.0.0.1,2331 где 2331 - порт на котором запускается OpenOCD. все это касается ИАРа 5.11 который поддерживает GDB Понял, нашел, спасибо! Тоже заказал себе STM32F103VB. Придет, попробую FTDI J-TAG и J-Link, заодно и сравню.
--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
|
|
|
|
|
Jan 31 2008, 23:23
|
Знающий
   
Группа: Свой
Сообщений: 509
Регистрация: 19-07-07
Из: г. Таганрог
Пользователь №: 29 246

|
Цитата(KRS @ Jan 31 2008, 17:09)  К сожалению я не знаю готового решения RDI <-> GDBserver Но у IAR 5.xx уже есть в конфигурации GDB server, так что 5ый IAR можно подключить прямо к openocd Недавно наткнулся на ссылку с конфигурацией OpenOCD под вашу плату http://www.siwawi.arubi.uni-kl.de/avr_proj...rtex/index.htmlТам еще есть описание, как этот gdb под линуксом использовать. Может выложите свою версию OpenOCD сюда?
Сообщение отредактировал Vitaliy_ARM - Jan 31 2008, 23:36
--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
|
|
|
|
|
Feb 1 2008, 07:36
|

Профессионал
    
Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555

|
Цитата(Vitaliy_ARM @ Feb 1 2008, 02:23)  Недавно наткнулся на ссылку с конфигурацией OpenOCD под вашу плату Да как раз с ней проблем нет никаких, IAR 4.xx и 5.xx с ней отлично работает через LMFTDI, а моя плата с STM32F103 почему то не работает (наверное каких то сигналов не хватает диагностики нет никакой....) Цитата(Vitaliy_ARM @ Feb 1 2008, 02:23)  Может выложите свою версию OpenOCD сюда?  Эта сборка OpenOCD с конфигурацией ./configure --enable-ft2232_ftd2xx --with-ftd2xx=/cygdrive/e/..... И удалено установка младшего бита PC ( что бы IAR не глючил), зато наверное оригинальный GDB может глючить. У меня с IAR вроде все работает.
|
|
|
|
|
Feb 15 2008, 15:02
|
Участник

Группа: Участник
Сообщений: 72
Регистрация: 23-11-06
Из: Odessa
Пользователь №: 22 646

|
А что, правда, что J-Link еще не поддерживает STM32?
А что, правда, что J-Link еще не поддерживает STM32?
|
|
|
|
|
Feb 15 2008, 16:15
|

Профессионал
    
Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555

|
Цитата(gregory812 @ Feb 15 2008, 18:02)  А что, правда, что J-Link еще не поддерживает STM32? IMHO не правда. В IAR даже настройка есть на SWD, а SWD есть только у Cortex К тому же у Segger написано Any ARM7/ARM9 core (including thumb mode) and Cortex M3 including SWD Кстати как раз сегодня плотно начал работать с STM32F013C6T6. (ну тут как всегда танец с бубном с отладчиком и gdb server). Но обнаружил интересную вещь! простейшая программа Код void main(void) { RCC_APB2ENR_bit.IOPBEN = 1; GPIOB_CRL_bit.CNF2 = 0; GPIOB_CRL_bit.MODE2 = 1; while(1) { GPIOB_BSRR = 1<<2; GPIOB_BRR = 1<<2; } } Из флеша дергает ногами быстрее чем из SRAM. Но самое интересное из флеша картинка получается короткий импульс вверх короткий вниз короткий вверх длинный вниз и так по кругу. Где то так Код из флеша 001010010100 из SRAM 00011000110001100011000 причем имеено в такой пропорции. Если в цикле поставить Код while(1) { GPIOB_BSRR = 1<<2; GPIOB_BRR = 1<<2; GPIOB_BSRR = 1<<2; GPIOB_BRR = 1<<2; } То из флеша картина не меняется Код из флеша 001010010100 из SRAM 000110011000110011000
|
|
|
|
|
Feb 16 2008, 13:39
|
Участник

Группа: Участник
Сообщений: 40
Регистрация: 10-01-07
Из: Вильнюс
Пользователь №: 24 290

|
Цитата(OVladimir @ Jan 12 2008, 19:15)  с STM при дебаге если после точки останова необходимо сделать шаг (step over, например), попадаешь в процедуры обработки какого-нибудь прерывания, поэтому приходится расставлять доп. брейкпоинты чтобы просто пройти по процедуре основного цикла. и ещё, на сей раз в корзину плюсов по поводу дебага: значения глобальных переменных видно всё время, не надо останавливать выполнение программы.
|
|
|
|
|
Feb 18 2008, 14:06
|

Профессионал
    
Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555

|
Немного потестировал STM32F103 Простейшая программка в цикле доступ к GPIO, просто операции в регистрах и переходы, и SRAM Код unsigned gpio_test(void) { unsigned r,i; r = SYSTICKCVR; i = 1024; do { GPIOB_BSRR = 1<<2; GPIOB_BRR = 1<<2; }while(--i); return r - SYSTICKCVR; }
unsigned alu_test(void) { unsigned r,i,tmp; r = SYSTICKCVR; i = 1024; do { if (tmp) tmp++; }while(--i); return r - SYSTICKCVR; }
unsigned ram_test(void) { unsigned r,i; volatile unsigned tmp; r = SYSTICKCVR; i = 1024; do { tmp = 1; tmp = 2; }while(--i); return r - SYSTICKCVR; } компилировал IAR 5.11 с максимальной оптимизацией, сами цыклы получились Код ??gpio_test_1: STR R4,[R3, #+0] STR R4,[R3, #+4] SUBS R2,R2,#+1 BNE.N ??gpio_test_1
??alu_test_0: CBZ R0,??alu_test_1 ADDS R0,R0,#+1 ??alu_test_1: SUBS R3,R3,#+1 BNE.N ??alu_test_0
??ram_test_0: STR R4,[SP, #+0] STR R3,[SP, #+0] SUBS R2,R2,#+1 BNE.N ??ram_test_0 Результаты для SRAM и флеша с разными wait stait Получатеся что из Флеша доступ к переферии существенно быстрее. Код SRAM FLASH 0 FLASH 1 FLASH 2 GPIO 12335 6191 8238 12333 ALU 6144 5121 6145 9213 RAM 8189 5121 8189 12283
|
|
|
|
|
Feb 26 2008, 13:41
|

Частый гость
 
Группа: Свой
Сообщений: 135
Регистрация: 6-04-07
Из: Бронницы
Пользователь №: 26 809

|
Цитата(KRS @ Feb 1 2008, 10:36)  Да как раз с ней проблем нет никаких, IAR 4.xx и 5.xx с ней отлично работает через LMFTDI, а моя плата с STM32F103 почему то не работает (наверное каких то сигналов не хватает диагностики нет никакой....) Эта сборка OpenOCD с конфигурацией ./configure --enable-ft2232_ftd2xx --with-ftd2xx=/cygdrive/e/..... И удалено установка младшего бита PC ( что бы IAR не глючил), зато наверное оригинальный GDB может глючить. У меня с IAR вроде все работает. Еще раз спасибо , заставил работать OPENOCD с помощью вашего патча с STM32. Однако у меня не STELLARIS-овская плата а OLIMEX-овский USB_OCD jtag адаптер, и я так понимаю именно по этому OPENOCD не врубает swd режим. следовательно мне надо перепрошить епромку содержимым таким же как у вас , чтобы получить всю мощь SWD не выложите ?
--------------------
если еррата пуста - это не хорошо а плохо
|
|
|
|
|
Mar 13 2008, 13:09
|

Частый гость
 
Группа: Свой
Сообщений: 135
Регистрация: 6-04-07
Из: Бронницы
Пользователь №: 26 809

|
Цитата(KRS @ Mar 11 2008, 18:38)  Все еще мучаю STM32F103. Пока чип работает хорошо. Кстати у него очень удобная реализация CAN - 2 fifo (что мне удобнее чем куча mailbox) и много довольно гибких фильтров. тоже мучаю его , все приятненько , только по прежнему накалываюсь н абаги в либах ... например при работе со слипом процедура RCC_WaitForHSEStartUp - таймаут тупым счетчиком который обнуляется один раз при старте микроконтроллера - наш выход : ErrorStatus RCC_WaitForHSEStartUp(void) { /* Wait till HSE is ready and if Time out is reached exit */ StartUpCounter=0; ну хотя бы так , не переписывать же все. PS так и не разобрался с SWD !!!!! вобще никак ни через ft2232 ни через три варианта j linka что делать ума не приложу .. на jlink mt link и jet-link IAR ругается типа - указанный адаптер не поддерживает режим СВД !
--------------------
если еррата пуста - это не хорошо а плохо
|
|
|
|
|
Apr 3 2008, 10:32
|

Частый гость
 
Группа: Свой
Сообщений: 135
Регистрация: 6-04-07
Из: Бронницы
Пользователь №: 26 809

|
Цитата(KRS @ Apr 2 2008, 23:35)  По поводу отладки Отладка через FT2232 работает, но есть некоторая кривость IMHO связана с серьезными отличаями архитектуры ( новые регистры) IAR при отладке через GDB server показывает только R0 - R12 и PC LR SP все время 0, остальные регистры вообще ----. Сечас в основонм отлаживаюсь в RAM ( init script ресетит проц, устанавливает VTOR и PC) все работает даже прерывания и в RAM и во фелеше. Только после загрузки программы в RAM надо сделать single step (можно в асме прямо) а потом run иначе встанет где нибудь сама, в произвольном месте, что за фича не понятно ( но не критично single step вылечивает).
Тут сделал свой отладчик для SWD на FT245R/FT232R используя synchro bit bang. c протоколом SWD полностью разобрался. И даже прикрутил эту штуку к OpenOCD и вот сегодня даже удалось пошагать под IAR. Но пока все кривовато (особенно внедрение в openocd я переписал cortex_swjdp так что фиксировано работает с моим устройством через swd_dp). а почему вы взяли делать отладчик свд из 245й в битбэнг моде а не из той же 2232 ? если не секрет конечно ? ведь та более предназначена для этого насколько я понимаю. второй вопрос а не будет ли вам сложн оподелиться ссылками на документы , которые помогли вам в реализации своего swd ?
--------------------
если еррата пуста - это не хорошо а плохо
|
|
|
|
|
Apr 3 2008, 12:18
|

Профессионал
    
Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555

|
Цитата(cebotor @ Apr 3 2008, 14:32)  а почему вы взяли делать отладчик свд из 245й в битбэнг моде а не из той же 2232 ? если не секрет конечно ? ведь та более предназначена для этого насколько я понимаю. второй вопрос а не будет ли вам сложн оподелиться ссылками на документы , которые помогли вам в реализации своего swd ? 232R/245R не требует внешних компонентов (генератор и eeprom на борту), еще дешевле и меньше по размеру. Лучше использовать 232R т.к. может работать еще и в режиме UART ( можно например LPC программировать). К тому же по скорости не намного медленнее 2232 получается потому что основные задержки происходят в USB (полудуплекс). К тому же у меня есть плата на которй используется 245R ( поэтому пока с ней и работаю, старые 232 не катят там нет синхро бит банг). а основные документы IHI0031A_ARM_debug_interface_v5.pdf DDI0337E_cortex_m3_r1p1_trm.pdf DDI0405B_arm_v7m_architecture_app_level_reference_manual.pdf они доступны на сайте arm ( для некоторых надо зарегистрироваться и сразу можно скачать) кстати OpenOcd прекрасно работает с флешом stm32, сейчас проверил. Там только артефакт в исходнике надо убрать ( наверное от str остался) а то пишет что флеш с 0x08000000 начинается. Код Index: stm32x.c =================================================================== --- stm32x.c (revision 526) +++ stm32x.c (working copy) @@ -676,7 +676,7 @@ LOG_INFO( "flash size = %dkbytes", num_sectors ); - bank->base = 0x08000000; + bank->base = 0x00000000; bank->size = num_sectors * 1024; bank->num_sectors = num_sectors; bank->sectors = malloc(sizeof(flash_sector_t) * num_sectors);
|
|
|
|
|
Apr 4 2008, 06:21
|
Участник

Группа: Участник
Сообщений: 19
Регистрация: 27-02-05
Пользователь №: 2 915

|
Попробовал в своей программе переводить stm32 в режим сна командами WFI и WFE. Работает вроде как ожидалось, но есть неприятный сюрприз: перестает работать jtag. Использую J-Link вместе с IAR. Так вот IAR пишет Цитата Fri Apr 04 10:12:27 2008: Fatal error: Wrong ROM table component Id. Expected 0xB105100D, Found 0x00000000 Проверил это на двух кристалах. Причем во второй раз в программе сделал возможность выключать засыпание. Теперь при включенном засыпании jtag не работает, выключаю засыпание - работает снова. Не помню ничего на этот счет в документации, или я что-то пропустил? Покопался немного в гугле, нашел упоминание о таком поведении http://www.st.com/mcu/forums-cat-6541-23.html
|
|
|
|
|
Apr 4 2008, 08:31
|

Частый гость
 
Группа: Свой
Сообщений: 135
Регистрация: 6-04-07
Из: Бронницы
Пользователь №: 26 809

|
Цитата(mai @ Apr 4 2008, 10:21)  Попробовал в своей программе переводить stm32 в режим сна командами WFI и WFE. Работает вроде как ожидалось, но есть неприятный сюрприз: перестает работать jtag. Использую J-Link вместе с IAR. да это общая беда многих кристаллов. у меня есть экземпляры и stm32 и lpc2368 , в которых ради измерения потребления тока , было первыми командами сделан слип  и теперь jtag-ом до них не дотянуться.
--------------------
если еррата пуста - это не хорошо а плохо
|
|
|
|
|
Apr 4 2008, 09:27
|
Участник

Группа: Участник
Сообщений: 19
Регистрация: 27-02-05
Пользователь №: 2 915

|
cebotor[q]да это общая беда многих кристаллов. у меня есть экземпляры и stm32 и lpc2368 , в которых ради измерения потребления тока , было первыми командами сделан слип и теперь jtag-ом до них не дотянуться.[/q] Это мой первый опыт общения с армами, поэтому для меня это новость. Я его воткнул в idle hook FreeRTOS. Получается нужно просто сделать задержку разрешения засыпания после сброса? Цитата(mai @ Apr 4 2008, 13:05)  cebotorЦитата да это общая беда многих кристаллов. у меня есть экземпляры и stm32 и lpc2368 , в которых ради измерения потребления тока , было первыми командами сделан слип и теперь jtag-ом до них не дотянуться. Это мой первый опыт общения с армами, поэтому для меня это новость. Я его воткнул в idle hook FreeRTOS. Получается нужно просто сделать задержку разрешения засыпания после сброса? Цитата(mai @ Apr 4 2008, 13:06)  cebotor Это мой первый опыт общения с армами, поэтому для меня это новость. Я его воткнул в idle hook FreeRTOS. Получается нужно просто сделать задержку разрешения засыпания после сброса? Это мой первый опыт общения с армами, поэтому для меня это новость. Я его воткнул в idle hook FreeRTOS. Получается нужно просто сделать задержку разрешения засыпания после сброса? Нет макета под руками, проверить не могу. Сейчас ведь, что у меня получается: сразу после сброса опция, разрешающая засыпание, разрешена и jtag не работает. Устанавливаю в программе запрет засыпания и jtag начинает работать. Получается jtag не сбрасывает контроллер? Иначе после сброса опция, разрешающая засыпание, включилась бы и не дала работать jtag. А jtag все же работает.
|
|
|
|
|
Apr 4 2008, 09:46
|

Частый гость
 
Группа: Свой
Сообщений: 135
Регистрация: 6-04-07
Из: Бронницы
Пользователь №: 26 809

|
Цитата(mai @ Apr 4 2008, 13:27)  Сейчас ведь, что у меня получается: сразу после сброса опция, разрешающая засыпание, разрешена и jtag не работает. Устанавливаю в программе запрет засыпания и jtag начинает работать. Получается jtag не сбрасывает контроллер? Иначе после сброса опция, разрешающая засыпание, включилась бы и не дала работать jtag. А jtag все же работает. Логика крайне проста - жтаг не может дотянуться до контроллера пока тот спит(вообще), если у вас в проекте пауза между периодами сна больше времени требующегося жтагу чтобы остановить процессор, то проблем быть не должно (теоретически).. На практике же, например lpc очень медленно останавливается по жтагу - сначала стопается ядро , а потом вся переферия - так что глобально программа может таки встать раком. Да и еще если пауза достаточна , но периоды сна слишком велики - то у жтага будет выходить таймаут и у вас процессор будет подчиняться ему (жтагу) через раз
--------------------
если еррата пуста - это не хорошо а плохо
|
|
|
|
|
Apr 4 2008, 10:18
|

Частый гость
 
Группа: Участник
Сообщений: 76
Регистрация: 16-11-07
Пользователь №: 32 387

|
День добрый., У меня проблема с модулем I2C на STM32F103. Встечал в теме фразу, корявий мол I2C. Помогите розобратся. Проблема в следующем: на I2C подключена EEPROM 24LC256, всял из екземпелов пример по роботе с I2C EEPROM, единственое что подменил, сделал два байти установки адреса ячейки в EEPROM (в примере однобайтная адресация). проблема с том, что после одного чтения из EEPROM код зависает, не может создать старт (зацикливается на ужедании создания старта), потогает ресет кода. часть кода EEPROM_ADDRESS = 0xA2; u16 ee_adr=0; while(1) { u8 qwq; I2C_EE_BufferRead(&qwq, ee_adr++, 1); uartSendByte(GSM_UART,qwq); } тоесть в цыкле читаю EEPROM, фокус в том если например поставить брекпоент на I2C_EE_BufferRead(&qwq, ee_adr++, 1); или uartSendByte(GSM_UART,qwq); то все работает (читается байт за байтом) работаю через MT-Link+JTAG+IAR пробовал в чикл вставлять паузу(после завершения чтения EEPROM), не помогает Посоветуйте, куда копать Заранее благодарен.
|
|
|
|
|
Apr 4 2008, 10:26
|
Участник

Группа: Участник
Сообщений: 19
Регистрация: 27-02-05
Пользователь №: 2 915

|
[q]cebotor[/q] Спасибо за разъяснения. Картинка получается не совсем приятная, пытаться искусственно управлять периодами сна и бодрствования как-то уж совсем печально, на мой взгляд. Придется все же делать возможность выключить засыпание в работающей программе, чтобы иметь возможность дать работать jtag.
|
|
|
|
|
Apr 4 2008, 11:30
|

Частый гость
 
Группа: Участник
Сообщений: 76
Регистрация: 16-11-07
Пользователь №: 32 387

|
проверил процедуру записи байта в еепромку - работает нормально, похоже имено в чтении . Привожу исходник /******************************************************************************* * Function Name : I2C_EE_BufferRead * Description : Reads a block of data from the EEPROM. * Input : - pBuffer : pointer to the buffer that receives the data read * from the EEPROM. * - ReadAddr : EEPROM's internal address to read from. * - NumByteToRead : number of bytes to read from the EEPROM. * Output : None * Return : None *******************************************************************************/ void I2C_EE_BufferRead(u8* pBuffer, u16 ReadAddr, u16 NumByteToRead) { /* Send START condition */ I2C_GenerateSTART(I2C1, ENABLE); /* Test on EV5 and clear it */вот тут циклится!!! while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT)); /* In the case of a single data transfer disable ACK before reading the data */ if(NumByteToRead==1) { I2C_AcknowledgeConfig(I2C1, DISABLE); } /* Send EEPROM address for write */ I2C_Send7bitAddress(I2C1, EEPROM_ADDRESS, I2C_Direction_Transmitter);
/* Test on EV6 and clear it */ while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED)); /* Clear EV6 by setting again the PE bit */ I2C_Cmd(I2C1, ENABLE);
/* Send the EEPROM's internal address (high byte)to write to */ I2C_SendData(I2C1, ReadAddr>>8);
/* Test on EV8 and clear it */ while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_TRANSMITTED)); /* Send the EEPROM's internal address (low byte) to write to */ I2C_SendData(I2C1, ReadAddr);
/* Test on EV8 and clear it */ while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_TRANSMITTED));
/* Send STRAT condition a second time */ I2C_GenerateSTART(I2C1, ENABLE); /* Test on EV5 and clear it */ while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT)); /* Send EEPROM address for read */ I2C_Send7bitAddress(I2C1, EEPROM_ADDRESS, I2C_Direction_Receiver); /* Test on EV6 and clear it */ while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_RECEIVER_MODE_SELECTED)); /* While there is data to be read */ while(NumByteToRead) { /* Test on EV7 and clear it */ if(I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_RECEIVED)) {
if(NumByteToRead == 2) { /* Disable Acknowledgement */ I2C_AcknowledgeConfig(I2C1, DISABLE);
}
if(NumByteToRead == 1) { /* Send STOP Condition */ I2C_GenerateSTOP(I2C1, ENABLE); }
/* Read a byte from the EEPROM */ *pBuffer = I2C_ReceiveData(I2C1);
/* Point to the next location where the byte read will be saved */ pBuffer++; /* Decrement the read bytes counter */ NumByteToRead--; } } /* Enable Acknowledgement to be ready for another reception */ I2C_AcknowledgeConfig(I2C1, ENABLE); }
|
|
|
|
|
Apr 4 2008, 12:16
|
Участник

Группа: Участник
Сообщений: 19
Регистрация: 27-02-05
Пользователь №: 2 915

|
KRSЦитата С stm32 по поводу этого можно не беспокоится! Потому что законектится к процу через SWD можно пока он в ресете ( сам лично пробовал ). И можно легко не дать процу выполнить не одной команды ( достаточно поставить остновку на ресет и потом только отпустить ногу ресет) как все это делается описано в соотв. даташитах! Спасибо, буду знать. Только у меня сейчас старенький J-Link, а он, насколько я знаю, SWD не поддерживает.
|
|
|
|
|
Apr 4 2008, 13:53
|

Частый гость
 
Группа: Свой
Сообщений: 135
Регистрация: 6-04-07
Из: Бронницы
Пользователь №: 26 809

|
Цитата(pan_oleg @ Apr 4 2008, 15:30)  проверил процедуру записи байта в еепромку - работает нормально, похоже имено в чтении . Кривость реализации i2c в stm, заключается в том, что они там наворотили "не совсем стэйт машину".. То есть евенты евентами , но отрабатывать их надо побитно а не так как они рекомендуют. приблизительно 80 процентов вероятности вашего клина в том , что у вас приходит событие с лишним выставленным битом (или без бита)изза несовпадения (например последовательности обмена или входа в прерывания) неотрабатывается - выход отлаживать пошагово , смотреть по диаграммам как в референсе написано .. И простите поллингом я ничего не делал только по прерыванию. Я для начала делал так добавил к строке #define I2C_EVENT_MASTER_BYTE_TRANSMITTED ((u32)0x00070084) #define I2C_EVENT_MASTER_BYTE_TRANSMITTED_2 ((u32)0x00000084) #define I2C_EVENT_MASTER_BYTE_REQUESTED ((u32)0x00070080) все три события - обрабатываютьяс эквивалентно ... И это касается нескольких событий... Однако потом мне стало стыдно и я переписал все на побитную обработку и "фирменные" события не использую совсем ... Просить меня дать получившееся не имеет смысла ибо "агрегаты" , которыми я управляю сами имеют шандарахнутый I2C .
--------------------
если еррата пуста - это не хорошо а плохо
|
|
|
|
|
Apr 4 2008, 14:11
|

Частый гость
 
Группа: Участник
Сообщений: 76
Регистрация: 16-11-07
Пользователь №: 32 387

|
Спасибо что откликнулись. Пошаговая отладка показала что переменая (см. ниже) LastEvent получает значение 0х00030041, вместо 0х00030001. похоже гдето ещо появляется событие RxNE: Data Register not Empty (receivers). но откуда, и почему при шаговом выполнении все работает? не пойму. Переделал подтяжку согласно доки (добавил по резистору между шиной и контроллером), ничего не поменялось. подскажите, как побороть эту беду /******************************************************************************* * Function Name : I2C_CheckEvent * Description : Checks whether the last I2Cx Event is equal to the one passed * as parameter. * Input : - I2Cx: where x can be 1 or 2 to select the I2C peripheral. * - I2C_EVENT: specifies the event to be checked. * This parameter can be one of the following values: * - I2C_EVENT_SLAVE_ADDRESS_MATCHED : EV1 * - I2C_EVENT_SLAVE_BYTE_RECEIVED : EV2 * - I2C_EVENT_SLAVE_BYTE_TRANSMITTED : EV3 * - I2C_EVENT_SLAVE_ACK_FAILURE : EV3-1 * - I2C_EVENT_MASTER_MODE_SELECT : EV5 * - I2C_EVENT_MASTER_MODE_SELECTED : EV6 * - I2C_EVENT_MASTER_BYTE_RECEIVED : EV7 * - I2C_EVENT_MASTER_BYTE_TRANSMITTED : EV8 * - I2C_EVENT_MASTER_MODE_ADDRESS10 : EV9 * - I2C_EVENT_SLAVE_STOP_DETECTED : EV4 * Output : None * Return : An ErrorStatus enumuration value: * - SUCCESS: Last event is equal to the I2C_Event * - ERROR: Last event is different from the I2C_Event *******************************************************************************/ ErrorStatus I2C_CheckEvent(I2C_TypeDef* I2Cx, u32 I2C_EVENT) { u32 LastEvent = 0; u32 Flag1 = 0, Flag2 = 0; ErrorStatus status = ERROR; /* Check the parameters */ assert_param(IS_I2C_EVENT(I2C_EVENT)); Flag1 = I2Cx->SR1;!!!!!!!!!!!иногда стает 0х00000041, хотя SR1=0х00000001!!!!!!!!!!!!!!!!!! Flag2 = I2Cx->SR2; Flag2 = Flag2 << 16; /* Get the last event value from I2C status register */ LastEvent = (Flag1 | Flag2) & I2C_FLAG_Mask; /* Check whether the last event is equal to I2C_EVENT */ if (LastEvent == I2C_EVENT ) { /* SUCCESS: last event is equal to I2C_EVENT */ status = SUCCESS; } else { /* ERROR: last event is different from I2C_EVENT */ status = ERROR; } /* Return status */ return status; }
|
|
|
|
|
Apr 4 2008, 14:34
|

Частый гость
 
Группа: Свой
Сообщений: 135
Регистрация: 6-04-07
Из: Бронницы
Пользователь №: 26 809

|
Цитата(pan_oleg @ Apr 4 2008, 18:11)  Спасибо что откликнулись. да не за что именно про это я Вам и говорил - у меня было то же самое при пошаговом бит снимался , а при последовательном - просто не успевает сняться . и2ц штука циклическая - так что если вы перед этин новым стартом "принимали " а потом решили завершить прием и принять заново , то в пмомент завершения вам придет событие (тот самый бит номер 6 ) что регистр не пуст , это вызвано тем что регистр приема передачи лежит над сдвиговым регистром и является как бы однобайтовым фифо буффером , дающим вам отставание (или опережение, это как посмотреть ) на один байт... выход проигнорируйте этот бит . если Вам лень делать по человечески (или пока лень) напишите так #define I2C_EVENT_MASTER_MODE_SELECT ((u32)0x00030001) /* BUSY, MSL and SB flag */ #define I2C_EVENT_MASTER_MODE_SELECT_2 ((u32)0x00030041) /* BUSY, MSL , RxNE and SB flag */ и обработайте оба события
--------------------
если еррата пуста - это не хорошо а плохо
|
|
|
|
|
Apr 4 2008, 15:01
|

Частый гость
 
Группа: Участник
Сообщений: 76
Регистрация: 16-11-07
Пользователь №: 32 387

|
я сделал несколько по другому, работает нормально, только что все 32 кБ  побайитно записал и считал я подпровил: Flag1 = I2Cx->SR1; Flag2 = I2Cx->SR2; Flag2 = Flag2 << 16; /* Get the last event value from I2C status register */ LastEvent = (Flag1 | Flag2) & I2C_EVENT; /* Check whether the last event is equal to I2C_EVENT */ if (LastEvent == I2C_EVENT ) в принципе ето и есть битовая маска, как вы считаете? или я неправельно сделал? вам огромный
|
|
|
|
|
Apr 7 2008, 19:14
|

Частый гость
 
Группа: Свой
Сообщений: 135
Регистрация: 6-04-07
Из: Бронницы
Пользователь №: 26 809

|
Цитата(pan_oleg @ Apr 4 2008, 19:01)  я сделал несколько по другому, работает нормально, только что все 32 кБ  побайитно записал и считал я подпровил: Flag1 = I2Cx->SR1; Flag2 = I2Cx->SR2; Flag2 = Flag2 << 16; /* Get the last event value from I2C status register */ LastEvent = (Flag1 | Flag2) & I2C_EVENT; /* Check whether the last event is equal to I2C_EVENT */ if (LastEvent == I2C_EVENT ) в принципе ето и есть битовая маска, как вы считаете? или я неправельно сделал? то есть вы проверяете , присутствует ли искомое событие в пришедшем статусе? Это полукорректный метод , более корректный чем плодить псевдоодинаковые статусы , но менее корректный чем обработать все биты "выбирая" их по одному или по группам , то есть бит RxNe то же надо отработать в зависимости от того "в каком положении" мы сейчас находимся. то есть в данном случае , если пришел байт , а мы ждали конца, то в принципе все корректно , а вот если произошла или ошибка , или непреднамеренный конец в дополнении к ожидаемому нами событию , то его нельзя игнорировать, иначе встанем в неприличную позу.
--------------------
если еррата пуста - это не хорошо а плохо
|
|
|
|
|
Apr 11 2008, 07:57
|
Участник

Группа: Новичок
Сообщений: 57
Регистрация: 14-03-08
Пользователь №: 35 904

|
Цитата(KRS @ Feb 26 2008, 18:15)  OpenOCD вообще не умеет работать через SWD  , покрайней мере пока. Я тоже использую режим JTAG. А прошивку прилагаю, может понадобится что бы IAR определил устройство как LM FTDI Подскажите где взять схему под эту прошивку ? Спасибо !
|
|
|
|
|
Apr 11 2008, 18:30
|
Участник

Группа: Новичок
Сообщений: 57
Регистрация: 14-03-08
Пользователь №: 35 904

|
А прошивку то во что заливать ? на в CPLD разве ?
в 93с46 чтоль ?
|
|
|
|
|
Apr 17 2008, 18:07
|

Профессионал
    
Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555

|
Цитата(AlexandrY @ Jan 13 2008, 12:37)  Лучше скажите как умудрится сделать чтобы отладчик все время спотыкался на прерываниях. Такого никогда не было и в последнем компилере нет. Для этого в DHCSR есть бит MASKINTS, если его установить в еденицу то прерывания будут замаскированы (причем и при single step и при run в режиме отладки) что не всегда очень хорошо. IAR когда шагает по исходнику С ( не в дизассемблере) если возможно ставить точки останова ставит их и делает run (так что прерывания должны обходится). OpenOcd всегда чистит бит MASKINTS ( и это можно исправить при singlestep, а при resume оставить очистку). Вообще идеально было бы выбирать режим с прерываниями или без... Цитата(OVladimir @ Jan 13 2008, 12:43)  а точек останова да, больше: 8 вместо 2 в ARM7 На самом деле не 8, а 6 - компараторов 8, но только 6 могут быть использованы для точек останова. Я уже почти доделал совю реализацию GDB server на FT232/245R (уже совсем без использования openocd, его идеология не очень хорошо ложится на SWD), вообще даже при небольщой частоте SWD (в пределе 500 khz из-за особенностей FTDI) отладчик просто леатет ( скорость достигается за счет очереди и послыки сразу большого количества тарнзакций....) по сравнеию с обычным JTAG через FT2232C, да и пожалуй с Wiggler и некоторыми другими ( single step просто мгновенно отрабатывает) Но еще много работы, брекпоинты еще не реализованы.... Одно неприятно, ни в RDI ни в GDBServer не понятно как передавать системные регистры (которых нет в предыдущих версиях архитектур ARM)
|
|
|
|
|
Apr 24 2008, 12:12
|
Участник

Группа: Участник
Сообщений: 42
Регистрация: 8-02-07
Пользователь №: 25 165

|
Добрый день. Ответьте пожалуйста, данный чип работает с Wigler'ом. Или нужен обязательно J-LINK?
|
|
|
|
|
Apr 24 2008, 13:55
|
Участник

Группа: Участник
Сообщений: 42
Регистрация: 8-02-07
Пользователь №: 25 165

|
Ага, понятно. Но ведь есть CrossWorks, который умеет работать с виглером. Или я не прав?
|
|
|
|
|
Apr 24 2008, 19:52
|
Участник

Группа: Участник
Сообщений: 72
Регистрация: 23-11-06
Из: Odessa
Пользователь №: 22 646

|
А есть ли возможность во время работы контроллера сохранять во флеш память без торможения основной программы (наподобие памяти EEPROM у AVR)?
|
|
|
|
|
Apr 25 2008, 06:43
|
Знающий
   
Группа: Свой
Сообщений: 793
Регистрация: 5-11-04
Из: Краматорск, Украина
Пользователь №: 1 057

|
А подскажите, мэтры Кортекса, применимость его в таком случае: имею микросхему с параллельным 5В интерфейсом (уровень "1" 3.5В), 8бит адрес/данные, 3 адрес, ALE-RD-WR-INT. Крутил и так и этак (корпус 48), не получается красиво. На двух портах только старшие байты 5В-толерантные, дальше побитно дергать надо. Без софтовых обработок адреса не получится. А жаль: хотелось попробовать новую платформу, но некрасиво не хочется делать.
ЗЫ: И как у них с доступностью на Украине?
|
|
|
|
|
Apr 30 2008, 07:12
|
Частый гость
 
Группа: Свой
Сообщений: 107
Регистрация: 27-06-05
Из: Россия
Пользователь №: 6 324

|
Что-то у меня никак не получается связать Кейл и отладочную плату STM3210B-EVAL. Имеется в наличии STM3210B-EVAL и USB J-Link иаровский. Стоит RealView MDK-ARM v3.20, Segger J-Link ARM V3.80. По отдельности все работает - кейл проект компиллирует, с помощью J-Flash hex-файл во флеш прошивается, программа работает (демо-пример). А вот все вместе - никак. В Кейле в Flash->Configure Flash Tools на вкладках Debug и Utilites установлено RDI Interface Driver, длл-ки указаны не кейловские, а сеггеровские ( в обоих случаях JLinkRDI.dll). Если делаем Start/Stop Debug Session задумывается на пару минут, потом выбрасывает в окно Disassemly  А грузить и стирать флеш из Кейла вообще не хочет. Что я забыл настроить?
|
|
|
|
|
Apr 30 2008, 22:43
|
Частый гость
 
Группа: Свой
Сообщений: 157
Регистрация: 7-10-07
Из: Санкт-Петербург
Пользователь №: 31 137

|
У меня проблема с компиляцией проектов для STM32F103 - использую Keil MDK v. 3.20 при компиляции примеров от Keil получаю ошибку:
STM32F10x.s: error: A3903U: Argument 'DARMSTM' not permitted for option 'device'.
Подскажите, пожалуйста, что не так сделал.....
--------------------
Если работает через раз - значит не работает!
|
|
|
|
|
May 4 2008, 18:20
|
Частый гость
 
Группа: Свой
Сообщений: 157
Регистрация: 7-10-07
Из: Санкт-Петербург
Пользователь №: 31 137

|
Цитата(Maximm @ May 1 2008, 02:43)  У меня проблема с компиляцией проектов для STM32F103 - использую Keil MDK v. 3.20 при компиляции примеров от Keil получаю ошибку:
STM32F10x.s: error: A3903U: Argument 'DARMSTM' not permitted for option 'device'.
Подскажите, пожалуйста, что не так сделал..... Может кому-нибудь пригодится: ошибка была в лиценции к Keil - стояла "RealView MDK Enterprise" - с ней проект не компилировался, сменил на "RealView MDK Professional" и всю заработало.... Даже не понятно почему такая разница в лицензиях...
--------------------
Если работает через раз - значит не работает!
|
|
|
|
|
May 9 2008, 08:00
|
Участник

Группа: Участник
Сообщений: 72
Регистрация: 23-11-06
Из: Odessa
Пользователь №: 22 646

|
Запустил АЦП на отладочной плате STM3210B-EVAL. Показания плавают в пределах +-5LSB. Выходит, что по точности не больше 10-ти разрядов. Кто испытывал АЦП поделитесь впечателниями.
Сообщение отредактировал gregory812 - May 9 2008, 08:02
|
|
|
|
|
Jan 3 2009, 21:39
|

Любитель
    
Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695

|
Имеется STM32F103RBT6 (на плате от Olimex STM32 P103) и МТ-Линк (версия железа 5.0, серийник 11111117). Почему-то дебаггер заливает прошивку в контроллер через раз. То есть соединение всегда проходит на ОК, но вот дальше дебаггер обязательно споткнётся на стирании, или на записи страницы. Выдаётся сообщение о таймауте стирания или записи... Причём если сразу-же повторить попытку - то запись и проверка записи завершаются успешно. Юзал заливку из под JFlashARM из пакета дров сеггера (версия 4.0), так и из под кейла MDK3.40. Скорость соединения выставлял от 5 до 200 килогерц - без разницы. В этом топике тоже пишут про "пляски с бубном" с дебаггером - это что, у всех так? Причём вот что интересно - до этого юзал этот-же дебаггер с самопальной платой с LM3S601 - ни одной проблемы с дебаггером! Запись, стирание, проверка - быстро и чётко, без запинок. Может, с железом на олимексовской плате что не так? В смысле, лишний пулл-ап/пулл-даун влепили на жи-таг? Я просто теряюсь в догадках...
|
|
|
|
|
Jan 5 2009, 23:25
|

Частый гость
 
Группа: Свой
Сообщений: 135
Регистрация: 6-04-07
Из: Бронницы
Пользователь №: 26 809

|
Цитата(sonycman @ Jan 4 2009, 00:39)  Почему-то дебаггер заливает прошивку в контроллер через раз. Год почти полет нормальный. в том числе и на пятой версии j-линка и Мтлинка (дебаггер - ИАР) а Вы что под дебаггером подразумеваете ? Пляски были, не отрецаем,- но плясали вокруг GDB сервера и(или) SWD, кажется , а если работать напрямую и не по СВД ,то там все как часы.
--------------------
если еррата пуста - это не хорошо а плохо
|
|
|
|
|
Jan 6 2009, 09:54
|

Любитель
    
Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695

|
Цитата(cebotor @ Jan 6 2009, 03:25)  Год почти полет нормальный. в том числе и на пятой версии j-линка и Мтлинка (дебаггер - ИАР) а Вы что под дебаггером подразумеваете ? Пляски были, не отрецаем,- но плясали вокруг GDB сервера и(или) SWD, кажется , а если работать напрямую и не по СВД ,то там все как часы. Дебаггер - МТ-Линк Кейл с ним работает через RDI. Хотя, если пробовать через родную JFlashARM.exe - то запись во флеш тоже через раз. Не знаю, JFlash работает через RDI или напрямую? Посмотрел по логам - сложилось впечатление, что дело такое: 1. Сначала в оперативу контроллера заливается код "прошивальщика". 2. Потом с ним ведётся многократный обмен данными путём перезаписи регистров и рестарта кода. Вероятно, здесь идёт стирание нужных страниц флеш. После окончания обработки данных код стопорит ядро и таким образом даёт знать ожидающему дебаггеру о возможности продолжения "диалога" 3. Только теперь ему начинает передаваться код программы для флеш в виде кусков определённой длинны. 4. Считывание флеш и верификация записи. Зависание происходит на втором этапе. То есть до передачи данных для записи дело не доходит. Перестаёт отвечать "прошивальщик". Спрашивается - какого хрена? Было-бы интересно посмотреть, что происходит "внутри" кода загрузчика? На чём он стопорится? Но как это сделать? Есть где-нибудь его исходники? По схемотехнике JTAG вроде у Олимекс STM32-P103 всё в порядке - все подтягивающие резисторы на месте.  Думаю, проблема не в МТ-Линк, так как со Stellaris всё работает "как часы"  Проблема может быть или в плате Олимекса (что маловероятно, но допустимо), или в коде прошивальщика - неправильная инициализация камня или что-то в этом духе. Или, что совсем маловероятно - глючный микроконтроллер.
|
|
|
|
6 чел. читают эту тему (гостей: 6, скрытых пользователей: 0)
Пользователей: 0
|
|
|