mirror of
https://github.com/hathach/tinyusb.git
synced 2025-04-16 05:42:56 +00:00
commit
b7ad49332c
@ -40,12 +40,12 @@
|
|||||||
/** \defgroup config_host_class Class Driver
|
/** \defgroup config_host_class Class Driver
|
||||||
* \brief For each Class Driver a value of 1 means enable, value of 0 mean disable
|
* \brief For each Class Driver a value of 1 means enable, value of 0 mean disable
|
||||||
* @{ */
|
* @{ */
|
||||||
#define CFG_TUSB_HOST_HUB ///< Enable Hub Class
|
#define CFG_TUH_HUB ///< Enable Hub Class
|
||||||
#define CFG_TUSB_HOST_HID_KEYBOARD ///< Enable HID Class for Keyboard
|
#define CFG_TUH_HID_KEYBOARD ///< Enable HID Class for Keyboard
|
||||||
#define CFG_TUSB_HOST_HID_MOUSE ///< Enable HID Class for Mouse
|
#define CFG_TUH_HID_MOUSE ///< Enable HID Class for Mouse
|
||||||
#define CFG_TUSB_HOST_HID_GENERIC ///< Enable HID Class for Generic (not supported yet)
|
#define CFG_TUSB_HOST_HID_GENERIC ///< Enable HID Class for Generic (not supported yet)
|
||||||
#define CFG_TUSB_HOST_MSC ///< Enable Mass Storage Class (SCSI subclass only)
|
#define CFG_TUH_MSC ///< Enable Mass Storage Class (SCSI subclass only)
|
||||||
#define CFG_TUSB_HOST_CDC ///< Enable Virtual Serial (Communication Device Class)
|
#define CFG_TUH_CDC ///< Enable Virtual Serial (Communication Device Class)
|
||||||
/** @} */
|
/** @} */
|
||||||
|
|
||||||
/** @} */ // group Host
|
/** @} */ // group Host
|
@ -18,10 +18,12 @@
|
|||||||
arm_target_debug_interface_type="ADIv5"
|
arm_target_debug_interface_type="ADIv5"
|
||||||
arm_target_device_name="LPC11U68"
|
arm_target_device_name="LPC11U68"
|
||||||
arm_target_interface_type="SWD"
|
arm_target_interface_type="SWD"
|
||||||
|
build_treat_warnings_as_errors="Yes"
|
||||||
c_preprocessor_definitions="__LPC11U68__;__LPC1100_FAMILY;__LPC11U00_SUBFAMILY;ARM_MATH_CM0PLUS;FLASH_PLACEMENT=1;CORE_M0PLUS;BOARD_LPCXPRESSO11U68;CFG_TUSB_MCU=OPT_MCU_LPC11UXX;CFG_TUSB_MEM_SECTION= __attribute__((section(".bss3")));CFG_TUSB_MEM_ALIGN=__attribute__ ((aligned(64)))"
|
c_preprocessor_definitions="__LPC11U68__;__LPC1100_FAMILY;__LPC11U00_SUBFAMILY;ARM_MATH_CM0PLUS;FLASH_PLACEMENT=1;CORE_M0PLUS;BOARD_LPCXPRESSO11U68;CFG_TUSB_MCU=OPT_MCU_LPC11UXX;CFG_TUSB_MEM_SECTION= __attribute__((section(".bss3")));CFG_TUSB_MEM_ALIGN=__attribute__ ((aligned(64)))"
|
||||||
c_user_include_directories="../../src;$(rootDir)/hw;$(rootDir)/src;$(lpcDir)/inc"
|
c_user_include_directories="../../src;$(rootDir)/hw;$(rootDir)/src;$(lpcDir)/inc"
|
||||||
debug_register_definition_file="$(ProjectDir)/LPC11U6x_Registers.xml"
|
debug_register_definition_file="$(ProjectDir)/LPC11U6x_Registers.xml"
|
||||||
debug_target_connection="J-Link"
|
debug_target_connection="J-Link"
|
||||||
|
gcc_enable_all_warnings="Yes"
|
||||||
gcc_entry_point="Reset_Handler"
|
gcc_entry_point="Reset_Handler"
|
||||||
linker_memory_map_file="$(ProjectDir)/LPC11U68_MemoryMap.xml"
|
linker_memory_map_file="$(ProjectDir)/LPC11U68_MemoryMap.xml"
|
||||||
linker_section_placement_file="$(ProjectDir)/flash_placement.xml"
|
linker_section_placement_file="$(ProjectDir)/flash_placement.xml"
|
||||||
|
@ -17,10 +17,12 @@
|
|||||||
arm_target_debug_interface_type="ADIv5"
|
arm_target_debug_interface_type="ADIv5"
|
||||||
arm_target_device_name="LPC1347"
|
arm_target_device_name="LPC1347"
|
||||||
arm_target_interface_type="SWD"
|
arm_target_interface_type="SWD"
|
||||||
|
build_treat_warnings_as_errors="Yes"
|
||||||
c_preprocessor_definitions="__LPC1347FBD64__;__LPC1300_FAMILY;__LPC134x_SUBFAMILY;ARM_MATH_CM3;FLASH_PLACEMENT=1;CORE_M3;BOARD_LPCXPRESSO1347;CFG_TUSB_MCU=OPT_MCU_LPC13XX;CFG_TUSB_MEM_SECTION= __attribute__((section(".bss3")));CFG_TUSB_MEM_ALIGN=__attribute__ ((aligned(64)))"
|
c_preprocessor_definitions="__LPC1347FBD64__;__LPC1300_FAMILY;__LPC134x_SUBFAMILY;ARM_MATH_CM3;FLASH_PLACEMENT=1;CORE_M3;BOARD_LPCXPRESSO1347;CFG_TUSB_MCU=OPT_MCU_LPC13XX;CFG_TUSB_MEM_SECTION= __attribute__((section(".bss3")));CFG_TUSB_MEM_ALIGN=__attribute__ ((aligned(64)))"
|
||||||
c_user_include_directories="../../src;$(rootDir)/hw;$(rootDir)/src;$(lpcDir)/inc"
|
c_user_include_directories="../../src;$(rootDir)/hw;$(rootDir)/src;$(lpcDir)/inc"
|
||||||
debug_register_definition_file="$(ProjectDir)/LPC13Uxx_Registers.xml"
|
debug_register_definition_file="$(ProjectDir)/LPC13Uxx_Registers.xml"
|
||||||
debug_target_connection="J-Link"
|
debug_target_connection="J-Link"
|
||||||
|
gcc_enable_all_warnings="Yes"
|
||||||
gcc_entry_point="Reset_Handler"
|
gcc_entry_point="Reset_Handler"
|
||||||
linker_memory_map_file="$(ProjectDir)/LPC1347FBD64_MemoryMap.xml"
|
linker_memory_map_file="$(ProjectDir)/LPC1347FBD64_MemoryMap.xml"
|
||||||
linker_section_placement_file="$(ProjectDir)/flash_placement.xml"
|
linker_section_placement_file="$(ProjectDir)/flash_placement.xml"
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
arm_target_debug_interface_type="ADIv5"
|
arm_target_debug_interface_type="ADIv5"
|
||||||
arm_target_device_name="LPC1769"
|
arm_target_device_name="LPC1769"
|
||||||
arm_target_interface_type="SWD"
|
arm_target_interface_type="SWD"
|
||||||
build_treat_warnings_as_errors="No"
|
build_treat_warnings_as_errors="Yes"
|
||||||
c_preprocessor_definitions="LPC175x_6x;__LPC1700_FAMILY;__LPC176x_SUBFAMILY;ARM_MATH_CM3;FLASH_PLACEMENT=1;CORE_M3;BOARD_LPCXPRESSO1769;CFG_TUSB_MCU=OPT_MCU_LPC175X_6X"
|
c_preprocessor_definitions="LPC175x_6x;__LPC1700_FAMILY;__LPC176x_SUBFAMILY;ARM_MATH_CM3;FLASH_PLACEMENT=1;CORE_M3;BOARD_LPCXPRESSO1769;CFG_TUSB_MCU=OPT_MCU_LPC175X_6X"
|
||||||
c_user_include_directories="../../src;$(rootDir)/hw;$(rootDir)/src;$(lpcDir)/inc"
|
c_user_include_directories="../../src;$(rootDir)/hw;$(rootDir)/src;$(lpcDir)/inc"
|
||||||
debug_register_definition_file="LPC176x5x_Registers.xml"
|
debug_register_definition_file="LPC176x5x_Registers.xml"
|
||||||
|
@ -17,10 +17,12 @@
|
|||||||
arm_target_debug_interface_type="ADIv5"
|
arm_target_debug_interface_type="ADIv5"
|
||||||
arm_target_device_name="LPC1857"
|
arm_target_device_name="LPC1857"
|
||||||
arm_target_interface_type="SWD"
|
arm_target_interface_type="SWD"
|
||||||
|
build_treat_warnings_as_errors="Yes"
|
||||||
c_preprocessor_definitions="LPC18xx;__LPC1800_FAMILY;__LPC185x_SUBFAMILY;ARM_MATH_CM3;FLASH_PLACEMENT=1;CORE_M3;BOARD_MCB1800;CFG_TUSB_MCU=OPT_MCU_LPC18XX;CFG_TUSB_MEM_SECTION= __attribute__((section(".bss2")))"
|
c_preprocessor_definitions="LPC18xx;__LPC1800_FAMILY;__LPC185x_SUBFAMILY;ARM_MATH_CM3;FLASH_PLACEMENT=1;CORE_M3;BOARD_MCB1800;CFG_TUSB_MCU=OPT_MCU_LPC18XX;CFG_TUSB_MEM_SECTION= __attribute__((section(".bss2")))"
|
||||||
c_user_include_directories="../../src;$(rootDir)/hw;$(rootDir)/src;$(lpcDir)//inc;$(lpcDir)//inc/config_18xx"
|
c_user_include_directories="../../src;$(rootDir)/hw;$(rootDir)/src;$(lpcDir)//inc;$(lpcDir)//inc/config_18xx"
|
||||||
debug_register_definition_file="$(ProjectDir)/LPC18xx_Registers.xml"
|
debug_register_definition_file="$(ProjectDir)/LPC18xx_Registers.xml"
|
||||||
debug_target_connection="J-Link"
|
debug_target_connection="J-Link"
|
||||||
|
gcc_enable_all_warnings="Yes"
|
||||||
gcc_entry_point="Reset_Handler"
|
gcc_entry_point="Reset_Handler"
|
||||||
linker_memory_map_file="$(ProjectDir)/LPC1857_MemoryMap.xml"
|
linker_memory_map_file="$(ProjectDir)/LPC1857_MemoryMap.xml"
|
||||||
linker_section_placement_file="$(ProjectDir)/flash_placement.xml"
|
linker_section_placement_file="$(ProjectDir)/flash_placement.xml"
|
||||||
|
@ -18,10 +18,12 @@
|
|||||||
arm_target_debug_interface_type="ADIv5"
|
arm_target_debug_interface_type="ADIv5"
|
||||||
arm_target_device_name="LPC4088"
|
arm_target_device_name="LPC4088"
|
||||||
arm_target_interface_type="SWD"
|
arm_target_interface_type="SWD"
|
||||||
|
build_treat_warnings_as_errors="Yes"
|
||||||
c_preprocessor_definitions="CORE_M4;__LPC4000_FAMILY;__LPC408x_SUBFAMILY;ARM_MATH_CM4;FLASH_PLACEMENT=1;BOARD_EA4088QS;CFG_TUSB_MCU=OPT_MCU_LPC40XX;CFG_TUSB_MEM_SECTION= __attribute__((section(".bss2")))"
|
c_preprocessor_definitions="CORE_M4;__LPC4000_FAMILY;__LPC408x_SUBFAMILY;ARM_MATH_CM4;FLASH_PLACEMENT=1;BOARD_EA4088QS;CFG_TUSB_MCU=OPT_MCU_LPC40XX;CFG_TUSB_MEM_SECTION= __attribute__((section(".bss2")))"
|
||||||
c_user_include_directories="../../src;$(rootDir)/hw;$(rootDir)/src;$(lpcDir)/inc"
|
c_user_include_directories="../../src;$(rootDir)/hw;$(rootDir)/src;$(lpcDir)/inc"
|
||||||
debug_register_definition_file="$(ProjectDir)/LPC408x_7x_Registers.xml"
|
debug_register_definition_file="$(ProjectDir)/LPC408x_7x_Registers.xml"
|
||||||
debug_target_connection="J-Link"
|
debug_target_connection="J-Link"
|
||||||
|
gcc_enable_all_warnings="Yes"
|
||||||
gcc_entry_point="Reset_Handler"
|
gcc_entry_point="Reset_Handler"
|
||||||
linker_memory_map_file="$(ProjectDir)/LPC4088FBD208_MemoryMap.xml"
|
linker_memory_map_file="$(ProjectDir)/LPC4088FBD208_MemoryMap.xml"
|
||||||
linker_section_placement_file="$(ProjectDir)/flash_placement.xml"
|
linker_section_placement_file="$(ProjectDir)/flash_placement.xml"
|
||||||
|
@ -23,6 +23,7 @@
|
|||||||
c_user_include_directories="../../src;$(rootDir)/hw;$(rootDir)/src;$(lpcDir)//inc;$(lpcDir)//inc/config_43xx"
|
c_user_include_directories="../../src;$(rootDir)/hw;$(rootDir)/src;$(lpcDir)//inc;$(lpcDir)//inc/config_43xx"
|
||||||
debug_register_definition_file="LPC43xx_Registers.xml"
|
debug_register_definition_file="LPC43xx_Registers.xml"
|
||||||
debug_target_connection="J-Link"
|
debug_target_connection="J-Link"
|
||||||
|
gcc_enable_all_warnings="Yes"
|
||||||
gcc_entry_point="Reset_Handler"
|
gcc_entry_point="Reset_Handler"
|
||||||
link_use_linker_script_file="No"
|
link_use_linker_script_file="No"
|
||||||
linker_memory_map_file="LPC4357 Cortex-M4_MemoryMap.xml"
|
linker_memory_map_file="LPC4357 Cortex-M4_MemoryMap.xml"
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
arm_target_debug_interface_type="ADIv5"
|
arm_target_debug_interface_type="ADIv5"
|
||||||
arm_target_device_name="nRF52840_xxAA"
|
arm_target_device_name="nRF52840_xxAA"
|
||||||
arm_target_interface_type="SWD"
|
arm_target_interface_type="SWD"
|
||||||
build_treat_warnings_as_errors="No"
|
build_treat_warnings_as_errors="Yes"
|
||||||
c_preprocessor_definitions="NRF52840_XXAA;__nRF_FAMILY;ARM_MATH_CM4;FLASH_PLACEMENT=1;BOARD_PCA10056;CFG_TUSB_MCU=OPT_MCU_NRF5X"
|
c_preprocessor_definitions="NRF52840_XXAA;__nRF_FAMILY;ARM_MATH_CM4;FLASH_PLACEMENT=1;BOARD_PCA10056;CFG_TUSB_MCU=OPT_MCU_NRF5X"
|
||||||
c_user_include_directories="../../src;$(rootDir)/hw/cmsis/Include;$(rootDir)/hw;$(rootDir)/src;$(nrfxDir)/..;$(nrfxDir);$(nrfxDir)/mdk;$(nrfxDir)/hal;$(nrfxDir)/drivers/include"
|
c_user_include_directories="../../src;$(rootDir)/hw/cmsis/Include;$(rootDir)/hw;$(rootDir)/src;$(nrfxDir)/..;$(nrfxDir);$(nrfxDir)/mdk;$(nrfxDir)/hal;$(nrfxDir)/drivers/include"
|
||||||
debug_register_definition_file="nrf52840_Registers.xml"
|
debug_register_definition_file="nrf52840_Registers.xml"
|
||||||
@ -105,6 +105,7 @@
|
|||||||
filter="*.c;*.h"
|
filter="*.c;*.h"
|
||||||
path="../../../../../lib/segger_rtt"
|
path="../../../../../lib/segger_rtt"
|
||||||
recurse="No" />
|
recurse="No" />
|
||||||
|
<configuration Name="pca10056" build_treat_warnings_as_errors="No" />
|
||||||
</project>
|
</project>
|
||||||
<configuration Name="pca10056" />
|
<configuration Name="pca10056" />
|
||||||
</solution>
|
</solution>
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
arm_target_interface_type="SWD"
|
arm_target_interface_type="SWD"
|
||||||
build_treat_warnings_as_errors="Yes"
|
build_treat_warnings_as_errors="Yes"
|
||||||
c_preprocessor_definitions="__SAMD21G18A__;__SAMD21_FAMILY;__SAM_D21_SUBFAMILY;ARM_MATH_CM0PLUS;FLASH_PLACEMENT=1;USE_SIMPLE_ASSERT;CONF_XOSC32K_CONFIG=1;CONF_OSC32K_ENABLE=1;CONF_OSC32K_EN32K=1;CONF_XOSC32K_STARTUP=CONF_XOSC32K_STARTUP_TIME_2000092MCS;CONF_DFLL_ONDEMAND=0;CONF_DFLL_OVERWRITE_CALIBRATION=0;BOARD_METRO_M0_EXPRESS;CFG_TUSB_MCU=OPT_MCU_SAMD21"
|
c_preprocessor_definitions="__SAMD21G18A__;__SAMD21_FAMILY;__SAM_D21_SUBFAMILY;ARM_MATH_CM0PLUS;FLASH_PLACEMENT=1;USE_SIMPLE_ASSERT;CONF_XOSC32K_CONFIG=1;CONF_OSC32K_ENABLE=1;CONF_OSC32K_EN32K=1;CONF_XOSC32K_STARTUP=CONF_XOSC32K_STARTUP_TIME_2000092MCS;CONF_DFLL_ONDEMAND=0;CONF_DFLL_OVERWRITE_CALIBRATION=0;BOARD_METRO_M0_EXPRESS;CFG_TUSB_MCU=OPT_MCU_SAMD21"
|
||||||
c_user_include_directories="../../src;$(rootDir)/hw/cmsis/Include;$(rootDir)/hw;$(rootDir)/src;$(asf4Dir);$(asf4Dir)/include;$(asf4Dir)/config;$(asf4Dir)/hri;$(asf4Dir)/hal/include;$(asf4Dir)/hal/utils/include;$(asf4Dir)/hpl/port;$(asf4Dir)/hpl/gclk;$(asf4Dir)/hpl/pm"
|
c_user_include_directories="../../src;$(rootDir)/hw;$(rootDir)/src;$(asf4Dir);$(asf4Dir)/CMSIS/Include;$(asf4Dir)/include;$(asf4Dir)/config;$(asf4Dir)/hri;$(asf4Dir)/hal/include;$(asf4Dir)/hal/utils/include;$(asf4Dir)/hpl/port;$(asf4Dir)/hpl/gclk;$(asf4Dir)/hpl/pm"
|
||||||
debug_register_definition_file="ATSAMD21G18A_Registers.xml"
|
debug_register_definition_file="ATSAMD21G18A_Registers.xml"
|
||||||
debug_target_connection="J-Link"
|
debug_target_connection="J-Link"
|
||||||
gcc_enable_all_warnings="Yes"
|
gcc_enable_all_warnings="Yes"
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
arm_target_interface_type="SWD"
|
arm_target_interface_type="SWD"
|
||||||
build_treat_warnings_as_errors="Yes"
|
build_treat_warnings_as_errors="Yes"
|
||||||
c_preprocessor_definitions="__SAMD51_FAMILY;__SAMD51J19A__;ARM_MATH_CM4;FLASH_PLACEMENT=1;USE_SIMPLE_ASSERT;BOARD_METRO_M4_EXPRESS;CFG_TUSB_MCU=OPT_MCU_SAMD51"
|
c_preprocessor_definitions="__SAMD51_FAMILY;__SAMD51J19A__;ARM_MATH_CM4;FLASH_PLACEMENT=1;USE_SIMPLE_ASSERT;BOARD_METRO_M4_EXPRESS;CFG_TUSB_MCU=OPT_MCU_SAMD51"
|
||||||
c_user_include_directories="../../src;$(rootDir)/hw/cmsis/Include;$(rootDir)/hw;$(rootDir)/src;$(asf4Dir);$(asf4Dir)/include;$(asf4Dir)/config;$(asf4Dir)/hri;$(asf4Dir)/hal/include;$(asf4Dir)/hal/utils/include;$(asf4Dir)/hpl/port;$(asf4Dir)/hpl/gclk"
|
c_user_include_directories="../../src;$(rootDir)/hw;$(rootDir)/src;$(asf4Dir);$(asf4Dir)/CMSIS/Include;$(asf4Dir)/include;$(asf4Dir)/config;$(asf4Dir)/hri;$(asf4Dir)/hal/include;$(asf4Dir)/hal/utils/include;$(asf4Dir)/hpl/port;$(asf4Dir)/hpl/gclk"
|
||||||
debug_register_definition_file="ATSAMD51J19A_Registers.xml"
|
debug_register_definition_file="ATSAMD51J19A_Registers.xml"
|
||||||
debug_target_connection="J-Link"
|
debug_target_connection="J-Link"
|
||||||
gcc_enable_all_warnings="Yes"
|
gcc_enable_all_warnings="Yes"
|
||||||
|
@ -61,7 +61,7 @@ enum
|
|||||||
#ifdef DISK_READONLY
|
#ifdef DISK_READONLY
|
||||||
const
|
const
|
||||||
#endif
|
#endif
|
||||||
static uint8_t msc_disk[DISK_BLOCK_NUM][DISK_BLOCK_SIZE] =
|
uint8_t msc_disk[DISK_BLOCK_NUM][DISK_BLOCK_SIZE] =
|
||||||
{
|
{
|
||||||
//------------- Boot Sector -------------//
|
//------------- Boot Sector -------------//
|
||||||
// byte_per_sector = DISK_BLOCK_SIZE; fat12_sector_num_16 = DISK_BLOCK_NUM;
|
// byte_per_sector = DISK_BLOCK_SIZE; fat12_sector_num_16 = DISK_BLOCK_NUM;
|
||||||
@ -123,6 +123,8 @@ int32_t tud_msc_write10_cb(uint8_t lun, uint32_t lba, uint32_t offset, uint8_t*
|
|||||||
#ifndef DISK_READONLY
|
#ifndef DISK_READONLY
|
||||||
uint8_t* addr = msc_disk[lba] + offset;
|
uint8_t* addr = msc_disk[lba] + offset;
|
||||||
memcpy(addr, buffer, bufsize);
|
memcpy(addr, buffer, bufsize);
|
||||||
|
#else
|
||||||
|
(void) lba; (void) offset; (void) buffer;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return bufsize;
|
return bufsize;
|
||||||
|
@ -39,9 +39,6 @@
|
|||||||
#ifndef _TUSB_CONFIG_H_
|
#ifndef _TUSB_CONFIG_H_
|
||||||
#define _TUSB_CONFIG_H_
|
#define _TUSB_CONFIG_H_
|
||||||
|
|
||||||
#include "tusb_option.h"
|
|
||||||
#include "bsp/board.h"
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
@ -1,314 +0,0 @@
|
|||||||
MEMORY
|
|
||||||
{
|
|
||||||
UNPLACED_SECTIONS (wx) : ORIGIN = 0x100000000, LENGTH = 0
|
|
||||||
RAM2 (wx) : ORIGIN = 0x2007c000, LENGTH = 0x00008000
|
|
||||||
RAM (wx) : ORIGIN = 0x10000000, LENGTH = 0x00008000
|
|
||||||
FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 0x00080000
|
|
||||||
}
|
|
||||||
|
|
||||||
SECTIONS
|
|
||||||
{
|
|
||||||
__RAM2_segment_start__ = 0x2007c000;
|
|
||||||
__RAM2_segment_end__ = 0x20084000;
|
|
||||||
__RAM2_segment_size__ = 0x00008000;
|
|
||||||
__RAM_segment_start__ = 0x10000000;
|
|
||||||
__RAM_segment_end__ = 0x10008000;
|
|
||||||
__RAM_segment_size__ = 0x00008000;
|
|
||||||
__FLASH_segment_start__ = 0x00000000;
|
|
||||||
__FLASH_segment_end__ = 0x00080000;
|
|
||||||
__FLASH_segment_size__ = 0x00080000;
|
|
||||||
|
|
||||||
__HEAPSIZE__ = 1024;
|
|
||||||
__STACKSIZE_PROCESS__ = 0;
|
|
||||||
__STACKSIZE__ = 1024;
|
|
||||||
|
|
||||||
__data2_run_load_start__ = ALIGN(__RAM2_segment_start__ , 4);
|
|
||||||
.data2_run ALIGN(__RAM2_segment_start__ , 4) (NOLOAD) : AT(ALIGN(__RAM2_segment_start__ , 4))
|
|
||||||
{
|
|
||||||
__data2_run_start__ = .;
|
|
||||||
*(.data2_run .data2_run.*)
|
|
||||||
}
|
|
||||||
__data2_run_end__ = __data2_run_start__ + SIZEOF(.data2_run);
|
|
||||||
__data2_run_size__ = SIZEOF(.data2_run);
|
|
||||||
__data2_run_load_end__ = __data2_run_end__;
|
|
||||||
|
|
||||||
. = ASSERT(__data2_run_start__ == __data2_run_end__ || (__data2_run_end__ >= __RAM2_segment_start__ && __data2_run_end__ <= __RAM2_segment_end__) , "error: .data2_run is too large to fit in RAM2 memory segment");
|
|
||||||
|
|
||||||
__bss2_load_start__ = ALIGN(__data2_run_end__ , 4);
|
|
||||||
.bss2 ALIGN(__data2_run_end__ , 4) (NOLOAD) : AT(ALIGN(__data2_run_end__ , 4))
|
|
||||||
{
|
|
||||||
__bss2_start__ = .;
|
|
||||||
*(.bss2 .bss2.*)
|
|
||||||
}
|
|
||||||
__bss2_end__ = __bss2_start__ + SIZEOF(.bss2);
|
|
||||||
__bss2_size__ = SIZEOF(.bss2);
|
|
||||||
__bss2_load_end__ = __bss2_end__;
|
|
||||||
|
|
||||||
__RAM2_segment_used_end__ = ALIGN(__data2_run_end__ , 4) + SIZEOF(.bss2);
|
|
||||||
__RAM2_segment_used_size__ = __RAM2_segment_used_end__ - __RAM2_segment_start__;
|
|
||||||
|
|
||||||
. = ASSERT(__bss2_start__ == __bss2_end__ || (__bss2_end__ >= __RAM2_segment_start__ && __bss2_end__ <= __RAM2_segment_end__) , "error: .bss2 is too large to fit in RAM2 memory segment");
|
|
||||||
|
|
||||||
__vectors_ram_load_start__ = ALIGN(__RAM_segment_start__ , 256);
|
|
||||||
.vectors_ram ALIGN(__RAM_segment_start__ , 256) (NOLOAD) : AT(ALIGN(__RAM_segment_start__ , 256))
|
|
||||||
{
|
|
||||||
__vectors_ram_start__ = .;
|
|
||||||
*(.vectors_ram .vectors_ram.*)
|
|
||||||
}
|
|
||||||
__vectors_ram_end__ = __vectors_ram_start__ + SIZEOF(.vectors_ram);
|
|
||||||
__vectors_ram_size__ = SIZEOF(.vectors_ram);
|
|
||||||
__vectors_ram_load_end__ = __vectors_ram_end__;
|
|
||||||
|
|
||||||
. = ASSERT(__vectors_ram_start__ == __vectors_ram_end__ || (__vectors_ram_end__ >= __RAM_segment_start__ && __vectors_ram_end__ <= __RAM_segment_end__) , "error: .vectors_ram is too large to fit in RAM memory segment");
|
|
||||||
|
|
||||||
__vectors_load_start__ = ALIGN(__FLASH_segment_start__ , 256);
|
|
||||||
.vectors ALIGN(__FLASH_segment_start__ , 256) : AT(ALIGN(__FLASH_segment_start__ , 256))
|
|
||||||
{
|
|
||||||
__vectors_start__ = .;
|
|
||||||
*(.vectors .vectors.*)
|
|
||||||
}
|
|
||||||
__vectors_end__ = __vectors_start__ + SIZEOF(.vectors);
|
|
||||||
__vectors_size__ = SIZEOF(.vectors);
|
|
||||||
__vectors_load_end__ = __vectors_end__;
|
|
||||||
|
|
||||||
. = ASSERT(__vectors_start__ == __vectors_end__ || (__vectors_end__ >= __FLASH_segment_start__ && __vectors_end__ <= __FLASH_segment_end__) , "error: .vectors is too large to fit in FLASH memory segment");
|
|
||||||
|
|
||||||
__init_load_start__ = ALIGN(__vectors_end__ , 4);
|
|
||||||
.init ALIGN(__vectors_end__ , 4) : AT(ALIGN(__vectors_end__ , 4))
|
|
||||||
{
|
|
||||||
__init_start__ = .;
|
|
||||||
*(.init .init.*)
|
|
||||||
}
|
|
||||||
__init_end__ = __init_start__ + SIZEOF(.init);
|
|
||||||
__init_size__ = SIZEOF(.init);
|
|
||||||
__init_load_end__ = __init_end__;
|
|
||||||
|
|
||||||
. = ASSERT(__init_start__ == __init_end__ || (__init_end__ >= __FLASH_segment_start__ && __init_end__ <= __FLASH_segment_end__) , "error: .init is too large to fit in FLASH memory segment");
|
|
||||||
|
|
||||||
__init_rodata_load_start__ = ALIGN(__init_end__ , 4);
|
|
||||||
.init_rodata ALIGN(__init_end__ , 4) : AT(ALIGN(__init_end__ , 4))
|
|
||||||
{
|
|
||||||
__init_rodata_start__ = .;
|
|
||||||
*(.init_rodata .init_rodata.*)
|
|
||||||
}
|
|
||||||
__init_rodata_end__ = __init_rodata_start__ + SIZEOF(.init_rodata);
|
|
||||||
__init_rodata_size__ = SIZEOF(.init_rodata);
|
|
||||||
__init_rodata_load_end__ = __init_rodata_end__;
|
|
||||||
|
|
||||||
. = ASSERT(__init_rodata_start__ == __init_rodata_end__ || (__init_rodata_end__ >= __FLASH_segment_start__ && __init_rodata_end__ <= __FLASH_segment_end__) , "error: .init_rodata is too large to fit in FLASH memory segment");
|
|
||||||
|
|
||||||
__text_load_start__ = ALIGN(__init_rodata_end__ , 4);
|
|
||||||
.text ALIGN(__init_rodata_end__ , 4) : AT(ALIGN(__init_rodata_end__ , 4))
|
|
||||||
{
|
|
||||||
__text_start__ = .;
|
|
||||||
*(.text .text.* .glue_7t .glue_7 .gnu.linkonce.t.* .gcc_except_table .ARM.extab* .gnu.linkonce.armextab.*)
|
|
||||||
}
|
|
||||||
__text_end__ = __text_start__ + SIZEOF(.text);
|
|
||||||
__text_size__ = SIZEOF(.text);
|
|
||||||
__text_load_end__ = __text_end__;
|
|
||||||
|
|
||||||
. = ASSERT(__text_start__ == __text_end__ || (__text_end__ >= __FLASH_segment_start__ && __text_end__ <= __FLASH_segment_end__) , "error: .text is too large to fit in FLASH memory segment");
|
|
||||||
|
|
||||||
__dtors_load_start__ = ALIGN(__text_end__ , 4);
|
|
||||||
.dtors ALIGN(__text_end__ , 4) : AT(ALIGN(__text_end__ , 4))
|
|
||||||
{
|
|
||||||
__dtors_start__ = .;
|
|
||||||
KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors)) KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*)))
|
|
||||||
}
|
|
||||||
__dtors_end__ = __dtors_start__ + SIZEOF(.dtors);
|
|
||||||
__dtors_size__ = SIZEOF(.dtors);
|
|
||||||
__dtors_load_end__ = __dtors_end__;
|
|
||||||
|
|
||||||
. = ASSERT(__dtors_start__ == __dtors_end__ || (__dtors_end__ >= __FLASH_segment_start__ && __dtors_end__ <= __FLASH_segment_end__) , "error: .dtors is too large to fit in FLASH memory segment");
|
|
||||||
|
|
||||||
__ctors_load_start__ = ALIGN(__dtors_end__ , 4);
|
|
||||||
.ctors ALIGN(__dtors_end__ , 4) : AT(ALIGN(__dtors_end__ , 4))
|
|
||||||
{
|
|
||||||
__ctors_start__ = .;
|
|
||||||
KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors)) KEEP (*(.init_array)) KEEP (*(SORT(.init_array.*)))
|
|
||||||
}
|
|
||||||
__ctors_end__ = __ctors_start__ + SIZEOF(.ctors);
|
|
||||||
__ctors_size__ = SIZEOF(.ctors);
|
|
||||||
__ctors_load_end__ = __ctors_end__;
|
|
||||||
|
|
||||||
. = ASSERT(__ctors_start__ == __ctors_end__ || (__ctors_end__ >= __FLASH_segment_start__ && __ctors_end__ <= __FLASH_segment_end__) , "error: .ctors is too large to fit in FLASH memory segment");
|
|
||||||
|
|
||||||
__rodata_load_start__ = ALIGN(__ctors_end__ , 4);
|
|
||||||
.rodata ALIGN(__ctors_end__ , 4) : AT(ALIGN(__ctors_end__ , 4))
|
|
||||||
{
|
|
||||||
__rodata_start__ = .;
|
|
||||||
*(.rodata .rodata.* .gnu.linkonce.r.*)
|
|
||||||
}
|
|
||||||
__rodata_end__ = __rodata_start__ + SIZEOF(.rodata);
|
|
||||||
__rodata_size__ = SIZEOF(.rodata);
|
|
||||||
__rodata_load_end__ = __rodata_end__;
|
|
||||||
|
|
||||||
. = ASSERT(__rodata_start__ == __rodata_end__ || (__rodata_end__ >= __FLASH_segment_start__ && __rodata_end__ <= __FLASH_segment_end__) , "error: .rodata is too large to fit in FLASH memory segment");
|
|
||||||
|
|
||||||
__ARM.exidx_load_start__ = ALIGN(__rodata_end__ , 4);
|
|
||||||
.ARM.exidx ALIGN(__rodata_end__ , 4) : AT(ALIGN(__rodata_end__ , 4))
|
|
||||||
{
|
|
||||||
__ARM.exidx_start__ = .;
|
|
||||||
__exidx_start = __ARM.exidx_start__;
|
|
||||||
*(.ARM.exidx .ARM.exidx.*)
|
|
||||||
}
|
|
||||||
__ARM.exidx_end__ = __ARM.exidx_start__ + SIZEOF(.ARM.exidx);
|
|
||||||
__ARM.exidx_size__ = SIZEOF(.ARM.exidx);
|
|
||||||
__exidx_end = __ARM.exidx_end__;
|
|
||||||
__ARM.exidx_load_end__ = __ARM.exidx_end__;
|
|
||||||
|
|
||||||
. = ASSERT(__ARM.exidx_start__ == __ARM.exidx_end__ || (__ARM.exidx_end__ >= __FLASH_segment_start__ && __ARM.exidx_end__ <= __FLASH_segment_end__) , "error: .ARM.exidx is too large to fit in FLASH memory segment");
|
|
||||||
|
|
||||||
__fast_load_start__ = ALIGN(__ARM.exidx_end__ , 4);
|
|
||||||
.fast ALIGN(__vectors_ram_end__ , 4) : AT(ALIGN(__ARM.exidx_end__ , 4))
|
|
||||||
{
|
|
||||||
__fast_start__ = .;
|
|
||||||
*(.fast .fast.*)
|
|
||||||
}
|
|
||||||
__fast_end__ = __fast_start__ + SIZEOF(.fast);
|
|
||||||
__fast_size__ = SIZEOF(.fast);
|
|
||||||
__fast_load_end__ = __fast_load_start__ + SIZEOF(.fast);
|
|
||||||
|
|
||||||
. = ASSERT(__fast_load_start__ == __fast_load_end__ || (__fast_load_end__ >= __FLASH_segment_start__ && __fast_load_end__ <= __FLASH_segment_end__) , "error: .fast is too large to fit in FLASH memory segment");
|
|
||||||
|
|
||||||
.fast_run ALIGN(__vectors_ram_end__ , 4) (NOLOAD) :
|
|
||||||
{
|
|
||||||
__fast_run_start__ = .;
|
|
||||||
. = MAX(__fast_run_start__ + SIZEOF(.fast), .);
|
|
||||||
}
|
|
||||||
__fast_run_end__ = __fast_run_start__ + SIZEOF(.fast_run);
|
|
||||||
__fast_run_size__ = SIZEOF(.fast_run);
|
|
||||||
__fast_run_load_end__ = __fast_run_end__;
|
|
||||||
|
|
||||||
. = ASSERT(__fast_run_start__ == __fast_run_end__ || (__fast_run_end__ >= __RAM_segment_start__ && __fast_run_end__ <= __RAM_segment_end__) , "error: .fast_run is too large to fit in RAM memory segment");
|
|
||||||
|
|
||||||
__data_load_start__ = ALIGN(__fast_load_start__ + SIZEOF(.fast) , 4);
|
|
||||||
.data ALIGN(__fast_run_end__ , 4) : AT(ALIGN(__fast_load_start__ + SIZEOF(.fast) , 4))
|
|
||||||
{
|
|
||||||
__data_start__ = .;
|
|
||||||
*(.data .data.* .gnu.linkonce.d.*)
|
|
||||||
}
|
|
||||||
__data_end__ = __data_start__ + SIZEOF(.data);
|
|
||||||
__data_size__ = SIZEOF(.data);
|
|
||||||
__data_load_end__ = __data_load_start__ + SIZEOF(.data);
|
|
||||||
|
|
||||||
. = ASSERT(__data_load_start__ == __data_load_end__ || (__data_load_end__ >= __FLASH_segment_start__ && __data_load_end__ <= __FLASH_segment_end__) , "error: .data is too large to fit in FLASH memory segment");
|
|
||||||
|
|
||||||
.data_run ALIGN(__fast_run_end__ , 4) (NOLOAD) :
|
|
||||||
{
|
|
||||||
__data_run_start__ = .;
|
|
||||||
. = MAX(__data_run_start__ + SIZEOF(.data), .);
|
|
||||||
}
|
|
||||||
__data_run_end__ = __data_run_start__ + SIZEOF(.data_run);
|
|
||||||
__data_run_size__ = SIZEOF(.data_run);
|
|
||||||
__data_run_load_end__ = __data_run_end__;
|
|
||||||
|
|
||||||
. = ASSERT(__data_run_start__ == __data_run_end__ || (__data_run_end__ >= __RAM_segment_start__ && __data_run_end__ <= __RAM_segment_end__) , "error: .data_run is too large to fit in RAM memory segment");
|
|
||||||
|
|
||||||
__bss_load_start__ = ALIGN(__data_run_end__ , 4);
|
|
||||||
.bss ALIGN(__data_run_end__ , 4) (NOLOAD) : AT(ALIGN(__data_run_end__ , 4))
|
|
||||||
{
|
|
||||||
__bss_start__ = .;
|
|
||||||
*(.bss .bss.* .gnu.linkonce.b.*) *(COMMON)
|
|
||||||
}
|
|
||||||
__bss_end__ = __bss_start__ + SIZEOF(.bss);
|
|
||||||
__bss_size__ = SIZEOF(.bss);
|
|
||||||
__bss_load_end__ = __bss_end__;
|
|
||||||
|
|
||||||
. = ASSERT(__bss_start__ == __bss_end__ || (__bss_end__ >= __RAM_segment_start__ && __bss_end__ <= __RAM_segment_end__) , "error: .bss is too large to fit in RAM memory segment");
|
|
||||||
|
|
||||||
__tbss_load_start__ = ALIGN(__bss_end__ , 4);
|
|
||||||
.tbss ALIGN(__bss_end__ , 4) (NOLOAD) : AT(ALIGN(__bss_end__ , 4))
|
|
||||||
{
|
|
||||||
__tbss_start__ = .;
|
|
||||||
*(.tbss .tbss.*)
|
|
||||||
}
|
|
||||||
__tbss_end__ = __tbss_start__ + SIZEOF(.tbss);
|
|
||||||
__tbss_size__ = SIZEOF(.tbss);
|
|
||||||
__tbss_load_end__ = __tbss_end__;
|
|
||||||
|
|
||||||
. = ASSERT(__tbss_start__ == __tbss_end__ || (__tbss_end__ >= __RAM_segment_start__ && __tbss_end__ <= __RAM_segment_end__) , "error: .tbss is too large to fit in RAM memory segment");
|
|
||||||
|
|
||||||
__tdata_load_start__ = ALIGN(__data_load_start__ + SIZEOF(.data) , 4);
|
|
||||||
.tdata ALIGN(__tbss_end__ , 4) : AT(ALIGN(__data_load_start__ + SIZEOF(.data) , 4))
|
|
||||||
{
|
|
||||||
__tdata_start__ = .;
|
|
||||||
*(.tdata .tdata.*)
|
|
||||||
}
|
|
||||||
__tdata_end__ = __tdata_start__ + SIZEOF(.tdata);
|
|
||||||
__tdata_size__ = SIZEOF(.tdata);
|
|
||||||
__tdata_load_end__ = __tdata_load_start__ + SIZEOF(.tdata);
|
|
||||||
|
|
||||||
__FLASH_segment_used_end__ = ALIGN(__data_load_start__ + SIZEOF(.data) , 4) + SIZEOF(.tdata);
|
|
||||||
__FLASH_segment_used_size__ = __FLASH_segment_used_end__ - __FLASH_segment_start__;
|
|
||||||
|
|
||||||
. = ASSERT(__tdata_load_start__ == __tdata_load_end__ || (__tdata_load_end__ >= __FLASH_segment_start__ && __tdata_load_end__ <= __FLASH_segment_end__) , "error: .tdata is too large to fit in FLASH memory segment");
|
|
||||||
|
|
||||||
.tdata_run ALIGN(__tbss_end__ , 4) (NOLOAD) :
|
|
||||||
{
|
|
||||||
__tdata_run_start__ = .;
|
|
||||||
. = MAX(__tdata_run_start__ + SIZEOF(.tdata), .);
|
|
||||||
}
|
|
||||||
__tdata_run_end__ = __tdata_run_start__ + SIZEOF(.tdata_run);
|
|
||||||
__tdata_run_size__ = SIZEOF(.tdata_run);
|
|
||||||
__tdata_run_load_end__ = __tdata_run_end__;
|
|
||||||
|
|
||||||
. = ASSERT(__tdata_run_start__ == __tdata_run_end__ || (__tdata_run_end__ >= __RAM_segment_start__ && __tdata_run_end__ <= __RAM_segment_end__) , "error: .tdata_run is too large to fit in RAM memory segment");
|
|
||||||
|
|
||||||
__non_init_load_start__ = ALIGN(__tdata_run_end__ , 4);
|
|
||||||
.non_init ALIGN(__tdata_run_end__ , 4) (NOLOAD) : AT(ALIGN(__tdata_run_end__ , 4))
|
|
||||||
{
|
|
||||||
__non_init_start__ = .;
|
|
||||||
*(.non_init .non_init.*)
|
|
||||||
}
|
|
||||||
__non_init_end__ = __non_init_start__ + SIZEOF(.non_init);
|
|
||||||
__non_init_size__ = SIZEOF(.non_init);
|
|
||||||
__non_init_load_end__ = __non_init_end__;
|
|
||||||
|
|
||||||
. = ASSERT(__non_init_start__ == __non_init_end__ || (__non_init_end__ >= __RAM_segment_start__ && __non_init_end__ <= __RAM_segment_end__) , "error: .non_init is too large to fit in RAM memory segment");
|
|
||||||
|
|
||||||
__heap_load_start__ = ALIGN(__non_init_end__ , 4);
|
|
||||||
.heap ALIGN(__non_init_end__ , 4) (NOLOAD) : AT(ALIGN(__non_init_end__ , 4))
|
|
||||||
{
|
|
||||||
__heap_start__ = .;
|
|
||||||
*(.heap .heap.*)
|
|
||||||
. = ALIGN(MAX(__heap_start__ + __HEAPSIZE__ , .), 4);
|
|
||||||
}
|
|
||||||
__heap_end__ = __heap_start__ + SIZEOF(.heap);
|
|
||||||
__heap_size__ = SIZEOF(.heap);
|
|
||||||
__heap_load_end__ = __heap_end__;
|
|
||||||
|
|
||||||
. = ASSERT(__heap_start__ == __heap_end__ || (__heap_end__ >= __RAM_segment_start__ && __heap_end__ <= __RAM_segment_end__) , "error: .heap is too large to fit in RAM memory segment");
|
|
||||||
|
|
||||||
__stack_load_start__ = __RAM_segment_end__ - 1024;
|
|
||||||
.stack __RAM_segment_end__ - 1024 (NOLOAD) : AT(__RAM_segment_end__ - 1024)
|
|
||||||
{
|
|
||||||
__stack_start__ = .;
|
|
||||||
*(.stack .stack.*)
|
|
||||||
. = ALIGN(MAX(__stack_start__ + __STACKSIZE__ , .), 8);
|
|
||||||
}
|
|
||||||
__stack_end__ = __stack_start__ + SIZEOF(.stack);
|
|
||||||
__stack_size__ = SIZEOF(.stack);
|
|
||||||
__stack_load_end__ = __stack_end__;
|
|
||||||
|
|
||||||
. = ASSERT(__stack_start__ == __stack_end__ || (__stack_end__ >= __RAM_segment_start__ && __stack_end__ <= __RAM_segment_end__) , "error: .stack is too large to fit in RAM memory segment");
|
|
||||||
. = ASSERT(__heap_end__ <= __stack_start__ , "error: section .heap overlaps absolute placed section .stack");
|
|
||||||
|
|
||||||
__stack_process_load_start__ = ALIGN(__stack_end__ , 8);
|
|
||||||
.stack_process ALIGN(__stack_end__ , 8) (NOLOAD) : AT(ALIGN(__stack_end__ , 8))
|
|
||||||
{
|
|
||||||
__stack_process_start__ = .;
|
|
||||||
*(.stack_process .stack_process.*)
|
|
||||||
. = ALIGN(MAX(__stack_process_start__ + __STACKSIZE_PROCESS__ , .), 8);
|
|
||||||
}
|
|
||||||
__stack_process_end__ = __stack_process_start__ + SIZEOF(.stack_process);
|
|
||||||
__stack_process_size__ = SIZEOF(.stack_process);
|
|
||||||
__stack_process_load_end__ = __stack_process_end__;
|
|
||||||
|
|
||||||
__RAM_segment_used_end__ = ALIGN(__stack_end__ , 8) + SIZEOF(.stack_process);
|
|
||||||
__RAM_segment_used_size__ = __RAM_segment_used_end__ - __RAM_segment_start__;
|
|
||||||
|
|
||||||
. = ASSERT(__stack_process_start__ == __stack_process_end__ || (__stack_process_end__ >= __RAM_segment_start__ && __stack_process_end__ <= __RAM_segment_end__) , "error: .stack_process is too large to fit in RAM memory segment");
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -20,7 +20,7 @@
|
|||||||
arm_target_interface_type="SWD"
|
arm_target_interface_type="SWD"
|
||||||
build_treat_warnings_as_errors="No"
|
build_treat_warnings_as_errors="No"
|
||||||
c_preprocessor_definitions="LPC175x_6x;__LPC1700_FAMILY;__LPC176x_SUBFAMILY;ARM_MATH_CM3;FLASH_PLACEMENT=1;BOARD_LPCXPRESSO1769;CFG_TUSB_MCU=OPT_MCU_LPC175X_6X"
|
c_preprocessor_definitions="LPC175x_6x;__LPC1700_FAMILY;__LPC176x_SUBFAMILY;ARM_MATH_CM3;FLASH_PLACEMENT=1;BOARD_LPCXPRESSO1769;CFG_TUSB_MCU=OPT_MCU_LPC175X_6X"
|
||||||
c_user_include_directories=".;../../src;$(rootDir)/hw/cmsis/Include;$(rootDir)/hw;$(rootDir)/src;$(lpcDir)/CMSIS_CORE_LPC17xx/inc;$(lpcDir)/LPC17xx_DriverLib/include;$(freertosDir)/Source/include;$(freertosDir)/Source/portable/GCC/ARM_CM3"
|
c_user_include_directories=".;../../src;$(rootDir)/hw;$(rootDir)/src;$(lpcDir)/CMSIS_CORE_LPC17xx/inc;$(lpcDir)/LPC17xx_DriverLib/include;$(freertosDir)/Source/include;$(freertosDir)/Source/portable/GCC/ARM_CM3"
|
||||||
debug_register_definition_file="LPC176x5x_Registers.xml"
|
debug_register_definition_file="LPC176x5x_Registers.xml"
|
||||||
debug_target_connection="J-Link"
|
debug_target_connection="J-Link"
|
||||||
gcc_enable_all_warnings="Yes"
|
gcc_enable_all_warnings="Yes"
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
arm_target_interface_type="SWD"
|
arm_target_interface_type="SWD"
|
||||||
build_treat_warnings_as_errors="Yes"
|
build_treat_warnings_as_errors="Yes"
|
||||||
c_preprocessor_definitions="__SAMD21G18A__;__SAMD21_FAMILY;__SAM_D21_SUBFAMILY;ARM_MATH_CM0PLUS;FLASH_PLACEMENT=1;USE_SIMPLE_ASSERT;CONF_XOSC32K_CONFIG=1;CONF_OSC32K_ENABLE=1;CONF_OSC32K_EN32K=1;CONF_XOSC32K_STARTUP=CONF_XOSC32K_STARTUP_TIME_2000092MCS;CONF_DFLL_ONDEMAND=0;CONF_DFLL_OVERWRITE_CALIBRATION=0;BOARD_METRO_M0_EXPRESS;CFG_TUSB_MCU=OPT_MCU_SAMD21"
|
c_preprocessor_definitions="__SAMD21G18A__;__SAMD21_FAMILY;__SAM_D21_SUBFAMILY;ARM_MATH_CM0PLUS;FLASH_PLACEMENT=1;USE_SIMPLE_ASSERT;CONF_XOSC32K_CONFIG=1;CONF_OSC32K_ENABLE=1;CONF_OSC32K_EN32K=1;CONF_XOSC32K_STARTUP=CONF_XOSC32K_STARTUP_TIME_2000092MCS;CONF_DFLL_ONDEMAND=0;CONF_DFLL_OVERWRITE_CALIBRATION=0;BOARD_METRO_M0_EXPRESS;CFG_TUSB_MCU=OPT_MCU_SAMD21"
|
||||||
c_user_include_directories="./;../../src;$(rootDir)/hw/cmsis/Include;$(rootDir)/hw;$(rootDir)/src;$(asf4Dir);$(asf4Dir)/include;$(asf4Dir)/config;$(asf4Dir)/hri;$(asf4Dir)/hal/include;$(asf4Dir)/hal/utils/include;$(asf4Dir)/hpl/port;$(asf4Dir)/hpl/gclk;$(asf4Dir)/hpl/pm;$(freertosDir)/Source/include;$(freertosDir)/Source/portable/GCC/ARM_CM0"
|
c_user_include_directories="./;../../src;$(rootDir)/hw;$(rootDir)/src;$(asf4Dir);$(asf4Dir)/CMSIS/Include;$(asf4Dir)/include;$(asf4Dir)/config;$(asf4Dir)/hri;$(asf4Dir)/hal/include;$(asf4Dir)/hal/utils/include;$(asf4Dir)/hpl/port;$(asf4Dir)/hpl/gclk;$(asf4Dir)/hpl/pm;$(freertosDir)/Source/include;$(freertosDir)/Source/portable/GCC/ARM_CM0"
|
||||||
debug_register_definition_file="ATSAMD21G18A_Registers.xml"
|
debug_register_definition_file="ATSAMD21G18A_Registers.xml"
|
||||||
debug_target_connection="J-Link"
|
debug_target_connection="J-Link"
|
||||||
gcc_entry_point="Reset_Handler"
|
gcc_entry_point="Reset_Handler"
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
arm_target_interface_type="SWD"
|
arm_target_interface_type="SWD"
|
||||||
build_treat_warnings_as_errors="Yes"
|
build_treat_warnings_as_errors="Yes"
|
||||||
c_preprocessor_definitions="__SAMD51_FAMILY;__SAMD51J19A__;ARM_MATH_CM4;FLASH_PLACEMENT=1;USE_SIMPLE_ASSERT;BOARD_METRO_M4_EXPRESS;CFG_TUSB_MCU=OPT_MCU_SAMD51"
|
c_preprocessor_definitions="__SAMD51_FAMILY;__SAMD51J19A__;ARM_MATH_CM4;FLASH_PLACEMENT=1;USE_SIMPLE_ASSERT;BOARD_METRO_M4_EXPRESS;CFG_TUSB_MCU=OPT_MCU_SAMD51"
|
||||||
c_user_include_directories="./;../../src;$(rootDir)/hw/cmsis/Include;$(rootDir)/hw;$(rootDir)/src;$(asf4Dir);$(asf4Dir)/include;$(asf4Dir)/config;$(asf4Dir)/hri;$(asf4Dir)/hal/include;$(asf4Dir)/hal/utils/include;$(asf4Dir)/hpl/port;$(asf4Dir)/hpl/gclk;$(freertosDir)/Source/include;$(freertosDir)/Source/portable/GCC/ARM_CM4F"
|
c_user_include_directories="./;../../src;$(rootDir)/hw;$(rootDir)/src;$(asf4Dir);$(asf4Dir)/CMSIS/Include;$(asf4Dir)/include;$(asf4Dir)/config;$(asf4Dir)/hri;$(asf4Dir)/hal/include;$(asf4Dir)/hal/utils/include;$(asf4Dir)/hpl/port;$(asf4Dir)/hpl/gclk;$(freertosDir)/Source/include;$(freertosDir)/Source/portable/GCC/ARM_CM4F"
|
||||||
debug_register_definition_file="ATSAMD51J19A_Registers.xml"
|
debug_register_definition_file="ATSAMD51J19A_Registers.xml"
|
||||||
debug_target_connection="J-Link"
|
debug_target_connection="J-Link"
|
||||||
gcc_entry_point="Reset_Handler"
|
gcc_entry_point="Reset_Handler"
|
||||||
|
9
examples/host/cdc_msc_hid/ses/cdc_msc_hid.emProject
Normal file
9
examples/host/cdc_msc_hid/ses/cdc_msc_hid.emProject
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
<!DOCTYPE CrossStudio_Project_File>
|
||||||
|
<solution Name="cdc_msc_hid" target="8" version="2">
|
||||||
|
<import file_name="samd21/samd21.emProject" />
|
||||||
|
<import file_name="samd51/samd51.emProject" />
|
||||||
|
<import file_name="lpc175x_6x/lpc175x_6x.emProject" />
|
||||||
|
<import file_name="lpc18xx/lpc18xx.emProject" />
|
||||||
|
<import file_name="lpc40xx/lpc40xx.emProject" />
|
||||||
|
<import file_name="lpc43xx/lpc43xx.emProject" />
|
||||||
|
</solution>
|
109
examples/host/cdc_msc_hid/ses/lpc175x_6x/LPC1700_Startup.s
Normal file
109
examples/host/cdc_msc_hid/ses/lpc175x_6x/LPC1700_Startup.s
Normal file
@ -0,0 +1,109 @@
|
|||||||
|
/*****************************************************************************
|
||||||
|
* SEGGER Microcontroller GmbH & Co. KG *
|
||||||
|
* Solutions for real time microcontroller applications *
|
||||||
|
*****************************************************************************
|
||||||
|
* *
|
||||||
|
* (c) 2015 SEGGER Microcontroller GmbH & Co. KG *
|
||||||
|
* *
|
||||||
|
* Internet: www.segger.com Support: support@segger.com *
|
||||||
|
* *
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
|
/*****************************************************************************
|
||||||
|
* Preprocessor Definitions *
|
||||||
|
* ------------------------ *
|
||||||
|
* NO_STACK_INIT *
|
||||||
|
* *
|
||||||
|
* If defined, the stack pointer will not be initialised. *
|
||||||
|
* *
|
||||||
|
* NO_SYSTEM_INIT *
|
||||||
|
* *
|
||||||
|
* If defined, the SystemInit() function will not be called. By default *
|
||||||
|
* SystemInit() is called after reset to enable the clocks and memories to *
|
||||||
|
* be initialised prior to any C startup initialisation. *
|
||||||
|
* *
|
||||||
|
* NO_VTOR_CONFIG *
|
||||||
|
* *
|
||||||
|
* If defined, the vector table offset register will not be configured. *
|
||||||
|
* *
|
||||||
|
* MEMORY_INIT *
|
||||||
|
* *
|
||||||
|
* If defined, the MemoryInit() function will be called. By default *
|
||||||
|
* MemoryInit() is called after SystemInit() to enable an external memory *
|
||||||
|
* controller. *
|
||||||
|
* *
|
||||||
|
* STACK_INIT_VAL *
|
||||||
|
* *
|
||||||
|
* If defined, specifies the initial stack pointer value. If undefined, *
|
||||||
|
* the stack pointer will be initialised to point to the end of the *
|
||||||
|
* RAM segment. *
|
||||||
|
* *
|
||||||
|
* VECTORS_IN_RAM *
|
||||||
|
* *
|
||||||
|
* If defined, the exception vectors will be copied from Flash to RAM. *
|
||||||
|
* *
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
|
.syntax unified
|
||||||
|
|
||||||
|
.global Reset_Handler
|
||||||
|
.extern _vectors
|
||||||
|
|
||||||
|
.section .init, "ax"
|
||||||
|
.thumb_func
|
||||||
|
|
||||||
|
.equ VTOR_REG, 0xE000ED08
|
||||||
|
|
||||||
|
#ifndef STACK_INIT_VAL
|
||||||
|
#define STACK_INIT_VAL __RAM_segment_end__
|
||||||
|
#endif
|
||||||
|
|
||||||
|
Reset_Handler:
|
||||||
|
#ifndef NO_STACK_INIT
|
||||||
|
/* Initialise main stack */
|
||||||
|
ldr r0, =STACK_INIT_VAL
|
||||||
|
bic r0, #0x7
|
||||||
|
mov sp, r0
|
||||||
|
#endif
|
||||||
|
#ifndef NO_SYSTEM_INIT
|
||||||
|
/* Initialise system */
|
||||||
|
ldr r0, =SystemInit
|
||||||
|
blx r0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef MEMORY_INIT
|
||||||
|
ldr r0, =MemoryInit
|
||||||
|
blx r0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef VECTORS_IN_RAM
|
||||||
|
/* Copy exception vectors into RAM */
|
||||||
|
ldr r0, =__vectors_start__
|
||||||
|
ldr r1, =__vectors_end__
|
||||||
|
ldr r2, =__vectors_ram_start__
|
||||||
|
1:
|
||||||
|
cmp r0, r1
|
||||||
|
beq 2f
|
||||||
|
ldr r3, [r0]
|
||||||
|
str r3, [r2]
|
||||||
|
adds r0, r0, #4
|
||||||
|
adds r2, r2, #4
|
||||||
|
b 1b
|
||||||
|
2:
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef NO_VTOR_CONFIG
|
||||||
|
/* Configure vector table offset register */
|
||||||
|
ldr r0, =VTOR_REG
|
||||||
|
#ifdef VECTORS_IN_RAM
|
||||||
|
ldr r1, =_vectors_ram
|
||||||
|
#else
|
||||||
|
ldr r1, =_vectors
|
||||||
|
#endif
|
||||||
|
str r1, [r0]
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Jump to program start */
|
||||||
|
b _start
|
||||||
|
|
||||||
|
|
19
examples/host/cdc_msc_hid/ses/lpc175x_6x/LPC1700_Target.js
Normal file
19
examples/host/cdc_msc_hid/ses/lpc175x_6x/LPC1700_Target.js
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
/*****************************************************************************
|
||||||
|
* SEGGER Microcontroller GmbH & Co. KG *
|
||||||
|
* Solutions for real time microcontroller applications *
|
||||||
|
*****************************************************************************
|
||||||
|
* *
|
||||||
|
* (c) 2015 SEGGER Microcontroller GmbH & Co. KG *
|
||||||
|
* *
|
||||||
|
* Internet: www.segger.com Support: support@segger.com *
|
||||||
|
* *
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
|
function Reset() {
|
||||||
|
TargetInterface.resetAndStop();
|
||||||
|
}
|
||||||
|
|
||||||
|
function EnableTrace(traceInterfaceType) {
|
||||||
|
// TODO: Enable trace
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,6 @@
|
|||||||
|
<!DOCTYPE Board_Memory_Definition_File>
|
||||||
|
<root name="LPC1769">
|
||||||
|
<MemorySegment name="FLASH" start="0x00000000" size="0x00080000" access="ReadOnly" />
|
||||||
|
<MemorySegment name="RAM" start="0x10000000" size="0x00008000" access="Read/Write" />
|
||||||
|
<MemorySegment name="RAM2" start="0x2007C000" size="0x00008000" access="Read/Write" />
|
||||||
|
</root>
|
11058
examples/host/cdc_msc_hid/ses/lpc175x_6x/LPC176x5x_Registers.xml
Normal file
11058
examples/host/cdc_msc_hid/ses/lpc175x_6x/LPC176x5x_Registers.xml
Normal file
File diff suppressed because it is too large
Load Diff
418
examples/host/cdc_msc_hid/ses/lpc175x_6x/LPC176x5x_Vectors.s
Normal file
418
examples/host/cdc_msc_hid/ses/lpc175x_6x/LPC176x5x_Vectors.s
Normal file
@ -0,0 +1,418 @@
|
|||||||
|
/*****************************************************************************
|
||||||
|
* SEGGER Microcontroller GmbH & Co. KG *
|
||||||
|
* Solutions for real time microcontroller applications *
|
||||||
|
*****************************************************************************
|
||||||
|
* *
|
||||||
|
* (c) 2015 SEGGER Microcontroller GmbH & Co. KG *
|
||||||
|
* *
|
||||||
|
* Internet: www.segger.com Support: support@segger.com *
|
||||||
|
* *
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
|
/*****************************************************************************
|
||||||
|
* Preprocessor Definitions *
|
||||||
|
* ------------------------ *
|
||||||
|
* VECTORS_IN_RAM *
|
||||||
|
* *
|
||||||
|
* If defined, an area of RAM will large enough to store the vector table *
|
||||||
|
* will be reserved. *
|
||||||
|
* *
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
|
.syntax unified
|
||||||
|
.code 16
|
||||||
|
|
||||||
|
.section .init, "ax"
|
||||||
|
.align 0
|
||||||
|
|
||||||
|
/*****************************************************************************
|
||||||
|
* Default Exception Handlers *
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak NMI_Handler
|
||||||
|
NMI_Handler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak HardFault_Handler
|
||||||
|
HardFault_Handler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak SVC_Handler
|
||||||
|
SVC_Handler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak PendSV_Handler
|
||||||
|
PendSV_Handler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak SysTick_Handler
|
||||||
|
SysTick_Handler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
Dummy_Handler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
#if defined(__OPTIMIZATION_SMALL)
|
||||||
|
|
||||||
|
.weak WDT_IRQHandler
|
||||||
|
.thumb_set WDT_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak TIMER0_IRQHandler
|
||||||
|
.thumb_set TIMER0_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak TIMER1_IRQHandler
|
||||||
|
.thumb_set TIMER1_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak TIMER2_IRQHandler
|
||||||
|
.thumb_set TIMER2_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak TIMER3_IRQHandler
|
||||||
|
.thumb_set TIMER3_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak UART0_IRQHandler
|
||||||
|
.thumb_set UART0_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak UART1_IRQHandler
|
||||||
|
.thumb_set UART1_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak UART2_IRQHandler
|
||||||
|
.thumb_set UART2_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak UART3_IRQHandler
|
||||||
|
.thumb_set UART3_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak PWM1_IRQHandler
|
||||||
|
.thumb_set PWM1_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak I2C0_IRQHandler
|
||||||
|
.thumb_set I2C0_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak I2C1_IRQHandler
|
||||||
|
.thumb_set I2C1_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak I2C2_IRQHandler
|
||||||
|
.thumb_set I2C2_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak SPI_IRQHandler
|
||||||
|
.thumb_set SPI_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak SSP0_IRQHandler
|
||||||
|
.thumb_set SSP0_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak SSP1_IRQHandler
|
||||||
|
.thumb_set SSP1_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak PLL0_IRQHandler
|
||||||
|
.thumb_set PLL0_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak RTC_IRQHandler
|
||||||
|
.thumb_set RTC_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak EINT0_IRQHandler
|
||||||
|
.thumb_set EINT0_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak EINT1_IRQHandler
|
||||||
|
.thumb_set EINT1_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak EINT2_IRQHandler
|
||||||
|
.thumb_set EINT2_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak EINT3_IRQHandler
|
||||||
|
.thumb_set EINT3_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak ADC_IRQHandler
|
||||||
|
.thumb_set ADC_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak BOD_IRQHandler
|
||||||
|
.thumb_set BOD_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak USB_IRQHandler
|
||||||
|
.thumb_set USB_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak CAN_IRQHandler
|
||||||
|
.thumb_set CAN_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak DMA_IRQHandler
|
||||||
|
.thumb_set DMA_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak I2S_IRQHandler
|
||||||
|
.thumb_set I2S_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak ENET_IRQHandler
|
||||||
|
.thumb_set ENET_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak RIT_IRQHandler
|
||||||
|
.thumb_set RIT_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak MCPWM_IRQHandler
|
||||||
|
.thumb_set MCPWM_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak QEI_IRQHandler
|
||||||
|
.thumb_set QEI_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak PLL1_IRQHandler
|
||||||
|
.thumb_set PLL1_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak USBActivity_IRQHandler
|
||||||
|
.thumb_set USBActivity_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak CANActivity_IRQHandler
|
||||||
|
.thumb_set CANActivity_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak WDT_IRQHandler
|
||||||
|
WDT_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak TIMER0_IRQHandler
|
||||||
|
TIMER0_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak TIMER1_IRQHandler
|
||||||
|
TIMER1_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak TIMER2_IRQHandler
|
||||||
|
TIMER2_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak TIMER3_IRQHandler
|
||||||
|
TIMER3_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak UART0_IRQHandler
|
||||||
|
UART0_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak UART1_IRQHandler
|
||||||
|
UART1_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak UART2_IRQHandler
|
||||||
|
UART2_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak UART3_IRQHandler
|
||||||
|
UART3_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak PWM1_IRQHandler
|
||||||
|
PWM1_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak I2C0_IRQHandler
|
||||||
|
I2C0_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak I2C1_IRQHandler
|
||||||
|
I2C1_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak I2C2_IRQHandler
|
||||||
|
I2C2_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak SPI_IRQHandler
|
||||||
|
SPI_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak SSP0_IRQHandler
|
||||||
|
SSP0_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak SSP1_IRQHandler
|
||||||
|
SSP1_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak PLL0_IRQHandler
|
||||||
|
PLL0_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak RTC_IRQHandler
|
||||||
|
RTC_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak EINT0_IRQHandler
|
||||||
|
EINT0_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak EINT1_IRQHandler
|
||||||
|
EINT1_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak EINT2_IRQHandler
|
||||||
|
EINT2_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak EINT3_IRQHandler
|
||||||
|
EINT3_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak ADC_IRQHandler
|
||||||
|
ADC_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak BOD_IRQHandler
|
||||||
|
BOD_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak USB_IRQHandler
|
||||||
|
USB_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak CAN_IRQHandler
|
||||||
|
CAN_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak DMA_IRQHandler
|
||||||
|
DMA_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak I2S_IRQHandler
|
||||||
|
I2S_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak ENET_IRQHandler
|
||||||
|
ENET_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak RIT_IRQHandler
|
||||||
|
RIT_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak MCPWM_IRQHandler
|
||||||
|
MCPWM_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak QEI_IRQHandler
|
||||||
|
QEI_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak PLL1_IRQHandler
|
||||||
|
PLL1_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak USBActivity_IRQHandler
|
||||||
|
USBActivity_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak CANActivity_IRQHandler
|
||||||
|
CANActivity_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*****************************************************************************
|
||||||
|
* Vector Table *
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
|
.section .vectors, "ax"
|
||||||
|
.align 0
|
||||||
|
.global _vectors
|
||||||
|
.extern __stack_end__
|
||||||
|
.extern Reset_Handler
|
||||||
|
|
||||||
|
_vectors:
|
||||||
|
.word __stack_end__
|
||||||
|
.word Reset_Handler
|
||||||
|
.word NMI_Handler
|
||||||
|
.word HardFault_Handler
|
||||||
|
.word 0 /* Reserved */
|
||||||
|
.word 0 /* Reserved */
|
||||||
|
.word 0 /* Reserved */
|
||||||
|
.word 0 /* Reserved */
|
||||||
|
.word 0 /* Reserved */
|
||||||
|
.word 0 /* Reserved */
|
||||||
|
.word 0 /* Reserved */
|
||||||
|
.word SVC_Handler
|
||||||
|
.word 0 /* Reserved */
|
||||||
|
.word 0 /* Reserved */
|
||||||
|
.word PendSV_Handler
|
||||||
|
.word SysTick_Handler
|
||||||
|
.word WDT_IRQHandler
|
||||||
|
.word TIMER0_IRQHandler
|
||||||
|
.word TIMER1_IRQHandler
|
||||||
|
.word TIMER2_IRQHandler
|
||||||
|
.word TIMER3_IRQHandler
|
||||||
|
.word UART0_IRQHandler
|
||||||
|
.word UART1_IRQHandler
|
||||||
|
.word UART2_IRQHandler
|
||||||
|
.word UART3_IRQHandler
|
||||||
|
.word PWM1_IRQHandler
|
||||||
|
.word I2C0_IRQHandler
|
||||||
|
.word I2C1_IRQHandler
|
||||||
|
.word I2C2_IRQHandler
|
||||||
|
.word SPI_IRQHandler
|
||||||
|
.word SSP0_IRQHandler
|
||||||
|
.word SSP1_IRQHandler
|
||||||
|
.word PLL0_IRQHandler
|
||||||
|
.word RTC_IRQHandler
|
||||||
|
.word EINT0_IRQHandler
|
||||||
|
.word EINT1_IRQHandler
|
||||||
|
.word EINT2_IRQHandler
|
||||||
|
.word EINT3_IRQHandler
|
||||||
|
.word ADC_IRQHandler
|
||||||
|
.word BOD_IRQHandler
|
||||||
|
.word USB_IRQHandler
|
||||||
|
.word CAN_IRQHandler
|
||||||
|
.word DMA_IRQHandler
|
||||||
|
.word I2S_IRQHandler
|
||||||
|
.word ENET_IRQHandler
|
||||||
|
.word RIT_IRQHandler
|
||||||
|
.word MCPWM_IRQHandler
|
||||||
|
.word QEI_IRQHandler
|
||||||
|
.word PLL1_IRQHandler
|
||||||
|
.word USBActivity_IRQHandler
|
||||||
|
.word CANActivity_IRQHandler
|
||||||
|
_vectors_end:
|
||||||
|
|
||||||
|
#ifdef VECTORS_IN_RAM
|
||||||
|
.section .vectors_ram, "ax"
|
||||||
|
.align 0
|
||||||
|
.global _vectors_ram
|
||||||
|
|
||||||
|
_vectors_ram:
|
||||||
|
.space _vectors_end - _vectors, 0
|
||||||
|
#endif
|
37
examples/host/cdc_msc_hid/ses/lpc175x_6x/flash_placement.xml
Normal file
37
examples/host/cdc_msc_hid/ses/lpc175x_6x/flash_placement.xml
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
<!DOCTYPE Linker_Placement_File>
|
||||||
|
<Root name="Flash Section Placement">
|
||||||
|
<MemorySegment name="$(FLASH_NAME:FLASH)">
|
||||||
|
<ProgramSection alignment="0x100" load="Yes" name=".vectors" start="$(FLASH_START:)" />
|
||||||
|
<ProgramSection alignment="4" load="Yes" name=".init" />
|
||||||
|
<ProgramSection alignment="4" load="Yes" name=".init_rodata" />
|
||||||
|
<ProgramSection alignment="4" load="Yes" name=".text" />
|
||||||
|
<ProgramSection alignment="4" load="Yes" name=".dtors" />
|
||||||
|
<ProgramSection alignment="4" load="Yes" name=".ctors" />
|
||||||
|
<ProgramSection alignment="4" load="Yes" name=".rodata" />
|
||||||
|
<ProgramSection alignment="4" load="Yes" name=".ARM.exidx" address_symbol="__exidx_start" end_symbol="__exidx_end" />
|
||||||
|
<ProgramSection alignment="4" load="Yes" runin=".fast_run" name=".fast" />
|
||||||
|
<ProgramSection alignment="4" load="Yes" runin=".data_run" name=".data" />
|
||||||
|
<ProgramSection alignment="4" load="Yes" runin=".tdata_run" name=".tdata" />
|
||||||
|
</MemorySegment>
|
||||||
|
<MemorySegment name="$(RAM_NAME:RAM);SRAM">
|
||||||
|
<ProgramSection alignment="0x100" load="No" name=".vectors_ram" start="$(RAM_START:$(SRAM_START:))" />
|
||||||
|
<ProgramSection alignment="4" load="No" name=".fast_run" />
|
||||||
|
<ProgramSection alignment="4" load="No" name=".data_run" />
|
||||||
|
<ProgramSection alignment="4" load="No" name=".bss" />
|
||||||
|
<ProgramSection alignment="4" load="No" name=".tbss" />
|
||||||
|
<ProgramSection alignment="4" load="No" name=".tdata_run" />
|
||||||
|
<ProgramSection alignment="4" load="No" name=".non_init" />
|
||||||
|
<ProgramSection alignment="4" size="__HEAPSIZE__" load="No" name=".heap" />
|
||||||
|
<ProgramSection alignment="8" size="__STACKSIZE__" load="No" place_from_segment_end="Yes" name=".stack" />
|
||||||
|
<ProgramSection alignment="8" size="__STACKSIZE_PROCESS__" load="No" name=".stack_process" />
|
||||||
|
</MemorySegment>
|
||||||
|
<MemorySegment name="$(FLASH2_NAME:FLASH2)">
|
||||||
|
<ProgramSection alignment="4" load="Yes" name=".text2" />
|
||||||
|
<ProgramSection alignment="4" load="Yes" name=".rodata2" />
|
||||||
|
<ProgramSection alignment="4" load="Yes" runin=".data2_run" name=".data2" />
|
||||||
|
</MemorySegment>
|
||||||
|
<MemorySegment name="$(RAM2_NAME:RAM2)">
|
||||||
|
<ProgramSection alignment="4" load="No" name=".data2_run" />
|
||||||
|
<ProgramSection alignment="4" load="No" name=".bss2" />
|
||||||
|
</MemorySegment>
|
||||||
|
</Root>
|
112
examples/host/cdc_msc_hid/ses/lpc175x_6x/lpc175x_6x.emProject
Normal file
112
examples/host/cdc_msc_hid/ses/lpc175x_6x/lpc175x_6x.emProject
Normal file
@ -0,0 +1,112 @@
|
|||||||
|
<!DOCTYPE CrossStudio_Project_File>
|
||||||
|
<solution Name="lpc175x_6x" target="8" version="2">
|
||||||
|
<project Name="lpc175x_6x">
|
||||||
|
<configuration
|
||||||
|
Name="Common"
|
||||||
|
Placement="Flash"
|
||||||
|
Target="LPC4357 Cortex-M4"
|
||||||
|
arm_architecture="v7M"
|
||||||
|
arm_core_type="Cortex-M3"
|
||||||
|
arm_endian="Little"
|
||||||
|
arm_fp_abi="Soft"
|
||||||
|
arm_fpu_type="None"
|
||||||
|
arm_interwork="No"
|
||||||
|
arm_linker_heap_size="1024"
|
||||||
|
arm_linker_process_stack_size="0"
|
||||||
|
arm_linker_stack_size="1024"
|
||||||
|
arm_simulator_memory_simulation_parameter="RX 00000000,00080000,FFFFFFFF;RWX 10000000,00008000,CDCDCDCD"
|
||||||
|
arm_target_debug_interface_type="ADIv5"
|
||||||
|
arm_target_device_name="LPC1769"
|
||||||
|
arm_target_interface_type="SWD"
|
||||||
|
build_treat_warnings_as_errors="Yes"
|
||||||
|
c_preprocessor_definitions="LPC175x_6x;__LPC1700_FAMILY;__LPC176x_SUBFAMILY;ARM_MATH_CM3;FLASH_PLACEMENT=1;CORE_M3;BOARD_LPCXPRESSO1769;CFG_TUSB_MCU=OPT_MCU_LPC175X_6X"
|
||||||
|
c_user_include_directories="../../src;$(rootDir)/hw;$(rootDir)/src;$(lpcDir)/inc"
|
||||||
|
debug_register_definition_file="LPC176x5x_Registers.xml"
|
||||||
|
debug_target_connection="J-Link"
|
||||||
|
gcc_enable_all_warnings="Yes"
|
||||||
|
gcc_entry_point="Reset_Handler"
|
||||||
|
link_use_linker_script_file="No"
|
||||||
|
linker_memory_map_file="LPC1769_MemoryMap.xml"
|
||||||
|
linker_section_placement_file="flash_placement.xml"
|
||||||
|
linker_section_placements_segments="FLASH RX 0x00000000 0x00080000;RAM RWX 0x10000000 0x00008000"
|
||||||
|
macros="DeviceFamily=LPC1700;DeviceSubFamily=LPC176x;Target=LPC1769;Placement=Flash;rootDir=../../../../..;lpcDir=../../../../../hw/mcu/nxp/lpc_chip_175x_6x"
|
||||||
|
project_directory=""
|
||||||
|
project_type="Executable"
|
||||||
|
target_reset_script="Reset();"
|
||||||
|
target_script_file="$(ProjectDir)/LPC1700_Target.js"
|
||||||
|
target_trace_initialize_script="EnableTrace("$(TraceInterfaceType)")" />
|
||||||
|
<folder
|
||||||
|
Name="tinyusb"
|
||||||
|
exclude=""
|
||||||
|
filter="*.c;*.h"
|
||||||
|
path="../../../../../src"
|
||||||
|
recurse="Yes" />
|
||||||
|
<folder Name="hw">
|
||||||
|
<folder Name="bsp">
|
||||||
|
<file file_name="../../../../../hw/bsp/ansi_escape.h" />
|
||||||
|
<file file_name="../../../../../hw/bsp/board.h" />
|
||||||
|
<folder Name="lpcxpresso1769">
|
||||||
|
<file file_name="../../../../../hw/bsp/lpcxpresso1769/board_lpcxpresso1769.c" />
|
||||||
|
<file file_name="../../../../../hw/bsp/lpcxpresso1769/board_lpcxpresso1769.h" />
|
||||||
|
</folder>
|
||||||
|
</folder>
|
||||||
|
<folder Name="mcu">
|
||||||
|
<folder Name="nxp">
|
||||||
|
<folder Name="lpc_chip_175x_6x">
|
||||||
|
<folder Name="inc">
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_175x_6x/inc/chip.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_175x_6x/inc/chip_lpc175x_6x.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_175x_6x/inc/chip_lpc177x_8x.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_175x_6x/inc/chip_lpc407x_8x.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_175x_6x/inc/clock_17xx_40xx.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_175x_6x/inc/cmsis.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_175x_6x/inc/cmsis_175x_6x.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_175x_6x/inc/core_cm3.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_175x_6x/inc/core_cmFunc.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_175x_6x/inc/core_cmInstr.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_175x_6x/inc/gpio_17xx_40xx.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_175x_6x/inc/gpioint_17xx_40xx.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_175x_6x/inc/iocon_17xx_40xx.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_175x_6x/inc/lpc_types.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_175x_6x/inc/sys_config.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_175x_6x/inc/sysctl_17xx_40xx.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_175x_6x/inc/uart_17xx_40xx.h" />
|
||||||
|
</folder>
|
||||||
|
<folder Name="src">
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_175x_6x/src/chip_17xx_40xx.c" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_175x_6x/src/clock_17xx_40xx.c" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_175x_6x/src/gpio_17xx_40xx.c" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_175x_6x/src/iocon_17xx_40xx.c" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_175x_6x/src/sysctl_17xx_40xx.c" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_175x_6x/src/sysinit_17xx_40xx.c" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_175x_6x/src/uart_17xx_40xx.c" />
|
||||||
|
</folder>
|
||||||
|
</folder>
|
||||||
|
</folder>
|
||||||
|
</folder>
|
||||||
|
</folder>
|
||||||
|
<configuration Name="Debug" build_treat_warnings_as_errors="Yes" />
|
||||||
|
<folder
|
||||||
|
Name="src"
|
||||||
|
exclude=""
|
||||||
|
filter="*.c;*.h"
|
||||||
|
path="../../src"
|
||||||
|
recurse="Yes" />
|
||||||
|
<folder Name="System Files">
|
||||||
|
<file file_name="flash_placement.xml" />
|
||||||
|
<file file_name="LPC1700_Startup.s" />
|
||||||
|
<file file_name="LPC1700_Target.js" />
|
||||||
|
<file file_name="LPC1769_MemoryMap.xml" />
|
||||||
|
<file file_name="LPC176x5x_Registers.xml" />
|
||||||
|
<file file_name="LPC176x5x_Vectors.s" />
|
||||||
|
<file file_name="thumb_crt0.s" />
|
||||||
|
</folder>
|
||||||
|
<folder
|
||||||
|
Name="segger_rtt"
|
||||||
|
exclude=""
|
||||||
|
filter="*.c;*.h"
|
||||||
|
path="../../../../../lib/segger_rtt"
|
||||||
|
recurse="No" />
|
||||||
|
</project>
|
||||||
|
<configuration Name="LPCXpresso 1769" />
|
||||||
|
</solution>
|
415
examples/host/cdc_msc_hid/ses/lpc175x_6x/thumb_crt0.s
Normal file
415
examples/host/cdc_msc_hid/ses/lpc175x_6x/thumb_crt0.s
Normal file
@ -0,0 +1,415 @@
|
|||||||
|
// **********************************************************************
|
||||||
|
// * SEGGER Microcontroller GmbH *
|
||||||
|
// * The Embedded Experts *
|
||||||
|
// **********************************************************************
|
||||||
|
// * *
|
||||||
|
// * (c) 2014 - 2018 SEGGER Microcontroller GmbH *
|
||||||
|
// * (c) 2001 - 2018 Rowley Associates Limited *
|
||||||
|
// * *
|
||||||
|
// * www.segger.com Support: support@segger.com *
|
||||||
|
// * *
|
||||||
|
// **********************************************************************
|
||||||
|
// * *
|
||||||
|
// * All rights reserved. *
|
||||||
|
// * *
|
||||||
|
// * Redistribution and use in source and binary forms, with or *
|
||||||
|
// * without modification, are permitted provided that the following *
|
||||||
|
// * conditions are met: *
|
||||||
|
// * *
|
||||||
|
// * - Redistributions of source code must retain the above copyright *
|
||||||
|
// * notice, this list of conditions and the following disclaimer. *
|
||||||
|
// * *
|
||||||
|
// * - Neither the name of SEGGER Microcontroller GmbH *
|
||||||
|
// * nor the names of its contributors may be used to endorse or *
|
||||||
|
// * promote products derived from this software without specific *
|
||||||
|
// * prior written permission. *
|
||||||
|
// * *
|
||||||
|
// * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND *
|
||||||
|
// * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, *
|
||||||
|
// * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF *
|
||||||
|
// * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE *
|
||||||
|
// * DISCLAIMED. *
|
||||||
|
// * IN NO EVENT SHALL SEGGER Microcontroller GmbH BE LIABLE FOR *
|
||||||
|
// * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR *
|
||||||
|
// * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT *
|
||||||
|
// * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; *
|
||||||
|
// * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF *
|
||||||
|
// * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT *
|
||||||
|
// * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE *
|
||||||
|
// * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH *
|
||||||
|
// * DAMAGE. *
|
||||||
|
// * *
|
||||||
|
// **********************************************************************
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// Preprocessor Definitions
|
||||||
|
// ------------------------
|
||||||
|
// APP_ENTRY_POINT
|
||||||
|
//
|
||||||
|
// Defines the application entry point function, if undefined this setting
|
||||||
|
// defaults to "main".
|
||||||
|
//
|
||||||
|
// INITIALIZE_STACK
|
||||||
|
//
|
||||||
|
// If defined, the contents of the stack will be initialized to a the
|
||||||
|
// value 0xCC.
|
||||||
|
//
|
||||||
|
// INITIALIZE_SECONDARY_SECTIONS
|
||||||
|
//
|
||||||
|
// If defined, the .data2, .text2, .rodata2 and .bss2 sections will be initialized.
|
||||||
|
//
|
||||||
|
// INITIALIZE_TCM_SECTIONS
|
||||||
|
//
|
||||||
|
// If defined, the .data_tcm, .text_tcm, .rodata_tcm and .bss_tcm sections
|
||||||
|
// will be initialized.
|
||||||
|
//
|
||||||
|
// INITIALIZE_USER_SECTIONS
|
||||||
|
//
|
||||||
|
// If defined, the function InitializeUserMemorySections will be called prior
|
||||||
|
// to entering main in order to allow the user to initialize any user defined
|
||||||
|
// memory sections.
|
||||||
|
//
|
||||||
|
// FULL_LIBRARY
|
||||||
|
//
|
||||||
|
// If defined then
|
||||||
|
// - argc, argv are setup by the debug_getargs.
|
||||||
|
// - the exit symbol is defined and executes on return from main.
|
||||||
|
// - the exit symbol calls destructors, atexit functions and then debug_exit.
|
||||||
|
//
|
||||||
|
// If not defined then
|
||||||
|
// - argc and argv are zero.
|
||||||
|
// - the exit symbol is defined, executes on return from main and loops
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef APP_ENTRY_POINT
|
||||||
|
#define APP_ENTRY_POINT main
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef ARGSSPACE
|
||||||
|
#define ARGSSPACE 128
|
||||||
|
#endif
|
||||||
|
.syntax unified
|
||||||
|
|
||||||
|
.global _start
|
||||||
|
.extern APP_ENTRY_POINT
|
||||||
|
.global exit
|
||||||
|
.weak exit
|
||||||
|
|
||||||
|
#ifdef INITIALIZE_USER_SECTIONS
|
||||||
|
.extern InitializeUserMemorySections
|
||||||
|
#endif
|
||||||
|
|
||||||
|
.section .init, "ax"
|
||||||
|
.code 16
|
||||||
|
.balign 2
|
||||||
|
.thumb_func
|
||||||
|
|
||||||
|
_start:
|
||||||
|
/* Set up main stack if size > 0 */
|
||||||
|
ldr r1, =__stack_end__
|
||||||
|
ldr r0, =__stack_start__
|
||||||
|
subs r2, r1, r0
|
||||||
|
beq 1f
|
||||||
|
#ifdef __ARM_EABI__
|
||||||
|
movs r2, #0x7
|
||||||
|
bics r1, r2
|
||||||
|
#endif
|
||||||
|
mov sp, r1
|
||||||
|
#ifdef INITIALIZE_STACK
|
||||||
|
movs r2, #0xCC
|
||||||
|
ldr r0, =__stack_start__
|
||||||
|
bl memory_set
|
||||||
|
#endif
|
||||||
|
1:
|
||||||
|
|
||||||
|
/* Set up process stack if size > 0 */
|
||||||
|
ldr r1, =__stack_process_end__
|
||||||
|
ldr r0, =__stack_process_start__
|
||||||
|
subs r2, r1, r0
|
||||||
|
beq 1f
|
||||||
|
#ifdef __ARM_EABI__
|
||||||
|
movs r2, #0x7
|
||||||
|
bics r1, r2
|
||||||
|
#endif
|
||||||
|
msr psp, r1
|
||||||
|
movs r2, #2
|
||||||
|
msr control, r2
|
||||||
|
#ifdef INITIALIZE_STACK
|
||||||
|
movs r2, #0xCC
|
||||||
|
bl memory_set
|
||||||
|
#endif
|
||||||
|
1:
|
||||||
|
|
||||||
|
/* Copy initialized memory sections into RAM (if necessary). */
|
||||||
|
ldr r0, =__data_load_start__
|
||||||
|
ldr r1, =__data_start__
|
||||||
|
ldr r2, =__data_end__
|
||||||
|
bl memory_copy
|
||||||
|
ldr r0, =__text_load_start__
|
||||||
|
ldr r1, =__text_start__
|
||||||
|
ldr r2, =__text_end__
|
||||||
|
bl memory_copy
|
||||||
|
ldr r0, =__fast_load_start__
|
||||||
|
ldr r1, =__fast_start__
|
||||||
|
ldr r2, =__fast_end__
|
||||||
|
bl memory_copy
|
||||||
|
ldr r0, =__ctors_load_start__
|
||||||
|
ldr r1, =__ctors_start__
|
||||||
|
ldr r2, =__ctors_end__
|
||||||
|
bl memory_copy
|
||||||
|
ldr r0, =__dtors_load_start__
|
||||||
|
ldr r1, =__dtors_start__
|
||||||
|
ldr r2, =__dtors_end__
|
||||||
|
bl memory_copy
|
||||||
|
ldr r0, =__rodata_load_start__
|
||||||
|
ldr r1, =__rodata_start__
|
||||||
|
ldr r2, =__rodata_end__
|
||||||
|
bl memory_copy
|
||||||
|
ldr r0, =__tdata_load_start__
|
||||||
|
ldr r1, =__tdata_start__
|
||||||
|
ldr r2, =__tdata_end__
|
||||||
|
bl memory_copy
|
||||||
|
#ifdef INITIALIZE_SECONDARY_SECTIONS
|
||||||
|
ldr r0, =__data2_load_start__
|
||||||
|
ldr r1, =__data2_start__
|
||||||
|
ldr r2, =__data2_end__
|
||||||
|
bl memory_copy
|
||||||
|
ldr r0, =__text2_load_start__
|
||||||
|
ldr r1, =__text2_start__
|
||||||
|
ldr r2, =__text2_end__
|
||||||
|
bl memory_copy
|
||||||
|
ldr r0, =__rodata2_load_start__
|
||||||
|
ldr r1, =__rodata2_start__
|
||||||
|
ldr r2, =__rodata2_end__
|
||||||
|
bl memory_copy
|
||||||
|
#endif /* #ifdef INITIALIZE_SECONDARY_SECTIONS */
|
||||||
|
#ifdef INITIALIZE_TCM_SECTIONS
|
||||||
|
ldr r0, =__data_tcm_load_start__
|
||||||
|
ldr r1, =__data_tcm_start__
|
||||||
|
ldr r2, =__data_tcm_end__
|
||||||
|
bl memory_copy
|
||||||
|
ldr r0, =__text_tcm_load_start__
|
||||||
|
ldr r1, =__text_tcm_start__
|
||||||
|
ldr r2, =__text_tcm_end__
|
||||||
|
bl memory_copy
|
||||||
|
ldr r0, =__rodata_tcm_load_start__
|
||||||
|
ldr r1, =__rodata_tcm_start__
|
||||||
|
ldr r2, =__rodata_tcm_end__
|
||||||
|
bl memory_copy
|
||||||
|
#endif /* #ifdef INITIALIZE_TCM_SECTIONS */
|
||||||
|
|
||||||
|
/* Zero the bss. */
|
||||||
|
ldr r0, =__bss_start__
|
||||||
|
ldr r1, =__bss_end__
|
||||||
|
movs r2, #0
|
||||||
|
bl memory_set
|
||||||
|
ldr r0, =__tbss_start__
|
||||||
|
ldr r1, =__tbss_end__
|
||||||
|
movs r2, #0
|
||||||
|
bl memory_set
|
||||||
|
#ifdef INITIALIZE_SECONDARY_SECTIONS
|
||||||
|
ldr r0, =__bss2_start__
|
||||||
|
ldr r1, =__bss2_end__
|
||||||
|
mov r2, #0
|
||||||
|
bl memory_set
|
||||||
|
#endif /* #ifdef INITIALIZE_SECONDARY_SECTIONS */
|
||||||
|
#ifdef INITIALIZE_TCM_SECTIONS
|
||||||
|
ldr r0, =__bss_tcm_start__
|
||||||
|
ldr r1, =__bss_tcm_end__
|
||||||
|
mov r2, #0
|
||||||
|
bl memory_set
|
||||||
|
#endif /* #ifdef INITIALIZE_TCM_SECTIONS */
|
||||||
|
|
||||||
|
/* Initialize the heap */
|
||||||
|
ldr r0, = __heap_start__
|
||||||
|
ldr r1, = __heap_end__
|
||||||
|
subs r1, r1, r0
|
||||||
|
cmp r1, #8
|
||||||
|
blt 1f
|
||||||
|
movs r2, #0
|
||||||
|
str r2, [r0]
|
||||||
|
adds r0, r0, #4
|
||||||
|
str r1, [r0]
|
||||||
|
1:
|
||||||
|
|
||||||
|
#ifdef INITIALIZE_USER_SECTIONS
|
||||||
|
ldr r2, =InitializeUserMemorySections
|
||||||
|
blx r2
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Call constructors */
|
||||||
|
ldr r0, =__ctors_start__
|
||||||
|
ldr r1, =__ctors_end__
|
||||||
|
ctor_loop:
|
||||||
|
cmp r0, r1
|
||||||
|
beq ctor_end
|
||||||
|
ldr r2, [r0]
|
||||||
|
adds r0, #4
|
||||||
|
push {r0-r1}
|
||||||
|
blx r2
|
||||||
|
pop {r0-r1}
|
||||||
|
b ctor_loop
|
||||||
|
ctor_end:
|
||||||
|
|
||||||
|
/* Setup initial call frame */
|
||||||
|
movs r0, #0
|
||||||
|
mov lr, r0
|
||||||
|
mov r12, sp
|
||||||
|
|
||||||
|
.type start, function
|
||||||
|
start:
|
||||||
|
/* Jump to application entry point */
|
||||||
|
#ifdef FULL_LIBRARY
|
||||||
|
movs r0, #ARGSSPACE
|
||||||
|
ldr r1, =args
|
||||||
|
ldr r2, =debug_getargs
|
||||||
|
blx r2
|
||||||
|
ldr r1, =args
|
||||||
|
#else
|
||||||
|
movs r0, #0
|
||||||
|
movs r1, #0
|
||||||
|
#endif
|
||||||
|
ldr r2, =APP_ENTRY_POINT
|
||||||
|
blx r2
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
exit:
|
||||||
|
#ifdef FULL_LIBRARY
|
||||||
|
mov r5, r0 // save the exit parameter/return result
|
||||||
|
|
||||||
|
/* Call destructors */
|
||||||
|
ldr r0, =__dtors_start__
|
||||||
|
ldr r1, =__dtors_end__
|
||||||
|
dtor_loop:
|
||||||
|
cmp r0, r1
|
||||||
|
beq dtor_end
|
||||||
|
ldr r2, [r0]
|
||||||
|
add r0, #4
|
||||||
|
push {r0-r1}
|
||||||
|
blx r2
|
||||||
|
pop {r0-r1}
|
||||||
|
b dtor_loop
|
||||||
|
dtor_end:
|
||||||
|
|
||||||
|
/* Call atexit functions */
|
||||||
|
ldr r2, =_execute_at_exit_fns
|
||||||
|
blx r2
|
||||||
|
|
||||||
|
/* Call debug_exit with return result/exit parameter */
|
||||||
|
mov r0, r5
|
||||||
|
ldr r2, =debug_exit
|
||||||
|
blx r2
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Returned from application entry point, loop forever. */
|
||||||
|
exit_loop:
|
||||||
|
b exit_loop
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
memory_copy:
|
||||||
|
cmp r0, r1
|
||||||
|
beq 2f
|
||||||
|
subs r2, r2, r1
|
||||||
|
beq 2f
|
||||||
|
1:
|
||||||
|
ldrb r3, [r0]
|
||||||
|
adds r0, r0, #1
|
||||||
|
strb r3, [r1]
|
||||||
|
adds r1, r1, #1
|
||||||
|
subs r2, r2, #1
|
||||||
|
bne 1b
|
||||||
|
2:
|
||||||
|
bx lr
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
memory_set:
|
||||||
|
cmp r0, r1
|
||||||
|
beq 1f
|
||||||
|
strb r2, [r0]
|
||||||
|
adds r0, r0, #1
|
||||||
|
b memory_set
|
||||||
|
1:
|
||||||
|
bx lr
|
||||||
|
|
||||||
|
// default C/C++ library helpers
|
||||||
|
|
||||||
|
.macro HELPER helper_name
|
||||||
|
.section .text.\helper_name, "ax", %progbits
|
||||||
|
.balign 2
|
||||||
|
.global \helper_name
|
||||||
|
.weak \helper_name
|
||||||
|
\helper_name:
|
||||||
|
.thumb_func
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro JUMPTO name
|
||||||
|
#if defined(__thumb__) && !defined(__thumb2__)
|
||||||
|
mov r12, r0
|
||||||
|
ldr r0, =\name
|
||||||
|
push {r0}
|
||||||
|
mov r0, r12
|
||||||
|
pop {pc}
|
||||||
|
#else
|
||||||
|
b \name
|
||||||
|
#endif
|
||||||
|
.endm
|
||||||
|
|
||||||
|
HELPER __aeabi_read_tp
|
||||||
|
ldr r0, =__tbss_start__-8
|
||||||
|
bx lr
|
||||||
|
HELPER abort
|
||||||
|
b .
|
||||||
|
HELPER __assert
|
||||||
|
b .
|
||||||
|
HELPER __aeabi_assert
|
||||||
|
b .
|
||||||
|
HELPER __sync_synchronize
|
||||||
|
bx lr
|
||||||
|
HELPER __getchar
|
||||||
|
JUMPTO debug_getchar
|
||||||
|
HELPER __putchar
|
||||||
|
JUMPTO debug_putchar
|
||||||
|
HELPER __open
|
||||||
|
JUMPTO debug_fopen
|
||||||
|
HELPER __close
|
||||||
|
JUMPTO debug_fclose
|
||||||
|
HELPER __write
|
||||||
|
mov r3, r0
|
||||||
|
mov r0, r1
|
||||||
|
movs r1, #1
|
||||||
|
JUMPTO debug_fwrite
|
||||||
|
HELPER __read
|
||||||
|
mov r3, r0
|
||||||
|
mov r0, r1
|
||||||
|
movs r1, #1
|
||||||
|
JUMPTO debug_fread
|
||||||
|
HELPER __seek
|
||||||
|
push {r4, lr}
|
||||||
|
mov r4, r0
|
||||||
|
bl debug_fseek
|
||||||
|
cmp r0, #0
|
||||||
|
bne 1f
|
||||||
|
mov r0, r4
|
||||||
|
bl debug_ftell
|
||||||
|
pop {r4, pc}
|
||||||
|
1:
|
||||||
|
ldr r0, =-1
|
||||||
|
pop {r4, pc}
|
||||||
|
// char __user_locale_name_buffer[];
|
||||||
|
.section .bss.__user_locale_name_buffer, "aw", %nobits
|
||||||
|
.global __user_locale_name_buffer
|
||||||
|
.weak __user_locale_name_buffer
|
||||||
|
__user_locale_name_buffer:
|
||||||
|
.word 0x0
|
||||||
|
|
||||||
|
#ifdef FULL_LIBRARY
|
||||||
|
.bss
|
||||||
|
args:
|
||||||
|
.space ARGSSPACE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Setup attibutes of stack and heap sections so they don't take up room in the elf file */
|
||||||
|
.section .stack, "wa", %nobits
|
||||||
|
.section .stack_process, "wa", %nobits
|
||||||
|
.section .heap, "wa", %nobits
|
||||||
|
|
110
examples/host/cdc_msc_hid/ses/lpc18xx/LPC1800_Startup.s
Normal file
110
examples/host/cdc_msc_hid/ses/lpc18xx/LPC1800_Startup.s
Normal file
@ -0,0 +1,110 @@
|
|||||||
|
/*****************************************************************************
|
||||||
|
* SEGGER Microcontroller GmbH & Co. KG *
|
||||||
|
* Solutions for real time microcontroller applications *
|
||||||
|
*****************************************************************************
|
||||||
|
* *
|
||||||
|
* (c) 2017 SEGGER Microcontroller GmbH & Co. KG *
|
||||||
|
* *
|
||||||
|
* Internet: www.segger.com Support: support@segger.com *
|
||||||
|
* *
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
|
/*****************************************************************************
|
||||||
|
* Preprocessor Definitions *
|
||||||
|
* ------------------------ *
|
||||||
|
* NO_STACK_INIT *
|
||||||
|
* *
|
||||||
|
* If defined, the stack pointer will not be initialised. *
|
||||||
|
* *
|
||||||
|
* NO_SYSTEM_INIT *
|
||||||
|
* *
|
||||||
|
* If defined, the SystemInit() function will not be called. By default *
|
||||||
|
* SystemInit() is called after reset to enable the clocks and memories to *
|
||||||
|
* be initialised prior to any C startup initialisation. *
|
||||||
|
* *
|
||||||
|
* NO_VTOR_CONFIG *
|
||||||
|
* *
|
||||||
|
* If defined, the vector table offset register will not be configured. *
|
||||||
|
* *
|
||||||
|
* MEMORY_INIT *
|
||||||
|
* *
|
||||||
|
* If defined, the MemoryInit() function will be called. By default *
|
||||||
|
* MemoryInit() is called after SystemInit() to enable an external memory *
|
||||||
|
* controller. *
|
||||||
|
* *
|
||||||
|
* STACK_INIT_VAL *
|
||||||
|
* *
|
||||||
|
* If defined, specifies the initial stack pointer value. If undefined, *
|
||||||
|
* the stack pointer will be initialised to point to the end of the *
|
||||||
|
* RAM segment. *
|
||||||
|
* *
|
||||||
|
* VECTORS_IN_RAM *
|
||||||
|
* *
|
||||||
|
* If defined, the exception vectors will be copied from Flash to RAM. *
|
||||||
|
* *
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
|
.syntax unified
|
||||||
|
|
||||||
|
.global Reset_Handler
|
||||||
|
.extern _vectors
|
||||||
|
|
||||||
|
.section .init, "ax"
|
||||||
|
.thumb_func
|
||||||
|
|
||||||
|
.equ VTOR_REG, 0xE000ED08
|
||||||
|
|
||||||
|
#ifndef STACK_INIT_VAL
|
||||||
|
#define STACK_INIT_VAL __RAM_segment_end__
|
||||||
|
#endif
|
||||||
|
|
||||||
|
Reset_Handler:
|
||||||
|
#ifndef NO_STACK_INIT
|
||||||
|
/* Initialise main stack */
|
||||||
|
ldr r0, =STACK_INIT_VAL
|
||||||
|
bic r0, #0x7
|
||||||
|
mov sp, r0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef NO_SYSTEM_INIT
|
||||||
|
/* Initialise system */
|
||||||
|
ldr r0, =SystemInit
|
||||||
|
blx r0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef MEMORY_INIT
|
||||||
|
ldr r0, =MemoryInit
|
||||||
|
blx r0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef VECTORS_IN_RAM
|
||||||
|
/* Copy exception vectors into RAM */
|
||||||
|
ldr r0, =__vectors_start__
|
||||||
|
ldr r1, =__vectors_end__
|
||||||
|
ldr r2, =__vectors_ram_start__
|
||||||
|
1:
|
||||||
|
cmp r0, r1
|
||||||
|
beq 2f
|
||||||
|
ldr r3, [r0]
|
||||||
|
str r3, [r2]
|
||||||
|
adds r0, r0, #4
|
||||||
|
adds r2, r2, #4
|
||||||
|
b 1b
|
||||||
|
2:
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef NO_VTOR_CONFIG
|
||||||
|
/* Configure vector table offset register */
|
||||||
|
ldr r0, =VTOR_REG
|
||||||
|
#ifdef VECTORS_IN_RAM
|
||||||
|
ldr r1, =_vectors_ram
|
||||||
|
#else
|
||||||
|
ldr r1, =_vectors
|
||||||
|
#endif
|
||||||
|
str r1, [r0]
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Jump to program start */
|
||||||
|
b _start
|
||||||
|
|
||||||
|
|
19
examples/host/cdc_msc_hid/ses/lpc18xx/LPC1800_Target.js
Normal file
19
examples/host/cdc_msc_hid/ses/lpc18xx/LPC1800_Target.js
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
/*****************************************************************************
|
||||||
|
* SEGGER Microcontroller GmbH & Co. KG *
|
||||||
|
* Solutions for real time microcontroller applications *
|
||||||
|
*****************************************************************************
|
||||||
|
* *
|
||||||
|
* (c) 2017 SEGGER Microcontroller GmbH & Co. KG *
|
||||||
|
* *
|
||||||
|
* Internet: www.segger.com Support: support@segger.com *
|
||||||
|
* *
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
|
function Reset() {
|
||||||
|
TargetInterface.resetAndStop();
|
||||||
|
}
|
||||||
|
|
||||||
|
function EnableTrace(traceInterfaceType) {
|
||||||
|
// TODO: Enable trace
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,7 @@
|
|||||||
|
<!DOCTYPE Board_Memory_Definition_File>
|
||||||
|
<root name="LPC1857">
|
||||||
|
<MemorySegment name="RAM" start="0x10000000" size="0x00008000" access="Read/Write" />
|
||||||
|
<MemorySegment name="FLASH" start="0x1A000000" size="0x00080000" access="ReadOnly" />
|
||||||
|
<MemorySegment name="FLASH2" start="0x1B000000" size="0x00080000" access="ReadOnly" />
|
||||||
|
<MemorySegment name="RAM2" start="0x20000000" size="0x00010000" access="Read/Write" />
|
||||||
|
</root>
|
30452
examples/host/cdc_msc_hid/ses/lpc18xx/LPC18xx_Registers.xml
Normal file
30452
examples/host/cdc_msc_hid/ses/lpc18xx/LPC18xx_Registers.xml
Normal file
File diff suppressed because it is too large
Load Diff
516
examples/host/cdc_msc_hid/ses/lpc18xx/LPC18xx_Vectors.s
Normal file
516
examples/host/cdc_msc_hid/ses/lpc18xx/LPC18xx_Vectors.s
Normal file
@ -0,0 +1,516 @@
|
|||||||
|
/*****************************************************************************
|
||||||
|
* SEGGER Microcontroller GmbH & Co. KG *
|
||||||
|
* Solutions for real time microcontroller applications *
|
||||||
|
*****************************************************************************
|
||||||
|
* *
|
||||||
|
* (c) 2017 SEGGER Microcontroller GmbH & Co. KG *
|
||||||
|
* *
|
||||||
|
* Internet: www.segger.com Support: support@segger.com *
|
||||||
|
* *
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
|
/*****************************************************************************
|
||||||
|
* Preprocessor Definitions *
|
||||||
|
* ------------------------ *
|
||||||
|
* VECTORS_IN_RAM *
|
||||||
|
* *
|
||||||
|
* If defined, an area of RAM will large enough to store the vector table *
|
||||||
|
* will be reserved. *
|
||||||
|
* *
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
|
.syntax unified
|
||||||
|
.code 16
|
||||||
|
|
||||||
|
.section .init, "ax"
|
||||||
|
.align 0
|
||||||
|
|
||||||
|
/*****************************************************************************
|
||||||
|
* Default Exception Handlers *
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak NMI_Handler
|
||||||
|
NMI_Handler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak HardFault_Handler
|
||||||
|
HardFault_Handler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak SVC_Handler
|
||||||
|
SVC_Handler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak PendSV_Handler
|
||||||
|
PendSV_Handler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak SysTick_Handler
|
||||||
|
SysTick_Handler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
Dummy_Handler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
#if defined(__OPTIMIZATION_SMALL)
|
||||||
|
|
||||||
|
.weak DAC_IRQHandler
|
||||||
|
.thumb_set DAC_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak DMA_IRQHandler
|
||||||
|
.thumb_set DMA_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak FLASH_IRQHandler
|
||||||
|
.thumb_set FLASH_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak ETHERNET_IRQHandler
|
||||||
|
.thumb_set ETHERNET_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak SDIO_IRQHandler
|
||||||
|
.thumb_set SDIO_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak LCD_IRQHandler
|
||||||
|
.thumb_set LCD_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak USB0_IRQHandler
|
||||||
|
.thumb_set USB0_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak USB1_IRQHandler
|
||||||
|
.thumb_set USB1_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak SCT_IRQHandler
|
||||||
|
.thumb_set SCT_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak RITIMER_IRQHandler
|
||||||
|
.thumb_set RITIMER_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak TIMER0_IRQHandler
|
||||||
|
.thumb_set TIMER0_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak TIMER1_IRQHandler
|
||||||
|
.thumb_set TIMER1_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak TIMER2_IRQHandler
|
||||||
|
.thumb_set TIMER2_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak TIMER3_IRQHandler
|
||||||
|
.thumb_set TIMER3_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak MCPWM_IRQHandler
|
||||||
|
.thumb_set MCPWM_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak ADC0_IRQHandler
|
||||||
|
.thumb_set ADC0_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak I2C0_IRQHandler
|
||||||
|
.thumb_set I2C0_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak I2C1_IRQHandler
|
||||||
|
.thumb_set I2C1_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak ADC1_IRQHandler
|
||||||
|
.thumb_set ADC1_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak SSP0_IRQHandler
|
||||||
|
.thumb_set SSP0_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak SSP1_IRQHandler
|
||||||
|
.thumb_set SSP1_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak USART0_IRQHandler
|
||||||
|
.thumb_set USART0_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak UART1_IRQHandler
|
||||||
|
.thumb_set UART1_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak USART2_IRQHandler
|
||||||
|
.thumb_set USART2_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak USART3_IRQHandler
|
||||||
|
.thumb_set USART3_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak I2S0_IRQHandler
|
||||||
|
.thumb_set I2S0_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak I2S1_IRQHandler
|
||||||
|
.thumb_set I2S1_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak SPIFI_IRQHandler
|
||||||
|
.thumb_set SPIFI_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak PIN_INT0_IRQHandler
|
||||||
|
.thumb_set PIN_INT0_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak PIN_INT1_IRQHandler
|
||||||
|
.thumb_set PIN_INT1_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak PIN_INT2_IRQHandler
|
||||||
|
.thumb_set PIN_INT2_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak PIN_INT3_IRQHandler
|
||||||
|
.thumb_set PIN_INT3_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak PIN_INT4_IRQHandler
|
||||||
|
.thumb_set PIN_INT4_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak PIN_INT5_IRQHandler
|
||||||
|
.thumb_set PIN_INT5_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak PIN_INT6_IRQHandler
|
||||||
|
.thumb_set PIN_INT6_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak PIN_INT7_IRQHandler
|
||||||
|
.thumb_set PIN_INT7_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak GINT0_IRQHandler
|
||||||
|
.thumb_set GINT0_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak GINT1_IRQHandler
|
||||||
|
.thumb_set GINT1_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak EVENTROUTER_IRQHandler
|
||||||
|
.thumb_set EVENTROUTER_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak C_CAN1_IRQHandler
|
||||||
|
.thumb_set C_CAN1_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak ATIMER_IRQHandler
|
||||||
|
.thumb_set ATIMER_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak RTC_IRQHandler
|
||||||
|
.thumb_set RTC_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak WWDT_IRQHandler
|
||||||
|
.thumb_set WWDT_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak C_CAN0_IRQHandler
|
||||||
|
.thumb_set C_CAN0_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak QEI_IRQHandler
|
||||||
|
.thumb_set QEI_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak DAC_IRQHandler
|
||||||
|
DAC_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak DMA_IRQHandler
|
||||||
|
DMA_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak FLASH_IRQHandler
|
||||||
|
FLASH_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak ETHERNET_IRQHandler
|
||||||
|
ETHERNET_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak SDIO_IRQHandler
|
||||||
|
SDIO_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak LCD_IRQHandler
|
||||||
|
LCD_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak USB0_IRQHandler
|
||||||
|
USB0_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak USB1_IRQHandler
|
||||||
|
USB1_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak SCT_IRQHandler
|
||||||
|
SCT_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak RITIMER_IRQHandler
|
||||||
|
RITIMER_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak TIMER0_IRQHandler
|
||||||
|
TIMER0_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak TIMER1_IRQHandler
|
||||||
|
TIMER1_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak TIMER2_IRQHandler
|
||||||
|
TIMER2_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak TIMER3_IRQHandler
|
||||||
|
TIMER3_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak MCPWM_IRQHandler
|
||||||
|
MCPWM_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak ADC0_IRQHandler
|
||||||
|
ADC0_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak I2C0_IRQHandler
|
||||||
|
I2C0_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak I2C1_IRQHandler
|
||||||
|
I2C1_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak ADC1_IRQHandler
|
||||||
|
ADC1_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak SSP0_IRQHandler
|
||||||
|
SSP0_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak SSP1_IRQHandler
|
||||||
|
SSP1_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak USART0_IRQHandler
|
||||||
|
USART0_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak UART1_IRQHandler
|
||||||
|
UART1_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak USART2_IRQHandler
|
||||||
|
USART2_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak USART3_IRQHandler
|
||||||
|
USART3_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak I2S0_IRQHandler
|
||||||
|
I2S0_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak I2S1_IRQHandler
|
||||||
|
I2S1_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak SPIFI_IRQHandler
|
||||||
|
SPIFI_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak PIN_INT0_IRQHandler
|
||||||
|
PIN_INT0_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak PIN_INT1_IRQHandler
|
||||||
|
PIN_INT1_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak PIN_INT2_IRQHandler
|
||||||
|
PIN_INT2_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak PIN_INT3_IRQHandler
|
||||||
|
PIN_INT3_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak PIN_INT4_IRQHandler
|
||||||
|
PIN_INT4_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak PIN_INT5_IRQHandler
|
||||||
|
PIN_INT5_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak PIN_INT6_IRQHandler
|
||||||
|
PIN_INT6_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak PIN_INT7_IRQHandler
|
||||||
|
PIN_INT7_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak GINT0_IRQHandler
|
||||||
|
GINT0_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak GINT1_IRQHandler
|
||||||
|
GINT1_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak EVENTROUTER_IRQHandler
|
||||||
|
EVENTROUTER_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak C_CAN1_IRQHandler
|
||||||
|
C_CAN1_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak ATIMER_IRQHandler
|
||||||
|
ATIMER_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak RTC_IRQHandler
|
||||||
|
RTC_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak WWDT_IRQHandler
|
||||||
|
WWDT_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak C_CAN0_IRQHandler
|
||||||
|
C_CAN0_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak QEI_IRQHandler
|
||||||
|
QEI_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*****************************************************************************
|
||||||
|
* Vector Table *
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
|
.section .vectors, "ax"
|
||||||
|
.align 0
|
||||||
|
.global _vectors
|
||||||
|
.extern __stack_end__
|
||||||
|
.extern Reset_Handler
|
||||||
|
|
||||||
|
_vectors:
|
||||||
|
.word __stack_end__
|
||||||
|
.word Reset_Handler
|
||||||
|
.word NMI_Handler
|
||||||
|
.word HardFault_Handler
|
||||||
|
.word 0 /* Reserved */
|
||||||
|
.word 0 /* Reserved */
|
||||||
|
.word 0 /* Reserved */
|
||||||
|
.word 0 /* Reserved */
|
||||||
|
.word 0 /* Reserved */
|
||||||
|
.word 0 /* Reserved */
|
||||||
|
.word 0 /* Reserved */
|
||||||
|
.word SVC_Handler
|
||||||
|
.word 0 /* Reserved */
|
||||||
|
.word 0 /* Reserved */
|
||||||
|
.word PendSV_Handler
|
||||||
|
.word SysTick_Handler
|
||||||
|
.word DAC_IRQHandler
|
||||||
|
.word Dummy_Handler /* Reserved */
|
||||||
|
.word DMA_IRQHandler
|
||||||
|
.word Dummy_Handler /* Reserved */
|
||||||
|
.word FLASH_IRQHandler
|
||||||
|
.word ETHERNET_IRQHandler
|
||||||
|
.word SDIO_IRQHandler
|
||||||
|
.word LCD_IRQHandler
|
||||||
|
.word USB0_IRQHandler
|
||||||
|
.word USB1_IRQHandler
|
||||||
|
.word SCT_IRQHandler
|
||||||
|
.word RITIMER_IRQHandler
|
||||||
|
.word TIMER0_IRQHandler
|
||||||
|
.word TIMER1_IRQHandler
|
||||||
|
.word TIMER2_IRQHandler
|
||||||
|
.word TIMER3_IRQHandler
|
||||||
|
.word MCPWM_IRQHandler
|
||||||
|
.word ADC0_IRQHandler
|
||||||
|
.word I2C0_IRQHandler
|
||||||
|
.word I2C1_IRQHandler
|
||||||
|
.word Dummy_Handler /* Reserved */
|
||||||
|
.word ADC1_IRQHandler
|
||||||
|
.word SSP0_IRQHandler
|
||||||
|
.word SSP1_IRQHandler
|
||||||
|
.word USART0_IRQHandler
|
||||||
|
.word UART1_IRQHandler
|
||||||
|
.word USART2_IRQHandler
|
||||||
|
.word USART3_IRQHandler
|
||||||
|
.word I2S0_IRQHandler
|
||||||
|
.word I2S1_IRQHandler
|
||||||
|
.word SPIFI_IRQHandler
|
||||||
|
.word Dummy_Handler /* Reserved */
|
||||||
|
.word PIN_INT0_IRQHandler
|
||||||
|
.word PIN_INT1_IRQHandler
|
||||||
|
.word PIN_INT2_IRQHandler
|
||||||
|
.word PIN_INT3_IRQHandler
|
||||||
|
.word PIN_INT4_IRQHandler
|
||||||
|
.word PIN_INT5_IRQHandler
|
||||||
|
.word PIN_INT6_IRQHandler
|
||||||
|
.word PIN_INT7_IRQHandler
|
||||||
|
.word GINT0_IRQHandler
|
||||||
|
.word GINT1_IRQHandler
|
||||||
|
.word EVENTROUTER_IRQHandler
|
||||||
|
.word C_CAN1_IRQHandler
|
||||||
|
.word Dummy_Handler /* Reserved */
|
||||||
|
.word Dummy_Handler /* Reserved */
|
||||||
|
.word ATIMER_IRQHandler
|
||||||
|
.word RTC_IRQHandler
|
||||||
|
.word Dummy_Handler /* Reserved */
|
||||||
|
.word WWDT_IRQHandler
|
||||||
|
.word Dummy_Handler /* Reserved */
|
||||||
|
.word C_CAN0_IRQHandler
|
||||||
|
.word QEI_IRQHandler
|
||||||
|
_vectors_end:
|
||||||
|
|
||||||
|
#ifdef VECTORS_IN_RAM
|
||||||
|
.section .vectors_ram, "ax"
|
||||||
|
.align 0
|
||||||
|
.global _vectors_ram
|
||||||
|
|
||||||
|
_vectors_ram:
|
||||||
|
.space _vectors_end - _vectors, 0
|
||||||
|
#endif
|
37
examples/host/cdc_msc_hid/ses/lpc18xx/flash_placement.xml
Normal file
37
examples/host/cdc_msc_hid/ses/lpc18xx/flash_placement.xml
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
<!DOCTYPE Linker_Placement_File>
|
||||||
|
<Root name="Flash Section Placement">
|
||||||
|
<MemorySegment name="$(FLASH_NAME:FLASH)">
|
||||||
|
<ProgramSection alignment="0x100" load="Yes" name=".vectors" start="$(FLASH_START:)" />
|
||||||
|
<ProgramSection alignment="4" load="Yes" name=".init" />
|
||||||
|
<ProgramSection alignment="4" load="Yes" name=".init_rodata" />
|
||||||
|
<ProgramSection alignment="4" load="Yes" name=".text" />
|
||||||
|
<ProgramSection alignment="4" load="Yes" name=".dtors" />
|
||||||
|
<ProgramSection alignment="4" load="Yes" name=".ctors" />
|
||||||
|
<ProgramSection alignment="4" load="Yes" name=".rodata" />
|
||||||
|
<ProgramSection alignment="4" load="Yes" name=".ARM.exidx" address_symbol="__exidx_start" end_symbol="__exidx_end" />
|
||||||
|
<ProgramSection alignment="4" load="Yes" runin=".fast_run" name=".fast" />
|
||||||
|
<ProgramSection alignment="4" load="Yes" runin=".data_run" name=".data" />
|
||||||
|
<ProgramSection alignment="4" load="Yes" runin=".tdata_run" name=".tdata" />
|
||||||
|
</MemorySegment>
|
||||||
|
<MemorySegment name="$(RAM_NAME:RAM);SRAM">
|
||||||
|
<ProgramSection alignment="0x100" load="No" name=".vectors_ram" start="$(RAM_START:$(SRAM_START:))" />
|
||||||
|
<ProgramSection alignment="4" load="No" name=".fast_run" />
|
||||||
|
<ProgramSection alignment="4" load="No" name=".data_run" />
|
||||||
|
<ProgramSection alignment="4" load="No" name=".bss" />
|
||||||
|
<ProgramSection alignment="4" load="No" name=".tbss" />
|
||||||
|
<ProgramSection alignment="4" load="No" name=".tdata_run" />
|
||||||
|
<ProgramSection alignment="4" load="No" name=".non_init" />
|
||||||
|
<ProgramSection alignment="4" size="__HEAPSIZE__" load="No" name=".heap" />
|
||||||
|
<ProgramSection alignment="8" size="__STACKSIZE__" load="No" place_from_segment_end="Yes" name=".stack" />
|
||||||
|
<ProgramSection alignment="8" size="__STACKSIZE_PROCESS__" load="No" name=".stack_process" />
|
||||||
|
</MemorySegment>
|
||||||
|
<MemorySegment name="$(FLASH2_NAME:FLASH2)">
|
||||||
|
<ProgramSection alignment="4" load="Yes" name=".text2" />
|
||||||
|
<ProgramSection alignment="4" load="Yes" name=".rodata2" />
|
||||||
|
<ProgramSection alignment="4" load="Yes" runin=".data2_run" name=".data2" />
|
||||||
|
</MemorySegment>
|
||||||
|
<MemorySegment name="$(RAM2_NAME:RAM2)">
|
||||||
|
<ProgramSection alignment="4" load="No" name=".data2_run" />
|
||||||
|
<ProgramSection alignment="4" load="No" name=".bss2" />
|
||||||
|
</MemorySegment>
|
||||||
|
</Root>
|
129
examples/host/cdc_msc_hid/ses/lpc18xx/lpc18xx.emProject
Normal file
129
examples/host/cdc_msc_hid/ses/lpc18xx/lpc18xx.emProject
Normal file
@ -0,0 +1,129 @@
|
|||||||
|
<!DOCTYPE CrossStudio_Project_File>
|
||||||
|
<solution Name="lpc18xx" target="8" version="2">
|
||||||
|
<project Name="lpc18xx">
|
||||||
|
<configuration
|
||||||
|
Name="Common"
|
||||||
|
Placement="Flash"
|
||||||
|
Target="LPC1857"
|
||||||
|
arm_architecture="v7M"
|
||||||
|
arm_core_type="Cortex-M3"
|
||||||
|
arm_endian="Little"
|
||||||
|
arm_fpu_type="None"
|
||||||
|
arm_interwork="No"
|
||||||
|
arm_linker_heap_size="256"
|
||||||
|
arm_linker_process_stack_size="0"
|
||||||
|
arm_linker_stack_size="256"
|
||||||
|
arm_simulator_memory_simulation_parameter="RAM;0x10000000;0x00008000;ROM;0x1A000000;0x00080000;ROM;0x1B000000;0x00080000;RAM;0x20000000;0x00010000"
|
||||||
|
arm_target_debug_interface_type="ADIv5"
|
||||||
|
arm_target_device_name="LPC1857"
|
||||||
|
arm_target_interface_type="SWD"
|
||||||
|
c_preprocessor_definitions="LPC18xx;__LPC1800_FAMILY;__LPC185x_SUBFAMILY;ARM_MATH_CM3;FLASH_PLACEMENT=1;CORE_M3;BOARD_MCB1800;CFG_TUSB_MCU=OPT_MCU_LPC18XX;CFG_TUSB_MEM_SECTION= __attribute__((section(".bss2")))"
|
||||||
|
c_user_include_directories="../../src;$(rootDir)/hw;$(rootDir)/src;$(lpcDir)//inc;$(lpcDir)//inc/config_18xx"
|
||||||
|
debug_register_definition_file="$(ProjectDir)/LPC18xx_Registers.xml"
|
||||||
|
debug_target_connection="J-Link"
|
||||||
|
gcc_entry_point="Reset_Handler"
|
||||||
|
linker_memory_map_file="$(ProjectDir)/LPC1857_MemoryMap.xml"
|
||||||
|
linker_section_placement_file="$(ProjectDir)/flash_placement.xml"
|
||||||
|
macros="DeviceFamily=LPC1800;DeviceSubFamily=LPC185x;Target=LPC1857;Placement=Flash;rootDir=../../../../..;lpcDir=../../../../../hw/mcu/nxp/lpc_chip_18xx"
|
||||||
|
package_dependencies="LPC1800"
|
||||||
|
project_directory=""
|
||||||
|
project_type="Executable"
|
||||||
|
target_reset_script="Reset();"
|
||||||
|
target_trace_initialize_script="EnableTrace("$(TraceInterfaceType)")" />
|
||||||
|
<folder Name="System Files">
|
||||||
|
<file file_name="thumb_crt0.s" />
|
||||||
|
<file file_name="LPC1800_Startup.s" />
|
||||||
|
<file file_name="LPC18xx_Vectors.s">
|
||||||
|
<configuration Name="Common" file_type="Assembly" />
|
||||||
|
</file>
|
||||||
|
<file file_name="LPC1857_MemoryMap.xml" />
|
||||||
|
<file file_name="flash_placement.xml" />
|
||||||
|
<file file_name="LPC1800_Target.js">
|
||||||
|
<configuration Name="Common" file_type="Reset Script" />
|
||||||
|
</file>
|
||||||
|
</folder>
|
||||||
|
<configuration
|
||||||
|
Name="Debug"
|
||||||
|
link_use_linker_script_file="No"
|
||||||
|
linker_section_placement_file="flash_placement.xml" />
|
||||||
|
<folder Name="hw">
|
||||||
|
<folder Name="bsp">
|
||||||
|
<file file_name="../../../../../hw/bsp/ansi_escape.h" />
|
||||||
|
<file file_name="../../../../../hw/bsp/board.h" />
|
||||||
|
<folder Name="mcb1800">
|
||||||
|
<file file_name="../../../../../hw/bsp/mcb1800/board_mcb1800.c" />
|
||||||
|
<file file_name="../../../../../hw/bsp/mcb1800/board_mcb1800.h" />
|
||||||
|
</folder>
|
||||||
|
</folder>
|
||||||
|
<folder Name="mcu">
|
||||||
|
<folder Name="nxp">
|
||||||
|
<folder Name="lpc_chip_18xx">
|
||||||
|
<folder Name="inc">
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_18xx/inc/arm_common_tables.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_18xx/inc/arm_math.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_18xx/inc/cguccu_18xx_43xx.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_18xx/inc/chip.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_18xx/inc/chip_clocks.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_18xx/inc/chip_lpc18xx.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_18xx/inc/chip_lpc43xx.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_18xx/inc/clock_18xx_43xx.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_18xx/inc/cmsis.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_18xx/inc/cmsis_18xx.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_18xx/inc/cmsis_43xx.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_18xx/inc/cmsis_43xx_m0app.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_18xx/inc/cmsis_43xx_m0sub.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_18xx/inc/core_cm0.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_18xx/inc/core_cm0plus.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_18xx/inc/core_cm3.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_18xx/inc/core_cm4.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_18xx/inc/core_cm4_simd.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_18xx/inc/core_cmFunc.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_18xx/inc/core_cmInstr.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_18xx/inc/core_sc000.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_18xx/inc/core_sc300.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_18xx/inc/creg_18xx_43xx.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_18xx/inc/gpio_18xx_43xx.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_18xx/inc/lpc_types.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_18xx/inc/uart_18xx_43xx.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_18xx/inc/usbhs_18xx_43xx.h" />
|
||||||
|
<folder Name="config_18xx">
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_18xx/inc/config_18xx/cmsis_18xx.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_18xx/inc/config_18xx/sys_config.h" />
|
||||||
|
</folder>
|
||||||
|
</folder>
|
||||||
|
<folder Name="src">
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_18xx/src/chip_18xx_43xx.c" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_18xx/src/clock_18xx_43xx.c" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_18xx/src/gpio_18xx_43xx.c" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_18xx/src/sysinit_18xx_43xx.c" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_18xx/src/uart_18xx_43xx.c" />
|
||||||
|
</folder>
|
||||||
|
</folder>
|
||||||
|
</folder>
|
||||||
|
</folder>
|
||||||
|
</folder>
|
||||||
|
<folder
|
||||||
|
Name="segger_rtt"
|
||||||
|
exclude=""
|
||||||
|
filter="*.c;*.h"
|
||||||
|
path="../../../../../lib/segger_rtt"
|
||||||
|
recurse="No" />
|
||||||
|
<folder
|
||||||
|
Name="src"
|
||||||
|
exclude=""
|
||||||
|
filter="*.c;*.h"
|
||||||
|
path="../../src"
|
||||||
|
recurse="Yes" />
|
||||||
|
<folder
|
||||||
|
Name="tinyusb"
|
||||||
|
exclude=""
|
||||||
|
filter="*.c;*.h"
|
||||||
|
path="../../../../../src"
|
||||||
|
recurse="Yes" />
|
||||||
|
</project>
|
||||||
|
<configuration
|
||||||
|
Name="MCB1800"
|
||||||
|
c_preprocessor_definitions="DEBUG"
|
||||||
|
gcc_debugging_level="Level 3"
|
||||||
|
gcc_optimization_level="None" />
|
||||||
|
</solution>
|
415
examples/host/cdc_msc_hid/ses/lpc18xx/thumb_crt0.s
Normal file
415
examples/host/cdc_msc_hid/ses/lpc18xx/thumb_crt0.s
Normal file
@ -0,0 +1,415 @@
|
|||||||
|
// **********************************************************************
|
||||||
|
// * SEGGER Microcontroller GmbH *
|
||||||
|
// * The Embedded Experts *
|
||||||
|
// **********************************************************************
|
||||||
|
// * *
|
||||||
|
// * (c) 2014 - 2018 SEGGER Microcontroller GmbH *
|
||||||
|
// * (c) 2001 - 2018 Rowley Associates Limited *
|
||||||
|
// * *
|
||||||
|
// * www.segger.com Support: support@segger.com *
|
||||||
|
// * *
|
||||||
|
// **********************************************************************
|
||||||
|
// * *
|
||||||
|
// * All rights reserved. *
|
||||||
|
// * *
|
||||||
|
// * Redistribution and use in source and binary forms, with or *
|
||||||
|
// * without modification, are permitted provided that the following *
|
||||||
|
// * conditions are met: *
|
||||||
|
// * *
|
||||||
|
// * - Redistributions of source code must retain the above copyright *
|
||||||
|
// * notice, this list of conditions and the following disclaimer. *
|
||||||
|
// * *
|
||||||
|
// * - Neither the name of SEGGER Microcontroller GmbH *
|
||||||
|
// * nor the names of its contributors may be used to endorse or *
|
||||||
|
// * promote products derived from this software without specific *
|
||||||
|
// * prior written permission. *
|
||||||
|
// * *
|
||||||
|
// * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND *
|
||||||
|
// * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, *
|
||||||
|
// * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF *
|
||||||
|
// * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE *
|
||||||
|
// * DISCLAIMED. *
|
||||||
|
// * IN NO EVENT SHALL SEGGER Microcontroller GmbH BE LIABLE FOR *
|
||||||
|
// * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR *
|
||||||
|
// * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT *
|
||||||
|
// * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; *
|
||||||
|
// * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF *
|
||||||
|
// * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT *
|
||||||
|
// * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE *
|
||||||
|
// * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH *
|
||||||
|
// * DAMAGE. *
|
||||||
|
// * *
|
||||||
|
// **********************************************************************
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// Preprocessor Definitions
|
||||||
|
// ------------------------
|
||||||
|
// APP_ENTRY_POINT
|
||||||
|
//
|
||||||
|
// Defines the application entry point function, if undefined this setting
|
||||||
|
// defaults to "main".
|
||||||
|
//
|
||||||
|
// INITIALIZE_STACK
|
||||||
|
//
|
||||||
|
// If defined, the contents of the stack will be initialized to a the
|
||||||
|
// value 0xCC.
|
||||||
|
//
|
||||||
|
// INITIALIZE_SECONDARY_SECTIONS
|
||||||
|
//
|
||||||
|
// If defined, the .data2, .text2, .rodata2 and .bss2 sections will be initialized.
|
||||||
|
//
|
||||||
|
// INITIALIZE_TCM_SECTIONS
|
||||||
|
//
|
||||||
|
// If defined, the .data_tcm, .text_tcm, .rodata_tcm and .bss_tcm sections
|
||||||
|
// will be initialized.
|
||||||
|
//
|
||||||
|
// INITIALIZE_USER_SECTIONS
|
||||||
|
//
|
||||||
|
// If defined, the function InitializeUserMemorySections will be called prior
|
||||||
|
// to entering main in order to allow the user to initialize any user defined
|
||||||
|
// memory sections.
|
||||||
|
//
|
||||||
|
// FULL_LIBRARY
|
||||||
|
//
|
||||||
|
// If defined then
|
||||||
|
// - argc, argv are setup by the debug_getargs.
|
||||||
|
// - the exit symbol is defined and executes on return from main.
|
||||||
|
// - the exit symbol calls destructors, atexit functions and then debug_exit.
|
||||||
|
//
|
||||||
|
// If not defined then
|
||||||
|
// - argc and argv are zero.
|
||||||
|
// - the exit symbol is defined, executes on return from main and loops
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef APP_ENTRY_POINT
|
||||||
|
#define APP_ENTRY_POINT main
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef ARGSSPACE
|
||||||
|
#define ARGSSPACE 128
|
||||||
|
#endif
|
||||||
|
.syntax unified
|
||||||
|
|
||||||
|
.global _start
|
||||||
|
.extern APP_ENTRY_POINT
|
||||||
|
.global exit
|
||||||
|
.weak exit
|
||||||
|
|
||||||
|
#ifdef INITIALIZE_USER_SECTIONS
|
||||||
|
.extern InitializeUserMemorySections
|
||||||
|
#endif
|
||||||
|
|
||||||
|
.section .init, "ax"
|
||||||
|
.code 16
|
||||||
|
.balign 2
|
||||||
|
.thumb_func
|
||||||
|
|
||||||
|
_start:
|
||||||
|
/* Set up main stack if size > 0 */
|
||||||
|
ldr r1, =__stack_end__
|
||||||
|
ldr r0, =__stack_start__
|
||||||
|
subs r2, r1, r0
|
||||||
|
beq 1f
|
||||||
|
#ifdef __ARM_EABI__
|
||||||
|
movs r2, #0x7
|
||||||
|
bics r1, r2
|
||||||
|
#endif
|
||||||
|
mov sp, r1
|
||||||
|
#ifdef INITIALIZE_STACK
|
||||||
|
movs r2, #0xCC
|
||||||
|
ldr r0, =__stack_start__
|
||||||
|
bl memory_set
|
||||||
|
#endif
|
||||||
|
1:
|
||||||
|
|
||||||
|
/* Set up process stack if size > 0 */
|
||||||
|
ldr r1, =__stack_process_end__
|
||||||
|
ldr r0, =__stack_process_start__
|
||||||
|
subs r2, r1, r0
|
||||||
|
beq 1f
|
||||||
|
#ifdef __ARM_EABI__
|
||||||
|
movs r2, #0x7
|
||||||
|
bics r1, r2
|
||||||
|
#endif
|
||||||
|
msr psp, r1
|
||||||
|
movs r2, #2
|
||||||
|
msr control, r2
|
||||||
|
#ifdef INITIALIZE_STACK
|
||||||
|
movs r2, #0xCC
|
||||||
|
bl memory_set
|
||||||
|
#endif
|
||||||
|
1:
|
||||||
|
|
||||||
|
/* Copy initialized memory sections into RAM (if necessary). */
|
||||||
|
ldr r0, =__data_load_start__
|
||||||
|
ldr r1, =__data_start__
|
||||||
|
ldr r2, =__data_end__
|
||||||
|
bl memory_copy
|
||||||
|
ldr r0, =__text_load_start__
|
||||||
|
ldr r1, =__text_start__
|
||||||
|
ldr r2, =__text_end__
|
||||||
|
bl memory_copy
|
||||||
|
ldr r0, =__fast_load_start__
|
||||||
|
ldr r1, =__fast_start__
|
||||||
|
ldr r2, =__fast_end__
|
||||||
|
bl memory_copy
|
||||||
|
ldr r0, =__ctors_load_start__
|
||||||
|
ldr r1, =__ctors_start__
|
||||||
|
ldr r2, =__ctors_end__
|
||||||
|
bl memory_copy
|
||||||
|
ldr r0, =__dtors_load_start__
|
||||||
|
ldr r1, =__dtors_start__
|
||||||
|
ldr r2, =__dtors_end__
|
||||||
|
bl memory_copy
|
||||||
|
ldr r0, =__rodata_load_start__
|
||||||
|
ldr r1, =__rodata_start__
|
||||||
|
ldr r2, =__rodata_end__
|
||||||
|
bl memory_copy
|
||||||
|
ldr r0, =__tdata_load_start__
|
||||||
|
ldr r1, =__tdata_start__
|
||||||
|
ldr r2, =__tdata_end__
|
||||||
|
bl memory_copy
|
||||||
|
#ifdef INITIALIZE_SECONDARY_SECTIONS
|
||||||
|
ldr r0, =__data2_load_start__
|
||||||
|
ldr r1, =__data2_start__
|
||||||
|
ldr r2, =__data2_end__
|
||||||
|
bl memory_copy
|
||||||
|
ldr r0, =__text2_load_start__
|
||||||
|
ldr r1, =__text2_start__
|
||||||
|
ldr r2, =__text2_end__
|
||||||
|
bl memory_copy
|
||||||
|
ldr r0, =__rodata2_load_start__
|
||||||
|
ldr r1, =__rodata2_start__
|
||||||
|
ldr r2, =__rodata2_end__
|
||||||
|
bl memory_copy
|
||||||
|
#endif /* #ifdef INITIALIZE_SECONDARY_SECTIONS */
|
||||||
|
#ifdef INITIALIZE_TCM_SECTIONS
|
||||||
|
ldr r0, =__data_tcm_load_start__
|
||||||
|
ldr r1, =__data_tcm_start__
|
||||||
|
ldr r2, =__data_tcm_end__
|
||||||
|
bl memory_copy
|
||||||
|
ldr r0, =__text_tcm_load_start__
|
||||||
|
ldr r1, =__text_tcm_start__
|
||||||
|
ldr r2, =__text_tcm_end__
|
||||||
|
bl memory_copy
|
||||||
|
ldr r0, =__rodata_tcm_load_start__
|
||||||
|
ldr r1, =__rodata_tcm_start__
|
||||||
|
ldr r2, =__rodata_tcm_end__
|
||||||
|
bl memory_copy
|
||||||
|
#endif /* #ifdef INITIALIZE_TCM_SECTIONS */
|
||||||
|
|
||||||
|
/* Zero the bss. */
|
||||||
|
ldr r0, =__bss_start__
|
||||||
|
ldr r1, =__bss_end__
|
||||||
|
movs r2, #0
|
||||||
|
bl memory_set
|
||||||
|
ldr r0, =__tbss_start__
|
||||||
|
ldr r1, =__tbss_end__
|
||||||
|
movs r2, #0
|
||||||
|
bl memory_set
|
||||||
|
#ifdef INITIALIZE_SECONDARY_SECTIONS
|
||||||
|
ldr r0, =__bss2_start__
|
||||||
|
ldr r1, =__bss2_end__
|
||||||
|
mov r2, #0
|
||||||
|
bl memory_set
|
||||||
|
#endif /* #ifdef INITIALIZE_SECONDARY_SECTIONS */
|
||||||
|
#ifdef INITIALIZE_TCM_SECTIONS
|
||||||
|
ldr r0, =__bss_tcm_start__
|
||||||
|
ldr r1, =__bss_tcm_end__
|
||||||
|
mov r2, #0
|
||||||
|
bl memory_set
|
||||||
|
#endif /* #ifdef INITIALIZE_TCM_SECTIONS */
|
||||||
|
|
||||||
|
/* Initialize the heap */
|
||||||
|
ldr r0, = __heap_start__
|
||||||
|
ldr r1, = __heap_end__
|
||||||
|
subs r1, r1, r0
|
||||||
|
cmp r1, #8
|
||||||
|
blt 1f
|
||||||
|
movs r2, #0
|
||||||
|
str r2, [r0]
|
||||||
|
adds r0, r0, #4
|
||||||
|
str r1, [r0]
|
||||||
|
1:
|
||||||
|
|
||||||
|
#ifdef INITIALIZE_USER_SECTIONS
|
||||||
|
ldr r2, =InitializeUserMemorySections
|
||||||
|
blx r2
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Call constructors */
|
||||||
|
ldr r0, =__ctors_start__
|
||||||
|
ldr r1, =__ctors_end__
|
||||||
|
ctor_loop:
|
||||||
|
cmp r0, r1
|
||||||
|
beq ctor_end
|
||||||
|
ldr r2, [r0]
|
||||||
|
adds r0, #4
|
||||||
|
push {r0-r1}
|
||||||
|
blx r2
|
||||||
|
pop {r0-r1}
|
||||||
|
b ctor_loop
|
||||||
|
ctor_end:
|
||||||
|
|
||||||
|
/* Setup initial call frame */
|
||||||
|
movs r0, #0
|
||||||
|
mov lr, r0
|
||||||
|
mov r12, sp
|
||||||
|
|
||||||
|
.type start, function
|
||||||
|
start:
|
||||||
|
/* Jump to application entry point */
|
||||||
|
#ifdef FULL_LIBRARY
|
||||||
|
movs r0, #ARGSSPACE
|
||||||
|
ldr r1, =args
|
||||||
|
ldr r2, =debug_getargs
|
||||||
|
blx r2
|
||||||
|
ldr r1, =args
|
||||||
|
#else
|
||||||
|
movs r0, #0
|
||||||
|
movs r1, #0
|
||||||
|
#endif
|
||||||
|
ldr r2, =APP_ENTRY_POINT
|
||||||
|
blx r2
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
exit:
|
||||||
|
#ifdef FULL_LIBRARY
|
||||||
|
mov r5, r0 // save the exit parameter/return result
|
||||||
|
|
||||||
|
/* Call destructors */
|
||||||
|
ldr r0, =__dtors_start__
|
||||||
|
ldr r1, =__dtors_end__
|
||||||
|
dtor_loop:
|
||||||
|
cmp r0, r1
|
||||||
|
beq dtor_end
|
||||||
|
ldr r2, [r0]
|
||||||
|
add r0, #4
|
||||||
|
push {r0-r1}
|
||||||
|
blx r2
|
||||||
|
pop {r0-r1}
|
||||||
|
b dtor_loop
|
||||||
|
dtor_end:
|
||||||
|
|
||||||
|
/* Call atexit functions */
|
||||||
|
ldr r2, =_execute_at_exit_fns
|
||||||
|
blx r2
|
||||||
|
|
||||||
|
/* Call debug_exit with return result/exit parameter */
|
||||||
|
mov r0, r5
|
||||||
|
ldr r2, =debug_exit
|
||||||
|
blx r2
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Returned from application entry point, loop forever. */
|
||||||
|
exit_loop:
|
||||||
|
b exit_loop
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
memory_copy:
|
||||||
|
cmp r0, r1
|
||||||
|
beq 2f
|
||||||
|
subs r2, r2, r1
|
||||||
|
beq 2f
|
||||||
|
1:
|
||||||
|
ldrb r3, [r0]
|
||||||
|
adds r0, r0, #1
|
||||||
|
strb r3, [r1]
|
||||||
|
adds r1, r1, #1
|
||||||
|
subs r2, r2, #1
|
||||||
|
bne 1b
|
||||||
|
2:
|
||||||
|
bx lr
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
memory_set:
|
||||||
|
cmp r0, r1
|
||||||
|
beq 1f
|
||||||
|
strb r2, [r0]
|
||||||
|
adds r0, r0, #1
|
||||||
|
b memory_set
|
||||||
|
1:
|
||||||
|
bx lr
|
||||||
|
|
||||||
|
// default C/C++ library helpers
|
||||||
|
|
||||||
|
.macro HELPER helper_name
|
||||||
|
.section .text.\helper_name, "ax", %progbits
|
||||||
|
.balign 2
|
||||||
|
.global \helper_name
|
||||||
|
.weak \helper_name
|
||||||
|
\helper_name:
|
||||||
|
.thumb_func
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro JUMPTO name
|
||||||
|
#if defined(__thumb__) && !defined(__thumb2__)
|
||||||
|
mov r12, r0
|
||||||
|
ldr r0, =\name
|
||||||
|
push {r0}
|
||||||
|
mov r0, r12
|
||||||
|
pop {pc}
|
||||||
|
#else
|
||||||
|
b \name
|
||||||
|
#endif
|
||||||
|
.endm
|
||||||
|
|
||||||
|
HELPER __aeabi_read_tp
|
||||||
|
ldr r0, =__tbss_start__-8
|
||||||
|
bx lr
|
||||||
|
HELPER abort
|
||||||
|
b .
|
||||||
|
HELPER __assert
|
||||||
|
b .
|
||||||
|
HELPER __aeabi_assert
|
||||||
|
b .
|
||||||
|
HELPER __sync_synchronize
|
||||||
|
bx lr
|
||||||
|
HELPER __getchar
|
||||||
|
JUMPTO debug_getchar
|
||||||
|
HELPER __putchar
|
||||||
|
JUMPTO debug_putchar
|
||||||
|
HELPER __open
|
||||||
|
JUMPTO debug_fopen
|
||||||
|
HELPER __close
|
||||||
|
JUMPTO debug_fclose
|
||||||
|
HELPER __write
|
||||||
|
mov r3, r0
|
||||||
|
mov r0, r1
|
||||||
|
movs r1, #1
|
||||||
|
JUMPTO debug_fwrite
|
||||||
|
HELPER __read
|
||||||
|
mov r3, r0
|
||||||
|
mov r0, r1
|
||||||
|
movs r1, #1
|
||||||
|
JUMPTO debug_fread
|
||||||
|
HELPER __seek
|
||||||
|
push {r4, lr}
|
||||||
|
mov r4, r0
|
||||||
|
bl debug_fseek
|
||||||
|
cmp r0, #0
|
||||||
|
bne 1f
|
||||||
|
mov r0, r4
|
||||||
|
bl debug_ftell
|
||||||
|
pop {r4, pc}
|
||||||
|
1:
|
||||||
|
ldr r0, =-1
|
||||||
|
pop {r4, pc}
|
||||||
|
// char __user_locale_name_buffer[];
|
||||||
|
.section .bss.__user_locale_name_buffer, "aw", %nobits
|
||||||
|
.global __user_locale_name_buffer
|
||||||
|
.weak __user_locale_name_buffer
|
||||||
|
__user_locale_name_buffer:
|
||||||
|
.word 0x0
|
||||||
|
|
||||||
|
#ifdef FULL_LIBRARY
|
||||||
|
.bss
|
||||||
|
args:
|
||||||
|
.space ARGSSPACE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Setup attibutes of stack and heap sections so they don't take up room in the elf file */
|
||||||
|
.section .stack, "wa", %nobits
|
||||||
|
.section .stack_process, "wa", %nobits
|
||||||
|
.section .heap, "wa", %nobits
|
||||||
|
|
128
examples/host/cdc_msc_hid/ses/lpc40xx/LPC4000_Startup.s
Normal file
128
examples/host/cdc_msc_hid/ses/lpc40xx/LPC4000_Startup.s
Normal file
@ -0,0 +1,128 @@
|
|||||||
|
/*****************************************************************************
|
||||||
|
* SEGGER Microcontroller GmbH & Co. KG *
|
||||||
|
* Solutions for real time microcontroller applications *
|
||||||
|
*****************************************************************************
|
||||||
|
* *
|
||||||
|
* (c) 2017 SEGGER Microcontroller GmbH & Co. KG *
|
||||||
|
* *
|
||||||
|
* Internet: www.segger.com Support: support@segger.com *
|
||||||
|
* *
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
|
/*****************************************************************************
|
||||||
|
* Preprocessor Definitions *
|
||||||
|
* ------------------------ *
|
||||||
|
* NO_FPU_ENABLE *
|
||||||
|
* *
|
||||||
|
* If defined, FPU will not be enabled. *
|
||||||
|
* *
|
||||||
|
* NO_STACK_INIT *
|
||||||
|
* *
|
||||||
|
* If defined, the stack pointer will not be initialised. *
|
||||||
|
* *
|
||||||
|
* NO_SYSTEM_INIT *
|
||||||
|
* *
|
||||||
|
* If defined, the SystemInit() function will not be called. By default *
|
||||||
|
* SystemInit() is called after reset to enable the clocks and memories to *
|
||||||
|
* be initialised prior to any C startup initialisation. *
|
||||||
|
* *
|
||||||
|
* NO_VTOR_CONFIG *
|
||||||
|
* *
|
||||||
|
* If defined, the vector table offset register will not be configured. *
|
||||||
|
* *
|
||||||
|
* MEMORY_INIT *
|
||||||
|
* *
|
||||||
|
* If defined, the MemoryInit() function will be called. By default *
|
||||||
|
* MemoryInit() is called after SystemInit() to enable an external memory *
|
||||||
|
* controller. *
|
||||||
|
* *
|
||||||
|
* STACK_INIT_VAL *
|
||||||
|
* *
|
||||||
|
* If defined, specifies the initial stack pointer value. If undefined, *
|
||||||
|
* the stack pointer will be initialised to point to the end of the *
|
||||||
|
* RAM segment. *
|
||||||
|
* *
|
||||||
|
* VECTORS_IN_RAM *
|
||||||
|
* *
|
||||||
|
* If defined, the exception vectors will be copied from Flash to RAM. *
|
||||||
|
* *
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
|
.syntax unified
|
||||||
|
|
||||||
|
.global Reset_Handler
|
||||||
|
.extern _vectors
|
||||||
|
|
||||||
|
.section .init, "ax"
|
||||||
|
.thumb_func
|
||||||
|
|
||||||
|
.equ VTOR_REG, 0xE000ED08
|
||||||
|
.equ FPU_CPACR_REG, 0xE000ED88
|
||||||
|
|
||||||
|
#ifndef STACK_INIT_VAL
|
||||||
|
#define STACK_INIT_VAL __RAM_segment_end__
|
||||||
|
#endif
|
||||||
|
|
||||||
|
Reset_Handler:
|
||||||
|
#ifndef NO_STACK_INIT
|
||||||
|
/* Initialise main stack */
|
||||||
|
ldr r0, =STACK_INIT_VAL
|
||||||
|
bic r0, #0x7
|
||||||
|
mov sp, r0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef NO_SYSTEM_INIT
|
||||||
|
/* Initialise system */
|
||||||
|
ldr r0, =SystemInit
|
||||||
|
blx r0
|
||||||
|
.pushsection .init_array, "aw", %init_array
|
||||||
|
.word SystemCoreClockUpdate
|
||||||
|
.popsection
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef MEMORY_INIT
|
||||||
|
ldr r0, =MemoryInit
|
||||||
|
blx r0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef VECTORS_IN_RAM
|
||||||
|
/* Copy exception vectors into RAM */
|
||||||
|
ldr r0, =__vectors_start__
|
||||||
|
ldr r1, =__vectors_end__
|
||||||
|
ldr r2, =__vectors_ram_start__
|
||||||
|
1:
|
||||||
|
cmp r0, r1
|
||||||
|
beq 2f
|
||||||
|
ldr r3, [r0]
|
||||||
|
str r3, [r2]
|
||||||
|
adds r0, r0, #4
|
||||||
|
adds r2, r2, #4
|
||||||
|
b 1b
|
||||||
|
2:
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef NO_VTOR_CONFIG
|
||||||
|
/* Configure vector table offset register */
|
||||||
|
ldr r0, =VTOR_REG
|
||||||
|
#ifdef VECTORS_IN_RAM
|
||||||
|
ldr r1, =_vectors_ram
|
||||||
|
#else
|
||||||
|
ldr r1, =_vectors
|
||||||
|
#endif
|
||||||
|
str r1, [r0]
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (defined(__ARM_ARCH_FPV4_SP_D16__) || defined(__ARM_ARCH_FPV5_D16__)) && !defined(NO_FPU_ENABLE)
|
||||||
|
/* Enable FPU */
|
||||||
|
ldr r0, =FPU_CPACR_REG
|
||||||
|
ldr r1, [r0]
|
||||||
|
orr r1, r1, #(0xF << 20)
|
||||||
|
str r1, [r0]
|
||||||
|
dsb
|
||||||
|
isb
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Jump to program start */
|
||||||
|
b _start
|
||||||
|
|
||||||
|
|
19
examples/host/cdc_msc_hid/ses/lpc40xx/LPC4000_Target.js
Normal file
19
examples/host/cdc_msc_hid/ses/lpc40xx/LPC4000_Target.js
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
/*****************************************************************************
|
||||||
|
* SEGGER Microcontroller GmbH & Co. KG *
|
||||||
|
* Solutions for real time microcontroller applications *
|
||||||
|
*****************************************************************************
|
||||||
|
* *
|
||||||
|
* (c) 2017 SEGGER Microcontroller GmbH & Co. KG *
|
||||||
|
* *
|
||||||
|
* Internet: www.segger.com Support: support@segger.com *
|
||||||
|
* *
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
|
function Reset() {
|
||||||
|
TargetInterface.resetAndStop();
|
||||||
|
}
|
||||||
|
|
||||||
|
function EnableTrace(traceInterfaceType) {
|
||||||
|
// TODO: Enable trace
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,6 @@
|
|||||||
|
<!DOCTYPE Board_Memory_Definition_File>
|
||||||
|
<root name="LPC4088FBD208">
|
||||||
|
<MemorySegment name="FLASH" start="0x00000000" size="0x00080000" access="ReadOnly" />
|
||||||
|
<MemorySegment name="RAM" start="0x10000000" size="0x00010000" access="Read/Write" />
|
||||||
|
<MemorySegment name="RAM2" start="0x20000000" size="0x00008000" access="Read/Write" />
|
||||||
|
</root>
|
18992
examples/host/cdc_msc_hid/ses/lpc40xx/LPC408x_7x_Registers.xml
Normal file
18992
examples/host/cdc_msc_hid/ses/lpc40xx/LPC408x_7x_Registers.xml
Normal file
File diff suppressed because it is too large
Load Diff
458
examples/host/cdc_msc_hid/ses/lpc40xx/LPC408x_7x_Vectors.s
Normal file
458
examples/host/cdc_msc_hid/ses/lpc40xx/LPC408x_7x_Vectors.s
Normal file
@ -0,0 +1,458 @@
|
|||||||
|
/*****************************************************************************
|
||||||
|
* SEGGER Microcontroller GmbH & Co. KG *
|
||||||
|
* Solutions for real time microcontroller applications *
|
||||||
|
*****************************************************************************
|
||||||
|
* *
|
||||||
|
* (c) 2017 SEGGER Microcontroller GmbH & Co. KG *
|
||||||
|
* *
|
||||||
|
* Internet: www.segger.com Support: support@segger.com *
|
||||||
|
* *
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
|
/*****************************************************************************
|
||||||
|
* Preprocessor Definitions *
|
||||||
|
* ------------------------ *
|
||||||
|
* VECTORS_IN_RAM *
|
||||||
|
* *
|
||||||
|
* If defined, an area of RAM will large enough to store the vector table *
|
||||||
|
* will be reserved. *
|
||||||
|
* *
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
|
.syntax unified
|
||||||
|
.code 16
|
||||||
|
|
||||||
|
.section .init, "ax"
|
||||||
|
.align 0
|
||||||
|
|
||||||
|
/*****************************************************************************
|
||||||
|
* Default Exception Handlers *
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak NMI_Handler
|
||||||
|
NMI_Handler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak HardFault_Handler
|
||||||
|
HardFault_Handler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak SVC_Handler
|
||||||
|
SVC_Handler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak PendSV_Handler
|
||||||
|
PendSV_Handler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak SysTick_Handler
|
||||||
|
SysTick_Handler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
Dummy_Handler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
#if defined(__OPTIMIZATION_SMALL)
|
||||||
|
|
||||||
|
.weak WWDT_IRQHandler
|
||||||
|
.thumb_set WWDT_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak TIMER0_IRQHandler
|
||||||
|
.thumb_set TIMER0_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak TIMER1_IRQHandler
|
||||||
|
.thumb_set TIMER1_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak TIMER2_IRQHandler
|
||||||
|
.thumb_set TIMER2_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak TIMER3_IRQHandler
|
||||||
|
.thumb_set TIMER3_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak UART0_IRQHandler
|
||||||
|
.thumb_set UART0_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak UART1_IRQHandler
|
||||||
|
.thumb_set UART1_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak UART2_IRQHandler
|
||||||
|
.thumb_set UART2_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak UART3_IRQHandler
|
||||||
|
.thumb_set UART3_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak PWM1_IRQHandler
|
||||||
|
.thumb_set PWM1_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak I2C0_IRQHandler
|
||||||
|
.thumb_set I2C0_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak I2C1_IRQHandler
|
||||||
|
.thumb_set I2C1_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak I2C2_IRQHandler
|
||||||
|
.thumb_set I2C2_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak SSP0_IRQHandler
|
||||||
|
.thumb_set SSP0_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak SSP1_IRQHandler
|
||||||
|
.thumb_set SSP1_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak RTC_IRQHandler
|
||||||
|
.thumb_set RTC_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak EINT0_IRQHandler
|
||||||
|
.thumb_set EINT0_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak EINT1_IRQHandler
|
||||||
|
.thumb_set EINT1_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak EINT2_IRQHandler
|
||||||
|
.thumb_set EINT2_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak EINT3_IRQHandler
|
||||||
|
.thumb_set EINT3_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak ADC_IRQHandler
|
||||||
|
.thumb_set ADC_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak BOD_IRQHandler
|
||||||
|
.thumb_set BOD_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak USB_IRQHandler
|
||||||
|
.thumb_set USB_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak CAN_IRQHandler
|
||||||
|
.thumb_set CAN_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak GPDMA_IRQHandler
|
||||||
|
.thumb_set GPDMA_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak I2S_IRQHandler
|
||||||
|
.thumb_set I2S_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak ETHERNET_IRQHandler
|
||||||
|
.thumb_set ETHERNET_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak SDMMC_IRQHandler
|
||||||
|
.thumb_set SDMMC_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak MCPWM_IRQHandler
|
||||||
|
.thumb_set MCPWM_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak QEI_IRQHandler
|
||||||
|
.thumb_set QEI_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak USB_NEED_CLK_IRQHandler
|
||||||
|
.thumb_set USB_NEED_CLK_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak UART4_IRQHandler
|
||||||
|
.thumb_set UART4_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak SSP2_IRQHandler
|
||||||
|
.thumb_set SSP2_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak LCD_IRQHandler
|
||||||
|
.thumb_set LCD_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak GPIOINT_IRQHandler
|
||||||
|
.thumb_set GPIOINT_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak PWM0_IRQHandler
|
||||||
|
.thumb_set PWM0_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak EEPROM_IRQHandler
|
||||||
|
.thumb_set EEPROM_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak CMP0_IRQHandler
|
||||||
|
.thumb_set CMP0_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak CMP1_IRQHandler
|
||||||
|
.thumb_set CMP1_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak WWDT_IRQHandler
|
||||||
|
WWDT_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak TIMER0_IRQHandler
|
||||||
|
TIMER0_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak TIMER1_IRQHandler
|
||||||
|
TIMER1_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak TIMER2_IRQHandler
|
||||||
|
TIMER2_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak TIMER3_IRQHandler
|
||||||
|
TIMER3_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak UART0_IRQHandler
|
||||||
|
UART0_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak UART1_IRQHandler
|
||||||
|
UART1_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak UART2_IRQHandler
|
||||||
|
UART2_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak UART3_IRQHandler
|
||||||
|
UART3_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak PWM1_IRQHandler
|
||||||
|
PWM1_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak I2C0_IRQHandler
|
||||||
|
I2C0_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak I2C1_IRQHandler
|
||||||
|
I2C1_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak I2C2_IRQHandler
|
||||||
|
I2C2_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak SSP0_IRQHandler
|
||||||
|
SSP0_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak SSP1_IRQHandler
|
||||||
|
SSP1_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak RTC_IRQHandler
|
||||||
|
RTC_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak EINT0_IRQHandler
|
||||||
|
EINT0_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak EINT1_IRQHandler
|
||||||
|
EINT1_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak EINT2_IRQHandler
|
||||||
|
EINT2_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak EINT3_IRQHandler
|
||||||
|
EINT3_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak ADC_IRQHandler
|
||||||
|
ADC_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak BOD_IRQHandler
|
||||||
|
BOD_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak USB_IRQHandler
|
||||||
|
USB_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak CAN_IRQHandler
|
||||||
|
CAN_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak GPDMA_IRQHandler
|
||||||
|
GPDMA_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak I2S_IRQHandler
|
||||||
|
I2S_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak ETHERNET_IRQHandler
|
||||||
|
ETHERNET_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak SDMMC_IRQHandler
|
||||||
|
SDMMC_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak MCPWM_IRQHandler
|
||||||
|
MCPWM_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak QEI_IRQHandler
|
||||||
|
QEI_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak USB_NEED_CLK_IRQHandler
|
||||||
|
USB_NEED_CLK_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak UART4_IRQHandler
|
||||||
|
UART4_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak SSP2_IRQHandler
|
||||||
|
SSP2_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak LCD_IRQHandler
|
||||||
|
LCD_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak GPIOINT_IRQHandler
|
||||||
|
GPIOINT_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak PWM0_IRQHandler
|
||||||
|
PWM0_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak EEPROM_IRQHandler
|
||||||
|
EEPROM_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak CMP0_IRQHandler
|
||||||
|
CMP0_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak CMP1_IRQHandler
|
||||||
|
CMP1_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*****************************************************************************
|
||||||
|
* Vector Table *
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
|
.section .vectors, "ax"
|
||||||
|
.align 0
|
||||||
|
.global _vectors
|
||||||
|
.extern __stack_end__
|
||||||
|
.extern Reset_Handler
|
||||||
|
|
||||||
|
_vectors:
|
||||||
|
.word __stack_end__
|
||||||
|
.word Reset_Handler
|
||||||
|
.word NMI_Handler
|
||||||
|
.word HardFault_Handler
|
||||||
|
.word 0 /* Reserved */
|
||||||
|
.word 0 /* Reserved */
|
||||||
|
.word 0 /* Reserved */
|
||||||
|
.word 0 /* Reserved */
|
||||||
|
.word 0 /* Reserved */
|
||||||
|
.word 0 /* Reserved */
|
||||||
|
.word 0 /* Reserved */
|
||||||
|
.word SVC_Handler
|
||||||
|
.word 0 /* Reserved */
|
||||||
|
.word 0 /* Reserved */
|
||||||
|
.word PendSV_Handler
|
||||||
|
.word SysTick_Handler
|
||||||
|
.word WWDT_IRQHandler
|
||||||
|
.word TIMER0_IRQHandler
|
||||||
|
.word TIMER1_IRQHandler
|
||||||
|
.word TIMER2_IRQHandler
|
||||||
|
.word TIMER3_IRQHandler
|
||||||
|
.word UART0_IRQHandler
|
||||||
|
.word UART1_IRQHandler
|
||||||
|
.word UART2_IRQHandler
|
||||||
|
.word UART3_IRQHandler
|
||||||
|
.word PWM1_IRQHandler
|
||||||
|
.word I2C0_IRQHandler
|
||||||
|
.word I2C1_IRQHandler
|
||||||
|
.word I2C2_IRQHandler
|
||||||
|
.word Dummy_Handler /* Reserved */
|
||||||
|
.word SSP0_IRQHandler
|
||||||
|
.word SSP1_IRQHandler
|
||||||
|
.word Dummy_Handler /* Reserved */
|
||||||
|
.word RTC_IRQHandler
|
||||||
|
.word EINT0_IRQHandler
|
||||||
|
.word EINT1_IRQHandler
|
||||||
|
.word EINT2_IRQHandler
|
||||||
|
.word EINT3_IRQHandler
|
||||||
|
.word ADC_IRQHandler
|
||||||
|
.word BOD_IRQHandler
|
||||||
|
.word USB_IRQHandler
|
||||||
|
.word CAN_IRQHandler
|
||||||
|
.word GPDMA_IRQHandler
|
||||||
|
.word I2S_IRQHandler
|
||||||
|
.word ETHERNET_IRQHandler
|
||||||
|
.word SDMMC_IRQHandler
|
||||||
|
.word MCPWM_IRQHandler
|
||||||
|
.word QEI_IRQHandler
|
||||||
|
.word Dummy_Handler /* Reserved */
|
||||||
|
.word USB_NEED_CLK_IRQHandler
|
||||||
|
.word Dummy_Handler /* Reserved */
|
||||||
|
.word UART4_IRQHandler
|
||||||
|
.word SSP2_IRQHandler
|
||||||
|
.word LCD_IRQHandler
|
||||||
|
.word GPIOINT_IRQHandler
|
||||||
|
.word PWM0_IRQHandler
|
||||||
|
.word EEPROM_IRQHandler
|
||||||
|
.word CMP0_IRQHandler
|
||||||
|
.word CMP1_IRQHandler
|
||||||
|
_vectors_end:
|
||||||
|
|
||||||
|
#ifdef VECTORS_IN_RAM
|
||||||
|
.section .vectors_ram, "ax"
|
||||||
|
.align 0
|
||||||
|
.global _vectors_ram
|
||||||
|
|
||||||
|
_vectors_ram:
|
||||||
|
.space _vectors_end - _vectors, 0
|
||||||
|
#endif
|
37
examples/host/cdc_msc_hid/ses/lpc40xx/flash_placement.xml
Normal file
37
examples/host/cdc_msc_hid/ses/lpc40xx/flash_placement.xml
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
<!DOCTYPE Linker_Placement_File>
|
||||||
|
<Root name="Flash Section Placement">
|
||||||
|
<MemorySegment name="$(FLASH_NAME:FLASH)">
|
||||||
|
<ProgramSection alignment="0x100" load="Yes" name=".vectors" start="$(FLASH_START:)" />
|
||||||
|
<ProgramSection alignment="4" load="Yes" name=".init" />
|
||||||
|
<ProgramSection alignment="4" load="Yes" name=".init_rodata" />
|
||||||
|
<ProgramSection alignment="4" load="Yes" name=".text" />
|
||||||
|
<ProgramSection alignment="4" load="Yes" name=".dtors" />
|
||||||
|
<ProgramSection alignment="4" load="Yes" name=".ctors" />
|
||||||
|
<ProgramSection alignment="4" load="Yes" name=".rodata" />
|
||||||
|
<ProgramSection alignment="4" load="Yes" name=".ARM.exidx" address_symbol="__exidx_start" end_symbol="__exidx_end" />
|
||||||
|
<ProgramSection alignment="4" load="Yes" runin=".fast_run" name=".fast" />
|
||||||
|
<ProgramSection alignment="4" load="Yes" runin=".data_run" name=".data" />
|
||||||
|
<ProgramSection alignment="4" load="Yes" runin=".tdata_run" name=".tdata" />
|
||||||
|
</MemorySegment>
|
||||||
|
<MemorySegment name="$(RAM_NAME:RAM);SRAM">
|
||||||
|
<ProgramSection alignment="0x100" load="No" name=".vectors_ram" start="$(RAM_START:$(SRAM_START:))" />
|
||||||
|
<ProgramSection alignment="4" load="No" name=".fast_run" />
|
||||||
|
<ProgramSection alignment="4" load="No" name=".data_run" />
|
||||||
|
<ProgramSection alignment="4" load="No" name=".bss" />
|
||||||
|
<ProgramSection alignment="4" load="No" name=".tbss" />
|
||||||
|
<ProgramSection alignment="4" load="No" name=".tdata_run" />
|
||||||
|
<ProgramSection alignment="4" load="No" name=".non_init" />
|
||||||
|
<ProgramSection alignment="4" size="__HEAPSIZE__" load="No" name=".heap" />
|
||||||
|
<ProgramSection alignment="8" size="__STACKSIZE__" load="No" place_from_segment_end="Yes" name=".stack" />
|
||||||
|
<ProgramSection alignment="8" size="__STACKSIZE_PROCESS__" load="No" name=".stack_process" />
|
||||||
|
</MemorySegment>
|
||||||
|
<MemorySegment name="$(FLASH2_NAME:FLASH2)">
|
||||||
|
<ProgramSection alignment="4" load="Yes" name=".text2" />
|
||||||
|
<ProgramSection alignment="4" load="Yes" name=".rodata2" />
|
||||||
|
<ProgramSection alignment="4" load="Yes" runin=".data2_run" name=".data2" />
|
||||||
|
</MemorySegment>
|
||||||
|
<MemorySegment name="$(RAM2_NAME:RAM2)">
|
||||||
|
<ProgramSection alignment="4" load="No" name=".data2_run" />
|
||||||
|
<ProgramSection alignment="4" load="No" name=".bss2" />
|
||||||
|
</MemorySegment>
|
||||||
|
</Root>
|
119
examples/host/cdc_msc_hid/ses/lpc40xx/lpc40xx.emProject
Normal file
119
examples/host/cdc_msc_hid/ses/lpc40xx/lpc40xx.emProject
Normal file
@ -0,0 +1,119 @@
|
|||||||
|
<!DOCTYPE CrossStudio_Project_File>
|
||||||
|
<solution Name="lpc40xx" target="8" version="2">
|
||||||
|
<project Name="lpc40xx">
|
||||||
|
<configuration
|
||||||
|
Name="Common"
|
||||||
|
Placement="Flash"
|
||||||
|
Target="LPC4088FBD208"
|
||||||
|
arm_architecture="v7EM"
|
||||||
|
arm_core_type="Cortex-M4"
|
||||||
|
arm_endian="Little"
|
||||||
|
arm_fp_abi="Hard"
|
||||||
|
arm_fpu_type="FPv4-SP-D16"
|
||||||
|
arm_interwork="No"
|
||||||
|
arm_linker_heap_size="256"
|
||||||
|
arm_linker_process_stack_size="0"
|
||||||
|
arm_linker_stack_size="256"
|
||||||
|
arm_simulator_memory_simulation_parameter="ROM;0x00000000;0x00080000;RAM;0x10000000;0x00010000;RAM;0x20000000;0x00008000"
|
||||||
|
arm_target_debug_interface_type="ADIv5"
|
||||||
|
arm_target_device_name="LPC4088"
|
||||||
|
arm_target_interface_type="SWD"
|
||||||
|
c_preprocessor_definitions="CORE_M4;__LPC4000_FAMILY;__LPC408x_SUBFAMILY;ARM_MATH_CM4;FLASH_PLACEMENT=1;BOARD_EA4088QS;CFG_TUSB_MCU=OPT_MCU_LPC40XX;CFG_TUSB_MEM_SECTION= __attribute__((section(".bss2")))"
|
||||||
|
c_user_include_directories="../../src;$(rootDir)/hw;$(rootDir)/src;$(lpcDir)/inc"
|
||||||
|
debug_register_definition_file="$(ProjectDir)/LPC408x_7x_Registers.xml"
|
||||||
|
debug_target_connection="J-Link"
|
||||||
|
gcc_enable_all_warnings="Yes"
|
||||||
|
gcc_entry_point="Reset_Handler"
|
||||||
|
linker_memory_map_file="$(ProjectDir)/LPC4088FBD208_MemoryMap.xml"
|
||||||
|
linker_section_placement_file="$(ProjectDir)/flash_placement.xml"
|
||||||
|
macros="DeviceFamily=LPC4000;DeviceSubFamily=LPC408x;Target=LPC4088FBD208;Placement=Flash;rootDir=../../../../..;lpcDir=../../../../../hw/mcu/nxp/lpc_chip_40xx"
|
||||||
|
package_dependencies="LPC4000"
|
||||||
|
project_directory=""
|
||||||
|
project_type="Executable"
|
||||||
|
target_reset_script="Reset();"
|
||||||
|
target_trace_initialize_script="EnableTrace("$(TraceInterfaceType)")" />
|
||||||
|
<folder Name="System Files">
|
||||||
|
<file file_name="thumb_crt0.s" />
|
||||||
|
<file file_name="LPC4000_Startup.s" />
|
||||||
|
<file file_name="LPC408x_7x_Vectors.s">
|
||||||
|
<configuration Name="Common" file_type="Assembly" />
|
||||||
|
</file>
|
||||||
|
<file file_name="LPC4088FBD208_MemoryMap.xml" />
|
||||||
|
<file file_name="flash_placement.xml" />
|
||||||
|
<file file_name="LPC4000_Target.js">
|
||||||
|
<configuration Name="Common" file_type="Reset Script" />
|
||||||
|
</file>
|
||||||
|
</folder>
|
||||||
|
<configuration
|
||||||
|
Name="EA4088 QuickStart"
|
||||||
|
link_use_linker_script_file="No"
|
||||||
|
linker_section_placement_file="flash_placement.xml" />
|
||||||
|
<folder Name="hw">
|
||||||
|
<folder Name="bsp">
|
||||||
|
<file file_name="../../../../../hw/bsp/ansi_escape.h" />
|
||||||
|
<file file_name="../../../../../hw/bsp/board.h" />
|
||||||
|
<folder Name="ea4088qs">
|
||||||
|
<file file_name="../../../../../hw/bsp/ea4088qs/board_ea4088qs.c" />
|
||||||
|
<file file_name="../../../../../hw/bsp/ea4088qs/board_ea4088qs.h" />
|
||||||
|
</folder>
|
||||||
|
</folder>
|
||||||
|
<folder Name="mcu">
|
||||||
|
<folder Name="nxp">
|
||||||
|
<folder Name="lpc_chip_40xx">
|
||||||
|
<folder Name="inc">
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_40xx/inc/chip.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_40xx/inc/chip_lpc175x_6x.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_40xx/inc/chip_lpc177x_8x.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_40xx/inc/chip_lpc407x_8x.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_40xx/inc/clock_17xx_40xx.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_40xx/inc/cmsis.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_40xx/inc/cmsis_40xx.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_40xx/inc/core_cm4.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_40xx/inc/core_cm4_simd.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_40xx/inc/core_cmFunc.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_40xx/inc/core_cmInstr.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_40xx/inc/gpio_17xx_40xx.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_40xx/inc/sys_config.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_40xx/inc/sysctl_17xx_40xx.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_40xx/inc/uart_17xx_40xx.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_40xx/inc/usb_17xx_40xx.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_40xx/inc/iocon_17xx_40xx.h" />
|
||||||
|
</folder>
|
||||||
|
<folder Name="src">
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_40xx/src/chip_17xx_40xx.c" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_40xx/src/clock_17xx_40xx.c" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_40xx/src/gpio_17xx_40xx.c" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_40xx/src/iocon_17xx_40xx.c" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_40xx/src/sysctl_17xx_40xx.c" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_40xx/src/sysinit_17xx_40xx.c" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_40xx/src/uart_17xx_40xx.c" />
|
||||||
|
</folder>
|
||||||
|
</folder>
|
||||||
|
</folder>
|
||||||
|
</folder>
|
||||||
|
</folder>
|
||||||
|
<folder
|
||||||
|
Name="segger_rtt"
|
||||||
|
exclude=""
|
||||||
|
filter="*.c;*.h"
|
||||||
|
path="../../../../../lib/segger_rtt"
|
||||||
|
recurse="No" />
|
||||||
|
<folder
|
||||||
|
Name="src"
|
||||||
|
exclude=""
|
||||||
|
filter="*.c;*.h"
|
||||||
|
path="../../src"
|
||||||
|
recurse="Yes" />
|
||||||
|
<folder
|
||||||
|
Name="tinyusb"
|
||||||
|
exclude=""
|
||||||
|
filter="*.c;*.h"
|
||||||
|
path="../../../../../src"
|
||||||
|
recurse="Yes" />
|
||||||
|
</project>
|
||||||
|
<configuration
|
||||||
|
Name="EA4088 QuickStart"
|
||||||
|
c_preprocessor_definitions="DEBUG"
|
||||||
|
gcc_debugging_level="Level 3"
|
||||||
|
gcc_optimization_level="None" />
|
||||||
|
</solution>
|
415
examples/host/cdc_msc_hid/ses/lpc40xx/thumb_crt0.s
Normal file
415
examples/host/cdc_msc_hid/ses/lpc40xx/thumb_crt0.s
Normal file
@ -0,0 +1,415 @@
|
|||||||
|
// **********************************************************************
|
||||||
|
// * SEGGER Microcontroller GmbH *
|
||||||
|
// * The Embedded Experts *
|
||||||
|
// **********************************************************************
|
||||||
|
// * *
|
||||||
|
// * (c) 2014 - 2018 SEGGER Microcontroller GmbH *
|
||||||
|
// * (c) 2001 - 2018 Rowley Associates Limited *
|
||||||
|
// * *
|
||||||
|
// * www.segger.com Support: support@segger.com *
|
||||||
|
// * *
|
||||||
|
// **********************************************************************
|
||||||
|
// * *
|
||||||
|
// * All rights reserved. *
|
||||||
|
// * *
|
||||||
|
// * Redistribution and use in source and binary forms, with or *
|
||||||
|
// * without modification, are permitted provided that the following *
|
||||||
|
// * conditions are met: *
|
||||||
|
// * *
|
||||||
|
// * - Redistributions of source code must retain the above copyright *
|
||||||
|
// * notice, this list of conditions and the following disclaimer. *
|
||||||
|
// * *
|
||||||
|
// * - Neither the name of SEGGER Microcontroller GmbH *
|
||||||
|
// * nor the names of its contributors may be used to endorse or *
|
||||||
|
// * promote products derived from this software without specific *
|
||||||
|
// * prior written permission. *
|
||||||
|
// * *
|
||||||
|
// * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND *
|
||||||
|
// * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, *
|
||||||
|
// * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF *
|
||||||
|
// * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE *
|
||||||
|
// * DISCLAIMED. *
|
||||||
|
// * IN NO EVENT SHALL SEGGER Microcontroller GmbH BE LIABLE FOR *
|
||||||
|
// * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR *
|
||||||
|
// * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT *
|
||||||
|
// * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; *
|
||||||
|
// * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF *
|
||||||
|
// * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT *
|
||||||
|
// * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE *
|
||||||
|
// * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH *
|
||||||
|
// * DAMAGE. *
|
||||||
|
// * *
|
||||||
|
// **********************************************************************
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// Preprocessor Definitions
|
||||||
|
// ------------------------
|
||||||
|
// APP_ENTRY_POINT
|
||||||
|
//
|
||||||
|
// Defines the application entry point function, if undefined this setting
|
||||||
|
// defaults to "main".
|
||||||
|
//
|
||||||
|
// INITIALIZE_STACK
|
||||||
|
//
|
||||||
|
// If defined, the contents of the stack will be initialized to a the
|
||||||
|
// value 0xCC.
|
||||||
|
//
|
||||||
|
// INITIALIZE_SECONDARY_SECTIONS
|
||||||
|
//
|
||||||
|
// If defined, the .data2, .text2, .rodata2 and .bss2 sections will be initialized.
|
||||||
|
//
|
||||||
|
// INITIALIZE_TCM_SECTIONS
|
||||||
|
//
|
||||||
|
// If defined, the .data_tcm, .text_tcm, .rodata_tcm and .bss_tcm sections
|
||||||
|
// will be initialized.
|
||||||
|
//
|
||||||
|
// INITIALIZE_USER_SECTIONS
|
||||||
|
//
|
||||||
|
// If defined, the function InitializeUserMemorySections will be called prior
|
||||||
|
// to entering main in order to allow the user to initialize any user defined
|
||||||
|
// memory sections.
|
||||||
|
//
|
||||||
|
// FULL_LIBRARY
|
||||||
|
//
|
||||||
|
// If defined then
|
||||||
|
// - argc, argv are setup by the debug_getargs.
|
||||||
|
// - the exit symbol is defined and executes on return from main.
|
||||||
|
// - the exit symbol calls destructors, atexit functions and then debug_exit.
|
||||||
|
//
|
||||||
|
// If not defined then
|
||||||
|
// - argc and argv are zero.
|
||||||
|
// - the exit symbol is defined, executes on return from main and loops
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef APP_ENTRY_POINT
|
||||||
|
#define APP_ENTRY_POINT main
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef ARGSSPACE
|
||||||
|
#define ARGSSPACE 128
|
||||||
|
#endif
|
||||||
|
.syntax unified
|
||||||
|
|
||||||
|
.global _start
|
||||||
|
.extern APP_ENTRY_POINT
|
||||||
|
.global exit
|
||||||
|
.weak exit
|
||||||
|
|
||||||
|
#ifdef INITIALIZE_USER_SECTIONS
|
||||||
|
.extern InitializeUserMemorySections
|
||||||
|
#endif
|
||||||
|
|
||||||
|
.section .init, "ax"
|
||||||
|
.code 16
|
||||||
|
.balign 2
|
||||||
|
.thumb_func
|
||||||
|
|
||||||
|
_start:
|
||||||
|
/* Set up main stack if size > 0 */
|
||||||
|
ldr r1, =__stack_end__
|
||||||
|
ldr r0, =__stack_start__
|
||||||
|
subs r2, r1, r0
|
||||||
|
beq 1f
|
||||||
|
#ifdef __ARM_EABI__
|
||||||
|
movs r2, #0x7
|
||||||
|
bics r1, r2
|
||||||
|
#endif
|
||||||
|
mov sp, r1
|
||||||
|
#ifdef INITIALIZE_STACK
|
||||||
|
movs r2, #0xCC
|
||||||
|
ldr r0, =__stack_start__
|
||||||
|
bl memory_set
|
||||||
|
#endif
|
||||||
|
1:
|
||||||
|
|
||||||
|
/* Set up process stack if size > 0 */
|
||||||
|
ldr r1, =__stack_process_end__
|
||||||
|
ldr r0, =__stack_process_start__
|
||||||
|
subs r2, r1, r0
|
||||||
|
beq 1f
|
||||||
|
#ifdef __ARM_EABI__
|
||||||
|
movs r2, #0x7
|
||||||
|
bics r1, r2
|
||||||
|
#endif
|
||||||
|
msr psp, r1
|
||||||
|
movs r2, #2
|
||||||
|
msr control, r2
|
||||||
|
#ifdef INITIALIZE_STACK
|
||||||
|
movs r2, #0xCC
|
||||||
|
bl memory_set
|
||||||
|
#endif
|
||||||
|
1:
|
||||||
|
|
||||||
|
/* Copy initialized memory sections into RAM (if necessary). */
|
||||||
|
ldr r0, =__data_load_start__
|
||||||
|
ldr r1, =__data_start__
|
||||||
|
ldr r2, =__data_end__
|
||||||
|
bl memory_copy
|
||||||
|
ldr r0, =__text_load_start__
|
||||||
|
ldr r1, =__text_start__
|
||||||
|
ldr r2, =__text_end__
|
||||||
|
bl memory_copy
|
||||||
|
ldr r0, =__fast_load_start__
|
||||||
|
ldr r1, =__fast_start__
|
||||||
|
ldr r2, =__fast_end__
|
||||||
|
bl memory_copy
|
||||||
|
ldr r0, =__ctors_load_start__
|
||||||
|
ldr r1, =__ctors_start__
|
||||||
|
ldr r2, =__ctors_end__
|
||||||
|
bl memory_copy
|
||||||
|
ldr r0, =__dtors_load_start__
|
||||||
|
ldr r1, =__dtors_start__
|
||||||
|
ldr r2, =__dtors_end__
|
||||||
|
bl memory_copy
|
||||||
|
ldr r0, =__rodata_load_start__
|
||||||
|
ldr r1, =__rodata_start__
|
||||||
|
ldr r2, =__rodata_end__
|
||||||
|
bl memory_copy
|
||||||
|
ldr r0, =__tdata_load_start__
|
||||||
|
ldr r1, =__tdata_start__
|
||||||
|
ldr r2, =__tdata_end__
|
||||||
|
bl memory_copy
|
||||||
|
#ifdef INITIALIZE_SECONDARY_SECTIONS
|
||||||
|
ldr r0, =__data2_load_start__
|
||||||
|
ldr r1, =__data2_start__
|
||||||
|
ldr r2, =__data2_end__
|
||||||
|
bl memory_copy
|
||||||
|
ldr r0, =__text2_load_start__
|
||||||
|
ldr r1, =__text2_start__
|
||||||
|
ldr r2, =__text2_end__
|
||||||
|
bl memory_copy
|
||||||
|
ldr r0, =__rodata2_load_start__
|
||||||
|
ldr r1, =__rodata2_start__
|
||||||
|
ldr r2, =__rodata2_end__
|
||||||
|
bl memory_copy
|
||||||
|
#endif /* #ifdef INITIALIZE_SECONDARY_SECTIONS */
|
||||||
|
#ifdef INITIALIZE_TCM_SECTIONS
|
||||||
|
ldr r0, =__data_tcm_load_start__
|
||||||
|
ldr r1, =__data_tcm_start__
|
||||||
|
ldr r2, =__data_tcm_end__
|
||||||
|
bl memory_copy
|
||||||
|
ldr r0, =__text_tcm_load_start__
|
||||||
|
ldr r1, =__text_tcm_start__
|
||||||
|
ldr r2, =__text_tcm_end__
|
||||||
|
bl memory_copy
|
||||||
|
ldr r0, =__rodata_tcm_load_start__
|
||||||
|
ldr r1, =__rodata_tcm_start__
|
||||||
|
ldr r2, =__rodata_tcm_end__
|
||||||
|
bl memory_copy
|
||||||
|
#endif /* #ifdef INITIALIZE_TCM_SECTIONS */
|
||||||
|
|
||||||
|
/* Zero the bss. */
|
||||||
|
ldr r0, =__bss_start__
|
||||||
|
ldr r1, =__bss_end__
|
||||||
|
movs r2, #0
|
||||||
|
bl memory_set
|
||||||
|
ldr r0, =__tbss_start__
|
||||||
|
ldr r1, =__tbss_end__
|
||||||
|
movs r2, #0
|
||||||
|
bl memory_set
|
||||||
|
#ifdef INITIALIZE_SECONDARY_SECTIONS
|
||||||
|
ldr r0, =__bss2_start__
|
||||||
|
ldr r1, =__bss2_end__
|
||||||
|
mov r2, #0
|
||||||
|
bl memory_set
|
||||||
|
#endif /* #ifdef INITIALIZE_SECONDARY_SECTIONS */
|
||||||
|
#ifdef INITIALIZE_TCM_SECTIONS
|
||||||
|
ldr r0, =__bss_tcm_start__
|
||||||
|
ldr r1, =__bss_tcm_end__
|
||||||
|
mov r2, #0
|
||||||
|
bl memory_set
|
||||||
|
#endif /* #ifdef INITIALIZE_TCM_SECTIONS */
|
||||||
|
|
||||||
|
/* Initialize the heap */
|
||||||
|
ldr r0, = __heap_start__
|
||||||
|
ldr r1, = __heap_end__
|
||||||
|
subs r1, r1, r0
|
||||||
|
cmp r1, #8
|
||||||
|
blt 1f
|
||||||
|
movs r2, #0
|
||||||
|
str r2, [r0]
|
||||||
|
adds r0, r0, #4
|
||||||
|
str r1, [r0]
|
||||||
|
1:
|
||||||
|
|
||||||
|
#ifdef INITIALIZE_USER_SECTIONS
|
||||||
|
ldr r2, =InitializeUserMemorySections
|
||||||
|
blx r2
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Call constructors */
|
||||||
|
ldr r0, =__ctors_start__
|
||||||
|
ldr r1, =__ctors_end__
|
||||||
|
ctor_loop:
|
||||||
|
cmp r0, r1
|
||||||
|
beq ctor_end
|
||||||
|
ldr r2, [r0]
|
||||||
|
adds r0, #4
|
||||||
|
push {r0-r1}
|
||||||
|
blx r2
|
||||||
|
pop {r0-r1}
|
||||||
|
b ctor_loop
|
||||||
|
ctor_end:
|
||||||
|
|
||||||
|
/* Setup initial call frame */
|
||||||
|
movs r0, #0
|
||||||
|
mov lr, r0
|
||||||
|
mov r12, sp
|
||||||
|
|
||||||
|
.type start, function
|
||||||
|
start:
|
||||||
|
/* Jump to application entry point */
|
||||||
|
#ifdef FULL_LIBRARY
|
||||||
|
movs r0, #ARGSSPACE
|
||||||
|
ldr r1, =args
|
||||||
|
ldr r2, =debug_getargs
|
||||||
|
blx r2
|
||||||
|
ldr r1, =args
|
||||||
|
#else
|
||||||
|
movs r0, #0
|
||||||
|
movs r1, #0
|
||||||
|
#endif
|
||||||
|
ldr r2, =APP_ENTRY_POINT
|
||||||
|
blx r2
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
exit:
|
||||||
|
#ifdef FULL_LIBRARY
|
||||||
|
mov r5, r0 // save the exit parameter/return result
|
||||||
|
|
||||||
|
/* Call destructors */
|
||||||
|
ldr r0, =__dtors_start__
|
||||||
|
ldr r1, =__dtors_end__
|
||||||
|
dtor_loop:
|
||||||
|
cmp r0, r1
|
||||||
|
beq dtor_end
|
||||||
|
ldr r2, [r0]
|
||||||
|
add r0, #4
|
||||||
|
push {r0-r1}
|
||||||
|
blx r2
|
||||||
|
pop {r0-r1}
|
||||||
|
b dtor_loop
|
||||||
|
dtor_end:
|
||||||
|
|
||||||
|
/* Call atexit functions */
|
||||||
|
ldr r2, =_execute_at_exit_fns
|
||||||
|
blx r2
|
||||||
|
|
||||||
|
/* Call debug_exit with return result/exit parameter */
|
||||||
|
mov r0, r5
|
||||||
|
ldr r2, =debug_exit
|
||||||
|
blx r2
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Returned from application entry point, loop forever. */
|
||||||
|
exit_loop:
|
||||||
|
b exit_loop
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
memory_copy:
|
||||||
|
cmp r0, r1
|
||||||
|
beq 2f
|
||||||
|
subs r2, r2, r1
|
||||||
|
beq 2f
|
||||||
|
1:
|
||||||
|
ldrb r3, [r0]
|
||||||
|
adds r0, r0, #1
|
||||||
|
strb r3, [r1]
|
||||||
|
adds r1, r1, #1
|
||||||
|
subs r2, r2, #1
|
||||||
|
bne 1b
|
||||||
|
2:
|
||||||
|
bx lr
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
memory_set:
|
||||||
|
cmp r0, r1
|
||||||
|
beq 1f
|
||||||
|
strb r2, [r0]
|
||||||
|
adds r0, r0, #1
|
||||||
|
b memory_set
|
||||||
|
1:
|
||||||
|
bx lr
|
||||||
|
|
||||||
|
// default C/C++ library helpers
|
||||||
|
|
||||||
|
.macro HELPER helper_name
|
||||||
|
.section .text.\helper_name, "ax", %progbits
|
||||||
|
.balign 2
|
||||||
|
.global \helper_name
|
||||||
|
.weak \helper_name
|
||||||
|
\helper_name:
|
||||||
|
.thumb_func
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro JUMPTO name
|
||||||
|
#if defined(__thumb__) && !defined(__thumb2__)
|
||||||
|
mov r12, r0
|
||||||
|
ldr r0, =\name
|
||||||
|
push {r0}
|
||||||
|
mov r0, r12
|
||||||
|
pop {pc}
|
||||||
|
#else
|
||||||
|
b \name
|
||||||
|
#endif
|
||||||
|
.endm
|
||||||
|
|
||||||
|
HELPER __aeabi_read_tp
|
||||||
|
ldr r0, =__tbss_start__-8
|
||||||
|
bx lr
|
||||||
|
HELPER abort
|
||||||
|
b .
|
||||||
|
HELPER __assert
|
||||||
|
b .
|
||||||
|
HELPER __aeabi_assert
|
||||||
|
b .
|
||||||
|
HELPER __sync_synchronize
|
||||||
|
bx lr
|
||||||
|
HELPER __getchar
|
||||||
|
JUMPTO debug_getchar
|
||||||
|
HELPER __putchar
|
||||||
|
JUMPTO debug_putchar
|
||||||
|
HELPER __open
|
||||||
|
JUMPTO debug_fopen
|
||||||
|
HELPER __close
|
||||||
|
JUMPTO debug_fclose
|
||||||
|
HELPER __write
|
||||||
|
mov r3, r0
|
||||||
|
mov r0, r1
|
||||||
|
movs r1, #1
|
||||||
|
JUMPTO debug_fwrite
|
||||||
|
HELPER __read
|
||||||
|
mov r3, r0
|
||||||
|
mov r0, r1
|
||||||
|
movs r1, #1
|
||||||
|
JUMPTO debug_fread
|
||||||
|
HELPER __seek
|
||||||
|
push {r4, lr}
|
||||||
|
mov r4, r0
|
||||||
|
bl debug_fseek
|
||||||
|
cmp r0, #0
|
||||||
|
bne 1f
|
||||||
|
mov r0, r4
|
||||||
|
bl debug_ftell
|
||||||
|
pop {r4, pc}
|
||||||
|
1:
|
||||||
|
ldr r0, =-1
|
||||||
|
pop {r4, pc}
|
||||||
|
// char __user_locale_name_buffer[];
|
||||||
|
.section .bss.__user_locale_name_buffer, "aw", %nobits
|
||||||
|
.global __user_locale_name_buffer
|
||||||
|
.weak __user_locale_name_buffer
|
||||||
|
__user_locale_name_buffer:
|
||||||
|
.word 0x0
|
||||||
|
|
||||||
|
#ifdef FULL_LIBRARY
|
||||||
|
.bss
|
||||||
|
args:
|
||||||
|
.space ARGSSPACE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Setup attibutes of stack and heap sections so they don't take up room in the elf file */
|
||||||
|
.section .stack, "wa", %nobits
|
||||||
|
.section .stack_process, "wa", %nobits
|
||||||
|
.section .heap, "wa", %nobits
|
||||||
|
|
126
examples/host/cdc_msc_hid/ses/lpc43xx/LPC4300_Startup.s
Normal file
126
examples/host/cdc_msc_hid/ses/lpc43xx/LPC4300_Startup.s
Normal file
@ -0,0 +1,126 @@
|
|||||||
|
/*****************************************************************************
|
||||||
|
* SEGGER Microcontroller GmbH & Co. KG *
|
||||||
|
* Solutions for real time microcontroller applications *
|
||||||
|
*****************************************************************************
|
||||||
|
* *
|
||||||
|
* (c) 2017 SEGGER Microcontroller GmbH & Co. KG *
|
||||||
|
* *
|
||||||
|
* Internet: www.segger.com Support: support@segger.com *
|
||||||
|
* *
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
|
/*****************************************************************************
|
||||||
|
* Preprocessor Definitions *
|
||||||
|
* ------------------------ *
|
||||||
|
* NO_FPU_ENABLE *
|
||||||
|
* *
|
||||||
|
* If defined, FPU will not be enabled. *
|
||||||
|
* *
|
||||||
|
* NO_STACK_INIT *
|
||||||
|
* *
|
||||||
|
* If defined, the stack pointer will not be initialised. *
|
||||||
|
* *
|
||||||
|
* NO_SYSTEM_INIT *
|
||||||
|
* *
|
||||||
|
* If defined, the SystemInit() function will not be called. By default *
|
||||||
|
* SystemInit() is called after reset to enable the clocks and memories to *
|
||||||
|
* be initialised prior to any C startup initialisation. *
|
||||||
|
* *
|
||||||
|
* NO_VTOR_CONFIG *
|
||||||
|
* *
|
||||||
|
* If defined, the vector table offset register will not be configured. *
|
||||||
|
* *
|
||||||
|
* MEMORY_INIT *
|
||||||
|
* *
|
||||||
|
* If defined, the MemoryInit() function will be called. By default *
|
||||||
|
* MemoryInit() is called after SystemInit() to enable an external memory *
|
||||||
|
* controller. *
|
||||||
|
* *
|
||||||
|
* STACK_INIT_VAL *
|
||||||
|
* *
|
||||||
|
* If defined, specifies the initial stack pointer value. If undefined, *
|
||||||
|
* the stack pointer will be initialised to point to the end of the *
|
||||||
|
* RAM segment. *
|
||||||
|
* *
|
||||||
|
* VECTORS_IN_RAM *
|
||||||
|
* *
|
||||||
|
* If defined, the exception vectors will be copied from Flash to RAM. *
|
||||||
|
* *
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
|
.syntax unified
|
||||||
|
|
||||||
|
.global Reset_Handler
|
||||||
|
.extern _vectors
|
||||||
|
|
||||||
|
.section .init, "ax"
|
||||||
|
.thumb_func
|
||||||
|
|
||||||
|
.equ VTOR_REG, 0xE000ED08
|
||||||
|
.equ FPU_CPACR_REG, 0xE000ED88
|
||||||
|
|
||||||
|
#ifndef STACK_INIT_VAL
|
||||||
|
#define STACK_INIT_VAL __RAM_segment_end__
|
||||||
|
#endif
|
||||||
|
|
||||||
|
Reset_Handler:
|
||||||
|
#ifndef NO_STACK_INIT
|
||||||
|
/* Initialise main stack */
|
||||||
|
ldr r0, =STACK_INIT_VAL
|
||||||
|
ldr r1, =0x7
|
||||||
|
bics r0, r1
|
||||||
|
mov sp, r0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef NO_SYSTEM_INIT
|
||||||
|
/* Initialise system */
|
||||||
|
ldr r0, =SystemInit
|
||||||
|
blx r0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef MEMORY_INIT
|
||||||
|
ldr r0, =MemoryInit
|
||||||
|
blx r0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef VECTORS_IN_RAM
|
||||||
|
/* Copy exception vectors into RAM */
|
||||||
|
ldr r0, =__vectors_start__
|
||||||
|
ldr r1, =__vectors_end__
|
||||||
|
ldr r2, =__vectors_ram_start__
|
||||||
|
1:
|
||||||
|
cmp r0, r1
|
||||||
|
beq 2f
|
||||||
|
ldr r3, [r0]
|
||||||
|
str r3, [r2]
|
||||||
|
adds r0, r0, #4
|
||||||
|
adds r2, r2, #4
|
||||||
|
b 1b
|
||||||
|
2:
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef NO_VTOR_CONFIG
|
||||||
|
/* Configure vector table offset register */
|
||||||
|
ldr r0, =VTOR_REG
|
||||||
|
#ifdef VECTORS_IN_RAM
|
||||||
|
ldr r1, =_vectors_ram
|
||||||
|
#else
|
||||||
|
ldr r1, =_vectors
|
||||||
|
#endif
|
||||||
|
str r1, [r0]
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (defined(__ARM_ARCH_FPV4_SP_D16__) || defined(__ARM_ARCH_FPV5_D16__)) && !defined(NO_FPU_ENABLE)
|
||||||
|
/* Enable FPU */
|
||||||
|
ldr r0, =FPU_CPACR_REG
|
||||||
|
ldr r1, [r0]
|
||||||
|
orr r1, r1, #(0xF << 20)
|
||||||
|
str r1, [r0]
|
||||||
|
dsb
|
||||||
|
isb
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Jump to program start */
|
||||||
|
b _start
|
||||||
|
|
||||||
|
|
19
examples/host/cdc_msc_hid/ses/lpc43xx/LPC4300_Target.js
Normal file
19
examples/host/cdc_msc_hid/ses/lpc43xx/LPC4300_Target.js
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
/*****************************************************************************
|
||||||
|
* SEGGER Microcontroller GmbH & Co. KG *
|
||||||
|
* Solutions for real time microcontroller applications *
|
||||||
|
*****************************************************************************
|
||||||
|
* *
|
||||||
|
* (c) 2017 SEGGER Microcontroller GmbH & Co. KG *
|
||||||
|
* *
|
||||||
|
* Internet: www.segger.com Support: support@segger.com *
|
||||||
|
* *
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
|
function Reset() {
|
||||||
|
TargetInterface.resetAndStop();
|
||||||
|
}
|
||||||
|
|
||||||
|
function EnableTrace(traceInterfaceType) {
|
||||||
|
// TODO: Enable trace
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,7 @@
|
|||||||
|
<!DOCTYPE Board_Memory_Definition_File>
|
||||||
|
<root name="LPC4357 Cortex-M4">
|
||||||
|
<MemorySegment name="RAM" start="0x10000000" size="0x00008000" access="Read/Write" />
|
||||||
|
<MemorySegment name="FLASH" start="0x1A000000" size="0x00080000" access="ReadOnly" />
|
||||||
|
<MemorySegment name="FLASH2" start="0x1B000000" size="0x00080000" access="ReadOnly" />
|
||||||
|
<MemorySegment name="RAM2" start="0x20000000" size="0x00010000" access="Read/Write" />
|
||||||
|
</root>
|
33526
examples/host/cdc_msc_hid/ses/lpc43xx/LPC43xx_Registers.xml
Normal file
33526
examples/host/cdc_msc_hid/ses/lpc43xx/LPC43xx_Registers.xml
Normal file
File diff suppressed because it is too large
Load Diff
540
examples/host/cdc_msc_hid/ses/lpc43xx/LPC43xx_Vectors.s
Normal file
540
examples/host/cdc_msc_hid/ses/lpc43xx/LPC43xx_Vectors.s
Normal file
@ -0,0 +1,540 @@
|
|||||||
|
/*****************************************************************************
|
||||||
|
* SEGGER Microcontroller GmbH & Co. KG *
|
||||||
|
* Solutions for real time microcontroller applications *
|
||||||
|
*****************************************************************************
|
||||||
|
* *
|
||||||
|
* (c) 2017 SEGGER Microcontroller GmbH & Co. KG *
|
||||||
|
* *
|
||||||
|
* Internet: www.segger.com Support: support@segger.com *
|
||||||
|
* *
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
|
/*****************************************************************************
|
||||||
|
* Preprocessor Definitions *
|
||||||
|
* ------------------------ *
|
||||||
|
* VECTORS_IN_RAM *
|
||||||
|
* *
|
||||||
|
* If defined, an area of RAM will large enough to store the vector table *
|
||||||
|
* will be reserved. *
|
||||||
|
* *
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
|
.syntax unified
|
||||||
|
.code 16
|
||||||
|
|
||||||
|
.section .init, "ax"
|
||||||
|
.align 0
|
||||||
|
|
||||||
|
/*****************************************************************************
|
||||||
|
* Default Exception Handlers *
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak NMI_Handler
|
||||||
|
NMI_Handler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak HardFault_Handler
|
||||||
|
HardFault_Handler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak SVC_Handler
|
||||||
|
SVC_Handler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak PendSV_Handler
|
||||||
|
PendSV_Handler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak SysTick_Handler
|
||||||
|
SysTick_Handler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
Dummy_Handler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
#if defined(__OPTIMIZATION_SMALL)
|
||||||
|
|
||||||
|
.weak DAC_IRQHandler
|
||||||
|
.thumb_set DAC_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak DMA_IRQHandler
|
||||||
|
.thumb_set DMA_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak FLASH_IRQHandler
|
||||||
|
.thumb_set FLASH_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak ETHERNET_IRQHandler
|
||||||
|
.thumb_set ETHERNET_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak SDIO_IRQHandler
|
||||||
|
.thumb_set SDIO_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak LCD_IRQHandler
|
||||||
|
.thumb_set LCD_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak USB0_IRQHandler
|
||||||
|
.thumb_set USB0_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak USB1_IRQHandler
|
||||||
|
.thumb_set USB1_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak SCT_IRQHandler
|
||||||
|
.thumb_set SCT_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak RITIMER_IRQHandler
|
||||||
|
.thumb_set RITIMER_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak TIMER0_IRQHandler
|
||||||
|
.thumb_set TIMER0_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak TIMER1_IRQHandler
|
||||||
|
.thumb_set TIMER1_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak TIMER2_IRQHandler
|
||||||
|
.thumb_set TIMER2_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak TIMER3_IRQHandler
|
||||||
|
.thumb_set TIMER3_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak MCPWM_IRQHandler
|
||||||
|
.thumb_set MCPWM_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak ADC0_IRQHandler
|
||||||
|
.thumb_set ADC0_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak I2C0_IRQHandler
|
||||||
|
.thumb_set I2C0_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak I2C1_IRQHandler
|
||||||
|
.thumb_set I2C1_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak SPI_INT_IRQHandler
|
||||||
|
.thumb_set SPI_INT_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak ADC1_IRQHandler
|
||||||
|
.thumb_set ADC1_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak SSP0_IRQHandler
|
||||||
|
.thumb_set SSP0_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak SSP1_IRQHandler
|
||||||
|
.thumb_set SSP1_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak USART0_IRQHandler
|
||||||
|
.thumb_set USART0_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak UART1_IRQHandler
|
||||||
|
.thumb_set UART1_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak USART2_IRQHandler
|
||||||
|
.thumb_set USART2_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak USART3_IRQHandler
|
||||||
|
.thumb_set USART3_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak I2S0_IRQHandler
|
||||||
|
.thumb_set I2S0_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak I2S1_IRQHandler
|
||||||
|
.thumb_set I2S1_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak SPIFI_IRQHandler
|
||||||
|
.thumb_set SPIFI_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak SGPIO_IINT_IRQHandler
|
||||||
|
.thumb_set SGPIO_IINT_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak PIN_INT0_IRQHandler
|
||||||
|
.thumb_set PIN_INT0_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak PIN_INT1_IRQHandler
|
||||||
|
.thumb_set PIN_INT1_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak PIN_INT2_IRQHandler
|
||||||
|
.thumb_set PIN_INT2_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak PIN_INT3_IRQHandler
|
||||||
|
.thumb_set PIN_INT3_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak PIN_INT4_IRQHandler
|
||||||
|
.thumb_set PIN_INT4_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak PIN_INT5_IRQHandler
|
||||||
|
.thumb_set PIN_INT5_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak PIN_INT6_IRQHandler
|
||||||
|
.thumb_set PIN_INT6_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak PIN_INT7_IRQHandler
|
||||||
|
.thumb_set PIN_INT7_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak GINT0_IRQHandler
|
||||||
|
.thumb_set GINT0_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak GINT1_IRQHandler
|
||||||
|
.thumb_set GINT1_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak EVENTROUTER_IRQHandler
|
||||||
|
.thumb_set EVENTROUTER_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak C_CAN1_IRQHandler
|
||||||
|
.thumb_set C_CAN1_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak ADCHS_IRQHandler
|
||||||
|
.thumb_set ADCHS_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak ATIMER_IRQHandler
|
||||||
|
.thumb_set ATIMER_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak RTC_IRQHandler
|
||||||
|
.thumb_set RTC_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak WWDT_IRQHandler
|
||||||
|
.thumb_set WWDT_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak C_CAN0_IRQHandler
|
||||||
|
.thumb_set C_CAN0_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
.weak QEI_IRQHandler
|
||||||
|
.thumb_set QEI_IRQHandler,Dummy_Handler
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak DAC_IRQHandler
|
||||||
|
DAC_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak DMA_IRQHandler
|
||||||
|
DMA_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak FLASH_IRQHandler
|
||||||
|
FLASH_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak ETHERNET_IRQHandler
|
||||||
|
ETHERNET_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak SDIO_IRQHandler
|
||||||
|
SDIO_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak LCD_IRQHandler
|
||||||
|
LCD_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak USB0_IRQHandler
|
||||||
|
USB0_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak USB1_IRQHandler
|
||||||
|
USB1_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak SCT_IRQHandler
|
||||||
|
SCT_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak RITIMER_IRQHandler
|
||||||
|
RITIMER_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak TIMER0_IRQHandler
|
||||||
|
TIMER0_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak TIMER1_IRQHandler
|
||||||
|
TIMER1_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak TIMER2_IRQHandler
|
||||||
|
TIMER2_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak TIMER3_IRQHandler
|
||||||
|
TIMER3_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak MCPWM_IRQHandler
|
||||||
|
MCPWM_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak ADC0_IRQHandler
|
||||||
|
ADC0_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak I2C0_IRQHandler
|
||||||
|
I2C0_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak I2C1_IRQHandler
|
||||||
|
I2C1_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak SPI_INT_IRQHandler
|
||||||
|
SPI_INT_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak ADC1_IRQHandler
|
||||||
|
ADC1_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak SSP0_IRQHandler
|
||||||
|
SSP0_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak SSP1_IRQHandler
|
||||||
|
SSP1_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak USART0_IRQHandler
|
||||||
|
USART0_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak UART1_IRQHandler
|
||||||
|
UART1_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak USART2_IRQHandler
|
||||||
|
USART2_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak USART3_IRQHandler
|
||||||
|
USART3_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak I2S0_IRQHandler
|
||||||
|
I2S0_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak I2S1_IRQHandler
|
||||||
|
I2S1_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak SPIFI_IRQHandler
|
||||||
|
SPIFI_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak SGPIO_IINT_IRQHandler
|
||||||
|
SGPIO_IINT_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak PIN_INT0_IRQHandler
|
||||||
|
PIN_INT0_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak PIN_INT1_IRQHandler
|
||||||
|
PIN_INT1_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak PIN_INT2_IRQHandler
|
||||||
|
PIN_INT2_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak PIN_INT3_IRQHandler
|
||||||
|
PIN_INT3_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak PIN_INT4_IRQHandler
|
||||||
|
PIN_INT4_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak PIN_INT5_IRQHandler
|
||||||
|
PIN_INT5_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak PIN_INT6_IRQHandler
|
||||||
|
PIN_INT6_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak PIN_INT7_IRQHandler
|
||||||
|
PIN_INT7_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak GINT0_IRQHandler
|
||||||
|
GINT0_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak GINT1_IRQHandler
|
||||||
|
GINT1_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak EVENTROUTER_IRQHandler
|
||||||
|
EVENTROUTER_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak C_CAN1_IRQHandler
|
||||||
|
C_CAN1_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak ADCHS_IRQHandler
|
||||||
|
ADCHS_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak ATIMER_IRQHandler
|
||||||
|
ATIMER_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak RTC_IRQHandler
|
||||||
|
RTC_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak WWDT_IRQHandler
|
||||||
|
WWDT_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak C_CAN0_IRQHandler
|
||||||
|
C_CAN0_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
.weak QEI_IRQHandler
|
||||||
|
QEI_IRQHandler:
|
||||||
|
b .
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*****************************************************************************
|
||||||
|
* Vector Table *
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
|
.section .vectors, "ax"
|
||||||
|
.align 0
|
||||||
|
.global _vectors
|
||||||
|
.extern __stack_end__
|
||||||
|
.extern Reset_Handler
|
||||||
|
|
||||||
|
_vectors:
|
||||||
|
.word __stack_end__
|
||||||
|
.word Reset_Handler
|
||||||
|
.word NMI_Handler
|
||||||
|
.word HardFault_Handler
|
||||||
|
.word 0 /* Reserved */
|
||||||
|
.word 0 /* Reserved */
|
||||||
|
.word 0 /* Reserved */
|
||||||
|
.word 0 /* Reserved */
|
||||||
|
.word 0 /* Reserved */
|
||||||
|
.word 0 /* Reserved */
|
||||||
|
.word 0 /* Reserved */
|
||||||
|
.word SVC_Handler
|
||||||
|
.word 0 /* Reserved */
|
||||||
|
.word 0 /* Reserved */
|
||||||
|
.word PendSV_Handler
|
||||||
|
.word SysTick_Handler
|
||||||
|
.word DAC_IRQHandler
|
||||||
|
.word Dummy_Handler /* Reserved */
|
||||||
|
.word DMA_IRQHandler
|
||||||
|
.word Dummy_Handler /* Reserved */
|
||||||
|
.word FLASH_IRQHandler
|
||||||
|
.word ETHERNET_IRQHandler
|
||||||
|
.word SDIO_IRQHandler
|
||||||
|
.word LCD_IRQHandler
|
||||||
|
.word USB0_IRQHandler
|
||||||
|
.word USB1_IRQHandler
|
||||||
|
.word SCT_IRQHandler
|
||||||
|
.word RITIMER_IRQHandler
|
||||||
|
.word TIMER0_IRQHandler
|
||||||
|
.word TIMER1_IRQHandler
|
||||||
|
.word TIMER2_IRQHandler
|
||||||
|
.word TIMER3_IRQHandler
|
||||||
|
.word MCPWM_IRQHandler
|
||||||
|
.word ADC0_IRQHandler
|
||||||
|
.word I2C0_IRQHandler
|
||||||
|
.word I2C1_IRQHandler
|
||||||
|
.word SPI_INT_IRQHandler
|
||||||
|
.word ADC1_IRQHandler
|
||||||
|
.word SSP0_IRQHandler
|
||||||
|
.word SSP1_IRQHandler
|
||||||
|
.word USART0_IRQHandler
|
||||||
|
.word UART1_IRQHandler
|
||||||
|
.word USART2_IRQHandler
|
||||||
|
.word USART3_IRQHandler
|
||||||
|
.word I2S0_IRQHandler
|
||||||
|
.word I2S1_IRQHandler
|
||||||
|
.word SPIFI_IRQHandler
|
||||||
|
.word SGPIO_IINT_IRQHandler
|
||||||
|
.word PIN_INT0_IRQHandler
|
||||||
|
.word PIN_INT1_IRQHandler
|
||||||
|
.word PIN_INT2_IRQHandler
|
||||||
|
.word PIN_INT3_IRQHandler
|
||||||
|
.word PIN_INT4_IRQHandler
|
||||||
|
.word PIN_INT5_IRQHandler
|
||||||
|
.word PIN_INT6_IRQHandler
|
||||||
|
.word PIN_INT7_IRQHandler
|
||||||
|
.word GINT0_IRQHandler
|
||||||
|
.word GINT1_IRQHandler
|
||||||
|
.word EVENTROUTER_IRQHandler
|
||||||
|
.word C_CAN1_IRQHandler
|
||||||
|
.word Dummy_Handler /* Reserved */
|
||||||
|
.word ADCHS_IRQHandler
|
||||||
|
.word ATIMER_IRQHandler
|
||||||
|
.word RTC_IRQHandler
|
||||||
|
.word Dummy_Handler /* Reserved */
|
||||||
|
.word WWDT_IRQHandler
|
||||||
|
.word Dummy_Handler /* Reserved */
|
||||||
|
.word C_CAN0_IRQHandler
|
||||||
|
.word QEI_IRQHandler
|
||||||
|
_vectors_end:
|
||||||
|
|
||||||
|
#ifdef VECTORS_IN_RAM
|
||||||
|
.section .vectors_ram, "ax"
|
||||||
|
.align 0
|
||||||
|
.global _vectors_ram
|
||||||
|
|
||||||
|
_vectors_ram:
|
||||||
|
.space _vectors_end - _vectors, 0
|
||||||
|
#endif
|
37
examples/host/cdc_msc_hid/ses/lpc43xx/flash_placement.xml
Normal file
37
examples/host/cdc_msc_hid/ses/lpc43xx/flash_placement.xml
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
<!DOCTYPE Linker_Placement_File>
|
||||||
|
<Root name="Flash Section Placement">
|
||||||
|
<MemorySegment name="$(FLASH_NAME:FLASH)">
|
||||||
|
<ProgramSection alignment="0x100" load="Yes" name=".vectors" start="$(FLASH_START:)" />
|
||||||
|
<ProgramSection alignment="4" load="Yes" name=".init" />
|
||||||
|
<ProgramSection alignment="4" load="Yes" name=".init_rodata" />
|
||||||
|
<ProgramSection alignment="4" load="Yes" name=".text" />
|
||||||
|
<ProgramSection alignment="4" load="Yes" name=".dtors" />
|
||||||
|
<ProgramSection alignment="4" load="Yes" name=".ctors" />
|
||||||
|
<ProgramSection alignment="4" load="Yes" name=".rodata" />
|
||||||
|
<ProgramSection alignment="4" load="Yes" name=".ARM.exidx" address_symbol="__exidx_start" end_symbol="__exidx_end" />
|
||||||
|
<ProgramSection alignment="4" load="Yes" runin=".fast_run" name=".fast" />
|
||||||
|
<ProgramSection alignment="4" load="Yes" runin=".data_run" name=".data" />
|
||||||
|
<ProgramSection alignment="4" load="Yes" runin=".tdata_run" name=".tdata" />
|
||||||
|
</MemorySegment>
|
||||||
|
<MemorySegment name="$(RAM_NAME:RAM);SRAM">
|
||||||
|
<ProgramSection alignment="0x100" load="No" name=".vectors_ram" start="$(RAM_START:$(SRAM_START:))" />
|
||||||
|
<ProgramSection alignment="4" load="No" name=".fast_run" />
|
||||||
|
<ProgramSection alignment="4" load="No" name=".data_run" />
|
||||||
|
<ProgramSection alignment="4" load="No" name=".bss" />
|
||||||
|
<ProgramSection alignment="4" load="No" name=".tbss" />
|
||||||
|
<ProgramSection alignment="4" load="No" name=".tdata_run" />
|
||||||
|
<ProgramSection alignment="4" load="No" name=".non_init" />
|
||||||
|
<ProgramSection alignment="4" size="__HEAPSIZE__" load="No" name=".heap" />
|
||||||
|
<ProgramSection alignment="8" size="__STACKSIZE__" load="No" place_from_segment_end="Yes" name=".stack" />
|
||||||
|
<ProgramSection alignment="8" size="__STACKSIZE_PROCESS__" load="No" name=".stack_process" />
|
||||||
|
</MemorySegment>
|
||||||
|
<MemorySegment name="$(FLASH2_NAME:FLASH2)">
|
||||||
|
<ProgramSection alignment="4" load="Yes" name=".text2" />
|
||||||
|
<ProgramSection alignment="4" load="Yes" name=".rodata2" />
|
||||||
|
<ProgramSection alignment="4" load="Yes" runin=".data2_run" name=".data2" />
|
||||||
|
</MemorySegment>
|
||||||
|
<MemorySegment name="$(RAM2_NAME:RAM2)">
|
||||||
|
<ProgramSection alignment="4" load="No" name=".data2_run" />
|
||||||
|
<ProgramSection alignment="4" load="No" name=".bss2" />
|
||||||
|
</MemorySegment>
|
||||||
|
</Root>
|
133
examples/host/cdc_msc_hid/ses/lpc43xx/lpc43xx.emProject
Normal file
133
examples/host/cdc_msc_hid/ses/lpc43xx/lpc43xx.emProject
Normal file
@ -0,0 +1,133 @@
|
|||||||
|
<!DOCTYPE CrossStudio_Project_File>
|
||||||
|
<solution Name="lpc43xx" target="8" version="2">
|
||||||
|
<project Name="lpc43xx">
|
||||||
|
<configuration
|
||||||
|
Name="Common"
|
||||||
|
Placement="Flash"
|
||||||
|
Target="LPC4357 Cortex-M4"
|
||||||
|
arm_architecture="v7EM"
|
||||||
|
arm_core_type="Cortex-M4"
|
||||||
|
arm_endian="Little"
|
||||||
|
arm_fp_abi="Hard"
|
||||||
|
arm_fpu_type="FPv4-SP-D16"
|
||||||
|
arm_interwork="No"
|
||||||
|
arm_linker_heap_size="1024"
|
||||||
|
arm_linker_process_stack_size="0"
|
||||||
|
arm_linker_stack_size="1024"
|
||||||
|
arm_simulator_memory_simulation_parameter="RX 1a000000,00080000,FFFFFFFF;RWX 10000000,00008000,CDCDCDCD"
|
||||||
|
arm_target_debug_interface_type="ADIv5"
|
||||||
|
arm_target_device_name="LPC4357_M4"
|
||||||
|
arm_target_interface_type="SWD"
|
||||||
|
build_treat_warnings_as_errors="No"
|
||||||
|
c_preprocessor_definitions="CORE_M4;__LPC4300_FAMILY;__LPC435x_SUBFAMILY;ARM_MATH_CM4;FLASH_PLACEMENT=1;BOARD_EA4357;CFG_TUSB_MCU=OPT_MCU_LPC43XX;CFG_TUSB_MEM_SECTION= __attribute__((section(".bss2")))"
|
||||||
|
c_user_include_directories="../../src;$(rootDir)/hw;$(rootDir)/src;$(lpcDir)//inc;$(lpcDir)//inc/config_43xx"
|
||||||
|
debug_register_definition_file="LPC43xx_Registers.xml"
|
||||||
|
debug_target_connection="J-Link"
|
||||||
|
gcc_enable_all_warnings="Yes"
|
||||||
|
gcc_entry_point="Reset_Handler"
|
||||||
|
link_use_linker_script_file="No"
|
||||||
|
linker_memory_map_file="LPC4357 Cortex-M4_MemoryMap.xml"
|
||||||
|
linker_section_placement_file="flash_placement.xml"
|
||||||
|
linker_section_placements_segments="FLASH RX 0x1a000000 0x00080000;RAM RWX 0x10000000 0x00008000"
|
||||||
|
macros="DeviceFamily=LPC4300;DeviceSubFamily=LPC435x;Target=LPC4357 Cortex-M4;Placement=Flash;rootDir=../../../../..;lpcDir=../../../../../hw/mcu/nxp/lpc_chip_43xx"
|
||||||
|
project_directory=""
|
||||||
|
project_type="Executable"
|
||||||
|
target_reset_script="Reset();"
|
||||||
|
target_script_file="$(ProjectDir)/LPC4300_Target.js"
|
||||||
|
target_trace_initialize_script="EnableTrace("$(TraceInterfaceType)")" />
|
||||||
|
<folder
|
||||||
|
Name="tinyusb"
|
||||||
|
exclude=""
|
||||||
|
filter="*.c;*.h"
|
||||||
|
path="../../../../../src"
|
||||||
|
recurse="Yes" />
|
||||||
|
<folder Name="hw">
|
||||||
|
<folder Name="bsp">
|
||||||
|
<file file_name="../../../../../hw/bsp/ansi_escape.h" />
|
||||||
|
<file file_name="../../../../../hw/bsp/board.h" />
|
||||||
|
<folder Name="ea4357">
|
||||||
|
<file file_name="../../../../../hw/bsp/ea4357/board_ea4357.c" />
|
||||||
|
<file file_name="../../../../../hw/bsp/ea4357/board_ea4357.h" />
|
||||||
|
<file file_name="../../../../../hw/bsp/ea4357/pca9532.c" />
|
||||||
|
<file file_name="../../../../../hw/bsp/ea4357/pca9532.h" />
|
||||||
|
</folder>
|
||||||
|
</folder>
|
||||||
|
<folder Name="mcu">
|
||||||
|
<folder Name="nxp">
|
||||||
|
<folder Name="lpc_chip_43xx">
|
||||||
|
<folder Name="inc">
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_43xx/inc/arm_common_tables.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_43xx/inc/arm_math.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_43xx/inc/cguccu_18xx_43xx.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_43xx/inc/chip.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_43xx/inc/chip_clocks.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_43xx/inc/chip_lpc18xx.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_43xx/inc/chip_lpc43xx.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_43xx/inc/clock_18xx_43xx.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_43xx/inc/cmsis.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_43xx/inc/cmsis_18xx.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_43xx/inc/cmsis_43xx.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_43xx/inc/cmsis_43xx_m0app.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_43xx/inc/cmsis_43xx_m0sub.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_43xx/inc/core_cm0.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_43xx/inc/core_cm0plus.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_43xx/inc/core_cm3.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_43xx/inc/core_cm4.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_43xx/inc/core_cm4_simd.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_43xx/inc/core_cmFunc.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_43xx/inc/core_cmInstr.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_43xx/inc/core_sc000.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_43xx/inc/core_sc300.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_43xx/inc/creg_18xx_43xx.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_43xx/inc/fpu_init.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_43xx/inc/gpio_18xx_43xx.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_43xx/inc/i2c_18xx_43xx.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_43xx/inc/i2c_common_18xx_43xx.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_43xx/inc/i2cm_18xx_43xx.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_43xx/inc/lpc_types.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_43xx/inc/packing.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_43xx/inc/uart_18xx_43xx.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_43xx/inc/usbhs_18xx_43xx.h" />
|
||||||
|
<folder Name="config_43xx">
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_43xx/inc/config_43xx/cmsis_43xx.h" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_43xx/inc/config_43xx/sys_config.h" />
|
||||||
|
</folder>
|
||||||
|
</folder>
|
||||||
|
<folder Name="src">
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_43xx/src/chip_18xx_43xx.c" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_43xx/src/clock_18xx_43xx.c" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_43xx/src/fpu_init.c" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_43xx/src/gpio_18xx_43xx.c" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_43xx/src/i2c_18xx_43xx.c" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_43xx/src/i2cm_18xx_43xx.c" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_43xx/src/sysinit_18xx_43xx.c" />
|
||||||
|
<file file_name="../../../../../hw/mcu/nxp/lpc_chip_43xx/src/uart_18xx_43xx.c" />
|
||||||
|
</folder>
|
||||||
|
</folder>
|
||||||
|
</folder>
|
||||||
|
</folder>
|
||||||
|
</folder>
|
||||||
|
<configuration Name="Debug" build_treat_warnings_as_errors="Yes" />
|
||||||
|
<folder
|
||||||
|
Name="src"
|
||||||
|
exclude=""
|
||||||
|
filter="*.c;*.h"
|
||||||
|
path="../../src"
|
||||||
|
recurse="Yes" />
|
||||||
|
<folder Name="System Files">
|
||||||
|
<file file_name="flash_placement.xml" />
|
||||||
|
<file file_name="LPC4300_Startup.s" />
|
||||||
|
<file file_name="LPC4300_Target.js" />
|
||||||
|
<file file_name="LPC4357 Cortex-M4_MemoryMap.xml" />
|
||||||
|
<file file_name="LPC43xx_Registers.xml" />
|
||||||
|
<file file_name="LPC43xx_Vectors.s" />
|
||||||
|
<file file_name="thumb_crt0.s" />
|
||||||
|
</folder>
|
||||||
|
<folder
|
||||||
|
Name="segger_rtt"
|
||||||
|
exclude=""
|
||||||
|
filter="*.c;*.h"
|
||||||
|
path="../../../../../lib/segger_rtt"
|
||||||
|
recurse="No" />
|
||||||
|
</project>
|
||||||
|
</solution>
|
415
examples/host/cdc_msc_hid/ses/lpc43xx/thumb_crt0.s
Normal file
415
examples/host/cdc_msc_hid/ses/lpc43xx/thumb_crt0.s
Normal file
@ -0,0 +1,415 @@
|
|||||||
|
// **********************************************************************
|
||||||
|
// * SEGGER Microcontroller GmbH *
|
||||||
|
// * The Embedded Experts *
|
||||||
|
// **********************************************************************
|
||||||
|
// * *
|
||||||
|
// * (c) 2014 - 2018 SEGGER Microcontroller GmbH *
|
||||||
|
// * (c) 2001 - 2018 Rowley Associates Limited *
|
||||||
|
// * *
|
||||||
|
// * www.segger.com Support: support@segger.com *
|
||||||
|
// * *
|
||||||
|
// **********************************************************************
|
||||||
|
// * *
|
||||||
|
// * All rights reserved. *
|
||||||
|
// * *
|
||||||
|
// * Redistribution and use in source and binary forms, with or *
|
||||||
|
// * without modification, are permitted provided that the following *
|
||||||
|
// * conditions are met: *
|
||||||
|
// * *
|
||||||
|
// * - Redistributions of source code must retain the above copyright *
|
||||||
|
// * notice, this list of conditions and the following disclaimer. *
|
||||||
|
// * *
|
||||||
|
// * - Neither the name of SEGGER Microcontroller GmbH *
|
||||||
|
// * nor the names of its contributors may be used to endorse or *
|
||||||
|
// * promote products derived from this software without specific *
|
||||||
|
// * prior written permission. *
|
||||||
|
// * *
|
||||||
|
// * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND *
|
||||||
|
// * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, *
|
||||||
|
// * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF *
|
||||||
|
// * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE *
|
||||||
|
// * DISCLAIMED. *
|
||||||
|
// * IN NO EVENT SHALL SEGGER Microcontroller GmbH BE LIABLE FOR *
|
||||||
|
// * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR *
|
||||||
|
// * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT *
|
||||||
|
// * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; *
|
||||||
|
// * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF *
|
||||||
|
// * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT *
|
||||||
|
// * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE *
|
||||||
|
// * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH *
|
||||||
|
// * DAMAGE. *
|
||||||
|
// * *
|
||||||
|
// **********************************************************************
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// Preprocessor Definitions
|
||||||
|
// ------------------------
|
||||||
|
// APP_ENTRY_POINT
|
||||||
|
//
|
||||||
|
// Defines the application entry point function, if undefined this setting
|
||||||
|
// defaults to "main".
|
||||||
|
//
|
||||||
|
// INITIALIZE_STACK
|
||||||
|
//
|
||||||
|
// If defined, the contents of the stack will be initialized to a the
|
||||||
|
// value 0xCC.
|
||||||
|
//
|
||||||
|
// INITIALIZE_SECONDARY_SECTIONS
|
||||||
|
//
|
||||||
|
// If defined, the .data2, .text2, .rodata2 and .bss2 sections will be initialized.
|
||||||
|
//
|
||||||
|
// INITIALIZE_TCM_SECTIONS
|
||||||
|
//
|
||||||
|
// If defined, the .data_tcm, .text_tcm, .rodata_tcm and .bss_tcm sections
|
||||||
|
// will be initialized.
|
||||||
|
//
|
||||||
|
// INITIALIZE_USER_SECTIONS
|
||||||
|
//
|
||||||
|
// If defined, the function InitializeUserMemorySections will be called prior
|
||||||
|
// to entering main in order to allow the user to initialize any user defined
|
||||||
|
// memory sections.
|
||||||
|
//
|
||||||
|
// FULL_LIBRARY
|
||||||
|
//
|
||||||
|
// If defined then
|
||||||
|
// - argc, argv are setup by the debug_getargs.
|
||||||
|
// - the exit symbol is defined and executes on return from main.
|
||||||
|
// - the exit symbol calls destructors, atexit functions and then debug_exit.
|
||||||
|
//
|
||||||
|
// If not defined then
|
||||||
|
// - argc and argv are zero.
|
||||||
|
// - the exit symbol is defined, executes on return from main and loops
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef APP_ENTRY_POINT
|
||||||
|
#define APP_ENTRY_POINT main
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef ARGSSPACE
|
||||||
|
#define ARGSSPACE 128
|
||||||
|
#endif
|
||||||
|
.syntax unified
|
||||||
|
|
||||||
|
.global _start
|
||||||
|
.extern APP_ENTRY_POINT
|
||||||
|
.global exit
|
||||||
|
.weak exit
|
||||||
|
|
||||||
|
#ifdef INITIALIZE_USER_SECTIONS
|
||||||
|
.extern InitializeUserMemorySections
|
||||||
|
#endif
|
||||||
|
|
||||||
|
.section .init, "ax"
|
||||||
|
.code 16
|
||||||
|
.balign 2
|
||||||
|
.thumb_func
|
||||||
|
|
||||||
|
_start:
|
||||||
|
/* Set up main stack if size > 0 */
|
||||||
|
ldr r1, =__stack_end__
|
||||||
|
ldr r0, =__stack_start__
|
||||||
|
subs r2, r1, r0
|
||||||
|
beq 1f
|
||||||
|
#ifdef __ARM_EABI__
|
||||||
|
movs r2, #0x7
|
||||||
|
bics r1, r2
|
||||||
|
#endif
|
||||||
|
mov sp, r1
|
||||||
|
#ifdef INITIALIZE_STACK
|
||||||
|
movs r2, #0xCC
|
||||||
|
ldr r0, =__stack_start__
|
||||||
|
bl memory_set
|
||||||
|
#endif
|
||||||
|
1:
|
||||||
|
|
||||||
|
/* Set up process stack if size > 0 */
|
||||||
|
ldr r1, =__stack_process_end__
|
||||||
|
ldr r0, =__stack_process_start__
|
||||||
|
subs r2, r1, r0
|
||||||
|
beq 1f
|
||||||
|
#ifdef __ARM_EABI__
|
||||||
|
movs r2, #0x7
|
||||||
|
bics r1, r2
|
||||||
|
#endif
|
||||||
|
msr psp, r1
|
||||||
|
movs r2, #2
|
||||||
|
msr control, r2
|
||||||
|
#ifdef INITIALIZE_STACK
|
||||||
|
movs r2, #0xCC
|
||||||
|
bl memory_set
|
||||||
|
#endif
|
||||||
|
1:
|
||||||
|
|
||||||
|
/* Copy initialized memory sections into RAM (if necessary). */
|
||||||
|
ldr r0, =__data_load_start__
|
||||||
|
ldr r1, =__data_start__
|
||||||
|
ldr r2, =__data_end__
|
||||||
|
bl memory_copy
|
||||||
|
ldr r0, =__text_load_start__
|
||||||
|
ldr r1, =__text_start__
|
||||||
|
ldr r2, =__text_end__
|
||||||
|
bl memory_copy
|
||||||
|
ldr r0, =__fast_load_start__
|
||||||
|
ldr r1, =__fast_start__
|
||||||
|
ldr r2, =__fast_end__
|
||||||
|
bl memory_copy
|
||||||
|
ldr r0, =__ctors_load_start__
|
||||||
|
ldr r1, =__ctors_start__
|
||||||
|
ldr r2, =__ctors_end__
|
||||||
|
bl memory_copy
|
||||||
|
ldr r0, =__dtors_load_start__
|
||||||
|
ldr r1, =__dtors_start__
|
||||||
|
ldr r2, =__dtors_end__
|
||||||
|
bl memory_copy
|
||||||
|
ldr r0, =__rodata_load_start__
|
||||||
|
ldr r1, =__rodata_start__
|
||||||
|
ldr r2, =__rodata_end__
|
||||||
|
bl memory_copy
|
||||||
|
ldr r0, =__tdata_load_start__
|
||||||
|
ldr r1, =__tdata_start__
|
||||||
|
ldr r2, =__tdata_end__
|
||||||
|
bl memory_copy
|
||||||
|
#ifdef INITIALIZE_SECONDARY_SECTIONS
|
||||||
|
ldr r0, =__data2_load_start__
|
||||||
|
ldr r1, =__data2_start__
|
||||||
|
ldr r2, =__data2_end__
|
||||||
|
bl memory_copy
|
||||||
|
ldr r0, =__text2_load_start__
|
||||||
|
ldr r1, =__text2_start__
|
||||||
|
ldr r2, =__text2_end__
|
||||||
|
bl memory_copy
|
||||||
|
ldr r0, =__rodata2_load_start__
|
||||||
|
ldr r1, =__rodata2_start__
|
||||||
|
ldr r2, =__rodata2_end__
|
||||||
|
bl memory_copy
|
||||||
|
#endif /* #ifdef INITIALIZE_SECONDARY_SECTIONS */
|
||||||
|
#ifdef INITIALIZE_TCM_SECTIONS
|
||||||
|
ldr r0, =__data_tcm_load_start__
|
||||||
|
ldr r1, =__data_tcm_start__
|
||||||
|
ldr r2, =__data_tcm_end__
|
||||||
|
bl memory_copy
|
||||||
|
ldr r0, =__text_tcm_load_start__
|
||||||
|
ldr r1, =__text_tcm_start__
|
||||||
|
ldr r2, =__text_tcm_end__
|
||||||
|
bl memory_copy
|
||||||
|
ldr r0, =__rodata_tcm_load_start__
|
||||||
|
ldr r1, =__rodata_tcm_start__
|
||||||
|
ldr r2, =__rodata_tcm_end__
|
||||||
|
bl memory_copy
|
||||||
|
#endif /* #ifdef INITIALIZE_TCM_SECTIONS */
|
||||||
|
|
||||||
|
/* Zero the bss. */
|
||||||
|
ldr r0, =__bss_start__
|
||||||
|
ldr r1, =__bss_end__
|
||||||
|
movs r2, #0
|
||||||
|
bl memory_set
|
||||||
|
ldr r0, =__tbss_start__
|
||||||
|
ldr r1, =__tbss_end__
|
||||||
|
movs r2, #0
|
||||||
|
bl memory_set
|
||||||
|
#ifdef INITIALIZE_SECONDARY_SECTIONS
|
||||||
|
ldr r0, =__bss2_start__
|
||||||
|
ldr r1, =__bss2_end__
|
||||||
|
mov r2, #0
|
||||||
|
bl memory_set
|
||||||
|
#endif /* #ifdef INITIALIZE_SECONDARY_SECTIONS */
|
||||||
|
#ifdef INITIALIZE_TCM_SECTIONS
|
||||||
|
ldr r0, =__bss_tcm_start__
|
||||||
|
ldr r1, =__bss_tcm_end__
|
||||||
|
mov r2, #0
|
||||||
|
bl memory_set
|
||||||
|
#endif /* #ifdef INITIALIZE_TCM_SECTIONS */
|
||||||
|
|
||||||
|
/* Initialize the heap */
|
||||||
|
ldr r0, = __heap_start__
|
||||||
|
ldr r1, = __heap_end__
|
||||||
|
subs r1, r1, r0
|
||||||
|
cmp r1, #8
|
||||||
|
blt 1f
|
||||||
|
movs r2, #0
|
||||||
|
str r2, [r0]
|
||||||
|
adds r0, r0, #4
|
||||||
|
str r1, [r0]
|
||||||
|
1:
|
||||||
|
|
||||||
|
#ifdef INITIALIZE_USER_SECTIONS
|
||||||
|
ldr r2, =InitializeUserMemorySections
|
||||||
|
blx r2
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Call constructors */
|
||||||
|
ldr r0, =__ctors_start__
|
||||||
|
ldr r1, =__ctors_end__
|
||||||
|
ctor_loop:
|
||||||
|
cmp r0, r1
|
||||||
|
beq ctor_end
|
||||||
|
ldr r2, [r0]
|
||||||
|
adds r0, #4
|
||||||
|
push {r0-r1}
|
||||||
|
blx r2
|
||||||
|
pop {r0-r1}
|
||||||
|
b ctor_loop
|
||||||
|
ctor_end:
|
||||||
|
|
||||||
|
/* Setup initial call frame */
|
||||||
|
movs r0, #0
|
||||||
|
mov lr, r0
|
||||||
|
mov r12, sp
|
||||||
|
|
||||||
|
.type start, function
|
||||||
|
start:
|
||||||
|
/* Jump to application entry point */
|
||||||
|
#ifdef FULL_LIBRARY
|
||||||
|
movs r0, #ARGSSPACE
|
||||||
|
ldr r1, =args
|
||||||
|
ldr r2, =debug_getargs
|
||||||
|
blx r2
|
||||||
|
ldr r1, =args
|
||||||
|
#else
|
||||||
|
movs r0, #0
|
||||||
|
movs r1, #0
|
||||||
|
#endif
|
||||||
|
ldr r2, =APP_ENTRY_POINT
|
||||||
|
blx r2
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
exit:
|
||||||
|
#ifdef FULL_LIBRARY
|
||||||
|
mov r5, r0 // save the exit parameter/return result
|
||||||
|
|
||||||
|
/* Call destructors */
|
||||||
|
ldr r0, =__dtors_start__
|
||||||
|
ldr r1, =__dtors_end__
|
||||||
|
dtor_loop:
|
||||||
|
cmp r0, r1
|
||||||
|
beq dtor_end
|
||||||
|
ldr r2, [r0]
|
||||||
|
add r0, #4
|
||||||
|
push {r0-r1}
|
||||||
|
blx r2
|
||||||
|
pop {r0-r1}
|
||||||
|
b dtor_loop
|
||||||
|
dtor_end:
|
||||||
|
|
||||||
|
/* Call atexit functions */
|
||||||
|
ldr r2, =_execute_at_exit_fns
|
||||||
|
blx r2
|
||||||
|
|
||||||
|
/* Call debug_exit with return result/exit parameter */
|
||||||
|
mov r0, r5
|
||||||
|
ldr r2, =debug_exit
|
||||||
|
blx r2
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Returned from application entry point, loop forever. */
|
||||||
|
exit_loop:
|
||||||
|
b exit_loop
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
memory_copy:
|
||||||
|
cmp r0, r1
|
||||||
|
beq 2f
|
||||||
|
subs r2, r2, r1
|
||||||
|
beq 2f
|
||||||
|
1:
|
||||||
|
ldrb r3, [r0]
|
||||||
|
adds r0, r0, #1
|
||||||
|
strb r3, [r1]
|
||||||
|
adds r1, r1, #1
|
||||||
|
subs r2, r2, #1
|
||||||
|
bne 1b
|
||||||
|
2:
|
||||||
|
bx lr
|
||||||
|
|
||||||
|
.thumb_func
|
||||||
|
memory_set:
|
||||||
|
cmp r0, r1
|
||||||
|
beq 1f
|
||||||
|
strb r2, [r0]
|
||||||
|
adds r0, r0, #1
|
||||||
|
b memory_set
|
||||||
|
1:
|
||||||
|
bx lr
|
||||||
|
|
||||||
|
// default C/C++ library helpers
|
||||||
|
|
||||||
|
.macro HELPER helper_name
|
||||||
|
.section .text.\helper_name, "ax", %progbits
|
||||||
|
.balign 2
|
||||||
|
.global \helper_name
|
||||||
|
.weak \helper_name
|
||||||
|
\helper_name:
|
||||||
|
.thumb_func
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro JUMPTO name
|
||||||
|
#if defined(__thumb__) && !defined(__thumb2__)
|
||||||
|
mov r12, r0
|
||||||
|
ldr r0, =\name
|
||||||
|
push {r0}
|
||||||
|
mov r0, r12
|
||||||
|
pop {pc}
|
||||||
|
#else
|
||||||
|
b \name
|
||||||
|
#endif
|
||||||
|
.endm
|
||||||
|
|
||||||
|
HELPER __aeabi_read_tp
|
||||||
|
ldr r0, =__tbss_start__-8
|
||||||
|
bx lr
|
||||||
|
HELPER abort
|
||||||
|
b .
|
||||||
|
HELPER __assert
|
||||||
|
b .
|
||||||
|
HELPER __aeabi_assert
|
||||||
|
b .
|
||||||
|
HELPER __sync_synchronize
|
||||||
|
bx lr
|
||||||
|
HELPER __getchar
|
||||||
|
JUMPTO debug_getchar
|
||||||
|
HELPER __putchar
|
||||||
|
JUMPTO debug_putchar
|
||||||
|
HELPER __open
|
||||||
|
JUMPTO debug_fopen
|
||||||
|
HELPER __close
|
||||||
|
JUMPTO debug_fclose
|
||||||
|
HELPER __write
|
||||||
|
mov r3, r0
|
||||||
|
mov r0, r1
|
||||||
|
movs r1, #1
|
||||||
|
JUMPTO debug_fwrite
|
||||||
|
HELPER __read
|
||||||
|
mov r3, r0
|
||||||
|
mov r0, r1
|
||||||
|
movs r1, #1
|
||||||
|
JUMPTO debug_fread
|
||||||
|
HELPER __seek
|
||||||
|
push {r4, lr}
|
||||||
|
mov r4, r0
|
||||||
|
bl debug_fseek
|
||||||
|
cmp r0, #0
|
||||||
|
bne 1f
|
||||||
|
mov r0, r4
|
||||||
|
bl debug_ftell
|
||||||
|
pop {r4, pc}
|
||||||
|
1:
|
||||||
|
ldr r0, =-1
|
||||||
|
pop {r4, pc}
|
||||||
|
// char __user_locale_name_buffer[];
|
||||||
|
.section .bss.__user_locale_name_buffer, "aw", %nobits
|
||||||
|
.global __user_locale_name_buffer
|
||||||
|
.weak __user_locale_name_buffer
|
||||||
|
__user_locale_name_buffer:
|
||||||
|
.word 0x0
|
||||||
|
|
||||||
|
#ifdef FULL_LIBRARY
|
||||||
|
.bss
|
||||||
|
args:
|
||||||
|
.space ARGSSPACE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Setup attibutes of stack and heap sections so they don't take up room in the elf file */
|
||||||
|
.section .stack, "wa", %nobits
|
||||||
|
.section .stack_process, "wa", %nobits
|
||||||
|
.section .heap, "wa", %nobits
|
||||||
|
|
211
examples/host/cdc_msc_hid/src/main.c
Normal file
211
examples/host/cdc_msc_hid/src/main.c
Normal file
@ -0,0 +1,211 @@
|
|||||||
|
/**************************************************************************/
|
||||||
|
/*!
|
||||||
|
@file main.c
|
||||||
|
@author hathach (tinyusb.org)
|
||||||
|
|
||||||
|
@section LICENSE
|
||||||
|
|
||||||
|
Software License Agreement (BSD License)
|
||||||
|
|
||||||
|
Copyright (c) 2013, hathach (tinyusb.org)
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
1. Redistributions of source code must retain the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer.
|
||||||
|
2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer in the
|
||||||
|
documentation and/or other materials provided with the distribution.
|
||||||
|
3. Neither the name of the copyright holders nor the
|
||||||
|
names of its contributors may be used to endorse or promote products
|
||||||
|
derived from this software without specific prior written permission.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ''AS IS'' AND ANY
|
||||||
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY
|
||||||
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION HOWEVER CAUSED AND
|
||||||
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
INCLUDING NEGLIGENCE OR OTHERWISE ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
This file is part of the tinyusb stack.
|
||||||
|
*/
|
||||||
|
/**************************************************************************/
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#include "bsp/board.h"
|
||||||
|
#include "tusb.h"
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------+
|
||||||
|
// MACRO CONSTANT TYPEDEF PROTYPES
|
||||||
|
//--------------------------------------------------------------------+
|
||||||
|
void print_greeting(void);
|
||||||
|
void led_blinking_task(void);
|
||||||
|
|
||||||
|
extern void virtual_com_task(void);
|
||||||
|
extern void usb_hid_task(void);
|
||||||
|
|
||||||
|
/*------------- MAIN -------------*/
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
board_init();
|
||||||
|
print_greeting();
|
||||||
|
|
||||||
|
tusb_init();
|
||||||
|
|
||||||
|
while (1)
|
||||||
|
{
|
||||||
|
tusb_task();
|
||||||
|
|
||||||
|
led_blinking_task();
|
||||||
|
|
||||||
|
#if CFG_TUH_CDC
|
||||||
|
virtual_com_task();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if CFG_TUD_HID
|
||||||
|
usb_hid_task();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------+
|
||||||
|
// USB CDC
|
||||||
|
//--------------------------------------------------------------------+
|
||||||
|
#if CFG_TUH_CDC
|
||||||
|
CFG_TUSB_MEM_SECTION static char serial_in_buffer[64] = { 0 };
|
||||||
|
|
||||||
|
void tuh_mount_cb(uint8_t dev_addr)
|
||||||
|
{
|
||||||
|
// application set-up
|
||||||
|
printf("\na CDC device (address %d) is mounted\n", dev_addr);
|
||||||
|
|
||||||
|
tuh_cdc_receive(dev_addr, serial_in_buffer, sizeof(serial_in_buffer), true); // schedule first transfer
|
||||||
|
}
|
||||||
|
|
||||||
|
void tuh_umount_cb(uint8_t dev_addr)
|
||||||
|
{
|
||||||
|
// application tear-down
|
||||||
|
printf("\na CDC device (address %d) is unmounted \n", dev_addr);
|
||||||
|
}
|
||||||
|
|
||||||
|
// invoked ISR context
|
||||||
|
void tuh_cdc_xfer_isr(uint8_t dev_addr, xfer_result_t event, cdc_pipeid_t pipe_id, uint32_t xferred_bytes)
|
||||||
|
{
|
||||||
|
(void) event;
|
||||||
|
(void) pipe_id;
|
||||||
|
(void) xferred_bytes;
|
||||||
|
|
||||||
|
printf(serial_in_buffer);
|
||||||
|
tu_memclr(serial_in_buffer, sizeof(serial_in_buffer));
|
||||||
|
|
||||||
|
tuh_cdc_receive(dev_addr, serial_in_buffer, sizeof(serial_in_buffer), true); // waiting for next data
|
||||||
|
}
|
||||||
|
|
||||||
|
void virtual_com_task(void)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------+
|
||||||
|
// USB HID
|
||||||
|
//--------------------------------------------------------------------+
|
||||||
|
#if CFG_TUH_HID_KEYBOARD
|
||||||
|
void usb_hid_task(void)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void tuh_hid_keyboard_mounted_cb(uint8_t dev_addr)
|
||||||
|
{
|
||||||
|
// application set-up
|
||||||
|
printf("\na Keyboard device (address %d) is mounted\n", dev_addr);
|
||||||
|
}
|
||||||
|
|
||||||
|
void tuh_hid_keyboard_unmounted_cb(uint8_t dev_addr)
|
||||||
|
{
|
||||||
|
// application tear-down
|
||||||
|
printf("\na Keyboard device (address %d) is unmounted\n", dev_addr);
|
||||||
|
}
|
||||||
|
|
||||||
|
// invoked ISR context
|
||||||
|
void tuh_hid_keyboard_isr(uint8_t dev_addr, xfer_result_t event)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if CFG_TUH_HID_MOUSE
|
||||||
|
void tuh_hid_mouse_mounted_cb(uint8_t dev_addr)
|
||||||
|
{
|
||||||
|
// application set-up
|
||||||
|
printf("\na Mouse device (address %d) is mounted\n", dev_addr);
|
||||||
|
}
|
||||||
|
|
||||||
|
void tuh_hid_mouse_unmounted_cb(uint8_t dev_addr)
|
||||||
|
{
|
||||||
|
// application tear-down
|
||||||
|
printf("\na Mouse device (address %d) is unmounted\n", dev_addr);
|
||||||
|
}
|
||||||
|
|
||||||
|
// invoked ISR context
|
||||||
|
void tuh_hid_mouse_isr(uint8_t dev_addr, xfer_result_t event)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------+
|
||||||
|
// tinyusb callbacks
|
||||||
|
//--------------------------------------------------------------------+
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------+
|
||||||
|
// BLINKING TASK
|
||||||
|
//--------------------------------------------------------------------+
|
||||||
|
void led_blinking_task(void)
|
||||||
|
{
|
||||||
|
static tu_timeout_t tm = { .start = 0, .interval = 1000 }; // Blink every 1000 ms
|
||||||
|
static bool led_state = false;
|
||||||
|
|
||||||
|
if ( !tu_timeout_expired(&tm) ) return; // not enough time
|
||||||
|
tu_timeout_reset(&tm);
|
||||||
|
|
||||||
|
board_led_control(led_state);
|
||||||
|
led_state = 1 - led_state; // toggle
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------+
|
||||||
|
// HELPER FUNCTION
|
||||||
|
//--------------------------------------------------------------------+
|
||||||
|
void print_greeting(void)
|
||||||
|
{
|
||||||
|
char const * const rtos_name[] =
|
||||||
|
{
|
||||||
|
[OPT_OS_NONE] = "None",
|
||||||
|
[OPT_OS_FREERTOS] = "FreeRTOS",
|
||||||
|
};
|
||||||
|
|
||||||
|
printf("\n--------------------------------------------------------------------\n");
|
||||||
|
printf("- Host example\n");
|
||||||
|
printf("- if you find any bugs or get any questions, feel free to file an\n");
|
||||||
|
printf("- issue at https://github.com/hathach/tinyusb\n");
|
||||||
|
printf("--------------------------------------------------------------------\n\n");
|
||||||
|
|
||||||
|
printf("This Host demo is configured to support:");
|
||||||
|
printf(" - RTOS = %s\n", rtos_name[CFG_TUSB_OS]);
|
||||||
|
// if (CFG_TUH_CDC ) puts(" - Communication Device Class");
|
||||||
|
// if (CFG_TUH_MSC ) puts(" - Mass Storage");
|
||||||
|
// if (CFG_TUH_HID_KEYBOARD ) puts(" - HID Keyboard");
|
||||||
|
// if (CFG_TUH_HID_MOUSE ) puts(" - HID Mouse");
|
||||||
|
}
|
125
examples/host/cdc_msc_hid/src/msc_app.c
Normal file
125
examples/host/cdc_msc_hid/src/msc_app.c
Normal file
@ -0,0 +1,125 @@
|
|||||||
|
/**************************************************************************/
|
||||||
|
/*!
|
||||||
|
@file msc_app.c
|
||||||
|
@author hathach (tinyusb.org)
|
||||||
|
|
||||||
|
@section LICENSE
|
||||||
|
|
||||||
|
Software License Agreement (BSD License)
|
||||||
|
|
||||||
|
Copyright (c) 2018, hathach (tinyusb.org)
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
1. Redistributions of source code must retain the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer.
|
||||||
|
2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer in the
|
||||||
|
documentation and/or other materials provided with the distribution.
|
||||||
|
3. Neither the name of the copyright holders nor the
|
||||||
|
names of its contributors may be used to endorse or promote products
|
||||||
|
derived from this software without specific prior written permission.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ''AS IS'' AND ANY
|
||||||
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY
|
||||||
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
This file is part of the tinyusb stack.
|
||||||
|
*/
|
||||||
|
/**************************************************************************/
|
||||||
|
|
||||||
|
#include "tusb.h"
|
||||||
|
|
||||||
|
#if CFG_TUH_MSC
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------+
|
||||||
|
// MACRO TYPEDEF CONSTANT ENUM DECLARATION
|
||||||
|
//--------------------------------------------------------------------+
|
||||||
|
|
||||||
|
|
||||||
|
//------------- IMPLEMENTATION -------------//
|
||||||
|
void tuh_msc_mounted_cb(uint8_t dev_addr)
|
||||||
|
{
|
||||||
|
puts("\na MassStorage device is mounted");
|
||||||
|
|
||||||
|
// //------------- Disk Information -------------//
|
||||||
|
// // SCSI VendorID[8] & ProductID[16] from Inquiry Command
|
||||||
|
// uint8_t const* p_vendor = tuh_msc_get_vendor_name(dev_addr);
|
||||||
|
// uint8_t const* p_product = tuh_msc_get_product_name(dev_addr);
|
||||||
|
//
|
||||||
|
// for(uint8_t i=0; i<8; i++) putchar(p_vendor[i]);
|
||||||
|
//
|
||||||
|
// putchar(' ');
|
||||||
|
// for(uint8_t i=0; i<16; i++) putchar(p_product[i]);
|
||||||
|
// putchar('\n');
|
||||||
|
//
|
||||||
|
// uint32_t last_lba, block_size;
|
||||||
|
// tuh_msc_get_capacity(dev_addr, &last_lba, &block_size);
|
||||||
|
// printf("Disk Size: %d MB\n", (last_lba+1)/ ((1024*1024)/block_size) );
|
||||||
|
// printf("LBA 0-0x%X Block Size: %d\n", last_lba, block_size);
|
||||||
|
//
|
||||||
|
// //------------- file system (only 1 LUN support) -------------//
|
||||||
|
// uint8_t phy_disk = dev_addr-1;
|
||||||
|
// disk_initialize(phy_disk);
|
||||||
|
//
|
||||||
|
// if ( disk_is_ready(phy_disk) )
|
||||||
|
// {
|
||||||
|
// if ( f_mount(phy_disk, &fatfs[phy_disk]) != FR_OK )
|
||||||
|
// {
|
||||||
|
// puts("mount failed");
|
||||||
|
// return;
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// puts("---------------------------------------------------------------------");
|
||||||
|
// puts("- MASSSTORAGE CLASS CLI IS A IMMATURE CODE. DISK-WRITING COMMANDS");
|
||||||
|
// puts("- SUCH AS cp(COPY), mkdir(MAKE DIRECTORY) ARE POTENTIAL TO DAMAGE");
|
||||||
|
// puts("- YOUR USB THUMBDRIVE. USING THOSE COMMANDS ARE AT YOUR OWN RISK.");
|
||||||
|
// puts("- THE AUTHOR HAS NO RESPONSIBILITY WITH YOUR DEVICE NOR ITS DATA");
|
||||||
|
// puts("---------------------------------------------------------------------");
|
||||||
|
//
|
||||||
|
// f_chdrive(phy_disk); // change to newly mounted drive
|
||||||
|
// f_chdir("/"); // root as current dir
|
||||||
|
//
|
||||||
|
// cli_init();
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
|
||||||
|
void tuh_msc_unmounted_cb(uint8_t dev_addr)
|
||||||
|
{
|
||||||
|
puts("\na MassStorage device is unmounted");
|
||||||
|
|
||||||
|
// uint8_t phy_disk = dev_addr-1;
|
||||||
|
//
|
||||||
|
// f_mount(phy_disk, NULL); // unmount disk
|
||||||
|
// disk_deinitialize(phy_disk);
|
||||||
|
//
|
||||||
|
// if ( phy_disk == f_get_current_drive() )
|
||||||
|
// { // active drive is unplugged --> change to other drive
|
||||||
|
// for(uint8_t i=0; i<CFG_TUSB_HOST_DEVICE_MAX; i++)
|
||||||
|
// {
|
||||||
|
// if ( disk_is_ready(i) )
|
||||||
|
// {
|
||||||
|
// f_chdrive(i);
|
||||||
|
// cli_init(); // refractor, rename
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
|
||||||
|
// invoked ISR context
|
||||||
|
void tuh_msc_isr(uint8_t dev_addr, xfer_result_t event, uint32_t xferred_bytes)
|
||||||
|
{
|
||||||
|
(void) dev_addr;
|
||||||
|
(void) event;
|
||||||
|
(void) xferred_bytes;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
143
examples/host/cdc_msc_hid/src/tusb_config.h
Normal file
143
examples/host/cdc_msc_hid/src/tusb_config.h
Normal file
@ -0,0 +1,143 @@
|
|||||||
|
/**************************************************************************/
|
||||||
|
/*!
|
||||||
|
@file tusb_config.h
|
||||||
|
@author hathach (tinyusb.org)
|
||||||
|
|
||||||
|
@section LICENSE
|
||||||
|
|
||||||
|
Software License Agreement (BSD License)
|
||||||
|
|
||||||
|
Copyright (c) 2013, hathach (tinyusb.org)
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
1. Redistributions of source code must retain the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer.
|
||||||
|
2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer in the
|
||||||
|
documentation and/or other materials provided with the distribution.
|
||||||
|
3. Neither the name of the copyright holders nor the
|
||||||
|
names of its contributors may be used to endorse or promote products
|
||||||
|
derived from this software without specific prior written permission.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ''AS IS'' AND ANY
|
||||||
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY
|
||||||
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION HOWEVER CAUSED AND
|
||||||
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
INCLUDING NEGLIGENCE OR OTHERWISE ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
This file is part of the tinyusb stack.
|
||||||
|
*/
|
||||||
|
/**************************************************************************/
|
||||||
|
|
||||||
|
#ifndef _TUSB_CONFIG_H_
|
||||||
|
#define _TUSB_CONFIG_H_
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------
|
||||||
|
// COMMON CONFIGURATION
|
||||||
|
//--------------------------------------------------------------------
|
||||||
|
|
||||||
|
// defined by compiler flags for flexibility
|
||||||
|
#ifndef CFG_TUSB_MCU
|
||||||
|
#error CFG_TUSB_MCU must be defined
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if CFG_TUSB_MCU == OPT_MCU_LPC43XX || CFG_TUSB_MCU == OPT_MCU_LPC18XX
|
||||||
|
#define CFG_TUSB_RHPORT0_MODE (OPT_MODE_HOST | OPT_MODE_HIGH_SPEED)
|
||||||
|
#else
|
||||||
|
#define CFG_TUSB_RHPORT0_MODE OPT_MODE_HOST
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define CFG_TUSB_DEBUG 2
|
||||||
|
#define CFG_TUSB_OS OPT_OS_NONE
|
||||||
|
|
||||||
|
/* USB DMA on some MCUs can only access a specific SRAM region with restriction on alignment.
|
||||||
|
* Tinyusb use follows macros to declare transferring memory so that they can be put
|
||||||
|
* into those specific section.
|
||||||
|
* e.g
|
||||||
|
* - CFG_TUSB_MEM SECTION : __attribute__ (( section(".usb_ram") ))
|
||||||
|
* - CFG_TUSB_MEM_ALIGN : __attribute__ ((aligned(4)))
|
||||||
|
*/
|
||||||
|
#ifndef CFG_TUSB_MEM_SECTION
|
||||||
|
#define CFG_TUSB_MEM_SECTION
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef CFG_TUSB_MEM_ALIGN
|
||||||
|
#define CFG_TUSB_MEM_ALIGN ATTR_ALIGNED(4)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------
|
||||||
|
// DEVICE CONFIGURATION
|
||||||
|
//--------------------------------------------------------------------
|
||||||
|
|
||||||
|
#define CFG_TUH_HUB 1
|
||||||
|
#define CFG_TUH_CDC 1
|
||||||
|
#define CFG_TUH_HID_KEYBOARD 0
|
||||||
|
#define CFG_TUH_HID_MOUSE 0
|
||||||
|
#define CFG_TUSB_HOST_HID_GENERIC 0 // (not yet supported)
|
||||||
|
#define CFG_TUH_MSC 0
|
||||||
|
|
||||||
|
#define CFG_TUSB_HOST_DEVICE_MAX (CFG_TUH_HUB ? 5 : 1) // normal hub has 4 ports
|
||||||
|
|
||||||
|
//------------- CLASS -------------//
|
||||||
|
#define CFG_TUD_CDC 0
|
||||||
|
#define CFG_TUD_MSC 0
|
||||||
|
#define CFG_TUD_CUSTOM_CLASS 0
|
||||||
|
|
||||||
|
#define CFG_TUD_HID 0
|
||||||
|
#define CFG_TUD_HID_KEYBOARD 0
|
||||||
|
#define CFG_TUD_HID_MOUSE 0
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------
|
||||||
|
// CDC
|
||||||
|
//--------------------------------------------------------------------
|
||||||
|
|
||||||
|
// FIFO size of CDC TX and RX
|
||||||
|
#define CFG_TUD_CDC_RX_BUFSIZE 64
|
||||||
|
#define CFG_TUD_CDC_TX_BUFSIZE 64
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------
|
||||||
|
// MSC
|
||||||
|
//--------------------------------------------------------------------
|
||||||
|
// Number of supported Logical Unit Number (At least 1)
|
||||||
|
#define CFG_TUD_MSC_MAXLUN 1
|
||||||
|
|
||||||
|
// Buffer size of Device Mass storage
|
||||||
|
#define CFG_TUD_MSC_BUFSIZE 512
|
||||||
|
|
||||||
|
// Vendor name included in Inquiry response, max 8 bytes
|
||||||
|
#define CFG_TUD_MSC_VENDOR "tinyusb"
|
||||||
|
|
||||||
|
// Product name included in Inquiry response, max 16 bytes
|
||||||
|
#define CFG_TUD_MSC_PRODUCT "tusb msc"
|
||||||
|
|
||||||
|
// Product revision string included in Inquiry response, max 4 bytes
|
||||||
|
#define CFG_TUD_MSC_PRODUCT_REV "1.0"
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------
|
||||||
|
// HID
|
||||||
|
//--------------------------------------------------------------------
|
||||||
|
|
||||||
|
/* Use the HID_ASCII_TO_KEYCODE lookup if CFG_TUD_HID_KEYBOARD is enabled.
|
||||||
|
* This will occupies 256 bytes of ROM. It will also enable the use of 2 extra APIs
|
||||||
|
* - tud_hid_keyboard_send_char()
|
||||||
|
* - tud_hid_keyboard_send_string()
|
||||||
|
*/
|
||||||
|
#define CFG_TUD_HID_ASCII_TO_KEYCODE_LOOKUP 1
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* _TUSB_CONFIG_H_ */
|
File diff suppressed because it is too large
Load Diff
@ -1,104 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<projectDescription>
|
|
||||||
<name>device_freertos</name>
|
|
||||||
<comment></comment>
|
|
||||||
<projects>
|
|
||||||
</projects>
|
|
||||||
<buildSpec>
|
|
||||||
<buildCommand>
|
|
||||||
<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
|
|
||||||
<triggers>clean,full,incremental,</triggers>
|
|
||||||
<arguments>
|
|
||||||
<dictionary>
|
|
||||||
<key>?name?</key>
|
|
||||||
<value></value>
|
|
||||||
</dictionary>
|
|
||||||
<dictionary>
|
|
||||||
<key>org.eclipse.cdt.make.core.append_environment</key>
|
|
||||||
<value>true</value>
|
|
||||||
</dictionary>
|
|
||||||
<dictionary>
|
|
||||||
<key>org.eclipse.cdt.make.core.autoBuildTarget</key>
|
|
||||||
<value>all</value>
|
|
||||||
</dictionary>
|
|
||||||
<dictionary>
|
|
||||||
<key>org.eclipse.cdt.make.core.buildArguments</key>
|
|
||||||
<value></value>
|
|
||||||
</dictionary>
|
|
||||||
<dictionary>
|
|
||||||
<key>org.eclipse.cdt.make.core.buildCommand</key>
|
|
||||||
<value>make</value>
|
|
||||||
</dictionary>
|
|
||||||
<dictionary>
|
|
||||||
<key>org.eclipse.cdt.make.core.buildLocation</key>
|
|
||||||
<value>${workspace_loc:/device_keyboard/Debug}</value>
|
|
||||||
</dictionary>
|
|
||||||
<dictionary>
|
|
||||||
<key>org.eclipse.cdt.make.core.cleanBuildTarget</key>
|
|
||||||
<value>clean</value>
|
|
||||||
</dictionary>
|
|
||||||
<dictionary>
|
|
||||||
<key>org.eclipse.cdt.make.core.contents</key>
|
|
||||||
<value>org.eclipse.cdt.make.core.activeConfigSettings</value>
|
|
||||||
</dictionary>
|
|
||||||
<dictionary>
|
|
||||||
<key>org.eclipse.cdt.make.core.enableAutoBuild</key>
|
|
||||||
<value>false</value>
|
|
||||||
</dictionary>
|
|
||||||
<dictionary>
|
|
||||||
<key>org.eclipse.cdt.make.core.enableCleanBuild</key>
|
|
||||||
<value>true</value>
|
|
||||||
</dictionary>
|
|
||||||
<dictionary>
|
|
||||||
<key>org.eclipse.cdt.make.core.enableFullBuild</key>
|
|
||||||
<value>true</value>
|
|
||||||
</dictionary>
|
|
||||||
<dictionary>
|
|
||||||
<key>org.eclipse.cdt.make.core.fullBuildTarget</key>
|
|
||||||
<value>all</value>
|
|
||||||
</dictionary>
|
|
||||||
<dictionary>
|
|
||||||
<key>org.eclipse.cdt.make.core.stopOnError</key>
|
|
||||||
<value>true</value>
|
|
||||||
</dictionary>
|
|
||||||
<dictionary>
|
|
||||||
<key>org.eclipse.cdt.make.core.useDefaultBuildCmd</key>
|
|
||||||
<value>true</value>
|
|
||||||
</dictionary>
|
|
||||||
</arguments>
|
|
||||||
</buildCommand>
|
|
||||||
<buildCommand>
|
|
||||||
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
|
|
||||||
<triggers>full,incremental,</triggers>
|
|
||||||
<arguments>
|
|
||||||
</arguments>
|
|
||||||
</buildCommand>
|
|
||||||
</buildSpec>
|
|
||||||
<natures>
|
|
||||||
<nature>org.eclipse.cdt.core.cnature</nature>
|
|
||||||
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
|
|
||||||
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
|
|
||||||
</natures>
|
|
||||||
<linkedResources>
|
|
||||||
<link>
|
|
||||||
<name>FreeRTOS</name>
|
|
||||||
<type>2</type>
|
|
||||||
<locationURI>PARENT-4-PROJECT_LOC/lib/FreeRTOS</locationURI>
|
|
||||||
</link>
|
|
||||||
<link>
|
|
||||||
<name>hw</name>
|
|
||||||
<type>2</type>
|
|
||||||
<location>/home/hathach/Dropbox/tinyusb/workspace/tinyusb/hw</location>
|
|
||||||
</link>
|
|
||||||
<link>
|
|
||||||
<name>src</name>
|
|
||||||
<type>2</type>
|
|
||||||
<locationURI>PARENT-1-PROJECT_LOC/src</locationURI>
|
|
||||||
</link>
|
|
||||||
<link>
|
|
||||||
<name>tinyusb</name>
|
|
||||||
<type>2</type>
|
|
||||||
<locationURI>PARENT-4-PROJECT_LOC/src</locationURI>
|
|
||||||
</link>
|
|
||||||
</linkedResources>
|
|
||||||
</projectDescription>
|
|
File diff suppressed because it is too large
Load Diff
@ -1,99 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<projectDescription>
|
|
||||||
<name>device_os_none</name>
|
|
||||||
<comment></comment>
|
|
||||||
<projects>
|
|
||||||
</projects>
|
|
||||||
<buildSpec>
|
|
||||||
<buildCommand>
|
|
||||||
<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
|
|
||||||
<triggers>clean,full,incremental,</triggers>
|
|
||||||
<arguments>
|
|
||||||
<dictionary>
|
|
||||||
<key>?name?</key>
|
|
||||||
<value></value>
|
|
||||||
</dictionary>
|
|
||||||
<dictionary>
|
|
||||||
<key>org.eclipse.cdt.make.core.append_environment</key>
|
|
||||||
<value>true</value>
|
|
||||||
</dictionary>
|
|
||||||
<dictionary>
|
|
||||||
<key>org.eclipse.cdt.make.core.autoBuildTarget</key>
|
|
||||||
<value>all</value>
|
|
||||||
</dictionary>
|
|
||||||
<dictionary>
|
|
||||||
<key>org.eclipse.cdt.make.core.buildArguments</key>
|
|
||||||
<value></value>
|
|
||||||
</dictionary>
|
|
||||||
<dictionary>
|
|
||||||
<key>org.eclipse.cdt.make.core.buildCommand</key>
|
|
||||||
<value>make</value>
|
|
||||||
</dictionary>
|
|
||||||
<dictionary>
|
|
||||||
<key>org.eclipse.cdt.make.core.buildLocation</key>
|
|
||||||
<value>${workspace_loc:/device_keyboard/Debug}</value>
|
|
||||||
</dictionary>
|
|
||||||
<dictionary>
|
|
||||||
<key>org.eclipse.cdt.make.core.cleanBuildTarget</key>
|
|
||||||
<value>clean</value>
|
|
||||||
</dictionary>
|
|
||||||
<dictionary>
|
|
||||||
<key>org.eclipse.cdt.make.core.contents</key>
|
|
||||||
<value>org.eclipse.cdt.make.core.activeConfigSettings</value>
|
|
||||||
</dictionary>
|
|
||||||
<dictionary>
|
|
||||||
<key>org.eclipse.cdt.make.core.enableAutoBuild</key>
|
|
||||||
<value>false</value>
|
|
||||||
</dictionary>
|
|
||||||
<dictionary>
|
|
||||||
<key>org.eclipse.cdt.make.core.enableCleanBuild</key>
|
|
||||||
<value>true</value>
|
|
||||||
</dictionary>
|
|
||||||
<dictionary>
|
|
||||||
<key>org.eclipse.cdt.make.core.enableFullBuild</key>
|
|
||||||
<value>true</value>
|
|
||||||
</dictionary>
|
|
||||||
<dictionary>
|
|
||||||
<key>org.eclipse.cdt.make.core.fullBuildTarget</key>
|
|
||||||
<value>all</value>
|
|
||||||
</dictionary>
|
|
||||||
<dictionary>
|
|
||||||
<key>org.eclipse.cdt.make.core.stopOnError</key>
|
|
||||||
<value>true</value>
|
|
||||||
</dictionary>
|
|
||||||
<dictionary>
|
|
||||||
<key>org.eclipse.cdt.make.core.useDefaultBuildCmd</key>
|
|
||||||
<value>true</value>
|
|
||||||
</dictionary>
|
|
||||||
</arguments>
|
|
||||||
</buildCommand>
|
|
||||||
<buildCommand>
|
|
||||||
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
|
|
||||||
<triggers>full,incremental,</triggers>
|
|
||||||
<arguments>
|
|
||||||
</arguments>
|
|
||||||
</buildCommand>
|
|
||||||
</buildSpec>
|
|
||||||
<natures>
|
|
||||||
<nature>org.eclipse.cdt.core.cnature</nature>
|
|
||||||
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
|
|
||||||
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
|
|
||||||
</natures>
|
|
||||||
<linkedResources>
|
|
||||||
<link>
|
|
||||||
<name>hw</name>
|
|
||||||
<type>2</type>
|
|
||||||
<locationURI>PARENT-4-PROJECT_LOC/hw</locationURI>
|
|
||||||
</link>
|
|
||||||
<link>
|
|
||||||
<name>src</name>
|
|
||||||
<type>2</type>
|
|
||||||
<locationURI>PARENT-1-PROJECT_LOC/src</locationURI>
|
|
||||||
</link>
|
|
||||||
<link>
|
|
||||||
<name>tinyusb</name>
|
|
||||||
<type>2</type>
|
|
||||||
<locationURI>PARENT-4-PROJECT_LOC/src</locationURI>
|
|
||||||
</link>
|
|
||||||
</linkedResources>
|
|
||||||
</projectDescription>
|
|
@ -39,7 +39,7 @@
|
|||||||
#include "cdc_serial_host_app.h"
|
#include "cdc_serial_host_app.h"
|
||||||
#include "app_os_prio.h"
|
#include "app_os_prio.h"
|
||||||
|
|
||||||
#if CFG_TUSB_HOST_CDC
|
#if CFG_TUH_CDC
|
||||||
|
|
||||||
#define QUEUE_SERIAL_DEPTH 100
|
#define QUEUE_SERIAL_DEPTH 100
|
||||||
|
|
||||||
|
@ -53,7 +53,7 @@
|
|||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if CFG_TUSB_HOST_CDC
|
#if CFG_TUH_CDC
|
||||||
|
|
||||||
void cdc_serial_host_app_init(void);
|
void cdc_serial_host_app_init(void);
|
||||||
void cdc_serial_host_app_task(void* param);
|
void cdc_serial_host_app_task(void* param);
|
||||||
|
@ -42,7 +42,7 @@
|
|||||||
#include "keyboard_host_app.h"
|
#include "keyboard_host_app.h"
|
||||||
#include "app_os_prio.h"
|
#include "app_os_prio.h"
|
||||||
|
|
||||||
#if CFG_TUSB_HOST_HID_KEYBOARD
|
#if CFG_TUH_HID_KEYBOARD
|
||||||
|
|
||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
// MACRO CONSTANT TYPEDEF
|
// MACRO CONSTANT TYPEDEF
|
||||||
|
@ -59,7 +59,7 @@
|
|||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if CFG_TUSB_HOST_HID_KEYBOARD
|
#if CFG_TUH_HID_KEYBOARD
|
||||||
|
|
||||||
void keyboard_host_app_init(void);
|
void keyboard_host_app_init(void);
|
||||||
void keyboard_host_app_task(void* param);
|
void keyboard_host_app_task(void* param);
|
||||||
|
@ -135,9 +135,9 @@ void print_greeting(void)
|
|||||||
|
|
||||||
puts("This HOST demo is configured to support:");
|
puts("This HOST demo is configured to support:");
|
||||||
printf(" - RTOS = %s\n", rtos_name[CFG_TUSB_OS]);
|
printf(" - RTOS = %s\n", rtos_name[CFG_TUSB_OS]);
|
||||||
if (CFG_TUSB_HOST_HUB ) puts(" - Hub (1 level only)");
|
if (CFG_TUH_HUB ) puts(" - Hub (1 level only)");
|
||||||
if (CFG_TUSB_HOST_HID_MOUSE ) puts(" - HID Mouse");
|
if (CFG_TUH_HID_MOUSE ) puts(" - HID Mouse");
|
||||||
if (CFG_TUSB_HOST_HID_KEYBOARD ) puts(" - HID Keyboard");
|
if (CFG_TUH_HID_KEYBOARD ) puts(" - HID Keyboard");
|
||||||
if (CFG_TUSB_HOST_MSC ) puts(" - Mass Storage");
|
if (CFG_TUH_MSC ) puts(" - Mass Storage");
|
||||||
if (CFG_TUSB_HOST_CDC ) puts(" - Communication Device Class");
|
if (CFG_TUH_CDC ) puts(" - Communication Device Class");
|
||||||
}
|
}
|
||||||
|
@ -42,7 +42,7 @@
|
|||||||
#include "mouse_host_app.h"
|
#include "mouse_host_app.h"
|
||||||
#include "app_os_prio.h"
|
#include "app_os_prio.h"
|
||||||
|
|
||||||
#if CFG_TUSB_HOST_HID_MOUSE
|
#if CFG_TUH_HID_MOUSE
|
||||||
|
|
||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
// MACRO CONSTANT TYPEDEF
|
// MACRO CONSTANT TYPEDEF
|
||||||
|
@ -62,7 +62,7 @@
|
|||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if CFG_TUSB_HOST_HID_MOUSE
|
#if CFG_TUH_HID_MOUSE
|
||||||
|
|
||||||
void mouse_host_app_init(void);
|
void mouse_host_app_init(void);
|
||||||
void mouse_host_app_task(void* param);
|
void mouse_host_app_task(void* param);
|
||||||
|
@ -39,7 +39,7 @@
|
|||||||
#include "msc_cli.h"
|
#include "msc_cli.h"
|
||||||
#include "ctype.h"
|
#include "ctype.h"
|
||||||
|
|
||||||
#if CFG_TUSB_HOST_MSC
|
#if CFG_TUH_MSC
|
||||||
|
|
||||||
#include "ff.h"
|
#include "ff.h"
|
||||||
#include "diskio.h"
|
#include "diskio.h"
|
||||||
|
@ -42,7 +42,7 @@
|
|||||||
#include "msc_host_app.h"
|
#include "msc_host_app.h"
|
||||||
#include "app_os_prio.h"
|
#include "app_os_prio.h"
|
||||||
|
|
||||||
#if CFG_TUSB_HOST_MSC
|
#if CFG_TUH_MSC
|
||||||
|
|
||||||
#include "msc_cli.h"
|
#include "msc_cli.h"
|
||||||
#include "ff.h"
|
#include "ff.h"
|
||||||
|
@ -54,7 +54,7 @@
|
|||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if CFG_TUSB_HOST_MSC
|
#if CFG_TUH_MSC
|
||||||
|
|
||||||
void msc_host_app_init(void);
|
void msc_host_app_init(void);
|
||||||
void msc_host_app_task(void* param);
|
void msc_host_app_task(void* param);
|
||||||
|
@ -39,7 +39,7 @@
|
|||||||
#include "rndis_host_app.h"
|
#include "rndis_host_app.h"
|
||||||
#include "app_os_prio.h"
|
#include "app_os_prio.h"
|
||||||
|
|
||||||
#if CFG_TUSB_HOST_CDC && CFG_TUSB_HOST_CDC_RNDIS
|
#if CFG_TUH_CDC && CFG_TUH_CDC_RNDIS
|
||||||
|
|
||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
// MACRO CONSTANT TYPEDEF
|
// MACRO CONSTANT TYPEDEF
|
||||||
|
@ -53,7 +53,7 @@
|
|||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if CFG_TUSB_HOST_CDC && CFG_TUSB_HOST_CDC_RNDIS
|
#if CFG_TUH_CDC && CFG_TUH_CDC_RNDIS
|
||||||
|
|
||||||
void rndis_host_app_init(void);
|
void rndis_host_app_init(void);
|
||||||
void rndis_host_app_task(void* param);
|
void rndis_host_app_task(void* param);
|
||||||
|
@ -54,14 +54,14 @@
|
|||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
|
|
||||||
//------------- CLASS -------------//
|
//------------- CLASS -------------//
|
||||||
#define CFG_TUSB_HOST_HUB 1
|
#define CFG_TUH_HUB 1
|
||||||
#define CFG_TUSB_HOST_HID_KEYBOARD 1
|
#define CFG_TUH_HID_KEYBOARD 1
|
||||||
#define CFG_TUSB_HOST_HID_MOUSE 1
|
#define CFG_TUH_HID_MOUSE 1
|
||||||
#define CFG_TUSB_HOST_HID_GENERIC 0 // (not yet supported)
|
#define CFG_TUSB_HOST_HID_GENERIC 0 // (not yet supported)
|
||||||
#define CFG_TUSB_HOST_MSC 1
|
#define CFG_TUH_MSC 1
|
||||||
#define CFG_TUSB_HOST_CDC 1
|
#define CFG_TUH_CDC 1
|
||||||
|
|
||||||
#define CFG_TUSB_HOST_DEVICE_MAX (CFG_TUSB_HOST_HUB ? 5 : 1) // normal hub has 4 ports
|
#define CFG_TUSB_HOST_DEVICE_MAX (CFG_TUH_HUB ? 5 : 1) // normal hub has 4 ports
|
||||||
|
|
||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
// COMMON CONFIGURATION
|
// COMMON CONFIGURATION
|
||||||
|
@ -55,25 +55,27 @@ const uint32_t RTCOscRateIn = 32768;
|
|||||||
/* Pin muxing configuration */
|
/* Pin muxing configuration */
|
||||||
static const PINMUX_GRP_T pinmuxing[] =
|
static const PINMUX_GRP_T pinmuxing[] =
|
||||||
{
|
{
|
||||||
/* LEDs */
|
/* LEDs */
|
||||||
{2, 19, (IOCON_FUNC0 | IOCON_MODE_INACT)},
|
{2, 19, (IOCON_FUNC0 | IOCON_MODE_INACT)},
|
||||||
};
|
};
|
||||||
|
|
||||||
static const PINMUX_GRP_T pin_usb_mux[] =
|
static const PINMUX_GRP_T pin_usb_mux[] =
|
||||||
{
|
{
|
||||||
// USB1 as Host
|
// USB1 as Host
|
||||||
{0, 29, (IOCON_FUNC1 | IOCON_MODE_INACT)}, // D+1
|
{0, 29, (IOCON_FUNC1 | IOCON_MODE_INACT)}, // D+1
|
||||||
{0, 30, (IOCON_FUNC1 | IOCON_MODE_INACT)}, // D-1
|
{0, 30, (IOCON_FUNC1 | IOCON_MODE_INACT)}, // D-1
|
||||||
{1, 18, (IOCON_FUNC1 | IOCON_MODE_INACT)}, // UP LED1
|
{1, 18, (IOCON_FUNC1 | IOCON_MODE_INACT)}, // UP LED1
|
||||||
{1, 19, (IOCON_FUNC2 | IOCON_MODE_INACT)}, // PPWR1
|
{1, 19, (IOCON_FUNC2 | IOCON_MODE_INACT)}, // PPWR1
|
||||||
|
// {2, 14, (IOCON_FUNC2 | IOCON_MODE_INACT)}, // VBUS1
|
||||||
|
// {2, 15, (IOCON_FUNC2 | IOCON_MODE_INACT)}, // OVRCR1
|
||||||
|
|
||||||
// USB2 as Device
|
// USB2 as Device
|
||||||
{0, 31, (IOCON_FUNC1 | IOCON_MODE_INACT)}, // D+2
|
{0, 31, (IOCON_FUNC1 | IOCON_MODE_INACT)}, // D+2
|
||||||
{0, 13, (IOCON_FUNC1 | IOCON_MODE_INACT)}, // UP LED
|
{0, 13, (IOCON_FUNC1 | IOCON_MODE_INACT)}, // UP LED
|
||||||
{0, 14, (IOCON_FUNC3 | IOCON_MODE_INACT)}, // CONNECT2
|
{0, 14, (IOCON_FUNC3 | IOCON_MODE_INACT)}, // CONNECT2
|
||||||
|
|
||||||
/* VBUS is not connected on this board, so leave the pin at default setting. */
|
/* VBUS is not connected on this board, so leave the pin at default setting. */
|
||||||
/*Chip_IOCON_PinMux(LPC_IOCON, 1, 30, IOCON_MODE_INACT, IOCON_FUNC2);*/ /* USB VBUS */
|
/*Chip_IOCON_PinMux(LPC_IOCON, 1, 30, IOCON_MODE_INACT, IOCON_FUNC2);*/ /* USB VBUS */
|
||||||
};
|
};
|
||||||
|
|
||||||
// Invoked by startup code
|
// Invoked by startup code
|
||||||
@ -106,7 +108,7 @@ void board_init(void)
|
|||||||
|
|
||||||
//------------- UART -------------//
|
//------------- UART -------------//
|
||||||
|
|
||||||
//------------- USB -------------//
|
//------------- USB -------------//
|
||||||
// Port1 as Host, Port2: Device
|
// Port1 as Host, Port2: Device
|
||||||
Chip_USB_Init();
|
Chip_USB_Init();
|
||||||
|
|
||||||
@ -115,7 +117,7 @@ void board_init(void)
|
|||||||
};
|
};
|
||||||
|
|
||||||
LPC_USB->OTGClkCtrl = USBCLK;
|
LPC_USB->OTGClkCtrl = USBCLK;
|
||||||
while ( (LPC_USB->OTGClkSt & USBCLK) != USBCLK );
|
while ( (LPC_USB->OTGClkSt & USBCLK) != USBCLK ) {}
|
||||||
|
|
||||||
// USB1 = host, USB2 = device
|
// USB1 = host, USB2 = device
|
||||||
LPC_USB->StCtrl = 0x3;
|
LPC_USB->StCtrl = 0x3;
|
||||||
@ -131,10 +133,12 @@ void board_led_control(bool state)
|
|||||||
}
|
}
|
||||||
|
|
||||||
//------------- Buttons -------------//
|
//------------- Buttons -------------//
|
||||||
|
#if 0
|
||||||
static bool button_read(uint8_t id)
|
static bool button_read(uint8_t id)
|
||||||
{
|
{
|
||||||
// return !BIT_TEST_( GPIO_ReadValue(buttons[id].gpio_port), buttons[id].gpio_pin ); // button is active low
|
// return !BIT_TEST_( GPIO_ReadValue(buttons[id].gpio_port), buttons[id].gpio_pin ); // button is active low
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
uint32_t board_buttons(void)
|
uint32_t board_buttons(void)
|
||||||
{
|
{
|
||||||
@ -150,10 +154,13 @@ uint32_t board_buttons(void)
|
|||||||
uint8_t board_uart_getchar(void)
|
uint8_t board_uart_getchar(void)
|
||||||
{
|
{
|
||||||
//return UART_ReceiveByte(BOARD_UART_PORT);
|
//return UART_ReceiveByte(BOARD_UART_PORT);
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void board_uart_putchar(uint8_t c)
|
void board_uart_putchar(uint8_t c)
|
||||||
{
|
{
|
||||||
//UART_Send(BOARD_UART_PORT, &c, 1, BLOCKING);
|
//UART_Send(BOARD_UART_PORT, &c, 1, BLOCKING);
|
||||||
|
(void) c;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -123,7 +123,7 @@ void SystemInit(void)
|
|||||||
Chip_SCU_SetPinMuxing(pinmuxing, sizeof(pinmuxing) / sizeof(PINMUX_GRP_T));
|
Chip_SCU_SetPinMuxing(pinmuxing, sizeof(pinmuxing) / sizeof(PINMUX_GRP_T));
|
||||||
|
|
||||||
/* Clock pins only, group field not used */
|
/* Clock pins only, group field not used */
|
||||||
for (int i = 0; i < (sizeof(pinclockmuxing) / sizeof(pinclockmuxing[0])); i++)
|
for (int i = 0; i <(int) (sizeof(pinclockmuxing) / sizeof(pinclockmuxing[0])); i++)
|
||||||
{
|
{
|
||||||
Chip_SCU_ClockPinMuxSet(pinclockmuxing[i].pinnum, pinclockmuxing[i].modefunc);
|
Chip_SCU_ClockPinMuxSet(pinclockmuxing[i].pinnum, pinclockmuxing[i].modefunc);
|
||||||
}
|
}
|
||||||
@ -182,7 +182,17 @@ void board_init(void)
|
|||||||
USBMODE_VBUS_HIGH = 1
|
USBMODE_VBUS_HIGH = 1
|
||||||
};
|
};
|
||||||
|
|
||||||
// USB0
|
/* USB0
|
||||||
|
* For USB Device operation; insert jumpers in position 1-2 in JP17/JP18/JP19. GPIO28 controls USB
|
||||||
|
* connect functionality and LED32 lights when the USB Device is connected. SJ4 has pads 1-2 shorted
|
||||||
|
* by default. LED33 is controlled by GPIO27 and signals USB-up state. GPIO54 is used for VBUS
|
||||||
|
* sensing.
|
||||||
|
* For USB Host operation; insert jumpers in position 2-3 in JP17/JP18/JP19. USB Host power is
|
||||||
|
* controlled via distribution switch U20 (found in schematic page 11). Signal GPIO26 is active low and
|
||||||
|
* enables +5V on VBUS2. LED35 light whenever +5V is present on VBUS2. GPIO55 is connected to
|
||||||
|
* status feedback from the distribution switch. GPIO54 is used for VBUS sensing. 15Kohm pull-down
|
||||||
|
* resistors are always active
|
||||||
|
*/
|
||||||
#if CFG_TUSB_RHPORT0_MODE
|
#if CFG_TUSB_RHPORT0_MODE
|
||||||
Chip_USB0_Init();
|
Chip_USB0_Init();
|
||||||
|
|
||||||
@ -193,13 +203,32 @@ void board_init(void)
|
|||||||
// Set mode
|
// Set mode
|
||||||
#if CFG_TUSB_RHPORT0_MODE & OPT_MODE_HOST
|
#if CFG_TUSB_RHPORT0_MODE & OPT_MODE_HOST
|
||||||
LPC_USB0->USBMODE_H = USBMODE_HOST | (USBMODE_VBUS_HIGH << 5);
|
LPC_USB0->USBMODE_H = USBMODE_HOST | (USBMODE_VBUS_HIGH << 5);
|
||||||
|
|
||||||
|
LPC_USB0->PORTSC1_D |= (1<<24); // FIXME force full speed for debugging
|
||||||
#else // TODO OTG
|
#else // TODO OTG
|
||||||
LPC_USB0->USBMODE_D = USBMODE_DEVICE;
|
LPC_USB0->USBMODE_D = USBMODE_DEVICE;
|
||||||
LPC_USB0->OTGSC = (1<<3) | (1<<0) /*| (1<<16)| (1<<24)| (1<<25)| (1<<26)| (1<<27)| (1<<28)| (1<<29)| (1<<30)*/;
|
LPC_USB0->OTGSC = (1<<3) | (1<<0) /*| (1<<16)| (1<<24)| (1<<25)| (1<<26)| (1<<27)| (1<<28)| (1<<29)| (1<<30)*/;
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// USB1
|
/* USB1
|
||||||
|
* When USB channel #1 is used as USB Host, 15Kohm pull-down resistors are needed on the USB data
|
||||||
|
* signals. These are activated inside the USB OTG chip (U31), and this has to be done via the I2C
|
||||||
|
* interface of GPIO52/GPIO53.
|
||||||
|
* J20 is the connector to use when USB Host is used. In order to provide +5V to the external USB
|
||||||
|
* device connected to this connector (J20), channel A of U20 must be enabled. It is enabled by default
|
||||||
|
* since SJ5 is normally connected between pin 1-2. LED34 lights green when +5V is available on J20.
|
||||||
|
* JP15 shall not be inserted. JP16 has no effect
|
||||||
|
*
|
||||||
|
* When USB channel #1 is used as USB Device, a 1.5Kohm pull-up resistor is needed on the USB DP
|
||||||
|
* data signal. There are two methods to create this. JP15 is inserted and the pull-up resistor is always
|
||||||
|
* enabled. Alternatively, the pull-up resistor is activated inside the USB OTG chip (U31), and this has to
|
||||||
|
* be done via the I2C interface of GPIO52/GPIO53. In the latter case, JP15 shall not be inserted.
|
||||||
|
* J19 is the connector to use when USB Device is used. Normally it should be a USB-B connector for
|
||||||
|
* creating a USB Device interface, but the mini-AB connector can also be used in this case. The status
|
||||||
|
* of VBUS can be read via U31.
|
||||||
|
* JP16 shall not be inserted.
|
||||||
|
*/
|
||||||
#if CFG_TUSB_RHPORT1_MODE
|
#if CFG_TUSB_RHPORT1_MODE
|
||||||
Chip_USB1_Init();
|
Chip_USB1_Init();
|
||||||
|
|
||||||
@ -246,10 +275,12 @@ void board_led_control(bool state)
|
|||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
// BUTTONS
|
// BUTTONS
|
||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
|
#if 0
|
||||||
static bool button_read(uint8_t id)
|
static bool button_read(uint8_t id)
|
||||||
{
|
{
|
||||||
// return !BIT_TEST_( GPIO_ReadValue(buttons[id].gpio_port), buttons[id].gpio_pin ); // button is active low
|
// return !BIT_TEST_( GPIO_ReadValue(buttons[id].gpio_port), buttons[id].gpio_pin ); // button is active low
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
uint32_t board_buttons(void)
|
uint32_t board_buttons(void)
|
||||||
{
|
{
|
||||||
@ -266,10 +297,13 @@ uint32_t board_buttons(void)
|
|||||||
uint8_t board_uart_getchar(void)
|
uint8_t board_uart_getchar(void)
|
||||||
{
|
{
|
||||||
//return UART_ReceiveByte(BOARD_UART_PORT);
|
//return UART_ReceiveByte(BOARD_UART_PORT);
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void board_uart_putchar(uint8_t c)
|
void board_uart_putchar(uint8_t c)
|
||||||
{
|
{
|
||||||
//UART_Send(BOARD_UART_PORT, &c, 1, BLOCKING);
|
//UART_Send(BOARD_UART_PORT, &c, 1, BLOCKING);
|
||||||
|
(void) c;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -44,7 +44,7 @@
|
|||||||
#define LED_PIN 17
|
#define LED_PIN 17
|
||||||
#define LED_STATE_ON 0
|
#define LED_STATE_ON 0
|
||||||
|
|
||||||
const static struct {
|
static const struct {
|
||||||
uint8_t port;
|
uint8_t port;
|
||||||
uint8_t pin;
|
uint8_t pin;
|
||||||
} buttons[] = { { 0, 1 } };
|
} buttons[] = { { 0, 1 } };
|
||||||
@ -134,6 +134,7 @@ uint32_t board_buttons(void)
|
|||||||
{
|
{
|
||||||
// for(uint8_t i=0; i<BOARD_BUTTON_COUNT; i++) GPIOGetPinValue(buttons[i].port, buttons[i].pin);
|
// for(uint8_t i=0; i<BOARD_BUTTON_COUNT; i++) GPIOGetPinValue(buttons[i].port, buttons[i].pin);
|
||||||
// return GPIOGetPinValue(buttons[0].port, buttons[0].pin) ? 0 : 1; // button is active low
|
// return GPIOGetPinValue(buttons[0].port, buttons[0].pin) ? 0 : 1; // button is active low
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
@ -141,6 +142,7 @@ uint32_t board_buttons(void)
|
|||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
void board_uart_putchar(uint8_t c)
|
void board_uart_putchar(uint8_t c)
|
||||||
{
|
{
|
||||||
|
(void) c;
|
||||||
//UARTSend(&c, 1);
|
//UARTSend(&c, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -43,7 +43,7 @@
|
|||||||
#define LED_PORT 0
|
#define LED_PORT 0
|
||||||
#define LED_PIN 7
|
#define LED_PIN 7
|
||||||
|
|
||||||
const static struct {
|
static const struct {
|
||||||
uint8_t port;
|
uint8_t port;
|
||||||
uint8_t pin;
|
uint8_t pin;
|
||||||
} buttons[] =
|
} buttons[] =
|
||||||
@ -140,13 +140,18 @@ void board_led_control(bool state)
|
|||||||
Chip_GPIO_SetPinState(LPC_GPIO_PORT, LED_PORT, LED_PIN, state);
|
Chip_GPIO_SetPinState(LPC_GPIO_PORT, LED_PORT, LED_PIN, state);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
// BUTTONS
|
// BUTTONS
|
||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
|
#if 0
|
||||||
static bool button_read(uint8_t id)
|
static bool button_read(uint8_t id)
|
||||||
{
|
{
|
||||||
|
(void) id;
|
||||||
// return !GPIOGetPinValue(buttons[id].port, buttons[id].pin); // button is active low
|
// return !GPIOGetPinValue(buttons[id].port, buttons[id].pin); // button is active low
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
uint32_t board_buttons(void)
|
uint32_t board_buttons(void)
|
||||||
{
|
{
|
||||||
@ -162,6 +167,7 @@ uint32_t board_buttons(void)
|
|||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
void board_uart_putchar(uint8_t c)
|
void board_uart_putchar(uint8_t c)
|
||||||
{
|
{
|
||||||
|
(void) c;
|
||||||
// UARTSend(&c, 1);
|
// UARTSend(&c, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -148,7 +148,7 @@ void board_init(void)
|
|||||||
LPC_USB->OTGClkCtrl = clk_en;
|
LPC_USB->OTGClkCtrl = clk_en;
|
||||||
while ( (LPC_USB->OTGClkSt & clk_en) != clk_en );
|
while ( (LPC_USB->OTGClkSt & clk_en) != clk_en );
|
||||||
|
|
||||||
#if MODE_HOST_SUPPORTED
|
#if TUSB_OPT_HOST_ENABLED
|
||||||
// set portfunc to host !!!
|
// set portfunc to host !!!
|
||||||
LPC_USB->StCtrl = 0x3; // should be 1
|
LPC_USB->StCtrl = 0x3; // should be 1
|
||||||
#endif
|
#endif
|
||||||
@ -186,11 +186,13 @@ void board_led_control(bool state)
|
|||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
// BUTTONS
|
// BUTTONS
|
||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
|
#if 0
|
||||||
static bool button_read(uint8_t id)
|
static bool button_read(uint8_t id)
|
||||||
{
|
{
|
||||||
// return !BIT_TEST_( GPIO_ReadValue(buttons[id].port), buttons[id].pin ); // button is active low
|
// return !BIT_TEST_( GPIO_ReadValue(buttons[id].port), buttons[id].pin ); // button is active low
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
uint32_t board_buttons(void)
|
uint32_t board_buttons(void)
|
||||||
{
|
{
|
||||||
@ -206,12 +208,14 @@ uint32_t board_buttons(void)
|
|||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
void board_uart_putchar(uint8_t c)
|
void board_uart_putchar(uint8_t c)
|
||||||
{
|
{
|
||||||
|
(void) c;
|
||||||
// UART_Send(BOARD_UART_PORT, &c, 1, BLOCKING);
|
// UART_Send(BOARD_UART_PORT, &c, 1, BLOCKING);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t board_uart_getchar(void)
|
uint8_t board_uart_getchar(void)
|
||||||
{
|
{
|
||||||
// return UART_ReceiveByte(BOARD_UART_PORT);
|
// return UART_ReceiveByte(BOARD_UART_PORT);
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -242,6 +242,7 @@ uint8_t board_uart_getchar(void)
|
|||||||
|
|
||||||
void board_uart_putchar(uint8_t c)
|
void board_uart_putchar(uint8_t c)
|
||||||
{
|
{
|
||||||
|
(void) c;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -82,10 +82,10 @@ typedef enum {
|
|||||||
} TRANSFER_BLOCK_T;
|
} TRANSFER_BLOCK_T;
|
||||||
|
|
||||||
/** Pointer to Function returning Void (any number of parameters) */
|
/** Pointer to Function returning Void (any number of parameters) */
|
||||||
typedef void (*PFV)();
|
//typedef void (*PFV)();
|
||||||
|
|
||||||
/** Pointer to Function returning int32_t (any number of parameters) */
|
/** Pointer to Function returning int32_t (any number of parameters) */
|
||||||
typedef int32_t (*PFI)();
|
//typedef int32_t (*PFI)();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
|
@ -123,14 +123,14 @@ typedef enum Chip_PININT_BITSLICE_CFG {
|
|||||||
* @return Nothing
|
* @return Nothing
|
||||||
* @note This function should be used after the Chip_GPIO_Init() function.
|
* @note This function should be used after the Chip_GPIO_Init() function.
|
||||||
*/
|
*/
|
||||||
STATIC INLINE void Chip_PININT_Init(LPC_PIN_INT_T *pPININT) {}
|
STATIC INLINE void Chip_PININT_Init(LPC_PIN_INT_T *pPININT) { (void) pPININT; }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief De-Initialize Pin interrupt block
|
* @brief De-Initialize Pin interrupt block
|
||||||
* @param pPININT : The base address of Pin interrupt block
|
* @param pPININT : The base address of Pin interrupt block
|
||||||
* @return Nothing
|
* @return Nothing
|
||||||
*/
|
*/
|
||||||
STATIC INLINE void Chip_PININT_DeInit(LPC_PIN_INT_T *pPININT) {}
|
STATIC INLINE void Chip_PININT_DeInit(LPC_PIN_INT_T *pPININT) { (void) pPININT; }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Configure the pins as edge sensitive in Pin interrupt block
|
* @brief Configure the pins as edge sensitive in Pin interrupt block
|
||||||
|
@ -207,6 +207,7 @@ STATIC INLINE void Chip_RTC_DisableWakeup(LPC_RTC_T *pRTC, uint32_t ints)
|
|||||||
*/
|
*/
|
||||||
STATIC INLINE uint32_t Chip_RTC_ClearStatus(LPC_RTC_T *pRTC, uint32_t stsMask)
|
STATIC INLINE uint32_t Chip_RTC_ClearStatus(LPC_RTC_T *pRTC, uint32_t stsMask)
|
||||||
{
|
{
|
||||||
|
(void) stsMask;
|
||||||
return pRTC->CTRL;
|
return pRTC->CTRL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -50,12 +50,14 @@
|
|||||||
/* Initialize GPIO block */
|
/* Initialize GPIO block */
|
||||||
void Chip_GPIO_Init(LPC_GPIO_T *pGPIO)
|
void Chip_GPIO_Init(LPC_GPIO_T *pGPIO)
|
||||||
{
|
{
|
||||||
|
(void) pGPIO;
|
||||||
Chip_Clock_EnablePeriphClock(SYSCTL_CLOCK_GPIO);
|
Chip_Clock_EnablePeriphClock(SYSCTL_CLOCK_GPIO);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* De-Initialize GPIO block */
|
/* De-Initialize GPIO block */
|
||||||
void Chip_GPIO_DeInit(LPC_GPIO_T *pGPIO)
|
void Chip_GPIO_DeInit(LPC_GPIO_T *pGPIO)
|
||||||
{
|
{
|
||||||
|
(void) pGPIO;
|
||||||
Chip_Clock_DisablePeriphClock(SYSCTL_CLOCK_GPIO);
|
Chip_Clock_DisablePeriphClock(SYSCTL_CLOCK_GPIO);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -65,6 +65,7 @@ void Chip_UART0_Init(LPC_USART0_T *pUART)
|
|||||||
/* De-initializes the pUART peripheral */
|
/* De-initializes the pUART peripheral */
|
||||||
void Chip_UART0_DeInit(LPC_USART0_T *pUART)
|
void Chip_UART0_DeInit(LPC_USART0_T *pUART)
|
||||||
{
|
{
|
||||||
|
(void) pUART;
|
||||||
Chip_Clock_DisablePeriphClock(SYSCTL_CLOCK_UART0);
|
Chip_Clock_DisablePeriphClock(SYSCTL_CLOCK_UART0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -82,10 +82,10 @@ typedef enum {
|
|||||||
} TRANSFER_BLOCK_T;
|
} TRANSFER_BLOCK_T;
|
||||||
|
|
||||||
/** Pointer to Function returning Void (any number of parameters) */
|
/** Pointer to Function returning Void (any number of parameters) */
|
||||||
typedef void (*PFV)();
|
// typedef void (*PFV)();
|
||||||
|
|
||||||
/** Pointer to Function returning int32_t (any number of parameters) */
|
/** Pointer to Function returning int32_t (any number of parameters) */
|
||||||
typedef int32_t (*PFI)();
|
// typedef int32_t (*PFI)();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
|
@ -78,14 +78,14 @@ typedef struct { /*!< PIN_INT Structure */
|
|||||||
* @return Nothing
|
* @return Nothing
|
||||||
* @note This function should be used after the Chip_GPIO_Init() function.
|
* @note This function should be used after the Chip_GPIO_Init() function.
|
||||||
*/
|
*/
|
||||||
STATIC INLINE void Chip_PININT_Init(LPC_PIN_INT_T *pPININT) {}
|
STATIC INLINE void Chip_PININT_Init(LPC_PIN_INT_T *pPININT) { (void) pPININT; }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief De-Initialize Pin interrupt block
|
* @brief De-Initialize Pin interrupt block
|
||||||
* @param pPININT : The base address of Pin interrupt block
|
* @param pPININT : The base address of Pin interrupt block
|
||||||
* @return Nothing
|
* @return Nothing
|
||||||
*/
|
*/
|
||||||
STATIC INLINE void Chip_PININT_DeInit(LPC_PIN_INT_T *pPININT) {}
|
STATIC INLINE void Chip_PININT_DeInit(LPC_PIN_INT_T *pPININT) { (void) pPININT; }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Configure the pins as edge sensitive in Pin interrupt block
|
* @brief Configure the pins as edge sensitive in Pin interrupt block
|
||||||
|
@ -52,12 +52,14 @@
|
|||||||
/* Initialize GPIO block */
|
/* Initialize GPIO block */
|
||||||
void Chip_GPIO_Init(LPC_GPIO_T *pGPIO)
|
void Chip_GPIO_Init(LPC_GPIO_T *pGPIO)
|
||||||
{
|
{
|
||||||
|
(void) pGPIO;
|
||||||
Chip_Clock_EnablePeriphClock(SYSCTL_CLOCK_GPIO);
|
Chip_Clock_EnablePeriphClock(SYSCTL_CLOCK_GPIO);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* De-Initialize GPIO block */
|
/* De-Initialize GPIO block */
|
||||||
void Chip_GPIO_DeInit(LPC_GPIO_T *pGPIO)
|
void Chip_GPIO_DeInit(LPC_GPIO_T *pGPIO)
|
||||||
{
|
{
|
||||||
|
(void) pGPIO;
|
||||||
Chip_Clock_DisablePeriphClock(SYSCTL_CLOCK_GPIO);
|
Chip_Clock_DisablePeriphClock(SYSCTL_CLOCK_GPIO);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -66,6 +66,7 @@ void Chip_UART_Init(LPC_USART_T *pUART)
|
|||||||
/* De-initializes the pUART peripheral */
|
/* De-initializes the pUART peripheral */
|
||||||
void Chip_UART_DeInit(LPC_USART_T *pUART)
|
void Chip_UART_DeInit(LPC_USART_T *pUART)
|
||||||
{
|
{
|
||||||
|
(void) pUART;
|
||||||
Chip_Clock_DisablePeriphClock(SYSCTL_CLOCK_UART0);
|
Chip_Clock_DisablePeriphClock(SYSCTL_CLOCK_UART0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -82,10 +82,10 @@ typedef enum {
|
|||||||
} TRANSFER_BLOCK_T;
|
} TRANSFER_BLOCK_T;
|
||||||
|
|
||||||
/** Pointer to Function returning Void (any number of parameters) */
|
/** Pointer to Function returning Void (any number of parameters) */
|
||||||
typedef void (*PFV)(void);
|
// typedef void (*PFV)();
|
||||||
|
|
||||||
/** Pointer to Function returning int32_t (any number of parameters) */
|
/** Pointer to Function returning int32_t (any number of parameters) */
|
||||||
typedef int32_t (*PFI)(void);
|
// typedef int32_t (*PFI)();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
|
@ -328,6 +328,7 @@ uint32_t Chip_Clock_GetSYSCLKRate(void)
|
|||||||
case (uint32_t) SYSCTL_PLLCLKSRC_RTC:
|
case (uint32_t) SYSCTL_PLLCLKSRC_RTC:
|
||||||
return Chip_Clock_GetRTCOscRate();
|
return Chip_Clock_GetRTCOscRate();
|
||||||
#endif
|
#endif
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -451,6 +451,7 @@ STATIC INLINE void Chip_CCAN_ClearMsgIntPend(LPC_CCAN_T *pCCAN,
|
|||||||
uint8_t msgNum,
|
uint8_t msgNum,
|
||||||
CCAN_TRANSFER_DIR_T dir)
|
CCAN_TRANSFER_DIR_T dir)
|
||||||
{
|
{
|
||||||
|
(void) dir;
|
||||||
Chip_CCAN_TransferMsgObject(pCCAN, IFSel, CCAN_IF_CMDMSK_RD | CCAN_IF_CMDMSK_R_CLRINTPND, msgNum);
|
Chip_CCAN_TransferMsgObject(pCCAN, IFSel, CCAN_IF_CMDMSK_RD | CCAN_IF_CMDMSK_R_CLRINTPND, msgNum);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -582,6 +582,7 @@ STATIC INLINE void Chip_ENET_RXDisable(LPC_ENET_T *pENET)
|
|||||||
*/
|
*/
|
||||||
STATIC INLINE void Chip_ENET_RMIIEnable(LPC_ENET_T *pENET)
|
STATIC INLINE void Chip_ENET_RMIIEnable(LPC_ENET_T *pENET)
|
||||||
{
|
{
|
||||||
|
(void) pENET;
|
||||||
LPC_CREG->CREG6 |= 0x4;
|
LPC_CREG->CREG6 |= 0x4;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -595,6 +596,7 @@ STATIC INLINE void Chip_ENET_RMIIEnable(LPC_ENET_T *pENET)
|
|||||||
*/
|
*/
|
||||||
STATIC INLINE void Chip_ENET_MIIEnable(LPC_ENET_T *pENET)
|
STATIC INLINE void Chip_ENET_MIIEnable(LPC_ENET_T *pENET)
|
||||||
{
|
{
|
||||||
|
(void) pENET;
|
||||||
LPC_CREG->CREG6 &= ~0x7;
|
LPC_CREG->CREG6 &= ~0x7;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -88,10 +88,10 @@ typedef enum {
|
|||||||
} TRANSFER_BLOCK_T;
|
} TRANSFER_BLOCK_T;
|
||||||
|
|
||||||
/** Pointer to Function returning Void (any number of parameters) */
|
/** Pointer to Function returning Void (any number of parameters) */
|
||||||
typedef void (*PFV)();
|
// typedef void (*PFV)();
|
||||||
|
|
||||||
/** Pointer to Function returning int32_t (any number of parameters) */
|
/** Pointer to Function returning int32_t (any number of parameters) */
|
||||||
typedef int32_t (*PFI)();
|
// typedef int32_t (*PFI)();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
|
@ -77,14 +77,14 @@ typedef struct { /*!< PIN_INT Structure */
|
|||||||
* @return Nothing
|
* @return Nothing
|
||||||
* @note This function should be used after the Chip_GPIO_Init() function.
|
* @note This function should be used after the Chip_GPIO_Init() function.
|
||||||
*/
|
*/
|
||||||
STATIC INLINE void Chip_PININT_Init(LPC_PIN_INT_T *pPININT) {}
|
STATIC INLINE void Chip_PININT_Init(LPC_PIN_INT_T *pPININT) { (void) pPININT; }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief De-Initialize Pin interrupt block
|
* @brief De-Initialize Pin interrupt block
|
||||||
* @param pPININT : The base address of Pin interrupt block
|
* @param pPININT : The base address of Pin interrupt block
|
||||||
* @return Nothing
|
* @return Nothing
|
||||||
*/
|
*/
|
||||||
STATIC INLINE void Chip_PININT_DeInit(LPC_PIN_INT_T *pPININT) {}
|
STATIC INLINE void Chip_PININT_DeInit(LPC_PIN_INT_T *pPININT) { (void) pPININT; }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Configure the pins as edge sensitive in Pin interrupt block
|
* @brief Configure the pins as edge sensitive in Pin interrupt block
|
||||||
|
@ -194,6 +194,7 @@ static uint32_t Chip_Clock_TestMainPLLMultiplier(uint32_t InputHz, uint32_t Test
|
|||||||
/* Returns clock rate out of a divider */
|
/* Returns clock rate out of a divider */
|
||||||
static uint32_t Chip_Clock_GetDivRate(CHIP_CGU_CLKIN_T clock, CHIP_CGU_IDIV_T divider)
|
static uint32_t Chip_Clock_GetDivRate(CHIP_CGU_CLKIN_T clock, CHIP_CGU_IDIV_T divider)
|
||||||
{
|
{
|
||||||
|
(void) clock;
|
||||||
CHIP_CGU_CLKIN_T input;
|
CHIP_CGU_CLKIN_T input;
|
||||||
uint32_t div;
|
uint32_t div;
|
||||||
|
|
||||||
|
@ -50,11 +50,13 @@
|
|||||||
/* Initialize GPIO block */
|
/* Initialize GPIO block */
|
||||||
void Chip_GPIO_Init(LPC_GPIO_T *pGPIO)
|
void Chip_GPIO_Init(LPC_GPIO_T *pGPIO)
|
||||||
{
|
{
|
||||||
|
(void) pGPIO;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* De-Initialize GPIO block */
|
/* De-Initialize GPIO block */
|
||||||
void Chip_GPIO_DeInit(LPC_GPIO_T *pGPIO)
|
void Chip_GPIO_DeInit(LPC_GPIO_T *pGPIO)
|
||||||
{
|
{
|
||||||
|
(void) pGPIO;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -133,7 +133,7 @@ void Chip_SetupCoreClock(CHIP_CGU_CLKIN_T clkin, uint32_t core_freq, bool setbas
|
|||||||
/* Setup system base clocks and initial states. This won't enable and
|
/* Setup system base clocks and initial states. This won't enable and
|
||||||
disable individual clocks, but sets up the base clock sources for
|
disable individual clocks, but sets up the base clock sources for
|
||||||
each individual peripheral clock. */
|
each individual peripheral clock. */
|
||||||
for (i = 0; i < (sizeof(InitClkStates) / sizeof(InitClkStates[0])); i++) {
|
for (i = 0; i < (int) (sizeof(InitClkStates) / sizeof(InitClkStates[0])); i++) {
|
||||||
Chip_Clock_SetBaseClock(InitClkStates[i].clk, InitClkStates[i].clkin,
|
Chip_Clock_SetBaseClock(InitClkStates[i].clk, InitClkStates[i].clkin,
|
||||||
InitClkStates[i].autoblock_enab, InitClkStates[i].powerdn);
|
InitClkStates[i].autoblock_enab, InitClkStates[i].powerdn);
|
||||||
}
|
}
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user