summaryrefslogtreecommitdiff
path: root/bsp
diff options
context:
space:
mode:
authorliu2guang <[email protected]>2018-04-13 00:50:19 +0800
committerliu2guang <[email protected]>2018-04-13 10:40:53 +0800
commitf9e58990efbdbfcba1abe8fed035dde1d64c9312 (patch)
treef2d7f8ea58821839c65dbc2474dff2aae698c4d3 /bsp
parent8ea0ea9105b4e8ab49ec14c0c834562042cceffa (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/.config35
-rw-r--r--bsp/imxrt1052-evk/Kconfig159
-rw-r--r--bsp/imxrt1052-evk/Libraries/SConscript6
-rw-r--r--bsp/imxrt1052-evk/drivers/SConscript24
-rw-r--r--bsp/imxrt1052-evk/drivers/board.c20
-rw-r--r--bsp/imxrt1052-evk/drivers/drv_ft5406.c2
-rw-r--r--bsp/imxrt1052-evk/drivers/drv_lcd.c784
-rw-r--r--bsp/imxrt1052-evk/drivers/drv_lcd.h28
-rw-r--r--bsp/imxrt1052-evk/drivers/drv_spi_bus.c11
-rw-r--r--bsp/imxrt1052-evk/drivers/drv_spi_flash.c51
-rw-r--r--bsp/imxrt1052-evk/drivers/drv_spi_flash.h23
-rw-r--r--bsp/imxrt1052-evk/project.uvprojx542
-rw-r--r--bsp/imxrt1052-evk/rtconfig.h22
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