Bootstrap and definition library for programming STM32L100RC in ARM assembler. This was a class project to learn ARM assembly
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
Ondřej Hruška f1368c06c5 Converted library files DESC to english 9 years ago
.settings Added files for DS-5 project 9 years ago
lib Converted library files DESC to english 9 years ago
.cproject Started moving stuff from INI_REGS to separate periph files. Cleaning. 9 years ago
.gitignore Added files for DS-5 project 9 years ago
.project Removed terminal colors from makefile messages, because DS-5 doesn't support them. 9 years ago
LICENSE Converted part of header comments to english, changed license text 9 years ago
Makefile Improved build flags for better debug 9 years ago
README.md more info in readme 9 years ago
main.asm fixed formatting in main 9 years ago
project.uvoptx Added KEIL project files 9 years ago
project.uvprojx Added KEIL project files 9 years ago
startup_stm32l100xc.s Source import 9 years ago

README.md

Bootstrap projekt a asm knihovna pro STM32L100RC

Projekt je vyvíjen na Katedře měření ČVUT FEL v Praze a bude sloužit pro předmět NVS (příp. MMP).

  • Ukázkový program je založený na starším kódu © Michal Tomáš, 2010.
  • Základ knihovny a projektu © Petr Douša, 2015.
  • Další úpravy knihovny, Makefile © Ondřej Hruška, 2015.

Kód je volně šiřitelný za podmínky zachování hlaviček souborů.

Popis projektu

Jedná se o knihovnu definic adres registrů a bitů dle CMSIS a datasheetů spolu s ukázkovým programem, který knihovnu využívá (a demonstruje nastavení RCC a pinů).

Cílový hardware

Projekt je určen pro procesor STM32L100RC v kitu STM32L100 Discovery, který se připojí přes USB.

Knihovna

Assemblerová knihovna sestává ze sady souborů ve složce lib/ a startup scriptu startup_stm32l100xc.s (ten pochází z instalace Keilu, dle hlavičky je přímo od ST).

Soubor INI_REGS.s obsahuje definice adres registrů, soubory INI_BITS_*.s pak bitové masky a hodnoty jednotlivých registrů.

Soubor INI_BB.s poskutuje adresy pro bit-banding.

Soubory ze složky lib/ je nutné naincludovat do hlavního programu, např.

        ; Register addresses
        GET        lib/INI_REGS.s
        GET        lib/INI_BB.s    ; Must be included *after* INI_REGS!

        ; Bit presets
        GET        lib/INI_BITS_GPIO.s
        GET        lib/INI_BITS_RCC.s
        GET        lib/INI_BITS_FLASH.s

Formátování

Soubory jsou formátovány se šířkou tabulátoru 4 znaky, komentáře jsou anglicky nebo bez diakritiky.

Soubory mají Windowsové konce řádků, aby nebyl problém s Keilem (a většina lidí to bude používat pod Windows).

Jak s projektem pracovat

Windows - Keil MDK-ARM

Projekt je primárně určen pro µVision MDK-ARM v.5, asm soubory fungují i ve verzi 4 (ale projekt bude potřeba upravit).

Keil je primárně pro Windows, pod Wine funguje, ale nedokáže přistupovat na ST-Link.

Ve Vitualboxu funguje včetne ST-Linku, ovšem pouze s verzí 2.

Linux

Kompilace a nahrávání probíhá pomocí Makefile v projektu.

Napřed je potřeba nainstalovat následující software:

  1. Pomocí wine nainstalovat Keil (do ~/.wine) - z jeho složky se berou binutils a assembler, nejde je přesunout kvůli licenčním souborům. Teoreticky by mohlo jít použít linuxové verze, pokud zjistíte jak nastavit, aby používaly licenční soubory z Keilu (omezení na 32 kB).

  2. Zkontrolovat v Makefile, že proměnná WINEPREFIX obsahuje správnou cestu ke složce s exe soubory z Keilu, případně opravit. Pokud používáte nativní linuxové verze těchto programů, upravte náležitě Makefile.

  3. Pro plnou funkčnost se hodí doinstalovat arm-none-eabi-binutils, ale není nutné - jen pro make disasm

  4. Dále je potřeba nainstalovat stlink pro komunikaci s deskou, linuxová verze je volně dostupná.

Tip: Uživatelé ArchLinuxu vše najdou v oficiálních repozitářích.

V čem editovat

Jako editor lze použít Keil pod wine, libovolný textový editor nebo ARM IDE DS-5 Community Edition - bohužel nedovoluje nic kompilovat, ale má dobru podporu pro assembler a kontextovou nápovědu.

DS-5 podporuje Makefile, ale není to nic extra - lepší make spouštět v terminálu.