реклама на сайте
подробности

 
 
20 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> STM32F103x, делимся впечатлениями
OVladimir
сообщение Jan 12 2008, 08:01
Сообщение #1


Участник
*

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



Вёл проект на LPC3264, потом предложили STM32 (Cortex-M3), ресурсов в последнем ровно столько сколько нужно и, всвязи с тем, что это довольно новый продукт, решил поделиться впечатлениями. Схемы и программы у обоих проектов идентичные.

Сравнительные плюсы:
Ток потребления меньше чем у лпц (35-40 мА, соответственно и источник питания проще и дешевле)
Не так чувствителен к скачкам напряжения питания (2-3.6 В, тут ещё будем тестировать, но лпц сбрасывался в определённых условиях)
Багов не замечено (в лпц2364 критичная проблема с МАМ)

Сравнительные минусы:
Дебагить не слишком удобно (если интересно смогу пояснить подробнее)
Флэш меньше

Буду признателен если кто-нибудь пополнит список или расскажет с чем ещё нехорошим могу тут столкнуться.

Сообщение отредактировал OVladimir - Jan 12 2008, 08:13
Go to the top of the page
 
+Quote Post
YAM
сообщение Jan 12 2008, 08:25
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 256
Регистрация: 7-07-04
Из: Ukraine
Пользователь №: 291



Наверное таки LPC2364. 128k флэша, так и у F103 есть вариант с таким-же размером, вот SRAM да, только до 20k... и ethernet нету...
Я тоже на нее переползаю, только на F101. Особенно радует F/2 при работе c SPI. Делиться пока нечем wink.gif


--------------------
Go to the top of the page
 
+Quote Post
servol
сообщение Jan 12 2008, 16:34
Сообщение #3


Участник
*

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



В корпусах <=64 - нет возможности REF с наружи завести , а внутренних 1.5в не хватает.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jan 12 2008, 16:41
Сообщение #4


Гуру
******

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



Цитата(OVladimir @ Jan 12 2008, 10:01) *
(в лпц2364 критичная проблема с МАМ)

1. Уже в прошлом
2. У STM - вообще мамообразных вещей нет.
Цитата
тут ещё будем тестировать

Да уж лучше без голословия smile.gif
Цитата
Дебагить не слишком удобно (если интересно смогу пояснить подробнее)

Естественно интересно. Я не особый поклонник внутрисхемной отладки, но попробовал с RLink в Ride7 ничего особо неудобного не заметил.


Цитата(YAM @ Jan 12 2008, 10:25) *
Особенно радует F/2 при работе c SPI. Делиться пока нечем wink.gif

У LPC тоже типа есть, но с проблемами на прием sad.gif


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
OVladimir
сообщение Jan 12 2008, 17:15
Сообщение #5


Участник
*

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



Цитата(zltigo @ Jan 12 2008, 18:41) *
У STM - вообще мамообразных вещей нет.



Естественно интересно. Я не особый поклонник внутрисхемной отладки


STM хвалятся своими самыми быстрыми в мире флэш, но конечно же, они не такие быстрые как надо для того чтобы оправдать частоту ядра в 72 MHz, думаю, влепят рано или поздно. Суть не в том. Для определённых задач скорости более чем предостаточно.

"Да уж лучше без голословия smile.gif" куда уж тут, не дома сидим, и вещи для людей делаем, как им потом в глаза смотреть.

Про дебаг: Практически во всех случаях приходится это делать в реальной схеме, так сразу видно почти все огрехи (как программы, так и самой схемы). А с STM при дебаге если после точки останова необходимо сделать шаг (step over, например), попадаешь в процедуры обработки какого-нибудь прерывания, поэтому приходится расставлять доп. брейкпоинты чтобы просто пройти по процедуре основного цикла, тут я не знаю, может есть другой какой-нить способ, но в лпц такого не наблюдалось.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jan 12 2008, 18:00
Сообщение #6


Гуру
******

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



Цитата(OVladimir @ Jan 12 2008, 19:15) *
частоту ядра в 72 MHz, думаю, влепят рано или поздно.

Ну 13ns FLASH это будет уже скорее поздно smile.gif, а в NXP стиле 128bit 50ns FLASH - легко. Вскоре LPC1000 должны выкатить - будет еще и выбор....


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
KRS
сообщение Jan 12 2008, 18:28
Сообщение #7


Профессионал
*****

Группа: Модераторы
Сообщений: 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 и поэтому вы попадаете в прерывания - здесь опять же хороший отладчик, если не требуется отлаживать прерывания должен их обходить.
Go to the top of the page
 
+Quote Post
OVladimir
сообщение Jan 12 2008, 19:01
Сообщение #8


Участник
*

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



Цитата(KRS @ Jan 12 2008, 20:28) *
у Cortex-M3 уже есть аппаратный single step и поэтому вы попадаете в прерывания

хороший отладчик, если не требуется отлаживать прерывания должен их обходить.


Вот, спасибо, есть объяснение.

и, не в тему вопрос, у кейла хороший отладчик? и где у него это настраивается?
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Jan 12 2008, 19:36
Сообщение #9


Ally
******

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



Особенно он хорош в связке с STR912. Ваааще убийца становится. 08.gif
http://aly.ogmis.lt/OpenProjects/ARMDominator4/ARMD4.htm

А про отладку говорить мало смысла не сказав в какой среде отлаживаете.

Цитата(OVladimir @ Jan 12 2008, 12:31) *
Вёл проект на LPC3264, потом предложили STM32 (Cortex-M3), ресурсов в последнем ровно столько сколько нужно и, всвязи с тем, что это довольно новый продукт, решил поделиться впечатлениями. Схемы и программы у обоих проектов идентичные.

Сравнительные плюсы:
Ток потребления меньше чем у лпц (35-40 мА, соответственно и источник питания проще и дешевле)
Не так чувствителен к скачкам напряжения питания (2-3.6 В, тут ещё будем тестировать, но лпц сбрасывался в определённых условиях)
Багов не замечено (в лпц2364 критичная проблема с МАМ)

Сравнительные минусы:
Дебагить не слишком удобно (если интересно смогу пояснить подробнее)
Флэш меньше

Буду признателен если кто-нибудь пополнит список или расскажет с чем ещё нехорошим могу тут столкнуться.
Go to the top of the page
 
