Uwe Hermann - cortex-m3http://hermann-uwe.de/taxonomy/term/2334/0
enlibopenstm32 - a Free Software firmware library for STM32 ARM Cortex-M3 microcontrollershttp://hermann-uwe.de/blog/libopenstm32-a-free-software-firmware-library-for-stm32-arm-cortex-m3-microcontrollers
<p><a href="http://wp1029610.server-he.de/node/1539"><img src="http://wp1029610.server-he.de/files/images/olimex_stm32_h103.preview.jpg" width="320" height="240" align="right" hspace="5" alt="Olimex STM32-H103 eval board" /></a></p>
<p>I guess it's time to finally announce <a href="http://sourceforge.net/projects/libopenstm32/">libopenstm32</a>, a Free Software firmware library for <a href="http://www.st.com/mcu/familiesdocs-110.html">STM32 ARM Cortex-M3 microcontrollers</a> me and a few other people have been working on in recent weeks. The library is licensed under the <strong>GNU GPL, version 3 or later</strong> (yes, that's an intentional decision after some discussions we had).</p>
<p>The code is available <a href="http://libopenstm32.git.sourceforge.net/git/gitweb.cgi?p=libopenstm32/libopenstm32;a=shortlog">via git</a>:</p>
<pre>
$ <strong>git clone <a href="git://libopenstm32.git.sourceforge.net/gitroot/libopenstm32/libopenstm32">git://libopenstm32.git.sourceforge.net/gitroot/libopenstm32/libopenstm32</a></strong>
$ <strong>cd libopenstm32</strong>
$ <strong>make</strong>
</pre><p>
Building is done using a standard ARM gcc cross-compiler (arm-elf or arm-none-eabi for instance), see the <a href="http://github.com/esden/summon-arm-toolchain">summon-arm-toolchain</a> script for the basic idea about how to build one.</p>
<p>The current status of the library is listed <a href="http://sourceforge.net/apps/mediawiki/libopenstm32/index.php?title=Status">in the wiki</a>. In short: some parts of GPIOs, UART, I2C, SPI, RCC, Timers and some other basic stuff works and has register definitions (and some convenience functions, but not too many, yet). We're working on adding support for more subsystems, any help with this is highly welcome of course! Luckily ARM stuff (and especially the STM32) has pretty good (and freely available) datasheets.</p>
<p>We have a few simple example programs, e.g. for the <a href="http://olimex.com/dev/stm32-h103.html">Olimex STM32-H103 eval board</a> (see photo). JTAG flashing can be done using <a href="http://hermann-uwe.de/blog/openocd-a-free-software-jtag-utility-with-arm-and-mips-support">OpenOCD</a>, for example.</p>
<p>Feel free to join <a href="http://sourceforge.net/mail/?group_id=269563">the mailing lists</a> and/or the <strong><a href="irc://chat.freenode.net/libopenstm32">#libopenstm32</a></strong> IRC channel on <a href="http://www.freenode.net">Freenode</a>.</p>
<p>The current list of projects where we plan to use this library is <a href="http://open-bldc.org">Open-BLDC</a> (an Open Hardware / Free Software brushless motor controller project by <a href="http://www.esden.net">Piotr Esden-Tempski</a>), <a href="http://openmulticopter.org">openmulticopter</a> (an Open Hardware / Free Software quadrocopter/UAV project), <a href="http://randomprojects.org/wiki/Openbiosprog">openbiosprog</a> (an Open Hardware / Free Software BIOS chip flash programmer I'm in the process of designing using <a href="http://www.gpleda.org">gEDA/PCB</a>), and probably a few more.</p>
<p>If you plan to work on any new (or existing) microcontroller hardware- or software-projects involving an STM32 microcontroller, please consider using libopenstm32 (it's the only Free Software library for this microcontroller family I know of) and help us make it better and more complete. Thanks!</p>
http://hermann-uwe.de/blog/libopenstm32-a-free-software-firmware-library-for-stm32-arm-cortex-m3-microcontrollers#commentsarmcortexcortex-m3embeddedfirmwarefreesoftwaregplgpl3ststmstm32Thu, 04 Mar 2010 14:20:36 +0100Uwe Hermann1540 at http://hermann-uwe.de