Кому нужно open source GPL3 и под линукс, то советую посмотреть в сторону
http://www.chibios.org.
Учтите что STM32 standard peripheral library не GPL!
http://ru.wikipedia.org/wiki/STM32F10x_ ... ls_LibraryДля ubuntu компилятор берём тут
https://launchpad.net/gcc-arm-embeddedпрошивать проще всего через SWD, под линукс есть st-link
https://github.com/texane/stlinkSWD есть на всех отладочных платах STM32 discovery.
он так же поддерживает отладку на процессоре.
Его же можно использовать и для прошивки внешних контроллеров
http://microtechnics.ru/programmator-mi ... discovery/Так что под линукс, хотя бы одну плату STM32 discovery лучше купить, если конечно у вас нет подходящего J-Tag программатора.
Кому нужна полноценная IDE можно почитать как настроить Eclipse
http://www.chibios.org/dokuwiki/doku.ph ... eclipse1&s[]=eclipse#installation
Я лично использую geany + консольный отладчик gdb.
Стоит отметить что chibios не совместима с STM32 standard peripheral library , поэтому за основу,при программировании, лучше всего брать reference manual и документацию на chibios, а не примеры в интернете.
По примерам можно понять общую логику, но из за того что конфигурация регистров описывается разными структурами, перенести чужие примеры в chibios становится сложно.
Полезности для линукса:
Если процессор STM32 натыкается на некорректный указатель то он вываливается в hardfault обработчик, но gdb не понимает этого и в результате bt теряет историю.
Чтобы исправить это нужно в main.c добавить эти строчки.
- Код: Выделить всё • Развернуть
void **HARDFAULT_PSP;
register void *stack_pointer asm("sp");
void HardFaultVector()
{
// Hijack the process stack pointer to make backtrace work
asm("mrs %0, psp" : "=r"(HARDFAULT_PSP) : :);
stack_pointer = HARDFAULT_PSP;
while(1);
}
источник
http://koti.kapsi.fi/jpa/stuff/other/st ... trace.html