+Quote Post
OVladimir
сообщение Jan 12 2008, 19:41
Сообщение #10


Участник
*

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



Цитата(AlexandrY @ Jan 12 2008, 21:36) *
в какой среде отлаживаете.


RealView Microcontroller Development Kit
Version 3.11
это всё
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Jan 12 2008, 19:51
Сообщение #11


Ally
******

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



Ну извините, на дворе уже 3.15b
Cortex значительно лучше отлаживается в Keil-е чем ARM7TDMI.
Таже скорость пошагового прохода гораздо выше.

Цитата(OVladimir @ Jan 13 2008, 00:11) *
RealView Microcontroller Development Kit
Version 3.11
это всё
Go to the top of the page
 
+Quote Post
Vitaliy_ARM
сообщение Jan 12 2008, 21:36
Сообщение #12


Знающий
****

Группа: Свой
Сообщений: 509
Регистрация: 19-07-07
Из: г. Таганрог
Пользователь №: 29 246



По поводу NXP. Здесь на московской конференции NXP пообещали много вкусного в LPC1000 smile.gif
Прикрепленные файлы
Прикрепленный файл  Moscow_200711_16_ARM_dev_conf_final_version_for_event_RU_final.rar ( 1.24 мегабайт ) Кол-во скачиваний: 445
 


--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jan 12 2008, 21:51
Сообщение #13


Гуру
******

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



Цитата(Vitaliy_ARM @ Jan 12 2008, 23:36) *
пообещали много вкусного в LPC1000 smile.gif

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


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Vitaliy_ARM
сообщение Jan 12 2008, 22:40
Сообщение #14


Знающий
****

Группа: Свой
Сообщений: 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 05.gif

Сообщение отредактировал Vitaliy_ARM - Jan 12 2008, 22:44


--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
Go to the top of the page
 
+Quote Post
OVladimir
сообщение Jan 13 2008, 06:30
Сообщение #15


Участник
*

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



Цитата(AlexandrY @ Jan 12 2008, 21:51) *
Таже скорость пошагового прохода гораздо выше.


это может потому что частота JTAG в 1 MHz вместо 200 kHz в лпц

Вопрос в другом, реально ли в кейле сделать обход обработчиков прерываний, о котором упоминал KRS, и начиная с какой версии это возможно сделать?
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Jan 13 2008, 08:37
Сообщение #16


Ally
******

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



Лучше скажите как умудрится сделать чтобы отладчик все время спотыкался на прерываниях.
Такого никогда не было и в последнем компилере нет.

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

Кстати в Cortex увеличилось количество допустимых брекпойнтов.

Цитата(OVladimir @ Jan 13 2008, 11:00) *
это может потому что частота JTAG в 1 MHz вместо 200 kHz в лпц

Вопрос в другом, реально ли в кейле сделать обход обработчиков прерываний, о котором упоминал KRS, и начиная с какой версии это возможно сделать?
Go to the top of the page
 
+Quote Post
OVladimir
сообщение Jan 13 2008, 08:43
Сообщение #17


Участник
*

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



Цитата(AlexandrY @ Jan 13 2008, 10:37) *
Лучше скажите как умудрится сделать чтобы отладчик все время спотыкался на прерываниях.
Такого никогда не было и в последнем компилере нет.

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

Кстати в Cortex увеличилось количество допустимых брекпойнтов.



Ничего не делал специально, иннициализация ровно такая же как и в примерах с сайта кейл, буду ковырять тогда глубже, а точек останова да, больше: 8 вместо 2 в ARM7
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jan 13 2008, 09:18
Сообщение #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
Go to the top of the page
 
+Quote Post
Andy Great
сообщение Jan 16 2008, 11:46
Сообщение #19


Знающий
****

Группа: Свой
Сообщений: 793
Регистрация: 5-11-04
Из: Краматорск, Украина
Пользователь №: 1 057



Цитата(zltigo @ Jan 12 2008, 18:41) *
Естественно интересно. Я не особый поклонник внутрисхемной отладки, но попробовал с RLink в Ride7

Просьба немного не по теме: хочу купить Кольцо с STM32; хочу работать из-под Кейла или GDB. Не могли бы Вы проверить RDI for RLink? Если у Вас нет, у меня есть расшифрованный.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jan 16 2008, 14:02
Сообщение #20


Гуру
******

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



Цитата(Andy Great @ Jan 16 2008, 14:46) *
Не могли бы Вы проверить RDI for RLink? Если у Вас нет, у меня есть расшифрованный.

Могу. Нету. Бросте мне свой адресок в личку - отвечу куда прислать. Единственно, что скорее всего только в субботу.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Vitaliy_ARM
сообщение Jan 20 2008, 23:19
Сообщение #21


Знающий
****

Группа: Свой
Сообщений: 509
Регистрация: 19-07-07
Из: г. Таганрог
Пользователь №: 29 246



Если кому интересно - выкладываю демоплату от ST (проект в AltiunDesigner 6.?).

Сообщение отредактировал Vitaliy_ARM - Jan 20 2008, 23:20
Прикрепленные файлы
Прикрепленный файл  DemoBoard.part01.rar ( 1.39 мегабайт ) Кол-во скачиваний: 259
Прикрепленный файл  DemoBoard.part02.rar ( 625.17 килобайт ) Кол-во скачиваний: 216
 


--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
Go to the top of the page
 
+Quote Post
klen
сообщение Jan 24 2008, 11:03
Сообщение #22


бессмертным стать можно тремя способами
*****

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



получил демо плату PRIMER http://www.st.com/stonline/products/literature/bd/13942.pdf, круглая такая. Поставил Raid7, загрузил тестовый проект. Все дебажится, компиляется, GNU gcc-frendly, все бесплатно... короче меня вштырило. наверно на кортексы ползти начну. во всяком случае стало интересно. за 3 минуты без денег и борьбы началась внутрикристальная отладка. отраслевой прогресс налицо.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jan 24 2008, 11:27
Сообщение #23


Гуру
******

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



Цитата(klen @ Jan 24 2008, 14:03) *
за 3 минуты без денег...

