|
|
  |
STM32F103x, делимся впечатлениями |
|
|
|
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)  алладин ! колоссальное спасибо за предоставленную информацию !
--------------------
если еррата пуста - это не хорошо а плохо
|
|
|
|
|
  |
5 чел. читают эту тему (гостей: 5, скрытых пользователей: 0)
Пользователей: 0
|
|
|