diff options
| author | liu2guang <[email protected]> | 2018-04-13 00:50:19 +0800 |
|---|---|---|
| committer | liu2guang <[email protected]> | 2018-04-13 10:40:53 +0800 |
| commit | f9e58990efbdbfcba1abe8fed035dde1d64c9312 (patch) | |
| tree | f2d7f8ea58821839c65dbc2474dff2aae698c4d3 /bsp | |
| parent | 8ea0ea9105b4e8ab49ec14c0c834562042cceffa (diff) | |
[BSP][RT1050] fix rt1050 bsp bug and update code. | 修复RT1050 BSP bug并更新代码.
修复以下问题:
1. 修复当配置BSP为野火开发板时, 编译无法通过问题.。
2. 修复ft5406驱动挂载i2c总线到i2c1 bus。
3. 修复spibus时钟分频数错误,并修复所有spi bus都关闭时编译警告。
更新代码:
1. 移除rtgui相关初始化代码.。
2. 导出lcd相关配置参数:HSW/HFP/HBP/VSW/VFP/VBP/Backlight pin/Reset pin/width pixel/height pixel。
3. 当配置BSP为野火板子时, 默认添加sdio驱动。
Diffstat (limited to 'bsp')
| -rw-r--r-- | bsp/imxrt1052-evk/.config | 35 | ||||
| -rw-r--r-- | bsp/imxrt1052-evk/Kconfig | 159 | ||||
| -rw-r--r-- | bsp/imxrt1052-evk/Libraries/SConscript | 6 | ||||
| -rw-r--r-- | bsp/imxrt1052-evk/drivers/SConscript | 24 | ||||
| -rw-r--r-- | bsp/imxrt1052-evk/drivers/board.c | 20 | ||||
| -rw-r--r-- | bsp/imxrt1052-evk/drivers/drv_ft5406.c | 2 | ||||
| -rw-r--r-- | bsp/imxrt1052-evk/drivers/drv_lcd.c | 784 | ||||
| -rw-r--r-- | bsp/imxrt1052-evk/drivers/drv_lcd.h | 28 | ||||
| -rw-r--r-- | bsp/imxrt1052-evk/drivers/drv_spi_bus.c | 11 | ||||
| -rw-r--r-- | bsp/imxrt1052-evk/drivers/drv_spi_flash.c | 51 | ||||
| -rw-r--r-- | bsp/imxrt1052-evk/drivers/drv_spi_flash.h | 23 | ||||
| -rw-r--r-- | bsp/imxrt1052-evk/project.uvprojx | 542 | ||||
| -rw-r--r-- | bsp/imxrt1052-evk/rtconfig.h | 22 |
13 files changed, 580 insertions, 1127 deletions
diff --git a/bsp/imxrt1052-evk/.config b/bsp/imxrt1052-evk/.config index 5b047f25fb..2f388fb9f8 100644 --- a/bsp/imxrt1052-evk/.config +++ b/bsp/imxrt1052-evk/.config @@ -317,6 +317,7 @@ CONFIG_LWIP_NETIF_LOOPBACK=0 # CONFIG_PKG_USING_QUICKLZ is not set # CONFIG_PKG_USING_MULTIBUTTON is not set # CONFIG_PKG_USING_SAMPLES is not set +# CONFIG_PKG_USING_CANFESTIVAL is not set # # example package: hello @@ -343,14 +344,14 @@ CONFIG_RT_USING_UART1=y # CONFIG_RT_USING_UART8 is not set # -# Select spi bus drivers +# Select spi bus and dev drivers # CONFIG_LPSPI_CLK_SOURCE_FROM_PLL3PFD1=y # CONFIG_LPSPI_CLK_SOURCE_FROM_PLL3PFD0 is not set # CONFIG_LPSPI_CLK_SOURCE_FROM_PLL2 is not set # CONFIG_LPSPI_CLK_SOURCE_FROM_PLL2PFD2 is not set CONFIG_LPSPI_CLK_SOURCE=0 -CONFIG_LPSPI_CLK_SOURCE_DIVIDER=7 +CONFIG_LPSPI_CLK_SOURCE_DIVIDER=8 # CONFIG_RT_USING_SPIBUS1 is not set # CONFIG_RT_USING_SPIBUS2 is not set # CONFIG_RT_USING_SPIBUS3 is not set @@ -361,5 +362,35 @@ CONFIG_LPSPI4_SDO_GPIO_1=y # CONFIG_LPSPI4_SDO_GPIO_2 is not set CONFIG_LPSPI4_SDI_GPIO_1=y # CONFIG_LPSPI4_SDI_GPIO_2 is not set +# CONFIG_RT_USING_SPI_FLASH is not set + +# +# Select i2c bus drivers +# +CONFIG_LPI2C_CLOCK_SOURCE_DIVIDER=4 +CONFIG_RT_USING_I2C1=y +# CONFIG_RT_USING_I2C1_BITOPS is not set +# CONFIG_RT_USING_I2C2 is not set +# CONFIG_RT_USING_I2C3 is not set +# CONFIG_RT_USING_I2C4 is not set + +# +# Select lcd driver +# + +# +# Notice: Evk Board para: 480*272 4 4 8 2 40 10 106 45 +# +CONFIG_RT_USING_LCD=y +CONFIG_LCD_WIDTH=480 +CONFIG_LCD_HEIGHT=272 +CONFIG_LCD_HFP=4 +CONFIG_LCD_VFP=4 +CONFIG_LCD_HBP=8 +CONFIG_LCD_VBP=2 +CONFIG_LCD_HSW=40 +CONFIG_LCD_VSW=10 +CONFIG_LCD_BL_PIN=106 +CONFIG_LCD_RST_PIN=45 CONFIG_RT_USING_SDRAM=y CONFIG_RT_USING_RTC_HP=y diff --git a/bsp/imxrt1052-evk/Kconfig b/bsp/imxrt1052-evk/Kconfig index 5ad86b94f6..68bf0cac1d 100644 --- a/bsp/imxrt1052-evk/Kconfig +++ b/bsp/imxrt1052-evk/Kconfig @@ -70,7 +70,7 @@ menu "Select uart drivers" default n endmenu -menu "Select spi bus drivers" +menu "Select spi bus and dev drivers" choice prompt "SPI bus clock source" default LPSPI_CLK_SOURCE_FROM_PLL3PFD1 @@ -94,7 +94,7 @@ menu "Select spi bus drivers" config LPSPI_CLK_SOURCE_DIVIDER int "SPI bus clock source divider" range 1 8 - default 7 + default 8 config RT_USING_SPIBUS1 bool "Using spi1 bus" @@ -223,67 +223,174 @@ menu "Select spi bus drivers" config LPSPI4_SDI_GPIO_2 bool "GPIO_B1_05" endchoice + + config RT_USING_SPI_FLASH + bool "Using spi flash with sfud" + default n + select RT_USING_SPI + select RT_USING_SFUD + select RT_USING_PIN + choice + prompt "SPI flash using spibus" + default SPI_FLASH_USING_SPIBUS4 + depends on RT_USING_SPI_FLASH + + config SPI_FLASH_USING_SPIBUS1 + bool "spi1" + select RT_USING_SPIBUS1 + config SPI_FLASH_USING_SPIBUS2 + bool "spi2" + select RT_USING_SPIBUS2 + config SPI_FLASH_USING_SPIBUS3 + bool "spi3" + select RT_USING_SPIBUS3 + config SPI_FLASH_USING_SPIBUS4 + bool "spi4" + select RT_USING_SPIBUS4 + endchoice + config SPI_FLASH_USING_SPIBUS_NAME + string + default "spi1" if SPI_FLASH_USING_SPIBUS1 + default "spi2" if SPI_FLASH_USING_SPIBUS2 + default "spi3" if SPI_FLASH_USING_SPIBUS3 + default "spi4" if SPI_FLASH_USING_SPIBUS4 + + config SPI_FLASH_NAME + string "SPI flash device name" + default "flash0" + depends on RT_USING_SPI_FLASH + + config SPI_FLASH_USING_CS_PIN + int "SPI flash cs pin index" + default 79 + range 1 127 + depends on RT_USING_SPI_FLASH endmenu -menu "Select iic drivers" +menu "Select i2c bus drivers" config LPI2C_CLOCK_SOURCE_DIVIDER int "lpi2c bus clock source divider" range 1 64 default 4 - + config RT_USING_I2C1 bool "USING I2C1" select RT_USING_I2C default y - if RT_USING_I2C1 - config RT_USING_I2C1_BITOPS - select RT_USING_I2C_BITOPS - default n + if RT_USING_I2C1 + config RT_USING_I2C1_BITOPS + select RT_USING_I2C_BITOPS + default n bool "using simulate I2C1" - endif + endif config RT_USING_I2C2 bool "USING I2C2" select RT_USING_I2C default n - if RT_USING_I2C2 - config RT_USING_I2C2_BITOPS - select RT_USING_I2C_BITOPS - default n + if RT_USING_I2C2 + config RT_USING_I2C2_BITOPS + select RT_USING_I2C_BITOPS + default n bool "using simulate I2C2" - endif + endif config RT_USING_I2C3 bool "USING I2C3" select RT_USING_I2C default n - if RT_USING_I2C3 - config RT_USING_I2C3_BITOPS - select RT_USING_I2C_BITOPS - default n + if RT_USING_I2C3 + config RT_USING_I2C3_BITOPS + select RT_USING_I2C_BITOPS + default n bool "using simulate I2C3" - endif + endif config RT_USING_I2C4 bool "USING I2C4" select RT_USING_I2C default n - if RT_USING_I2C4 - config RT_USING_I2C4_BITOPS - select RT_USING_I2C_BITOPS - default n + if RT_USING_I2C4 + config RT_USING_I2C4_BITOPS + select RT_USING_I2C_BITOPS + default n bool "using simulate I2C4" - endif + endif +endmenu + +menu "Select lcd driver" + if RT_USING_LCD && BOARD_RT1050_EVK + comment "Notice: Evk Board para: 480*272 4 4 8 2 40 10 106 45" + endif + + if RT_USING_LCD && BOARD_RT1050_FIRE + comment "Notice: Fire Board para: 800*480 4 4 8 2 40 10 58 45" + endif + + config RT_USING_LCD + bool "Using lcd" + default n + + config LCD_WIDTH + int "Width pixel num" + default 480 if BOARD_RT1050_EVK + default 800 if BOARD_RT1050_FIRE + depends on RT_USING_LCD + config LCD_HEIGHT + int "Height pixel num" + default 272 if BOARD_RT1050_EVK + default 480 if BOARD_RT1050_FIRE + depends on RT_USING_LCD + config LCD_HFP + int "HFP" + default 4 if BOARD_RT1050_EVK + default 4 if BOARD_RT1050_FIRE + depends on RT_USING_LCD + config LCD_VFP + int "VFP" + default 4 if BOARD_RT1050_EVK + default 4 if BOARD_RT1050_FIRE + depends on RT_USING_LCD + config LCD_HBP + int "HBP" + default 8 if BOARD_RT1050_EVK + default 8 if BOARD_RT1050_FIRE + depends on RT_USING_LCD + config LCD_VBP + int "VBP" + default 2 if BOARD_RT1050_EVK + default 2 if BOARD_RT1050_FIRE + depends on RT_USING_LCD + config LCD_HSW + int "HSW" + default 40 if BOARD_RT1050_EVK + default 40 if BOARD_RT1050_FIRE + depends on RT_USING_LCD + config LCD_VSW + int "VSW" + default 10 if BOARD_RT1050_EVK + default 10 if BOARD_RT1050_FIRE + depends on RT_USING_LCD + config LCD_BL_PIN + int "Backlight pin index" + default 106 if BOARD_RT1050_EVK + default 58 if BOARD_RT1050_FIRE + depends on RT_USING_LCD + config LCD_RST_PIN + int "Reset pin index" + default 45 if BOARD_RT1050_EVK + default 45 if BOARD_RT1050_FIRE + depends on RT_USING_LCD endmenu -#menu "SDRAM driver support" +#menu "Select SDRAM driver" config RT_USING_SDRAM bool "Using sdram" default y #endmenu -#menu "RTC driver support" +#menu "Select RTC driver" config RT_USING_RTC_HP bool "Using hp rtc" select RT_USING_RTC diff --git a/bsp/imxrt1052-evk/Libraries/SConscript b/bsp/imxrt1052-evk/Libraries/SConscript index a38d401eb3..7600e155c6 100644 --- a/bsp/imxrt1052-evk/Libraries/SConscript +++ b/bsp/imxrt1052-evk/Libraries/SConscript @@ -5,7 +5,11 @@ Import('RTT_ROOT') from building import * cwd = GetCurrentDir() -src = Glob('drivers/*.c') +src = Glob('drivers/*.c') + +if GetDepend('BOARD_RT1050_FIRE'): + SrcRemove(src, r'drivers\fsl_enet.c') + SrcRemove(src, 'drivers/dataqueue.c') src += Glob('common/chip/*.c') src += [cwd + '/system_MIMXRT1052.c'] diff --git a/bsp/imxrt1052-evk/drivers/SConscript b/bsp/imxrt1052-evk/drivers/SConscript index e19e0044bd..96695bbc71 100644 --- a/bsp/imxrt1052-evk/drivers/SConscript +++ b/bsp/imxrt1052-evk/drivers/SConscript @@ -2,7 +2,7 @@ Import('RTT_ROOT') Import('rtconfig') from building import * -cwd = os.path.join(str(Dir('#')), 'drivers') +cwd = os.path.join(str(Dir('#')), 'drivers') # add the general drivers. src = Split(""" @@ -16,7 +16,7 @@ CPPDEFINES = [] # add sdram driver code if GetDepend('RT_USING_SDRAM'): - src = src + ['./drv_sdram.c'] + src = src + ['drv_sdram.c'] # add pin driver code if GetDepend('RT_USING_PIN'): @@ -24,25 +24,34 @@ if GetDepend('RT_USING_PIN'): # add rtc driver code if GetDepend('RT_USING_RTC_HP'): - src = src + ['./drv_rtc.c'] + src = src + ['drv_rtc.c'] # add spibus driver code if GetDepend('RT_USING_SPI'): src += ['drv_spi_bus.c'] +# add spi flash driver code +if GetDepend('RT_USING_SPI_FLASH'): + src += ['drv_spi_flash.c'] + # add i2cbus driver code if GetDepend('RT_USING_I2C'): src += ['drv_i2c.c'] +# add lcd driver code +if GetDepend('RT_USING_LCD'): + src += ['drv_lcd.c'] + +# add sdio driver code +if GetDepend('RT_USING_SDIO'): + src += ['drv_sdio.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') @@ -52,9 +61,6 @@ if GetDepend('BOARD_RT1050_EVK'): 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) Return('group') diff --git a/bsp/imxrt1052-evk/drivers/board.c b/bsp/imxrt1052-evk/drivers/board.c index ecb30dd9be..d61b3fc616 100644 --- a/bsp/imxrt1052-evk/drivers/board.c +++ b/bsp/imxrt1052-evk/drivers/board.c @@ -202,24 +202,4 @@ void rt_hw_board_init() #endif } -#ifdef PKG_USING_GUIENGINE -#include <rtgui/driver.h> -#include "drv_lcd.h" - -/* initialize for gui driver */ -int rtgui_lcd_init(void) -{ - rt_device_t device; - - imxrt_hw_lcd_init(); - - device = rt_device_find("lcd"); - /* set graphic device */ - rtgui_graphic_set_device(device); - - return 0; -} -INIT_DEVICE_EXPORT(rtgui_lcd_init); -#endif - /*@}*/ diff --git a/bsp/imxrt1052-evk/drivers/drv_ft5406.c b/bsp/imxrt1052-evk/drivers/drv_ft5406.c index 3acfe2db59..edb83e3ed8 100644 --- a/bsp/imxrt1052-evk/drivers/drv_ft5406.c +++ b/bsp/imxrt1052-evk/drivers/drv_ft5406.c @@ -40,7 +40,7 @@ #define BSP_TOUCH_SAMPLE_HZ 30 -#define I2CBUS_NAME "i2c0" +#define I2CBUS_NAME "i2c1" #if 0 #define FTDEBUG rt_kprintf diff --git a/bsp/imxrt1052-evk/drivers/drv_lcd.c b/bsp/imxrt1052-evk/drivers/drv_lcd.c index 4636bc6c41..f9a01285bc 100644 --- a/bsp/imxrt1052-evk/drivers/drv_lcd.c +++ b/bsp/imxrt1052-evk/drivers/drv_lcd.c @@ -1,7 +1,7 @@ /* - * File : usart.c + * File : drv_lcd.c * This file is part of RT-Thread RTOS - * COPYRIGHT (C) 2009, RT-Thread Development Team + * 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 @@ -10,510 +10,164 @@ * Change Logs: * Date Author Notes * 2017-10-30 Tanek the first version + * 2018-04-05 Liu2guang export LCD config parameters. */ - -#include <board.h> -#include <rtthread.h> + +#include "drv_lcd.h" #include "fsl_common.h" +#include "fsl_iomuxc.h" #include "fsl_elcdif.h" -#include "fsl_gpio.h" - -//#define LCD_DEBUG - -#ifdef PKG_USING_GUIENGINE - -#define APP_HSW 41 -#define APP_HFP 4 -#define APP_HBP 8 -#define APP_VSW 10 -#define APP_VFP 4 -#define APP_VBP 2 -#define APP_POL_FLAGS \ - (kELCDIF_DataEnableActiveHigh | kELCDIF_VsyncActiveLow | kELCDIF_HsyncActiveLow | kELCDIF_DriveDataOnRisingClkEdge) - -#define FRAME_BUFFER_ALIGN 64 - -#define LCD_PIXEL_T uint16_t -#define LCD_BITS_PER_PIXEL (sizeof(LCD_PIXEL_T) * 8) - -#define LCD_INIT_DATA (0x00) - - -/* Display. */ -#define LCD_DISP_GPIO GPIO1 -#define LCD_DISP_GPIO_PIN 2 -/* Back light. */ -#define LCD_BL_GPIO GPIO2 -#define LCD_BL_GPIO_PIN 31 - -#define APP_ELCDIF LCDIF -#define APP_LCDIF_DATA_BUS kELCDIF_DataBus16Bit -#define FRAME_BUFFER_COUNT 2 - -#define RT_HW_LCD_WIDTH ((uint16_t)800) /* LCD PIXEL WIDTH */ -#define RT_HW_LCD_HEIGHT ((uint16_t)480) /* LCD PIXEL HEIGHT */ - -ALIGN(FRAME_BUFFER_ALIGN) -static LCD_PIXEL_T lcdif_frame_buffer[FRAME_BUFFER_COUNT][RT_HW_LCD_HEIGHT][RT_HW_LCD_WIDTH] SECTION("NonCacheable"); - -#ifdef LCD_DEBUG -static volatile bool s_frameDone = false; +#if !defined(LCD_WIDTH) || !defined(LCD_HEIGHT) +#error "Please config lcd pixel parameters." #endif -struct imxrt_lcd_t -{ - struct rt_device_graphic_info lcd_info; - struct rt_device lcd; - struct rt_semaphore lcd_sem; - rt_uint32_t index; //lcd buffer - LCD_PIXEL_T * framebuffer; - bool update; -}; - -static struct imxrt_lcd_t imxrt_lcd; - -static void _lcd_gpio_config(void) -{ - CLOCK_EnableClock(kCLOCK_Iomuxc); /* iomuxc clock (iomuxc_clk_enable): 0x03u */ - - IOMUXC_SetPinMux( - IOMUXC_GPIO_AD_B0_02_GPIO1_IO02, /* GPIO_AD_B0_02 is configured as GPIO1_IO02 */ - 0U); /* Software Input On Field: Input Path is determined by functionality */ - IOMUXC_SetPinMux( - IOMUXC_GPIO_B0_00_LCD_CLK, /* GPIO_B0_00 is configured as LCD_CLK */ - 0U); /* Software Input On Field: Input Path is determined by functionality */ - IOMUXC_SetPinMux( - IOMUXC_GPIO_B0_01_LCD_ENABLE, /* GPIO_B0_01 is configured as LCD_ENABLE */ - 0U); /* Software Input On Field: Input Path is determined by functionality */ - IOMUXC_SetPinMux( - IOMUXC_GPIO_B0_02_LCD_HSYNC, /* GPIO_B0_02 is configured as LCD_HSYNC */ - 0U); /* Software Input On Field: Input Path is determined by functionality */ - IOMUXC_SetPinMux( - IOMUXC_GPIO_B0_03_LCD_VSYNC, /* GPIO_B0_03 is configured as LCD_VSYNC */ - 0U); /* Software Input On Field: Input Path is determined by functionality */ - IOMUXC_SetPinMux( - IOMUXC_GPIO_B0_04_LCD_DATA00, /* GPIO_B0_04 is configured as LCD_DATA00 */ - 0U); /* Software Input On Field: Input Path is determined by functionality */ - IOMUXC_SetPinMux( - IOMUXC_GPIO_B0_05_LCD_DATA01, /* GPIO_B0_05 is configured as LCD_DATA01 */ - 0U); /* Software Input On Field: Input Path is determined by functionality */ - IOMUXC_SetPinMux( - IOMUXC_GPIO_B0_06_LCD_DATA02, /* GPIO_B0_06 is configured as LCD_DATA02 */ - 0U); /* Software Input On Field: Input Path is determined by functionality */ - IOMUXC_SetPinMux( - IOMUXC_GPIO_B0_07_LCD_DATA03, /* GPIO_B0_07 is configured as LCD_DATA03 */ - 0U); /* Software Input On Field: Input Path is determined by functionality */ - IOMUXC_SetPinMux( - IOMUXC_GPIO_B0_08_LCD_DATA04, /* GPIO_B0_08 is configured as LCD_DATA04 */ - 0U); /* Software Input On Field: Input Path is determined by functionality */ - IOMUXC_SetPinMux( - IOMUXC_GPIO_B0_09_LCD_DATA05, /* GPIO_B0_09 is configured as LCD_DATA05 */ - 0U); /* Software Input On Field: Input Path is determined by functionality */ - IOMUXC_SetPinMux( - IOMUXC_GPIO_B0_10_LCD_DATA06, /* GPIO_B0_10 is configured as LCD_DATA06 */ - 0U); /* Software Input On Field: Input Path is determined by functionality */ - IOMUXC_SetPinMux( - IOMUXC_GPIO_B0_11_LCD_DATA07, /* GPIO_B0_11 is configured as LCD_DATA07 */ - 0U); /* Software Input On Field: Input Path is determined by functionality */ - IOMUXC_SetPinMux( - IOMUXC_GPIO_B0_12_LCD_DATA08, /* GPIO_B0_12 is configured as LCD_DATA08 */ - 0U); /* Software Input On Field: Input Path is determined by functionality */ - IOMUXC_SetPinMux( - IOMUXC_GPIO_B0_13_LCD_DATA09, /* GPIO_B0_13 is configured as LCD_DATA09 */ - 0U); /* Software Input On Field: Input Path is determined by functionality */ - IOMUXC_SetPinMux( - IOMUXC_GPIO_B0_14_LCD_DATA10, /* GPIO_B0_14 is configured as LCD_DATA10 */ - 0U); /* Software Input On Field: Input Path is determined by functionality */ - IOMUXC_SetPinMux( - IOMUXC_GPIO_B0_15_LCD_DATA11, /* GPIO_B0_15 is configured as LCD_DATA11 */ - 0U); /* Software Input On Field: Input Path is determined by functionality */ - IOMUXC_SetPinMux( - IOMUXC_GPIO_B1_00_LCD_DATA12, /* GPIO_B1_00 is configured as LCD_DATA12 */ - 0U); /* Software Input On Field: Input Path is determined by functionality */ - IOMUXC_SetPinMux( - IOMUXC_GPIO_B1_01_LCD_DATA13, /* GPIO_B1_01 is configured as LCD_DATA13 */ - 0U); /* Software Input On Field: Input Path is determined by functionality */ - IOMUXC_SetPinMux( - IOMUXC_GPIO_B1_02_LCD_DATA14, /* GPIO_B1_02 is configured as LCD_DATA14 */ - 0U); /* Software Input On Field: Input Path is determined by functionality */ - IOMUXC_SetPinMux( - IOMUXC_GPIO_B1_03_LCD_DATA15, /* GPIO_B1_03 is configured as LCD_DATA15 */ - 0U); /* Software Input On Field: Input Path is determined by functionality */ - IOMUXC_SetPinMux( - IOMUXC_GPIO_B1_15_GPIO2_IO31, /* GPIO_B1_15 is configured as GPIO2_IO31 */ - 0U); /* Software Input On Field: Input Path is determined by functionality */ - IOMUXC_SetPinConfig( - IOMUXC_GPIO_AD_B0_02_GPIO1_IO02, /* GPIO_AD_B0_02 PAD functional properties : */ - 0x10B0u); /* Slew Rate Field: Slow Slew Rate - Drive Strength Field: R0/6 - Speed Field: medium(100MHz) - Open Drain Enable Field: Open Drain Disabled - Pull / Keep Enable Field: Pull/Keeper Enabled - Pull / Keep Select Field: Keeper - Pull Up / Down Config. Field: 100K Ohm Pull Down - Hyst. Enable Field: Hysteresis Disabled */ - IOMUXC_SetPinConfig( - IOMUXC_GPIO_B0_00_LCD_CLK, /* GPIO_B0_00 PAD functional properties : */ - 0x01B0B0u); /* Slew Rate Field: Slow Slew Rate - Drive Strength Field: R0/6 - Speed Field: medium(100MHz) - Open Drain Enable Field: Open Drain Disabled - Pull / Keep Enable Field: Pull/Keeper Enabled - Pull / Keep Select Field: Pull - Pull Up / Down Config. Field: 100K Ohm Pull Up - Hyst. Enable Field: Hysteresis Enabled */ - IOMUXC_SetPinConfig( - IOMUXC_GPIO_B0_01_LCD_ENABLE, /* GPIO_B0_01 PAD functional properties : */ - 0x01B0B0u); /* Slew Rate Field: Slow Slew Rate - Drive Strength Field: R0/6 - Speed Field: medium(100MHz) - Open Drain Enable Field: Open Drain Disabled - Pull / Keep Enable Field: Pull/Keeper Enabled - Pull / Keep Select Field: Pull - Pull Up / Down Config. Field: 100K Ohm Pull Up - Hyst. Enable Field: Hysteresis Enabled */ - IOMUXC_SetPinConfig( - IOMUXC_GPIO_B0_02_LCD_HSYNC, /* GPIO_B0_02 PAD functional properties : */ - 0x01B0B0u); /* Slew Rate Field: Slow Slew Rate - Drive Strength Field: R0/6 - Speed Field: medium(100MHz) - Open Drain Enable Field: Open Drain Disabled - Pull / Keep Enable Field: Pull/Keeper Enabled - Pull / Keep Select Field: Pull - Pull Up / Down Config. Field: 100K Ohm Pull Up - Hyst. Enable Field: Hysteresis Enabled */ - IOMUXC_SetPinConfig( - IOMUXC_GPIO_B0_03_LCD_VSYNC, /* GPIO_B0_03 PAD functional properties : */ - 0x01B0B0u); /* Slew Rate Field: Slow Slew Rate - Drive Strength Field: R0/6 - Speed Field: medium(100MHz) - Open Drain Enable Field: Open Drain Disabled - Pull / Keep Enable Field: Pull/Keeper Enabled - Pull / Keep Select Field: Pull - Pull Up / Down Config. Field: 100K Ohm Pull Up - Hyst. Enable Field: Hysteresis Enabled */ - IOMUXC_SetPinConfig( - IOMUXC_GPIO_B0_04_LCD_DATA00, /* GPIO_B0_04 PAD functional properties : */ - 0x01B0B0u); /* Slew Rate Field: Slow Slew Rate - Drive Strength Field: R0/6 - Speed Field: medium(100MHz) - Open Drain Enable Field: Open Drain Disabled - Pull / Keep Enable Field: Pull/Keeper Enabled - Pull / Keep Select Field: Pull - Pull Up / Down Config. Field: 100K Ohm Pull Up - Hyst. Enable Field: Hysteresis Enabled */ - IOMUXC_SetPinConfig( - IOMUXC_GPIO_B0_05_LCD_DATA01, /* GPIO_B0_05 PAD functional properties : */ - 0x01B0B0u); /* Slew Rate Field: Slow Slew Rate - Drive Strength Field: R0/6 - Speed Field: medium(100MHz) - Open Drain Enable Field: Open Drain Disabled - Pull / Keep Enable Field: Pull/Keeper Enabled - Pull / Keep Select Field: Pull - Pull Up / Down Config. Field: 100K Ohm Pull Up - Hyst. Enable Field: Hysteresis Enabled */ - IOMUXC_SetPinConfig( - IOMUXC_GPIO_B0_06_LCD_DATA02, /* GPIO_B0_06 PAD functional properties : */ - 0x01B0B0u); /* Slew Rate Field: Slow Slew Rate - Drive Strength Field: R0/6 - Speed Field: medium(100MHz) - Open Drain Enable Field: Open Drain Disabled - Pull / Keep Enable Field: Pull/Keeper Enabled - Pull / Keep Select Field: Pull - Pull Up / Down Config. Field: 100K Ohm Pull Up - Hyst. Enable Field: Hysteresis Enabled */ - IOMUXC_SetPinConfig( - IOMUXC_GPIO_B0_07_LCD_DATA03, /* GPIO_B0_07 PAD functional properties : */ - 0x01B0B0u); /* Slew Rate Field: Slow Slew Rate - Drive Strength Field: R0/6 - Speed Field: medium(100MHz) - Open Drain Enable Field: Open Drain Disabled - Pull / Keep Enable Field: Pull/Keeper Enabled - Pull / Keep Select Field: Pull - Pull Up / Down Config. Field: 100K Ohm Pull Up - Hyst. Enable Field: Hysteresis Enabled */ - IOMUXC_SetPinConfig( - IOMUXC_GPIO_B0_08_LCD_DATA04, /* GPIO_B0_08 PAD functional properties : */ - 0x01B0B0u); /* Slew Rate Field: Slow Slew Rate - Drive Strength Field: R0/6 - Speed Field: medium(100MHz) - Open Drain Enable Field: Open Drain Disabled - Pull / Keep Enable Field: Pull/Keeper Enabled - Pull / Keep Select Field: Pull - Pull Up / Down Config. Field: 100K Ohm Pull Up - Hyst. Enable Field: Hysteresis Enabled */ - IOMUXC_SetPinConfig( - IOMUXC_GPIO_B0_09_LCD_DATA05, /* GPIO_B0_09 PAD functional properties : */ - 0x01B0B0u); /* Slew Rate Field: Slow Slew Rate - Drive Strength Field: R0/6 - Speed Field: medium(100MHz) - Open Drain Enable Field: Open Drain Disabled - Pull / Keep Enable Field: Pull/Keeper Enabled - Pull / Keep Select Field: Pull - Pull Up / Down Config. Field: 100K Ohm Pull Up - Hyst. Enable Field: Hysteresis Enabled */ - IOMUXC_SetPinConfig( - IOMUXC_GPIO_B0_10_LCD_DATA06, /* GPIO_B0_10 PAD functional properties : */ - 0x01B0B0u); /* Slew Rate Field: Slow Slew Rate - Drive Strength Field: R0/6 - Speed Field: medium(100MHz) - Open Drain Enable Field: Open Drain Disabled - Pull / Keep Enable Field: Pull/Keeper Enabled - Pull / Keep Select Field: Pull - Pull Up / Down Config. Field: 100K Ohm Pull Up - Hyst. Enable Field: Hysteresis Enabled */ - IOMUXC_SetPinConfig( - IOMUXC_GPIO_B0_11_LCD_DATA07, /* GPIO_B0_11 PAD functional properties : */ - 0x01B0B0u); /* Slew Rate Field: Slow Slew Rate - Drive Strength Field: R0/6 - Speed Field: medium(100MHz) - Open Drain Enable Field: Open Drain Disabled - Pull / Keep Enable Field: Pull/Keeper Enabled - Pull / Keep Select Field: Pull - Pull Up / Down Config. Field: 100K Ohm Pull Up - Hyst. Enable Field: Hysteresis Enabled */ - IOMUXC_SetPinConfig( - IOMUXC_GPIO_B0_12_LCD_DATA08, /* GPIO_B0_12 PAD functional properties : */ - 0x01B0B0u); /* Slew Rate Field: Slow Slew Rate - Drive Strength Field: R0/6 - Speed Field: medium(100MHz) - Open Drain Enable Field: Open Drain Disabled - Pull / Keep Enable Field: Pull/Keeper Enabled - Pull / Keep Select Field: Pull - Pull Up / Down Config. Field: 100K Ohm Pull Up - Hyst. Enable Field: Hysteresis Enabled */ - IOMUXC_SetPinConfig( - IOMUXC_GPIO_B0_13_LCD_DATA09, /* GPIO_B0_13 PAD functional properties : */ - 0x01B0B0u); /* Slew Rate Field: Slow Slew Rate - Drive Strength Field: R0/6 - Speed Field: medium(100MHz) - Open Drain Enable Field: Open Drain Disabled - Pull / Keep Enable Field: Pull/Keeper Enabled - Pull / Keep Select Field: Pull - Pull Up / Down Config. Field: 100K Ohm Pull Up - Hyst. Enable Field: Hysteresis Enabled */ - IOMUXC_SetPinConfig( - IOMUXC_GPIO_B0_14_LCD_DATA10, /* GPIO_B0_14 PAD functional properties : */ - 0x01B0B0u); /* Slew Rate Field: Slow Slew Rate - Drive Strength Field: R0/6 - Speed Field: medium(100MHz) - Open Drain Enable Field: Open Drain Disabled - Pull / Keep Enable Field: Pull/Keeper Enabled - Pull / Keep Select Field: Pull - Pull Up / Down Config. Field: 100K Ohm Pull Up - Hyst. Enable Field: Hysteresis Enabled */ - IOMUXC_SetPinConfig( - IOMUXC_GPIO_B0_15_LCD_DATA11, /* GPIO_B0_15 PAD functional properties : */ - 0x01B0B0u); /* Slew Rate Field: Slow Slew Rate - Drive Strength Field: R0/6 - Speed Field: medium(100MHz) - Open Drain Enable Field: Open Drain Disabled - Pull / Keep Enable Field: Pull/Keeper Enabled - Pull / Keep Select Field: Pull - Pull Up / Down Config. Field: 100K Ohm Pull Up - Hyst. Enable Field: Hysteresis Enabled */ - IOMUXC_SetPinConfig( - IOMUXC_GPIO_B1_00_LCD_DATA12, /* GPIO_B1_00 PAD functional properties : */ - 0x01B0B0u); /* Slew Rate Field: Slow Slew Rate - Drive Strength Field: R0/6 - Speed Field: medium(100MHz) - Open Drain Enable Field: Open Drain Disabled - Pull / Keep Enable Field: Pull/Keeper Enabled - Pull / Keep Select Field: Pull - Pull Up / Down Config. Field: 100K Ohm Pull Up - Hyst. Enable Field: Hysteresis Enabled */ - IOMUXC_SetPinConfig( - IOMUXC_GPIO_B1_01_LCD_DATA13, /* GPIO_B1_01 PAD functional properties : */ - 0x01B0B0u); /* Slew Rate Field: Slow Slew Rate - Drive Strength Field: R0/6 - Speed Field: medium(100MHz) - Open Drain Enable Field: Open Drain Disabled - Pull / Keep Enable Field: Pull/Keeper Enabled - Pull / Keep Select Field: Pull - Pull Up / Down Config. Field: 100K Ohm Pull Up - Hyst. Enable Field: Hysteresis Enabled */ - IOMUXC_SetPinConfig( - IOMUXC_GPIO_B1_02_LCD_DATA14, /* GPIO_B1_02 PAD functional properties : */ - 0x01B0B0u); /* Slew Rate Field: Slow Slew Rate - Drive Strength Field: R0/6 - Speed Field: medium(100MHz) - Open Drain Enable Field: Open Drain Disabled - Pull / Keep Enable Field: Pull/Keeper Enabled - Pull / Keep Select Field: Pull - Pull Up / Down Config. Field: 100K Ohm Pull Up - Hyst. Enable Field: Hysteresis Enabled */ - IOMUXC_SetPinConfig( - IOMUXC_GPIO_B1_03_LCD_DATA15, /* GPIO_B1_03 PAD functional properties : */ - 0x01B0B0u); /* Slew Rate Field: Slow Slew Rate - Drive Strength Field: R0/6 - Speed Field: medium(100MHz) - Open Drain Enable Field: Open Drain Disabled - Pull / Keep Enable Field: Pull/Keeper Enabled - Pull / Keep Select Field: Pull - Pull Up / Down Config. Field: 100K Ohm Pull Up - Hyst. Enable Field: Hysteresis Enabled */ - IOMUXC_SetPinConfig( - IOMUXC_GPIO_B1_15_GPIO2_IO31, /* GPIO_B1_15 PAD functional properties : */ - 0x10B0u); /* Slew Rate Field: Slow Slew Rate - Drive Strength Field: R0/6 - Speed Field: medium(100MHz) - Open Drain Enable Field: Open Drain Disabled - Pull / Keep Enable Field: Pull/Keeper Enabled - Pull / Keep Select Field: Keeper - Pull Up / Down Config. Field: 100K Ohm Pull Down - Hyst. Enable Field: Hysteresis Disabled */ -} - -static void _lcd_clock_config(void) -{ - /* - * The desired output frame rate is 60Hz. So the pixel clock frequency is: - * (480 + 41 + 4 + 18) * (272 + 10 + 4 + 2) * 60 = 9.2M. - * Here set the LCDIF pixel clock to 9.3M. - */ - - /* - * Initialize the Video PLL. - * Video PLL output clock is OSC24M * (loopDivider + (denominator / numerator)) / postDivider = 93MHz. - */ - clock_video_pll_config_t config = { - .loopDivider = 31, .postDivider = 8, .numerator = 0, .denominator = 0, - }; - - CLOCK_InitVideoPll(&config); - - /* - * 000 derive clock from PLL2 - * 001 derive clock from PLL3 PFD3 - * 010 derive clock from PLL5 - * 011 derive clock from PLL2 PFD0 - * 100 derive clock from PLL2 PFD1 - * 101 derive clock from PLL3 PFD1 - */ - CLOCK_SetMux(kCLOCK_Lcdif1PreMux, 2); - - CLOCK_SetDiv(kCLOCK_Lcdif1PreDiv, 4); - - CLOCK_SetDiv(kCLOCK_Lcdif1Div, 1); - - /* - * 000 derive clock from divided pre-muxed lcdif1 clock - * 001 derive clock from ipp_di0_clk - * 010 derive clock from ipp_di1_clk - * 011 derive clock from ldb_di0_clk - * 100 derive clock from ldb_di1_clk - */ - CLOCK_SetMux(kCLOCK_Lcdif1Mux, 0); -} - -/* Initialize the LCD_DISP. */ -static void _lcd_hardware_reset(void) -{ - volatile uint32_t i = 0x100U; - - gpio_pin_config_t config = { - kGPIO_DigitalOutput, 0, - }; - - /* Reset the LCD. */ - GPIO_PinInit(LCD_DISP_GPIO, LCD_DISP_GPIO_PIN, &config); - - GPIO_PinWrite(LCD_DISP_GPIO, LCD_DISP_GPIO_PIN, 0); - - while (i--) - { - } - - GPIO_PinWrite(LCD_DISP_GPIO, LCD_DISP_GPIO_PIN, 1); - - /* Backlight. */ - config.outputLogic = 1; - GPIO_PinInit(LCD_BL_GPIO, LCD_BL_GPIO_PIN, &config); -} - -static void _lcdif_init(void) -{ - const elcdif_rgb_mode_config_t config = { - .panelWidth = RT_HW_LCD_WIDTH, - .panelHeight = RT_HW_LCD_HEIGHT, - .hsw = APP_HSW, - .hfp = APP_HFP, - .hbp = APP_HBP, - .vsw = APP_VSW, - .vfp = APP_VFP, - .vbp = APP_VBP, - .polarityFlags = APP_POL_FLAGS, - .bufferAddr = (uint32_t)lcdif_frame_buffer[0], - .pixelFormat = kELCDIF_PixelFormatRGB565, - .dataBus = APP_LCDIF_DATA_BUS, - }; +#if !defined(LCD_HFP) || !defined(LCD_HBP) || !defined(LCD_HSW) || \ + !defined(LCD_VFP) || !defined(LCD_VBP) || !defined(LCD_VSW) +#error "Please config lcd timing parameters." +#endif - ELCDIF_RgbModeInit(LCDIF, &config); -} +#if !defined(LCD_BL_PIN) || !defined(LCD_RST_PIN) +#error "Please config lcd backlight or reset pin." +#endif -static void _lcd_interrupt_init(void) +struct rt1050_lcd { - EnableIRQ(LCDIF_IRQn); - ELCDIF_EnableInterrupts(LCDIF, kELCDIF_CurFrameDoneInterruptEnable); -} + struct rt_device device; + struct rt_device_graphic_info info; +}; -static void _lcd_start(void) -{ - ELCDIF_RgbModeStart(LCDIF); -} +static struct rt1050_lcd lcd; +ALIGN(64) static uint16_t frame_buffer[LCD_HEIGHT][LCD_WIDTH] SECTION("NonCacheable"); -void LCDIF_IRQHandler(void) +static rt_err_t rt1050_lcd_init(rt_device_t device) { - uint32_t intStatus; - - intStatus = ELCDIF_GetInterruptStatus(LCDIF); - - ELCDIF_ClearInterruptStatus(LCDIF, intStatus); + RT_ASSERT(device != RT_NULL); + + rt_memset(frame_buffer, 0x00, sizeof(frame_buffer)); - if (intStatus & kELCDIF_CurFrameDone) - { -#ifdef LCD_DEBUG - s_frameDone = true; -#endif + /* CLK */ + clock_video_pll_config_t pll_config; + + pll_config.loopDivider = 43; + pll_config.postDivider = 4; + pll_config.numerator = 0; + pll_config.denominator = 0; + + CLOCK_InitVideoPll(&pll_config); - if (imxrt_lcd.update) - { - ELCDIF_SetNextBufferAddr(LCDIF, (uint32_t)lcdif_frame_buffer[imxrt_lcd.index]); - imxrt_lcd.update = false; - rt_sem_release(&imxrt_lcd.lcd_sem); - } + CLOCK_SetMux(kCLOCK_Lcdif1PreMux, 2); + CLOCK_SetDiv(kCLOCK_Lcdif1PreDiv, 4); + CLOCK_SetMux(kCLOCK_Lcdif1Mux, 0); + CLOCK_SetDiv(kCLOCK_Lcdif1Div, 1); + + /* GPIO */ + CLOCK_EnableClock(kCLOCK_Iomuxc); + + IOMUXC_SetPinMux (IOMUXC_GPIO_B0_04_LCD_DATA00, 0U); + IOMUXC_SetPinConfig(IOMUXC_GPIO_B0_04_LCD_DATA00, 0x01B0B0U); /* LCD_B3 */ + IOMUXC_SetPinMux (IOMUXC_GPIO_B0_05_LCD_DATA01, 0U); + IOMUXC_SetPinConfig(IOMUXC_GPIO_B0_05_LCD_DATA01, 0x01B0B0U); /* LCD_B4 */ + IOMUXC_SetPinMux (IOMUXC_GPIO_B0_06_LCD_DATA02, 0U); + IOMUXC_SetPinConfig(IOMUXC_GPIO_B0_06_LCD_DATA02, 0x01B0B0U); /* LCD_B5 */ + IOMUXC_SetPinMux (IOMUXC_GPIO_B0_07_LCD_DATA03, 0U); + IOMUXC_SetPinConfig(IOMUXC_GPIO_B0_07_LCD_DATA03, 0x01B0B0U); /* LCD_B6 */ + IOMUXC_SetPinMux (IOMUXC_GPIO_B0_08_LCD_DATA04, 0U); + IOMUXC_SetPinConfig(IOMUXC_GPIO_B0_08_LCD_DATA04, 0x01B0B0U); /* LCD_B7 */ + + IOMUXC_SetPinMux (IOMUXC_GPIO_B0_09_LCD_DATA05, 0U); + IOMUXC_SetPinConfig(IOMUXC_GPIO_B0_09_LCD_DATA05, 0x01B0B0U); /* LCD_G2 */ + IOMUXC_SetPinMux (IOMUXC_GPIO_B0_10_LCD_DATA06, 0U); + IOMUXC_SetPinConfig(IOMUXC_GPIO_B0_10_LCD_DATA06, 0x01B0B0U); /* LCD_G3 */ + IOMUXC_SetPinMux (IOMUXC_GPIO_B0_11_LCD_DATA07, 0U); + IOMUXC_SetPinConfig(IOMUXC_GPIO_B0_11_LCD_DATA07, 0x01B0B0U); /* LCD_G4 */ + IOMUXC_SetPinMux (IOMUXC_GPIO_B0_12_LCD_DATA08, 0U); + IOMUXC_SetPinConfig(IOMUXC_GPIO_B0_12_LCD_DATA08, 0x01B0B0U); /* LCD_G5 */ + IOMUXC_SetPinMux (IOMUXC_GPIO_B0_13_LCD_DATA09, 0U); + IOMUXC_SetPinConfig(IOMUXC_GPIO_B0_13_LCD_DATA09, 0x01B0B0U); /* LCD_G6 */ + IOMUXC_SetPinMux (IOMUXC_GPIO_B0_14_LCD_DATA10, 0U); + IOMUXC_SetPinConfig(IOMUXC_GPIO_B0_14_LCD_DATA10, 0x01B0B0U); /* LCD_G7 */ + + IOMUXC_SetPinMux (IOMUXC_GPIO_B0_15_LCD_DATA11, 0U); + IOMUXC_SetPinConfig(IOMUXC_GPIO_B0_15_LCD_DATA11, 0x01B0B0U); /* LCD_R3 */ + IOMUXC_SetPinMux (IOMUXC_GPIO_B1_00_LCD_DATA12, 0U); + IOMUXC_SetPinConfig(IOMUXC_GPIO_B1_00_LCD_DATA12, 0x01B0B0U); /* LCD_R4 */ + IOMUXC_SetPinMux (IOMUXC_GPIO_B1_01_LCD_DATA13, 0U); + IOMUXC_SetPinConfig(IOMUXC_GPIO_B1_01_LCD_DATA13, 0x01B0B0U); /* LCD_R5 */ + IOMUXC_SetPinMux (IOMUXC_GPIO_B1_02_LCD_DATA14, 0U); + IOMUXC_SetPinConfig(IOMUXC_GPIO_B1_02_LCD_DATA14, 0x01B0B0U); /* LCD_R6 */ + IOMUXC_SetPinMux (IOMUXC_GPIO_B1_03_LCD_DATA15, 0U); + IOMUXC_SetPinConfig(IOMUXC_GPIO_B1_03_LCD_DATA15, 0x01B0B0U); /* LCD_R7 */ + + IOMUXC_SetPinMux (IOMUXC_GPIO_B0_00_LCD_CLK, 0U); + IOMUXC_SetPinConfig(IOMUXC_GPIO_B0_00_LCD_CLK, 0x01B0B0u); /* LCD_CLK */ + IOMUXC_SetPinMux (IOMUXC_GPIO_B0_02_LCD_HSYNC, 0U); + IOMUXC_SetPinConfig(IOMUXC_GPIO_B0_02_LCD_HSYNC, 0x01B0B0u); /* LCD_HSYNC */ + IOMUXC_SetPinMux (IOMUXC_GPIO_B0_03_LCD_VSYNC, 0U); + IOMUXC_SetPinConfig(IOMUXC_GPIO_B0_03_LCD_VSYNC, 0x01B0B0u); /* LCD_VSYNC */ + IOMUXC_SetPinMux (IOMUXC_GPIO_B0_01_LCD_ENABLE, 0U); + IOMUXC_SetPinConfig(IOMUXC_GPIO_B0_01_LCD_ENABLE, 0x01B0B0u); /* LCD_ENABLE */ + + rt_pin_mode(LCD_RST_PIN, PIN_MODE_OUTPUT); /* LCD_RESET */ + rt_pin_write(LCD_RST_PIN, PIN_LOW); + rt_thread_delay(RT_TICK_PER_SECOND/100); + rt_pin_write(LCD_RST_PIN, PIN_HIGH); + + rt_pin_mode (LCD_BL_PIN, PIN_MODE_OUTPUT); /* LCD_BL */ + rt_pin_write(LCD_BL_PIN, PIN_HIGH); + + /* LCD */ + elcdif_rgb_mode_config_t lcd_config; + + lcd_config.hfp = LCD_HFP; + lcd_config.vfp = LCD_VFP; + lcd_config.hbp = LCD_HBP; + lcd_config.vbp = LCD_VBP; + lcd_config.hsw = LCD_HSW; + lcd_config.vsw = LCD_VSW; + + lcd_config.polarityFlags = kELCDIF_DataEnableActiveHigh | + kELCDIF_VsyncActiveHigh | + kELCDIF_HsyncActiveLow | + kELCDIF_DriveDataOnRisingClkEdge; + + lcd_config.panelWidth = LCD_WIDTH; + lcd_config.panelHeight = LCD_HEIGHT; + lcd_config.pixelFormat = kELCDIF_PixelFormatRGB565; + lcd_config.dataBus = kELCDIF_DataBus16Bit; + lcd_config.bufferAddr = (uint32_t)frame_buffer; + + ELCDIF_RgbModeInit (LCDIF, &lcd_config); + ELCDIF_RgbModeStart(LCDIF); + + /* LCD DEVICE */ + lcd.info.width = LCD_WIDTH; + lcd.info.height = LCD_HEIGHT; + lcd.info.pixel_format = RTGRAPHIC_PIXEL_FORMAT_RGB565; + lcd.info.bits_per_pixel = 16; + lcd.info.framebuffer = (void *)frame_buffer; - } + return RT_EOK; } -static rt_err_t rt_lcd_control(rt_device_t dev, int cmd, void *args) +static rt_err_t rt1050_lcd_control(rt_device_t device, int cmd, void *args) { - switch (cmd) + switch(cmd) { - case RTGRAPHIC_CTRL_RECT_UPDATE: - { - if(rt_sem_take(&imxrt_lcd.lcd_sem, RT_TICK_PER_SECOND/20) != RT_EOK) - { - rt_kprintf("lcdtimeout!\n"); - } - - imxrt_lcd.index = (imxrt_lcd.index + 1) % FRAME_BUFFER_COUNT; - memcpy(lcdif_frame_buffer[imxrt_lcd.index], imxrt_lcd.framebuffer, - sizeof(LCD_PIXEL_T) * RT_HW_LCD_WIDTH * RT_HW_LCD_HEIGHT); - imxrt_lcd.update = true; - } - break; + case RTGRAPHIC_CTRL_RECT_UPDATE: + break; - case RTGRAPHIC_CTRL_POWERON: + case RTGRAPHIC_CTRL_POWERON: + rt_pin_write(LCD_BL_PIN, PIN_HIGH); break; - case RTGRAPHIC_CTRL_POWEROFF: + case RTGRAPHIC_CTRL_POWEROFF: + rt_pin_write(LCD_BL_PIN, PIN_LOW); break; case RTGRAPHIC_CTRL_GET_INFO: - memcpy(args, &imxrt_lcd.lcd_info, sizeof(imxrt_lcd.lcd_info)); + rt_memcpy(args, &lcd.info, sizeof(lcd.info)); break; case RTGRAPHIC_CTRL_SET_MODE: @@ -523,166 +177,22 @@ static rt_err_t rt_lcd_control(rt_device_t dev, int cmd, void *args) return RT_EOK; } -int imxrt_hw_lcd_init(void) +int rt_hw_lcd_init(void) { - LCD_PIXEL_T * framebuffer; - - framebuffer = rt_malloc_align(sizeof(LCD_PIXEL_T) * RT_HW_LCD_WIDTH * RT_HW_LCD_HEIGHT, FRAME_BUFFER_ALIGN); - if(!framebuffer) - { - rt_kprintf("malloc framebuffer fail\n"); - return -1; - } - imxrt_lcd.framebuffer = framebuffer; - - memset(framebuffer, LCD_INIT_DATA, sizeof(LCD_PIXEL_T) * RT_HW_LCD_WIDTH * RT_HW_LCD_HEIGHT); - memset(lcdif_frame_buffer, LCD_INIT_DATA, sizeof(lcdif_frame_buffer)); - - rt_kprintf("framebuffer: %p, lcdif_frame_buffer: %p, lcdif_frame_buffer[0]: %p, lcdif_frame_buffer[1]: %p\n", \ - framebuffer, lcdif_frame_buffer, lcdif_frame_buffer[0], lcdif_frame_buffer[1]); + rt_err_t ret; - _lcd_gpio_config(); - _lcd_clock_config(); - _lcd_hardware_reset(); - _lcdif_init(); - _lcd_interrupt_init(); - _lcd_start(); - - imxrt_lcd.index = 0; - imxrt_lcd.update = false; - - imxrt_lcd.lcd_info.bits_per_pixel = LCD_BITS_PER_PIXEL; - imxrt_lcd.lcd_info.pixel_format = RTGRAPHIC_PIXEL_FORMAT_RGB565; - imxrt_lcd.lcd_info.framebuffer = (void *)framebuffer; - imxrt_lcd.lcd_info.width = RT_HW_LCD_WIDTH; - imxrt_lcd.lcd_info.height = RT_HW_LCD_HEIGHT; - - imxrt_lcd.lcd.type = RT_Device_Class_Graphic; - imxrt_lcd.lcd.init = NULL; - imxrt_lcd.lcd.open = NULL; - imxrt_lcd.lcd.close = NULL; - imxrt_lcd.lcd.read = NULL; - imxrt_lcd.lcd.write = NULL; - imxrt_lcd.lcd.control = rt_lcd_control; - imxrt_lcd.lcd.user_data = (void *)&imxrt_lcd.lcd_info; + lcd.device.type = RT_Device_Class_Graphic; + lcd.device.init = rt1050_lcd_init; + lcd.device.open = RT_NULL; + lcd.device.close = RT_NULL; + lcd.device.read = RT_NULL; + lcd.device.write = RT_NULL; + lcd.device.control = rt1050_lcd_control; - rt_sem_init(&imxrt_lcd.lcd_sem, "lcd_sem", 1, RT_IPC_FLAG_FIFO); + lcd.device.user_data = (void *)&lcd.info; - /* register lcd device to RT-Thread */ - rt_device_register(&imxrt_lcd.lcd, "lcd", RT_DEVICE_FLAG_RDWR); + ret = rt_device_register(&lcd.device, "lcd", RT_DEVICE_FLAG_RDWR); - - return 0; + return ret; } -//INIT_DEVICE_EXPORT(imxrt_hw_lcd_init); - -#ifdef LCD_DEBUG -#include <finsh.h> - -void APP_FillFrameBuffer(uint32_t frameBuffer[RT_HW_LCD_HEIGHT][RT_HW_LCD_WIDTH]) -{ - /* Background color. */ - static const uint32_t bgColor = 0U; - /* Foreground color. */ - static uint8_t fgColorIndex = 0U; - static const uint32_t fgColorTable[] = {0x000000FFU, 0x0000FF00U, 0x0000FFFFU, 0x00FF0000U, - 0x00FF00FFU, 0x00FFFF00U, 0x00FFFFFFU}; - uint32_t fgColor = fgColorTable[fgColorIndex]; - - /* Position of the foreground rectangle. */ - static uint16_t upperLeftX = 0U; - static uint16_t upperLeftY = 0U; - static uint16_t lowerRightX = (RT_HW_LCD_WIDTH - 1U) / 2U; - static uint16_t lowerRightY = (RT_HW_LCD_HEIGHT - 1U) / 2U; - - static int8_t incX = 1; - static int8_t incY = 1; - - /* Change color in next forame or not. */ - static bool changeColor = false; - - uint32_t i, j; - - /* Background color. */ - for (i = 0; i < RT_HW_LCD_HEIGHT; i++) - { - for (j = 0; j < RT_HW_LCD_WIDTH; j++) - { - frameBuffer[i][j] = bgColor; - } - } - - /* Foreground color. */ - for (i = upperLeftY; i < lowerRightY; i++) - { - for (j = upperLeftX; j < lowerRightX; j++) - { - frameBuffer[i][j] = fgColor; - } - } - - /* Update the format: color and rectangle position. */ - upperLeftX += incX; - upperLeftY += incY; - lowerRightX += incX; - lowerRightY += incY; - - changeColor = false; - - if (0U == upperLeftX) - { - incX = 1; - changeColor = true; - } - else if (RT_HW_LCD_WIDTH - 1 == lowerRightX) - { - incX = -1; - changeColor = true; - } - - if (0U == upperLeftY) - { - incY = 1; - changeColor = true; - } - else if (RT_HW_LCD_HEIGHT - 1 == lowerRightY) - { - incY = -1; - changeColor = true; - } - - if (changeColor) - { - fgColorIndex++; - - if (ARRAY_SIZE(fgColorTable) == fgColorIndex) - { - fgColorIndex = 0U; - } - } -} - -void lcd_test(void) -{ - uint32_t frameBufferIndex = 0; - - APP_FillFrameBuffer(lcdif_frame_buffer[frameBufferIndex]); - - while (1) - { - frameBufferIndex ^= 1U; - - APP_FillFrameBuffer(lcdif_frame_buffer[frameBufferIndex]); - - ELCDIF_SetNextBufferAddr(LCDIF, (uint32_t)lcdif_frame_buffer[frameBufferIndex]); - - s_frameDone = false; - /* Wait for previous frame complete. */ - while (!s_frameDone) - { - } - } -} -FINSH_FUNCTION_EXPORT(lcd_test, lcd test); -#endif -#endif +INIT_DEVICE_EXPORT(rt_hw_lcd_init); diff --git a/bsp/imxrt1052-evk/drivers/drv_lcd.h b/bsp/imxrt1052-evk/drivers/drv_lcd.h index a0b7169a4e..cdde135c78 100644 --- a/bsp/imxrt1052-evk/drivers/drv_lcd.h +++ b/bsp/imxrt1052-evk/drivers/drv_lcd.h @@ -1,29 +1,23 @@ /* - * File : drv_i2c.c - * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team + * File : drv_lcd2.c + * This file is part of RT-Thread RTOS + * COPYRIGHT (C) 2006-2013, 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. + * 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 - * 2017-12-15 Tanek the first version + * 2018-04-05 Liuguang the first version. */ #ifndef __DRV_LCD_H__ #define __DRV_LCD_H__ -extern int imxrt_hw_lcd_init(void); +#include <rtthread.h> +#include <rtdevice.h> + +int rt_hw_lcd_init(void); #endif diff --git a/bsp/imxrt1052-evk/drivers/drv_spi_bus.c b/bsp/imxrt1052-evk/drivers/drv_spi_bus.c index 714dba95c6..4460fafe41 100644 --- a/bsp/imxrt1052-evk/drivers/drv_spi_bus.c +++ b/bsp/imxrt1052-evk/drivers/drv_spi_bus.c @@ -18,7 +18,8 @@ #include "fsl_iomuxc.h" #include "fsl_lpspi.h" -#ifdef RT_USING_SPI +#if defined(RT_USING_SPIBUS1) || defined(RT_USING_SPIBUS2) || \ + defined(RT_USING_SPIBUS3) || defined(RT_USING_SPIBUS4) #if defined(FSL_SDK_DISABLE_DRIVER_CLOCK_CONTROL) && FSL_SDK_DISABLE_DRIVER_CLOCK_CONTROL #error "Please don't define 'FSL_SDK_DISABLE_DRIVER_CLOCK_CONTROL'!" @@ -28,7 +29,7 @@ #define LPSPI_CLK_SOURCE (1U) /* PLL3 PFD0 */ #endif #if !defined(LPSPI_CLK_SOURCE_DIVIDER) -#define LPSPI_CLK_SOURCE_DIVIDER (7U) /* 8div */ +#define LPSPI_CLK_SOURCE_DIVIDER (8U) /* 8div */ #endif /* LPSPI1 SCK SDO SDI IOMUX Config */ @@ -399,14 +400,10 @@ static struct rt_spi_ops rt1050_spi_ops = int rt_hw_spi_bus_init(void) { -#if defined(RT_USING_SPIBUS1) || defined(RT_USING_SPIBUS2) || \ - defined(RT_USING_SPIBUS3) || defined(RT_USING_SPIBUS4) - CLOCK_SetMux(kCLOCK_LpspiMux, LPSPI_CLK_SOURCE); - CLOCK_SetDiv(kCLOCK_LpspiDiv, LPSPI_CLK_SOURCE_DIVIDER); + CLOCK_SetDiv(kCLOCK_LpspiDiv, LPSPI_CLK_SOURCE_DIVIDER-1); CLOCK_EnableClock(kCLOCK_Iomuxc); -#endif #if defined(RT_USING_SPIBUS1) rt_spi_bus_register(&spi1_bus, "spi1", &rt1050_spi_ops); diff --git a/bsp/imxrt1052-evk/drivers/drv_spi_flash.c b/bsp/imxrt1052-evk/drivers/drv_spi_flash.c new file mode 100644 index 0000000000..98927396b8 --- /dev/null +++ b/bsp/imxrt1052-evk/drivers/drv_spi_flash.c @@ -0,0 +1,51 @@ +/* + * File : drv_spi_flash.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-04-02 Liuguang the first version. + */ + +#include "drv_spi_flash.h" + +#include "spi_flash.h" +#include "spi_flash_sfud.h" + +#ifndef SPI_FLASH_USING_SPIBUS_NAME +#define SPI_FLASH_USING_SPIBUS_NAME "spi4" +#endif +#ifndef SPI_FLASH_NAME +#define SPI_FLASH_NAME "flash0" +#endif +#ifndef SPI_FLASH_USING_CS_PIN +#define SPI_FLASH_USING_CS_PIN (79) +#endif + +int rt_hw_spi_flash_init(void) +{ + rt_err_t ret; + + extern rt_err_t rt1050_spi_bus_attach_device(const char *bus_name, + const char *device_name, rt_uint32_t pin); + + ret = rt1050_spi_bus_attach_device(SPI_FLASH_USING_SPIBUS_NAME, + SPI_FLASH_USING_SPIBUS_NAME "0", SPI_FLASH_USING_CS_PIN); + if(ret != RT_EOK) + { + return ret; + } + + if(rt_sfud_flash_probe(SPI_FLASH_NAME, SPI_FLASH_USING_SPIBUS_NAME "0") == RT_NULL) + { + return RT_ERROR; + } + + return RT_EOK; +} +INIT_DEVICE_EXPORT(rt_hw_spi_flash_init); diff --git a/bsp/imxrt1052-evk/drivers/drv_spi_flash.h b/bsp/imxrt1052-evk/drivers/drv_spi_flash.h new file mode 100644 index 0000000000..ede2c53111 --- /dev/null +++ b/bsp/imxrt1052-evk/drivers/drv_spi_flash.h @@ -0,0 +1,23 @@ +/* + * File : drv_spi_flash.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-04-02 Liuguang the first version. + */ + +#ifndef __DRV_SPI_FLASH_H_ +#define __DRV_SPI_FLASH_H_ + +#include <rtthread.h> +#include <rtdevice.h> + +int rt_hw_spi_flash_init(void); + +#endif /* __DRV_SPI_FLASH_H_ */ diff --git a/bsp/imxrt1052-evk/project.uvprojx b/bsp/imxrt1052-evk/project.uvprojx index 57030f2377..6abade54f5 100644 --- a/bsp/imxrt1052-evk/project.uvprojx +++ b/bsp/imxrt1052-evk/project.uvprojx @@ -1,43 +1,44 @@ <?xml version="1.0" encoding="UTF-8" standalone="no" ?> <Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_projx.xsd"> + <SchemaVersion>2.1</SchemaVersion> + <Header>### uVision Project, (C) Keil Software</Header> + <Targets> <Target> <TargetName>RT-Thread IMXRT1052</TargetName> <ToolsetNumber>0x4</ToolsetNumber> <ToolsetName>ARM-ADS</ToolsetName> - <pCCUsed>5060528::V5.06 update 5 (build 528)::ARMCC</pCCUsed> - <uAC6>0</uAC6> + <pCCUsed>5060422::V5.06 update 4 (build 422)::ARMCC</pCCUsed> <TargetOption> <TargetCommonOption> <Device>MIMXRT1052:M7</Device> <Vendor>NXP</Vendor> - <PackID>NXP.iMXRT_DFP.1.0.2</PackID> - <PackURL>http://mcuxpresso.nxp.com/cmsis_pack/repo/</PackURL> + <PackID>NXP.iMXRT_DFP.1.0.1</PackID> <Cpu>IRAM(0x20000000,0x00060000) IRAM2(0x00000000,0x00020000) CPUTYPE("Cortex-M7") FPU3(SFPU) CLOCK(12000000) ELITTLE</Cpu> - <FlashUtilSpec /> - <StartupFile /> + <FlashUtilSpec></FlashUtilSpec> + <StartupFile></StartupFile> <FlashDriverDll>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0RT1050 -FS060000000 -FL04000000 -FP0($$Device:MIMXRT1052$Flash\RT1050.FLM))</FlashDriverDll> <DeviceId>0</DeviceId> <RegisterFile>$$Device:MIMXRT1052$Device\Include\MIMXRT1052.h</RegisterFile> - <MemoryEnv /> - <Cmp /> - <Asm /> - <Linker /> - <OHString /> - <InfinionOptionDll /> - <SLE66CMisc /> - <SLE66AMisc /> - <SLE66LinkerMisc /> + <MemoryEnv></MemoryEnv> + <Cmp></Cmp> + <Asm></Asm> + <Linker></Linker> + <OHString></OHString> + <InfinionOptionDll></InfinionOptionDll> + <SLE66CMisc></SLE66CMisc> + <SLE66AMisc></SLE66AMisc> + <SLE66LinkerMisc></SLE66LinkerMisc> <SFDFile>$$Device:MIMXRT1052$SVD\MIMXRT1052.svd</SFDFile> <bCustSvd>0</bCustSvd> <UseEnv>0</UseEnv> - <BinPath /> - <IncludePath /> - <LibPath /> - <RegisterFilePath /> - <DBRegisterFilePath /> + <BinPath></BinPath> + <IncludePath></IncludePath> + <LibPath></LibPath> + <RegisterFilePath></RegisterFilePath> + <DBRegisterFilePath></DBRegisterFilePath> <TargetStatus> <Error>0</Error> <ExitCodeStop>0</ExitCodeStop> @@ -59,8 +60,8 @@ <BeforeCompile> <RunUserProg1>0</RunUserProg1> <RunUserProg2>0</RunUserProg2> - <UserProg1Name /> - <UserProg2Name /> + <UserProg1Name></UserProg1Name> + <UserProg2Name></UserProg2Name> <UserProg1Dos16Mode>0</UserProg1Dos16Mode> <UserProg2Dos16Mode>0</UserProg2Dos16Mode> <nStopU1X>0</nStopU1X> @@ -69,8 +70,8 @@ <BeforeMake> <RunUserProg1>0</RunUserProg1> <RunUserProg2>0</RunUserProg2> - <UserProg1Name /> - <UserProg2Name /> + <UserProg1Name></UserProg1Name> + <UserProg2Name></UserProg2Name> <UserProg1Dos16Mode>0</UserProg1Dos16Mode> <UserProg2Dos16Mode>0</UserProg2Dos16Mode> <nStopB1X>0</nStopB1X> @@ -80,14 +81,14 @@ <RunUserProg1>1</RunUserProg1> <RunUserProg2>0</RunUserProg2> <UserProg1Name>fromelf --bin !L --output rtthread-mdk.bin</UserProg1Name> - <UserProg2Name /> + <UserProg2Name></UserProg2Name> <UserProg1Dos16Mode>0</UserProg1Dos16Mode> <UserProg2Dos16Mode>0</UserProg2Dos16Mode> <nStopA1X>0</nStopA1X> <nStopA2X>0</nStopA2X> </AfterMake> <SelectedForBatchBuild>0</SelectedForBatchBuild> - <SVCSIdString /> + <SVCSIdString></SVCSIdString> </TargetCommonOption> <CommonProperty> <UseCPPCompiler>0</UseCPPCompiler> @@ -101,8 +102,8 @@ <AssembleAssemblyFile>0</AssembleAssemblyFile> <PublicsOnly>0</PublicsOnly> <StopOnExitCode>3</StopOnExitCode> - <CustomArgument /> - <IncludeLibraryModules /> + <CustomArgument></CustomArgument> + <IncludeLibraryModules></IncludeLibraryModules> <ComprImg>1</ComprImg> </CommonProperty> <DllOption> @@ -135,11 +136,11 @@ </Flash1> <bUseTDR>1</bUseTDR> <Flash2>BIN\UL2CM3.DLL</Flash2> - <Flash3 /> - <Flash4 /> - <pFcarmOut /> - <pFcarmGrp /> - <pFcArmRoot /> + <Flash3></Flash3> + <Flash4></Flash4> + <pFcarmOut></pFcarmOut> + <pFcarmGrp></pFcarmGrp> + <pFcArmRoot></pFcArmRoot> <FcArmLst>0</FcArmLst> </Utilities> <TargetArmAds> @@ -172,7 +173,7 @@ <RvctClst>0</RvctClst> <GenPPlst>0</GenPPlst> <AdsCpuType>"Cortex-M7"</AdsCpuType> - <RvctDeviceName /> + <RvctDeviceName></RvctDeviceName> <mOS>0</mOS> <uocRom>0</uocRom> <uocRam>0</uocRam> @@ -304,7 +305,7 @@ <Size>0x20000</Size> </OCR_RVCT10> </OnChipMemories> - <RvctStartVector /> + <RvctStartVector></RvctStartVector> </ArmAdsMisc> <Cads> <interw>1</interw> @@ -332,7 +333,7 @@ <VariousControls> <MiscControls>--library_interface=armcc --library_type=standardlib --diag_suppress=66,1296,186</MiscControls> <Define>SKIP_SYSCLK_INIT, CPU_MIMXRT1052DVL6A, FSL_SDK_ENABLE_DRIVER_CACHE_CONTROL=1, EVK_MCIMXRM, FSL_FEATURE_PHYKSZ8081_USE_RMII50M_MODE, RT_USING_ARM_LIBC</Define> - <Undefine /> + <Undefine></Undefine> <IncludePath>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\spi;..\..\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</IncludePath> </VariousControls> </Cads> @@ -348,10 +349,10 @@ <useXO>0</useXO> <uClangAs>0</uClangAs> <VariousControls> - <MiscControls /> - <Define /> - <Undefine /> - <IncludePath /> + <MiscControls></MiscControls> + <Define></Define> + <Undefine></Undefine> + <IncludePath></IncludePath> </VariousControls> </Aads> <LDads> @@ -363,13 +364,13 @@ <useFile>0</useFile> <TextAddressRange>0x00000000</TextAddressRange> <DataAddressRange>0x10000000</DataAddressRange> - <pXoBase /> + <pXoBase></pXoBase> <ScatterFile>.\Libraries\arm\MIMXRT1052xxxxx_flexspi_nor.scf</ScatterFile> - <IncludeLibs /> - <IncludeLibsPath /> + <IncludeLibs></IncludeLibs> + <IncludeLibsPath></IncludeLibsPath> <Misc> --keep *.o(.rti_fn.*) --keep *.o(FSymTab) --keep *.o(VSymTab) </Misc> - <LinkerInputFile /> - <DisabledWarnings /> + <LinkerInputFile></LinkerInputFile> + <DisabledWarnings></DisabledWarnings> </LDads> </TargetArmAds> </TargetOption> @@ -382,22 +383,16 @@ <FileType>1</FileType> <FilePath>applications\device_test.c</FilePath> </File> - </Files> - <Files> <File> <FileName>main.c</FileName> <FileType>1</FileType> <FilePath>applications\main.c</FilePath> </File> - </Files> - <Files> <File> <FileName>mem_dump.c</FileName> <FileType>1</FileType> <FilePath>applications\mem_dump.c</FilePath> </File> - </Files> - <Files> <File> <FileName>mem_test.c</FileName> <FileType>1</FileType> @@ -413,77 +408,67 @@ <FileType>1</FileType> <FilePath>drivers\board.c</FilePath> </File> - </Files> - <Files> <File> <FileName>drv_uart.c</FileName> <FileType>1</FileType> <FilePath>drivers\drv_uart.c</FilePath> </File> - </Files> - <Files> <File> <FileName>drv_cache.c</FileName> <FileType>1</FileType> <FilePath>drivers\drv_cache.c</FilePath> </File> - </Files> - <Files> <File> <FileName>drv_sdram.c</FileName> <FileType>1</FileType> <FilePath>drivers\drv_sdram.c</FilePath> </File> - </Files> - <Files> <File> <FileName>drv_pin.c</FileName> <FileType>1</FileType> <FilePath>drivers\drv_pin.c</FilePath> </File> - </Files> - <Files> <File> <FileName>drv_rtc.c</FileName> <FileType>1</FileType> <FilePath>drivers\drv_rtc.c</FilePath> </File> - </Files> - <Files> <File> <FileName>drv_spi_bus.c</FileName> <FileType>1</FileType> <FilePath>drivers\drv_spi_bus.c</FilePath> </File> - </Files> - <Files> + <File> + <FileName>drv_i2c.c</FileName> + <FileType>1</FileType> + <FilePath>drivers\drv_i2c.c</FilePath> + </File> + <File> + <FileName>drv_lcd.c</FileName> + <FileType>1</FileType> + <FilePath>drivers\drv_lcd.c</FilePath> + </File> + <File> + <FileName>drv_sdio.c</FileName> + <FileType>1</FileType> + <FilePath>drivers\drv_sdio.c</FilePath> + </File> <File> <FileName>hyper_flash_boot.c</FileName> <FileType>1</FileType> <FilePath>drivers\hyper_flash_boot.c</FilePath> </File> - </Files> - <Files> <File> <FileName>drv_eth.c</FileName> <FileType>1</FileType> <FilePath>drivers\drv_eth.c</FilePath> </File> - </Files> - <Files> <File> <FileName>fsl_phy.c</FileName> <FileType>1</FileType> <FilePath>drivers\fsl_phy.c</FilePath> </File> </Files> - <Files> - <File> - <FileName>drv_sdio.c</FileName> - <FileType>1</FileType> - <FilePath>drivers\drv_sdio.c</FilePath> - </File> - </Files> </Group> <Group> <GroupName>Libraries</GroupName> @@ -493,421 +478,301 @@ <FileType>1</FileType> <FilePath>Libraries\drivers\fsl_adc.c</FilePath> </File> - </Files> - <Files> <File> <FileName>fsl_adc_etc.c</FileName> <FileType>1</FileType> <FilePath>Libraries\drivers\fsl_adc_etc.c</FilePath> </File> - </Files> - <Files> <File> <FileName>fsl_aipstz.c</FileName> <FileType>1</FileType> <FilePath>Libraries\drivers\fsl_aipstz.c</FilePath> </File> - </Files> - <Files> <File> <FileName>fsl_aoi.c</FileName> <FileType>1</FileType> <FilePath>Libraries\drivers\fsl_aoi.c</FilePath> </File> - </Files> - <Files> <File> <FileName>fsl_bee.c</FileName> <FileType>1</FileType> <FilePath>Libraries\drivers\fsl_bee.c</FilePath> </File> - </Files> - <Files> <File> <FileName>fsl_cache.c</FileName> <FileType>1</FileType> <FilePath>Libraries\drivers\fsl_cache.c</FilePath> </File> - </Files> - <Files> <File> <FileName>fsl_clock.c</FileName> <FileType>1</FileType> <FilePath>Libraries\drivers\fsl_clock.c</FilePath> </File> - </Files> - <Files> <File> <FileName>fsl_cmp.c</FileName> <FileType>1</FileType> <FilePath>Libraries\drivers\fsl_cmp.c</FilePath> </File> - </Files> - <Files> <File> <FileName>fsl_common.c</FileName> <FileType>1</FileType> <FilePath>Libraries\drivers\fsl_common.c</FilePath> </File> - </Files> - <Files> <File> <FileName>fsl_csi.c</FileName> <FileType>1</FileType> <FilePath>Libraries\drivers\fsl_csi.c</FilePath> </File> - </Files> - <Files> <File> <FileName>fsl_dcdc.c</FileName> <FileType>1</FileType> <FilePath>Libraries\drivers\fsl_dcdc.c</FilePath> </File> - </Files> - <Files> <File> <FileName>fsl_dcp.c</FileName> <FileType>1</FileType> <FilePath>Libraries\drivers\fsl_dcp.c</FilePath> </File> - </Files> - <Files> <File> <FileName>fsl_dmamux.c</FileName> <FileType>1</FileType> <FilePath>Libraries\drivers\fsl_dmamux.c</FilePath> </File> - </Files> - <Files> <File> <FileName>fsl_edma.c</FileName> <FileType>1</FileType> <FilePath>Libraries\drivers\fsl_edma.c</FilePath> </File> - </Files> - <Files> <File> <FileName>fsl_elcdif.c</FileName> <FileType>1</FileType> <FilePath>Libraries\drivers\fsl_elcdif.c</FilePath> </File> - </Files> - <Files> <File> <FileName>fsl_enc.c</FileName> <FileType>1</FileType> <FilePath>Libraries\drivers\fsl_enc.c</FilePath> </File> - </Files> - <Files> <File> <FileName>fsl_enet.c</FileName> <FileType>1</FileType> <FilePath>Libraries\drivers\fsl_enet.c</FilePath> </File> - </Files> - <Files> <File> <FileName>fsl_ewm.c</FileName> <FileType>1</FileType> <FilePath>Libraries\drivers\fsl_ewm.c</FilePath> </File> - </Files> - <Files> <File> <FileName>fsl_flexcan.c</FileName> <FileType>1</FileType> <FilePath>Libraries\drivers\fsl_flexcan.c</FilePath> </File> - </Files> - <Files> <File> <FileName>fsl_flexio.c</FileName> <FileType>1</FileType> <FilePath>Libraries\drivers\fsl_flexio.c</FilePath> </File> - </Files> - <Files> <File> <FileName>fsl_flexio_i2c_master.c</FileName> <FileType>1</FileType> <FilePath>Libraries\drivers\fsl_flexio_i2c_master.c</FilePath> </File> - </Files> - <Files> <File> <FileName>fsl_flexio_i2s.c</FileName> <FileType>1</FileType> <FilePath>Libraries\drivers\fsl_flexio_i2s.c</FilePath> </File> - </Files> - <Files> <File> <FileName>fsl_flexio_i2s_edma.c</FileName> <FileType>1</FileType> <FilePath>Libraries\drivers\fsl_flexio_i2s_edma.c</FilePath> </File> - </Files> - <Files> <File> <FileName>fsl_flexio_spi.c</FileName> <FileType>1</FileType> <FilePath>Libraries\drivers\fsl_flexio_spi.c</FilePath> </File> - </Files> - <Files> <File> <FileName>fsl_flexio_spi_edma.c</FileName> <FileType>1</FileType> <FilePath>Libraries\drivers\fsl_flexio_spi_edma.c</FilePath> </File> - </Files> - <Files> <File> <FileName>fsl_flexio_uart.c</FileName> <FileType>1</FileType> <FilePath>Libraries\drivers\fsl_flexio_uart.c</FilePath> </File> - </Files> - <Files> <File> <FileName>fsl_flexio_uart_edma.c</FileName> <FileType>1</FileType> <FilePath>Libraries\drivers\fsl_flexio_uart_edma.c</FilePath> </File> - </Files> - <Files> <File> <FileName>fsl_flexram.c</FileName> <FileType>1</FileType> <FilePath>Libraries\drivers\fsl_flexram.c</FilePath> </File> - </Files> - <Files> <File> <FileName>fsl_flexspi.c</FileName> <FileType>1</FileType> <FilePath>Libraries\drivers\fsl_flexspi.c</FilePath> </File> - </Files> - <Files> <File> <FileName>fsl_gpc.c</FileName> <FileType>1</FileType> <FilePath>Libraries\drivers\fsl_gpc.c</FilePath> </File> - </Files> - <Files> <File> <FileName>fsl_gpio.c</FileName> <FileType>1</FileType> <FilePath>Libraries\drivers\fsl_gpio.c</FilePath> </File> - </Files> - <Files> <File> <FileName>fsl_gpt.c</FileName> <FileType>1</FileType> <FilePath>Libraries\drivers\fsl_gpt.c</FilePath> </File> - </Files> - <Files> <File> <FileName>fsl_kpp.c</FileName> <FileType>1</FileType> <FilePath>Libraries\drivers\fsl_kpp.c</FilePath> </File> - </Files> - <Files> <File> <FileName>fsl_lpi2c.c</FileName> <FileType>1</FileType> <FilePath>Libraries\drivers\fsl_lpi2c.c</FilePath> </File> - </Files> - <Files> <File> <FileName>fsl_lpi2c_edma.c</FileName> <FileType>1</FileType> <FilePath>Libraries\drivers\fsl_lpi2c_edma.c</FilePath> </File> - </Files> - <Files> <File> <FileName>fsl_lpspi.c</FileName> <FileType>1</FileType> <FilePath>Libraries\drivers\fsl_lpspi.c</FilePath> </File> - </Files> - <Files> <File> <FileName>fsl_lpspi_edma.c</FileName> <FileType>1</FileType> <FilePath>Libraries\drivers\fsl_lpspi_edma.c</FilePath> </File> - </Files> - <Files> <File> <FileName>fsl_lpuart.c</FileName> <FileType>1</FileType> <FilePath>Libraries\drivers\fsl_lpuart.c</FilePath> </File> - </Files> - <Files> <File> <FileName>fsl_lpuart_edma.c</FileName> <FileType>1</FileType> <FilePath>Libraries\drivers\fsl_lpuart_edma.c</FilePath> </File> - </Files> - <Files> <File> <FileName>fsl_pit.c</FileName> <FileType>1</FileType> <FilePath>Libraries\drivers\fsl_pit.c</FilePath> </File> - </Files> - <Files> <File> <FileName>fsl_pmu.c</FileName> <FileType>1</FileType> <FilePath>Libraries\drivers\fsl_pmu.c</FilePath> </File> - </Files> - <Files> <File> <FileName>fsl_pwm.c</FileName> <FileType>1</FileType> <FilePath>Libraries\drivers\fsl_pwm.c</FilePath> </File> - </Files> - <Files> <File> <FileName>fsl_pxp.c</FileName> <FileType>1</FileType> <FilePath>Libraries\drivers\fsl_pxp.c</FilePath> </File> - </Files> - <Files> <File> <FileName>fsl_qtmr.c</FileName> <FileType>1</FileType> <FilePath>Libraries\drivers\fsl_qtmr.c</FilePath> </File> - </Files> - <Files> <File> <FileName>fsl_rtwdog.c</FileName> <FileType>1</FileType> <FilePath>Libraries\drivers\fsl_rtwdog.c</FilePath> </File> - </Files> - <Files> <File> <FileName>fsl_sai.c</FileName> <FileType>1</FileType> <FilePath>Libraries\drivers\fsl_sai.c</FilePath> </File> - </Files> - <Files> <File> <FileName>fsl_sai_edma.c</FileName> <FileType>1</FileType> <FilePath>Libraries\drivers\fsl_sai_edma.c</FilePath> </File> - </Files> - <Files> <File> <FileName>fsl_semc.c</FileName> <FileType>1</FileType> <FilePath>Libraries\drivers\fsl_semc.c</FilePath> </File> - </Files> - <Files> <File> <FileName>fsl_snvs_hp.c</FileName> <FileType>1</FileType> <FilePath>Libraries\drivers\fsl_snvs_hp.c</FilePath> </File> - </Files> - <Files> <File> <FileName>fsl_snvs_lp.c</FileName> <FileType>1</FileType> <FilePath>Libraries\drivers\fsl_snvs_lp.c</FilePath> </File> - </Files> - <Files> <File> <FileName>fsl_spdif.c</FileName> <FileType>1</FileType> <FilePath>Libraries\drivers\fsl_spdif.c</FilePath> </File> - </Files> - <Files> <File> <FileName>fsl_spdif_edma.c</FileName> <FileType>1</FileType> <FilePath>Libraries\drivers\fsl_spdif_edma.c</FilePath> </File> - </Files> - <Files> <File> <FileName>fsl_src.c</FileName> <FileType>1</FileType> <FilePath>Libraries\drivers\fsl_src.c</FilePath> </File> - </Files> - <Files> <File> <FileName>fsl_trng.c</FileName> <FileType>1</FileType> <FilePath>Libraries\drivers\fsl_trng.c</FilePath> </File> - </Files> - <Files> <File> <FileName>fsl_tsc.c</FileName> <FileType>1</FileType> <FilePath>Libraries\drivers\fsl_tsc.c</FilePath> </File> - </Files> - <Files> <File> <FileName>fsl_usdhc.c</FileName> <FileType>1</FileType> <FilePath>Libraries\drivers\fsl_usdhc.c</FilePath> </File> - </Files> - <Files> <File> <FileName>fsl_wdog.c</FileName> <FileType>1</FileType> <FilePath>Libraries\drivers\fsl_wdog.c</FilePath> </File> - </Files> - <Files> <File> <FileName>fsl_xbara.c</FileName> <FileType>1</FileType> <FilePath>Libraries\drivers\fsl_xbara.c</FilePath> </File> - </Files> - <Files> <File> <FileName>fsl_xbarb.c</FileName> <FileType>1</FileType> <FilePath>Libraries\drivers\fsl_xbarb.c</FilePath> </File> - </Files> - <Files> <File> <FileName>system_MIMXRT1052.c</FileName> <FileType>1</FileType> <FilePath>Libraries\system_MIMXRT1052.c</FilePath> </File> - </Files> - <Files> <File> <FileName>startup_MIMXRT1052.s</FileName> <FileType>2</FileType> @@ -923,85 +788,61 @@ <FileType>1</FileType> <FilePath>..\..\src\clock.c</FilePath> </File> - </Files> - <Files> <File> <FileName>components.c</FileName> <FileType>1</FileType> <FilePath>..\..\src\components.c</FilePath> </File> - </Files> - <Files> <File> <FileName>device.c</FileName> <FileType>1</FileType> <FilePath>..\..\src\device.c</FilePath> </File> - </Files> - <Files> <File> <FileName>idle.c</FileName> <FileType>1</FileType> <FilePath>..\..\src\idle.c</FilePath> </File> - </Files> - <Files> <File> <FileName>ipc.c</FileName> <FileType>1</FileType> <FilePath>..\..\src\ipc.c</FilePath> </File> - </Files> - <Files> <File> <FileName>irq.c</FileName> <FileType>1</FileType> <FilePath>..\..\src\irq.c</FilePath> </File> - </Files> - <Files> <File> <FileName>kservice.c</FileName> <FileType>1</FileType> <FilePath>..\..\src\kservice.c</FilePath> </File> - </Files> - <Files> <File> <FileName>memheap.c</FileName> <FileType>1</FileType> <FilePath>..\..\src\memheap.c</FilePath> </File> - </Files> - <Files> <File> <FileName>object.c</FileName> <FileType>1</FileType> <FilePath>..\..\src\object.c</FilePath> </File> - </Files> - <Files> <File> <FileName>scheduler.c</FileName> <FileType>1</FileType> <FilePath>..\..\src\scheduler.c</FilePath> </File> - </Files> - <Files> <File> <FileName>signal.c</FileName> <FileType>1</FileType> <FilePath>..\..\src\signal.c</FilePath> </File> - </Files> - <Files> <File> <FileName>thread.c</FileName> <FileType>1</FileType> <FilePath>..\..\src\thread.c</FilePath> </File> - </Files> - <Files> <File> <FileName>timer.c</FileName> <FileType>1</FileType> @@ -1017,29 +858,21 @@ <FileType>1</FileType> <FilePath>..\..\libcpu\arm\cortex-m7\cpuport.c</FilePath> </File> - </Files> - <Files> <File> <FileName>context_rvds.S</FileName> <FileType>2</FileType> <FilePath>..\..\libcpu\arm\cortex-m7\context_rvds.S</FilePath> </File> - </Files> - <Files> <File> <FileName>backtrace.c</FileName> <FileType>1</FileType> <FilePath>..\..\libcpu\arm\common\backtrace.c</FilePath> </File> - </Files> - <Files> <File> <FileName>div0.c</FileName> <FileType>1</FileType> <FilePath>..\..\libcpu\arm\common\div0.c</FilePath> </File> - </Files> - <Files> <File> <FileName>showmem.c</FileName> <FileType>1</FileType> @@ -1055,50 +888,36 @@ <FileType>1</FileType> <FilePath>..\..\components\dfs\src\dfs.c</FilePath> </File> - </Files> - <Files> <File> <FileName>dfs_file.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\dfs\src\dfs_file.c</FilePath> </File> - </Files> - <Files> <File> <FileName>dfs_fs.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\dfs\src\dfs_fs.c</FilePath> </File> - </Files> - <Files> <File> <FileName>dfs_posix.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\dfs\src\dfs_posix.c</FilePath> </File> - </Files> - <Files> <File> <FileName>devfs.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\dfs\filesystems\devfs\devfs.c</FilePath> </File> - </Files> - <Files> <File> <FileName>dfs_elm.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\dfs\filesystems\elmfat\dfs_elm.c</FilePath> </File> - </Files> - <Files> <File> <FileName>ff.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\dfs\filesystems\elmfat\ff.c</FilePath> </File> - </Files> - <Files> <File> <FileName>ccsbcs.c</FileName> <FileType>1</FileType> @@ -1108,151 +927,171 @@ </Group> <Group> <GroupName>DeviceDrivers</GroupName> + <GroupOption> + <CommonProperty> + <UseCPPCompiler>0</UseCPPCompiler> + <RVCTCodeConst>0</RVCTCodeConst> + <RVCTZI>0</RVCTZI> + <RVCTOtherData>0</RVCTOtherData> + <ModuleSelection>0</ModuleSelection> + <IncludeInBuild>1</IncludeInBuild> + <AlwaysBuild>0</AlwaysBuild> + <GenerateAssemblyFile>0</GenerateAssemblyFile> + <AssembleAssemblyFile>0</AssembleAssemblyFile> + <PublicsOnly>0</PublicsOnly> + <StopOnExitCode>3</StopOnExitCode> + <CustomArgument></CustomArgument> + <IncludeLibraryModules></IncludeLibraryModules> + <ComprImg>0</ComprImg> + </CommonProperty> + <GroupArmAds> + <Cads> + <interw>2</interw> + <Optim>0</Optim> + <oTime>2</oTime> + <SplitLS>2</SplitLS> + <OneElfS>2</OneElfS> + <Strict>2</Strict> + <EnumInt>2</EnumInt> + <PlainCh>2</PlainCh> + <Ropi>2</Ropi> + <Rwpi>2</Rwpi> + <wLevel>0</wLevel> + <uThumb>2</uThumb> + <uSurpInc>2</uSurpInc> + <uC99>2</uC99> + <useXO>2</useXO> + <v6Lang>0</v6Lang> + <v6LangP>0</v6LangP> + <vShortEn>2</vShortEn> + <vShortWch>2</vShortWch> + <v6Lto>2</v6Lto> + <v6WtE>2</v6WtE> + <v6Rtti>2</v6Rtti> + <VariousControls> + <MiscControls></MiscControls> + <Define> </Define> + <Undefine> </Undefine> + <IncludePath></IncludePath> + </VariousControls> + </Cads> + <Aads> + <interw>2</interw> + <Ropi>2</Ropi> + <Rwpi>2</Rwpi> + <thumb>2</thumb> + <SplitLS>2</SplitLS> + <SwStkChk>2</SwStkChk> + <NoWarn>2</NoWarn> + <uSurpInc>2</uSurpInc> + <useXO>2</useXO> + <uClangAs>2</uClangAs> + <VariousControls> + <MiscControls></MiscControls> + <Define></Define> + <Undefine></Undefine> + <IncludePath></IncludePath> + </VariousControls> + </Aads> + </GroupArmAds> + </GroupOption> <Files> <File> <FileName>i2c_core.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\drivers\i2c\i2c_core.c</FilePath> </File> - </Files> - <Files> <File> <FileName>i2c_dev.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\drivers\i2c\i2c_dev.c</FilePath> </File> - </Files> - <Files> <File> <FileName>i2c-bit-ops.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\drivers\i2c\i2c-bit-ops.c</FilePath> </File> - </Files> - <Files> <File> <FileName>pin.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\drivers\misc\pin.c</FilePath> </File> - </Files> - <Files> <File> <FileName>rtc.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\drivers\rtc\rtc.c</FilePath> </File> - </Files> - <Files> <File> <FileName>block_dev.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\drivers\sdio\block_dev.c</FilePath> </File> - </Files> - <Files> <File> <FileName>mmcsd_core.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\drivers\sdio\mmcsd_core.c</FilePath> </File> - </Files> - <Files> <File> <FileName>sd.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\drivers\sdio\sd.c</FilePath> </File> - </Files> - <Files> <File> <FileName>sdio.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\drivers\sdio\sdio.c</FilePath> </File> - </Files> - <Files> <File> <FileName>mmc.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\drivers\sdio\mmc.c</FilePath> </File> - </Files> - <Files> <File> <FileName>serial.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\drivers\serial\serial.c</FilePath> </File> - </Files> - <Files> <File> <FileName>spi_core.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\drivers\spi\spi_core.c</FilePath> </File> - </Files> - <Files> <File> <FileName>spi_dev.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\drivers\spi\spi_dev.c</FilePath> </File> - </Files> - <Files> <File> <FileName>completion.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\drivers\src\completion.c</FilePath> </File> - </Files> - <Files> <File> <FileName>dataqueue.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\drivers\src\dataqueue.c</FilePath> </File> - </Files> - <Files> <File> <FileName>pipe.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\drivers\src\pipe.c</FilePath> </File> - </Files> - <Files> <File> <FileName>ringbuffer.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\drivers\src\ringbuffer.c</FilePath> </File> - </Files> - <Files> <File> <FileName>waitqueue.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\drivers\src\waitqueue.c</FilePath> </File> - </Files> - <Files> <File> <FileName>workqueue.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\drivers\src\workqueue.c</FilePath> </File> </Files> - <GroupOption> - <GroupArmAds> - <Cads> - <VariousControls> - <MiscControls /> - <Define> </Define> - <Undefine> </Undefine> - <IncludePath> </IncludePath> - </VariousControls> - </Cads> - </GroupArmAds> - </GroupOption> </Group> <Group> <GroupName>finsh</GroupName> @@ -1262,106 +1101,76 @@ <FileType>1</FileType> <FilePath>..\..\components\finsh\shell.c</FilePath> </File> - </Files> - <Files> <File> <FileName>symbol.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\finsh\symbol.c</FilePath> </File> - </Files> - <Files> <File> <FileName>cmd.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\finsh\cmd.c</FilePath> </File> - </Files> - <Files> <File> <FileName>msh.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\finsh\msh.c</FilePath> </File> - </Files> - <Files> <File> <FileName>msh_cmd.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\finsh\msh_cmd.c</FilePath> </File> - </Files> - <Files> <File> <FileName>msh_file.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\finsh\msh_file.c</FilePath> </File> - </Files> - <Files> <File> <FileName>finsh_compiler.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\finsh\finsh_compiler.c</FilePath> </File> - </Files> - <Files> <File> <FileName>finsh_error.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\finsh\finsh_error.c</FilePath> </File> - </Files> - <Files> <File> <FileName>finsh_heap.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\finsh\finsh_heap.c</FilePath> </File> - </Files> - <Files> <File> <FileName>finsh_init.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\finsh\finsh_init.c</FilePath> </File> - </Files> - <Files> <File> <FileName>finsh_node.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\finsh\finsh_node.c</FilePath> </File> - </Files> - <Files> <File> <FileName>finsh_ops.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\finsh\finsh_ops.c</FilePath> </File> - </Files> - <Files> <File> <FileName>finsh_parser.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\finsh\finsh_parser.c</FilePath> </File> - </Files> - <Files> <File> <FileName>finsh_var.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\finsh\finsh_var.c</FilePath> </File> - </Files> - <Files> <File> <FileName>finsh_vm.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\finsh\finsh_vm.c</FilePath> </File> - </Files> - <Files> <File> <FileName>finsh_token.c</FileName> <FileType>1</FileType> @@ -1377,36 +1186,26 @@ <FileType>1</FileType> <FilePath>..\..\components\libc\compilers\armlibc\libc.c</FilePath> </File> - </Files> - <Files> <File> <FileName>libc_syms.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\libc\compilers\armlibc\libc_syms.c</FilePath> </File> - </Files> - <Files> <File> <FileName>mem_std.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\libc\compilers\armlibc\mem_std.c</FilePath> </File> - </Files> - <Files> <File> <FileName>stdio.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\libc\compilers\armlibc\stdio.c</FilePath> </File> - </Files> - <Files> <File> <FileName>stubs.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\libc\compilers\armlibc\stubs.c</FilePath> </File> - </Files> - <Files> <File> <FileName>time.c</FileName> <FileType>1</FileType> @@ -1422,246 +1221,176 @@ <FileType>1</FileType> <FilePath>..\..\components\net\lwip-2.0.2\src\arch\sys_arch.c</FilePath> </File> - </Files> - <Files> <File> <FileName>api_lib.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\net\lwip-2.0.2\src\api\api_lib.c</FilePath> </File> - </Files> - <Files> <File> <FileName>api_msg.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\net\lwip-2.0.2\src\api\api_msg.c</FilePath> </File> - </Files> - <Files> <File> <FileName>err.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\net\lwip-2.0.2\src\api\err.c</FilePath> </File> - </Files> - <Files> <File> <FileName>netbuf.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\net\lwip-2.0.2\src\api\netbuf.c</FilePath> </File> - </Files> - <Files> <File> <FileName>netdb.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\net\lwip-2.0.2\src\api\netdb.c</FilePath> </File> - </Files> - <Files> <File> <FileName>netifapi.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\net\lwip-2.0.2\src\api\netifapi.c</FilePath> </File> - </Files> - <Files> <File> <FileName>sockets.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\net\lwip-2.0.2\src\api\sockets.c</FilePath> </File> - </Files> - <Files> <File> <FileName>tcpip.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\net\lwip-2.0.2\src\api\tcpip.c</FilePath> </File> - </Files> - <Files> <File> <FileName>def.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\net\lwip-2.0.2\src\core\def.c</FilePath> </File> - </Files> - <Files> <File> <FileName>dns.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\net\lwip-2.0.2\src\core\dns.c</FilePath> </File> - </Files> - <Files> <File> <FileName>inet_chksum.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\net\lwip-2.0.2\src\core\inet_chksum.c</FilePath> </File> - </Files> - <Files> <File> <FileName>init.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\net\lwip-2.0.2\src\core\init.c</FilePath> </File> - </Files> - <Files> <File> <FileName>ip.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\net\lwip-2.0.2\src\core\ip.c</FilePath> </File> - </Files> - <Files> <File> <FileName>memp.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\net\lwip-2.0.2\src\core\memp.c</FilePath> </File> - </Files> - <Files> <File> <FileName>netif.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\net\lwip-2.0.2\src\core\netif.c</FilePath> </File> - </Files> - <Files> <File> <FileName>pbuf.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\net\lwip-2.0.2\src\core\pbuf.c</FilePath> </File> - </Files> - <Files> <File> <FileName>raw.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\net\lwip-2.0.2\src\core\raw.c</FilePath> </File> - </Files> - <Files> <File> <FileName>stats.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\net\lwip-2.0.2\src\core\stats.c</FilePath> </File> - </Files> - <Files> <File> <FileName>sys.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\net\lwip-2.0.2\src\core\sys.c</FilePath> </File> - </Files> - <Files> <File> <FileName>tcp.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\net\lwip-2.0.2\src\core\tcp.c</FilePath> </File> - </Files> - <Files> <File> <FileName>tcp_in.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\net\lwip-2.0.2\src\core\tcp_in.c</FilePath> </File> - </Files> - <Files> <File> <FileName>tcp_out.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\net\lwip-2.0.2\src\core\tcp_out.c</FilePath> </File> - </Files> - <Files> <File> <FileName>timeouts.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\net\lwip-2.0.2\src\core\timeouts.c</FilePath> </File> - </Files> - <Files> <File> <FileName>udp.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\net\lwip-2.0.2\src\core\udp.c</FilePath> </File> - </Files> - <Files> <File> <FileName>ethernet.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\net\lwip-2.0.2\src\netif\ethernet.c</FilePath> </File> - </Files> - <Files> <File> <FileName>ethernetif.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\net\lwip-2.0.2\src\netif\ethernetif.c</FilePath> </File> - </Files> - <Files> <File> <FileName>lowpan6.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\net\lwip-2.0.2\src\netif\lowpan6.c</FilePath> </File> - </Files> - <Files> <File> <FileName>autoip.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\net\lwip-2.0.2\src\core\ipv4\autoip.c</FilePath> </File> - </Files> - <Files> <File> <FileName>dhcp.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\net\lwip-2.0.2\src\core\ipv4\dhcp.c</FilePath> </File> - </Files> - <Files> <File> <FileName>etharp.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\net\lwip-2.0.2\src\core\ipv4\etharp.c</FilePath> </File> - </Files> - <Files> <File> <FileName>icmp.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\net\lwip-2.0.2\src\core\ipv4\icmp.c</FilePath> </File> - </Files> - <Files> <File> <FileName>igmp.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\net\lwip-2.0.2\src\core\ipv4\igmp.c</FilePath> </File> - </Files> - <Files> <File> <FileName>ip4.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\net\lwip-2.0.2\src\core\ipv4\ip4.c</FilePath> </File> - </Files> - <Files> <File> <FileName>ip4_addr.c</FileName> <FileType>1</FileType> <FilePath>..\..\components\net\lwip-2.0.2\src\core\ipv4\ip4_addr.c</FilePath> </File> - </Files> - <Files> <File> <FileName>ip4_frag.c</FileName> <FileType>1</FileType> @@ -1669,19 +1398,24 @@ </File> </Files> </Group> + <Group> + <GroupName>::CMSIS</GroupName> + </Group> </Groups> </Target> </Targets> + <RTE> - <apis /> + <apis/> <components> <component Cclass="CMSIS" Cgroup="CORE" Cvendor="ARM" Cversion="5.0.2" condition="ARMv6_7_8-M Device"> - <package name="CMSIS" schemaVersion="1.3" url="http://www.keil.com/pack/" vendor="ARM" version="5.1.0" /> + <package name="CMSIS" schemaVersion="1.3" url="http://www.keil.com/pack/" vendor="ARM" version="5.1.0"/> <targetInfos> - <targetInfo name="RT-Thread IMXRT1052" /> + <targetInfo name="RT-Thread IMXRT1052"/> </targetInfos> </component> </components> - <files /> + <files/> </RTE> + </Project> diff --git a/bsp/imxrt1052-evk/rtconfig.h b/bsp/imxrt1052-evk/rtconfig.h index 0520b50f88..25d8447467 100644 --- a/bsp/imxrt1052-evk/rtconfig.h +++ b/bsp/imxrt1052-evk/rtconfig.h @@ -200,20 +200,36 @@ #define RT_USING_UART1 -/* Select spi bus drivers */ +/* Select spi bus and dev drivers */ #define LPSPI_CLK_SOURCE_FROM_PLL3PFD1 #define LPSPI_CLK_SOURCE 0 -#define LPSPI_CLK_SOURCE_DIVIDER 7 +#define LPSPI_CLK_SOURCE_DIVIDER 8 #define RT_USING_SPIBUS4 #define LPSPI4_SCK_GPIO_1 #define LPSPI4_SDO_GPIO_1 #define LPSPI4_SDI_GPIO_1 -/* Select iic drivers */ +/* Select i2c bus drivers */ #define LPI2C_CLOCK_SOURCE_DIVIDER 4 #define RT_USING_I2C1 + +/* Select lcd driver */ + +/* Notice: Evk Board para: 480*272 4 4 8 2 40 10 106 45 */ + +#define RT_USING_LCD +#define LCD_WIDTH 480 +#define LCD_HEIGHT 272 +#define LCD_HFP 4 +#define LCD_VFP 4 +#define LCD_HBP 8 +#define LCD_VBP 2 +#define LCD_HSW 40 +#define LCD_VSW 10 +#define LCD_BL_PIN 106 +#define LCD_RST_PIN 45 #define RT_USING_SDRAM #define RT_USING_RTC_HP |