На счет денег только это показалось, то, что ты получил все-в-одном это ограниченная версия платного
продукта рекламу которого ST отспонсировало.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jan 24 2008, 11:41
Сообщение #24


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(klen @ Jan 24 2008, 13:03) *
загрузил тестовый проект
Это твой GNU gcc-frendly проект был, или в комплекте шел? Если твой - выложишь? Надо с чего-то начинать когда-нибудь, а то пока все доку читаю.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Vitaliy_ARM
сообщение Jan 24 2008, 13:14
Сообщение #25


Знающий
****

Группа: Свой
Сообщений: 509
Регистрация: 19-07-07
Из: г. Таганрог
Пользователь №: 29 246



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


У меня есть куча примеров для платы, которую я выкладывал и не только.
Прикрепленные файлы
Прикрепленный файл  ARM_based_32_bit_MCU_STM32F101xx_and_STM32F103xx_firmware_library.zip ( 961.32 килобайт ) Кол-во скачиваний: 283
Прикрепленный файл  STM32F10xxx_in_application_programming_using_the_USART.zip ( 177.91 килобайт ) Кол-во скачиваний: 249
Прикрепленный файл  STM32F10xxx_USB_developer_kit.zip ( 405.19 килобайт ) Кол-во скачиваний: 288
 


--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
Go to the top of the page
 
+Quote Post
klen
сообщение Jan 24 2008, 13:49
Сообщение #26


бессмертным стать можно тремя способами
*****

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



Цитата(zltigo @ Jan 24 2008, 14:27) *
На счет денег только это показалось, то, что ты получил все-в-одном это ограниченная версия платного
продукта рекламу которого ST отспонсировало.

yeah.gif ага, моий проект - за 3 минуты наваял !! не тконечно, пример был зашит вдевайс - катание шарика по экрану (обработка сигнала акселеромеров), графическое меню, какието еще игрушки типа arcanoid и тд,. Установив Raid7 скаченный с сайта там же обнаружился именно тот пример для STM32 который зашит производителем (видимо они дружат).

2 Zltigo
А что платное, в чем подвох то? На сайте Raid7 написано что все тулсы при использовании GNU GCC и использовании STM32 "No software limitation"
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jan 24 2008, 14:46
Сообщение #27


Гуру
******

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



Цитата(klen @ Jan 24 2008, 16:49) *
А что платное, в чем подвох то?

Подвох в том, что JTAG адаптер ко все этой красоте не бесплатен, а тот, который на демоборде ограничен по объему отлаживаемого кода и upgrade его за отдельные денюжки у далее само собой поддержка за деньги.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Vitaliy_ARM
сообщение Jan 24 2008, 14:56
Сообщение #28


Знающий
****

Группа: Свой
Сообщений: 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


--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jan 24 2008, 15:05
Сообщение #29


Гуру
******

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



Цитата(Vitaliy_ARM @ Jan 24 2008, 17:56) *
А бесплатные j-таги не пробовали прикручивать?

Типа ворованного Wiggler-а smile.gif На этой плате все жеско замотировано, ибо делалась ниа исключительно для рекламы одного J-Tag, и без насилия другой не подключишь...


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
cebotor
сообщение Jan 25 2008, 13:46
Сообщение #30


Частый гость
**

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



впечатления :
1.I2C немного криво реализован.
2. прилагающимися примерами от команды индусов пользоваться опасно, заструктурировано все до нельзя, а на верхнем уровне куча багов (проверять все используемое фирмваре лайбрари до низу!)
в извинение могу сказать что стэк юсб довольно прямо реализован и заработал на ура.
3. структура железа камешка такова что сама предполагает объектный доступ к переферии - пример - таблицы с указателями на рам для юсб . Что в принципе ограничивает возможенности написания "сверхчистосишного" кода а-ля MISRA спецификейшн.


--------------------
если еррата пуста - это не хорошо а плохо
Go to the top of the page
 
+Quote Post
OVladimir
сообщение Jan 26 2008, 09:14
Сообщение #31


Участник
*

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Jan 26 2008, 20:52
Сообщение #32


Ally
******

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



А вот это не очевидно. У ST явная политика на сворачивание документирования чипов.
Они переходят на предоставление либ без подробного описания железа.
Как это сейчас делается у OEM-щиков.
Вот как тест, к примеру, скажите мне где в доке на STM32 указано от какого источника и с какой частотой идет клок на таймеры 2,3,4.

Цитата(OVladimir @ Jan 26 2008, 13:44) *
это уже не по поводу самого процессора, такие явления сплош и рядом, в своих ошибках легче разобраться чем в чужих
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jan 26 2008, 20:58
Сообщение #33


Гуру
******

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



Цитата(AlexandrY @ Jan 26 2008, 23:52) *
Они переходят на предоставление либ без подробного описания железа.

Жутко раздражает, чувствуешь себя идиотом пытающимся восстановить облик мамонта по куче его окаменелых экскрементов sad.gif


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
OVladimir
сообщение Jan 27 2008, 00:56
Сообщение #34


Участник
*

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



Цитата(AlexandrY @ Jan 26 2008, 22:52) *
скажите мне где в доке на STM32 указано от какого источника и с какой частотой идет клок на таймеры 2,3,4.


в data sheet и в референс мануал есть блок схема, там всё видно, плюс есть описание всех блоков словами.

само описание выполнено в другом стиле нежели у эникспи, сложнее немного, но всё есть
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Jan 28 2008, 07:03
Сообщение #35


Ally
******

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



Ну что ж, я считаю что вы не нашли.
Элементы тактирования таймеров на блоксхеме либо не верны либо не описаны.
Стиль это не какая-то мелочь, по опросам более чем для 50% разработчиков основным критерием в выборе кристалла является качество документации.
Собственно эта документация отражает качество работы команды разработчиков чипа, т.е. косвенно определяет и качество самого чипа.
А по опыту плохая дока на пару месяцев может спокойно задержать проект.
Другое дело, что чипы для ST разрабатывают по аутсорсу, а доку пишут ихние индусы и видно очень ленивые.
Т.е. чипы сами по себе не хуже других, но во тем кто их продает я не позавидую.

Цитата(OVladimir @ Jan 27 2008, 05:26) *
в data sheet и в референс мануал есть блок схема, там всё видно, плюс есть описание всех блоков словами.

само описание выполнено в другом стиле нежели у эникспи, сложнее немного, но всё есть
Go to the top of the page
 
