Anyone out there using the "Rowley Crossworks for ARM" development suite with ST Cortex? I have used it for other ARM processors just not yet for the ST Cortex.
Several IDEs/Toolchains are available for the STM32 ARM™ Cortex-M3™ core-based microcontrollers:
1) Rowley : CrossWorks
2) Raisonance : RIDE
3) Keil : uVision3
4) iSYSTEM :WinIdea
5) IAR :EWARM
5) Hitex :HITOP5
6) Green Hills Software : MULTI
7) Altium / TASKING : EDE
For more details please refer to this web Page STM32 Tools : Releasing Your Creativity :-)
and you can contact your preferred IDE provider to give you his last update/news and prices.
I've played with evaluation version two weeks ago and I quite liked it.
You can download STM32 package and STM32 eval board package with all HW library examples. When you create new project for STM32 it is ready go - Flash/Ram Debug/Release configurations, startup code, Flash bootloader configuration etc.
I've run couple of benchmark compiles with build in gcc compiler, I also upgraded gcc to version 2007q3-53 that's suppose to generate better code for Cortex-M3. New compiler version produced around 5-11% smaller code than original.
I liked it more then Keil suite, that was even generating slightly bigger code.
The only thing I had problem with is inline assembly that inisted on using 32 bit version of instructions, even though 16 bit was available e.g. mov r0,#0)
I haven't tried debugging with real STM32 target yet.
Let me know what's your experience.
Thanks. I will let you know my findings once I'm up and running. We've used Crossworks for LPC ARM in the past and found it pretty good.
Is it dificult to upgrade GCC in Crossworks as you've described?
I am not 100% sure but you might need to use "MOVS R0, #0" instead of "MOV R0, #0" for 16-bit version. GNU tool chain seems to a bit strict on this, while with tools from ARM, in traditional Thumb code you can just use "MOV R0, #0" to get the 16-bit version.
Because the 16-bit move instruction updates AFSR, strictly speaking the "S" suffix is needed. This also apply to ADDS, ORRS, etc.
>Is it dificult to upgrade GCC in Crossworks as you've described?
Trevor, it is pretty straighforward. Get 2007q3 version of ARM gcc from www.codesourcery.com. (or use temporary copy at www.rowleydownload.co.uk/tmp/gcc-win32-2007q3-53.zip )
Replace old $(StudioDir))/gcc/bin with new one.
You'll need to backup you existing $(StudioDir)/gcc/bin directory first, so you can return to original one.
>I am not 100% sure but you might need to use "MOVS R0, #0" instead of "MOV R0, #0" for 16-bit version.
Thanks Joseph, that was indeed the problem. No problems with inline gcc assembly anymore.
hi , i am using STM32F103RBT6 ARM 32 bit CORTEX M3™ and i am searching for best compiler. i tried the crosswork but it said " cannot identify target.Check jtag connections and that the target is powered". i am using olimex openocd jtag tiny . i am sure that i successfully installed my jtag. what should i do to communicate with my stm32 . when i just put my jtag without stm32 it says same message on crosswork and when i put the stm32 nothing change still error message.is there anybody experienced with stm32 cortex-m3 on crosswork ? i am waiting your replies... thanks
I'm using Crosswork 1.7 with my home-made STM32F103RBT6 and JTAG parallel port adapter. Everything is running OK. I compiled, debugged and run various examples from the firmware library without any problem. My JTAG adapter is a clone from the Olimex.
I'm also using Crossworks 1.7 build 15 (Linux version on Ubuntu 8.10), with a Amontec JTAGkey and the STM3210E-EVAL/A board.
I've got the same problem as mbati_19, I can connect to a STR710-EVAL board with no problems, but the STM32 board gets "cannot identify target.Check jtag connections and that the target is powered".
I've tried OpenOCD with the same result, not detecting target.
I started all this with Amontec Chameleon Pod (Parallel to JTAG) with success in connecting and writing to flash :-D , but debuging had a problem getting passed the first function call in main :-[ .
Any ideas welcome!
Try change "nTRST Open Drain" to No. It works for Olimex ARM-USB-Tiny(mbati_19 problem), should work for Amontec JTAGkey too
I downloaded an eval version of crossworks 2, along with their NXP LPC2000 CPU Support Package 1.2, but was never able to get it to 'halt the target' (an lpc2148 board).
I'm using an olimex arm-usb-tiny, and got the crosswork to 'connect' and correctly identify the target (JTAG clock divider to 20+ and the nTRST Open Drain to No ) but was unable to get it to debug, erase, etc... never could halt the target.
Anyone have a working project using an arm-usb-tiny and a lpc2148 (or similar) board they wouldnt mind posting?
I find the openocd/eclipse/arm-usb-tiny to be a bit clunky to use, so I would really like to purchase something that is rock solid for debugging...
I know Keil and Green Hills MULTI also have compiler/debugging software for the ARM, but not sure if it supports the olimex arm-usb-tiny. Anyone tried this?
In case this is still relevant, I am using v1.7 with Crossconnect on Mandriva Linux 2008.1 and it works very well.
I have found Rowley support to be excellent.
Under the target's properties try turning Adaptive Clocking OFF and set the JTAG Clock Divider to a larger number like 10 or 20.
If that fixes the problem you can reduce the number for faster downloads, until it gets intermittent.