diff --git a/bsp/imxrt1052-evk/.config b/bsp/imxrt1052-evk/.config index badc996951375597ec909aa91ff95a3e90d5c63c..74720d8a9a097b142d0b99aba279a08ff49c9c8f 100644 --- a/bsp/imxrt1052-evk/.config +++ b/bsp/imxrt1052-evk/.config @@ -76,6 +76,7 @@ CONFIG_FINSH_USING_HISTORY=y CONFIG_FINSH_HISTORY_LINES=5 CONFIG_FINSH_USING_SYMTAB=y CONFIG_FINSH_USING_DESCRIPTION=y +# CONFIG_FINSH_ECHO_DISABLE_DEFAULT is not set CONFIG_FINSH_THREAD_PRIORITY=20 CONFIG_FINSH_THREAD_STACK_SIZE=4096 CONFIG_FINSH_CMD_SIZE=80 @@ -297,6 +298,7 @@ CONFIG_LWIP_NETIF_LOOPBACK=0 # tools packages # # CONFIG_PKG_USING_CMBACKTRACE is not set +# CONFIG_PKG_USING_EASYFLASH is not set # CONFIG_PKG_USING_EASYLOGGER is not set # CONFIG_PKG_USING_SYSTEMVIEW is not set # CONFIG_PKG_USING_IPERF is not set @@ -307,12 +309,30 @@ CONFIG_LWIP_NETIF_LOOPBACK=0 # CONFIG_PKG_USING_FASTLZ is not set # CONFIG_PKG_USING_MINILZO is not set # CONFIG_PKG_USING_QUICKLZ is not set +# CONFIG_PKG_USING_MULTIBUTTON is not set # # example package: hello # # CONFIG_PKG_USING_HELLO is not set -# CONFIG_PKG_USING_MULTIBUTTON is not set CONFIG_SOC_IMXRT1052=y +CONFIG_BOARD_RT1050_EVK=y +# CONFIG_BOARD_RT1050_FIRE is not set + +# +# RT1050_EVK Bsp Config +# + +# +# Select uart device +# CONFIG_RT_USING_UART1=y -CONFIG_RT_USING_HP_RTC=y +# CONFIG_RT_USING_UART2 is not set +# CONFIG_RT_USING_UART3 is not set +# CONFIG_RT_USING_UART4 is not set +# CONFIG_RT_USING_UART5 is not set +# CONFIG_RT_USING_UART6 is not set +# CONFIG_RT_USING_UART7 is not set +# CONFIG_RT_USING_UART8 is not set +CONFIG_RT_USING_SDRAM=y +CONFIG_RT_USING_RTC_HP=y diff --git a/bsp/imxrt1052-evk/Kconfig b/bsp/imxrt1052-evk/Kconfig index a5c48884a7210df330df50a713fd249e0cef3f62..372696b8f40a22a0ca2fe43cc3a3e3d568eff872 100644 --- a/bsp/imxrt1052-evk/Kconfig +++ b/bsp/imxrt1052-evk/Kconfig @@ -23,17 +23,66 @@ config SOC_IMXRT1052 select ARCH_ARM_CORTEX_M7 default y -if RT_USING_SERIAL -config RT_USING_UART1 - bool "Using RT_USING_UART1" - default y -endif +# RT1050 board select! +choice + prompt "RT1050 Board select" + default BOARD_RT1050_EVK + config BOARD_RT1050_EVK + bool "RT1050_EVK" + config BOARD_RT1050_FIRE + bool "RT1050_FIRE" +endchoice -if RT_USING_RTC -config RT_USING_HP_RTC - bool "Using RT_USING_HP_RTC" - default n -endif +if BOARD_RT1050_EVK +menu "RT1050_EVK Bsp Config" + +menu "Select uart device" + config RT_USING_UART1 + bool "Using uart1" + select RT_USING_SERIAL + default y + config RT_USING_UART2 + bool "Using uart2" + select RT_USING_SERIAL + default n + config RT_USING_UART3 + bool "Using uart3" + select RT_USING_SERIAL + default n + config RT_USING_UART4 + bool "Using uart4" + select RT_USING_SERIAL + default n + config RT_USING_UART5 + bool "Using uart5" + select RT_USING_SERIAL + default n + config RT_USING_UART6 + bool "Using uart6" + select RT_USING_SERIAL + default n + config RT_USING_UART7 + bool "Using uart7" + select RT_USING_SERIAL + default n + config RT_USING_UART8 + bool "Using uart8" + select RT_USING_SERIAL + default n +endmenu + +#menu "SDRAM drive support" + config RT_USING_SDRAM + bool "Using sdram" + default y +#endmenu + +#menu "RTC drive support" + config RT_USING_RTC_HP + bool "Using hp rtc" + select RT_USING_RTC + default n +#endmenu if RT_USING_USB_DEVICE choice @@ -47,4 +96,59 @@ if RT_USING_USB_DEVICE endchoice endif +endmenu +endif +if BOARD_RT1050_FIRE +menu "RT1050_FIRE Bsp Config" + +menu "Select uart device" + config RT_USING_UART1 + bool "Using uart1" + select RT_USING_SERIAL + default y + config RT_USING_UART2 + bool "Using uart2" + select RT_USING_SERIAL + default n + config RT_USING_UART3 + bool "Using uart3" + select RT_USING_SERIAL + default n + config RT_USING_UART4 + bool "Using uart4" + select RT_USING_SERIAL + default n + config RT_USING_UART5 + bool "Using uart5" + select RT_USING_SERIAL + default n + config RT_USING_UART6 + bool "Using uart6" + select RT_USING_SERIAL + default n + config RT_USING_UART7 + bool "Using uart7" + select RT_USING_SERIAL + default n + config RT_USING_UART8 + bool "Using uart8" + select RT_USING_SERIAL + default n +endmenu + +#menu "SDRAM drive support" + config RT_USING_SDRAM + bool "Using sdram" + default y +#endmenu + +#menu "RTC drive support" + config RT_USING_RTC_HP + bool "Using hp rtc" + select RT_USING_RTC + default n +#endmenu + +endmenu +endif diff --git a/bsp/imxrt1052-evk/applications/main.c b/bsp/imxrt1052-evk/applications/main.c index e6082cf4d9379cb54206b41a2b7dae826f7427bf..b820aad5fe983aaa0846b7d26617d916ce626874 100644 --- a/bsp/imxrt1052-evk/applications/main.c +++ b/bsp/imxrt1052-evk/applications/main.c @@ -38,29 +38,29 @@ void dump_clock(void) { - rt_kprintf("CPU clock: %d\n", CLOCK_GetFreq(kCLOCK_CpuClk)); - rt_kprintf("AHB clock : %d\n", CLOCK_GetFreq(kCLOCK_AhbClk)); - rt_kprintf("SEMC clock : %d\n", CLOCK_GetFreq(kCLOCK_SemcClk)); - rt_kprintf("IPG clock : %d\n", CLOCK_GetFreq(kCLOCK_IpgClk)); - rt_kprintf("OSC clock selected : %d\n", CLOCK_GetFreq(kCLOCK_OscClk)); - rt_kprintf("RTC clock: %d\n", CLOCK_GetFreq(kCLOCK_RtcClk)); - rt_kprintf("ARMPLLCLK : %d\n", CLOCK_GetFreq(kCLOCK_ArmPllClk)); - rt_kprintf("USB1PLLCLK : %d\n", CLOCK_GetFreq(kCLOCK_Usb1PllClk)); - rt_kprintf("USB1PLLPDF0CLK : %d\n", CLOCK_GetFreq(kCLOCK_Usb1PllPfd0Clk)); - rt_kprintf("USB1PLLPFD1CLK : %d\n", CLOCK_GetFreq(kCLOCK_Usb1PllPfd1Clk)); - rt_kprintf("USB1PLLPFD2CLK : %d\n", CLOCK_GetFreq(kCLOCK_Usb1PllPfd2Clk)); - rt_kprintf("USB1PLLPFD3CLK : %d\n", CLOCK_GetFreq(kCLOCK_Usb1PllPfd3Clk)); - rt_kprintf("USB2PLLCLK : %d\n", CLOCK_GetFreq(kCLOCK_Usb2PllClk)); - rt_kprintf("SYSPLLCLK : %d\n", CLOCK_GetFreq(kCLOCK_SysPllClk)); - rt_kprintf("SYSPLLPDF0CLK : %d\n", CLOCK_GetFreq(kCLOCK_SysPllPfd0Clk)); - rt_kprintf("SYSPLLPFD1CLK : %d\n", CLOCK_GetFreq(kCLOCK_SysPllPfd1Clk)); - rt_kprintf("SYSPLLPFD2CLK : %d\n", CLOCK_GetFreq(kCLOCK_SysPllPfd2Clk)); - rt_kprintf("SYSPLLPFD3CLK : %d\n", CLOCK_GetFreq(kCLOCK_SysPllPfd3Clk)); - rt_kprintf("Enet PLLCLK ref_enetpll0 : %d\n", CLOCK_GetFreq(kCLOCK_EnetPll0Clk)); - rt_kprintf("Enet PLLCLK ref_enetpll1 : %d\n", CLOCK_GetFreq(kCLOCK_EnetPll1Clk)); - rt_kprintf("Enet PLLCLK ref_enetpll2 : %d\n", CLOCK_GetFreq(kCLOCK_EnetPll2Clk)); - rt_kprintf("Audio PLLCLK : %d\n", CLOCK_GetFreq(kCLOCK_AudioPllClk)); - rt_kprintf("Video PLLCLK : %d\n", CLOCK_GetFreq(kCLOCK_VideoPllClk)); + rt_kprintf("OSC clock : %d\n", CLOCK_GetFreq(kCLOCK_OscClk)); + rt_kprintf("RTC clock : %d\n", CLOCK_GetFreq(kCLOCK_RtcClk)); + rt_kprintf("CPU clock: %d\n", CLOCK_GetFreq(kCLOCK_CpuClk)); + rt_kprintf("AHB clock : %d\n", CLOCK_GetFreq(kCLOCK_AhbClk)); + rt_kprintf("SEMC clock : %d\n", CLOCK_GetFreq(kCLOCK_SemcClk)); + rt_kprintf("IPG clock : %d\n", CLOCK_GetFreq(kCLOCK_IpgClk)); + rt_kprintf("ARMPLLCLK(PLL1) : %d\n", CLOCK_GetFreq(kCLOCK_ArmPllClk)); + rt_kprintf("SYSPLLCLK(PLL2/528_PLL) : %d\n", CLOCK_GetFreq(kCLOCK_SysPllClk)); + rt_kprintf("SYSPLLPDF0CLK : %d\n", CLOCK_GetFreq(kCLOCK_SysPllPfd0Clk)); + rt_kprintf("SYSPLLPFD1CLK : %d\n", CLOCK_GetFreq(kCLOCK_SysPllPfd1Clk)); + rt_kprintf("SYSPLLPFD2CLK : %d\n", CLOCK_GetFreq(kCLOCK_SysPllPfd2Clk)); + rt_kprintf("SYSPLLPFD3CLK : %d\n", CLOCK_GetFreq(kCLOCK_SysPllPfd3Clk)); + rt_kprintf("USB1PLLCLK(PLL3) : %d\n", CLOCK_GetFreq(kCLOCK_Usb1PllClk)); + rt_kprintf("USB1PLLPDF0CLK : %d\n", CLOCK_GetFreq(kCLOCK_Usb1PllPfd0Clk)); + rt_kprintf("USB1PLLPFD1CLK : %d\n", CLOCK_GetFreq(kCLOCK_Usb1PllPfd1Clk)); + rt_kprintf("USB1PLLPFD2CLK : %d\n", CLOCK_GetFreq(kCLOCK_Usb1PllPfd2Clk)); + rt_kprintf("USB1PLLPFD3CLK : %d\n", CLOCK_GetFreq(kCLOCK_Usb1PllPfd3Clk)); + rt_kprintf("Audio PLLCLK(PLL4) : %d\n", CLOCK_GetFreq(kCLOCK_AudioPllClk)); + rt_kprintf("Video PLLCLK(PLL5) : %d\n", CLOCK_GetFreq(kCLOCK_VideoPllClk)); + rt_kprintf("Enet PLLCLK ref_enetpll0 : %d\n", CLOCK_GetFreq(kCLOCK_EnetPll0Clk)); + rt_kprintf("Enet PLLCLK ref_enetpll1 : %d\n", CLOCK_GetFreq(kCLOCK_EnetPll1Clk)); + rt_kprintf("Enet PLLCLK ref_enetpll2 : %d\n", CLOCK_GetFreq(kCLOCK_EnetPll2Clk)); + rt_kprintf("USB2PLLCLK(PLL7) : %d\n", CLOCK_GetFreq(kCLOCK_Usb2PllClk)); } void dump_cc_info(void) diff --git a/bsp/imxrt1052-evk/drivers/SConscript b/bsp/imxrt1052-evk/drivers/SConscript index 6ca466f3c8829578b16fe9f2060a1ee5aa681d5d..4c5a6e8ef3f0e975670dfd05804c1c570617efba 100644 --- a/bsp/imxrt1052-evk/drivers/SConscript +++ b/bsp/imxrt1052-evk/drivers/SConscript @@ -8,35 +8,42 @@ cwd = os.path.join(str(Dir('#')), 'drivers') src = Split(""" board.c drv_uart.c -hyper_flash_boot.c -drv_sdram.c """) CPPPATH = [cwd] CPPDEFINES = [] +# add sdram driver code +if GetDepend('RT_USING_SDRAM'): + src = src + ['./drv_sdram.c'] + if GetDepend('RT_USING_PIN'): src += ['drv_pin.c'] -if GetDepend('RT_USING_HP_RTC'): - src += ['drv_hp_rtc.c'] - -if GetDepend('RT_USING_LWIP'): - src += ['drv_eth.c', 'fsl_phy.c'] - CPPDEFINES += ['FSL_FEATURE_PHYKSZ8081_USE_RMII50M_MODE'] - -if GetDepend('RT_USING_SDIO'): - src += ['drv_sdio.c'] -if GetDepend('RT_USING_USB_DEVICE'): - src += Glob('usb/phy/*.c') - CPPDEFINES += ['ENDIANNESS'] - -if GetDepend('RT_USING_USB_DEVICE'): - src += ['drv_usbd.c'] - src += Glob('usb/device/*.c') - -if GetDepend('RT_USING_RTGUI') or GetDepend('PKG_USING_GUIENGINE'): - src += ['drv_lcd.c', 'drv_ft5406.c', 'drv_i2c.c'] +# add rtc driver code +if GetDepend('RT_USING_RTC_HP'): + src = src + ['./drv_rtc.c'] + +if GetDepend('BOARD_RT1050_EVK'): + src += ['hyper_flash_boot.c'] + + if GetDepend('RT_USING_LWIP'): + src += ['drv_eth.c', 'fsl_phy.c'] + CPPDEFINES += ['FSL_FEATURE_PHYKSZ8081_USE_RMII50M_MODE'] + + if GetDepend('RT_USING_SDIO'): + src += ['drv_sdio.c'] + + if GetDepend('RT_USING_USB_DEVICE'): + src += Glob('usb/phy/*.c') + CPPDEFINES += ['ENDIANNESS'] + + if GetDepend('RT_USING_USB_DEVICE'): + src += ['drv_usbd.c'] + src += Glob('usb/device/*.c') + + if GetDepend('RT_USING_RTGUI') or GetDepend('PKG_USING_GUIENGINE'): + src += ['drv_lcd.c', 'drv_ft5406.c', 'drv_i2c.c'] group = DefineGroup('Drivers', src, depend = [''], CPPPATH = CPPPATH, CPPDEFINES=CPPDEFINES) diff --git a/bsp/imxrt1052-evk/drivers/board.c b/bsp/imxrt1052-evk/drivers/board.c index b182ed58e0b6001bf1f22b2b12db63cb78102462..df518fbf0fea1d20b0ba4ede21c47a58fd38d186 100644 --- a/bsp/imxrt1052-evk/drivers/board.c +++ b/bsp/imxrt1052-evk/drivers/board.c @@ -18,7 +18,9 @@ #include "board.h" #include "drv_uart.h" +#if defined(RT_USING_SDRAM) && defined(RT_USING_MEMHEAP_AS_HEAP) static struct rt_memheap system_heap; +#endif /* ARM PLL configuration for RUN mode */ const clock_arm_pll_config_t armPllConfig = { .loopDivider = 100U }; @@ -162,12 +164,14 @@ void rt_lowlevel_init(void) { BOARD_ConfigMPU(); +#if defined(RT_USING_SDRAM) extern int imxrt_sdram_init(void); imxrt_sdram_init(); +#endif } /** - * This function will initial LPC8XX board. + * This function will initial rt1050 board. */ void rt_hw_board_init() { @@ -184,11 +188,18 @@ void rt_hw_board_init() #endif #ifdef RT_USING_HEAP - rt_kprintf("sdram heap, begin: 0x%p, end: 0x%p\n", SDRAM_BEGIN, SDRAM_END); - rt_system_heap_init((void*)SDRAM_BEGIN, (void*)SDRAM_END); - rt_kprintf("sram heap, begin: 0x%p, end: 0x%p\n", HEAP_BEGIN, HEAP_END); - rt_memheap_init(&system_heap, "sram", (void *)HEAP_BEGIN, HEAP_SIZE); +#if defined(RT_USING_SDRAM) && defined(RT_USING_MEMHEAP_AS_HEAP) + rt_kprintf("sdram heap, begin: 0x%p, end: 0x%p\n", SDRAM_BEGIN, SDRAM_END); + rt_system_heap_init((void *)SDRAM_BEGIN, (void*)SDRAM_END); + + rt_kprintf("sram heap, begin: 0x%p, end: 0x%p\n", HEAP_BEGIN, HEAP_END); + rt_memheap_init(&system_heap, "sram", (void *)HEAP_BEGIN, HEAP_SIZE); +#else + rt_kprintf("sram heap, begin: 0x%p, end: 0x%p\n", HEAP_BEGIN, HEAP_END); + rt_system_heap_init((void *)HEAP_BEGIN, (void*)HEAP_END); +#endif + #endif } diff --git a/bsp/imxrt1052-evk/drivers/drv_hp_rtc.c b/bsp/imxrt1052-evk/drivers/drv_rtc.c similarity index 97% rename from bsp/imxrt1052-evk/drivers/drv_hp_rtc.c rename to bsp/imxrt1052-evk/drivers/drv_rtc.c index 42448ae737be4ce817078a78a01e9d5a7c2b54d1..0c1dea21ebe9c01f71466ca4053c71bb8eaea375 100644 --- a/bsp/imxrt1052-evk/drivers/drv_hp_rtc.c +++ b/bsp/imxrt1052-evk/drivers/drv_rtc.c @@ -1,5 +1,5 @@ /* - * File : drv_hp_rtc.c + * File : drv_rtc.c * This file is part of RT-Thread RTOS * COPYRIGHT (C) 2006-2013, RT-Thread Development Team * @@ -11,11 +11,12 @@ * Date Author Notes * 2018-03-15 Liuguang the first version. */ -#include "drv_hp_rtc.h" -#include +#include "drv_rtc.h" + #include "fsl_common.h" #include "fsl_snvs_hp.h" #include "fsl_snvs_lp.h" +#include #ifdef RT_USING_RTC @@ -35,7 +36,7 @@ static time_t get_timestamp(void) tm_new.tm_hour = rtcDate.hour; tm_new.tm_mday = rtcDate.day; - tm_new.tm_mon = rtcDate.month - 1; + tm_new.tm_mon = rtcDate.month - 1; tm_new.tm_year = rtcDate.year - 1900; return mktime(&tm_new); diff --git a/bsp/imxrt1052-evk/drivers/drv_hp_rtc.h b/bsp/imxrt1052-evk/drivers/drv_rtc.h similarity index 94% rename from bsp/imxrt1052-evk/drivers/drv_hp_rtc.h rename to bsp/imxrt1052-evk/drivers/drv_rtc.h index e191e4714c1b9162c9ec67fc3da0e88b6136b48d..e7cf53902c0e4be06a408293da398a969eaf2bc8 100644 --- a/bsp/imxrt1052-evk/drivers/drv_hp_rtc.h +++ b/bsp/imxrt1052-evk/drivers/drv_rtc.h @@ -1,5 +1,5 @@ /* - * File : drv_hp_rtc.h + * File : drv_rtc.h * This file is part of RT-Thread RTOS * COPYRIGHT (C) 2006-2013, RT-Thread Development Team * diff --git a/bsp/imxrt1052-evk/project.uvoptx b/bsp/imxrt1052-evk/project.uvoptx index deca1cf444e3cf914b6dd6a3a618d5911934bfc4..a97f733fcea85c537d8487c9fe9fbbe57de5b4b5 100644 --- a/bsp/imxrt1052-evk/project.uvoptx +++ b/bsp/imxrt1052-evk/project.uvoptx @@ -73,7 +73,7 @@ 0 - 0 + 1 0 1 @@ -101,9 +101,7 @@ 0 0 1 - 0 - 0 - 3 + 2 @@ -166,19 +164,2194 @@ 0 + + + 0 0 - 0 - - - - - - - - + 0 + + Applications + 1 + 0 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + applications\device_test.c + device_test.c + 0 + 0 + + + 1 + 2 + 1 + 0 + 0 + 0 + applications\main.c + main.c + 0 + 0 + + + 1 + 3 + 1 + 0 + 0 + 0 + applications\mem_dump.c + mem_dump.c + 0 + 0 + + + 1 + 4 + 1 + 0 + 0 + 0 + applications\mem_test.c + mem_test.c + 0 + 0 + + + + + Drivers + 1 + 0 + 0 + 0 + + 2 + 5 + 1 + 0 + 0 + 0 + drivers\board.c + board.c + 0 + 0 + + + 2 + 6 + 1 + 0 + 0 + 0 + drivers\drv_uart.c + drv_uart.c + 0 + 0 + + + 2 + 7 + 1 + 0 + 0 + 0 + drivers\drv_sdram.c + drv_sdram.c + 0 + 0 + + + 2 + 8 + 1 + 0 + 0 + 0 + drivers\drv_pin.c + drv_pin.c + 0 + 0 + + + 2 + 9 + 1 + 0 + 0 + 0 + drivers\drv_rtc.c + drv_rtc.c + 0 + 0 + + + 2 + 10 + 1 + 0 + 0 + 0 + drivers\hyper_flash_boot.c + hyper_flash_boot.c + 0 + 0 + + + 2 + 11 + 1 + 0 + 0 + 0 + drivers\drv_eth.c + drv_eth.c + 0 + 0 + + + 2 + 12 + 1 + 0 + 0 + 0 + drivers\fsl_phy.c + fsl_phy.c + 0 + 0 + + + 2 + 13 + 1 + 0 + 0 + 0 + drivers\drv_sdio.c + drv_sdio.c + 0 + 0 + + + + + Libraries + 0 + 0 + 0 + 0 + + 3 + 14 + 1 + 0 + 0 + 0 + Libraries\drivers\fsl_adc.c + fsl_adc.c + 0 + 0 + + + 3 + 15 + 1 + 0 + 0 + 0 + Libraries\drivers\fsl_adc_etc.c + fsl_adc_etc.c + 0 + 0 + + + 3 + 16 + 1 + 0 + 0 + 0 + Libraries\drivers\fsl_aipstz.c + fsl_aipstz.c + 0 + 0 + + + 3 + 17 + 1 + 0 + 0 + 0 + Libraries\drivers\fsl_aoi.c + fsl_aoi.c + 0 + 0 + + + 3 + 18 + 1 + 0 + 0 + 0 + Libraries\drivers\fsl_bee.c + fsl_bee.c + 0 + 0 + + + 3 + 19 + 1 + 0 + 0 + 0 + Libraries\drivers\fsl_cache.c + fsl_cache.c + 0 + 0 + + + 3 + 20 + 1 + 0 + 0 + 0 + Libraries\drivers\fsl_clock.c + fsl_clock.c + 0 + 0 + + + 3 + 21 + 1 + 0 + 0 + 0 + Libraries\drivers\fsl_cmp.c + fsl_cmp.c + 0 + 0 + + + 3 + 22 + 1 + 0 + 0 + 0 + Libraries\drivers\fsl_common.c + fsl_common.c + 0 + 0 + + + 3 + 23 + 1 + 0 + 0 + 0 + Libraries\drivers\fsl_csi.c + fsl_csi.c + 0 + 0 + + + 3 + 24 + 1 + 0 + 0 + 0 + Libraries\drivers\fsl_dcdc.c + fsl_dcdc.c + 0 + 0 + + + 3 + 25 + 1 + 0 + 0 + 0 + Libraries\drivers\fsl_dcp.c + fsl_dcp.c + 0 + 0 + + + 3 + 26 + 1 + 0 + 0 + 0 + Libraries\drivers\fsl_dmamux.c + fsl_dmamux.c + 0 + 0 + + + 3 + 27 + 1 + 0 + 0 + 0 + Libraries\drivers\fsl_edma.c + fsl_edma.c + 0 + 0 + + + 3 + 28 + 1 + 0 + 0 + 0 + Libraries\drivers\fsl_elcdif.c + fsl_elcdif.c + 0 + 0 + + + 3 + 29 + 1 + 0 + 0 + 0 + Libraries\drivers\fsl_enc.c + fsl_enc.c + 0 + 0 + + + 3 + 30 + 1 + 0 + 0 + 0 + Libraries\drivers\fsl_enet.c + fsl_enet.c + 0 + 0 + + + 3 + 31 + 1 + 0 + 0 + 0 + Libraries\drivers\fsl_ewm.c + fsl_ewm.c + 0 + 0 + + + 3 + 32 + 1 + 0 + 0 + 0 + Libraries\drivers\fsl_flexcan.c + fsl_flexcan.c + 0 + 0 + + + 3 + 33 + 1 + 0 + 0 + 0 + Libraries\drivers\fsl_flexio.c + fsl_flexio.c + 0 + 0 + + + 3 + 34 + 1 + 0 + 0 + 0 + Libraries\drivers\fsl_flexio_i2c_master.c + fsl_flexio_i2c_master.c + 0 + 0 + + + 3 + 35 + 1 + 0 + 0 + 0 + Libraries\drivers\fsl_flexio_i2s.c + fsl_flexio_i2s.c + 0 + 0 + + + 3 + 36 + 1 + 0 + 0 + 0 + Libraries\drivers\fsl_flexio_i2s_edma.c + fsl_flexio_i2s_edma.c + 0 + 0 + + + 3 + 37 + 1 + 0 + 0 + 0 + Libraries\drivers\fsl_flexio_spi.c + fsl_flexio_spi.c + 0 + 0 + + + 3 + 38 + 1 + 0 + 0 + 0 + Libraries\drivers\fsl_flexio_spi_edma.c + fsl_flexio_spi_edma.c + 0 + 0 + + + 3 + 39 + 1 + 0 + 0 + 0 + Libraries\drivers\fsl_flexio_uart.c + fsl_flexio_uart.c + 0 + 0 + + + 3 + 40 + 1 + 0 + 0 + 0 + Libraries\drivers\fsl_flexio_uart_edma.c + fsl_flexio_uart_edma.c + 0 + 0 + + + 3 + 41 + 1 + 0 + 0 + 0 + Libraries\drivers\fsl_flexram.c + fsl_flexram.c + 0 + 0 + + + 3 + 42 + 1 + 0 + 0 + 0 + Libraries\drivers\fsl_flexspi.c + fsl_flexspi.c + 0 + 0 + + + 3 + 43 + 1 + 0 + 0 + 0 + Libraries\drivers\fsl_gpc.c + fsl_gpc.c + 0 + 0 + + + 3 + 44 + 1 + 0 + 0 + 0 + Libraries\drivers\fsl_gpio.c + fsl_gpio.c + 0 + 0 + + + 3 + 45 + 1 + 0 + 0 + 0 + Libraries\drivers\fsl_gpt.c + fsl_gpt.c + 0 + 0 + + + 3 + 46 + 1 + 0 + 0 + 0 + Libraries\drivers\fsl_kpp.c + fsl_kpp.c + 0 + 0 + + + 3 + 47 + 1 + 0 + 0 + 0 + Libraries\drivers\fsl_lpi2c.c + fsl_lpi2c.c + 0 + 0 + + + 3 + 48 + 1 + 0 + 0 + 0 + Libraries\drivers\fsl_lpi2c_edma.c + fsl_lpi2c_edma.c + 0 + 0 + + + 3 + 49 + 1 + 0 + 0 + 0 + Libraries\drivers\fsl_lpspi.c + fsl_lpspi.c + 0 + 0 + + + 3 + 50 + 1 + 0 + 0 + 0 + Libraries\drivers\fsl_lpspi_edma.c + fsl_lpspi_edma.c + 0 + 0 + + + 3 + 51 + 1 + 0 + 0 + 0 + Libraries\drivers\fsl_lpuart.c + fsl_lpuart.c + 0 + 0 + + + 3 + 52 + 1 + 0 + 0 + 0 + Libraries\drivers\fsl_lpuart_edma.c + fsl_lpuart_edma.c + 0 + 0 + + + 3 + 53 + 1 + 0 + 0 + 0 + Libraries\drivers\fsl_pit.c + fsl_pit.c + 0 + 0 + + + 3 + 54 + 1 + 0 + 0 + 0 + Libraries\drivers\fsl_pmu.c + fsl_pmu.c + 0 + 0 + + + 3 + 55 + 1 + 0 + 0 + 0 + Libraries\drivers\fsl_pwm.c + fsl_pwm.c + 0 + 0 + + + 3 + 56 + 1 + 0 + 0 + 0 + Libraries\drivers\fsl_pxp.c + fsl_pxp.c + 0 + 0 + + + 3 + 57 + 1 + 0 + 0 + 0 + Libraries\drivers\fsl_qtmr.c + fsl_qtmr.c + 0 + 0 + + + 3 + 58 + 1 + 0 + 0 + 0 + Libraries\drivers\fsl_rtwdog.c + fsl_rtwdog.c + 0 + 0 + + + 3 + 59 + 1 + 0 + 0 + 0 + Libraries\drivers\fsl_sai.c + fsl_sai.c + 0 + 0 + + + 3 + 60 + 1 + 0 + 0 + 0 + Libraries\drivers\fsl_sai_edma.c + fsl_sai_edma.c + 0 + 0 + + + 3 + 61 + 1 + 0 + 0 + 0 + Libraries\drivers\fsl_semc.c + fsl_semc.c + 0 + 0 + + + 3 + 62 + 1 + 0 + 0 + 0 + Libraries\drivers\fsl_snvs_hp.c + fsl_snvs_hp.c + 0 + 0 + + + 3 + 63 + 1 + 0 + 0 + 0 + Libraries\drivers\fsl_snvs_lp.c + fsl_snvs_lp.c + 0 + 0 + + + 3 + 64 + 1 + 0 + 0 + 0 + Libraries\drivers\fsl_spdif.c + fsl_spdif.c + 0 + 0 + + + 3 + 65 + 1 + 0 + 0 + 0 + Libraries\drivers\fsl_spdif_edma.c + fsl_spdif_edma.c + 0 + 0 + + + 3 + 66 + 1 + 0 + 0 + 0 + Libraries\drivers\fsl_src.c + fsl_src.c + 0 + 0 + + + 3 + 67 + 1 + 0 + 0 + 0 + Libraries\drivers\fsl_trng.c + fsl_trng.c + 0 + 0 + + + 3 + 68 + 1 + 0 + 0 + 0 + Libraries\drivers\fsl_tsc.c + fsl_tsc.c + 0 + 0 + + + 3 + 69 + 1 + 0 + 0 + 0 + Libraries\drivers\fsl_usdhc.c + fsl_usdhc.c + 0 + 0 + + + 3 + 70 + 1 + 0 + 0 + 0 + Libraries\drivers\fsl_wdog.c + fsl_wdog.c + 0 + 0 + + + 3 + 71 + 1 + 0 + 0 + 0 + Libraries\drivers\fsl_xbara.c + fsl_xbara.c + 0 + 0 + + + 3 + 72 + 1 + 0 + 0 + 0 + Libraries\drivers\fsl_xbarb.c + fsl_xbarb.c + 0 + 0 + + + 3 + 73 + 1 + 0 + 0 + 0 + Libraries\system_MIMXRT1052.c + system_MIMXRT1052.c + 0 + 0 + + + 3 + 74 + 2 + 0 + 0 + 0 + Libraries\arm\startup_MIMXRT1052.s + startup_MIMXRT1052.s + 0 + 0 + + + + + Kernel + 0 + 0 + 0 + 0 + + 4 + 75 + 1 + 0 + 0 + 0 + ..\..\src\clock.c + clock.c + 0 + 0 + + + 4 + 76 + 1 + 0 + 0 + 0 + ..\..\src\components.c + components.c + 0 + 0 + + + 4 + 77 + 1 + 0 + 0 + 0 + ..\..\src\device.c + device.c + 0 + 0 + + + 4 + 78 + 1 + 0 + 0 + 0 + ..\..\src\idle.c + idle.c + 0 + 0 + + + 4 + 79 + 1 + 0 + 0 + 0 + ..\..\src\ipc.c + ipc.c + 0 + 0 + + + 4 + 80 + 1 + 0 + 0 + 0 + ..\..\src\irq.c + irq.c + 0 + 0 + + + 4 + 81 + 1 + 0 + 0 + 0 + ..\..\src\kservice.c + kservice.c + 0 + 0 + + + 4 + 82 + 1 + 0 + 0 + 0 + ..\..\src\memheap.c + memheap.c + 0 + 0 + + + 4 + 83 + 1 + 0 + 0 + 0 + ..\..\src\object.c + object.c + 0 + 0 + + + 4 + 84 + 1 + 0 + 0 + 0 + ..\..\src\scheduler.c + scheduler.c + 0 + 0 + + + 4 + 85 + 1 + 0 + 0 + 0 + ..\..\src\signal.c + signal.c + 0 + 0 + + + 4 + 86 + 1 + 0 + 0 + 0 + ..\..\src\thread.c + thread.c + 0 + 0 + + + 4 + 87 + 1 + 0 + 0 + 0 + ..\..\src\timer.c + timer.c + 0 + 0 + + + + + CORTEX-M7 + 0 + 0 + 0 + 0 + + 5 + 88 + 1 + 0 + 0 + 0 + ..\..\libcpu\arm\cortex-m7\cpuport.c + cpuport.c + 0 + 0 + + + 5 + 89 + 2 + 0 + 0 + 0 + ..\..\libcpu\arm\cortex-m7\context_rvds.S + context_rvds.S + 0 + 0 + + + 5 + 90 + 1 + 0 + 0 + 0 + ..\..\libcpu\arm\common\backtrace.c + backtrace.c + 0 + 0 + + + 5 + 91 + 1 + 0 + 0 + 0 + ..\..\libcpu\arm\common\div0.c + div0.c + 0 + 0 + + + 5 + 92 + 1 + 0 + 0 + 0 + ..\..\libcpu\arm\common\showmem.c + showmem.c + 0 + 0 + + + + + Filesystem + 0 + 0 + 0 + 0 + + 6 + 93 + 1 + 0 + 0 + 0 + ..\..\components\dfs\src\dfs.c + dfs.c + 0 + 0 + + + 6 + 94 + 1 + 0 + 0 + 0 + ..\..\components\dfs\src\dfs_file.c + dfs_file.c + 0 + 0 + + + 6 + 95 + 1 + 0 + 0 + 0 + ..\..\components\dfs\src\dfs_fs.c + dfs_fs.c + 0 + 0 + + + 6 + 96 + 1 + 0 + 0 + 0 + ..\..\components\dfs\src\dfs_posix.c + dfs_posix.c + 0 + 0 + + + 6 + 97 + 1 + 0 + 0 + 0 + ..\..\components\dfs\filesystems\devfs\devfs.c + devfs.c + 0 + 0 + + + 6 + 98 + 1 + 0 + 0 + 0 + ..\..\components\dfs\filesystems\elmfat\dfs_elm.c + dfs_elm.c + 0 + 0 + + + 6 + 99 + 1 + 0 + 0 + 0 + ..\..\components\dfs\filesystems\elmfat\ff.c + ff.c + 0 + 0 + + + 6 + 100 + 1 + 0 + 0 + 0 + ..\..\components\dfs\filesystems\elmfat\option\ccsbcs.c + ccsbcs.c + 0 + 0 + + + + + DeviceDrivers + 0 + 0 + 0 + 0 + + 7 + 101 + 1 + 0 + 0 + 0 + ..\..\components\drivers\i2c\i2c_core.c + i2c_core.c + 0 + 0 + + + 7 + 102 + 1 + 0 + 0 + 0 + ..\..\components\drivers\i2c\i2c_dev.c + i2c_dev.c + 0 + 0 + + + 7 + 103 + 1 + 0 + 0 + 0 + ..\..\components\drivers\i2c\i2c-bit-ops.c + i2c-bit-ops.c + 0 + 0 + + + 7 + 104 + 1 + 0 + 0 + 0 + ..\..\components\drivers\misc\pin.c + pin.c + 0 + 0 + + + 7 + 105 + 1 + 0 + 0 + 0 + ..\..\components\drivers\rtc\rtc.c + rtc.c + 0 + 0 + + + 7 + 106 + 1 + 0 + 0 + 0 + ..\..\components\drivers\sdio\block_dev.c + block_dev.c + 0 + 0 + + + 7 + 107 + 1 + 0 + 0 + 0 + ..\..\components\drivers\sdio\mmcsd_core.c + mmcsd_core.c + 0 + 0 + + + 7 + 108 + 1 + 0 + 0 + 0 + ..\..\components\drivers\sdio\sd.c + sd.c + 0 + 0 + + + 7 + 109 + 1 + 0 + 0 + 0 + ..\..\components\drivers\sdio\sdio.c + sdio.c + 0 + 0 + + + 7 + 110 + 1 + 0 + 0 + 0 + ..\..\components\drivers\sdio\mmc.c + mmc.c + 0 + 0 + + + 7 + 111 + 1 + 0 + 0 + 0 + ..\..\components\drivers\serial\serial.c + serial.c + 0 + 0 + + + 7 + 112 + 1 + 0 + 0 + 0 + ..\..\components\drivers\src\completion.c + completion.c + 0 + 0 + + + 7 + 113 + 1 + 0 + 0 + 0 + ..\..\components\drivers\src\dataqueue.c + dataqueue.c + 0 + 0 + + + 7 + 114 + 1 + 0 + 0 + 0 + ..\..\components\drivers\src\pipe.c + pipe.c + 0 + 0 + + + 7 + 115 + 1 + 0 + 0 + 0 + ..\..\components\drivers\src\ringbuffer.c + ringbuffer.c + 0 + 0 + + + 7 + 116 + 1 + 0 + 0 + 0 + ..\..\components\drivers\src\waitqueue.c + waitqueue.c + 0 + 0 + + + 7 + 117 + 1 + 0 + 0 + 0 + ..\..\components\drivers\src\workqueue.c + workqueue.c + 0 + 0 + + + + + finsh + 0 + 0 + 0 + 0 + + 8 + 118 + 1 + 0 + 0 + 0 + ..\..\components\finsh\shell.c + shell.c + 0 + 0 + + + 8 + 119 + 1 + 0 + 0 + 0 + ..\..\components\finsh\symbol.c + symbol.c + 0 + 0 + + + 8 + 120 + 1 + 0 + 0 + 0 + ..\..\components\finsh\cmd.c + cmd.c + 0 + 0 + + + 8 + 121 + 1 + 0 + 0 + 0 + ..\..\components\finsh\msh.c + msh.c + 0 + 0 + + + 8 + 122 + 1 + 0 + 0 + 0 + ..\..\components\finsh\msh_cmd.c + msh_cmd.c + 0 + 0 + + + 8 + 123 + 1 + 0 + 0 + 0 + ..\..\components\finsh\msh_file.c + msh_file.c + 0 + 0 + + + 8 + 124 + 1 + 0 + 0 + 0 + ..\..\components\finsh\finsh_compiler.c + finsh_compiler.c + 0 + 0 + + + 8 + 125 + 1 + 0 + 0 + 0 + ..\..\components\finsh\finsh_error.c + finsh_error.c + 0 + 0 + + + 8 + 126 + 1 + 0 + 0 + 0 + ..\..\components\finsh\finsh_heap.c + finsh_heap.c + 0 + 0 + + + 8 + 127 + 1 + 0 + 0 + 0 + ..\..\components\finsh\finsh_init.c + finsh_init.c + 0 + 0 + + + 8 + 128 + 1 + 0 + 0 + 0 + ..\..\components\finsh\finsh_node.c + finsh_node.c + 0 + 0 + + + 8 + 129 + 1 + 0 + 0 + 0 + ..\..\components\finsh\finsh_ops.c + finsh_ops.c + 0 + 0 + + + 8 + 130 + 1 + 0 + 0 + 0 + ..\..\components\finsh\finsh_parser.c + finsh_parser.c + 0 + 0 + + + 8 + 131 + 1 + 0 + 0 + 0 + ..\..\components\finsh\finsh_var.c + finsh_var.c + 0 + 0 + + + 8 + 132 + 1 + 0 + 0 + 0 + ..\..\components\finsh\finsh_vm.c + finsh_vm.c + 0 + 0 + + + 8 + 133 + 1 + 0 + 0 + 0 + ..\..\components\finsh\finsh_token.c + finsh_token.c + 0 + 0 + + + + + libc + 0 + 0 + 0 + 0 + + 9 + 134 + 1 + 0 + 0 + 0 + ..\..\components\libc\compilers\armlibc\libc.c + libc.c + 0 + 0 + + + 9 + 135 + 1 + 0 + 0 + 0 + ..\..\components\libc\compilers\armlibc\libc_syms.c + libc_syms.c + 0 + 0 + + + 9 + 136 + 1 + 0 + 0 + 0 + ..\..\components\libc\compilers\armlibc\mem_std.c + mem_std.c + 0 + 0 + + + 9 + 137 + 1 + 0 + 0 + 0 + ..\..\components\libc\compilers\armlibc\stdio.c + stdio.c + 0 + 0 + + + 9 + 138 + 1 + 0 + 0 + 0 + ..\..\components\libc\compilers\armlibc\stubs.c + stubs.c + 0 + 0 + + + 9 + 139 + 1 + 0 + 0 + 0 + ..\..\components\libc\compilers\armlibc\time.c + time.c + 0 + 0 + + + + + lwIP + 0 + 0 + 0 + 0 + + 10 + 140 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\arch\sys_arch.c + sys_arch.c + 0 + 0 + + + 10 + 141 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\api\api_lib.c + api_lib.c + 0 + 0 + + + 10 + 142 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\api\api_msg.c + api_msg.c + 0 + 0 + + + 10 + 143 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\api\err.c + err.c + 0 + 0 + + + 10 + 144 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\api\netbuf.c + netbuf.c + 0 + 0 + + + 10 + 145 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\api\netdb.c + netdb.c + 0 + 0 + + + 10 + 146 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\api\netifapi.c + netifapi.c + 0 + 0 + + + 10 + 147 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\api\sockets.c + sockets.c + 0 + 0 + + + 10 + 148 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\api\tcpip.c + tcpip.c + 0 + 0 + + + 10 + 149 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\core\def.c + def.c + 0 + 0 + + + 10 + 150 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\core\dns.c + dns.c + 0 + 0 + + + 10 + 151 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\core\inet_chksum.c + inet_chksum.c + 0 + 0 + + + 10 + 152 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\core\init.c + init.c + 0 + 0 + + + 10 + 153 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\core\ip.c + ip.c + 0 + 0 + + + 10 + 154 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\core\memp.c + memp.c + 0 + 0 + + + 10 + 155 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\core\netif.c + netif.c + 0 + 0 + + + 10 + 156 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\core\pbuf.c + pbuf.c + 0 + 0 + + + 10 + 157 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\core\raw.c + raw.c + 0 + 0 + + + 10 + 158 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\core\stats.c + stats.c + 0 + 0 + + + 10 + 159 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\core\sys.c + sys.c + 0 + 0 + + + 10 + 160 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\core\tcp.c + tcp.c + 0 + 0 + + + 10 + 161 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\core\tcp_in.c + tcp_in.c + 0 + 0 + + + 10 + 162 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\core\tcp_out.c + tcp_out.c + 0 + 0 + + + 10 + 163 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\core\timeouts.c + timeouts.c + 0 + 0 + + + 10 + 164 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\core\udp.c + udp.c + 0 + 0 + + + 10 + 165 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\netif\ethernet.c + ethernet.c + 0 + 0 + + + 10 + 166 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\netif\ethernetif.c + ethernetif.c + 0 + 0 + + + 10 + 167 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\netif\lowpan6.c + lowpan6.c + 0 + 0 + + + 10 + 168 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\core\ipv4\autoip.c + autoip.c + 0 + 0 + + + 10 + 169 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\core\ipv4\dhcp.c + dhcp.c + 0 + 0 + + + 10 + 170 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\core\ipv4\etharp.c + etharp.c + 0 + 0 + + + 10 + 171 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\core\ipv4\icmp.c + icmp.c + 0 + 0 + + + 10 + 172 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\core\ipv4\igmp.c + igmp.c + 0 + 0 + + + 10 + 173 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\core\ipv4\ip4.c + ip4.c + 0 + 0 + + + 10 + 174 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\core\ipv4\ip4_addr.c + ip4_addr.c + 0 + 0 + + + 10 + 175 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\core\ipv4\ip4_frag.c + ip4_frag.c + 0 + 0 + + + ::CMSIS 0 diff --git a/bsp/imxrt1052-evk/project.uvprojx b/bsp/imxrt1052-evk/project.uvprojx index 2c067820c8eeaf407400bdec4860348c0ba231a8..9efc66c67961077d13611b366b5d079cc8447127 100644 --- a/bsp/imxrt1052-evk/project.uvprojx +++ b/bsp/imxrt1052-evk/project.uvprojx @@ -1,43 +1,44 @@ + 2.1 +
### uVision Project, (C) Keil Software
+ RT-Thread IMXRT1052 0x4 ARM-ADS - 5060528::V5.06 update 5 (build 528)::ARMCC - 0 + 5060422::V5.06 update 4 (build 422)::ARMCC MIMXRT1052:M7 NXP - NXP.iMXRT_DFP.1.0.2 - http://mcuxpresso.nxp.com/cmsis_pack/repo/ + NXP.iMXRT_DFP.1.0.1 IRAM(0x20000000,0x00060000) IRAM2(0x00000000,0x00020000) CPUTYPE("Cortex-M7") FPU3(SFPU) CLOCK(12000000) ELITTLE - - + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0RT1050 -FS060000000 -FL04000000 -FP0($$Device:MIMXRT1052$Flash\RT1050.FLM)) 0 $$Device:MIMXRT1052$Device\Include\MIMXRT1052.h - - - - - - - - - + + + + + + + + + $$Device:MIMXRT1052$SVD\MIMXRT1052.svd 0 0 - - - - - + + + + + 0 0 @@ -59,8 +60,8 @@ 0 0 - - + + 0 0 0 @@ -69,8 +70,8 @@ 0 0 - - + + 0 0 0 @@ -80,14 +81,14 @@ 1 0 fromelf --bin !L --output rtthread-mdk.bin - + 0 0 0 0 0 - + 0 @@ -101,8 +102,8 @@ 0 0 3 - - + + 1 @@ -135,11 +136,11 @@ 1 BIN\UL2CM3.DLL - - - - - + + + + + 0 @@ -172,7 +173,7 @@ 0 0 "Cortex-M7" - + 0 0 0 @@ -304,7 +305,7 @@ 0x20000 - + 1 @@ -332,7 +333,7 @@ --library_interface=armcc --library_type=standardlib --diag_suppress=66,1296,186 SKIP_SYSCLK_INIT, CPU_MIMXRT1052DVL6A, FSL_SDK_ENABLE_DRIVER_CACHE_CONTROL=1, EVK_MCIMXRM, FSL_FEATURE_PHYKSZ8081_USE_RMII50M_MODE, RT_USING_ARM_LIBC - + applications;.;drivers;Libraries;Libraries\drivers;Libraries\utilities;Libraries\CMSIS\Include;..\..\include;..\..\libcpu\arm\cortex-m7;..\..\libcpu\arm\common;..\..\components\dfs\include;..\..\components\dfs\filesystems\devfs;..\..\components\dfs\filesystems\elmfat;..\..\components\drivers\include;..\..\components\drivers\include;..\..\components\drivers\include;..\..\components\drivers\include;..\..\components\drivers\include;..\..\components\drivers\include;..\..\components\finsh;..\..\components\libc\compilers\armlibc;..\..\components\net\lwip-2.0.2\src;..\..\components\net\lwip-2.0.2\src\include;..\..\components\net\lwip-2.0.2\src\include\ipv4;..\..\components\net\lwip-2.0.2\src\arch\include;..\..\components\net\lwip-2.0.2\src\include\netif;..\..\components\net\lwip-2.0.2\src\include\posix @@ -348,10 +349,10 @@ 0 0 - - - - + + + + @@ -363,13 +364,13 @@ 0 0x00000000 0x10000000 - + .\Libraries\arm\MIMXRT1052xxxxx_flexspi_nor.scf - - + + --keep *.o(.rti_fn.*) --keep *.o(FSymTab) --keep *.o(VSymTab) - - + + @@ -382,22 +383,16 @@ 1 applications\device_test.c - - main.c 1 applications\main.c - - mem_dump.c 1 applications\mem_dump.c - - mem_test.c 1 @@ -413,57 +408,41 @@ 1 drivers\board.c - - drv_uart.c 1 drivers\drv_uart.c - - - - hyper_flash_boot.c - 1 - drivers\hyper_flash_boot.c - - - drv_sdram.c 1 drivers\drv_sdram.c - - drv_pin.c 1 drivers\drv_pin.c - - - drv_hp_rtc.c + drv_rtc.c 1 - drivers\drv_hp_rtc.c + drivers\drv_rtc.c + + + hyper_flash_boot.c + 1 + drivers\hyper_flash_boot.c - - drv_eth.c 1 drivers\drv_eth.c - - fsl_phy.c 1 drivers\fsl_phy.c - - drv_sdio.c 1 @@ -479,421 +458,301 @@ 1 Libraries\drivers\fsl_adc.c - - fsl_adc_etc.c 1 Libraries\drivers\fsl_adc_etc.c - - fsl_aipstz.c 1 Libraries\drivers\fsl_aipstz.c - - fsl_aoi.c 1 Libraries\drivers\fsl_aoi.c - - fsl_bee.c 1 Libraries\drivers\fsl_bee.c - - fsl_cache.c 1 Libraries\drivers\fsl_cache.c - - fsl_clock.c 1 Libraries\drivers\fsl_clock.c - - fsl_cmp.c 1 Libraries\drivers\fsl_cmp.c - - fsl_common.c 1 Libraries\drivers\fsl_common.c - - fsl_csi.c 1 Libraries\drivers\fsl_csi.c - - fsl_dcdc.c 1 Libraries\drivers\fsl_dcdc.c - - fsl_dcp.c 1 Libraries\drivers\fsl_dcp.c - - fsl_dmamux.c 1 Libraries\drivers\fsl_dmamux.c - - fsl_edma.c 1 Libraries\drivers\fsl_edma.c - - fsl_elcdif.c 1 Libraries\drivers\fsl_elcdif.c - - fsl_enc.c 1 Libraries\drivers\fsl_enc.c - - fsl_enet.c 1 Libraries\drivers\fsl_enet.c - - fsl_ewm.c 1 Libraries\drivers\fsl_ewm.c - - fsl_flexcan.c 1 Libraries\drivers\fsl_flexcan.c - - fsl_flexio.c 1 Libraries\drivers\fsl_flexio.c - - fsl_flexio_i2c_master.c 1 Libraries\drivers\fsl_flexio_i2c_master.c - - fsl_flexio_i2s.c 1 Libraries\drivers\fsl_flexio_i2s.c - - fsl_flexio_i2s_edma.c 1 Libraries\drivers\fsl_flexio_i2s_edma.c - - fsl_flexio_spi.c 1 Libraries\drivers\fsl_flexio_spi.c - - fsl_flexio_spi_edma.c 1 Libraries\drivers\fsl_flexio_spi_edma.c - - fsl_flexio_uart.c 1 Libraries\drivers\fsl_flexio_uart.c - - fsl_flexio_uart_edma.c 1 Libraries\drivers\fsl_flexio_uart_edma.c - - fsl_flexram.c 1 Libraries\drivers\fsl_flexram.c - - fsl_flexspi.c 1 Libraries\drivers\fsl_flexspi.c - - fsl_gpc.c 1 Libraries\drivers\fsl_gpc.c - - fsl_gpio.c 1 Libraries\drivers\fsl_gpio.c - - fsl_gpt.c 1 Libraries\drivers\fsl_gpt.c - - fsl_kpp.c 1 Libraries\drivers\fsl_kpp.c - - fsl_lpi2c.c 1 Libraries\drivers\fsl_lpi2c.c - - fsl_lpi2c_edma.c 1 Libraries\drivers\fsl_lpi2c_edma.c - - fsl_lpspi.c 1 Libraries\drivers\fsl_lpspi.c - - fsl_lpspi_edma.c 1 Libraries\drivers\fsl_lpspi_edma.c - - fsl_lpuart.c 1 Libraries\drivers\fsl_lpuart.c - - fsl_lpuart_edma.c 1 Libraries\drivers\fsl_lpuart_edma.c - - fsl_pit.c 1 Libraries\drivers\fsl_pit.c - - fsl_pmu.c 1 Libraries\drivers\fsl_pmu.c - - fsl_pwm.c 1 Libraries\drivers\fsl_pwm.c - - fsl_pxp.c 1 Libraries\drivers\fsl_pxp.c - - fsl_qtmr.c 1 Libraries\drivers\fsl_qtmr.c - - fsl_rtwdog.c 1 Libraries\drivers\fsl_rtwdog.c - - fsl_sai.c 1 Libraries\drivers\fsl_sai.c - - fsl_sai_edma.c 1 Libraries\drivers\fsl_sai_edma.c - - fsl_semc.c 1 Libraries\drivers\fsl_semc.c - - fsl_snvs_hp.c 1 Libraries\drivers\fsl_snvs_hp.c - - fsl_snvs_lp.c 1 Libraries\drivers\fsl_snvs_lp.c - - fsl_spdif.c 1 Libraries\drivers\fsl_spdif.c - - fsl_spdif_edma.c 1 Libraries\drivers\fsl_spdif_edma.c - - fsl_src.c 1 Libraries\drivers\fsl_src.c - - fsl_trng.c 1 Libraries\drivers\fsl_trng.c - - fsl_tsc.c 1 Libraries\drivers\fsl_tsc.c - - fsl_usdhc.c 1 Libraries\drivers\fsl_usdhc.c - - fsl_wdog.c 1 Libraries\drivers\fsl_wdog.c - - fsl_xbara.c 1 Libraries\drivers\fsl_xbara.c - - fsl_xbarb.c 1 Libraries\drivers\fsl_xbarb.c - - system_MIMXRT1052.c 1 Libraries\system_MIMXRT1052.c - - startup_MIMXRT1052.s 2 @@ -909,85 +768,61 @@ 1 ..\..\src\clock.c - - components.c 1 ..\..\src\components.c - - device.c 1 ..\..\src\device.c - - idle.c 1 ..\..\src\idle.c - - ipc.c 1 ..\..\src\ipc.c - - irq.c 1 ..\..\src\irq.c - - kservice.c 1 ..\..\src\kservice.c - - memheap.c 1 ..\..\src\memheap.c - - object.c 1 ..\..\src\object.c - - scheduler.c 1 ..\..\src\scheduler.c - - signal.c 1 ..\..\src\signal.c - - thread.c 1 ..\..\src\thread.c - - timer.c 1 @@ -1003,29 +838,21 @@ 1 ..\..\libcpu\arm\cortex-m7\cpuport.c - - context_rvds.S 2 ..\..\libcpu\arm\cortex-m7\context_rvds.S - - backtrace.c 1 ..\..\libcpu\arm\common\backtrace.c - - div0.c 1 ..\..\libcpu\arm\common\div0.c - - showmem.c 1 @@ -1041,50 +868,36 @@ 1 ..\..\components\dfs\src\dfs.c - - dfs_file.c 1 ..\..\components\dfs\src\dfs_file.c - - dfs_fs.c 1 ..\..\components\dfs\src\dfs_fs.c - - dfs_posix.c 1 ..\..\components\dfs\src\dfs_posix.c - - devfs.c 1 ..\..\components\dfs\filesystems\devfs\devfs.c - - dfs_elm.c 1 ..\..\components\dfs\filesystems\elmfat\dfs_elm.c - - ff.c 1 ..\..\components\dfs\filesystems\elmfat\ff.c - - ccsbcs.c 1 @@ -1100,113 +913,81 @@ 1 ..\..\components\drivers\i2c\i2c_core.c - - i2c_dev.c 1 ..\..\components\drivers\i2c\i2c_dev.c - - i2c-bit-ops.c 1 ..\..\components\drivers\i2c\i2c-bit-ops.c - - pin.c 1 ..\..\components\drivers\misc\pin.c - - rtc.c 1 ..\..\components\drivers\rtc\rtc.c - - block_dev.c 1 ..\..\components\drivers\sdio\block_dev.c - - mmcsd_core.c 1 ..\..\components\drivers\sdio\mmcsd_core.c - - sd.c 1 ..\..\components\drivers\sdio\sd.c - - sdio.c 1 ..\..\components\drivers\sdio\sdio.c - - mmc.c 1 ..\..\components\drivers\sdio\mmc.c - - serial.c 1 ..\..\components\drivers\serial\serial.c - - completion.c 1 ..\..\components\drivers\src\completion.c - - dataqueue.c 1 ..\..\components\drivers\src\dataqueue.c - - pipe.c 1 ..\..\components\drivers\src\pipe.c - - ringbuffer.c 1 ..\..\components\drivers\src\ringbuffer.c - - waitqueue.c 1 ..\..\components\drivers\src\waitqueue.c - - workqueue.c 1 @@ -1222,106 +1003,76 @@ 1 ..\..\components\finsh\shell.c - - symbol.c 1 ..\..\components\finsh\symbol.c - - cmd.c 1 ..\..\components\finsh\cmd.c - - msh.c 1 ..\..\components\finsh\msh.c - - msh_cmd.c 1 ..\..\components\finsh\msh_cmd.c - - msh_file.c 1 ..\..\components\finsh\msh_file.c - - finsh_compiler.c 1 ..\..\components\finsh\finsh_compiler.c - - finsh_error.c 1 ..\..\components\finsh\finsh_error.c - - finsh_heap.c 1 ..\..\components\finsh\finsh_heap.c - - finsh_init.c 1 ..\..\components\finsh\finsh_init.c - - finsh_node.c 1 ..\..\components\finsh\finsh_node.c - - finsh_ops.c 1 ..\..\components\finsh\finsh_ops.c - - finsh_parser.c 1 ..\..\components\finsh\finsh_parser.c - - finsh_var.c 1 ..\..\components\finsh\finsh_var.c - - finsh_vm.c 1 ..\..\components\finsh\finsh_vm.c - - finsh_token.c 1 @@ -1337,36 +1088,26 @@ 1 ..\..\components\libc\compilers\armlibc\libc.c - - libc_syms.c 1 ..\..\components\libc\compilers\armlibc\libc_syms.c - - mem_std.c 1 ..\..\components\libc\compilers\armlibc\mem_std.c - - stdio.c 1 ..\..\components\libc\compilers\armlibc\stdio.c - - stubs.c 1 ..\..\components\libc\compilers\armlibc\stubs.c - - time.c 1 @@ -1382,246 +1123,176 @@ 1 ..\..\components\net\lwip-2.0.2\src\arch\sys_arch.c - - api_lib.c 1 ..\..\components\net\lwip-2.0.2\src\api\api_lib.c - - api_msg.c 1 ..\..\components\net\lwip-2.0.2\src\api\api_msg.c - - err.c 1 ..\..\components\net\lwip-2.0.2\src\api\err.c - - netbuf.c 1 ..\..\components\net\lwip-2.0.2\src\api\netbuf.c - - netdb.c 1 ..\..\components\net\lwip-2.0.2\src\api\netdb.c - - netifapi.c 1 ..\..\components\net\lwip-2.0.2\src\api\netifapi.c - - sockets.c 1 ..\..\components\net\lwip-2.0.2\src\api\sockets.c - - tcpip.c 1 ..\..\components\net\lwip-2.0.2\src\api\tcpip.c - - def.c 1 ..\..\components\net\lwip-2.0.2\src\core\def.c - - dns.c 1 ..\..\components\net\lwip-2.0.2\src\core\dns.c - - inet_chksum.c 1 ..\..\components\net\lwip-2.0.2\src\core\inet_chksum.c - - init.c 1 ..\..\components\net\lwip-2.0.2\src\core\init.c - - ip.c 1 ..\..\components\net\lwip-2.0.2\src\core\ip.c - - memp.c 1 ..\..\components\net\lwip-2.0.2\src\core\memp.c - - netif.c 1 ..\..\components\net\lwip-2.0.2\src\core\netif.c - - pbuf.c 1 ..\..\components\net\lwip-2.0.2\src\core\pbuf.c - - raw.c 1 ..\..\components\net\lwip-2.0.2\src\core\raw.c - - stats.c 1 ..\..\components\net\lwip-2.0.2\src\core\stats.c - - sys.c 1 ..\..\components\net\lwip-2.0.2\src\core\sys.c - - tcp.c 1 ..\..\components\net\lwip-2.0.2\src\core\tcp.c - - tcp_in.c 1 ..\..\components\net\lwip-2.0.2\src\core\tcp_in.c - - tcp_out.c 1 ..\..\components\net\lwip-2.0.2\src\core\tcp_out.c - - timeouts.c 1 ..\..\components\net\lwip-2.0.2\src\core\timeouts.c - - udp.c 1 ..\..\components\net\lwip-2.0.2\src\core\udp.c - - ethernet.c 1 ..\..\components\net\lwip-2.0.2\src\netif\ethernet.c - - ethernetif.c 1 ..\..\components\net\lwip-2.0.2\src\netif\ethernetif.c - - lowpan6.c 1 ..\..\components\net\lwip-2.0.2\src\netif\lowpan6.c - - autoip.c 1 ..\..\components\net\lwip-2.0.2\src\core\ipv4\autoip.c - - dhcp.c 1 ..\..\components\net\lwip-2.0.2\src\core\ipv4\dhcp.c - - etharp.c 1 ..\..\components\net\lwip-2.0.2\src\core\ipv4\etharp.c - - icmp.c 1 ..\..\components\net\lwip-2.0.2\src\core\ipv4\icmp.c - - igmp.c 1 ..\..\components\net\lwip-2.0.2\src\core\ipv4\igmp.c - - ip4.c 1 ..\..\components\net\lwip-2.0.2\src\core\ipv4\ip4.c - - ip4_addr.c 1 ..\..\components\net\lwip-2.0.2\src\core\ipv4\ip4_addr.c - - ip4_frag.c 1 @@ -1629,19 +1300,24 @@
+ + ::CMSIS + + - + - + - + - + + diff --git a/bsp/imxrt1052-evk/rtconfig.h b/bsp/imxrt1052-evk/rtconfig.h index 664aeb54582afe7f845aa5b971e130a74d7adb28..79c7553e99c308f6f0376d67c8611175edf28f88 100644 --- a/bsp/imxrt1052-evk/rtconfig.h +++ b/bsp/imxrt1052-evk/rtconfig.h @@ -8,9 +8,7 @@ #define RT_NAME_MAX 8 #define RT_ALIGN_SIZE 4 -/* RT_THREAD_PRIORITY_8 is not set */ #define RT_THREAD_PRIORITY_32 -/* RT_THREAD_PRIORITY_256 is not set */ #define RT_THREAD_PRIORITY_MAX 32 #define RT_TICK_PER_SECOND 100 #define RT_DEBUG @@ -19,7 +17,6 @@ #define RT_DEBUG_THREAD 0 #define RT_USING_HOOK #define IDLE_THREAD_STACK_SIZE 256 -/* RT_USING_TIMER_SOFT is not set */ /* Inter-Thread communication */ @@ -28,26 +25,19 @@ #define RT_USING_EVENT #define RT_USING_MAILBOX #define RT_USING_MESSAGEQUEUE -/* RT_USING_SIGNALS is not set */ /* Memory Management */ -/* RT_USING_MEMPOOL is not set */ #define RT_USING_MEMHEAP -/* RT_USING_NOHEAP is not set */ -/* RT_USING_SMALL_MEM is not set */ -/* RT_USING_SLAB is not set */ #define RT_USING_MEMHEAP_AS_HEAP #define RT_USING_HEAP /* Kernel Device Object */ #define RT_USING_DEVICE -/* RT_USING_INTERRUPT_INFO is not set */ #define RT_USING_CONSOLE #define RT_CONSOLEBUF_SIZE 128 #define RT_CONSOLE_DEVICE_NAME "uart1" -/* RT_USING_MODULE is not set */ #define ARCH_ARM #define ARCH_ARM_CORTEX_M #define ARCH_ARM_CORTEX_M7 @@ -60,7 +50,6 @@ /* C++ features */ -/* RT_USING_CPLUSPLUS is not set */ /* Command shell */ @@ -73,10 +62,8 @@ #define FINSH_THREAD_PRIORITY 20 #define FINSH_THREAD_STACK_SIZE 4096 #define FINSH_CMD_SIZE 80 -/* FINSH_USING_AUTH is not set */ #define FINSH_USING_MSH #define FINSH_USING_MSH_DEFAULT -/* FINSH_USING_MSH_ONLY is not set */ /* Device virtual file system */ @@ -91,67 +78,38 @@ #define RT_DFS_ELM_CODE_PAGE 437 #define RT_DFS_ELM_WORD_ACCESS -/* RT_DFS_ELM_USE_LFN_0 is not set */ -/* RT_DFS_ELM_USE_LFN_1 is not set */ -/* RT_DFS_ELM_USE_LFN_2 is not set */ #define RT_DFS_ELM_USE_LFN_3 #define RT_DFS_ELM_USE_LFN 3 #define RT_DFS_ELM_MAX_LFN 255 #define RT_DFS_ELM_DRIVES 2 #define RT_DFS_ELM_MAX_SECTOR_SIZE 512 -/* RT_DFS_ELM_USE_ERASE is not set */ #define RT_DFS_ELM_REENTRANT #define RT_USING_DFS_DEVFS -/* RT_USING_DFS_NET is not set */ -/* RT_USING_DFS_ROMFS is not set */ -/* RT_USING_DFS_RAMFS is not set */ -/* RT_USING_DFS_UFFS is not set */ -/* RT_USING_DFS_JFFS2 is not set */ -/* RT_USING_DFS_NFS is not set */ /* Device Drivers */ #define RT_USING_DEVICE_IPC #define RT_USING_SERIAL -/* RT_USING_CAN is not set */ -/* RT_USING_HWTIMER is not set */ -/* RT_USING_CPUTIME is not set */ #define RT_USING_I2C #define RT_USING_I2C_BITOPS #define RT_USING_PIN -/* RT_USING_MTD_NOR is not set */ -/* RT_USING_MTD_NAND is not set */ #define RT_USING_RTC -/* RT_USING_SOFT_RTC is not set */ -/* RTC_SYNC_USING_NTP is not set */ #define RT_USING_SDIO -/* RT_USING_SPI is not set */ -/* RT_USING_WDT is not set */ -/* RT_USING_WIFI is not set */ /* Using USB */ -/* RT_USING_USB_HOST is not set */ -/* RT_USING_USB_DEVICE is not set */ /* POSIX layer and C standard library */ #define RT_USING_LIBC -/* RT_USING_PTHREADS is not set */ -/* RT_USING_POSIX is not set */ -/* HAVE_SYS_SIGNALS is not set */ /* Network stack */ /* light weight TCP/IP stack */ #define RT_USING_LWIP -/* RT_USING_LWIP141 is not set */ #define RT_USING_LWIP202 -/* RT_USING_LWIP_IPV6 is not set */ -/* RT_LWIP_IGMP is not set */ #define RT_LWIP_ICMP -/* RT_LWIP_SNMP is not set */ #define RT_LWIP_DNS #define RT_LWIP_DHCP #define IP_SOF_BROADCAST 1 @@ -164,8 +122,6 @@ #define RT_LWIP_MSKADDR "255.255.255.0" #define RT_LWIP_UDP #define RT_LWIP_TCP -/* RT_LWIP_RAW is not set */ -/* RT_LWIP_PPP is not set */ #define RT_MEMP_NUM_NETCONN 8 #define RT_LWIP_PBUF_NUM 16 #define RT_LWIP_RAW_PCB_NUM 4 @@ -180,33 +136,24 @@ #define RT_LWIP_ETHTHREAD_PRIORITY 12 #define RT_LWIP_ETHTHREAD_STACKSIZE 1024 #define RT_LWIP_ETHTHREAD_MBOX_SIZE 8 -/* RT_LWIP_REASSEMBLY_FRAG is not set */ #define LWIP_NETIF_STATUS_CALLBACK 1 #define SO_REUSE 1 #define LWIP_SO_RCVTIMEO 1 #define LWIP_SO_SNDTIMEO 1 #define LWIP_SO_RCVBUF 1 -/* RT_LWIP_NETIF_LOOPBACK is not set */ #define LWIP_NETIF_LOOPBACK 0 /* Modbus master and slave stack */ -/* RT_USING_MODBUS is not set */ -/* LWIP_USING_DHCPD is not set */ /* VBUS(Virtual Software BUS) */ -/* RT_USING_VBUS is not set */ /* Utilities */ -/* RT_USING_LOGTRACE is not set */ -/* RT_USING_RYM is not set */ /* ARM CMSIS */ -/* RT_USING_CMSIS_OS is not set */ -/* RT_USING_RTT_CMSIS is not set */ /* RT-Thread online packages */ @@ -214,72 +161,44 @@ /* RT-Thread GUI Engine */ -/* PKG_USING_GUIENGINE is not set */ -/* PKG_USING_PERSIMMON is not set */ -/* PKG_USING_LWEXT4 is not set */ -/* PKG_USING_PARTITION is not set */ -/* PKG_USING_SQLITE is not set */ -/* PKG_USING_RTI is not set */ /* IoT - internet of things */ -/* PKG_USING_PAHOMQTT is not set */ -/* PKG_USING_WEBCLIENT is not set */ -/* PKG_USING_MONGOOSE is not set */ -/* PKG_USING_WEBTERMINAL is not set */ -/* PKG_USING_CJSON is not set */ -/* PKG_USING_LJSON is not set */ -/* PKG_USING_EZXML is not set */ -/* PKG_USING_NANOPB is not set */ -/* PKG_USING_GAGENT_CLOUD is not set */ /* Wi-Fi */ /* Marvell WiFi */ -/* PKG_USING_WLANMARVELL is not set */ /* Wiced WiFi */ -/* PKG_USING_WLAN_WICED is not set */ -/* PKG_USING_COAP is not set */ -/* PKG_USING_NOPOLL is not set */ -/* PKG_USING_NETUTILS is not set */ /* security packages */ -/* PKG_USING_MBEDTLS is not set */ -/* PKG_USING_libsodium is not set */ -/* PKG_USING_TINYCRYPT is not set */ /* language packages */ -/* PKG_USING_JERRYSCRIPT is not set */ -/* PKG_USING_MICROPYTHON is not set */ /* multimedia packages */ -/* PKG_USING_OPENMV is not set */ /* tools packages */ -/* PKG_USING_CMBACKTRACE is not set */ -/* PKG_USING_EASYLOGGER is not set */ -/* PKG_USING_SYSTEMVIEW is not set */ -/* PKG_USING_IPERF is not set */ /* miscellaneous packages */ -/* PKG_USING_FASTLZ is not set */ -/* PKG_USING_MINILZO is not set */ -/* PKG_USING_QUICKLZ is not set */ /* example package: hello */ -/* PKG_USING_HELLO is not set */ -/* PKG_USING_MULTIBUTTON is not set */ #define SOC_IMXRT1052 +#define BOARD_RT1050_EVK + +/* RT1050_EVK Bsp Config */ + +/* Select uart device */ + #define RT_USING_UART1 -#define RT_USING_HP_RTC +#define RT_USING_SDRAM +#define RT_USING_RTC_HP #endif diff --git a/bsp/ls1cdev/.config b/bsp/ls1cdev/.config new file mode 100644 index 0000000000000000000000000000000000000000..d7ee691625d8f95a77c61fd06c1490addc3607c2 --- /dev/null +++ b/bsp/ls1cdev/.config @@ -0,0 +1,287 @@ +# +# Automatically generated file; DO NOT EDIT. +# RT-Thread Configuration +# + +# +# RT-Thread Kernel +# +CONFIG_RT_NAME_MAX=10 +CONFIG_RT_ALIGN_SIZE=8 +# CONFIG_RT_THREAD_PRIORITY_8 is not set +CONFIG_RT_THREAD_PRIORITY_32=y +# CONFIG_RT_THREAD_PRIORITY_256 is not set +CONFIG_RT_THREAD_PRIORITY_MAX=32 +CONFIG_RT_TICK_PER_SECOND=1000 +CONFIG_RT_DEBUG=y +CONFIG_RT_USING_OVERFLOW_CHECK=y +CONFIG_RT_DEBUG_INIT=0 +CONFIG_RT_DEBUG_THREAD=0 +CONFIG_RT_USING_HOOK=y +CONFIG_IDLE_THREAD_STACK_SIZE=1024 +# CONFIG_RT_USING_TIMER_SOFT is not set + +# +# Inter-Thread communication +# +CONFIG_RT_USING_SEMAPHORE=y +CONFIG_RT_USING_MUTEX=y +CONFIG_RT_USING_EVENT=y +CONFIG_RT_USING_MAILBOX=y +CONFIG_RT_USING_MESSAGEQUEUE=y +# CONFIG_RT_USING_SIGNALS is not set + +# +# Memory Management +# +CONFIG_RT_USING_MEMPOOL=y +CONFIG_RT_USING_MEMHEAP=y +# CONFIG_RT_USING_NOHEAP is not set +CONFIG_RT_USING_SMALL_MEM=y +# CONFIG_RT_USING_SLAB is not set +# CONFIG_RT_USING_MEMHEAP_AS_HEAP is not set +# CONFIG_RT_USING_MEMTRACE is not set +CONFIG_RT_USING_HEAP=y + +# +# Kernel Device Object +# +CONFIG_RT_USING_DEVICE=y +CONFIG_RT_USING_INTERRUPT_INFO=y +CONFIG_RT_USING_CONSOLE=y +CONFIG_RT_CONSOLEBUF_SIZE=128 +CONFIG_RT_CONSOLE_DEVICE_NAME="uart2" +# CONFIG_RT_USING_MODULE is not set + +# +# RT-Thread Components +# +CONFIG_RT_USING_COMPONENTS_INIT=y +# CONFIG_RT_USING_USER_MAIN is not set + +# +# C++ features +# +# CONFIG_RT_USING_CPLUSPLUS is not set + +# +# Command shell +# +CONFIG_RT_USING_FINSH=y +CONFIG_FINSH_THREAD_NAME="tshell" +CONFIG_FINSH_USING_HISTORY=y +CONFIG_FINSH_HISTORY_LINES=5 +CONFIG_FINSH_USING_SYMTAB=y +CONFIG_FINSH_USING_DESCRIPTION=y +CONFIG_FINSH_THREAD_PRIORITY=20 +CONFIG_FINSH_THREAD_STACK_SIZE=4096 +CONFIG_FINSH_CMD_SIZE=80 +# CONFIG_FINSH_USING_AUTH is not set +CONFIG_FINSH_USING_MSH=y +CONFIG_FINSH_USING_MSH_DEFAULT=y +# CONFIG_FINSH_USING_MSH_ONLY is not set + +# +# Device virtual file system +# +CONFIG_RT_USING_DFS=y +CONFIG_DFS_USING_WORKDIR=y +CONFIG_DFS_FILESYSTEMS_MAX=2 +CONFIG_DFS_FILESYSTEM_TYPES_MAX=2 +CONFIG_DFS_FD_MAX=4 +CONFIG_RT_USING_DFS_ELMFAT=y + +# +# elm-chan's FatFs, Generic FAT Filesystem Module +# +CONFIG_RT_DFS_ELM_CODE_PAGE=936 +CONFIG_RT_DFS_ELM_WORD_ACCESS=y +CONFIG_RT_DFS_ELM_USE_LFN_0=y +# CONFIG_RT_DFS_ELM_USE_LFN_1 is not set +# CONFIG_RT_DFS_ELM_USE_LFN_2 is not set +# CONFIG_RT_DFS_ELM_USE_LFN_3 is not set +CONFIG_RT_DFS_ELM_USE_LFN=0 +CONFIG_RT_DFS_ELM_MAX_LFN=64 +CONFIG_RT_DFS_ELM_DRIVES=2 +CONFIG_RT_DFS_ELM_MAX_SECTOR_SIZE=512 +# CONFIG_RT_DFS_ELM_USE_ERASE is not set +CONFIG_RT_DFS_ELM_REENTRANT=y +# CONFIG_RT_USING_DFS_DEVFS is not set +# CONFIG_RT_USING_DFS_NET is not set +# CONFIG_RT_USING_DFS_ROMFS is not set +# CONFIG_RT_USING_DFS_RAMFS is not set +# CONFIG_RT_USING_DFS_UFFS is not set +# CONFIG_RT_USING_DFS_JFFS2 is not set +# CONFIG_RT_USING_DFS_NFS is not set + +# +# Device Drivers +# +CONFIG_RT_USING_DEVICE_IPC=y +CONFIG_RT_USING_SERIAL=y +CONFIG_RT_USING_CAN=y +CONFIG_RT_CAN_USING_HDR=y +# CONFIG_RT_USING_HWTIMER is not set +# CONFIG_RT_USING_CPUTIME is not set +CONFIG_RT_USING_I2C=y +CONFIG_RT_USING_I2C_BITOPS=y +CONFIG_RT_USING_PIN=y +# CONFIG_RT_USING_MTD_NOR is not set +# CONFIG_RT_USING_MTD_NAND is not set +# CONFIG_RT_USING_RTC is not set +# CONFIG_RT_USING_SDIO is not set +CONFIG_RT_USING_SPI=y +CONFIG_RT_USING_SPI_MSD=y +# CONFIG_RT_USING_SFUD is not set +# CONFIG_RT_USING_W25QXX is not set +# CONFIG_RT_USING_GD is not set +# CONFIG_RT_USING_ENC28J60 is not set +# CONFIG_RT_USING_SPI_WIFI is not set +# CONFIG_RT_USING_WDT is not set +# CONFIG_RT_USING_WIFI is not set + +# +# Using USB +# +# CONFIG_RT_USING_USB_HOST is not set +# CONFIG_RT_USING_USB_DEVICE is not set + +# +# POSIX layer and C standard library +# +CONFIG_RT_USING_LIBC=y +CONFIG_RT_USING_PTHREADS=y +# CONFIG_RT_USING_POSIX is not set +# CONFIG_HAVE_SYS_SIGNALS is not set + +# +# Network stack +# + +# +# light weight TCP/IP stack +# +CONFIG_RT_USING_LWIP=y +CONFIG_RT_USING_LWIP141=y +# CONFIG_RT_USING_LWIP202 is not set +CONFIG_RT_LWIP_IGMP=y +CONFIG_RT_LWIP_ICMP=y +# CONFIG_RT_LWIP_SNMP is not set +CONFIG_RT_LWIP_DNS=y +# CONFIG_RT_LWIP_DHCP is not set + +# +# Static IPv4 Address +# +CONFIG_RT_LWIP_IPADDR="192.168.1.254" +CONFIG_RT_LWIP_GWADDR="192.168.1.1" +CONFIG_RT_LWIP_MSKADDR="255.255.255.0" +CONFIG_RT_LWIP_UDP=y +CONFIG_RT_LWIP_TCP=y +# CONFIG_RT_LWIP_RAW is not set +# CONFIG_RT_LWIP_PPP is not set +CONFIG_RT_MEMP_NUM_NETCONN=8 +CONFIG_RT_LWIP_PBUF_NUM=4 +CONFIG_RT_LWIP_RAW_PCB_NUM=4 +CONFIG_RT_LWIP_UDP_PCB_NUM=4 +CONFIG_RT_LWIP_TCP_PCB_NUM=3 +CONFIG_RT_LWIP_TCP_SEG_NUM=40 +CONFIG_RT_LWIP_TCP_SND_BUF=4096 +CONFIG_RT_LWIP_TCP_WND=2048 +CONFIG_RT_LWIP_TCPTHREAD_PRIORITY=12 +CONFIG_RT_LWIP_TCPTHREAD_MBOX_SIZE=8 +CONFIG_RT_LWIP_TCPTHREAD_STACKSIZE=4096 +CONFIG_RT_LWIP_ETHTHREAD_PRIORITY=14 +CONFIG_RT_LWIP_ETHTHREAD_STACKSIZE=512 +CONFIG_RT_LWIP_ETHTHREAD_MBOX_SIZE=8 +# CONFIG_RT_LWIP_REASSEMBLY_FRAG is not set +CONFIG_LWIP_NETIF_STATUS_CALLBACK=1 +CONFIG_SO_REUSE=1 +CONFIG_LWIP_SO_RCVTIMEO=1 +CONFIG_LWIP_SO_SNDTIMEO=1 +CONFIG_LWIP_SO_RCVBUF=1 +# CONFIG_RT_LWIP_NETIF_LOOPBACK is not set +CONFIG_LWIP_NETIF_LOOPBACK=0 + +# +# Modbus master and slave stack +# +# CONFIG_RT_USING_MODBUS is not set +# CONFIG_LWIP_USING_DHCPD is not set + +# +# VBUS(Virtual Software BUS) +# +# CONFIG_RT_USING_VBUS is not set + +# +# Utilities +# +# CONFIG_RT_USING_LOGTRACE is not set +# CONFIG_RT_USING_RYM is not set + +# +# RT-Thread online packages +# + +# +# system packages +# +# CONFIG_PKG_USING_PARTITION is not set +# CONFIG_PKG_USING_SQLITE is not set +# CONFIG_PKG_USING_RTI is not set + +# +# IoT - internet of things +# +# CONFIG_PKG_USING_PAHOMQTT is not set +# CONFIG_PKG_USING_WEBCLIENT is not set +# CONFIG_PKG_USING_MONGOOSE is not set +# CONFIG_PKG_USING_WEBTERMINAL is not set +# CONFIG_PKG_USING_CJSON is not set +# CONFIG_PKG_USING_EZXML is not set +# CONFIG_PKG_USING_NANOPB is not set + +# +# security packages +# +# CONFIG_PKG_USING_MBEDTLS is not set +# CONFIG_PKG_USING_libsodium is not set + +# +# language packages +# +# CONFIG_PKG_USING_JERRYSCRIPT is not set +# CONFIG_PKG_USING_MICROPYTHON is not set + +# +# multimedia packages +# + +# +# tools packages +# +# CONFIG_PKG_USING_CMBACKTRACE is not set +# CONFIG_PKG_USING_EASYLOGGER is not set +# CONFIG_PKG_USING_SYSTEMVIEW is not set + +# +# miscellaneous packages +# +# CONFIG_PKG_USING_FASTLZ is not set +# CONFIG_PKG_USING_MINILZO is not set + +# +# example package: hello +# +# CONFIG_PKG_USING_HELLO is not set +CONFIG_RT_USING_UART2=y +CONFIG_RT_UART_RX_BUFFER_SIZE=64 +CONFIG_RT_USING_GMAC_INT_MODE=y +CONFIG_RT_USING_FPU=y +CONFIG_RT_USING_SPI0=y +CONFIG_RT_USING_SPI1=y +CONFIG_RT_USING_I2C1=y +CONFIG_RT_USING_I2C2=y +CONFIG_USING_BXCAN0=y +CONFIG_USING_BXCAN1=y diff --git a/bsp/ls1cdev/applications/application.c b/bsp/ls1cdev/applications/application.c index 97f3f5d7a546c964e938cae68d59a9b82762e8d3..d4be2e4b59e03fb8dce52679b863ae5f8d4ec625 100644 --- a/bsp/ls1cdev/applications/application.c +++ b/bsp/ls1cdev/applications/application.c @@ -12,6 +12,7 @@ * 2010-06-25 Bernard first version * 2011-08-08 lgnq modified for Loongson LS1B * 2015-07-06 chinesebear modified for Loongson LS1C + * 2018-02-08 sundm75 modified for Loongson LS1C SmartLoongV3 */ #include @@ -20,23 +21,41 @@ void rt_init_thread_entry(void *parameter) { - /* initialization RT-Thread Components */ - rt_components_init(); +#ifdef RT_USING_COMPONENTS_INIT + /* initialization RT-Thread Components */ + rt_components_init(); +#endif +#if defined(RT_USING_DFS) && defined(RT_USING_DFS_ELMFAT) + /* mount sd card fat partition 1 as root directory */ + if( dfs_mount("sd0", "/", "elm", 0, 0) == 0) + { + rt_kprintf("File System initialized!\n"); + } + else + { + rt_kprintf("File System initialzation failed!\n"); + } +#endif /* RT_USING_DFS && RT_USING_DFS_ELMFAT */ + +/*网å£EMACåˆå§‹åŒ–*/ + rt_hw_eth_init(); +#if defined(RT_USING_RTGUI) +/*触摸å±ä½¿ç”¨SPI总线SPI1 CS0 åˆå§‹åŒ–*/ + rtgui_touch_hw_init("spi10"); +#endif - // Íø¿ÚEMAC³õʼ»¯ - rt_hw_eth_init(); } int rt_application_init(void) { - rt_thread_t tid; + rt_thread_t tid; - /* create initialization thread */ - tid = rt_thread_create("init", - rt_init_thread_entry, RT_NULL, - 4096, RT_THREAD_PRIORITY_MAX/3, 20); - if (tid != RT_NULL) - rt_thread_startup(tid); + /* create initialization thread */ + tid = rt_thread_create("init", + rt_init_thread_entry, RT_NULL, + 4096, RT_THREAD_PRIORITY_MAX/3, 20); + if (tid != RT_NULL) + rt_thread_startup(tid); - return 0; + return 0; } diff --git a/bsp/ls1cdev/drivers/SConscript b/bsp/ls1cdev/drivers/SConscript index 3e76809efb4b0cf425274a0a4569d386f771a79c..2363e655a899e47e5d0458c805ee2c36226d2cb9 100644 --- a/bsp/ls1cdev/drivers/SConscript +++ b/bsp/ls1cdev/drivers/SConscript @@ -5,6 +5,10 @@ src = Glob('*.c') CPPPATH = [cwd] + +if GetDepend('RT_USING_RTGUI') == False: + SrcRemove(src, 'touch.c') + group = DefineGroup('Drivers', src, depend = [''], CPPPATH = CPPPATH) objs = [] diff --git a/bsp/ls1cdev/drivers/board.c b/bsp/ls1cdev/drivers/board.c index cb5fbdae09254fe0562a3fdece0a4a51fd92bf2b..1b22741140cee1ff8fbab0eb9766985cf44742aa 100644 --- a/bsp/ls1cdev/drivers/board.c +++ b/bsp/ls1cdev/drivers/board.c @@ -60,12 +60,12 @@ void rt_hw_fpu_init(void) rt_uint32_t c0_status = 0; rt_uint32_t c1_status = 0; - // ʹÄÜЭ´¦ÀíÆ÷1--FPU + // 使能å处ç†å™¨1--FPU c0_status = read_c0_status(); c0_status |= (ST0_CU1 | ST0_FR); write_c0_status(c0_status); - // ÅäÖÃFPU + // é…ç½®FPU c1_status = read_c1_status(); c1_status |= (FPU_CSR_FS | FPU_CSR_FO | FPU_CSR_FN); // set FS, FO, FN c1_status &= ~(FPU_CSR_ALL_E); // disable exception @@ -81,25 +81,28 @@ void rt_hw_fpu_init(void) */ void rt_hw_board_init(void) { -#ifdef RT_USING_UART +#ifdef RT_USING_SERIAL /* init hardware UART device */ rt_hw_uart_init(); #endif #ifdef RT_USING_CONSOLE /* set console device */ - rt_console_set_device("uart2"); + rt_console_set_device(RT_CONSOLE_DEVICE_NAME); #endif - - /* init operating system timer */ - rt_hw_timer_init(); + /* init operating system timer */ + rt_hw_timer_init(); #ifdef RT_USING_FPU /* init hardware fpu */ rt_hw_fpu_init(); #endif - rt_kprintf("current sr: 0x%08x\n", read_c0_status()); +#ifdef RT_USING_COMPONENTS_INIT + rt_components_board_init(); +#endif + + rt_kprintf("current sr: 0x%08x\n", read_c0_status()); } #define __raw_out_put(unr) \ diff --git a/bsp/ls1cdev/drivers/display_controller.c b/bsp/ls1cdev/drivers/display_controller.c new file mode 100644 index 0000000000000000000000000000000000000000..a09fe0269f43cf29f8d5b321cd6f0aadd1f74bd4 --- /dev/null +++ b/bsp/ls1cdev/drivers/display_controller.c @@ -0,0 +1,263 @@ +/* + * File :display_controller.c + * This file is part of RT-Thread RTOS + * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Change Logs: + * Date Author Notes + * 2011-08-09 lgnq first version for LS1B DC + * 2015-07-06 chinesebear modified for loongson 1c + * 2018-01-06 sundm75 modified for smartloong + */ + +#include +#include "display_controller.h" +#include "../../libraries/ls1c_pwm.h" +#include "../../libraries/ls1c_public.h" +#include "../../libraries/ls1c_gpio.h" +#include "../../libraries/ls1c_pin.h" + +#ifdef RT_USING_RTGUI + +struct vga_struct vga_mode[] = +{ + {/*"480x272_60.00"*/ 111000, 480, 482, 523, 525, 272, 274, 284, 286, }, + {/*"640x480_70.00"*/ 28560, 640, 664, 728, 816, 480, 481, 484, 500, }, + {/*"640x640_60.00"*/ 33100, 640, 672, 736, 832, 640, 641, 644, 663, }, + {/*"640x768_60.00"*/ 39690, 640, 672, 736, 832, 768, 769, 772, 795, }, + {/*"640x800_60.00"*/ 42130, 640, 680, 744, 848, 800, 801, 804, 828, }, + {/*"800x480_70.00"*/ 35840, 800, 832, 912, 1024, 480, 481, 484, 500, }, + {/*"800x600_60.00"*/ 38220, 800, 832, 912, 1024, 600, 601, 604, 622, }, + {/*"800x640_60.00"*/ 40730, 800, 832, 912, 1024, 640, 641, 644, 663, }, + {/*"832x600_60.00"*/ 40010, 832, 864, 952, 1072, 600, 601, 604, 622, }, + {/*"832x608_60.00"*/ 40520, 832, 864, 952, 1072, 608, 609, 612, 630, }, + {/*"1024x480_60.00"*/ 38170, 1024, 1048, 1152, 1280, 480, 481, 484, 497, }, + {/*"1024x600_60.00"*/ 48960, 1024, 1064, 1168, 1312, 600, 601, 604, 622, }, + {/*"1024x640_60.00"*/ 52830, 1024, 1072, 1176, 1328, 640, 641, 644, 663, }, + {/*"1024x768_60.00"*/ 64110, 1024, 1080, 1184, 1344, 768, 769, 772, 795, }, + {/*"1152x764_60.00"*/ 71380, 1152, 1208, 1328, 1504, 764, 765, 768, 791, }, + {/*"1280x800_60.00"*/ 83460, 1280, 1344, 1480, 1680, 800, 801, 804, 828, }, + {/*"1280x1024_55.00"*/ 98600, 1280, 1352, 1488, 1696, 1024, 1025, 1028, 1057, }, + {/*"1440x800_60.00"*/ 93800, 1440, 1512, 1664, 1888, 800, 801, 804, 828, }, + {/*"1440x900_67.00"*/ 120280, 1440, 1528, 1680, 1920, 900, 901, 904, 935, }, +}; + +ALIGN(16) +volatile rt_uint16_t _rt_framebuffer[FB_YSIZE][FB_XSIZE]; +static struct rt_device_graphic_info _dc_info; + +static void pwminit(void) +{ + pwm_info_t pwm_info; + pwm_info.gpio = LS1C_PWM0_GPIO06; // pwm引脚ä½gpio06 + pwm_info.mode = PWM_MODE_NORMAL; // 正常模å¼--连续输出pwm波形 + pwm_info.duty = 0.85; // pwmå ç©ºæ¯” 85% + pwm_info.period_ns = 5*1000*1000; // pwm周期5ms + + /*pwmåˆå§‹åŒ–,åˆå§‹åŒ–åŽç«‹å³äº§ç”Ÿpwm波形*/ + pwm_init(&pwm_info); + + /* 使能pwm */ + pwm_enable(&pwm_info); +} +int caclulate_freq(rt_uint32_t XIN, rt_uint32_t PCLK) +{ + rt_uint32_t divider_int; + rt_uint32_t needed_pixclk; + rt_uint32_t pll_clk, pix_div; + rt_uint32_t regval; + + + pll_clk = PLL_FREQ; // 读CPUçš„ PLLåŠSDRAM 分频系数 + pll_clk =( pll_clk>>8 )& 0xff; + pll_clk = XIN * pll_clk / 4 ; + pix_div = PLL_DIV_PARAM;//读CPUçš„ CPU/CAMERA/DC 分频系数 + pix_div = (pix_div>>24)&0xff; + rt_kprintf("old pll_clk=%d, pix_div=%d\n", pll_clk, pix_div); + + divider_int = pll_clk/(1000000) *PCLK/1000; + if(divider_int%1000>=500) + divider_int = divider_int/1000+1; + else + divider_int = divider_int/1000; + rt_kprintf("divider_int = %d\n", divider_int); + + /* check whether divisor is too small. */ + if (divider_int < 1) { + rt_kprintf("Warning: clock source is too slow.Try smaller resolution\n"); + divider_int = 1; + } + else if(divider_int > 100) { + rt_kprintf("Warning: clock source is too fast.Try smaller resolution\n"); + divider_int = 100; + } + /* é…置分频寄存器 */ + { + rt_uint32_t regval = 0; + regval = PLL_DIV_PARAM; + /*首先需è¦æŠŠåˆ†é¢‘使能ä½æ¸…零 */ + regval &= ~0x80000030; //PIX_DIV_VALID PIX_SEL ç½®0 + regval &= ~(0x3f<<24); //PIX_DIV 清零 + regval |= divider_int << 24; + PLL_DIV_PARAM = regval; + regval |= 0x80000030; //PIX_DIV_VALID PIX_SEL ç½®1 + PLL_DIV_PARAM = regval; + } + rt_kprintf("new PLL_FREQ=0x%x, PLL_DIV_PARAM=0x%x\n", PLL_FREQ, PLL_DIV_PARAM); + rt_thread_delay(10); + return 0; +} + +static rt_err_t rt_dc_init(rt_device_t dev) +{ + int i, out, mode=-1; + int val; + + rt_kprintf("PWM initied\n"); + /* Set the back light PWM. */ + pwminit(); + + for (i=0; itype = RT_Device_Class_Graphic; + dc->init = rt_dc_init; + dc->open = RT_NULL; + dc->close = RT_NULL; + dc->control = rt_dc_control; + dc->user_data = (void*)&_dc_info; + + /* register Display Controller device to RT-Thread */ + rt_device_register(dc, "dc", RT_DEVICE_FLAG_RDWR); + + rt_device_init(dc); +} + +#include +#include "display_controller.h" + +/* initialize for gui driver */ +int rtgui_lcd_init(void) +{ + rt_device_t dc; + rt_kprintf("DC initied\n"); + + pin_set_purpose(76, PIN_PURPOSE_OTHER); + pin_set_remap(76, PIN_REMAP_DEFAULT); + + /* init Display Controller */ + rt_hw_dc_init(); + + /* find Display Controller device */ + dc = rt_device_find("dc"); + + /* set Display Controller device as rtgui graphic driver */ + rtgui_graphic_set_device(dc); + + return 0; +} + +INIT_DEVICE_EXPORT(rtgui_lcd_init); + +#endif diff --git a/bsp/ls1cdev/drivers/display_controller.h b/bsp/ls1cdev/drivers/display_controller.h new file mode 100644 index 0000000000000000000000000000000000000000..ad252a9c2fe4293fb88bfc6cf56c709b77fb6c56 --- /dev/null +++ b/bsp/ls1cdev/drivers/display_controller.h @@ -0,0 +1,59 @@ +/* + * File : display_controller.h + * This file is part of RT-Thread RTOS + * COPYRIGHT (C) 2006-2012, RT-Thread Develop Team + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rt-thread.org/license/LICENSE + * + * Change Logs: + * Date Author Notes + * 2011-08-08 lgnq first version for LS1B + * 2015-07-06 chinesebear modified for loongson 1c + * 2018-01-06 sundm75 modified for smartloong +*/ + +#ifndef __DISPLAY_CONTROLLER_H__ +#define __DISPLAY_CONTROLLER_H__ + +#include +#include "ls1c.h" + +#define DC_BASE 0xBC301240 //Display Controller + +/* Frame Buffer registers */ +#define DC_FB_CONFIG __REG32(DC_BASE + 0x000) +#define DC_FB_BUFFER_ADDR0 __REG32(DC_BASE + 0x020) +#define DC_FB_BUFFER_STRIDE __REG32(DC_BASE + 0x040) +#define DC_FB_BUFFER_ORIGIN __REG32(DC_BASE + 0x060) +#define DC_DITHER_CONFIG __REG32(DC_BASE + 0x120) +#define DC_DITHER_TABLE_LOW __REG32(DC_BASE + 0x140) +#define DC_DITHER_TABLE_HIGH __REG32(DC_BASE + 0x160) +#define DC_PANEL_CONFIG __REG32(DC_BASE + 0x180) +#define DC_PANEL_TIMING __REG32(DC_BASE + 0x1A0) +#define DC_HDISPLAY __REG32(DC_BASE + 0x1C0) +#define DC_HSYNC __REG32(DC_BASE + 0x1E0) +#define DC_VDISPLAY __REG32(DC_BASE + 0x240) +#define DC_VSYNC __REG32(DC_BASE + 0x260) +#define DC_FB_BUFFER_ADDR1 __REG32(DC_BASE + 0x340) + +/* Display Controller driver for 1024x768 16bit */ +#define FB_XSIZE 480 +#define FB_YSIZE 272 +#define CONFIG_VIDEO_16BPP + +#define OSC 24000000 /* Hz */ + +#define K1BASE 0xA0000000 +#define KSEG1(addr) ((void *)(K1BASE | (rt_uint32_t)(addr))) +#define HW_FB_ADDR KSEG1(_rt_framebuffer) + +struct vga_struct +{ + long pclk; + int hr,hss,hse,hfl; + int vr,vss,vse,vfl; +}; + +#endif diff --git a/bsp/ls1cdev/drivers/drv_can.c b/bsp/ls1cdev/drivers/drv_can.c new file mode 100644 index 0000000000000000000000000000000000000000..92095d06699e4ffe07a5cc3eaf19e75f2a25e726 --- /dev/null +++ b/bsp/ls1cdev/drivers/drv_can.c @@ -0,0 +1,541 @@ +/* + * File : drv_can.c + * This file is part of RT-Thread RTOS + * COPYRIGHT (C) 2006 - 2018, RT-Thread Development Team + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Change Logs: + * Date Author Notes + * 2018-01-06 sundm75 first version + */ + +#include +#include +#include +#include + +#include + +#include "ls1c.h" +#include "../libraries/ls1c_public.h" +#include "../libraries/ls1c_regs.h" +#include "../libraries/ls1c_clock.h" +#include "../libraries/ls1c_can.h" +#include "../libraries/ls1c_pin.h" + + +#ifdef RT_USING_CAN + +CanRxMsg RxMessage; + +struct ls1c_bxcan +{ + CAN_TypeDef *reg; + void * irq; +}; + +static rt_err_t bxmodifyfilter(struct ls1c_bxcan *pbxcan, struct rt_can_filter_item *pitem, rt_uint32_t actived) +{ + rt_int32_t fcase; + rt_err_t res; + rt_int32_t hdr, fbase, foff; + CAN_TypeDef* CANx; + CANx = pbxcan->reg; + + /*pitem->mode 1-掩ç æ¨¡å¼; 0- æ»¤æ³¢å™¨æ¨¡å¼ SJA1000中使用以下方å¼*/ + /*SJA1000中AFM 1-å•æ»¤æ³¢å™¨æ¨¡å¼; 0- åŒæ»¤æ³¢å™¨æ¨¡å¼ */ + + fcase = pitem->mode;/*1-å•æ»¤æ³¢å™¨æ¨¡å¼; 0- åŒæ»¤æ³¢å™¨æ¨¡å¼*/ + { + if (!actived) + { + return RT_EOK; + } + else if (pitem->hdr == -1) + { + res = -1; + if (res != RT_EOK) + { + return res; + } + } + else if (pitem->hdr >= 0) + { + rt_enter_critical(); + res = RT_EOK; + if (res != RT_EOK) + { + return res; + } + hdr = pitem->hdr; + rt_exit_critical(); + } + } + + CAN_FilterInitTypeDef CAN_FilterInitStruct; + unsigned char ide, rtr, id , idmask, mode; + ide = (unsigned char) pitem->ide; + rtr = (unsigned char) pitem->rtr; + id = pitem->id; + idmask = pitem->mask; + mode = (unsigned char) pitem->mode; + CAN_FilterInitStruct.IDE = ide; + CAN_FilterInitStruct.RTR = rtr; + CAN_FilterInitStruct.ID = id; + CAN_FilterInitStruct.IDMASK = idmask; + CAN_FilterInitStruct.MODE = mode; + CAN_FilterInit(CANx, &CAN_FilterInitStruct); + + return RT_EOK; +} + +static rt_err_t setfilter(struct ls1c_bxcan *pbxcan, struct rt_can_filter_config *pconfig) +{ + struct rt_can_filter_item *pitem = pconfig->items; + rt_uint32_t count = pconfig->count; + rt_err_t res; + while (count) + { + res = bxmodifyfilter(pbxcan, pitem, pconfig->actived); + if (res != RT_EOK) + { + return res; + } + pitem++; + count--; + } + return RT_EOK; +} +static void bxcan0_filter_init(struct rt_can_device *can) +{ + struct ls1c_bxcan *pbxcan; + pbxcan = (struct ls1c_bxcan *) can->parent.user_data; + +} + +static void bxcan1_filter_init(struct rt_can_device *can) +{ + struct ls1c_bxcan *pbxcan; + pbxcan = (struct ls1c_bxcan *) can->parent.user_data; + +} + +static void bxcan_init(CAN_TypeDef *pcan, rt_uint32_t baud, rt_uint32_t mode) +{ + CAN_InitTypeDef CAN_InitStructure; + + Ls1c_CanBPS_t bps ; + + switch(baud) + { + case CAN1MBaud: + bps = LS1C_CAN1MBaud; + break; + case CAN800kBaud: + bps = LS1C_CAN800kBaud; + break; + case CAN500kBaud: + bps = LS1C_CAN500kBaud; + break; + case CAN250kBaud: + bps = LS1C_CAN250kBaud; + break; + case CAN125kBaud: + bps = LS1C_CAN125kBaud; + break; + case CAN50kBaud: + bps = LS1C_CAN40kBaud; + break; + default: + bps = LS1C_CAN250kBaud; + break; + } + + switch (mode) + { + case RT_CAN_MODE_NORMAL: + CAN_InitStructure.CAN_Mode = 0x00; + break; + case RT_CAN_MODE_LISEN: + CAN_InitStructure.CAN_Mode = CAN_Mode_LOM; + break; + case RT_CAN_MODE_LOOPBACK: + CAN_InitStructure.CAN_Mode = CAN_Mode_STM; + + break; + case RT_CAN_MODE_LOOPBACKANLISEN: + CAN_InitStructure.CAN_Mode = CAN_Mode_STM|CAN_Mode_LOM; + break; + } + CAN_InitStructure.CAN_SJW = CAN_SJW_1tq; + + switch (bps) + { + case LS1C_CAN1MBaud: + CAN_InitStructure.CAN_Prescaler = 9; + CAN_InitStructure.CAN_BS1 = CAN_BS1_4tq; + CAN_InitStructure.CAN_BS2 = CAN_BS2_2tq; + break; + case LS1C_CAN800kBaud: + CAN_InitStructure.CAN_Prescaler = 8; + CAN_InitStructure.CAN_BS1 = CAN_BS1_7tq; + CAN_InitStructure.CAN_BS2 = CAN_BS2_2tq; + break; + case LS1C_CAN500kBaud: + CAN_InitStructure.CAN_Prescaler = 9; + CAN_InitStructure.CAN_BS1 = CAN_BS1_11tq; + CAN_InitStructure.CAN_BS2 = CAN_BS2_2tq; + break; + case LS1C_CAN250kBaud: + CAN_InitStructure.CAN_Prescaler = 36; + CAN_InitStructure.CAN_BS1 = CAN_BS1_4tq; + CAN_InitStructure.CAN_BS2 = CAN_BS2_2tq; + break; + case LS1C_CAN125kBaud: + CAN_InitStructure.CAN_Prescaler = 36; + CAN_InitStructure.CAN_BS1 = CAN_BS1_11tq; + CAN_InitStructure.CAN_BS2 = CAN_BS2_2tq; + break; + case LS1C_CAN100kBaud: + CAN_InitStructure.CAN_Prescaler = 63; + CAN_InitStructure.CAN_BS1 = CAN_BS1_7tq; + CAN_InitStructure.CAN_BS2 = CAN_BS2_2tq; + break; + case LS1C_CAN50kBaud: + CAN_InitStructure.CAN_Prescaler = 63; + CAN_InitStructure.CAN_BS1 = CAN_BS1_16tq; + CAN_InitStructure.CAN_BS2 = CAN_BS2_3tq; + break; + default: //250K + CAN_InitStructure.CAN_Prescaler = 36; + CAN_InitStructure.CAN_BS1 = CAN_BS1_4tq; + CAN_InitStructure.CAN_BS2 = CAN_BS2_2tq; + break; + } + + CAN_Init(pcan, &CAN_InitStructure); +} + +#ifdef USING_BXCAN0 +static void bxcan0_hw_init(void) +{ + pin_set_purpose(54, PIN_PURPOSE_OTHER); + pin_set_purpose(55, PIN_PURPOSE_OTHER); + pin_set_remap(54, PIN_REMAP_THIRD); + pin_set_remap(55, PIN_REMAP_THIRD); +} +#endif + +#ifdef USING_BXCAN1 +static void bxcan1_hw_init(void) +{ + pin_set_purpose(56, PIN_PURPOSE_GPIO); + pin_set_purpose(57, PIN_PURPOSE_GPIO); + pin_set_remap(56, PIN_REMAP_DEFAULT); + pin_set_remap(57, PIN_REMAP_DEFAULT); +} +#endif + + +static rt_err_t configure(struct rt_can_device *can, struct can_configure *cfg) +{ + CAN_TypeDef *pbxcan; + + pbxcan = ((struct ls1c_bxcan *) can->parent.user_data)->reg; + if (pbxcan == CAN0) + { +#ifdef USING_BXCAN0 + bxcan0_hw_init(); + bxcan_init(pbxcan, cfg->baud_rate, cfg->mode); +#endif + } + else if (pbxcan == CAN1) + { +#ifdef USING_BXCAN1 + bxcan1_hw_init(); + bxcan_init(pbxcan, cfg->baud_rate, cfg->mode); +#endif + } + return RT_EOK; +} + +static rt_err_t control(struct rt_can_device *can, int cmd, void *arg) +{ + struct ls1c_bxcan *pbxcan; + rt_uint32_t argval; + + pbxcan = (struct ls1c_bxcan *) can->parent.user_data; + switch (cmd) + { + case RT_CAN_CMD_SET_FILTER: + return setfilter(pbxcan, (struct rt_can_filter_config *) arg); + break; + case RT_CAN_CMD_SET_MODE: + argval = (rt_uint32_t) arg; + if (argval != RT_CAN_MODE_NORMAL || + argval != RT_CAN_MODE_LISEN || + argval != RT_CAN_MODE_LOOPBACK || + argval != RT_CAN_MODE_LOOPBACKANLISEN) + { + return RT_ERROR; + } + if (argval != can->config.mode) + { + can->config.mode = argval; + return CAN_SetMode(pbxcan->reg, argval); + } + break; + case RT_CAN_CMD_SET_BAUD: + argval = (rt_uint32_t) arg; + if (argval != CAN1MBaud && + argval != CAN800kBaud && + argval != CAN500kBaud && + argval != CAN250kBaud && + argval != CAN125kBaud && + argval != CAN100kBaud && + argval != CAN50kBaud ) + { + return RT_ERROR; + } + if (argval != can->config.baud_rate) + { + can->config.baud_rate = argval; + Ls1c_CanBPS_t bps; + switch(argval) + { + case CAN1MBaud: + bps = LS1C_CAN1MBaud; + break; + case CAN800kBaud: + bps = LS1C_CAN800kBaud; + break; + case CAN500kBaud: + bps = LS1C_CAN500kBaud; + break; + case CAN250kBaud: + bps = LS1C_CAN250kBaud; + break; + case CAN125kBaud: + bps = LS1C_CAN125kBaud; + break; + case CAN50kBaud: + bps = LS1C_CAN40kBaud; + break; + default: + bps = LS1C_CAN250kBaud; + break; + } + return CAN_SetBps( pbxcan->reg, bps); + } + break; + case RT_CAN_CMD_GET_STATUS: + { + rt_uint32_t errtype; + + errtype = pbxcan->reg->RXERR; + can->status.rcverrcnt = errtype ; + errtype = pbxcan->reg->TXERR; + can->status.snderrcnt = errtype ; + errtype = pbxcan->reg->ECC; + can->status.errcode = errtype ; + if (arg != &can->status) + { + rt_memcpy(arg, &can->status, sizeof(can->status)); + } + } + break; + } + + return RT_EOK; +} + +static int sendmsg(struct rt_can_device *can, const void *buf, rt_uint32_t boxno) +{ + CAN_TypeDef *pbxcan; + CanTxMsg TxMessage; + struct rt_can_msg *pmsg = (struct rt_can_msg *) buf; + int i; + + pbxcan = ((struct ls1c_bxcan *) can->parent.user_data)->reg; + + TxMessage.StdId = pmsg->id; + TxMessage.ExtId = pmsg->id; + TxMessage.RTR = pmsg->rtr; + TxMessage.IDE = pmsg->ide; + TxMessage.DLC = pmsg->len; + for( i=0; idata[i]; + } + CAN_Transmit(pbxcan, &TxMessage); + + return RT_EOK; +} + +static int recvmsg(struct rt_can_device *can, void *buf, rt_uint32_t boxno) +{ + CAN_TypeDef *pbxcan; + + struct rt_can_msg *pmsg = (struct rt_can_msg *) buf; + int i; + + pbxcan = ((struct ls1c_bxcan *) can->parent.user_data)->reg; + + pmsg->ide = (rt_uint32_t) RxMessage.IDE; + if(RxMessage.IDE == 1) + pmsg->id = RxMessage.ExtId; + else + pmsg->id = RxMessage.StdId; + pmsg->len = RxMessage.DLC; + pmsg->rtr = RxMessage.RTR; + pmsg->hdr = 0; + for(i= 0;i< RxMessage.DLC; i++) + { + pmsg->data[i] = RxMessage.Data[i]; + } + return RT_EOK; +} + +static const struct rt_can_ops canops = +{ + configure, + control, + sendmsg, + recvmsg, +}; + +#ifdef USING_BXCAN0 +struct rt_can_device bxcan0; +void ls1c_can0_irqhandler(int irq, void *param) +{ + CAN_TypeDef* CANx; + unsigned char status; + CANx = CAN0; + /*读寄存器清除中断*/ + status = CANx->IR; + + /*接收中断*/ + if (( status & CAN_IR_RI) == CAN_IR_RI) + { + /*清除RI 中断*/ + CAN_Receive(CANx, &RxMessage); + CANx->CMR |= CAN_CMR_RRB; + CANx->CMR |= CAN_CMR_CDO; + rt_hw_can_isr(&bxcan0, RT_CAN_EVENT_RX_IND); + rt_kprintf("\r\nCan0 int RX happened!\r\n"); + } + /*å‘é€ä¸­æ–­*/ + else if (( status & CAN_IR_TI) == CAN_IR_TI) + { + rt_hw_can_isr(&bxcan0, RT_CAN_EVENT_TX_DONE | 0 << 8); + rt_kprintf("\r\nCan0 int TX happened!\r\n"); + } + /*æ•°æ®æº¢å‡ºä¸­æ–­*/ + else if (( status & CAN_IR_TI) == CAN_IR_DOI) + { + rt_hw_can_isr(&bxcan0, RT_CAN_EVENT_RXOF_IND); + rt_kprintf("\r\nCan0 int RX OF happened!\r\n"); + } +} +static struct ls1c_bxcan bxcan0data = +{ + .reg = CAN0, + .irq = ls1c_can0_irqhandler, +}; +#endif /*USING_BXCAN0*/ + +#ifdef USING_BXCAN1 +struct rt_can_device bxcan1; +void ls1c_can1_irqhandler(int irq, void *param) +{ + CAN_TypeDef* CANx; + unsigned char status; + CANx = CAN1; + /*读寄存器清除中断*/ + status = CANx->IR; + + /*接收中断*/ + if (( status & CAN_IR_RI) == CAN_IR_RI) + { + /*清除RI 中断*/ + CAN_Receive(CANx, &RxMessage); + CANx->CMR |= CAN_CMR_RRB; + CANx->CMR |= CAN_CMR_CDO; + rt_hw_can_isr(&bxcan1, RT_CAN_EVENT_RX_IND); + rt_kprintf("\r\nCan1 int RX happened!\r\n"); + } + /*å‘é€ä¸­æ–­*/ + else if (( status & CAN_IR_TI) == CAN_IR_TI) + { + rt_hw_can_isr(&bxcan1, RT_CAN_EVENT_TX_DONE | 0 << 8); + rt_kprintf("\r\nCan1 int TX happened!\r\n"); + } + /*æ•°æ®æº¢å‡ºä¸­æ–­*/ + else if (( status & CAN_IR_TI) == CAN_IR_DOI) + { + rt_hw_can_isr(&bxcan1, RT_CAN_EVENT_RXOF_IND); + rt_kprintf("\r\nCan1 int RX OF happened!\r\n"); + } +} +static struct ls1c_bxcan bxcan1data = +{ + .reg = CAN1, + .irq = ls1c_can1_irqhandler, +}; + +#endif /*USING_BXCAN1*/ + +int ls1c_bxcan_init(void) +{ + +#ifdef USING_BXCAN0 + bxcan0.config.baud_rate = CAN250kBaud; + bxcan0.config.msgboxsz = 1; + bxcan0.config.sndboxnumber = 1; + bxcan0.config.mode = RT_CAN_MODE_NORMAL; + bxcan0.config.privmode = 0; + bxcan0.config.ticks = 50; +#ifdef RT_CAN_USING_HDR + bxcan0.config.maxhdr = 2; +#endif + rt_hw_can_register(&bxcan0, "bxcan0", &canops, &bxcan0data); + rt_kprintf("\r\ncan0 register! \r\n"); + + rt_hw_interrupt_install(LS1C_CAN0_IRQ,( rt_isr_handler_t)bxcan0data.irq , RT_NULL, "can0"); + rt_hw_interrupt_umask(LS1C_CAN0_IRQ); +#endif +#ifdef USING_BXCAN1 + bxcan1.config.baud_rate = CAN250kBaud; + bxcan1.config.msgboxsz = 1; + bxcan1.config.sndboxnumber = 1; + bxcan1.config.mode = RT_CAN_MODE_NORMAL; + bxcan1.config.privmode = 0; + bxcan1.config.ticks = 50; +#ifdef RT_CAN_USING_HDR + bxcan1.config.maxhdr = 2; +#endif + rt_hw_can_register(&bxcan1, "bxcan1", &canops, &bxcan1data); + rt_kprintf("\r\ncan1 register! \r\n"); + + rt_hw_interrupt_install(LS1C_CAN1_IRQ,( rt_isr_handler_t)bxcan1data.irq , RT_NULL, "can1"); + rt_hw_interrupt_umask(LS1C_CAN1_IRQ); +#endif + return RT_EOK; +} + +INIT_BOARD_EXPORT(ls1c_bxcan_init); + +#endif /*RT_USING_CAN*/ diff --git a/bsp/ls1cdev/drivers/drv_can.h b/bsp/ls1cdev/drivers/drv_can.h new file mode 100644 index 0000000000000000000000000000000000000000..0d846dee256268b65ba406173bcc9034eb6ee68e --- /dev/null +++ b/bsp/ls1cdev/drivers/drv_can.h @@ -0,0 +1,30 @@ +/* + * File : bxcan.h + * This file is part of RT-Thread RTOS + * COPYRIGHT (C) 2006 - 2018, RT-Thread Development Team + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Change Logs: + * Date Author Notes + * 2018-01-06 sundm75 first version + */ + +#ifndef LS1C_DRV_CAN_H +#define LS1C_DRV_CAN_H + +extern int ls1c_bxcan_init(void); + +#endif /*DRV_CAN_H_*/ diff --git a/bsp/ls1cdev/drivers/drv_spi.c b/bsp/ls1cdev/drivers/drv_spi.c index b26de557dbc8585e5184617b495ab9696dae3ce2..900f7e4aadf8a53214a17e897d0f905221da819e 100644 --- a/bsp/ls1cdev/drivers/drv_spi.c +++ b/bsp/ls1cdev/drivers/drv_spi.c @@ -25,7 +25,9 @@ #include #include #include "drv_spi.h" +#include "../libraries/ls1c_pin.h" +#ifdef RT_USING_SPI //#define DEBUG @@ -226,4 +228,66 @@ rt_err_t ls1c_spi_bus_register(rt_uint8_t SPI, const char *spi_bus_name) return rt_spi_bus_register(spi_bus, spi_bus_name, &ls1c_spi_ops); } +int ls1c_hw_spi_init(void) +{ +#ifdef RT_USING_SPI0 + pin_set_purpose(78, PIN_PURPOSE_OTHER); + pin_set_purpose(79, PIN_PURPOSE_OTHER); + pin_set_purpose(80, PIN_PURPOSE_OTHER); + pin_set_purpose(83, PIN_PURPOSE_OTHER);//cs2 - SD card + pin_set_purpose(82, PIN_PURPOSE_OTHER);//cs1 + + pin_set_remap(78, PIN_REMAP_FOURTH); + pin_set_remap(79, PIN_REMAP_FOURTH); + pin_set_remap(80, PIN_REMAP_FOURTH); + pin_set_remap(83, PIN_REMAP_FOURTH);//cs2 - SD card + pin_set_remap(82, PIN_REMAP_FOURTH);//cs1 + ls1c_spi_bus_register(LS1C_SPI_0,"spi0"); +#endif + +#ifdef RT_USING_SPI1 + pin_set_purpose(46, PIN_PURPOSE_OTHER); + pin_set_purpose(47, PIN_PURPOSE_OTHER); + pin_set_purpose(48, PIN_PURPOSE_OTHER); + pin_set_purpose(49, PIN_PURPOSE_OTHER);//CS0 - touch screen + pin_set_remap(46, PIN_REMAP_THIRD); + pin_set_remap(47, PIN_REMAP_THIRD); + pin_set_remap(48, PIN_REMAP_THIRD); + pin_set_remap(49, PIN_REMAP_THIRD);//CS0 - touch screen + ls1c_spi_bus_register(LS1C_SPI_1,"spi1"); + +#endif + + +#ifdef RT_USING_SPI0 + /* attach cs */ + { + static struct rt_spi_device spi_device1; + static struct rt_spi_device spi_device2; + static struct ls1c_spi_cs spi_cs1; + static struct ls1c_spi_cs spi_cs2; + + /* spi02: CS2 SD Card*/ + spi_cs2.cs = LS1C_SPI_CS_2; + rt_spi_bus_attach_device(&spi_device2, "spi02", "spi0", (void*)&spi_cs2); + spi_cs1.cs = LS1C_SPI_CS_1; + rt_spi_bus_attach_device(&spi_device1, "spi01", "spi0", (void*)&spi_cs1); + msd_init("sd0", "spi02"); + } +#endif +#ifdef RT_USING_SPI1 + { + static struct rt_spi_device spi_device; + static struct ls1c_spi_cs spi_cs; + + /* spi10: CS0 Touch*/ + spi_cs.cs = LS1C_SPI_CS_0; + rt_spi_bus_attach_device(&spi_device, "spi10", "spi1", (void*)&spi_cs); + } +#endif +} + +INIT_BOARD_EXPORT(ls1c_hw_spi_init); + +#endif diff --git a/bsp/ls1cdev/drivers/hw_i2c.c b/bsp/ls1cdev/drivers/hw_i2c.c new file mode 100644 index 0000000000000000000000000000000000000000..6d427701ed4a796786d4b22a383123e4b4256eef --- /dev/null +++ b/bsp/ls1cdev/drivers/hw_i2c.c @@ -0,0 +1,176 @@ +/* + * File :hw_i2c.c + * This file is part of RT-Thread RTOS + * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Change Logs: + * Date Author Notes + * 2018-01-04 Sundm75 the first version + */ + +#include +#include +#include "ls1c_i2c.h" +#include "../libraries/ls1c_pin.h" + +#ifdef RT_USING_I2C + +struct ls1c_i2c_bus +{ + struct rt_i2c_bus_device parent; + rt_uint32_t u32Module; +}; + +rt_size_t rt_i2c_master_xfer(struct rt_i2c_bus_device *bus, + struct rt_i2c_msg *msgs, + rt_uint32_t num) +{ + struct ls1c_i2c_bus * i2c_bus = (struct ls1c_i2c_bus *)bus; + ls1c_i2c_info_t i2c_info; + struct rt_i2c_msg *msg; + int i; + rt_int32_t ret = RT_EOK; + i2c_info.clock = 50000; // 50kb/s + i2c_info.I2Cx = i2c_bus->u32Module; + i2c_init(&i2c_info); + + for (i = 0; i < num; i++) + { + msg = &msgs[i]; + if (msg->flags == RT_I2C_RD) + { + i2c_send_start_and_addr(&i2c_info, msg->addr, LS1C_I2C_DIRECTION_READ); + i2c_receive_ack(&i2c_info); + i2c_receive_data(&i2c_info, (rt_uint8_t *)msg->buf, msg->len); + i2c_send_stop(&i2c_info); + } + else if(msg->flags == RT_I2C_WR) + { + i2c_send_start_and_addr(&i2c_info, msg->addr, LS1C_I2C_DIRECTION_WRITE); + i2c_receive_ack(&i2c_info); + i2c_send_data(&i2c_info, (rt_uint8_t *)msg->buf, msg->len); + i2c_send_stop(&i2c_info); + } + ret++; + } + return ret; +} + +rt_err_t rt_i2c_bus_control(struct rt_i2c_bus_device *bus, + rt_uint32_t cmd, + rt_uint32_t arg) +{ + struct ls1c_i2c_bus * i2c_bus = (struct ls1c_i2c_bus *)bus; + + RT_ASSERT(bus != RT_NULL); + i2c_bus = (struct ls1c_i2c_bus *)bus->parent.user_data; + + RT_ASSERT(i2c_bus != RT_NULL); + + switch (cmd) + { + case RT_DEVICE_CTRL_CONFIG : + break; + } + + return RT_EOK; +} + +static const struct rt_i2c_bus_device_ops ls1c_i2c_ops = +{ + rt_i2c_master_xfer, + RT_NULL, + rt_i2c_bus_control +}; + + +#ifdef RT_USING_I2C0 +static struct ls1c_i2c_bus ls1c_i2c_bus_0 = +{ + {1}, + LS1C_I2C_0, +}; +#endif + +#ifdef RT_USING_I2C1 +static struct ls1c_i2c_bus ls1c_i2c_bus_1 = +{ + {1}, + LS1C_I2C_1, +}; +#endif + +#ifdef RT_USING_I2C2 +static struct ls1c_i2c_bus ls1c_i2c_bus_2 = +{ + {1}, + LS1C_I2C_2, +}; +#endif + +int ls1c_hw_i2c_init(void) +{ + struct ls1c_i2c_bus* ls1c_i2c; + +#ifdef RT_USING_I2C0 +/* + pin_set_purpose(2, PIN_PURPOSE_OTHER); + pin_set_purpose(3, PIN_PURPOSE_OTHER); + pin_set_remap(2, PIN_REMAP_SECOND); + pin_set_remap(3, PIN_REMAP_SECOND); + */ +#endif +#ifdef RT_USING_I2C1 + pin_set_purpose(2, PIN_PURPOSE_OTHER); + pin_set_purpose(3, PIN_PURPOSE_OTHER); + pin_set_remap(2, PIN_REMAP_SECOND); + pin_set_remap(3, PIN_REMAP_SECOND); +#endif +#ifdef RT_USING_I2C2 + pin_set_purpose(51, PIN_PURPOSE_OTHER); + pin_set_purpose(50, PIN_PURPOSE_OTHER); + pin_set_remap(51, PIN_REMAP_FOURTH); + pin_set_remap(50, PIN_REMAP_FOURTH); +#endif + + +#ifdef RT_USING_I2C0 + ls1c_i2c = &ls1c_i2c_bus_0; + ls1c_i2c->parent.ops = &ls1c_i2c_ops; + rt_i2c_bus_device_register(&ls1c_i2c->parent, "i2c0"); + rt_kprintf("i2c0_init!\n"); +#endif +#ifdef RT_USING_I2C1 + ls1c_i2c = &ls1c_i2c_bus_1; + ls1c_i2c->parent.ops = &ls1c_i2c_ops; + rt_i2c_bus_device_register(&ls1c_i2c->parent, "i2c1"); + rt_kprintf("i2c1_init!\n"); +#endif + +#ifdef RT_USING_I2C2 + ls1c_i2c = &ls1c_i2c_bus_2; + ls1c_i2c->parent.ops = &ls1c_i2c_ops; + rt_i2c_bus_device_register(&ls1c_i2c->parent, "i2c2"); + rt_kprintf("i2c2_init!\n"); +#endif + + return RT_EOK; +} + +INIT_BOARD_EXPORT(ls1c_hw_i2c_init); + +#endif diff --git a/bsp/ls1cdev/drivers/hw_i2c.h b/bsp/ls1cdev/drivers/hw_i2c.h new file mode 100644 index 0000000000000000000000000000000000000000..1bd4e991ede2fc6df3e84b00f5a44e8ed70d768c --- /dev/null +++ b/bsp/ls1cdev/drivers/hw_i2c.h @@ -0,0 +1,32 @@ +/* + * File : hw_i2c.h + * This file is part of RT-Thread RTOS + * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Change Logs: + * Date Author Notes + * 2018-01-04 Sundm75 the first version + */ + +#ifndef LS1C_I2C_H +#define LS1C_I2C_H + +#include + +int rt_i2c_init(void); + +#endif diff --git a/bsp/ls1cdev/drivers/touch.c b/bsp/ls1cdev/drivers/touch.c new file mode 100644 index 0000000000000000000000000000000000000000..249e7682bf6a84636995f177489305736c5c009d --- /dev/null +++ b/bsp/ls1cdev/drivers/touch.c @@ -0,0 +1,611 @@ +/* + * File : touch.c + * This file is part of RT-Thread RTOS + * COPYRIGHT (C) 2006 - 2012, RT-Thread Development Team + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Change Logs: + * Date Author Notes + * 2017-12-30 Sundm75 first version + */ + +#include +#include +#include +#include +#include "ls1c.h" +#include "ls1c_gpio.h" +#include "ls1c_spi.h" +#include "drv_spi.h" +#include "touch.h" + +#ifdef RT_USING_RTGUI + +#include +#include +#include +#include +#include + +//ÊúÆÁÄ» ²»ÐèÒª _ILI_HORIZONTAL_DIRECTION_ +//ºáÆÁÄ» ÐèÒª _ILI_HORIZONTAL_DIRECTION_ + +//#define _ILI_HORIZONTAL_DIRECTION_ + +#if defined(_ILI_HORIZONTAL_DIRECTION_) +#define X_WIDTH 272 +#define Y_WIDTH 480 +#else +#define X_WIDTH 480 +#define Y_WIDTH 272 +#endif +/* +TOUCH INT: 84 +*/ +#define IS_TOUCH_UP() gpio_get(TOUCH_INT_PIN) + +#define led_gpio 52 // led1ָʾ + +#define DUMMY 0x00 + +/* +7 6 - 4 3 2 1-0 +s A2-A0 MODE SER/DFR PD1-PD0 +*/ +/* bit[1:0] power-down */ +#define POWER_MODE0 (0) /* Power-Down Between Conversions. When */ + /* each conversion is finished, the converter */ + /* enters a low-power mode. At the start of the */ + /* next conversion, the device instantly powers up */ + /* to full power. There is no need for additional */ + /* delays to ensure full operation, and the very first */ + /* conversion is valid. The Y? switch is on when in */ + /* power-down.*/ +#define POWER_MODE1 (1) /* Reference is off and ADC is on. */ +#define POWER_MODE2 (2) /* Reference is on and ADC is off. */ +#define POWER_MODE3 (3) /* Device is always powered. Reference is on and */ + /* ADC is on. */ +/* bit[2] SER/DFR */ +#define DIFFERENTIAL (0<<2) +#define SINGLE_ENDED (1<<2) +/* bit[3] mode */ +#define MODE_12BIT (0<<3) +#define MODE_8BIT (1<<3) +/* bit[6:4] differential mode */ +#define MEASURE_X (((1<<2) | (0<<1) | (1<<0))<<4) +#define MEASURE_Y (((0<<2) | (0<<1) | (1<<0))<<4) +#define MEASURE_Z1 (((0<<2) | (1<<1) | (1<<0))<<4) +#define MEASURE_Z2 (((1<<2) | (0<<1) | (0<<0))<<4) +/* bit[7] start */ +#define START (1<<7) + +/* X Y change. */ +#define TOUCH_MSR_X (START | MEASURE_X | MODE_12BIT | DIFFERENTIAL | POWER_MODE0) +#define TOUCH_MSR_Y (START | MEASURE_Y | MODE_12BIT | DIFFERENTIAL | POWER_MODE0) + + +/* ÒÔ϶¨ÒåXPT2046 µÄ´¥ÃþÆÁλÖÃ*/ +#if defined(_ILI_HORIZONTAL_DIRECTION_) +#define MIN_X_DEFAULT 2047 +#define MAX_X_DEFAULT 47 +#define MIN_Y_DEFAULT 102 +#define MAX_Y_DEFAULT 1939 +#else +#define MIN_X_DEFAULT 47 +#define MAX_X_DEFAULT 2047 +#define MIN_Y_DEFAULT 1939 +#define MAX_Y_DEFAULT 102 +#endif + + + +#define SAMP_CNT 8 //the adc array size +#define SAMP_CNT_DIV2 4 //the middle of the adc array +#define SH 10 // Valve value + + +/*ºê¶¨Òå */ +#define TOUCH_SPI_X SPI1 +#define TOUCH_INT_PIN 84 +#define TOUCH_CS_PIN 49 +#define TOUCH_SCK_PIN 46 +#define TOUCH_MISO_PIN 47 +#define TOUCH_MOSI_PIN 48 + + +/*´´½¨½á¹¹Ì彫ÐèÒªÓõ½µÄ¶«Î÷½øÐдò°ü*/ +struct rtgui_touch_device +{ + struct rt_device parent; /* ÓÃÓÚ×¢²áÉ豸*/ + + rt_uint16_t x, y; /* ¼Ç¼¶ÁÈ¡µ½µÄλÖÃÖµ */ + + rt_bool_t calibrating; /* ´¥ÃþУ׼±êÖ¾ */ + rt_touch_calibration_func_t calibration_func;/* ´¥Ãþº¯Êý º¯ÊýÖ¸Õë */ + + rt_uint16_t min_x, max_x; /* У׼ºó X ·½Ïò×îС ×î´óÖµ */ + rt_uint16_t min_y, max_y; /* У׼ºó Y ·½Ïò×îС ×î´óÖµ */ + + struct rt_spi_device * spi_device; /* SPI É豸 ÓÃÓÚͨÐÅ */ + struct rt_event event; /* ʼþͬ²½£¬ÓÃÓÚ¡°±ÊÖжϡ± */ +}; +static struct rtgui_touch_device *touch = RT_NULL; + +static rt_err_t touch_send_then_recv(struct rt_spi_device *device, + const void *send_buf, + rt_size_t send_length, + void *recv_buf, + rt_size_t recv_length) +{ + rt_err_t result; + struct rt_spi_message message; + rt_uint8_t dummy[128] ; + + rt_memset(dummy, DUMMY, sizeof(dummy)); + + RT_ASSERT(device != RT_NULL); + RT_ASSERT(device->bus != RT_NULL); + + result = rt_mutex_take(&(device->bus->lock), RT_WAITING_FOREVER); + if (result == RT_EOK) + { + if (device->bus->owner != device) + { + /* not the same owner as current, re-configure SPI bus */ + result = device->bus->ops->configure(device, &device->config); + if (result == RT_EOK) + { + /* set SPI bus owner */ + device->bus->owner = device; + } + else + { + /* configure SPI bus failed */ + result = -RT_EIO; + goto __exit; + } + } + + /* send data */ + message.send_buf = send_buf; + message.recv_buf = RT_NULL; + message.length = send_length; + message.cs_take = 1; + message.cs_release = 0; + message.next = RT_NULL; + + result = device->bus->ops->xfer(device, &message); + if (result == 0) + { + result = -RT_EIO; + goto __exit; + } + + /* recv data */ + message.send_buf = dummy; + message.recv_buf = recv_buf; + message.length = recv_length; + message.cs_take = 0; + message.cs_release = 1; + message.next = RT_NULL; + + result = device->bus->ops->xfer(device, &message); + if (result == 0) + { + result = -RT_EIO; + goto __exit; + } + + result = RT_EOK; + } + else + { + return -RT_EIO; + } + +__exit: + rt_mutex_release(&(device->bus->lock)); + + return result; +} + + +static void rtgui_touch_calculate(void) +{ + if (touch != RT_NULL) + { + /* read touch */ + { + rt_uint8_t i, j, k, min; + rt_uint16_t temp; + rt_uint16_t tmpxy[2][SAMP_CNT]; + rt_uint8_t send_buffer[1]; + rt_uint8_t recv_buffer[2]; + for(i=0; ispi_device, send_buffer, 1, recv_buffer, 2); + rt_kprintf("touch x: %d ",(recv_buffer[0]*256|recv_buffer[1])>>4); +#if defined(_ILI_HORIZONTAL_DIRECTION_) + tmpxy[1][i] = (recv_buffer[0]<<8)|recv_buffer[1] ; + tmpxy[1][i] >>= 4; +#else + tmpxy[0][i] = (recv_buffer[0]<<8)|recv_buffer[1] ; + tmpxy[0][i] >>=4; + +#endif + send_buffer[0] = TOUCH_MSR_Y; + touch_send_then_recv(touch->spi_device, send_buffer, 1, recv_buffer, 2); + rt_kprintf("touch y: %d \n",(recv_buffer[0]*256|recv_buffer[1])>>4); + +#if defined(_ILI_HORIZONTAL_DIRECTION_) + tmpxy[0][i] = (recv_buffer[0]<<8)|recv_buffer[1] ; + tmpxy[0][i] >>= 4; +#else + tmpxy[1][i] = (recv_buffer[0]<<8)|recv_buffer[1] ; + tmpxy[1][i] >>= 4; +#endif + } + /*Ôٴδò¿ª´¥ÃþÖжÏ*/ + send_buffer[0] = 1 << 7; + touch_send_then_recv(touch->spi_device, send_buffer, 1, recv_buffer, 2); + touch_send_then_recv(touch->spi_device, send_buffer, 1, recv_buffer, 2); + /* calculate average */ + { + rt_uint32_t total_x = 0; + rt_uint32_t total_y = 0; + for(k=0; k<2; k++) + { + // sorting the ADC value + for(i=0; i tmpxy[k][j]) + min=j; + } + temp = tmpxy[k][i]; + tmpxy[k][i] = tmpxy[k][min]; + tmpxy[k][min] = temp; + } + //check value for Valve value + if((tmpxy[k][SAMP_CNT_DIV2+1]-tmpxy[k][SAMP_CNT_DIV2-2]) > SH) + { + return; + } + } + total_x=tmpxy[0][SAMP_CNT_DIV2-2]+tmpxy[0][SAMP_CNT_DIV2-1]+tmpxy[0][SAMP_CNT_DIV2]+tmpxy[0][SAMP_CNT_DIV2+1]; + total_y=tmpxy[1][SAMP_CNT_DIV2-2]+tmpxy[1][SAMP_CNT_DIV2-1]+tmpxy[1][SAMP_CNT_DIV2]+tmpxy[1][SAMP_CNT_DIV2+1]; + //calculate average value + touch->x=total_x>>2; + touch->y=total_y>>2; + rt_kprintf("touch->x:%d touch->y:%d\r\n", touch->x, touch->y); + } /* calculate average */ + } /* read touch */ + + /* if it's not in calibration status */ + /*´¥ÃþÖµËõ·Å*/ + if (touch->calibrating != RT_TRUE) + { + if (touch->max_x > touch->min_x) + { + touch->x = (touch->x - touch->min_x) * X_WIDTH/(touch->max_x - touch->min_x); + } + else + { + touch->x = (touch->min_x - touch->x) * X_WIDTH/(touch->min_x - touch->max_x); + } + + if (touch->max_y > touch->min_y) + { + touch->y = (touch->y - touch->min_y) * Y_WIDTH /(touch->max_y - touch->min_y); + } + else + { + touch->y = (touch->min_y - touch->y) * Y_WIDTH /(touch->min_y - touch->max_y); + } + } + } +} +#include "ls1c_regs.h" +#define TOUCH_INT_EN __REG32(LS1C_INT4_EN) +rt_inline void touch_int_cmd(rt_bool_t NewState) +{ + if(NewState == RT_TRUE) + { + //TOUCH_INT_EN |= (1<<(TOUCH_INT_PIN-64)); + reg_set_one_bit(LS1C_INT4_EN, 1<<(TOUCH_INT_PIN-64)); + } + else + { + //TOUCH_INT_EN &=(~ (1<<(TOUCH_INT_PIN-64))); + reg_clr_one_bit(LS1C_INT4_EN, 1<<(TOUCH_INT_PIN-64)); + } + +} + +void ls1c_touch_irqhandler(void) /* TouchScreen */ +{ + if(gpio_get(TOUCH_INT_PIN)==0) + { + /* ´¥ÃþÆÁ°´Ïºó²Ù×÷ */ + if (gpio_level_low == gpio_get(led_gpio)) + gpio_set(led_gpio, gpio_level_high); + else + gpio_set(led_gpio, gpio_level_low); + touch_int_cmd(RT_FALSE); + rt_event_send(&touch->event, 1); + } +} + +/*¹Ü½Å³õʼ»¯£¬ÅäÖÃÖжϴò¿ªSPI1 CS0 É豸*/ +rt_inline void touch_init(void) +{ + unsigned int touch_int_gpio = TOUCH_INT_PIN; // ´¥ÃþÆÁÖÐ¶Ï + int touch_irq = LS1C_GPIO_TO_IRQ(touch_int_gpio); + + // ³õʼ»¯°´¼üÖÐ¶Ï + gpio_set_irq_type(touch_int_gpio, IRQ_TYPE_EDGE_FALLING); + rt_hw_interrupt_install(touch_irq, ls1c_touch_irqhandler, RT_NULL, "touch"); + rt_hw_interrupt_umask(touch_irq); + gpio_init(touch_int_gpio, gpio_mode_input); + + // ³õʼ»¯led + gpio_init(led_gpio, gpio_mode_output); + gpio_set(led_gpio, gpio_level_high); +} + + +/* RT-Thread Device Interface */ +static rt_err_t rtgui_touch_init (rt_device_t dev) +{ + rt_uint8_t send; + rt_uint8_t recv_buffer[2]; + struct rtgui_touch_device * touch_device = (struct rtgui_touch_device *)dev; + + touch_init(); + rt_kprintf("touch_init ...\n"); + send = START | DIFFERENTIAL | POWER_MODE0; + touch_send_then_recv(touch->spi_device, &send, 1, recv_buffer, 2); + + return RT_EOK; +} + +static rt_err_t rtgui_touch_control (rt_device_t dev, int cmd, void *args) +{ + switch (cmd) + { + case RT_TOUCH_CALIBRATION: + touch->calibrating = RT_TRUE; + touch->calibration_func = (rt_touch_calibration_func_t)args; + break; + + case RT_TOUCH_NORMAL: + touch->calibrating = RT_FALSE; + break; + + case RT_TOUCH_CALIBRATION_DATA: + { + struct calibration_data* data; + data = (struct calibration_data*) args; + + //update + touch->min_x = data->min_x; + touch->max_x = data->max_x; + touch->min_y = data->min_y; + touch->max_y = data->max_y; + } + break; + } + + return RT_EOK; +} + +void _set_mouse_position(rt_uint32_t X, rt_uint32_t Y) +{} +static void touch_thread_entry(void *parameter) +{ + rt_bool_t touch_down = RT_FALSE; + rt_uint32_t event_value; + struct rtgui_event_mouse emouse; + static struct _touch_previous + { + rt_uint32_t x; + rt_uint32_t y; + } touch_previous; + + RTGUI_EVENT_MOUSE_BUTTON_INIT(&emouse); + emouse.wid = RT_NULL; + + while(1) + { + /* ½ÓÊÕµ½´¥ÃþÖжÏʼþ */ + if(rt_event_recv(&touch->event, + 1, + RT_EVENT_FLAG_OR | RT_EVENT_FLAG_CLEAR, + 100, + &event_value) + == RT_EOK) + { + while(1) + { + if (IS_TOUCH_UP()) + { + /* ´¥Ãþ±Ȩ̂Æð */ + /* touch up */ + emouse.button = (RTGUI_MOUSE_BUTTON_LEFT |RTGUI_MOUSE_BUTTON_UP); + + /* use old value */ + emouse.x = touch->x; + emouse.y = touch->y; + + if(touch_down != RT_TRUE) + { + touch_int_cmd(RT_TRUE); + break; + } + + if ((touch->calibrating == RT_TRUE) && (touch->calibration_func != RT_NULL)) + { + /* ´¥ÃþУ׼´¦Àí */ + /* callback function */ + touch->calibration_func(emouse.x, emouse.y); + + } + else + { + /* Ïòui·¢ËÍ´¥Ãþ×ø±ê */ + rtgui_server_post_event(&emouse.parent, sizeof(struct rtgui_event_mouse)); + } + rt_kprintf("touch up: (%d, %d)\n", emouse.x, emouse.y); + + /* clean */ + touch_previous.x = touch_previous.y = 0; + touch_down = RT_FALSE; + + touch_int_cmd(RT_TRUE); + break; + } /* touch up */ + else /* touch down or move */ + { + if(touch_down == RT_FALSE) + { + rt_thread_delay(RT_TICK_PER_SECOND / 10); + } + else + { + rt_thread_delay(5); + } + + if(IS_TOUCH_UP()) continue; + + /* calculation */ + rtgui_touch_calculate(); + + /* send mouse event */ + emouse.parent.type = RTGUI_EVENT_MOUSE_BUTTON; + emouse.parent.sender = RT_NULL; + + emouse.x = touch->x; + emouse.y = touch->y; + _set_mouse_position(emouse.x, emouse.y); + /* ¹â±ê¸úËæ */ + /* init mouse button */ + emouse.button = (RTGUI_MOUSE_BUTTON_LEFT |RTGUI_MOUSE_BUTTON_DOWN); + + /* send event to server */ + if (touch->calibrating != RT_TRUE) + { +#define previous_keep 8 + /* filter. */ + if((touch_previous.x > touch->x + previous_keep) + || (touch_previous.x < touch->x - previous_keep) + || (touch_previous.y > touch->y + previous_keep) + || (touch_previous.y < touch->y - previous_keep)) + { + touch_previous.x = touch->x; + touch_previous.y = touch->y; + /* Ïòui·¢ËÍ´¥Ãþ×ø±ê */ + rtgui_server_post_event(&emouse.parent, sizeof(struct rtgui_event_mouse)); + if(touch_down == RT_FALSE) + { + touch_down = RT_TRUE; + rt_kprintf("touch down: (%d, %d)\n", emouse.x, emouse.y); + } + else + { + rt_kprintf("touch motion: (%d, %d)\n", emouse.x, emouse.y); + } + } + } + else + { + touch_down = RT_TRUE; + } + } /* touch down or move */ + } /* read touch */ + } /* event recv */ + } /* thread while(1) */ +} + + +rt_err_t rtgui_touch_hw_init(const char * spi_device_name) +{ + rt_uint32_t arg[2]; + struct rt_device * spi_device; + struct rt_thread * touch_thread; + rt_err_t err; + + rt_kprintf("spi1 cs0 start...\n"); + spi_device = rt_device_find("spi10"); + if(spi_device == RT_NULL) + { + rt_kprintf("Did not find spi1, exit thread....\n"); + return; + } + err = rt_device_open(spi_device, RT_DEVICE_OFLAG_RDWR); + if(err != RT_EOK) + { + rt_kprintf("Open spi1 failed %08X, exit thread....\n", err); + return; + } + + /* config spi */ + { + struct rt_spi_configuration cfg; + cfg.data_width = 8; + cfg.mode = RT_SPI_MODE_0; + cfg.max_hz = 200 * 1000; /* 200K */ + rt_spi_configure((struct rt_spi_device *)spi_device, &cfg); + } + + touch = (struct rtgui_touch_device*)rt_malloc (sizeof(struct rtgui_touch_device)); + if (touch == RT_NULL) return RT_ENOMEM; /* no memory yet */ + + /* clear device structure */ + rt_memset(&(touch->parent), 0, sizeof(struct rt_device)); + + rt_event_init(&touch->event, "touch", RT_IPC_FLAG_FIFO); + + touch->spi_device = (struct rt_spi_device *)spi_device; + touch->calibrating = false; + + touch->min_x = MIN_X_DEFAULT; + touch->max_x = MAX_X_DEFAULT; + touch->min_y = MIN_Y_DEFAULT; + touch->max_y = MAX_Y_DEFAULT; + + /* init device structure */ + touch->parent.type = RT_Device_Class_Miscellaneous; + touch->parent.init = rtgui_touch_init; + touch->parent.control = rtgui_touch_control; + touch->parent.user_data = RT_NULL; + + /* register touch device to RT-Thread */ + rt_device_register(&(touch->parent), "touch", RT_DEVICE_FLAG_RDWR); + + + touch_thread = rt_thread_create("touch_thread", + touch_thread_entry, RT_NULL, + 4096, RTGUI_SVR_THREAD_PRIORITY-1, 1); + if (touch_thread != RT_NULL) rt_thread_startup(touch_thread); + + rt_device_init((rt_device_t)touch); + return RT_EOK; +} + +#endif diff --git a/bsp/ls1cdev/drivers/touch.h b/bsp/ls1cdev/drivers/touch.h new file mode 100644 index 0000000000000000000000000000000000000000..0892d2858f258c8aa87ad3bf48d8400b04251529 --- /dev/null +++ b/bsp/ls1cdev/drivers/touch.h @@ -0,0 +1,43 @@ +/* + * File : touch.h + * This file is part of RT-Thread RTOS + * COPYRIGHT (C) 2006 - 2012, RT-Thread Development Team + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Change Logs: + * Date Author Notes + * 2017-12-30 Sundm75 first version + */ + #ifndef __TOUCH_H__ +#define __TOUCH_H__ + +#define RT_TOUCH_NORMAL 0 +#define RT_TOUCH_CALIBRATION_DATA 1 +#define RT_TOUCH_CALIBRATION 2 + +//#define SAVE_CALIBRATION + + +rt_uint16_t touch_read_x(void); +rt_uint16_t touch_read_y(void); +void touch_config(void); + + +rt_err_t rtgui_touch_hw_init(const char * spi_device_name); + +#endif + + diff --git a/bsp/ls1cdev/drivers/uart.c b/bsp/ls1cdev/drivers/uart.c index c5207b21dbc5c30a0792bb579ada90c3eefa97c8..01bb2d0f8d7fee5aeb2a7db71bb51043a6c26e6e 100644 --- a/bsp/ls1cdev/drivers/uart.c +++ b/bsp/ls1cdev/drivers/uart.c @@ -24,7 +24,7 @@ /*@{*/ -#if defined(RT_USING_UART) && defined(RT_USING_DEVICE) +#if defined(RT_USING_SERIAL) && defined(RT_USING_DEVICE) struct rt_uart_ls1c { diff --git a/bsp/ls1cdev/kconfig b/bsp/ls1cdev/kconfig new file mode 100644 index 0000000000000000000000000000000000000000..f305eb5768f973fb08cc6bfc5d333e090def774c --- /dev/null +++ b/bsp/ls1cdev/kconfig @@ -0,0 +1,79 @@ +mainmenu "RT-Thread Configuration" + + +config $BSP_DIR + string + option env="BSP_ROOT" + default "." + +config $RTT_DIR + string + option env="RTT_ROOT" + default "../.." + +config $PKGS_DIR + string + option env="PKGS_ROOT" + default "packages" + +source "$RTT_DIR/KConfig" +source "$PKGS_DIR/KConfig" + +if RT_USING_SERIAL +config RT_USING_UART2 + bool "Using RT_USING_UART2" + default y + +config RT_UART_RX_BUFFER_SIZE + int "The rx buffer size" + default 64 if RT_USING_SERIAL + default 64 +endif + +config RT_USING_GMAC_INT_MODE + bool "Using RT_USING_GMAC_INT_MODE" + default y + +config RT_USING_FPU + bool "Using RT_USING_FPU" + default y + +config RT_USING_SPI0 + bool "Enable SPI0" + select RT_USING_SPI + default y + +config RT_USING_SPI1 + bool "Enable SPI1" + select RT_USING_SPI + default y + +if RT_USING_I2C +config RT_USING_I2C1 + bool "Enable I2C1" + default y + +config RT_USING_I2C2 + bool "Enable I2C2" + default y +endif + + +config USING_BXCAN0 + bool "Enable CAN0" + select RT_USING_CAN + default y + +config USING_BXCAN1 + bool "Enable CAN1" + select RT_USING_CAN + default y + +if RT_USING_CAN +config RT_CAN_USING_HDR + bool "Using RT_CAN_USING_HDR" + select RT_USING_CAN + default y +endif + + \ No newline at end of file diff --git a/bsp/ls1cdev/libraries/ls1c_can.c b/bsp/ls1cdev/libraries/ls1c_can.c new file mode 100644 index 0000000000000000000000000000000000000000..f113e60990d32ecc16444822318c2e8d3bb79d73 --- /dev/null +++ b/bsp/ls1cdev/libraries/ls1c_can.c @@ -0,0 +1,460 @@ +/* + * File : ls1c_can.c + * This file is part of RT-Thread RTOS + * COPYRIGHT (C) 2006 - 2018, RT-Thread Development Team + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Change Logs: + * Date Author Notes + * 2018-01-06 sundm75 first version + */ + +#include "ls1c.h" +#include "ls1c_public.h" +#include "ls1c_can.h" + +unsigned char set_reset_mode(CAN_TypeDef* CANx) +{ + unsigned char status; + int i; + + /*检查å¤ä½æ ‡å¿—*/ + status = CANx->MOD; + + /* 关闭中断 */ + CANx->IER = 0x00; + + for (i = 0; i < 100; i++) + { + if((status & CAN_Mode_RM) == CAN_Mode_RM) + return 1; + + /* 设置å¤ä½*/ + CANx->MOD |= ((unsigned char)CAN_Mode_RM); + + /*延时*/ + delay_us(10); + + /*检查å¤ä½æ ‡å¿—*/ + status = CANx->MOD; + } + rt_kprintf("\r\nSetting SJA1000 into reset mode failed!\r\n"); + return 0; +} + +static unsigned char set_normal_mode(CAN_TypeDef* CANx) +{ + unsigned char status; + int i; + + /*检查å¤ä½æ ‡å¿—*/ + status = CANx->MOD; + + for (i = 0; i < 100; i++) + { + if((status & CAN_Mode_RM) != CAN_Mode_RM) + { + /*开所有中断 (总线错误中断ä¸å¼€ï¼‰*/ + CANx->IER |= (~(unsigned char)CAN_IR_BEI); + return 1; + } + /* 设置正常工作模å¼*/ + CANx->MOD &= (~(unsigned char) CAN_Mode_RM); + /*延时*/ + delay_us(10); + status = CANx->MOD; + } + rt_kprintf("\r\nSetting SJA1000 into normal mode failed!\r\n"); + return 0; +} + +unsigned char set_start(CAN_TypeDef* CANx) +{ + /*å¤ä½TX错误计数器*/ + CANx->TXERR = 0; + /*å¤ä½RX错误计数器*/ + CANx->RXERR = 0; + /*时钟分频寄存器: PeliCAN模å¼; CBP=1,中止输入比较器, RX0激活*/ + CANx->CDR = 0xC0; + + return set_normal_mode(CANx); +} + +unsigned char CAN_Init(CAN_TypeDef* CANx, CAN_InitTypeDef* CAN_InitStruct) +{ + unsigned char InitStatus = CAN_InitStatus_Failed; + unsigned long wait_ack = 0x00000000; + unsigned char status; + + status = CANx->MOD; + if( status == 0xFF) + { + rt_kprintf("\n Probe can0 failed \r\n"); + return CAN_InitStatus_Failed; + } + + /* 进入å¤ä½æ¨¡å¼ */ + InitStatus = set_reset_mode(CANx); + + if((CAN_InitStruct->CAN_Mode & CAN_Mode_SM) == CAN_Mode_SM) + { + /* ç¡çœ æ¨¡å¼ 1: ç¡çœ  0: 唤醒*/ + CANx->MOD|= (unsigned char)CAN_Mode_SM; + } + else + { + CANx->MOD&=~ (unsigned char)CAN_Mode_SM; + } + + if((CAN_InitStruct->CAN_Mode & CAN_Mode_LOM) == CAN_Mode_LOM) + { + /*åªå¬æ¨¡å¼ 1:åªå¬ 0:正常 */ + CANx->MOD|= (unsigned char)CAN_Mode_LOM; + } + else + { + CANx->MOD&=~ (unsigned char)CAN_Mode_LOM; + } + + if((CAN_InitStruct->CAN_Mode & CAN_Mode_AFM) == CAN_Mode_AFM) + { + /*å•æ»¤æ³¢æ¨¡å¼ 1:å• 0: åŒ*/ + CANx->MOD |= (unsigned char)CAN_Mode_AFM; + } + else + { + CANx->MOD&=~ (unsigned char)CAN_Mode_AFM; + } + + if((CAN_InitStruct->CAN_Mode & CAN_Mode_STM) == CAN_Mode_STM) + { + /*è‡ªæ£€æµ‹æ¨¡å¼ 1:自检测 0:正常 */ + CANx->MOD |= (unsigned char)CAN_Mode_STM; + } + else + { + CANx->MOD&=~ (unsigned char)CAN_Mode_STM; + } + + /* é…置时钟频率 */ + CANx->BTR0 = (( unsigned char )( unsigned char )CAN_InitStruct->CAN_Prescaler -1) | \ + (unsigned char)CAN_InitStruct->CAN_SJW << 6; + + CANx->BTR1 = ((unsigned char)CAN_InitStruct->CAN_BS1) | \ + ((unsigned char)CAN_InitStruct->CAN_BS2 << 4) | \ + ((unsigned char)CAN_InitStruct->CAN_SJW<<7); + + /* è¿›å…¥å·¥ä½œæ¨¡å¼ */ + set_start(CANx); + + /* 返回åˆå§‹åŒ–结果 */ + return InitStatus; +} + +void CAN_FilterInit(CAN_TypeDef* CANx, CAN_FilterInitTypeDef * CAN_FilterInitStruct) +{ + unsigned long rtr; + unsigned long fcase; + unsigned long ide; + unsigned long thisid, thisid1, thisid2; + unsigned long thismask, thismask1, thismask2; + unsigned long firstdata; + unsigned long datamask; + unsigned char CAN_FilterId0, CAN_FilterId1, CAN_FilterId2, CAN_FilterId3 ; + unsigned char CAN_FilterMaskId0, CAN_FilterMaskId1, CAN_FilterMaskId2, CAN_FilterMaskId3; + + thisid = CAN_FilterInitStruct->ID; + thismask = CAN_FilterInitStruct->IDMASK; + thisid1 = (CAN_FilterInitStruct->ID & 0xFFFF0000 )>>16; + thismask1 = (CAN_FilterInitStruct->IDMASK & 0xFFFF0000 )>>16; + thisid2 = (CAN_FilterInitStruct->ID & 0x0000FFFF ); + thismask2 = ( CAN_FilterInitStruct->IDMASK& 0x0000FFFF ); + rtr = CAN_FilterInitStruct->RTR; + ide = CAN_FilterInitStruct->IDE; + firstdata = CAN_FilterInitStruct->First_Data; + datamask = CAN_FilterInitStruct->Data_Mask; + fcase = CAN_FilterInitStruct->MODE; + + if(ide == 0)//标准帧 + { + if(fcase == 0)// 0- åŒæ»¤æ³¢å™¨æ¨¡å¼ + { + CAN_FilterId0 = thisid1>>3; + CAN_FilterMaskId0 = thismask1>>3; + CAN_FilterId1 = thisid1<<5 | firstdata>>4| rtr<<4; + CAN_FilterMaskId1 = thismask1<<4 | datamask>>4 ; + CAN_FilterId2 = thisid2 >> 3; + CAN_FilterMaskId2 = thismask2 >>3; + CAN_FilterId3 = firstdata & 0x0F | thisid2 <<5 | rtr<<4; + CAN_FilterMaskId3 = datamask <<4 ; + } + else if(fcase == 1)// 1-å•æ»¤æ³¢å™¨æ¨¡å¼ + { + CAN_FilterId0 = thisid>>3; + CAN_FilterMaskId0 = thismask>>3; + CAN_FilterId1 = thisid<<5 | rtr<<4; + CAN_FilterMaskId1 = thismask<<5 ; + CAN_FilterMaskId1 |= 0x0F ; + CAN_FilterId2 = 0x00; + CAN_FilterMaskId2 = 0xFF; + CAN_FilterId3 = 0x00; + CAN_FilterMaskId3 = 0xFF ; + } + } + else if(ide == 1)//扩展帧 + { + if(fcase == 0)// 0- åŒæ»¤æ³¢å™¨æ¨¡å¼ + { + CAN_FilterId0 = thisid1>>8; + CAN_FilterMaskId0 = thismask1>>8; + CAN_FilterId1 = thisid1 ; + CAN_FilterMaskId1 = thismask1 ; + CAN_FilterId2 = thisid2>>8; + CAN_FilterMaskId2 = thismask2>>8; + CAN_FilterId3 = thisid2 ; + CAN_FilterMaskId3 = thismask2 ; + } + else if(fcase == 1)// 1-å•æ»¤æ³¢å™¨æ¨¡å¼ + { + CAN_FilterId0 = thisid>>21; + CAN_FilterMaskId0 = thismask>>21; + CAN_FilterId1 = thisid>>13 ; + CAN_FilterMaskId1 = thismask>>13 ; + CAN_FilterId2 = thisid>>5; + CAN_FilterMaskId2 = thismask>>5; + CAN_FilterId3 = thisid<<3 | rtr<<2; + CAN_FilterMaskId3 = thismask<<3; + CAN_FilterMaskId3 |= 0x03; + } + } + + /* 进入å¤ä½æ¨¡å¼ */ + set_reset_mode(CANx); + + if(fcase == 1)// 1-å•æ»¤æ³¢å™¨æ¨¡å¼ + { + /*å•æ»¤æ³¢æ¨¡å¼ */ + CANx->MOD |= (unsigned char)CAN_Mode_AFM; + } + else if(fcase == 1)// 0- åŒæ»¤æ³¢å™¨æ¨¡å¼ + { + /*åŒæ»¤æ³¢æ¨¡å¼ */ + CANx->MOD &=(~ (unsigned char) CAN_Mode_AFM); + } + + CANx->IDE_RTR_DLC = CAN_FilterId0; + CANx->ID[0] = CAN_FilterId1; + CANx->ID[1] = CAN_FilterId2; + CANx->ID[2] = CAN_FilterId3; + CANx->ID[3] = CAN_FilterMaskId0; + CANx->BUF[0] = CAN_FilterMaskId1; + CANx->BUF[1] = CAN_FilterMaskId2; + CANx->BUF[2] = CAN_FilterMaskId3; + /* è¿›å…¥å·¥ä½œæ¨¡å¼ */ + set_start(CANx); +} + +unsigned char CAN_SetBps(CAN_TypeDef* CANx, Ls1c_CanBPS_t Bps) +{ + unsigned char InitStatus = CAN_InitStatus_Failed; + unsigned char CAN_Prescaler, CAN_BS1, CAN_BS2, CAN_SJW; + CAN_SJW = CAN_SJW_1tq; + /* 进入å¤ä½æ¨¡å¼ */ + InitStatus = set_reset_mode(CANx); + if( InitStatus == CAN_InitStatus_Failed) + return CAN_InitStatus_Failed; + + /* BaudRate= f(APB)/((1+BS1+BS2)(SJW*2*Prescaler))=126000000/[(1+7+2)*1*2*63]=100000=100K*/ + /* BPS PRE BS1 BS2 最低40K + 1M 9 4 2 + 800K 8 7 2 + 500K 9 11 2 + 250K 36 4 2 + 125K 36 11 2 + 100K 63 7 2 + 50K 63 16 3` + 40K 63 16 8 + */ + switch (Bps) + { + case LS1C_CAN1MBaud: + CAN_Prescaler = 9; + CAN_BS1 = CAN_BS1_4tq; + CAN_BS2 = CAN_BS2_2tq; + break; + case LS1C_CAN800kBaud: + CAN_Prescaler = 8; + CAN_BS1 = CAN_BS1_7tq; + CAN_BS2 = CAN_BS2_2tq; + break; + case LS1C_CAN500kBaud: + CAN_Prescaler = 9; + CAN_BS1 = CAN_BS1_11tq; + CAN_BS2 = CAN_BS2_2tq; + break; + case LS1C_CAN250kBaud: + CAN_Prescaler = 36; + CAN_BS1 = CAN_BS1_4tq; + CAN_BS2 = CAN_BS2_2tq; + break; + case LS1C_CAN125kBaud: + CAN_Prescaler = 36; + CAN_BS1 = CAN_BS1_11tq; + CAN_BS2 = CAN_BS2_2tq; + break; + case LS1C_CAN100kBaud: + CAN_Prescaler = 63; + CAN_BS1 = CAN_BS1_7tq; + CAN_BS2 = CAN_BS2_2tq; + break; + case LS1C_CAN50kBaud: + CAN_Prescaler = 63; + CAN_BS1 = CAN_BS1_16tq; + CAN_BS2 = CAN_BS2_3tq; + break; + case LS1C_CAN40kBaud: + CAN_Prescaler = 63; + CAN_BS1 = CAN_BS1_16tq; + CAN_BS2 = CAN_BS2_8tq; + break; + default: //100K + CAN_Prescaler = 63; + CAN_BS1 = CAN_BS1_7tq; + CAN_BS2 = CAN_BS2_2tq; + break; + } + /* é…置时钟频率 */ + CANx->BTR0 = (( unsigned char )CAN_Prescaler -1) | \ + (unsigned char)CAN_SJW << 6; + + CANx->BTR1 = ((unsigned char)CAN_BS1) | \ + ((unsigned char)CAN_BS2 << 4) | \ + ((unsigned char)CAN_SJW<<7); + + /* è¿›å…¥å·¥ä½œæ¨¡å¼ */ + set_start(CANx); + /* 返回åˆå§‹åŒ–结果 */ + return CAN_InitStatus_Failed; +} + + +unsigned char CAN_SetMode(CAN_TypeDef* CANx, unsigned char mode) +{ + unsigned char InitStatus = CAN_InitStatus_Failed; + unsigned long wait_ack = 0x00000000; + CAN_InitTypeDef CAN_InitStructure; + + /* 进入å¤ä½æ¨¡å¼ */ + InitStatus = set_reset_mode(CANx); + if( InitStatus == CAN_InitStatus_Failed) + return CAN_InitStatus_Failed; + + switch( mode ) + { + case 0://正常 + CANx->MOD &= ~(unsigned char)CAN_Mode_STM; + CANx->MOD &= ~(unsigned char)CAN_Mode_LOM; + break; + case 1://åªå¬ + CANx->MOD &= ~(unsigned char)CAN_Mode_STM; + CANx->MOD |= (unsigned char)CAN_Mode_LOM; + break; + case 2://回环 + CANx->MOD |= (unsigned char)CAN_Mode_STM; + CANx->MOD &= ~(unsigned char)CAN_Mode_LOM; + break; + case 3://åªå¬å›žçŽ¯ + CANx->MOD |= (unsigned char)CAN_Mode_STM; + CANx->MOD |= (unsigned char)CAN_Mode_LOM; + break; + } + /* è¿›å…¥å·¥ä½œæ¨¡å¼ */ + set_start(CANx); + + /* 返回åˆå§‹åŒ–结果 */ + return CAN_InitStatus_Failed; + } + +unsigned char CAN_Transmit(CAN_TypeDef* CANx, CanTxMsg* TxMessage) +{ + int i; + if (TxMessage->IDE == CAN_Id_Extended) + { + CANx->ID[0]= TxMessage ->ExtId>> 21; + CANx->ID[1]= TxMessage ->ExtId>> 13; + CANx->ID[2]= TxMessage ->ExtId>> 5; + CANx->ID[3]= TxMessage ->ExtId<<3; + CANx->IDE_RTR_DLC= (TxMessage ->IDE & 0x01) << 7 |\ + (TxMessage ->RTR & 0x01) << 6 |\ + (TxMessage ->DLC & 0x0F); + for( i=0;iDLC; i++) + { + CANx->BUF[i]= TxMessage->Data[i]; + } + } + else if (TxMessage->IDE ==CAN_Id_Standard) + { + CANx->ID[0]= TxMessage ->StdId>> 3; + CANx->ID[1]= TxMessage ->StdId<< 5; + CANx->IDE_RTR_DLC= (TxMessage ->IDE & 0x01) << 7 |\ + (TxMessage ->RTR & 0x01) << 6 |\ + (TxMessage ->DLC & 0x0F); + CANx->ID[2]= TxMessage ->Data[0]; + CANx->ID[3]= TxMessage ->Data[1]; + for( i=0;iDLC-2; i++) + { + CANx->BUF[i]= TxMessage->Data[i+2]; + } + } + CANx->CMR = CAN_CMR_TR ; +} + +void CAN_Receive(CAN_TypeDef* CANx, CanRxMsg* RxMessage) +{ + /* èŽ·å– IDE */ + RxMessage->IDE = (CANx->IDE_RTR_DLC & 0x80)>>7; + /* èŽ·å– RTR */ + RxMessage->RTR = (CANx->IDE_RTR_DLC & 0x40)>>4; + /* èŽ·å– DLC */ + RxMessage->DLC= (CANx->IDE_RTR_DLC & 0x0F); + if (RxMessage->IDE == CAN_Id_Standard) + { + RxMessage->StdId = CANx->ID[0]<<3 |CANx->ID[1]>>5 ; + /* 获å–æ•°æ® */ + RxMessage->Data[0] = (unsigned char)CANx->ID[2]; + RxMessage->Data[1] = (unsigned char)CANx->ID[3]; + RxMessage->Data[2] = (unsigned char)CANx->BUF[0]; + RxMessage->Data[3] = (unsigned char)CANx->BUF[1]; + RxMessage->Data[4] = (unsigned char)CANx->BUF[2]; + RxMessage->Data[5] = (unsigned char)CANx->BUF[3]; + RxMessage->Data[6] = (unsigned char)CANx->BUF[4]; + RxMessage->Data[7] = (unsigned char)CANx->BUF[5]; + } + else if (RxMessage->IDE == CAN_Id_Extended) + { + RxMessage->ExtId= CANx->ID[0]<<21 |CANx->ID[1]<<13|CANx->ID[2]<<5|CANx->ID[3]>>3 ; + /* 获å–æ•°æ® */ + RxMessage->Data[0] = (unsigned char)CANx->BUF[0]; + RxMessage->Data[1] = (unsigned char)CANx->BUF[1]; + RxMessage->Data[2] = (unsigned char)CANx->BUF[2]; + RxMessage->Data[3] = (unsigned char)CANx->BUF[3]; + RxMessage->Data[4] = (unsigned char)CANx->BUF[4]; + RxMessage->Data[5] = (unsigned char)CANx->BUF[5]; + RxMessage->Data[6] = (unsigned char)CANx->BUF[6]; + RxMessage->Data[7] = (unsigned char)CANx->BUF[7]; + } +} + diff --git a/bsp/ls1cdev/libraries/ls1c_can.h b/bsp/ls1cdev/libraries/ls1c_can.h new file mode 100644 index 0000000000000000000000000000000000000000..4e27a4b075c56da7c8d35b320bd1208025284396 --- /dev/null +++ b/bsp/ls1cdev/libraries/ls1c_can.h @@ -0,0 +1,227 @@ + +/* + * File : ls1c_can.h + * This file is part of RT-Thread RTOS + * COPYRIGHT (C) 2006 - 2018, RT-Thread Development Team + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Change Logs: (Pelican Mode) + * Date Author Notes + * 2018-01-06 sundm75 first version + */ + +#ifndef __OPENLOONGSON_CAN_H +#define __OPENLOONGSON_CAN_H + +#define CAN0 ( (CAN_TypeDef* )LS1C_REG_BASE_CAN0) +#define CAN1 ( (CAN_TypeDef* )LS1C_REG_BASE_CAN1) + +#define CAN_InitStatus_Failed ((unsigned char)0x00) /*!< CAN initialization failed */ +#define CAN_InitStatus_Success ((unsigned char)0x01) /*!< CAN initialization OK */ + +#define CAN_SJW_1tq ((unsigned char)0x00) /*!< 1 time quantum */ +#define CAN_SJW_2tq ((unsigned char)0x01) /*!< 2 time quantum */ +#define CAN_SJW_3tq ((unsigned char)0x02) /*!< 3 time quantum */ +#define CAN_SJW_4tq ((unsigned char)0x03) /*!< 4 time quantum */ + +#define CAN_BS1_1tq ((unsigned char)0x00) /*!< 1 time quantum */ +#define CAN_BS1_2tq ((unsigned char)0x01) /*!< 2 time quantum */ +#define CAN_BS1_3tq ((unsigned char)0x02) /*!< 3 time quantum */ +#define CAN_BS1_4tq ((unsigned char)0x03) /*!< 4 time quantum */ +#define CAN_BS1_5tq ((unsigned char)0x04) /*!< 5 time quantum */ +#define CAN_BS1_6tq ((unsigned char)0x05) /*!< 6 time quantum */ +#define CAN_BS1_7tq ((unsigned char)0x06) /*!< 7 time quantum */ +#define CAN_BS1_8tq ((unsigned char)0x07) /*!< 8 time quantum */ +#define CAN_BS1_9tq ((unsigned char)0x08) /*!< 9 time quantum */ +#define CAN_BS1_10tq ((unsigned char)0x09) /*!< 10 time quantum */ +#define CAN_BS1_11tq ((unsigned char)0x0A) /*!< 11 time quantum */ +#define CAN_BS1_12tq ((unsigned char)0x0B) /*!< 12 time quantum */ +#define CAN_BS1_13tq ((unsigned char)0x0C) /*!< 13 time quantum */ +#define CAN_BS1_14tq ((unsigned char)0x0D) /*!< 14 time quantum */ +#define CAN_BS1_15tq ((unsigned char)0x0E) /*!< 15 time quantum */ +#define CAN_BS1_16tq ((unsigned char)0x0F) /*!< 16 time quantum */ + +#define CAN_BS2_1tq ((unsigned char)0x00) /*!< 1 time quantum */ +#define CAN_BS2_2tq ((unsigned char)0x01) /*!< 2 time quantum */ +#define CAN_BS2_3tq ((unsigned char)0x02) /*!< 3 time quantum */ +#define CAN_BS2_4tq ((unsigned char)0x03) /*!< 4 time quantum */ +#define CAN_BS2_5tq ((unsigned char)0x04) /*!< 5 time quantum */ +#define CAN_BS2_6tq ((unsigned char)0x05) /*!< 6 time quantum */ +#define CAN_BS2_7tq ((unsigned char)0x06) /*!< 7 time quantum */ +#define CAN_BS2_8tq ((unsigned char)0x07) /*!< 8 time quantum */ + +#define CAN_Id_Standard 0 +#define CAN_Id_Extended 1 +#define CAN_RTR_DATA 0 +#define CAN_RTR_Remote 1 + +#define CAN_MODE_NORMAL 0 +#define CAN_MODE_LISEN 1 +#define CAN_MODE_LOOPBACK 2 +#define CAN_MODE_LOOPBACKANLISEN 3 + +/*!< CAN 控制状æ€å¯„存器 */ +/************************** CAN_MOD 寄存器ä½å®šä¹‰*******************************/ +#define CAN_Mode_RM ((unsigned char)0x01) /*!< å¤ä½æ¨¡å¼ */ +#define CAN_Mode_LOM ((unsigned char)0x02) /*!< åªå¬æ¨¡å¼ 1:åªå¬ 0:正常 */ +#define CAN_Mode_STM ((unsigned char)0x04) /*!< 正常工作模å¼1:自检测 0:正常 */ +#define CAN_Mode_AFM ((unsigned char)0x08) /*!< å•/åŒæ»¤æ³¢æ¨¡å¼ 1:å• 0: åŒ*/ +#define CAN_Mode_SM ((unsigned char)0x10) /*!< ç¡çœ æ¨¡å¼1: ç¡çœ  0: 唤醒 */ + +/************************** CAN_CMR 寄存器ä½å®šä¹‰*******************************/ + #define CAN_CMR_TR ((unsigned char)0x01) /*!< å‘é€è¯·æ±‚ 1: 当å‰ä¿¡æ¯è¢«å‘é€ 0: 空 */ + #define CAN_CMR_AT ((unsigned char)0x02) /*!< 中止å‘é€ 1: 等待å‘é€çš„ä¿¡æ¯å–消 0: 空缺 */ + #define CAN_CMR_RRB ((unsigned char)0x04) /*!< 释放接收缓冲器 1:释放 0: 无动作 */ + #define CAN_CMR_CDO ((unsigned char)0x08) /*!< 清除数æ®æº¢å‡º 1:清除 0: 无动作 */ +//#define CAN_CMR_GTS ((unsigned char)0x10) /*!< STD模å¼< ç¡çœ : 1:进入ç¡çœ  0: 唤醒 */ + #define CAN_CMR_SRR ((unsigned char)0x10) /*!< 自接收请求 1: 0: */ + #define CAN_CMR_EFF ((unsigned char)0x80) /*!< æ‰©å±•æ¨¡å¼ 1:扩展帧 0: 标准帧 */ + +/************************** CAN_SR 寄存器ä½å®šä¹‰********************************/ + #define CAN_SR_BBS ((unsigned char)0x01) /*!< 接收缓存器状æ€1: 满 0: 空 */ + #define CAN_SR_DOS ((unsigned char)0x02) /*!< æ•°æ®æº¢å‡ºçŠ¶æ€ 1: 溢出 0: 空缺 */ + #define CAN_SR_TBS ((unsigned char)0x04) /*!< å‘é€ç¼“存器状æ€1: 释放 0: é”定 */ + #define CAN_SR_TCS ((unsigned char)0x08) /*!< å‘é€å®Œæ¯•çŠ¶æ€1: 完毕 0: 未完毕 */ + #define CAN_SR_RS ((unsigned char)0x10) /*!< 接收状æ€1: 接收 0: 空闲 */ + #define CAN_SR_TS ((unsigned char)0x20) /*!< å‘é€çŠ¶æ€1: å‘é€ 0: 空闲*/ + #define CAN_SR_ES ((unsigned char)0x40) /*!< 出错状æ€1:出错 0: 正常 */ + #define CAN_SR_BS ((unsigned char)0x80) /*!< 总线状æ€1: 关闭 0: å¼€å¯ */ + +/************************** CAN_IR 中断寄存器ä½å®šä¹‰****************************/ + #define CAN_IR_RI ((unsigned char)0x01) /*!< 接收中断 */ + #define CAN_IR_TI ((unsigned char)0x02) /*!< å‘é€ä¸­æ–­ */ + #define CAN_IR_EI ((unsigned char)0x04) /*!< 错误中断 */ + #define CAN_IR_DOI ((unsigned char)0x08) /*!< æ•°æ®æº¢å‡ºä¸­æ–­ */ + #define CAN_IR_WUI ((unsigned char)0x10) /*!< 唤醒中断 */ + #define CAN_IR_EPI ((unsigned char)0x20) /*!< 错误消æžä¸­æ–­ */ + #define CAN_IR_ALI ((unsigned char)0x40) /*!< 仲è£ä¸¢å¤±ä¸­æ–­ */ + #define CAN_IR_BEI ((unsigned char)0x80) /*!< 总线错误中断 */ + +/************************* CAN_IER 中断使能寄存器ä½å®šä¹‰************************/ + #define CAN_IER_RIE ((unsigned char)0x01) /*!< 接收中断使能 */ + #define CAN_IER_TIE ((unsigned char)0x02) /*!< å‘é€ä¸­æ–­ä½¿èƒ½ */ + #define CAN_IER_EIE ((unsigned char)0x04) /*!< 错误中断使能 */ + #define CAN_IER_DOIE ((unsigned char)0x08) /*!< æ•°æ®æº¢å‡ºä¸­æ–­ä½¿èƒ½ */ + #define CAN_IER_WUIE ((unsigned char)0x10) /*!< 唤醒中断使能 */ + #define CAN_IER_EPIE ((unsigned char)0x20) /*!< 错误消æžä¸­æ–­ä½¿èƒ½ */ + #define CAN_IER_ALIE ((unsigned char)0x40) /*!< 仲è£ä¸¢å¤±ä¸­æ–­ä½¿èƒ½ */ + #define CAN_IER_BEIE ((unsigned char)0x80) /*!< 总线错误中断使能 */ + +typedef enum +{ + LS1C_CAN1MBaud=0, // 1 MBit/sec + LS1C_CAN800kBaud, // 800 kBit/sec + LS1C_CAN500kBaud, // 500 kBit/sec + LS1C_CAN250kBaud, // 250 kBit/sec + LS1C_CAN125kBaud, // 125 kBit/sec + LS1C_CAN100kBaud, // 100 kBit/sec + LS1C_CAN50kBaud, // 50 kBit/sec + LS1C_CAN40kBaud, // 40 kBit/sec +}Ls1c_CanBPS_t; + +typedef struct +{ + unsigned char MOD; + unsigned char CMR; + unsigned char SR; + unsigned char IR; + unsigned char IER; + unsigned char reserved0; + unsigned char BTR0; + unsigned char BTR1; + unsigned char OCR; + unsigned char reserved[2]; + unsigned char ALC; + unsigned char ECC ; + unsigned char EMLR; + unsigned char RXERR; + unsigned char TXERR; + unsigned char IDE_RTR_DLC; + unsigned char ID[4]; + unsigned char BUF[8]; + unsigned char RMCR; + unsigned char CDR; +} CAN_TypeDef; + +typedef struct +{ + unsigned char CAN_Prescaler; /* 波特率分频系数1 to 31. */ + unsigned char CAN_Mode; /*0x10:ç¡çœ 0x08:å•,åŒæ»¤æ³¢ 0x40:正常工作0x20:åªå¬ 0x01:å¤ä½*/ + unsigned char CAN_SJW; /*åŒæ­¥è·³è½¬å®½åº¦ */ + unsigned char CAN_BS1; /*时间段1计数值*/ + unsigned char CAN_BS2; /*时间段2计数值*/ + +} CAN_InitTypeDef; + +typedef struct +{ + unsigned char IDE; /*0: 使用标准标识符1: 使用扩展标识符*/ + unsigned char RTR; /*0: æ•°æ®å¸§ 1: 远程帧*/ + unsigned char MODE; /* 0- åŒæ»¤æ³¢å™¨æ¨¡å¼;1-å•æ»¤æ³¢å™¨æ¨¡å¼*/ + unsigned long First_Data; /*åŒæ»¤æ³¢å™¨æ¨¡å¼ä¸‹ä¿¡æ¯ç¬¬ä¸€ä¸ªæ•°æ®å­—节*/ + unsigned long Data_Mask; /*åŒæ»¤æ³¢å™¨æ¨¡å¼ä¸‹ä¿¡æ¯ç¬¬ä¸€ä¸ªæ•°æ®å­—节å±è”½*/ + unsigned long ID; /*验收代ç */ + /* + åŒæ»¤æ³¢å™¨- 扩展帧: 2个滤波器的å‰16ä½,分别放在ID çš„å‰16ä½å’Œ IDçš„åŽ16ä½. + åŒæ»¤æ³¢å™¨- 标准帧: 2个滤波器的11ä½,分别放在ID çš„å‰16ä½å’Œ IDçš„åŽ16ä½,第1个滤波器åŒæ—¶ä½¿ç”¨First_Dataå’ŒData_Mask + å•æ»¤æ³¢å™¨- 扩展帧: 使用29ä½, 放在ID çš„åŽ29ä½. + å•æ»¤æ³¢å™¨- 标准帧: 使用11ä½, 放在ID çš„åŽ11ä½. + */ + unsigned long IDMASK; /*验收å±è”½*/ +} CAN_FilterInitTypeDef; + +typedef struct +{ + unsigned long StdId; /* 11ä½ID*/ + unsigned long ExtId; /*29ä½ID**/ + unsigned char IDE; /*IDE: 标识符选择 + 该ä½å†³å®šå‘é€é‚®ç®±ä¸­æŠ¥æ–‡ä½¿ç”¨çš„标识符类型 + 0: 使用标准标识符 + 1: 使用扩展标识符*/ + unsigned char RTR; /*远程å‘é€è¯·æ±‚ + 0: æ•°æ®å¸§ + 1: 远程帧*/ + unsigned char DLC; /*æ•°æ®å¸§é•¿åº¦*/ + unsigned char Data[8]; /*8字节数æ®*/ +} CanRxMsg; + +typedef struct +{ + unsigned long StdId; /* 11ä½ID*/ + unsigned long ExtId; /*29ä½ID**/ + unsigned char IDE; /*IDE: 标识符选择 + 该ä½å†³å®šå‘é€é‚®ç®±ä¸­æŠ¥æ–‡ä½¿ç”¨çš„标识符类型 + 0: 使用标准标识符 + 1: 使用扩展标识符*/ + unsigned char RTR; /*远程å‘é€è¯·æ±‚ + 0: æ•°æ®å¸§ + 1: 远程帧*/ + unsigned char DLC; /*æ•°æ®å¸§é•¿åº¦*/ + unsigned char Data[8]; /*8字节数æ®*/ +} CanTxMsg; + +unsigned char CAN_Init(CAN_TypeDef* CANx, CAN_InitTypeDef* CAN_InitStruct); +unsigned char CAN_SetBps(CAN_TypeDef* CANx, Ls1c_CanBPS_t Bps); +unsigned char CAN_SetMode(CAN_TypeDef* CANx, unsigned char mode); +void CAN_FilterInit(CAN_TypeDef* CANx, CAN_FilterInitTypeDef* CAN_FilterInitStruct); +unsigned char CAN_Transmit(CAN_TypeDef* CANx, CanTxMsg* TxMessage); +void CAN_Receive(CAN_TypeDef* CANx, CanRxMsg* RxMessage); + +unsigned char set_reset_mode(CAN_TypeDef* CANx); +unsigned char set_start(CAN_TypeDef* CANx); + +#endif + diff --git a/bsp/ls1cdev/libraries/ls1c_pin.c b/bsp/ls1cdev/libraries/ls1c_pin.c index 2dd71d79b1e01c8a3fb19f6223b1c160ea07a669..15b4157b1548f38155406a3e63250da0648c4210 100644 --- a/bsp/ls1cdev/libraries/ls1c_pin.c +++ b/bsp/ls1cdev/libraries/ls1c_pin.c @@ -42,6 +42,15 @@ void pin_set_remap(unsigned int gpio, pin_remap_t remap) volatile unsigned int *reg = NULL; // ¸´ÓüĴæÆ÷ unsigned int port = GPIO_GET_PORT(gpio); unsigned int pin = GPIO_GET_PIN(gpio); + int i; + + /*Ö¸¶¨È«²¿pin¸´ÓÃΪ0*/ + for(i =0; i <=4; i++) + { + reg = (volatile unsigned int *)((LS1C_CBUS_FIRST0)+((port)*0x04)+((i)*0x10)); + // ÖÃ0 + reg_clr_one_bit(reg, pin); + } switch (port) { diff --git a/bsp/ls1cdev/libraries/ls1c_pin.h b/bsp/ls1cdev/libraries/ls1c_pin.h index ca8ef31585a2238d3969fd36f015ecf17cb81471..c483f5659aff04a5b1bc4b85004ec34b3a89b102 100644 --- a/bsp/ls1cdev/libraries/ls1c_pin.h +++ b/bsp/ls1cdev/libraries/ls1c_pin.h @@ -20,6 +20,7 @@ typedef enum PIN_REMAP_THIRD, // µÚÈý¸´Óà PIN_REMAP_FOURTH, // µÚËĸ´Óà PIN_REMAP_FIFTH, // µÚÎ帴Óà + PIN_REMAP_DEFAULT, //ȱʡ¸´Óà }pin_remap_t; diff --git a/bsp/ls1cdev/libraries/ls1c_regs.h b/bsp/ls1cdev/libraries/ls1c_regs.h index 9d6c21dea66ac55387e802c8bc34c40926eb5fd0..630b45ccbe45945e854f3163ad5e3fdb492dd063 100644 --- a/bsp/ls1cdev/libraries/ls1c_regs.h +++ b/bsp/ls1cdev/libraries/ls1c_regs.h @@ -1,4 +1,4 @@ -// Áúо1cÍâÉè¼Ä´æÆ÷ +// 龙芯1c外设寄存器 #ifndef __OPENLOONGSON_LS1C_REGS_H @@ -7,12 +7,12 @@ -// ʱÖÓÏà¹Ø¼Ä´æÆ÷µØÖ· +// æ—¶é’Ÿç›¸å…³å¯„å­˜å™¨åœ°å€ #define LS1C_START_FREQ (0xbfe78030) #define LS1C_CLK_DIV_PARAM (0xbfe78034) -// gpioÏà¹Ø¼Ä´æÆ÷µØÖ· +// gpioç›¸å…³å¯„å­˜å™¨åœ°å€ #define LS1C_GPIO_CFG0 (0xbfd010c0) #define LS1C_GPIO_EN0 (0xbfd010d0) #define LS1C_GPIO_IN0 (0xbfd010e0) @@ -35,7 +35,7 @@ -// ¸´ÓÃÏà¹Ø¼Ä´æÆ÷ +// å¤ç”¨ç›¸å…³å¯„存器 #define LS1C_CBUS_FIRST0 (0xbfd011c0) #define LS1C_CBUS_SECOND0 (0xbfd011d0) #define LS1C_CBUS_THIRD0 (0xbfd011e0) @@ -61,20 +61,22 @@ #define LS1C_CBUS_FIFTH3 (0xbfd0120c) -// PWM¼Ä´æÆ÷Æ«ÒÆ +// PWM寄存器å移 #define LS1C_PWM_CNTR (0x0) #define LS1C_PWM_HRC (0x4) #define LS1C_PWM_LRC (0x8) #define LS1C_PWM_CTRL (0xC) -// PWM»ùµØÖ· +// PWMåŸºåœ°å€ #define LS1C_REG_BASE_PWM0 (0xbfe5c000) #define LS1C_REG_BASE_PWM1 (0xbfe5c010) #define LS1C_REG_BASE_PWM2 (0xbfe5c020) #define LS1C_REG_BASE_PWM3 (0xbfe5c030) +//CANåŸºåœ°å€ +#define LS1C_REG_BASE_CAN0 (0xbfe50000) +#define LS1C_REG_BASE_CAN1 (0xbfe54000) - -// ÖжÏÅäÖüĴæÆ÷ +// 中断é…置寄存器 #define LS1C_INT0_SR (0xbfd01040) #define LS1C_INT0_EN (0xbfd01044) #define LS1C_INT0_SET (0xbfd01048) @@ -111,18 +113,18 @@ #define LS1C_INT4_EDGE (0xbfd010b4) -// I2C¼Ä´æÆ÷ +// I2C寄存器 #define LS1C_I2C0_BASE (0xbfe58000) #define LS1C_I2C1_BASE (0xbfe68000) #define LS1C_I2C2_BASE (0xbfe70000) -// SPI¼Ä´æÆ÷ +// SPI寄存器 #define LS1C_SPI0_BASE (0xbfe80000) #define LS1C_SPI1_BASE (0xbfec0000) -// ´®¿Ú¼Ä´æÆ÷ +// 串å£å¯„存器 #define LS1C_UART0_BASE (0xbfe40000) #define LS1C_UART1_BASE (0xbfe44000) #define LS1C_UART2_BASE (0xbfe48000) diff --git a/bsp/ls1cdev/libraries/ls1c_spi.c b/bsp/ls1cdev/libraries/ls1c_spi.c index 7da50e1c3739c83097e5fd1850f2cd49d4a41f5d..e3df729064315e647dc6289ebf0eed916f69ed4b 100644 --- a/bsp/ls1cdev/libraries/ls1c_spi.c +++ b/bsp/ls1cdev/libraries/ls1c_spi.c @@ -19,10 +19,10 @@ * * Change Logs: * Date Author Notes - * 2017-10-23 ÇÚΪ±¾ first version + * 2017-10-23 勤为本 first version */ -// Ó²¼þspi½Ó¿ÚÔ´Îļþ +// 硬件spi接å£æºæ–‡ä»¶ #include @@ -35,8 +35,8 @@ /* - * »ñÈ¡Ö¸¶¨SPIÄ£¿éµÄ»ùµØÖ· - * @SPIx SPIÄ£¿éµÄ±àºÅ + * 获å–指定SPI模å—çš„åŸºåœ°å€ + * @SPIx SPI模å—çš„ç¼–å· */ inline void *ls1c_spi_get_base(unsigned char SPIx) { @@ -62,8 +62,8 @@ inline void *ls1c_spi_get_base(unsigned char SPIx) /* - * ´òÓ¡Ö¸¶¨SPIÄ£¿éµÄËùÓмĴæÆ÷µÄÖµ - * @spi_base »ùµØÖ· + * 打å°æŒ‡å®šSPI模å—的所有寄存器的值 + * @spi_base åŸºåœ°å€ */ void ls1c_spi_print_all_regs_info(void *spi_base) { @@ -81,9 +81,9 @@ void ls1c_spi_print_all_regs_info(void *spi_base) /* - * ¸ù¾ÝSPIʱÖÓƵÂʼÆËã·ÖƵϵÊý - * @max_speed_hz SPI×î´óͨÐÅËÙ¶È - * @ret ·ÖƵϵÊý + * æ ¹æ®SPI时钟频率计算分频系数 + * @max_speed_hz SPI最大通信速度 + * @ret 分频系数 */ unsigned int ls1c_spi_get_div(unsigned int max_speed_hz) { @@ -145,28 +145,28 @@ unsigned int ls1c_spi_get_div(unsigned int max_speed_hz) /* - * ÉèÖÃʱÖÓ - * @spi_base »ùµØÖ· - * @max_hz ×î´óƵÂÊ£¬µ¥Î»hz + * 设置时钟 + * @spi_base åŸºåœ°å€ + * @max_hz 最大频率,å•ä½hz */ void ls1c_spi_set_clock(void *spi_base, unsigned long max_hz) { unsigned int div = 0; unsigned char val = 0; - // »ñÈ¡·ÖƵϵÊý + // 获å–分频系数 div = ls1c_spi_get_div(max_hz); - // ÉèÖÃspr + // 设置spr val = reg_read_8(spi_base + LS1C_SPI_SPCR_OFFSET); - val &= (~LS1C_SPI_SPCR_SPR_MASK); // sprÇåÁã - val |= (div & LS1C_SPI_SPCR_SPR_MASK); // ÉèÖÃеÄspr + val &= (~LS1C_SPI_SPCR_SPR_MASK); // spr清零 + val |= (div & LS1C_SPI_SPCR_SPR_MASK); // 设置新的spr reg_write_8(val, spi_base + LS1C_SPI_SPCR_OFFSET); - // ÉèÖÃspre + // 设置spre val = reg_read_8(spi_base + LS1C_SPI_SPER_OFFSET); - val &= (~LS1C_SPI_SPER_SPRE_MASK); // spreÇåÁã - val |= ((div >> 2) & LS1C_SPI_SPER_SPRE_MASK); // ÉèÖÃеÄspre + val &= (~LS1C_SPI_SPER_SPRE_MASK); // spre清零 + val |= ((div >> 2) & LS1C_SPI_SPER_SPRE_MASK); // 设置新的spre reg_write_8(val, spi_base + LS1C_SPI_SPER_OFFSET); return ; @@ -174,10 +174,10 @@ void ls1c_spi_set_clock(void *spi_base, unsigned long max_hz) /* - * ÉèÖÃͨÐÅģʽ(ʱÖÓ¼«ÐÔºÍÏàλ) - * @spi_base »ùµØÖ· - * @cpol ʱÖÓ¼«ÐÔ - * @cpha ʱÖÓÏàλ + * 设置通信模å¼(时钟æžæ€§å’Œç›¸ä½) + * @spi_base åŸºåœ°å€ + * @cpol 时钟æžæ€§ + * @cpha æ—¶é’Ÿç›¸ä½ */ void ls1c_spi_set_mode(void *spi_base, unsigned char cpol, unsigned char cpha) { @@ -185,13 +185,13 @@ void ls1c_spi_set_mode(void *spi_base, unsigned char cpol, unsigned char cpha) val = reg_read_8(spi_base + LS1C_SPI_SPCR_OFFSET); - // ÉèÖÃʱÖÓ¼«ÐÔ--cpol - val &= (~LS1C_SPI_SPCR_CPOL_MASK); // cpolÇå0 - val |= (cpol << LS1C_SPI_SPCR_CPOL_BIT); // дÈëеÄcpol + // 设置时钟æžæ€§--cpol + val &= (~LS1C_SPI_SPCR_CPOL_MASK); // cpol清0 + val |= (cpol << LS1C_SPI_SPCR_CPOL_BIT); // 写入新的cpol - // ÉèÖÃʱÖÓÏàλ--cpha - val &= (~LS1C_SPI_SPCR_CPHA_MASK); // cphaÇå0 - val |= (cpha << LS1C_SPI_SPCR_CPHA_BIT); // дÈëеÄcpha + // 设置时钟相ä½--cpha + val &= (~LS1C_SPI_SPCR_CPHA_MASK); // cpha清0 + val |= (cpha << LS1C_SPI_SPCR_CPHA_BIT); // 写入新的cpha reg_write_8(val, spi_base + LS1C_SPI_SPCR_OFFSET); @@ -200,23 +200,24 @@ void ls1c_spi_set_mode(void *spi_base, unsigned char cpol, unsigned char cpha) /* - * ÉèÖÃÖ¸¶¨Æ¬Ñ¡ÎªÖ¸¶¨×´Ì¬ - * @spi_base »ùµØÖ· - * @cs Ƭѡ - * @new_status ƬѡÒý½ÅµÄÐÂ״̬£¬È¡ÖµÎª0»ò1£¬¼´¸ßµçƽ»òµÍµçƽ + * è®¾ç½®æŒ‡å®šç‰‡é€‰ä¸ºæŒ‡å®šçŠ¶æ€ + * @spi_base åŸºåœ°å€ + * @cs 片选 + * @new_status 片选引脚的新状æ€ï¼Œå–值为0或1,å³é«˜ç”µå¹³æˆ–低电平 */ void ls1c_spi_set_cs(void *spi_base, unsigned char cs, int new_status) { unsigned char val = 0; - val = 0xf0 | (0x01 << cs); // È«²¿csn=1£¬Ö¸¶¨µÄcsen=1 + val = reg_read_8(spi_base + LS1C_SPI_SFC_SOFTCS_OFFSET); + val |= 0x01 << cs ; //对应的csen=1 if (new_status) // cs = 1 { - val |= (0x10 << cs); // Ö¸¶¨csn=1 + val |= (0x10 << cs); // 指定csn=1 } else // cs = 0 { - val &= ~(0x10 << cs); // Ö¸¶¨csn=0 + val &= ~(0x10 << cs); // 指定csn=0 } reg_write_8(val, spi_base + LS1C_SPI_SFC_SOFTCS_OFFSET); @@ -225,8 +226,8 @@ void ls1c_spi_set_cs(void *spi_base, unsigned char cs, int new_status) /* - * µÈ´ýÊÕ·¢Íê³É - * @spi_base »ùµØÖ· + * 等待收å‘å®Œæˆ + * @spi_base åŸºåœ°å€ */ inline void ls1c_spi_wait_txrx_done(void *spi_base) { @@ -243,25 +244,25 @@ inline void ls1c_spi_wait_txrx_done(void *spi_base) /* - * ÇåÖжϺͱê־λ - * @spi_base »ùµØÖ· + * æ¸…ä¸­æ–­å’Œæ ‡å¿—ä½ + * @spi_base åŸºåœ°å€ */ inline void ls1c_spi_clear(void *spi_base) { unsigned char val = 0; - // ÇåÖÐ¶Ï + // 清中断 val = reg_read_8(spi_base + LS1C_SPI_SPSR_OFFSET); val |= LS1C_SPI_SPSR_SPIF_MASK; reg_write_8(val, spi_base + LS1C_SPI_SPSR_OFFSET); - // ÇåÒç³ö±ê־λ(Write-Collision Clear) + // 清溢出标志ä½(Write-Collision Clear) val = reg_read_8(spi_base + LS1C_SPI_SPSR_OFFSET); if (LS1C_SPI_SPSR_WCOL_MASK & val) { - rt_kprintf("[%s] clear register SPSR's wcol!\r\n"); // ÊÖ²áºÍlinuxÔ´ÂëÖв»Ò»Ñù£¬¼Ó¸ö´òÓ¡¿´¿´ - reg_write_8(val & ~LS1C_SPI_SPSR_WCOL_MASK, spi_base + LS1C_SPI_SPSR_OFFSET); // д0£¬linuxÔ´ÂëÖÐÊÇд0 -// reg_write_8(val | LS1C_SPI_SPSR_WCOL_MASK, spi_base + LS1C_SPI_SPSR_OFFSET); // д1£¬°´ÕÕ1cÊֲᣬӦ¸Ãд1 + rt_kprintf("[%s] clear register SPSR's wcol!\r\n"); // 手册和linuxæºç ä¸­ä¸ä¸€æ ·ï¼ŒåŠ ä¸ªæ‰“å°çœ‹çœ‹ + reg_write_8(val & ~LS1C_SPI_SPSR_WCOL_MASK, spi_base + LS1C_SPI_SPSR_OFFSET); // 写0,linuxæºç ä¸­æ˜¯å†™0 +// reg_write_8(val | LS1C_SPI_SPSR_WCOL_MASK, spi_base + LS1C_SPI_SPSR_OFFSET); // 写1,按照1c手册,应该写1 } return ; @@ -270,23 +271,23 @@ inline void ls1c_spi_clear(void *spi_base) /* - * ͨ¹ýÖ¸¶¨SPI·¢ËͽÓÊÕÒ»¸ö×Ö½Ú - * ×¢Ò⣬ÔÚ¶àÈÎÎñµÄϵͳÖУ¬´Ëº¯ÊýÐèÒª»¥³â¡£ - * ¼´±£Ö¤ÔÚºÍij¸ö´ÓÉ豸ÊÕ·¢Ä³¸ö×ֽڵĹý³ÌÖУ¬²»Äܱ»Çл»µ½ÆäËüÈÎÎñͬʱÓëÁíÍâµÄÔÚͬһ¸öSPI×ÜÏßÉϵĴÓÉ豸ͨÐÅ - * ÒòΪÁúо1cµÄÿ·SPIÉÏ¿ÉÄܽÓÓв»Í¬µÄ´ÓÉ豸£¬Í¨ÐÅƵÂÊ¡¢Ä£Ê½µÈ¿ÉÄܲ»Í¬ - * @spi_base »ùµØÖ· - * @tx_ch ´ý·¢Ë͵ÄÊý¾Ý - * @ret ÊÕµ½µÄÊý¾Ý + * 通过指定SPIå‘é€æŽ¥æ”¶ä¸€ä¸ªå­—节 + * 注æ„,在多任务的系统中,此函数需è¦äº’斥。 + * å³ä¿è¯åœ¨å’ŒæŸä¸ªä»Žè®¾å¤‡æ”¶å‘æŸä¸ªå­—节的过程中,ä¸èƒ½è¢«åˆ‡æ¢åˆ°å…¶å®ƒä»»åŠ¡åŒæ—¶ä¸Žå¦å¤–的在åŒä¸€ä¸ªSPI总线上的从设备通信 + * 因为龙芯1cçš„æ¯è·¯SPI上å¯èƒ½æŽ¥æœ‰ä¸åŒçš„从设备,通信频率ã€æ¨¡å¼ç­‰å¯èƒ½ä¸åŒ + * @spi_base åŸºåœ°å€ + * @tx_ch å¾…å‘é€çš„æ•°æ® + * @ret æ”¶åˆ°çš„æ•°æ® */ unsigned char ls1c_spi_txrx_byte(void *spi_base, unsigned char tx_ch) { unsigned char rx_ch = 0; - // ÊÕ·¢Êý¾Ý - reg_write_8(tx_ch, spi_base + LS1C_SPI_TxFIFO_OFFSET); // ¿ªÊ¼·¢ËÍ - ls1c_spi_wait_txrx_done(spi_base); // µÈ´ýÊÕ·¢Íê³É - rx_ch = reg_read_8(spi_base + LS1C_SPI_RxFIFO_OFFSET); // ¶ÁÈ¡ÊÕµ½µÄÊý¾Ý - ls1c_spi_clear(spi_base); // ÇåÖжϺͱê־λ + // 收å‘æ•°æ® + reg_write_8(tx_ch, spi_base + LS1C_SPI_TxFIFO_OFFSET); // 开始å‘é€ + ls1c_spi_wait_txrx_done(spi_base); // 等待收å‘å®Œæˆ + rx_ch = reg_read_8(spi_base + LS1C_SPI_RxFIFO_OFFSET); // 读å–æ”¶åˆ°çš„æ•°æ® + ls1c_spi_clear(spi_base); // æ¸…ä¸­æ–­å’Œæ ‡å¿—ä½ return rx_ch; } diff --git a/bsp/ls1cdev/rtconfig.h b/bsp/ls1cdev/rtconfig.h index 117282ded02a6ee94a8b3072e08557fa71e4a753..5850d269a59b350304b412e722d4230f824806f2 100644 --- a/bsp/ls1cdev/rtconfig.h +++ b/bsp/ls1cdev/rtconfig.h @@ -1,243 +1,260 @@ -#ifndef __RTTHREAD_CFG_H__ -#define __RTTHREAD_CFG_H__ - -// - -// -#define RT_NAME_MAX 10 -// -#define RT_ALIGN_SIZE 8 -// -// 8 -// 32 -// 256 -// -#define RT_THREAD_PRIORITY_MAX 32 -// -#define RT_TICK_PER_SECOND 1000 -//
+#ifndef RT_CONFIG_H__ +#define RT_CONFIG_H__ + +/* Automatically generated file; DO NOT EDIT. */ +/* RT-Thread Configuration */ + +/* RT-Thread Kernel */ + +#define RT_NAME_MAX 10 +#define RT_ALIGN_SIZE 8 +/* RT_THREAD_PRIORITY_8 is not set */ +#define RT_THREAD_PRIORITY_32 +/* RT_THREAD_PRIORITY_256 is not set */ +#define RT_THREAD_PRIORITY_MAX 32 +#define RT_TICK_PER_SECOND 1000 #define RT_DEBUG -// -// #define RT_THREAD_DEBUG -// #define RT_USING_OVERFLOW_CHECK -// -#define RT_USING_INTERRUPT_INFO -// -#define IDLE_THREAD_STACK_SIZE 1024 -//
- -// +#define RT_DEBUG_INIT 0 +#define RT_DEBUG_THREAD 0 #define RT_USING_HOOK -//
-// #define RT_USING_TIMER_SOFT -// -#define RT_TIMER_THREAD_PRIO 4 -// -#define RT_TIMER_THREAD_STACK_SIZE 512 -// -#define RT_TIMER_TICK_PER_SECOND 10 -//
- -//
-// +#define IDLE_THREAD_STACK_SIZE 1024 +/* RT_USING_TIMER_SOFT is not set */ + +/* Inter-Thread communication */ + #define RT_USING_SEMAPHORE -// #define RT_USING_MUTEX -// #define RT_USING_EVENT -// #define RT_USING_MAILBOX -// #define RT_USING_MESSAGEQUEUE -//
+/* RT_USING_SIGNALS is not set */ + +/* Memory Management */ -//
-// #define RT_USING_MEMPOOL -// #define RT_USING_MEMHEAP -// -#define RT_USING_HEAP -// +/* RT_USING_NOHEAP is not set */ #define RT_USING_SMALL_MEM -// -// #define RT_USING_SLAB -//
- -//
-#define RT_USING_DEVICE -// -#define RT_USING_UART -// -#define RT_USING_UART2 -// -#define RT_UART_RX_BUFFER_SIZE 64 -//
+/* RT_USING_SLAB is not set */ +/* RT_USING_MEMHEAP_AS_HEAP is not set */ +/* RT_USING_MEMTRACE is not set */ +#define RT_USING_HEAP -#define RT_USING_FPU +/* Kernel Device Object */ -//
+#define RT_USING_DEVICE +#define RT_USING_INTERRUPT_INFO #define RT_USING_CONSOLE -// -#define RT_CONSOLEBUF_SIZE 128 -// -#define RT_CONSOLE_DEVICE_NAME "uart2" -//
+#define RT_CONSOLEBUF_SIZE 128 +#define RT_CONSOLE_DEVICE_NAME "uart2" +/* RT_USING_MODULE is not set */ + +/* RT-Thread Components */ -// #define RT_USING_COMPONENTS_INIT -//
+/* RT_USING_USER_MAIN is not set */ + +/* C++ features */ + +/* RT_USING_CPLUSPLUS is not set */ + +/* Command shell */ + #define RT_USING_FINSH -// +#define FINSH_THREAD_NAME "tshell" +#define FINSH_USING_HISTORY +#define FINSH_HISTORY_LINES 5 #define FINSH_USING_SYMTAB -// #define FINSH_USING_DESCRIPTION -// -#define FINSH_THREAD_STACK_SIZE 4096 -// +#define FINSH_THREAD_PRIORITY 20 +#define FINSH_THREAD_STACK_SIZE 4096 +#define FINSH_CMD_SIZE 80 +/* FINSH_USING_AUTH is not set */ #define FINSH_USING_MSH -// #define FINSH_USING_MSH_DEFAULT -//
+/* FINSH_USING_MSH_ONLY is not set */ + +/* Device virtual file system */ + +#define RT_USING_DFS +#define DFS_USING_WORKDIR +#define DFS_FILESYSTEMS_MAX 2 +#define DFS_FILESYSTEM_TYPES_MAX 2 +#define DFS_FD_MAX 4 +#define RT_USING_DFS_ELMFAT + +/* elm-chan's FatFs, Generic FAT Filesystem Module */ + +#define RT_DFS_ELM_CODE_PAGE 936 +#define RT_DFS_ELM_WORD_ACCESS +#define RT_DFS_ELM_USE_LFN_0 +/* RT_DFS_ELM_USE_LFN_1 is not set */ +/* RT_DFS_ELM_USE_LFN_2 is not set */ +/* RT_DFS_ELM_USE_LFN_3 is not set */ +#define RT_DFS_ELM_USE_LFN 0 +#define RT_DFS_ELM_MAX_LFN 64 +#define RT_DFS_ELM_DRIVES 2 +#define RT_DFS_ELM_MAX_SECTOR_SIZE 512 +/* RT_DFS_ELM_USE_ERASE is not set */ +#define RT_DFS_ELM_REENTRANT +/* RT_USING_DFS_DEVFS is not set */ +/* RT_USING_DFS_NET is not set */ +/* RT_USING_DFS_ROMFS is not set */ +/* RT_USING_DFS_RAMFS is not set */ +/* RT_USING_DFS_UFFS is not set */ +/* RT_USING_DFS_JFFS2 is not set */ +/* RT_USING_DFS_NFS is not set */ + +/* Device Drivers */ + +#define RT_USING_DEVICE_IPC +#define RT_USING_SERIAL +#define RT_USING_CAN +#define RT_CAN_USING_HDR +/* RT_USING_HWTIMER is not set */ +/* RT_USING_CPUTIME is not set */ +#define RT_USING_I2C +#define RT_USING_I2C_BITOPS +#define RT_USING_PIN +/* RT_USING_MTD_NOR is not set */ +/* RT_USING_MTD_NAND is not set */ +/* RT_USING_RTC is not set */ +/* RT_USING_SDIO is not set */ +#define RT_USING_SPI +#define RT_USING_SPI_MSD +/* RT_USING_SFUD is not set */ +/* RT_USING_W25QXX is not set */ +/* RT_USING_GD is not set */ +/* RT_USING_ENC28J60 is not set */ +/* RT_USING_SPI_WIFI is not set */ +/* RT_USING_WDT is not set */ +/* RT_USING_WIFI is not set */ + +/* Using USB */ + +/* RT_USING_USB_HOST is not set */ +/* RT_USING_USB_DEVICE is not set */ + +/* POSIX layer and C standard library */ -//
#define RT_USING_LIBC -// #define RT_USING_PTHREADS -//
- -//
-// #define RT_USING_DFS -// -// #define DFS_USING_WORKDIR -// -#define DFS_FILESYSTEMS_MAX 2 -// -#define DFS_FD_MAX 4 -// -#define RT_USING_DFS_ELMFAT -// -// 1 -// 2 -// -#define RT_DFS_ELM_USE_LFN 1 -// -#define RT_DFS_ELM_MAX_LFN 64 -// -// #define RT_USING_DFS_YAFFS2 -// -// #define RT_USING_DFS_UFFS -// -// #define RT_USING_DFS_DEVFS -// -// #define RT_USING_DFS_NFS -// -#define RT_NFS_HOST_EXPORT "192.168.1.254:/" -//
- -//
+/* RT_USING_POSIX is not set */ +/* HAVE_SYS_SIGNALS is not set */ + +/* Network stack */ + +/* light weight TCP/IP stack */ + #define RT_USING_LWIP -#define RT_USING_GMAC_INT_MODE #define RT_USING_LWIP141 -//#define RT_LWIP_DEBUG - -// -#define RT_LWIP_ICMP -// +/* RT_USING_LWIP202 is not set */ #define RT_LWIP_IGMP -// -#define RT_LWIP_UDP -// -#define RT_LWIP_TCP -// +#define RT_LWIP_ICMP +/* RT_LWIP_SNMP is not set */ #define RT_LWIP_DNS -// -#define RT_LWIP_PBUF_NUM 4 -#define RT_LWIP_PBUF_POOL_BUFSIZE 2048 -// -#define RT_LWIP_TCP_PCB_NUM 3 -// -#define RT_LWIP_TCP_SND_BUF 4096 -// -#define RT_LWIP_TCP_WND 2048 -// -// #define RT_LWIP_SNMP -// -// #define RT_LWIP_DHCP -// -#define RT_LWIP_TCP_SEG_NUM 40 -// -#define RT_LWIP_TCPTHREAD_PRIORITY 12 -// -#define RT_LWIP_TCPTHREAD_MBOX_SIZE 8 -// -#define RT_LWIP_TCPTHREAD_STACKSIZE 4096 -// -#define RT_LWIP_ETHTHREAD_PRIORITY 14 -// -#define RT_LWIP_ETHTHREAD_MBOX_SIZE 8 -// -#define RT_LWIP_ETHTHREAD_STACKSIZE 512 - -/* ip address of target */ +/* RT_LWIP_DHCP is not set */ + +/* Static IPv4 Address */ + #define RT_LWIP_IPADDR "192.168.1.254" +#define RT_LWIP_GWADDR "192.168.1.1" +#define RT_LWIP_MSKADDR "255.255.255.0" +#define RT_LWIP_UDP +#define RT_LWIP_TCP +/* RT_LWIP_RAW is not set */ +/* RT_LWIP_PPP is not set */ +#define RT_MEMP_NUM_NETCONN 8 +#define RT_LWIP_PBUF_NUM 4 +#define RT_LWIP_RAW_PCB_NUM 4 +#define RT_LWIP_UDP_PCB_NUM 4 +#define RT_LWIP_TCP_PCB_NUM 3 +#define RT_LWIP_TCP_SEG_NUM 40 +#define RT_LWIP_TCP_SND_BUF 4096 +#define RT_LWIP_TCP_WND 2048 +#define RT_LWIP_TCPTHREAD_PRIORITY 12 +#define RT_LWIP_TCPTHREAD_MBOX_SIZE 8 +#define RT_LWIP_TCPTHREAD_STACKSIZE 4096 +#define RT_LWIP_ETHTHREAD_PRIORITY 14 +#define RT_LWIP_ETHTHREAD_STACKSIZE 512 +#define RT_LWIP_ETHTHREAD_MBOX_SIZE 8 +/* RT_LWIP_REASSEMBLY_FRAG is not set */ +#define LWIP_NETIF_STATUS_CALLBACK 1 +#define SO_REUSE 1 +#define LWIP_SO_RCVTIMEO 1 +#define LWIP_SO_SNDTIMEO 1 +#define LWIP_SO_RCVBUF 1 +/* RT_LWIP_NETIF_LOOPBACK is not set */ +#define LWIP_NETIF_LOOPBACK 0 -/* gateway address of target */ -#define RT_LWIP_GWADDR "192.168.1.1" - -/* mask address of target */ -#define RT_LWIP_MSKADDR "255.255.255.0" - -//
- -//
-// #define RT_USING_MODULE -// -// #define RT_USING_LIBDL -//
- -//
-// #define RT_USING_RTGUI -// -#define RTGUI_NAME_MAX 16 -// -#define RTGUI_USING_FONT16 -// -#define RTGUI_USING_FONT12 -// -#define RTGUI_USING_FONTHZ -// -#define RTGUI_USING_DFS_FILERW -// -// #define RTGUI_USING_HZ_FILE -// -#define RTGUI_USING_HZ_BMP -// -#define RTGUI_USING_SMALL_SIZE -// -// #define RTGUI_USING_MOUSE_CURSOR -// -#define RTGUI_IMAGE_XPM -// -// #define RTGUI_IMAGE_JPEG -// -// #define RTGUI_IMAGE_PNG -// -#define RTGUI_IMAGE_BMP -//
+/* Modbus master and slave stack */ -#define RT_USING_SPI -#define RT_USING_SPI0 -#define RT_USING_SPI1 +/* RT_USING_MODBUS is not set */ +/* LWIP_USING_DHCPD is not set */ -#define RT_USING_I2C -#define RT_USING_I2C_BITOPS +/* VBUS(Virtual Software BUS) */ +/* RT_USING_VBUS is not set */ -#define RT_USING_PIN +/* Utilities */ + +/* RT_USING_LOGTRACE is not set */ +/* RT_USING_RYM is not set */ + +/* RT-Thread online packages */ +/* system packages */ -//
+/* PKG_USING_PARTITION is not set */ +/* PKG_USING_SQLITE is not set */ +/* PKG_USING_RTI is not set */ + +/* IoT - internet of things */ + +/* PKG_USING_PAHOMQTT is not set */ +/* PKG_USING_WEBCLIENT is not set */ +/* PKG_USING_MONGOOSE is not set */ +/* PKG_USING_WEBTERMINAL is not set */ +/* PKG_USING_CJSON is not set */ +/* PKG_USING_EZXML is not set */ +/* PKG_USING_NANOPB is not set */ + +/* security packages */ + +/* PKG_USING_MBEDTLS is not set */ +/* PKG_USING_libsodium is not set */ + +/* language packages */ + +/* PKG_USING_JERRYSCRIPT is not set */ +/* PKG_USING_MICROPYTHON is not set */ + +/* multimedia packages */ + +/* tools packages */ + +/* PKG_USING_CMBACKTRACE is not set */ +/* PKG_USING_EASYLOGGER is not set */ +/* PKG_USING_SYSTEMVIEW is not set */ + +/* miscellaneous packages */ + +/* PKG_USING_FASTLZ is not set */ +/* PKG_USING_MINILZO is not set */ + +/* example package: hello */ + +/* PKG_USING_HELLO is not set */ +#define RT_USING_UART2 +#define RT_UART_RX_BUFFER_SIZE 64 +#define RT_USING_GMAC_INT_MODE +#define RT_USING_FPU +#define RT_USING_SPI0 +#define RT_USING_SPI1 +#define RT_USING_I2C1 +#define RT_USING_I2C2 +#define USING_BXCAN0 +#define USING_BXCAN1 #endif diff --git a/bsp/v2m-mps2/.config b/bsp/v2m-mps2/.config index 93ae20e65e4d9741b025ee5aa0e09fc83b7a3a4d..d2d7d9b47e78dd2cf681a8feef311728483db388 100644 --- a/bsp/v2m-mps2/.config +++ b/bsp/v2m-mps2/.config @@ -76,6 +76,7 @@ CONFIG_FINSH_USING_HISTORY=y CONFIG_FINSH_HISTORY_LINES=5 CONFIG_FINSH_USING_SYMTAB=y CONFIG_FINSH_USING_DESCRIPTION=y +# CONFIG_FINSH_ECHO_DISABLE_DEFAULT is not set CONFIG_FINSH_THREAD_PRIORITY=20 CONFIG_FINSH_THREAD_STACK_SIZE=4096 CONFIG_FINSH_CMD_SIZE=80 @@ -98,7 +99,7 @@ CONFIG_RT_USING_SERIAL=y # CONFIG_RT_USING_HWTIMER is not set # CONFIG_RT_USING_CPUTIME is not set # CONFIG_RT_USING_I2C is not set -# CONFIG_RT_USING_PIN is not set +CONFIG_RT_USING_PIN=y # CONFIG_RT_USING_MTD_NOR is not set # CONFIG_RT_USING_MTD_NAND is not set # CONFIG_RT_USING_RTC is not set @@ -118,6 +119,7 @@ CONFIG_RT_USING_SERIAL=y # CONFIG_RT_USING_LIBC=y # CONFIG_RT_USING_PTHREADS is not set +# CONFIG_HAVE_SYS_SIGNALS is not set # # Network stack @@ -133,11 +135,6 @@ CONFIG_RT_USING_LIBC=y # # CONFIG_RT_USING_MODBUS is not set -# -# RT-Thread UI Engine -# -# CONFIG_PKG_USING_GUIENGINE is not set - # # VBUS(Virtual Software BUS) # @@ -162,8 +159,14 @@ CONFIG_RT_USING_LIBC=y # # system packages # -# CONFIG_PKG_USING_PARTITION is not set + +# +# RT-Thread GUI Engine +# +# CONFIG_PKG_USING_GUIENGINE is not set # CONFIG_PKG_USING_PERSIMMON is not set +# CONFIG_PKG_USING_LWEXT4 is not set +# CONFIG_PKG_USING_PARTITION is not set # CONFIG_PKG_USING_SQLITE is not set # CONFIG_PKG_USING_RTI is not set @@ -194,6 +197,8 @@ CONFIG_RT_USING_LIBC=y # # CONFIG_PKG_USING_WLAN_WICED is not set # CONFIG_PKG_USING_COAP is not set +# CONFIG_PKG_USING_NOPOLL is not set +# CONFIG_PKG_USING_NETUTILS is not set # # security packages @@ -206,7 +211,43 @@ CONFIG_RT_USING_LIBC=y # language packages # # CONFIG_PKG_USING_JERRYSCRIPT is not set -# CONFIG_PKG_USING_MICROPYTHON is not set +CONFIG_PKG_USING_MICROPYTHON=y +CONFIG_PKG_MICROPYTHON_PATH="/packages/language/micropython" + +# +# System Module +# +# CONFIG_MICROPYTHON_USING_UOS is not set +# CONFIG_MICROPYTHON_USING_USELECT is not set +# CONFIG_MICROPYTHON_USING_UCTYPES is not set +# CONFIG_MICROPYTHON_USING_UERRNO is not set + +# +# Tools Module +# +# CONFIG_MICROPYTHON_USING_CMATH is not set +# CONFIG_MICROPYTHON_USING_UBINASCII is not set +# CONFIG_MICROPYTHON_USING_UHASHLIB is not set +# CONFIG_MICROPYTHON_USING_UHEAPQ is not set +# CONFIG_MICROPYTHON_USING_UJSON is not set +# CONFIG_MICROPYTHON_USING_URE is not set +# CONFIG_MICROPYTHON_USING_UZLIB is not set +# CONFIG_MICROPYTHON_USING_URANDOM is not set + +# +# Network Module +# +# CONFIG_MICROPYTHON_USING_USOCKET is not set + +# +# Hardware Module +# +# CONFIG_MICROPYTHON_USING_MACHINE_I2C is not set +# CONFIG_MICROPYTHON_USING_MACHINE_SPI is not set +CONFIG_PKG_MICROPYTHON_HEAP_SIZE=8192 +CONFIG_PKG_USING_MICROPYTHON_LATEST_VERSION=y +# CONFIG_PKG_USING_MICROPYTHON_V10903 is not set +CONFIG_PKG_MICROPYTHON_VER="latest" # # multimedia packages @@ -217,6 +258,7 @@ CONFIG_RT_USING_LIBC=y # tools packages # # CONFIG_PKG_USING_CMBACKTRACE is not set +# CONFIG_PKG_USING_EASYFLASH is not set # CONFIG_PKG_USING_EASYLOGGER is not set # CONFIG_PKG_USING_SYSTEMVIEW is not set # CONFIG_PKG_USING_IPERF is not set @@ -226,6 +268,8 @@ CONFIG_RT_USING_LIBC=y # # CONFIG_PKG_USING_FASTLZ is not set # CONFIG_PKG_USING_MINILZO is not set +# CONFIG_PKG_USING_QUICKLZ is not set +# CONFIG_PKG_USING_MULTIBUTTON is not set # # example package: hello @@ -243,10 +287,6 @@ CONFIG_RT_USING_LIBC=y # Network Utilities # # CONFIG_PKG_USING_WLAN_WICED_SRC is not set - -# -# Cloudsdk: RT_thread IOT Cloudsdk -# # CONFIG_PKG_USING_CLOUDSDK is not set # @@ -255,6 +295,7 @@ CONFIG_RT_USING_LIBC=y # CONFIG_PKG_USING_WEBNET is not set # CONFIG_PKG_USING_COREMARK is not set # CONFIG_PKG_USING_POWER_MANAGER is not set +# CONFIG_PKG_USING_RT_OTA is not set CONFIG_SOC_V2M_MPS2=y CONFIG_RT_USING_UART=y CONFIG_RT_USING_UART0=y diff --git a/bsp/v2m-mps2/drivers/SConscript b/bsp/v2m-mps2/drivers/SConscript index d1ca64e4b0e78eb8a3cd10451fa03057e5666cc6..fa38d4cb34e6d21925886daeab87322ea794eedf 100644 --- a/bsp/v2m-mps2/drivers/SConscript +++ b/bsp/v2m-mps2/drivers/SConscript @@ -11,6 +11,9 @@ drv_uart.c CPPPATH = [cwd] CPPDEFINES = [] +if GetDepend('RT_USING_PIN'): + src += ['drv_pin.c'] + group = DefineGroup('Drivers', src, depend = [''], CPPPATH = CPPPATH, CPPDEFINES=CPPDEFINES) Return('group') diff --git a/bsp/v2m-mps2/drivers/drv_pin.c b/bsp/v2m-mps2/drivers/drv_pin.c new file mode 100644 index 0000000000000000000000000000000000000000..ddb93e642499afb8c5780ef246b0e4df9bbe2f4b --- /dev/null +++ b/bsp/v2m-mps2/drivers/drv_pin.c @@ -0,0 +1,89 @@ +/* + * File : drv_pin.c + * This file is part of RT-Thread RTOS + * COPYRIGHT (C) 2006-2013, RT-Thread Development Team + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rt-thread.org/license/LICENSE + * + * Change Logs: + * Date Author Notes + * 2018-03-25 Tanek the first version. + */ +#include +#include +#include +#include + +#ifdef RT_USING_PIN + +// pin 0 ~ 7 : switch 0 ~ 7 +// pin 8 ~ 15 : user led 0 ~ 7 + +static void v2m_pin_mode(rt_device_t dev, rt_base_t pin, rt_base_t mode) +{ + return ; +} + +static int v2m_pin_read(rt_device_t dev, rt_base_t pin) +{ + RT_ASSERT(dev != RT_NULL); + + if (0 <= pin && pin <= 7) + { + return !!(MPS2_SCC->CFG_REG3 & (0x01 << pin)); // switchs + } + else if (8 <= pin && pin <= 15) + { + return !!(MPS2_SCC->CFG_REG1 & (0x01 << (pin - 8))); // leds + } + else + { + RT_ASSERT(RT_NULL); + return 0; + } +} + +static void v2m_pin_write(rt_device_t dev, rt_base_t pin, rt_base_t value) +{ + RT_ASSERT(dev != RT_NULL); + + if (8 <= pin && pin <= 15) + { + rt_uint32_t reg = MPS2_SCC->CFG_REG1; + + if (value) + reg |= 1 << (pin - 8); + else + reg &= ~(1 << (pin - 8)); + + MPS2_SCC->CFG_REG1 = reg; + } + else + { + RT_ASSERT(RT_NULL); + } +} + +int rt_hw_pin_init(void) +{ + int ret = RT_EOK; + + static const struct rt_pin_ops v2m_pin_ops = + { + v2m_pin_mode, + v2m_pin_write, + v2m_pin_read, + RT_NULL, + RT_NULL, + RT_NULL + }; + + ret = rt_device_pin_register("pin", &v2m_pin_ops, RT_NULL); + + return ret; +} +INIT_BOARD_EXPORT(rt_hw_pin_init); + +#endif /*RT_USING_PIN */ diff --git a/bsp/v2m-mps2/project.uvoptx b/bsp/v2m-mps2/project.uvoptx index 49b2063e01727c19345c60cf71cec4f6da8c17e3..5a89df19a8c5905715290c54b0ec8dfd1be52206 100644 --- a/bsp/v2m-mps2/project.uvoptx +++ b/bsp/v2m-mps2/project.uvoptx @@ -148,7 +148,24 @@ UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000) - + + + 0 + 0 + 150 + 1 +
5262
+ 0 + 0 + 0 + 0 + 0 + 1 + ..\..\src\components.c + + \\rtthread_v2m_mps2\../../src/components.c\150 +
+
0 @@ -202,7 +219,7 @@ Applications - 0 + 1 0 0 0 @@ -222,7 +239,7 @@ Drivers - 0 + 1 0 0 0 @@ -250,26 +267,26 @@ 0 0 - - - - Kernel - 0 - 0 - 0 - 0 - 3 + 2 4 1 0 0 0 - ..\..\src\clock.c - clock.c + drivers\drv_pin.c + drv_pin.c 0 0 + + + + MicroPython + 0 + 0 + 0 + 0 3 5 @@ -277,8 +294,8 @@ 0 0 0 - ..\..\src\components.c - components.c + packages\micropython\py\argcheck.c + argcheck.c 0 0 @@ -289,8 +306,8 @@ 0 0 0 - ..\..\src\device.c - device.c + packages\micropython\py\asmarm.c + asmarm.c 0 0 @@ -301,8 +318,8 @@ 0 0 0 - ..\..\src\idle.c - idle.c + packages\micropython\py\asmbase.c + asmbase.c 0 0 @@ -313,8 +330,8 @@ 0 0 0 - ..\..\src\ipc.c - ipc.c + packages\micropython\py\asmthumb.c + asmthumb.c 0 0 @@ -325,8 +342,8 @@ 0 0 0 - ..\..\src\irq.c - irq.c + packages\micropython\py\asmx64.c + asmx64.c 0 0 @@ -337,8 +354,8 @@ 0 0 0 - ..\..\src\kservice.c - kservice.c + packages\micropython\py\asmx86.c + asmx86.c 0 0 @@ -349,8 +366,8 @@ 0 0 0 - ..\..\src\memheap.c - memheap.c + packages\micropython\py\asmxtensa.c + asmxtensa.c 0 0 @@ -361,8 +378,8 @@ 0 0 0 - ..\..\src\object.c - object.c + packages\micropython\py\bc.c + bc.c 0 0 @@ -373,8 +390,8 @@ 0 0 0 - ..\..\src\scheduler.c - scheduler.c + packages\micropython\py\binary.c + binary.c 0 0 @@ -385,8 +402,8 @@ 0 0 0 - ..\..\src\signal.c - signal.c + packages\micropython\py\builtinevex.c + builtinevex.c 0 0 @@ -397,8 +414,8 @@ 0 0 0 - ..\..\src\thread.c - thread.c + packages\micropython\py\builtinhelp.c + builtinhelp.c 0 0 @@ -409,446 +426,2386 @@ 0 0 0 - ..\..\src\timer.c - timer.c + packages\micropython\py\builtinimport.c + builtinimport.c 0 0 - - - - CORTEX-M7 - 0 - 0 - 0 - 0 - 4 + 3 17 1 0 0 0 - ..\..\libcpu\arm\cortex-m7\cpuport.c - cpuport.c + packages\micropython\py\compile.c + compile.c 0 0 - 4 + 3 18 - 2 + 1 0 0 0 - ..\..\libcpu\arm\cortex-m7\context_rvds.S - context_rvds.S + packages\micropython\py\emitbc.c + emitbc.c 0 0 - 4 + 3 19 1 0 0 0 - ..\..\libcpu\arm\common\backtrace.c - backtrace.c + packages\micropython\py\emitcommon.c + emitcommon.c 0 0 - 4 + 3 20 1 0 0 0 - ..\..\libcpu\arm\common\div0.c - div0.c + packages\micropython\py\emitglue.c + emitglue.c 0 0 - 4 + 3 21 1 0 0 0 - ..\..\libcpu\arm\common\showmem.c - showmem.c + packages\micropython\py\emitinlinethumb.c + emitinlinethumb.c 0 0 - - - - DeviceDrivers - 0 - 0 - 0 - 0 - 5 + 3 22 1 0 0 0 - ..\..\components\drivers\serial\serial.c - serial.c + packages\micropython\py\emitinlinextensa.c + emitinlinextensa.c 0 0 - 5 + 3 23 1 0 0 0 - ..\..\components\drivers\src\completion.c - completion.c + packages\micropython\py\emitnative.c + emitnative.c 0 0 - 5 + 3 24 1 0 0 0 - ..\..\components\drivers\src\dataqueue.c - dataqueue.c + packages\micropython\py\formatfloat.c + formatfloat.c 0 0 - 5 + 3 25 1 0 0 0 - ..\..\components\drivers\src\pipe.c - pipe.c + packages\micropython\py\frozenmod.c + frozenmod.c 0 0 - 5 + 3 26 1 0 0 0 - ..\..\components\drivers\src\ringbuffer.c - ringbuffer.c + packages\micropython\py\gc.c + gc.c 0 0 - 5 + 3 27 1 0 0 0 - ..\..\components\drivers\src\waitqueue.c - waitqueue.c + packages\micropython\py\lexer.c + lexer.c 0 0 - 5 + 3 28 1 0 0 0 - ..\..\components\drivers\src\workqueue.c - workqueue.c + packages\micropython\py\malloc.c + malloc.c 0 0 - - - - finsh - 0 - 0 - 0 - 0 - 6 + 3 29 1 0 0 0 - ..\..\components\finsh\shell.c - shell.c + packages\micropython\py\map.c + map.c 0 0 - 6 + 3 30 1 0 0 0 - ..\..\components\finsh\symbol.c - symbol.c + packages\micropython\py\modarray.c + modarray.c 0 0 - 6 + 3 31 1 0 0 0 - ..\..\components\finsh\cmd.c - cmd.c + packages\micropython\py\modbuiltins.c + modbuiltins.c 0 0 - 6 + 3 32 1 0 0 0 - ..\..\components\finsh\msh.c - msh.c + packages\micropython\py\modcmath.c + modcmath.c 0 0 - 6 + 3 33 1 0 0 0 - ..\..\components\finsh\msh_cmd.c - msh_cmd.c + packages\micropython\py\modcollections.c + modcollections.c 0 0 - 6 + 3 34 1 0 0 0 - ..\..\components\finsh\msh_file.c - msh_file.c + packages\micropython\py\modgc.c + modgc.c 0 0 - 6 + 3 35 1 0 0 0 - ..\..\components\finsh\finsh_compiler.c - finsh_compiler.c + packages\micropython\py\modio.c + modio.c 0 0 - 6 + 3 36 1 0 0 0 - ..\..\components\finsh\finsh_error.c - finsh_error.c + packages\micropython\py\modmath.c + modmath.c 0 0 - 6 + 3 37 1 0 0 0 - ..\..\components\finsh\finsh_heap.c - finsh_heap.c + packages\micropython\py\modmicropython.c + modmicropython.c 0 0 - 6 + 3 38 1 0 0 0 - ..\..\components\finsh\finsh_init.c - finsh_init.c + packages\micropython\py\modstruct.c + modstruct.c 0 0 - 6 + 3 39 1 0 0 0 - ..\..\components\finsh\finsh_node.c - finsh_node.c + packages\micropython\py\modsys.c + modsys.c 0 0 - 6 + 3 40 1 0 0 0 - ..\..\components\finsh\finsh_ops.c - finsh_ops.c + packages\micropython\py\modthread.c + modthread.c 0 0 - 6 + 3 41 1 0 0 0 - ..\..\components\finsh\finsh_parser.c - finsh_parser.c + packages\micropython\py\moduerrno.c + moduerrno.c 0 0 - 6 + 3 42 1 0 0 0 - ..\..\components\finsh\finsh_var.c - finsh_var.c + packages\micropython\py\mpprint.c + mpprint.c 0 0 - 6 + 3 43 1 0 0 0 - ..\..\components\finsh\finsh_vm.c - finsh_vm.c + packages\micropython\py\mpstate.c + mpstate.c 0 0 - 6 + 3 44 1 0 0 0 - ..\..\components\finsh\finsh_token.c - finsh_token.c + packages\micropython\py\mpy_scheduler.c + mpy_scheduler.c 0 0 - - - - libc - 0 - 0 - 0 - 0 - 7 + 3 45 1 0 0 0 - ..\..\components\libc\compilers\armlibc\libc.c - libc.c + packages\micropython\py\mpz.c + mpz.c 0 0 - 7 + 3 46 1 0 0 0 - ..\..\components\libc\compilers\armlibc\libc_syms.c - libc_syms.c + packages\micropython\py\nativeglue.c + nativeglue.c 0 0 - 7 + 3 47 1 0 0 0 - ..\..\components\libc\compilers\armlibc\mem_std.c - mem_std.c + packages\micropython\py\nlr.c + nlr.c 0 0 - 7 + 3 48 1 0 0 0 - ..\..\components\libc\compilers\armlibc\stdio.c - stdio.c + packages\micropython\py\nlrsetjmp.c + nlrsetjmp.c 0 0 - 7 + 3 49 1 0 0 0 - ..\..\components\libc\compilers\armlibc\stubs.c - stubs.c + packages\micropython\py\nlrthumb.c + nlrthumb.c 0 0 - 7 + 3 50 1 0 0 0 + packages\micropython\py\nlrx64.c + nlrx64.c + 0 + 0 + + + 3 + 51 + 1 + 0 + 0 + 0 + packages\micropython\py\nlrx86.c + nlrx86.c + 0 + 0 + + + 3 + 52 + 1 + 0 + 0 + 0 + packages\micropython\py\nlrxtensa.c + nlrxtensa.c + 0 + 0 + + + 3 + 53 + 1 + 0 + 0 + 0 + packages\micropython\py\obj.c + obj.c + 0 + 0 + + + 3 + 54 + 1 + 0 + 0 + 0 + packages\micropython\py\objarray.c + objarray.c + 0 + 0 + + + 3 + 55 + 1 + 0 + 0 + 0 + packages\micropython\py\objattrtuple.c + objattrtuple.c + 0 + 0 + + + 3 + 56 + 1 + 0 + 0 + 0 + packages\micropython\py\objbool.c + objbool.c + 0 + 0 + + + 3 + 57 + 1 + 0 + 0 + 0 + packages\micropython\py\objboundmeth.c + objboundmeth.c + 0 + 0 + + + 3 + 58 + 1 + 0 + 0 + 0 + packages\micropython\py\objcell.c + objcell.c + 0 + 0 + + + 3 + 59 + 1 + 0 + 0 + 0 + packages\micropython\py\objclosure.c + objclosure.c + 0 + 0 + + + 3 + 60 + 1 + 0 + 0 + 0 + packages\micropython\py\objcomplex.c + objcomplex.c + 0 + 0 + + + 3 + 61 + 1 + 0 + 0 + 0 + packages\micropython\py\objdeque.c + objdeque.c + 0 + 0 + + + 3 + 62 + 1 + 0 + 0 + 0 + packages\micropython\py\objdict.c + objdict.c + 0 + 0 + + + 3 + 63 + 1 + 0 + 0 + 0 + packages\micropython\py\objenumerate.c + objenumerate.c + 0 + 0 + + + 3 + 64 + 1 + 0 + 0 + 0 + packages\micropython\py\objexcept.c + objexcept.c + 0 + 0 + + + 3 + 65 + 1 + 0 + 0 + 0 + packages\micropython\py\objfilter.c + objfilter.c + 0 + 0 + + + 3 + 66 + 1 + 0 + 0 + 0 + packages\micropython\py\objfloat.c + objfloat.c + 0 + 0 + + + 3 + 67 + 1 + 0 + 0 + 0 + packages\micropython\py\objfun.c + objfun.c + 0 + 0 + + + 3 + 68 + 1 + 0 + 0 + 0 + packages\micropython\py\objgenerator.c + objgenerator.c + 0 + 0 + + + 3 + 69 + 1 + 0 + 0 + 0 + packages\micropython\py\objgetitemiter.c + objgetitemiter.c + 0 + 0 + + + 3 + 70 + 1 + 0 + 0 + 0 + packages\micropython\py\objint.c + objint.c + 0 + 0 + + + 3 + 71 + 1 + 0 + 0 + 0 + packages\micropython\py\objint_longlong.c + objint_longlong.c + 0 + 0 + + + 3 + 72 + 1 + 0 + 0 + 0 + packages\micropython\py\objint_mpz.c + objint_mpz.c + 0 + 0 + + + 3 + 73 + 1 + 0 + 0 + 0 + packages\micropython\py\objlist.c + objlist.c + 0 + 0 + + + 3 + 74 + 1 + 0 + 0 + 0 + packages\micropython\py\objmap.c + objmap.c + 0 + 0 + + + 3 + 75 + 1 + 0 + 0 + 0 + packages\micropython\py\objmodule.c + objmodule.c + 0 + 0 + + + 3 + 76 + 1 + 0 + 0 + 0 + packages\micropython\py\objnamedtuple.c + objnamedtuple.c + 0 + 0 + + + 3 + 77 + 1 + 0 + 0 + 0 + packages\micropython\py\objnone.c + objnone.c + 0 + 0 + + + 3 + 78 + 1 + 0 + 0 + 0 + packages\micropython\py\objobject.c + objobject.c + 0 + 0 + + + 3 + 79 + 1 + 0 + 0 + 0 + packages\micropython\py\objpolyiter.c + objpolyiter.c + 0 + 0 + + + 3 + 80 + 1 + 0 + 0 + 0 + packages\micropython\py\objproperty.c + objproperty.c + 0 + 0 + + + 3 + 81 + 1 + 0 + 0 + 0 + packages\micropython\py\objrange.c + objrange.c + 0 + 0 + + + 3 + 82 + 1 + 0 + 0 + 0 + packages\micropython\py\objreversed.c + objreversed.c + 0 + 0 + + + 3 + 83 + 1 + 0 + 0 + 0 + packages\micropython\py\objset.c + objset.c + 0 + 0 + + + 3 + 84 + 1 + 0 + 0 + 0 + packages\micropython\py\objsingleton.c + objsingleton.c + 0 + 0 + + + 3 + 85 + 1 + 0 + 0 + 0 + packages\micropython\py\objslice.c + objslice.c + 0 + 0 + + + 3 + 86 + 1 + 0 + 0 + 0 + packages\micropython\py\objstr.c + objstr.c + 0 + 0 + + + 3 + 87 + 1 + 0 + 0 + 0 + packages\micropython\py\objstringio.c + objstringio.c + 0 + 0 + + + 3 + 88 + 1 + 0 + 0 + 0 + packages\micropython\py\objstrunicode.c + objstrunicode.c + 0 + 0 + + + 3 + 89 + 1 + 0 + 0 + 0 + packages\micropython\py\objtuple.c + objtuple.c + 0 + 0 + + + 3 + 90 + 1 + 0 + 0 + 0 + packages\micropython\py\objtype.c + objtype.c + 0 + 0 + + + 3 + 91 + 1 + 0 + 0 + 0 + packages\micropython\py\objzip.c + objzip.c + 0 + 0 + + + 3 + 92 + 1 + 0 + 0 + 0 + packages\micropython\py\opmethods.c + opmethods.c + 0 + 0 + + + 3 + 93 + 1 + 0 + 0 + 0 + packages\micropython\py\parse.c + parse.c + 0 + 0 + + + 3 + 94 + 1 + 0 + 0 + 0 + packages\micropython\py\parsenum.c + parsenum.c + 0 + 0 + + + 3 + 95 + 1 + 0 + 0 + 0 + packages\micropython\py\parsenumbase.c + parsenumbase.c + 0 + 0 + + + 3 + 96 + 1 + 0 + 0 + 0 + packages\micropython\py\persistentcode.c + persistentcode.c + 0 + 0 + + + 3 + 97 + 1 + 0 + 0 + 0 + packages\micropython\py\pystack.c + pystack.c + 0 + 0 + + + 3 + 98 + 1 + 0 + 0 + 0 + packages\micropython\py\qstr.c + qstr.c + 0 + 0 + + + 3 + 99 + 1 + 0 + 0 + 0 + packages\micropython\py\reader.c + reader.c + 0 + 0 + + + 3 + 100 + 1 + 0 + 0 + 0 + packages\micropython\py\repl.c + repl.c + 0 + 0 + + + 3 + 101 + 1 + 0 + 0 + 0 + packages\micropython\py\runtime.c + runtime.c + 0 + 0 + + + 3 + 102 + 1 + 0 + 0 + 0 + packages\micropython\py\runtime_utils.c + runtime_utils.c + 0 + 0 + + + 3 + 103 + 1 + 0 + 0 + 0 + packages\micropython\py\scope.c + scope.c + 0 + 0 + + + 3 + 104 + 1 + 0 + 0 + 0 + packages\micropython\py\sequence.c + sequence.c + 0 + 0 + + + 3 + 105 + 1 + 0 + 0 + 0 + packages\micropython\py\showbc.c + showbc.c + 0 + 0 + + + 3 + 106 + 1 + 0 + 0 + 0 + packages\micropython\py\smallint.c + smallint.c + 0 + 0 + + + 3 + 107 + 1 + 0 + 0 + 0 + packages\micropython\py\stackctrl.c + stackctrl.c + 0 + 0 + + + 3 + 108 + 1 + 0 + 0 + 0 + packages\micropython\py\stream.c + stream.c + 0 + 0 + + + 3 + 109 + 1 + 0 + 0 + 0 + packages\micropython\py\unicode.c + unicode.c + 0 + 0 + + + 3 + 110 + 1 + 0 + 0 + 0 + packages\micropython\py\vm.c + vm.c + 0 + 0 + + + 3 + 111 + 1 + 0 + 0 + 0 + packages\micropython\py\vstr.c + vstr.c + 0 + 0 + + + 3 + 112 + 1 + 0 + 0 + 0 + packages\micropython\py\warning.c + warning.c + 0 + 0 + + + 3 + 113 + 1 + 0 + 0 + 0 + packages\micropython\lib\mp-readline\readline.c + readline.c + 0 + 0 + + + 3 + 114 + 1 + 0 + 0 + 0 + packages\micropython\lib\utils\interrupt_char.c + interrupt_char.c + 0 + 0 + + + 3 + 115 + 1 + 0 + 0 + 0 + packages\micropython\lib\utils\printf.c + printf.c + 0 + 0 + + + 3 + 116 + 1 + 0 + 0 + 0 + packages\micropython\lib\utils\pyexec.c + pyexec.c + 0 + 0 + + + 3 + 117 + 1 + 0 + 0 + 0 + packages\micropython\lib\utils\stdout_helpers.c + stdout_helpers.c + 0 + 0 + + + 3 + 118 + 1 + 0 + 0 + 0 + packages\micropython\extmod\machine_i2c.c + machine_i2c.c + 0 + 0 + + + 3 + 119 + 1 + 0 + 0 + 0 + packages\micropython\extmod\machine_mem.c + machine_mem.c + 0 + 0 + + + 3 + 120 + 1 + 0 + 0 + 0 + packages\micropython\extmod\machine_pinbase.c + machine_pinbase.c + 0 + 0 + + + 3 + 121 + 1 + 0 + 0 + 0 + packages\micropython\extmod\machine_pulse.c + machine_pulse.c + 0 + 0 + + + 3 + 122 + 1 + 0 + 0 + 0 + packages\micropython\extmod\machine_signal.c + machine_signal.c + 0 + 0 + + + 3 + 123 + 1 + 0 + 0 + 0 + packages\micropython\extmod\machine_spi.c + machine_spi.c + 0 + 0 + + + 3 + 124 + 1 + 0 + 0 + 0 + packages\micropython\extmod\modbtree.c + modbtree.c + 0 + 0 + + + 3 + 125 + 1 + 0 + 0 + 0 + packages\micropython\extmod\modframebuf.c + modframebuf.c + 0 + 0 + + + 3 + 126 + 1 + 0 + 0 + 0 + packages\micropython\extmod\modubinascii.c + modubinascii.c + 0 + 0 + + + 3 + 127 + 1 + 0 + 0 + 0 + packages\micropython\extmod\moductypes.c + moductypes.c + 0 + 0 + + + 3 + 128 + 1 + 0 + 0 + 0 + packages\micropython\extmod\moduhashlib.c + moduhashlib.c + 0 + 0 + + + 3 + 129 + 1 + 0 + 0 + 0 + packages\micropython\extmod\moduheapq.c + moduheapq.c + 0 + 0 + + + 3 + 130 + 1 + 0 + 0 + 0 + packages\micropython\extmod\modujson.c + modujson.c + 0 + 0 + + + 3 + 131 + 1 + 0 + 0 + 0 + packages\micropython\extmod\modurandom.c + modurandom.c + 0 + 0 + + + 3 + 132 + 1 + 0 + 0 + 0 + packages\micropython\extmod\modure.c + modure.c + 0 + 0 + + + 3 + 133 + 1 + 0 + 0 + 0 + packages\micropython\extmod\moduselect.c + moduselect.c + 0 + 0 + + + 3 + 134 + 1 + 0 + 0 + 0 + packages\micropython\extmod\modussl_axtls.c + modussl_axtls.c + 0 + 0 + + + 3 + 135 + 1 + 0 + 0 + 0 + packages\micropython\extmod\modussl_mbedtls.c + modussl_mbedtls.c + 0 + 0 + + + 3 + 136 + 1 + 0 + 0 + 0 + packages\micropython\extmod\modutimeq.c + modutimeq.c + 0 + 0 + + + 3 + 137 + 1 + 0 + 0 + 0 + packages\micropython\extmod\moduzlib.c + moduzlib.c + 0 + 0 + + + 3 + 138 + 1 + 0 + 0 + 0 + packages\micropython\extmod\modwebrepl.c + modwebrepl.c + 0 + 0 + + + 3 + 139 + 1 + 0 + 0 + 0 + packages\micropython\extmod\modwebsocket.c + modwebsocket.c + 0 + 0 + + + 3 + 140 + 1 + 0 + 0 + 0 + packages\micropython\extmod\uos_dupterm.c + uos_dupterm.c + 0 + 0 + + + 3 + 141 + 1 + 0 + 0 + 0 + packages\micropython\extmod\utime_mphal.c + utime_mphal.c + 0 + 0 + + + 3 + 142 + 1 + 0 + 0 + 0 + packages\micropython\extmod\vfs.c + vfs.c + 0 + 0 + + + 3 + 143 + 1 + 0 + 0 + 0 + packages\micropython\extmod\vfs_fat.c + vfs_fat.c + 0 + 0 + + + 3 + 144 + 1 + 0 + 0 + 0 + packages\micropython\extmod\vfs_fat_diskio.c + vfs_fat_diskio.c + 0 + 0 + + + 3 + 145 + 1 + 0 + 0 + 0 + packages\micropython\extmod\vfs_fat_file.c + vfs_fat_file.c + 0 + 0 + + + 3 + 146 + 1 + 0 + 0 + 0 + packages\micropython\extmod\vfs_reader.c + vfs_reader.c + 0 + 0 + + + 3 + 147 + 1 + 0 + 0 + 0 + packages\micropython\extmod\virtpin.c + virtpin.c + 0 + 0 + + + 3 + 148 + 1 + 0 + 0 + 0 + packages\micropython\port\_frozen_mpy.c + _frozen_mpy.c + 0 + 0 + + + 3 + 149 + 1 + 0 + 0 + 0 + packages\micropython\port\file.c + file.c + 0 + 0 + + + 3 + 150 + 1 + 0 + 0 + 0 + packages\micropython\port\help.c + help.c + 0 + 0 + + + 3 + 151 + 1 + 0 + 0 + 0 + packages\micropython\port\machine_pin.c + machine_pin.c + 0 + 0 + + + 3 + 152 + 1 + 0 + 0 + 0 + packages\micropython\port\modmachine.c + modmachine.c + 0 + 0 + + + 3 + 153 + 1 + 0 + 0 + 0 + packages\micropython\port\modnetwork.c + modnetwork.c + 0 + 0 + + + 3 + 154 + 1 + 0 + 0 + 0 + packages\micropython\port\modpyb.c + modpyb.c + 0 + 0 + + + 3 + 155 + 1 + 0 + 0 + 0 + packages\micropython\port\modrtthread.c + modrtthread.c + 0 + 0 + + + 3 + 156 + 1 + 0 + 0 + 0 + packages\micropython\port\moduos.c + moduos.c + 0 + 0 + + + 3 + 157 + 1 + 0 + 0 + 0 + packages\micropython\port\moduos_file.c + moduos_file.c + 0 + 0 + + + 3 + 158 + 1 + 0 + 0 + 0 + packages\micropython\port\modusocket.c + modusocket.c + 0 + 0 + + + 3 + 159 + 1 + 0 + 0 + 0 + packages\micropython\port\modutime.c + modutime.c + 0 + 0 + + + 3 + 160 + 1 + 0 + 0 + 0 + packages\micropython\port\mpy_main.c + mpy_main.c + 0 + 0 + + + 3 + 161 + 1 + 0 + 0 + 0 + packages\micropython\port\rtt_getchar.c + rtt_getchar.c + 0 + 0 + + + 3 + 162 + 1 + 0 + 0 + 0 + packages\micropython\port\uart_core.c + uart_core.c + 0 + 0 + + + 3 + 163 + 1 + 0 + 0 + 0 + packages\micropython\lib\netutils\netutils.c + netutils.c + 0 + 0 + + + + + Kernel + 0 + 0 + 0 + 0 + + 4 + 164 + 1 + 0 + 0 + 0 + ..\..\src\clock.c + clock.c + 0 + 0 + + + 4 + 165 + 1 + 0 + 0 + 0 + ..\..\src\components.c + components.c + 0 + 0 + + + 4 + 166 + 1 + 0 + 0 + 0 + ..\..\src\device.c + device.c + 0 + 0 + + + 4 + 167 + 1 + 0 + 0 + 0 + ..\..\src\idle.c + idle.c + 0 + 0 + + + 4 + 168 + 1 + 0 + 0 + 0 + ..\..\src\ipc.c + ipc.c + 0 + 0 + + + 4 + 169 + 1 + 0 + 0 + 0 + ..\..\src\irq.c + irq.c + 0 + 0 + + + 4 + 170 + 1 + 0 + 0 + 0 + ..\..\src\kservice.c + kservice.c + 0 + 0 + + + 4 + 171 + 1 + 0 + 0 + 0 + ..\..\src\memheap.c + memheap.c + 0 + 0 + + + 4 + 172 + 1 + 0 + 0 + 0 + ..\..\src\object.c + object.c + 0 + 0 + + + 4 + 173 + 1 + 0 + 0 + 0 + ..\..\src\scheduler.c + scheduler.c + 0 + 0 + + + 4 + 174 + 1 + 0 + 0 + 0 + ..\..\src\signal.c + signal.c + 0 + 0 + + + 4 + 175 + 1 + 0 + 0 + 0 + ..\..\src\thread.c + thread.c + 0 + 0 + + + 4 + 176 + 1 + 0 + 0 + 0 + ..\..\src\timer.c + timer.c + 0 + 0 + + + + + CORTEX-M7 + 0 + 0 + 0 + 0 + + 5 + 177 + 1 + 0 + 0 + 0 + ..\..\libcpu\arm\cortex-m7\cpuport.c + cpuport.c + 0 + 0 + + + 5 + 178 + 2 + 0 + 0 + 0 + ..\..\libcpu\arm\cortex-m7\context_rvds.S + context_rvds.S + 0 + 0 + + + 5 + 179 + 1 + 0 + 0 + 0 + ..\..\libcpu\arm\common\backtrace.c + backtrace.c + 0 + 0 + + + 5 + 180 + 1 + 0 + 0 + 0 + ..\..\libcpu\arm\common\div0.c + div0.c + 0 + 0 + + + 5 + 181 + 1 + 0 + 0 + 0 + ..\..\libcpu\arm\common\showmem.c + showmem.c + 0 + 0 + + + + + DeviceDrivers + 0 + 0 + 0 + 0 + + 6 + 182 + 1 + 0 + 0 + 0 + ..\..\components\drivers\misc\pin.c + pin.c + 0 + 0 + + + 6 + 183 + 1 + 0 + 0 + 0 + ..\..\components\drivers\serial\serial.c + serial.c + 0 + 0 + + + 6 + 184 + 1 + 0 + 0 + 0 + ..\..\components\drivers\src\completion.c + completion.c + 0 + 0 + + + 6 + 185 + 1 + 0 + 0 + 0 + ..\..\components\drivers\src\dataqueue.c + dataqueue.c + 0 + 0 + + + 6 + 186 + 1 + 0 + 0 + 0 + ..\..\components\drivers\src\pipe.c + pipe.c + 0 + 0 + + + 6 + 187 + 1 + 0 + 0 + 0 + ..\..\components\drivers\src\ringbuffer.c + ringbuffer.c + 0 + 0 + + + 6 + 188 + 1 + 0 + 0 + 0 + ..\..\components\drivers\src\waitqueue.c + waitqueue.c + 0 + 0 + + + 6 + 189 + 1 + 0 + 0 + 0 + ..\..\components\drivers\src\workqueue.c + workqueue.c + 0 + 0 + + + + + finsh + 0 + 0 + 0 + 0 + + 7 + 190 + 1 + 0 + 0 + 0 + ..\..\components\finsh\shell.c + shell.c + 0 + 0 + + + 7 + 191 + 1 + 0 + 0 + 0 + ..\..\components\finsh\symbol.c + symbol.c + 0 + 0 + + + 7 + 192 + 1 + 0 + 0 + 0 + ..\..\components\finsh\cmd.c + cmd.c + 0 + 0 + + + 7 + 193 + 1 + 0 + 0 + 0 + ..\..\components\finsh\msh.c + msh.c + 0 + 0 + + + 7 + 194 + 1 + 0 + 0 + 0 + ..\..\components\finsh\msh_cmd.c + msh_cmd.c + 0 + 0 + + + 7 + 195 + 1 + 0 + 0 + 0 + ..\..\components\finsh\msh_file.c + msh_file.c + 0 + 0 + + + 7 + 196 + 1 + 0 + 0 + 0 + ..\..\components\finsh\finsh_compiler.c + finsh_compiler.c + 0 + 0 + + + 7 + 197 + 1 + 0 + 0 + 0 + ..\..\components\finsh\finsh_error.c + finsh_error.c + 0 + 0 + + + 7 + 198 + 1 + 0 + 0 + 0 + ..\..\components\finsh\finsh_heap.c + finsh_heap.c + 0 + 0 + + + 7 + 199 + 1 + 0 + 0 + 0 + ..\..\components\finsh\finsh_init.c + finsh_init.c + 0 + 0 + + + 7 + 200 + 1 + 0 + 0 + 0 + ..\..\components\finsh\finsh_node.c + finsh_node.c + 0 + 0 + + + 7 + 201 + 1 + 0 + 0 + 0 + ..\..\components\finsh\finsh_ops.c + finsh_ops.c + 0 + 0 + + + 7 + 202 + 1 + 0 + 0 + 0 + ..\..\components\finsh\finsh_parser.c + finsh_parser.c + 0 + 0 + + + 7 + 203 + 1 + 0 + 0 + 0 + ..\..\components\finsh\finsh_var.c + finsh_var.c + 0 + 0 + + + 7 + 204 + 1 + 0 + 0 + 0 + ..\..\components\finsh\finsh_vm.c + finsh_vm.c + 0 + 0 + + + 7 + 205 + 1 + 0 + 0 + 0 + ..\..\components\finsh\finsh_token.c + finsh_token.c + 0 + 0 + + + + + libc + 0 + 0 + 0 + 0 + + 8 + 206 + 1 + 0 + 0 + 0 + ..\..\components\libc\compilers\armlibc\libc.c + libc.c + 0 + 0 + + + 8 + 207 + 1 + 0 + 0 + 0 + ..\..\components\libc\compilers\armlibc\libc_syms.c + libc_syms.c + 0 + 0 + + + 8 + 208 + 1 + 0 + 0 + 0 + ..\..\components\libc\compilers\armlibc\mem_std.c + mem_std.c + 0 + 0 + + + 8 + 209 + 1 + 0 + 0 + 0 + ..\..\components\libc\compilers\armlibc\stdio.c + stdio.c + 0 + 0 + + + 8 + 210 + 1 + 0 + 0 + 0 + ..\..\components\libc\compilers\armlibc\stubs.c + stubs.c + 0 + 0 + + + 8 + 211 + 1 + 0 + 0 + 0 ..\..\components\libc\compilers\armlibc\time.c time.c 0 diff --git a/bsp/v2m-mps2/project.uvprojx b/bsp/v2m-mps2/project.uvprojx index cd325e7a74701241925470224722dd6b15a89de0..75718cc144b2dc17be0b738f89e1b5a4a1b03527 100644 --- a/bsp/v2m-mps2/project.uvprojx +++ b/bsp/v2m-mps2/project.uvprojx @@ -336,7 +336,7 @@ --library_interface=armcc --library_type=standardlib --diag_suppress=66,1296,186 RT_USING_ARM_LIBC - applications;.;drivers;..\..\include;..\..\libcpu\arm\cortex-m7;..\..\libcpu\arm\common;..\..\components\drivers\include;..\..\components\drivers\include;..\..\components\finsh;..\..\components\libc\compilers\armlibc + applications;.;drivers;packages\micropython;packages\micropython\port;packages\micropython\lib\netutils;..\..\include;..\..\libcpu\arm\cortex-m7;..\..\libcpu\arm\common;..\..\components\drivers\include;..\..\components\drivers\include;..\..\components\drivers\include;..\..\components\finsh;..\..\components\libc\compilers\armlibc @@ -400,6 +400,879 @@ 1 drivers\drv_uart.c + + drv_pin.c + 1 + drivers\drv_pin.c + + + + + MicroPython + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 0 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + --c99 --gnu + + + + + + + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + + + + + + + + + + + + argcheck.c + 1 + packages\micropython\py\argcheck.c + + + asmarm.c + 1 + packages\micropython\py\asmarm.c + + + asmbase.c + 1 + packages\micropython\py\asmbase.c + + + asmthumb.c + 1 + packages\micropython\py\asmthumb.c + + + asmx64.c + 1 + packages\micropython\py\asmx64.c + + + asmx86.c + 1 + packages\micropython\py\asmx86.c + + + asmxtensa.c + 1 + packages\micropython\py\asmxtensa.c + + + bc.c + 1 + packages\micropython\py\bc.c + + + binary.c + 1 + packages\micropython\py\binary.c + + + builtinevex.c + 1 + packages\micropython\py\builtinevex.c + + + builtinhelp.c + 1 + packages\micropython\py\builtinhelp.c + + + builtinimport.c + 1 + packages\micropython\py\builtinimport.c + + + compile.c + 1 + packages\micropython\py\compile.c + + + emitbc.c + 1 + packages\micropython\py\emitbc.c + + + emitcommon.c + 1 + packages\micropython\py\emitcommon.c + + + emitglue.c + 1 + packages\micropython\py\emitglue.c + + + emitinlinethumb.c + 1 + packages\micropython\py\emitinlinethumb.c + + + emitinlinextensa.c + 1 + packages\micropython\py\emitinlinextensa.c + + + emitnative.c + 1 + packages\micropython\py\emitnative.c + + + formatfloat.c + 1 + packages\micropython\py\formatfloat.c + + + frozenmod.c + 1 + packages\micropython\py\frozenmod.c + + + gc.c + 1 + packages\micropython\py\gc.c + + + lexer.c + 1 + packages\micropython\py\lexer.c + + + malloc.c + 1 + packages\micropython\py\malloc.c + + + map.c + 1 + packages\micropython\py\map.c + + + modarray.c + 1 + packages\micropython\py\modarray.c + + + modbuiltins.c + 1 + packages\micropython\py\modbuiltins.c + + + modcmath.c + 1 + packages\micropython\py\modcmath.c + + + modcollections.c + 1 + packages\micropython\py\modcollections.c + + + modgc.c + 1 + packages\micropython\py\modgc.c + + + modio.c + 1 + packages\micropython\py\modio.c + + + modmath.c + 1 + packages\micropython\py\modmath.c + + + modmicropython.c + 1 + packages\micropython\py\modmicropython.c + + + modstruct.c + 1 + packages\micropython\py\modstruct.c + + + modsys.c + 1 + packages\micropython\py\modsys.c + + + modthread.c + 1 + packages\micropython\py\modthread.c + + + moduerrno.c + 1 + packages\micropython\py\moduerrno.c + + + mpprint.c + 1 + packages\micropython\py\mpprint.c + + + mpstate.c + 1 + packages\micropython\py\mpstate.c + + + mpy_scheduler.c + 1 + packages\micropython\py\mpy_scheduler.c + + + mpz.c + 1 + packages\micropython\py\mpz.c + + + nativeglue.c + 1 + packages\micropython\py\nativeglue.c + + + nlr.c + 1 + packages\micropython\py\nlr.c + + + nlrsetjmp.c + 1 + packages\micropython\py\nlrsetjmp.c + + + nlrthumb.c + 1 + packages\micropython\py\nlrthumb.c + + + nlrx64.c + 1 + packages\micropython\py\nlrx64.c + + + nlrx86.c + 1 + packages\micropython\py\nlrx86.c + + + nlrxtensa.c + 1 + packages\micropython\py\nlrxtensa.c + + + obj.c + 1 + packages\micropython\py\obj.c + + + objarray.c + 1 + packages\micropython\py\objarray.c + + + objattrtuple.c + 1 + packages\micropython\py\objattrtuple.c + + + objbool.c + 1 + packages\micropython\py\objbool.c + + + objboundmeth.c + 1 + packages\micropython\py\objboundmeth.c + + + objcell.c + 1 + packages\micropython\py\objcell.c + + + objclosure.c + 1 + packages\micropython\py\objclosure.c + + + objcomplex.c + 1 + packages\micropython\py\objcomplex.c + + + objdeque.c + 1 + packages\micropython\py\objdeque.c + + + objdict.c + 1 + packages\micropython\py\objdict.c + + + objenumerate.c + 1 + packages\micropython\py\objenumerate.c + + + objexcept.c + 1 + packages\micropython\py\objexcept.c + + + objfilter.c + 1 + packages\micropython\py\objfilter.c + + + objfloat.c + 1 + packages\micropython\py\objfloat.c + + + objfun.c + 1 + packages\micropython\py\objfun.c + + + objgenerator.c + 1 + packages\micropython\py\objgenerator.c + + + objgetitemiter.c + 1 + packages\micropython\py\objgetitemiter.c + + + objint.c + 1 + packages\micropython\py\objint.c + + + objint_longlong.c + 1 + packages\micropython\py\objint_longlong.c + + + objint_mpz.c + 1 + packages\micropython\py\objint_mpz.c + + + objlist.c + 1 + packages\micropython\py\objlist.c + + + objmap.c + 1 + packages\micropython\py\objmap.c + + + objmodule.c + 1 + packages\micropython\py\objmodule.c + + + objnamedtuple.c + 1 + packages\micropython\py\objnamedtuple.c + + + objnone.c + 1 + packages\micropython\py\objnone.c + + + objobject.c + 1 + packages\micropython\py\objobject.c + + + objpolyiter.c + 1 + packages\micropython\py\objpolyiter.c + + + objproperty.c + 1 + packages\micropython\py\objproperty.c + + + objrange.c + 1 + packages\micropython\py\objrange.c + + + objreversed.c + 1 + packages\micropython\py\objreversed.c + + + objset.c + 1 + packages\micropython\py\objset.c + + + objsingleton.c + 1 + packages\micropython\py\objsingleton.c + + + objslice.c + 1 + packages\micropython\py\objslice.c + + + objstr.c + 1 + packages\micropython\py\objstr.c + + + objstringio.c + 1 + packages\micropython\py\objstringio.c + + + objstrunicode.c + 1 + packages\micropython\py\objstrunicode.c + + + objtuple.c + 1 + packages\micropython\py\objtuple.c + + + objtype.c + 1 + packages\micropython\py\objtype.c + + + objzip.c + 1 + packages\micropython\py\objzip.c + + + opmethods.c + 1 + packages\micropython\py\opmethods.c + + + parse.c + 1 + packages\micropython\py\parse.c + + + parsenum.c + 1 + packages\micropython\py\parsenum.c + + + parsenumbase.c + 1 + packages\micropython\py\parsenumbase.c + + + persistentcode.c + 1 + packages\micropython\py\persistentcode.c + + + pystack.c + 1 + packages\micropython\py\pystack.c + + + qstr.c + 1 + packages\micropython\py\qstr.c + + + reader.c + 1 + packages\micropython\py\reader.c + + + repl.c + 1 + packages\micropython\py\repl.c + + + runtime.c + 1 + packages\micropython\py\runtime.c + + + runtime_utils.c + 1 + packages\micropython\py\runtime_utils.c + + + scope.c + 1 + packages\micropython\py\scope.c + + + sequence.c + 1 + packages\micropython\py\sequence.c + + + showbc.c + 1 + packages\micropython\py\showbc.c + + + smallint.c + 1 + packages\micropython\py\smallint.c + + + stackctrl.c + 1 + packages\micropython\py\stackctrl.c + + + stream.c + 1 + packages\micropython\py\stream.c + + + unicode.c + 1 + packages\micropython\py\unicode.c + + + vm.c + 1 + packages\micropython\py\vm.c + + + vstr.c + 1 + packages\micropython\py\vstr.c + + + warning.c + 1 + packages\micropython\py\warning.c + + + readline.c + 1 + packages\micropython\lib\mp-readline\readline.c + + + interrupt_char.c + 1 + packages\micropython\lib\utils\interrupt_char.c + + + printf.c + 1 + packages\micropython\lib\utils\printf.c + + + pyexec.c + 1 + packages\micropython\lib\utils\pyexec.c + + + stdout_helpers.c + 1 + packages\micropython\lib\utils\stdout_helpers.c + + + machine_i2c.c + 1 + packages\micropython\extmod\machine_i2c.c + + + machine_mem.c + 1 + packages\micropython\extmod\machine_mem.c + + + machine_pinbase.c + 1 + packages\micropython\extmod\machine_pinbase.c + + + machine_pulse.c + 1 + packages\micropython\extmod\machine_pulse.c + + + machine_signal.c + 1 + packages\micropython\extmod\machine_signal.c + + + machine_spi.c + 1 + packages\micropython\extmod\machine_spi.c + + + modbtree.c + 1 + packages\micropython\extmod\modbtree.c + + + modframebuf.c + 1 + packages\micropython\extmod\modframebuf.c + + + modubinascii.c + 1 + packages\micropython\extmod\modubinascii.c + + + moductypes.c + 1 + packages\micropython\extmod\moductypes.c + + + moduhashlib.c + 1 + packages\micropython\extmod\moduhashlib.c + + + moduheapq.c + 1 + packages\micropython\extmod\moduheapq.c + + + modujson.c + 1 + packages\micropython\extmod\modujson.c + + + modurandom.c + 1 + packages\micropython\extmod\modurandom.c + + + modure.c + 1 + packages\micropython\extmod\modure.c + + + moduselect.c + 1 + packages\micropython\extmod\moduselect.c + + + modussl_axtls.c + 1 + packages\micropython\extmod\modussl_axtls.c + + + modussl_mbedtls.c + 1 + packages\micropython\extmod\modussl_mbedtls.c + + + modutimeq.c + 1 + packages\micropython\extmod\modutimeq.c + + + moduzlib.c + 1 + packages\micropython\extmod\moduzlib.c + + + modwebrepl.c + 1 + packages\micropython\extmod\modwebrepl.c + + + modwebsocket.c + 1 + packages\micropython\extmod\modwebsocket.c + + + uos_dupterm.c + 1 + packages\micropython\extmod\uos_dupterm.c + + + utime_mphal.c + 1 + packages\micropython\extmod\utime_mphal.c + + + vfs.c + 1 + packages\micropython\extmod\vfs.c + + + vfs_fat.c + 1 + packages\micropython\extmod\vfs_fat.c + + + vfs_fat_diskio.c + 1 + packages\micropython\extmod\vfs_fat_diskio.c + + + vfs_fat_file.c + 1 + packages\micropython\extmod\vfs_fat_file.c + + + vfs_reader.c + 1 + packages\micropython\extmod\vfs_reader.c + + + virtpin.c + 1 + packages\micropython\extmod\virtpin.c + + + _frozen_mpy.c + 1 + packages\micropython\port\_frozen_mpy.c + + + file.c + 1 + packages\micropython\port\file.c + + + help.c + 1 + packages\micropython\port\help.c + + + machine_pin.c + 1 + packages\micropython\port\machine_pin.c + + + modmachine.c + 1 + packages\micropython\port\modmachine.c + + + modnetwork.c + 1 + packages\micropython\port\modnetwork.c + + + modpyb.c + 1 + packages\micropython\port\modpyb.c + + + modrtthread.c + 1 + packages\micropython\port\modrtthread.c + + + moduos.c + 1 + packages\micropython\port\moduos.c + + + moduos_file.c + 1 + packages\micropython\port\moduos_file.c + + + modusocket.c + 1 + packages\micropython\port\modusocket.c + + + modutime.c + 1 + packages\micropython\port\modutime.c + + + mpy_main.c + 1 + packages\micropython\port\mpy_main.c + + + rtt_getchar.c + 1 + packages\micropython\port\rtt_getchar.c + + + uart_core.c + 1 + packages\micropython\port\uart_core.c + + + netutils.c + 1 + packages\micropython\lib\netutils\netutils.c + @@ -505,6 +1378,11 @@ DeviceDrivers + + pin.c + 1 + ..\..\components\drivers\misc\pin.c + serial.c 1 diff --git a/bsp/v2m-mps2/rtconfig.h b/bsp/v2m-mps2/rtconfig.h index 58e1ed58e3f26ac4877ad1c90eb22f79d4661834..4eea8c0d393cb36dd5447ca23aa1a32505fcb90d 100644 --- a/bsp/v2m-mps2/rtconfig.h +++ b/bsp/v2m-mps2/rtconfig.h @@ -8,9 +8,7 @@ #define RT_NAME_MAX 8 #define RT_ALIGN_SIZE 4 -/* RT_THREAD_PRIORITY_8 is not set */ #define RT_THREAD_PRIORITY_32 -/* RT_THREAD_PRIORITY_256 is not set */ #define RT_THREAD_PRIORITY_MAX 32 #define RT_TICK_PER_SECOND 100 #define RT_DEBUG @@ -19,7 +17,6 @@ #define RT_DEBUG_THREAD 0 #define RT_USING_HOOK #define IDLE_THREAD_STACK_SIZE 256 -/* RT_USING_TIMER_SOFT is not set */ /* Inter-Thread communication */ @@ -28,26 +25,19 @@ #define RT_USING_EVENT #define RT_USING_MAILBOX #define RT_USING_MESSAGEQUEUE -/* RT_USING_SIGNALS is not set */ /* Memory Management */ -/* RT_USING_MEMPOOL is not set */ #define RT_USING_MEMHEAP -/* RT_USING_NOHEAP is not set */ -/* RT_USING_SMALL_MEM is not set */ -/* RT_USING_SLAB is not set */ #define RT_USING_MEMHEAP_AS_HEAP #define RT_USING_HEAP /* Kernel Device Object */ #define RT_USING_DEVICE -/* RT_USING_INTERRUPT_INFO is not set */ #define RT_USING_CONSOLE #define RT_CONSOLEBUF_SIZE 128 #define RT_CONSOLE_DEVICE_NAME "uart0" -/* RT_USING_MODULE is not set */ #define ARCH_ARM #define ARCH_ARM_CORTEX_M #define ARCH_ARM_CORTEX_M7 @@ -60,7 +50,6 @@ /* C++ features */ -/* RT_USING_CPLUSPLUS is not set */ /* Command shell */ @@ -73,152 +62,100 @@ #define FINSH_THREAD_PRIORITY 20 #define FINSH_THREAD_STACK_SIZE 4096 #define FINSH_CMD_SIZE 80 -/* FINSH_USING_AUTH is not set */ #define FINSH_USING_MSH -/* FINSH_USING_MSH_DEFAULT is not set */ -/* FINSH_USING_MSH_ONLY is not set */ /* Device virtual file system */ -/* RT_USING_DFS is not set */ /* Device Drivers */ #define RT_USING_DEVICE_IPC #define RT_USING_SERIAL -/* RT_USING_CAN is not set */ -/* RT_USING_HWTIMER is not set */ -/* RT_USING_CPUTIME is not set */ -/* RT_USING_I2C is not set */ -/* RT_USING_PIN is not set */ -/* RT_USING_MTD_NOR is not set */ -/* RT_USING_MTD_NAND is not set */ -/* RT_USING_RTC is not set */ -/* RT_USING_SDIO is not set */ -/* RT_USING_SPI is not set */ -/* RT_USING_WDT is not set */ -/* RT_USING_WIFI is not set */ +#define RT_USING_PIN /* Using USB */ -/* RT_USING_USB_HOST is not set */ -/* RT_USING_USB_DEVICE is not set */ /* POSIX layer and C standard library */ #define RT_USING_LIBC -/* RT_USING_PTHREADS is not set */ /* Network stack */ /* light weight TCP/IP stack */ -/* RT_USING_LWIP is not set */ /* Modbus master and slave stack */ -/* RT_USING_MODBUS is not set */ - -/* RT-Thread UI Engine */ - -/* PKG_USING_GUIENGINE is not set */ /* VBUS(Virtual Software BUS) */ -/* RT_USING_VBUS is not set */ /* Utilities */ -/* RT_USING_LOGTRACE is not set */ -/* RT_USING_RYM is not set */ /* ARM CMSIS */ -/* RT_USING_CMSIS_OS is not set */ -/* RT_USING_RTT_CMSIS is not set */ /* RT-Thread online packages */ /* system packages */ -/* PKG_USING_PARTITION is not set */ -/* PKG_USING_PERSIMMON is not set */ -/* PKG_USING_SQLITE is not set */ -/* PKG_USING_RTI is not set */ +/* RT-Thread GUI Engine */ + /* IoT - internet of things */ -/* PKG_USING_PAHOMQTT is not set */ -/* PKG_USING_WEBCLIENT is not set */ -/* PKG_USING_MONGOOSE is not set */ -/* PKG_USING_WEBTERMINAL is not set */ -/* PKG_USING_CJSON is not set */ -/* PKG_USING_LJSON is not set */ -/* PKG_USING_EZXML is not set */ -/* PKG_USING_NANOPB is not set */ -/* PKG_USING_GAGENT_CLOUD is not set */ /* Wi-Fi */ /* Marvell WiFi */ -/* PKG_USING_WLANMARVELL is not set */ /* Wiced WiFi */ -/* PKG_USING_WLAN_WICED is not set */ -/* PKG_USING_COAP is not set */ /* security packages */ -/* PKG_USING_MBEDTLS is not set */ -/* PKG_USING_libsodium is not set */ -/* PKG_USING_TINYCRYPT is not set */ /* language packages */ -/* PKG_USING_JERRYSCRIPT is not set */ -/* PKG_USING_MICROPYTHON is not set */ +#define PKG_USING_MICROPYTHON + +/* System Module */ + + +/* Tools Module */ + + +/* Network Module */ + + +/* Hardware Module */ + +#define PKG_MICROPYTHON_HEAP_SIZE 8192 +#define PKG_USING_MICROPYTHON_LATEST_VERSION /* multimedia packages */ -/* PKG_USING_OPENMV is not set */ /* tools packages */ -/* PKG_USING_CMBACKTRACE is not set */ -/* PKG_USING_EASYLOGGER is not set */ -/* PKG_USING_SYSTEMVIEW is not set */ -/* PKG_USING_IPERF is not set */ /* miscellaneous packages */ -/* PKG_USING_FASTLZ is not set */ -/* PKG_USING_MINILZO is not set */ /* example package: hello */ -/* PKG_USING_HELLO is not set */ /* Privated Packages of RealThread */ -/* PKG_USING_CODEC is not set */ -/* PKG_USING_PLAYER is not set */ -/* PKG_USING_PERSIMMON_SRC is not set */ /* Network Utilities */ -/* PKG_USING_WLAN_WICED_SRC is not set */ - -/* Cloudsdk: RT_thread IOT Cloudsdk */ - -/* PKG_USING_CLOUDSDK is not set */ /* Webnet: A web server package for rt-thread */ -/* PKG_USING_WEBNET is not set */ -/* PKG_USING_COREMARK is not set */ -/* PKG_USING_POWER_MANAGER is not set */ #define SOC_V2M_MPS2 #define RT_USING_UART #define RT_USING_UART0 diff --git a/components/drivers/audio/audio.c b/components/drivers/audio/audio.c index 66d9557d4645371858249acd22efd1d5addafc95..87bb7260580fef7227192c99ac1d34eee0e9aeeb 100644 --- a/components/drivers/audio/audio.c +++ b/components/drivers/audio/audio.c @@ -294,6 +294,10 @@ static rt_size_t _audio_dev_write(struct rt_device *dev, rt_off_t pos, const voi _audio_send_replay_frame(audio); } + else + { + rt_hw_interrupt_enable(level); + } return size; } diff --git a/components/drivers/src/ringbuffer.c b/components/drivers/src/ringbuffer.c index baeeea0e5060ffbab8a2a6c5da2a2530ba9c7bf9..48bf590f8c6fe57f46cc1196bbac62081509c605 100644 --- a/components/drivers/src/ringbuffer.c +++ b/components/drivers/src/ringbuffer.c @@ -119,8 +119,11 @@ rt_size_t rt_ringbuffer_put_force(struct rt_ringbuffer *rb, space_length = rt_ringbuffer_space_len(rb); - if (length > space_length) + if (length > rb->buffer_size) + { + ptr = &ptr[length - rb->buffer_size]; length = rb->buffer_size; + } if (rb->buffer_size - rb->write_index > length) { diff --git a/components/finsh/Kconfig b/components/finsh/Kconfig index f36c73e1fb1bebdb25151e993fec7c9f996b6ace..610db05eb686b0e20e9b4f5742df5068714f3329 100644 --- a/components/finsh/Kconfig +++ b/components/finsh/Kconfig @@ -26,6 +26,10 @@ config FINSH_USING_DESCRIPTION bool "Keeping description in symbol table" default y +config FINSH_ECHO_DISABLE_DEFAULT + bool "Disable the echo mode in default" + default n + config FINSH_THREAD_PRIORITY int "The priority level value of finsh thread" default 20 diff --git a/components/finsh/shell.c b/components/finsh/shell.c index fc13a92b13e47b1dd9f7986c303252f7760e2353..ea68a57ffa2a9d6d0a43ba0c2eb19452ae9562fd 100644 --- a/components/finsh/shell.c +++ b/components/finsh/shell.c @@ -414,7 +414,11 @@ void finsh_thread_entry(void *parameter) char ch; /* normal is echo mode */ +#ifndef FINSH_ECHO_DISABLE_DEFAULT shell->echo_mode = 1; +#else + shell->echo_mode = 0; +#endif #ifndef FINSH_USING_MSH_ONLY finsh_init(&shell->parser);