+Quote Post
cebotor
сообщение Jan 28 2008, 07:47
Сообщение #36


Частый гость
**

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



Цитата(zltigo @ Jan 26 2008, 23:58) *
Жутко раздражает, чувствуешь себя идиотом пытающимся восстановить облик мамонта по куче его окаменелых экскрементов sad.gif

с одной стороны может это и полезно , например попользовавшись ератами атмела и филипса приходишь к выводу , что с таким количеством "особенностей" лучше бы сразу предоставили код которым можно пользоваться. предоставили софтварный интерфейс вместо хардварного так сказать. Только пhи этом нельзя оставлять прежнее отношение к этим апнотам - "это всего лишь пример , и поставляется as it is ".
А так лично мне было бы все равно с какой абстракцией работать - с битом в кфг регистре , или с членом структуры.


--------------------
если еррата пуста - это не хорошо а плохо
Go to the top of the page
 
+Quote Post
OVladimir
сообщение Jan 28 2008, 09:31
Сообщение #37


Участник
*

Группа: Участник
Сообщений: 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 офисе в Паге целую неделю, ни одного индуса не видел
Go to the top of the page
 
+Quote Post
KRS
сообщение Jan 29 2008, 20:32
Сообщение #38


Профессионал
*****

Группа: Модераторы
Сообщений: 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 качать
Go to the top of the page
 
+Quote Post
OVladimir
сообщение Jan 30 2008, 06:25
Сообщение #39


Участник
*

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



Получил newsletter "The ST Microcontroller Newsletter - January/February 2008" сегодня, там написано:

STM32 receives EG3 "editor's choice" award!
Ну это так, просто
Go to the top of the page
 
+Quote Post
cebotor
сообщение Jan 30 2008, 08:10
Сообщение #40


Частый гость
**

Группа: Свой
Сообщений: 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 (вероятно остался от старой версии, но будет ли работать пока не проверил )


--------------------
если еррата пуста - это не хорошо а плохо
Go to the top of the page
 
+Quote Post
KRS
сообщение Jan 30 2008, 11:18
Сообщение #41


Профессионал
*****

Группа: Модераторы
Сообщений: 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.html
EKC-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.html
UM-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 хочется его запустить
Go to the top of the page
 
+Quote Post
KRS
сообщение Jan 30 2008, 14:43
Сообщение #42


Профессионал
*****

Группа: Модераторы
Сообщений: 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
Go to the top of the page
 
+Quote Post
cebotor
сообщение Jan 31 2008, 08:39
Сообщение #43


Частый гость
**

Группа: Свой
Сообщений: 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
(для ЛПЦ например ) или я не прав ?


--------------------
если еррата пуста - это не хорошо а плохо
Go to the top of the page
 
+Quote Post
KRS
сообщение Jan 31 2008, 12:17
Сообщение #44


Профессионал
*****

Группа: Модераторы
Сообщений: 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
Go to the top of the page
 
+Quote Post
cebotor
сообщение Jan 31 2008, 12:58
Сообщение #45


Частый гость
**

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



Цитата(KRS @ Jan 31 2008, 15:17) *
Да пересобрал OPENOCD

Конфигурационный файл взял отсюда
http://openfacts.berlios.de/index-en.phtml...OpenOCD_scripts

алладин ! колоссальное спасибо за предоставленную информацию !


--------------------
если еррата пуста - это не хорошо а плохо
Go to the top of the page
 
+Quote Post
Vitaliy_ARM
сообщение Jan 31 2008, 14:02
Сообщение #46


Знающий
****

Группа: Свой
Сообщений: 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 драйвер? Может ссылку подкинете?


--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
Go to the top of the page
 
+Quote Post
KRS
сообщение Jan 31 2008, 14:09
Сообщение #47


Профессионал
*****

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



Цитата(Vitaliy_ARM @ Jan 31 2008, 17:02) *
Как OpenOCD с IAR стыковать? Через RDI драйвер? Может ссылку подкинете?

К сожалению я не знаю готового решения RDI <-> GDBserver
Но у IAR 5.xx уже есть в конфигурации GDB server, так что 5ый IAR можно подключить прямо к openocd
Go to the top of the page
 
+Quote Post
cebotor
сообщение Jan 31 2008, 14:27
Сообщение #48


Частый гость
**

Группа: Свой
Сообщений: 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


--------------------
если еррата пуста - это не хорошо а плохо
Go to the top of the page
 
+Quote Post
Vitaliy_ARM
сообщение Jan 31 2008, 20:23
Сообщение #49


Знающий
****

Группа: Свой
Сообщений: 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, заодно и сравню.


--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
Go to the top of the page
 
+Quote Post
Vitaliy_ARM
сообщение Jan 31 2008, 23:23
Сообщение #50


Знающий
****

Группа: Свой
Сообщений: 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 сюда? wink.gif

Сообщение отредактировал Vitaliy_ARM - Jan 31 2008, 23:36


--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
Go to the top of the page
 
+Quote Post
KRS
сообщение Feb 1 2008, 07:36
Сообщение #51


Профессионал
*****

Группа: Модераторы
Сообщений: 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 сюда? wink.gif

Эта сборка OpenOCD с конфигурацией
./configure --enable-ft2232_ftd2xx --with-ftd2xx=/cygdrive/e/.....
И удалено установка младшего бита PC ( что бы IAR не глючил), зато наверное оригинальный GDB может глючить.
У меня с IAR вроде все работает.
Прикрепленные файлы
Прикрепленный файл  openocd_ftdi_iar.rar ( 449.39 килобайт ) Кол-во скачиваний: 115
 
Go to the top of the page
 
+Quote Post
gregory812
сообщение Feb 15 2008, 15:02
Сообщение #52


Участник
*

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



А что, правда, что J-Link еще не поддерживает STM32?

А что, правда, что J-Link еще не поддерживает STM32?
Go to the top of the page
 
+Quote Post
KRS
сообщение Feb 15 2008, 16:15
Сообщение #53


Профессионал
*****

Группа: Модераторы
Сообщений: 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
Go to the top of the page
 
+Quote Post
OVladimir
сообщение Feb 16 2008, 13:39
Сообщение #54


Участник
*

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



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


