Gemini PDA 4G >> Android >> Termux

使用openocd燒錄STM32F103


led.S

  .thumb
  .syntax unified
  .equ GPIOC_CRH,   0x40011004
  .equ GPIOC_ODR,   0x4001100c
  .equ RCC_APB2ENR, 0x40021018
  .equ STACKINIT,   0x20005000
  .equ LEDDELAY,    800000
 
  .global _start
  .section .text
  .org 0x0
  .word STACKINIT
  .word _start
 
  .org 0x100
  .thumb_func
_start:
  ldr r6, =RCC_APB2ENR
  mov r0, 0x10
  str r0, [r6]
  ldr r6, =GPIOC_CRH
  ldr r0, =0x44344444
  str r0, [r6]
  mov r2, 0
  mov r3, 0x2000
  ldr r6, =GPIOC_ODR
loop:
  str r2, [r6]
  ldr r1, =LEDDELAY
delay1:
  subs r1, 1
  bne delay1
  str r3, [r6]
  ldr r1, =LEDDELAY
delay2:
  subs r1, 1
  bne delay2
  b loop

led.ld

SECTIONS
{
  . = 0x0;
  .text : 
  {
    *(.text)
  }
  .data : 
  {
    *(.data)
    *(.rom)
  }
  . = 0x20000000;
  .ram : { *(.ram) }
 
  .bss : 
  {
    *(.bss)
    *(.ram)
  }
}

Makefile

all:
  arm-none-eabi-as -mcpu=cortex-m3 -mthumb -mthumb-interwork -o led.o led.S
  arm-none-eabi-ld -T led.ld -o led.elf led.o
  arm-none-eabi-objcopy -O binary led.elf led.bin
clean:
  rm -rf led.o
  rm -rf led.elf
  rm -rf led.bin

編譯(Linux Deploy)

$ make
  arm-none-eabi-as -mcpu=cortex-m3 -mthumb -mthumb-interwork -o led.o led.S
  arm-none-eabi-ld -T led.ld -o led.elf led.o
  arm-none-eabi-objcopy -O binary led.elf led.bin

接腳:

ST-Link V2STM32
GNDGND
3.3V3.3V
SWCLKSWCLK
SWDIOSWDIO



燒錄

$ tsudo openocd -f /data/data/com.termux/files/usr/share/openocd/scripts/interface/stlink-v2.cfg -f /data/data/com.termux/files/usr/share/openocd/scripts/target/stm32f1x.cfg

$ telnet localhost 4444
> halt
> flash erase_sector 0 0 0
> flash write_bank 0 /data/data/com.termux/files/home/led.bin 0
> reset init
> resume 

完成


返回上一頁