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 d65fe652eb more info in readme 10 years ago
.settings Added files for DS-5 project 10 years ago
lib Source import 10 years ago
.cproject Added files for DS-5 project 10 years ago
.gitignore Added files for DS-5 project 10 years ago
.project Added files for DS-5 project 10 years ago
LICENSE Source import 10 years ago
Makefile Removed confusing comments from Makefile 10 years ago
README.md more info in readme 10 years ago
main.asm Added files for DS-5 project 10 years ago
project.uvoptx Added KEIL project files 10 years ago
project.uvprojx Added KEIL project files 10 years ago
startup_stm32l100xc.s Source import 10 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.