и ещё, на сей раз в корзину плюсов по поводу дебага: значения глобальных переменных видно всё время, не надо останавливать выполнение программы.
Go to the top of the page
 
+Quote Post
KRS
сообщение Feb 18 2008, 14:06
Сообщение #55


Профессионал
*****

Группа: Модераторы
Сообщений: 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
Go to the top of the page
 
+Quote Post
cebotor
сообщение Feb 26 2008, 13:41
Сообщение #56


Частый гость
**

Группа: Свой
Сообщений: 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 smile.gif
не выложите ?


--------------------
если еррата пуста - это не хорошо а плохо
Go to the top of the page
 
+Quote Post
KRS
сообщение Feb 26 2008, 14:15
Сообщение #57


Профессионал
*****

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



Цитата(cebotor @ Feb 26 2008, 16:41) *
именно по этому OPENOCD не врубает swd режим. следовательно мне надо перепрошить епромку содержимым таким же как у вас , чтобы получить всю мощь SWD smile.gif

Не не поэтому. OpenOCD вообще не умеет работать через SWD sad.gif, покрайней мере пока. Я тоже использую режим JTAG.
А прошивку прилагаю, может понадобится что бы IAR определил устройство как LM FTDI
Прикрепленные файлы
Прикрепленный файл  lm_ftdi_eep.rar ( 575 байт ) Кол-во скачиваний: 94
 
Go to the top of the page
 
+Quote Post
KRS
сообщение Mar 11 2008, 15:38
Сообщение #58


Профессионал
*****

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



Все еще мучаю STM32F103. Пока чип работает хорошо.
Кстати у него очень удобная реализация CAN - 2 fifo (что мне удобнее чем куча mailbox) и много довольно гибких фильтров.
И еще тут обнаружил что APB1 (на ней и CAN висит ) работает (по даташиту) максимум на 36 Mhz, т.к. я на это внимания не обратил у меня APB1 и CAN на ней работают на полной скорости 72 Mhz ( глюков не было), но скорость я конечно все равно понижу до 36.
Go to the top of the page
 
+Quote Post
cebotor
сообщение Mar 13 2008, 13:09
Сообщение #59


Частый гость
**

Группа: Свой
Сообщений: 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 sad.gif
что делать ума не приложу ..
на jlink mt link и jet-link IAR ругается типа - указанный адаптер не поддерживает режим СВД ! sad.gif


--------------------
если еррата пуста - это не хорошо а плохо
Go to the top of the page
 
+Quote Post
KRS
сообщение Mar 13 2008, 13:48
Сообщение #60


Профессионал
*****

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



Цитата(cebotor @ Mar 13 2008, 16:09) *
тоже мучаю его , все приятненько , только по прежнему накалываюсь н абаги в либахм СВД ! sad.gif


Да я тоже сразу эти либы скачал, посмотрел на них... и решил что обойдусь без них.

На SPI тут уже жаловались - что плохо описан. IMHO он не плохо описан а просто так тупо сделан. Очень примитивно. Больше всего расстраивает что нет флага на конец передачи, флаг на прием срабатывает по приему последнего бита и если CHPA = 0 получается на пол периода раньше, что очень неудобно если скорость маленькая и чипселекты софтом реализованы. Но самое главное при overrun остается не новое значение - а старое и пока его не прочитать все новые будут отброшены, что очень неудобно когда чать устройств на SPI только на передачу. Если например тупо послать 4 байта то потом в SPI_DR останется не последний принятый байт, а первый а все остальные удалятся ( ну и флаг overrun конечно будет установлен)
Go to the top of the page
 
+Quote Post
Vitaliy_ARM
сообщение Mar 21 2008, 13:39
Сообщение #61


Знающий
****

Группа: Свой
Сообщений: 509
Регистрация: 19-07-07
Из: г. Таганрог
Пользователь №: 29 246



Получил на днях плату PREMIER.

Кто-нибудь ее к IAR подключал?


--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
Go to the top of the page
 
+Quote Post
KRS
сообщение Apr 2 2008, 19:35
Сообщение #62


Профессионал
*****

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



По поводу SPI -
1. У меня не получилось нормально настроить SS на выход. Вернее на выход он настраивается, но стоит только разрешить SPI (SPIEN бит) как SS встает в 0 и никак не привязан к фреймам.
2. Хоть и написано что CPHA можно менять не отключая SPI (если в данный момент нет передачи) это как то криво работает (с флагом что данные есть были глюки прходилось проверять перед отправкой и первый байт отправлялся криво), заморачиваться не стал - переключаю SPI двумя записями - 1 с новым конфигом но без enable, вторая с enabe.

По поводу отладки
Отладка через 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).
Go to the top of the page
 
+Quote Post
cebotor
сообщение Apr 3 2008, 10:32
Сообщение #63


Частый гость
**

Группа: Свой
Сообщений: 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 ?


--------------------
если еррата пуста - это не хорошо а плохо
Go to the top of the page
 
+Quote Post
KRS
сообщение Apr 3 2008, 12:18
Сообщение #64


Профессионал
*****

Группа: Модераторы
Сообщений: 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);
Go to the top of the page
 
+Quote Post
mai
сообщение Apr 4 2008, 06:21
Сообщение #65


Участник
*

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post
cebotor
сообщение Apr 4 2008, 08:31
Сообщение #66


Частый гость
**

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



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


да это общая беда многих кристаллов. у меня есть экземпляры и stm32 и lpc2368 , в которых ради измерения потребления тока , было первыми командами сделан слип smile.gif и теперь jtag-ом до них не дотянуться.


--------------------
если еррата пуста - это не хорошо а плохо
Go to the top of the page
 
+Quote Post
mai
сообщение Apr 4 2008, 09:27
Сообщение #67


Участник
*

Группа: Участник
Сообщений: 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 все же работает.
Go to the top of the page
 
+Quote Post
cebotor
сообщение Apr 4 2008, 09:46
Сообщение #68


Частый гость
**

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



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

Логика крайне проста - жтаг не может дотянуться до контроллера пока тот спит(вообще), если у вас в проекте пауза между периодами сна больше времени требующегося жтагу чтобы остановить процессор, то проблем быть не должно (теоретически).. На практике же, например lpc очень медленно останавливается по жтагу - сначала стопается ядро , а потом вся переферия - так что глобально программа может таки встать раком.

