瀏覽代碼

add flash-openocd target. correct ek-tm4c123 button state

hathach 4 年之前
父節點
當前提交
91646d039c
共有 4 個文件被更改,包括 33 次插入28 次删除
  1. 7 0
      examples/device/99-tinyusb.rules
  2. 9 4
      examples/rules.mk
  3. 12 23
      hw/bsp/ek-tm4c123gxl/board.mk
  4. 5 1
      hw/bsp/ek-tm4c123gxl/tm4c123gxl.c

+ 7 - 0
examples/device/99-tinyusb.rules

@@ -12,3 +12,10 @@ ATTRS{idVendor}=="cafe", MODE="0666", GROUP="dialout"
 
 # Rule to blacklist TinyUSB example from being manipulated by ModemManager.
 SUBSYSTEMS=="usb", ATTRS{idVendor}=="cafe", ENV{ID_MM_DEVICE_IGNORE}="1"
+
+# Xplained Pro SamG55 Device
+SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2111", MODE="0666", GROUP="users", ENV{ID_MM_DEVICE_IGNORE}="1"
+SUBSYSTEMS=="tty", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2111", MODE="0666", GROUP="users", ENV{ID_MM_DEVICE_IGNORE}="1"
+
+# TI Stellaris/Tiva-C Launchpad ICDI
+SUBSYSTEM=="usb", ATTRS{idVendor}=="1cbe", ATTRS{idProduct}=="00fd", MODE="0666"

+ 9 - 4
examples/rules.mk

@@ -158,13 +158,14 @@ endif
 # Flash Targets
 # ---------------------------------------
 
-# Flash binary using Jlink
+# Jlink binary
 ifeq ($(OS),Windows_NT)
   JLINKEXE = JLink.exe
 else
   JLINKEXE = JLinkExe
 endif
 
+# Jlink Interface
 JLINK_IF ?= swd
 
 # Flash using jlink
@@ -177,18 +178,22 @@ flash-jlink: $(BUILD)/$(PROJECT).hex
 	@echo exit >> $(BUILD)/$(BOARD).jlink
 	$(JLINKEXE) -device $(JLINK_DEVICE) -if $(JLINK_IF) -JTAGConf -1,-1 -speed auto -CommandFile $(BUILD)/$(BOARD).jlink
 
-# flash STM32 MCU using stlink with STM32 Cube Programmer CLI
+# Flash STM32 MCU using stlink with STM32 Cube Programmer CLI
 flash-stlink: $(BUILD)/$(PROJECT).elf
 	STM32_Programmer_CLI --connect port=swd --write $< --go
 
-# flash with pyocd
+# Flash using pyocd
 PYOCD_OPTION ?=
 flash-pyocd: $(BUILD)/$(PROJECT).hex
 	pyocd flash -t $(PYOCD_TARGET) $(PYOCD_OPTION) $<
 	pyocd reset -t $(PYOCD_TARGET)
 
-# flash with Black Magic Probe
+# Flash using openocd
+OPENOCD_OPTION ?=
+flash-openocd: $(BUILD)/$(PROJECT).elf
+	openocd $(OPENOCD_OPTION) -c "program $< verify reset exit"
 
+# flash with Black Magic Probe
 # This symlink is created by https://github.com/blacksphere/blackmagic/blob/master/driver/99-blackmagic.rules
 BMP ?= /dev/ttyBmpGdb
 

+ 12 - 23
hw/bsp/ek-tm4c123gxl/board.mk

@@ -1,4 +1,3 @@
-
 DEPS_SUBMODULES += hw/mcu/ti
 
 CFLAGS += \
@@ -12,39 +11,29 @@ CFLAGS += \
   -uvectors \
   -DTM4C123GH6PM
   
-# lpc_types.h cause following errors
-CFLAGS += -Wno-error=strict-prototypes
+# mcu driver cause following warnings
+CFLAGS += -Wno-error=strict-prototypes -Wno-error=cast-qual
 
 MCU_DIR=hw/mcu/ti/tm4c123xx/
 
-CMSIS=$(TOP)/hw/mcu/ti/tm4c123xx/CMSIS/5.7.0/CMSIS/Include
-
-TI_HDR=$(TOP)/hw/mcu/ti/tm4c123xx/Include/TM4C123/
-
 # All source paths should be relative to the top level.
-
-LD_FILE = hw/bsp/$(BOARD)/tm4c123.ld
+LD_FILE = $(BOARD_PATH)/tm4c123.ld
 
 INC += \
-     	$(CMSIS) \
-      $(TI_HDR) \
-      $(TOP)/hw/bsp 
-
+	$(TOP)/$(MCU_DIR)/CMSIS/5.7.0/CMSIS/Include \
+	$(TOP)/$(MCU_DIR)/Include/TM4C123 \
+	$(TOP)/hw/bsp
 
 SRC_C += \
-         $(MCU_DIR)/Source/system_TM4C123.c \
-         $(MCU_DIR)/Source/GCC/tm4c123_startup.c 
-
-# For TinyUSB port source
-VENDOR = ti
-CHIP_FAMILY = tm4c123xx
+	$(MCU_DIR)/Source/system_TM4C123.c \
+	$(MCU_DIR)/Source/GCC/tm4c123_startup.c
 
 # For freeRTOS port source
 FREERTOS_PORT = ARM_CM4F
 
 # For flash-jlink target
-JLINK_DEVICE = LPC1769
+JLINK_DEVICE = TM4C123GH6PM
 
-# flash using jlink
-flash: $(BUILD)/$(PROJECT).elf
-	openocd -f board/ti_ek-tm4c123gxl.cfg  -c "program $< verify reset exit"
+# flash using openocd
+OPENOCD_OPTION = -f board/ti_ek-tm4c123gxl.cfg
+flash: flash-openocd

+ 5 - 1
hw/bsp/ek-tm4c123gxl/tm4c123gxl.c

@@ -3,9 +3,12 @@
 
 #define BOARD_UART            UART0
 #define BOARD_UART_PORT       GPIOA
+
 #define BOARD_BTN_PORT        GPIOF
 #define BOARD_BTN             4
 #define BOARD_BTN_Msk         (1u<<4)
+#define BUTTON_STATE_ACTIVE   0
+
 #define LED_PORT              GPIOF
 #define LED_PIN_RED           1
 #define LED_PIN_BLUE          2
@@ -125,7 +128,8 @@ void board_led_write(bool state)
 
 uint32_t board_button_read(void)
 {
-    return ReadGPIOPin(BOARD_BTN_PORT, BOARD_BTN_Msk);
+    uint32_t gpio_value = ReadGPIOPin(BOARD_BTN_PORT, BOARD_BTN_Msk);
+    return BUTTON_STATE_ACTIVE ? gpio_value : !gpio_value;
 }
 
 int board_uart_write(void const* buf, int len)