From 553dc382661879e33c4970b4fb5babfc630432c9 Mon Sep 17 00:00:00 2001 From: Martin Mares Date: Thu, 6 May 2021 15:21:02 +0200 Subject: [PATCH] README --- BOOT | 45 +++++++++++++++++++++++++++++++++++++++++++++ README | 48 ++++-------------------------------------------- 2 files changed, 49 insertions(+), 44 deletions(-) create mode 100644 BOOT diff --git a/BOOT b/BOOT new file mode 100644 index 0000000..55b82eb --- /dev/null +++ b/BOOT @@ -0,0 +1,45 @@ +Různé způsoby, jak STM32 programovat: + +(1) ST-Link (USB <-> SWDIO/SWDCK) + + • Klient: stm/stlink/st-flash + + • Asi nejspolehlivější metoda. Jen se občas stane, že se po + naprogramování procesor nezresetuje pořádně, takže program + nenaběhne. Explicitní zresetování st-flashem pomůže. + +(2) Sériový boot-loader v ROM + + • Aktivuje se nastavením BOOT0=1, BOOT1=0. + + • Na STM32F103 komunikuje po USART1. Může se hodit připojit DTR + na RESET, aby se dalo resetovat na dálku. + + • Na některých BluePillech nefunguje spolehlivě: po resetu + se neprobudí, je potřeba power cycle. Na klonech od RobotDynu + vypadá funkčně. + + • Pozor na to, že příkaz "goto" sice skočí do flashnutého kódu, + ale od adresy 0 je stále aliasován boot-loader, takže je potřeba + před povolením přerušení přesunout interrupt vector zápisem + do SCB_VTOR. + + • Klient: stm/stm32flash/stm32flash + +(3) Flashnutý boot-loader s USB DFU + + • Flashnout stm/STM32duino-bootloader/bootloader_only_binaries/ + (pro BluePill je správná verze generic_boot20_pc13.bin) + + • Na GPIO B2 očekává tlačítko aktivní v 1 + (to je tentýž pin, kde se při resetu čte BOOT1). + + • Už máme vlastní verzi, viz lib/dfu-bootloader.c. Oproti tomu + původnímu má rozumné checksumy a správně programuje PLL, takže + se nezasekává. + + • Klient: dfu-util (Debian má zabalíčkované) + + • Pozor, programy pak musí začínat od adresy 0x8002000 – + to se upravuje v linker scriptu. Boot-loader při spouštění + programu sám přesměruje interrupt vektor na tuto adresu. diff --git a/README b/README index 55b82eb..9c4d458 100644 --- a/README +++ b/README @@ -1,45 +1,5 @@ -Různé způsoby, jak STM32 programovat: +This is a repository of home automation software and hardware +designs developed by Martin Mareš for his personal use. -(1) ST-Link (USB <-> SWDIO/SWDCK) - - • Klient: stm/stlink/st-flash - - • Asi nejspolehlivější metoda. Jen se občas stane, že se po - naprogramování procesor nezresetuje pořádně, takže program - nenaběhne. Explicitní zresetování st-flashem pomůže. - -(2) Sériový boot-loader v ROM - - • Aktivuje se nastavením BOOT0=1, BOOT1=0. - - • Na STM32F103 komunikuje po USART1. Může se hodit připojit DTR - na RESET, aby se dalo resetovat na dálku. - - • Na některých BluePillech nefunguje spolehlivě: po resetu - se neprobudí, je potřeba power cycle. Na klonech od RobotDynu - vypadá funkčně. - - • Pozor na to, že příkaz "goto" sice skočí do flashnutého kódu, - ale od adresy 0 je stále aliasován boot-loader, takže je potřeba - před povolením přerušení přesunout interrupt vector zápisem - do SCB_VTOR. - - • Klient: stm/stm32flash/stm32flash - -(3) Flashnutý boot-loader s USB DFU - - • Flashnout stm/STM32duino-bootloader/bootloader_only_binaries/ - (pro BluePill je správná verze generic_boot20_pc13.bin) - - • Na GPIO B2 očekává tlačítko aktivní v 1 - (to je tentýž pin, kde se při resetu čte BOOT1). - - • Už máme vlastní verzi, viz lib/dfu-bootloader.c. Oproti tomu - původnímu má rozumné checksumy a správně programuje PLL, takže - se nezasekává. - - • Klient: dfu-util (Debian má zabalíčkované) - - • Pozor, programy pak musí začínat od adresy 0x8002000 – - to se upravuje v linker scriptu. Boot-loader při spouštění - programu sám přesměruje interrupt vektor na tuto adresu. +There is no documentation provided, but feel free to draw any inspiration. +Unless declared otherwise, everything is licensed under the GNU GPL v2. -- 2.39.5