Да и еще если пауза достаточна , но периоды сна слишком велики - то у жтага будет выходить таймаут и у вас процессор будет подчиняться ему (жтагу) через раз smile.gif


--------------------
если еррата пуста - это не хорошо а плохо
Go to the top of the page
 
+Quote Post
pan_oleg
сообщение Apr 4 2008, 10:18
Сообщение #69


Частый гость
**

Группа: Участник
Сообщений: 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), не помогает
Посоветуйте, куда копать help.gif
Заранее благодарен.
Go to the top of the page
 
+Quote Post
mai
сообщение Apr 4 2008, 10:26
Сообщение #70


Участник
*

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



[q]cebotor[/q]
Спасибо за разъяснения. Картинка получается не совсем приятная, пытаться искусственно управлять периодами сна и бодрствования как-то уж совсем печально, на мой взгляд.
Придется все же делать возможность выключить засыпание в работающей программе, чтобы иметь возможность дать работать jtag.
Go to the top of the page
 
+Quote Post
KRS
сообщение Apr 4 2008, 10:52
Сообщение #71


Профессионал
*****

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



Цитата(mai @ Apr 4 2008, 14:26) *
Спасибо за разъяснения. Картинка получается не совсем приятная, пытаться искусственно управлять периодами сна и бодрствования как-то уж совсем печально, на мой взгляд.
Придется все же делать возможность выключить засыпание в работающей программе, чтобы иметь возможность дать работать jtag.

С stm32 по поводу этого можно не беспокоится! Потому что законектится к процу через SWD можно пока он в ресете ( сам лично пробовал ). И можно легко не дать процу выполнить не одной команды ( достаточно поставить остновку на ресет и потом только отпустить ногу ресет) как все это делается описано в соотв. даташитах!

Сообщение отредактировал KRS - Apr 4 2008, 10:54
Go to the top of the page
 
+Quote Post
pan_oleg
сообщение Apr 4 2008, 11:30
Сообщение #72


Частый гость
**

Группа: Участник
Сообщений: 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);
}
Go to the top of the page
 
+Quote Post
mai
сообщение Apr 4 2008, 12:16
Сообщение #73


Участник
*

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



KRS
Цитата
С stm32 по поводу этого можно не беспокоится! Потому что законектится к процу через SWD можно пока он в ресете ( сам лично пробовал ). И можно легко не дать процу выполнить не одной команды ( достаточно поставить остновку на ресет и потом только отпустить ногу ресет) как все это делается описано в соотв. даташитах!

Спасибо, буду знать. Только у меня сейчас старенький J-Link, а он, насколько я знаю, SWD не поддерживает.
Go to the top of the page
 
+Quote Post
cebotor
сообщение Apr 4 2008, 13:53
Сообщение #74


Частый гость
**

Группа: Свой
Сообщений: 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 .


--------------------
если еррата пуста - это не хорошо а плохо
Go to the top of the page
 
+Quote Post
pan_oleg
сообщение Apr 4 2008, 14:11
Сообщение #75


Частый гость
**

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



Спасибо что откликнулись.
Пошаговая отладка показала что переменая (см. ниже) LastEvent получает значение 0х00030041, вместо 0х00030001. похоже гдето ещо появляется событие RxNE: Data Register not Empty (receivers).
но откуда, и почему при шаговом выполнении все работает? не пойму. Переделал подтяжку согласно доки (добавил по резистору между шиной и контроллером), ничего не поменялось.
подскажите, как побороть эту беду crying.gif

/*******************************************************************************
* 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;
}
Go to the top of the page
 
+Quote Post
cebotor
сообщение Apr 4 2008, 14:34
Сообщение #76


Частый гость
**

Группа: Свой
Сообщений: 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 */
и обработайте оба события


--------------------
если еррата пуста - это не хорошо а плохо
Go to the top of the page
 
+Quote Post
pan_oleg
сообщение Apr 4 2008, 15:01
Сообщение #77


Частый гость
**

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



я сделал несколько по другому, работает нормально, только что все 32 кБ yeah.gif побайитно записал и считал
я подпровил:
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 )
в принципе ето и есть битовая маска, как вы считаете?
или я неправельно сделал?
вам огромный a14.gif a14.gif a14.gif
Go to the top of the page
 
+Quote Post
cebotor
сообщение Apr 7 2008, 19:14
Сообщение #78


Частый гость
**

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



Цитата(pan_oleg @ Apr 4 2008, 19:01) *
я сделал несколько по другому, работает нормально, только что все 32 кБ yeah.gif побайитно записал и считал
я подпровил:
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 то же надо отработать в зависимости от того "в каком положении" мы сейчас находимся. то есть в данном случае , если пришел байт , а мы ждали конца, то в принципе все корректно , а вот если произошла или ошибка , или непреднамеренный конец в дополнении к ожидаемому нами событию , то его нельзя игнорировать, иначе встанем в неприличную позу.


--------------------
если еррата пуста - это не хорошо а плохо
Go to the top of the page
 
+Quote Post
Abckur
сообщение Apr 11 2008, 07:57
Сообщение #79


Участник
*

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



Цитата(KRS @ Feb 26 2008, 18:15) *
OpenOCD вообще не умеет работать через SWD sad.gif, покрайней мере пока. Я тоже использую режим JTAG.

А прошивку прилагаю, может понадобится что бы IAR определил устройство как LM FTDI


Подскажите где взять схему под эту прошивку ? Спасибо !
Go to the top of the page
 
+Quote Post
KRS
сообщение Apr 11 2008, 08:54
Сообщение #80


Профессионал
*****

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



Цитата(Abckur @ Apr 11 2008, 11:57) *
Подскажите где взять схему под эту прошивку ? Спасибо !

Да стандартное подключение FT2232C в качестве JTAG TCK/TDI/TDO/TMS на своих местах и еще систем ресет nSRST на ADBUS5

что бы схему посмотреть надо документацию на eval board скачать (например Stellaris LM3S6965 Evaluation Board) только там еще PLD стоит, но он нужен только для SWD и переключения/отключения дебагера на внешний разъем.
Go to the top of the page
 
+Quote Post
Abckur
сообщение Apr 11 2008, 18:30
Сообщение #81


Участник
*

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



