MK20DX256 >> Assembly

LED


參考資訊:
1. ds_pdf
2. pm_pdf
3. example

LED連接到PTC-5


Disable Watchdog


Port Clock


Enable Port


Port Direction


Port Output


main.s

  .equiv GPIOC_BASE,   0x400ff080
  .equiv GPIO_PDDR,    0x14
  .equiv GPIO_PDOR,    0x00

  .equiv SIM_BASE,     0x40047000
  .equiv SIM_SCGC5,    0x1038

  .equiv WDOG_BASE,    0x40052000
  .equiv WDOG_STCTRLH, 0x00
  .equiv WDOG_UNLOCK,  0x0e

  .equiv PORTC_BASE,   0x4004b000
  .equiv PORTC_PCR5,   0x14

  .thumb
  .cpu cortex-m4
  .syntax unified
 
  .global _start
 
  .text
  .org 0x0000
_start:
  .word 0x20008000
  .word reset
 
  .org 0x0100
  .thumb_func
reset:
  ldr r0, =WDOG_BASE
  ldr r1, =0xc520
  strh r1, [r0, #WDOG_UNLOCK]
  ldr r1, =0xd928
  strh r1, [r0, #WDOG_UNLOCK]
  ldr r1, =0x0000
  strh r1, [r0, #WDOG_STCTRLH]

  ldr r0, =SIM_BASE + SIM_SCGC5
  ldr r1, =(1 << 11)
  str r1, [r0]

  ldr r0, =PORTC_BASE
  ldr r1, =(1 << 8)
  str r1, [r0, #PORTC_PCR5]

  ldr r0, =GPIOC_BASE
  ldr r1, =(1 << 5)
  str r1, [r0, #GPIO_PDDR]

0:
  eor r1, #(1 << 5)
  str r1, [r0, #GPIO_PDOR]
  ldr r2, =1000000
1:
  subs r2, #1
  bne 1b
  b 0b
  .end

main.ld

MEMORY {
  FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 512K
  SRAM (W!RX) : ORIGIN = 0x20000000, LENGTH = 64K
}

SECTIONS {
  .text   : { *(.text*) } > FLASH
  .rodata : { *(.rodata*) } > FLASH
  .bss    : { *(.bss*) } > FLASH
}

Makefile

all:
	arm-none-eabi-as -mcpu=cortex-m4 main.s -o main.o
	arm-none-eabi-ld -T main.ld -o main.elf main.o
	arm-none-eabi-objcopy -O ihex main.elf main.hex 

flash:
	sudo teensy_loader_cli --mcu=mk20dx256 -w main.hex

clean:
	rm -rf main.o main.elf main.hex

編譯、燒錄
1. 連接開發板至PC
2. 按一下燒錄按鍵
3. 執行如下命令

$ make
  arm-none-eabi-as -mcpu=cortex-m4 main.s -o main.o
  arm-none-eabi-ld -T main.ld -o main.elf main.o
  arm-none-eabi-objcopy -O ihex main.elf main.hex

$ make flash
  sudo teensy_loader_cli --mcu=mk20dx256 -w main.hex

完成


返回上一頁