А прошивку то во что заливать ? на в CPLD разве ?

в 93с46 чтоль ?
Go to the top of the page
 
+Quote Post
KRS
сообщение Apr 11 2008, 18:39
Сообщение #82


Профессионал
*****

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



Цитата(Abckur @ Apr 11 2008, 22:30) *
А прошивку то во что заливать ? на в CPLD разве ?

прошивка заливается стндартной FTDIной программой к еепром подключенной к FTDI (штатным способом) нужна исключительно для настройки параметров FT2232 ( имя VID PID ....)

CPLD вообще не нужна ( если использовать JTAG, а SWD IAR не поддерживает, да и для SWD нужен только буфер с OE)

К тому же если вы собираетесь использовать OpenOcd еепром вообще не нужен. (кстати IAR поддерживает только cortex-M3 через такое устройство, а OpenOCd и все )

Сообщение отредактировал KRS - Apr 11 2008, 18:43
Go to the top of the page
 
+Quote Post
KRS
сообщение Apr 17 2008, 18:07
Сообщение #83


Профессионал
*****

Группа: Модераторы
Сообщений: 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)
Go to the top of the page
 
+Quote Post
alexsl
сообщение Apr 24 2008, 12:12
Сообщение #84


Участник
*

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



Добрый день. Ответьте пожалуйста, данный чип работает с Wigler'ом. Или нужен обязательно J-LINK?
Go to the top of the page
 
+Quote Post
KRS
сообщение Apr 24 2008, 12:46
Сообщение #85


Профессионал
*****

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



Цитата(alexsl @ Apr 24 2008, 16:12) *
Добрый день. Ответьте пожалуйста, данный чип работает с Wigler'ом. Или нужен обязательно J-LINK?

у него есть JTAG порт, следовательно с Wiggler ом работает, тут главное поддержка софта. H-JTAG не умеет работать с Coretx-M3 sad.gif . Есть поддержка у OpenOcd ( он умеет работать и с Wiggler и с Cortex-M3) и его можно прикрутить к IAR 5.11 ( с некоторыми ньюансами в частности ( указатель стека R13 и LR не отображаются... но их можно смотреть через telnet).
Тут выше я описывал как подключить OpenOcd к IAR ( для FT2232 правда, но такой же путь и для Wiggler).
Go to the top of the page
 
+Quote Post
alexsl
сообщение Apr 24 2008, 13:55
Сообщение #86


Участник
*

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



Ага, понятно. Но ведь есть CrossWorks, который умеет работать с виглером. Или я не прав?
Go to the top of the page
 
+Quote Post
KRS
сообщение Apr 24 2008, 14:36
Сообщение #87


Профессионал
*****

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



Цитата(alexsl @ Apr 24 2008, 17:55) *
Ага, понятно. Но ведь есть CrossWorks, который умеет работать с виглером. Или я не прав?

Да у кроссвокса свой драйвер виглера и он прекрасно и быстро работал ( я просто когда я его пробовал о кортексах никто и не слышал ничего), так что сейчас если кроссвокс умеет работать с кортексами это может быть хороший вариант!
Go to the top of the page
 
+Quote Post
gregory812
сообщение Apr 24 2008, 19:52
Сообщение #88


Участник
*

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



А есть ли возможность во время работы контроллера сохранять во флеш память без торможения основной программы (наподобие памяти EEPROM у AVR)?
Go to the top of the page
 
+Quote Post
KRS
сообщение Apr 25 2008, 06:39
Сообщение #89


Профессионал
*****

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



Цитата(gregory812 @ Apr 24 2008, 23:52) *
А есть ли возможность во время работы контроллера сохранять во флеш память без торможения основной программы (наподобие памяти EEPROM у AVR)?

Можно, только гемора много... Надо все что может испольняться пока флеш пишется ( в частности перывания) располагать в ОЗУ. У STR два флеша и даже appnote есть как иммитировать eeprom, а вот у STM только один.
Go to the top of the page
 
+Quote Post
Andy Great
сообщение Apr 25 2008, 06:43
Сообщение #90


Знающий
****

Группа: Свой
Сообщений: 793
Регистрация: 5-11-04
Из: Краматорск, Украина
Пользователь №: 1 057



А подскажите, мэтры Кортекса, применимость его в таком случае: имею микросхему с параллельным 5В интерфейсом (уровень "1" 3.5В), 8бит адрес/данные, 3 адрес, ALE-RD-WR-INT. Крутил и так и этак (корпус 48), не получается красиво. На двух портах только старшие байты 5В-толерантные, дальше побитно дергать надо. Без софтовых обработок адреса не получится. А жаль: хотелось попробовать новую платформу, но некрасиво не хочется делать.

ЗЫ: И как у них с доступностью на Украине?
Go to the top of the page
 
+Quote Post
Krom
сообщение Apr 29 2008, 06:41
Сообщение #91


Частый гость
**

Группа: Свой
Сообщений: 107
Регистрация: 27-06-05
Из: Россия
Пользователь №: 6 324



Добрый день! А работать с этими процами под Linux в Эклипс+OCD+GCC... кто-нибудь уже пробовал?
Go to the top of the page
 
+Quote Post
sensor_ua
сообщение Apr 29 2008, 16:21
Сообщение #92


Профессионал
*****

Группа: Свой
Сообщений: 1 266
Регистрация: 22-04-05
Из: Киев
Пользователь №: 4 387



На Techtrends 2008 анонсировали (пока неофициально - обещают официально выдать только в мае) расширение линейки STM32 как вверх - до 512 кБ FLASH и 64 кБ ОЗУ с кучей новых вкусностей, так и вниз до блох, сравнимых с ATmega88.
Предварительные доки выложил на ftp в /upload/DOCs/ARM/STM32/
и в пески
hччp://upload.caxapa.ru/STM32_ref_man.zip
hччp://upload.caxapa.ru/STM32F101xCDE.pdf
hччp://upload.caxapa.ru/STM32F103xCDE.pdf


--------------------
aka Vit
Go to the top of the page
 
+Quote Post
Krom
сообщение Apr 30 2008, 07:12
Сообщение #93


Частый гость
**

Группа: Свой
Сообщений: 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 sad.gif
А грузить и стирать флеш из Кейла вообще не хочет. Что я забыл настроить?
Go to the top of the page
 
+Quote Post
Maximm
сообщение Apr 30 2008, 22:43
Сообщение #94


Частый гость
**

Группа: Свой
Сообщений: 157
Регистрация: 7-10-07
Из: Санкт-Петербург
Пользователь №: 31 137



У меня проблема с компиляцией проектов для STM32F103 - использую Keil MDK v. 3.20 при компиляции примеров от Keil получаю ошибку:

STM32F10x.s: error: A3903U: Argument 'DARMSTM' not permitted for option 'device'.

Подскажите, пожалуйста, что не так сделал.....


--------------------
Если работает через раз - значит не работает!
Go to the top of the page
 
+Quote Post
Maximm
сообщение May 4 2008, 18:20
Сообщение #95


Частый гость
**

Группа: Свой
Сообщений: 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" и всю заработало....
Даже не понятно почему такая разница в лицензиях...


--------------------
Если работает через раз - значит не работает!
Go to the top of the page
 
+Quote Post
gregory812
сообщение May 9 2008, 08:00
Сообщение #96


Участник
*

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



Запустил АЦП на отладочной плате STM3210B-EVAL. Показания плавают в пределах +-5LSB. Выходит, что по точности не больше 10-ти разрядов. Кто испытывал АЦП поделитесь впечателниями.

Сообщение отредактировал gregory812 - May 9 2008, 08:02
Go to the top of the page
 
+Quote Post
sonycman
сообщение Jan 3 2009, 21:39
Сообщение #97


Любитель
*****

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



Имеется STM32F103RBT6 (на плате от Olimex STM32 P103) и МТ-Линк (версия железа 5.0, серийник 11111117).
Почему-то дебаггер заливает прошивку в контроллер через раз.
То есть соединение всегда проходит на ОК, но вот дальше дебаггер обязательно споткнётся на стирании, или на записи страницы. Выдаётся сообщение о таймауте стирания или записи... 07.gif
Причём если сразу-же повторить попытку - то запись и проверка записи завершаются успешно.

Юзал заливку из под JFlashARM из пакета дров сеггера (версия 4.0), так и из под кейла MDK3.40.
Скорость соединения выставлял от 5 до 200 килогерц - без разницы.

В этом топике тоже пишут про "пляски с бубном" с дебаггером - это что, у всех так?

Причём вот что интересно - до этого юзал этот-же дебаггер с самопальной платой с LM3S601 - ни одной проблемы с дебаггером! Запись, стирание, проверка - быстро и чётко, без запинок.

Может, с железом на олимексовской плате что не так? В смысле, лишний пулл-ап/пулл-даун влепили на жи-таг?
Я просто теряюсь в догадках... wacko.gif
Go to the top of the page
 
+Quote Post
sonycman
сообщение Jan 4 2009, 22:05
Сообщение #98


Любитель
*****

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



А в STM32 разве нет возможности обращаться к периферийным регистрам через бит-бэнг области?
Что-то в мануале не нашёл упоминаний...
Почему-то показалось, что такая фича есть у всех кортексов, а не только у Stellaris... 05.gif

ЗЫ: А, сорри, нашёл! Уря, я просто перепутал, когда искал - правильно пишется "band", а не "bang"...
Go to the top of the page
 
+Quote Post
cebotor
сообщение Jan 5 2009, 23:25
Сообщение #99


Частый гость
**

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



Цитата(sonycman @ Jan 4 2009, 00:39) *
Почему-то дебаггер заливает прошивку в контроллер через раз.

Год почти полет нормальный. в том числе и на пятой версии j-линка и Мтлинка (дебаггер - ИАР)
а Вы что под дебаггером подразумеваете ?
Пляски были, не отрецаем,- но плясали вокруг GDB сервера и(или) SWD, кажется , а если работать напрямую и не по СВД ,то там все как часы.


--------------------
если еррата пуста - это не хорошо а плохо
Go to the top of the page
 
+Quote Post
sonycman
сообщение Jan 6 2009, 09:54
Сообщение #100


Любитель
*****

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



Цитата(cebotor @ Jan 6 2009, 03:25) *
Год почти полет нормальный. в том числе и на пятой версии j-линка и Мтлинка (дебаггер - ИАР)
а Вы что под дебаггером подразумеваете ?
Пляски были, не отрецаем,- но плясали вокруг GDB сервера и(или) SWD, кажется , а если работать напрямую и не по СВД ,то там все как часы.

Дебаггер - МТ-Линк smile.gif
Кейл с ним работает через RDI.
Хотя, если пробовать через родную JFlashARM.exe - то запись во флеш тоже через раз. Не знаю, JFlash работает через RDI или напрямую?

Посмотрел по логам - сложилось впечатление, что дело такое:
1. Сначала в оперативу контроллера заливается код "прошивальщика".
2. Потом с ним ведётся многократный обмен данными путём перезаписи регистров и рестарта кода.
Вероятно, здесь идёт стирание нужных страниц флеш.
После окончания обработки данных код стопорит ядро и таким образом даёт знать ожидающему дебаггеру о возможности продолжения "диалога" smile.gif
3. Только теперь ему начинает передаваться код программы для флеш в виде кусков определённой длинны.
4. Считывание флеш и верификация записи.

Зависание происходит на втором этапе. То есть до передачи данных для записи дело не доходит.
Перестаёт отвечать "прошивальщик". Спрашивается - какого хрена?

Было-бы интересно посмотреть, что происходит "внутри" кода загрузчика? На чём он стопорится?
Но как это сделать? Есть где-нибудь его исходники?

По схемотехнике JTAG вроде у Олимекс STM32-P103 всё в порядке - все подтягивающие резисторы на месте.
sad.gif

Думаю, проблема не в МТ-Линк, так как со Stellaris всё работает "как часы" smile.gif
Проблема может быть или в плате Олимекса (что маловероятно, но допустимо), или в коде прошивальщика - неправильная инициализация камня или что-то в этом духе.
Или, что совсем маловероятно - глючный микроконтроллер.
05.gif
Go to the top of the page
 
+Quote Post

20 страниц V   1 2 3 > » 
Reply to this topicStart new topic
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 14:44
Рейтинг@Mail.ru


Страница сгенерированна за 0.02763 секунд с 7
ELECTRONIX ©2004-2016