diff --git a/bsp/imx6ul/.config b/bsp/imx6ul/.config index 0068adc43f4cbe6540bcc462d279f1b2326e88ff..8683f2fc916a422bb6787daf1533a62aa4f1a122 100644 --- a/bsp/imx6ul/.config +++ b/bsp/imx6ul/.config @@ -23,7 +23,7 @@ CONFIG_RT_IDLE_HOOK_LIST_SIZE=4 CONFIG_IDLE_THREAD_STACK_SIZE=256 # CONFIG_RT_USING_TIMER_SOFT is not set CONFIG_RT_DEBUG=y -# CONFIG_RT_DEBUG_COLOR is not set +CONFIG_RT_DEBUG_COLOR=y # CONFIG_RT_DEBUG_INIT_CONFIG is not set # CONFIG_RT_DEBUG_THREAD_CONFIG is not set # CONFIG_RT_DEBUG_SCHEDULER_CONFIG is not set @@ -64,8 +64,8 @@ CONFIG_RT_USING_DEVICE=y # CONFIG_RT_USING_INTERRUPT_INFO is not set CONFIG_RT_USING_CONSOLE=y CONFIG_RT_CONSOLEBUF_SIZE=128 -CONFIG_RT_CONSOLE_DEVICE_NAME="uart" -CONFIG_RT_VER_NUM=0x40002 +CONFIG_RT_CONSOLE_DEVICE_NAME="uart1" +CONFIG_RT_VER_NUM=0x40003 CONFIG_ARCH_ARM=y # CONFIG_RT_USING_CPU_FFS is not set CONFIG_ARCH_ARM_CORTEX_A=y @@ -76,7 +76,9 @@ CONFIG_ARCH_ARM_CORTEX_A7=y # RT-Thread Components # CONFIG_RT_USING_COMPONENTS_INIT=y -# CONFIG_RT_USING_USER_MAIN is not set +CONFIG_RT_USING_USER_MAIN=y +CONFIG_RT_MAIN_THREAD_STACK_SIZE=2048 +CONFIG_RT_MAIN_THREAD_PRIORITY=10 # # C++ features @@ -211,9 +213,13 @@ CONFIG_RT_USING_POSIX=y # IoT - internet of things # # CONFIG_PKG_USING_PAHOMQTT is not set +# CONFIG_PKG_USING_UMQTT is not set # CONFIG_PKG_USING_WEBCLIENT is not set # CONFIG_PKG_USING_WEBNET is not set # CONFIG_PKG_USING_MONGOOSE is not set +# CONFIG_PKG_USING_MYMQTT is not set +# CONFIG_PKG_USING_KAWAII_MQTT is not set +# CONFIG_PKG_USING_BC28_MQTT is not set # CONFIG_PKG_USING_WEBTERMINAL is not set # CONFIG_PKG_USING_CJSON is not set # CONFIG_PKG_USING_JSMN is not set @@ -240,6 +246,8 @@ CONFIG_RT_USING_POSIX=y # CONFIG_PKG_USING_COAP is not set # CONFIG_PKG_USING_NOPOLL is not set # CONFIG_PKG_USING_NETUTILS is not set +# CONFIG_PKG_USING_CMUX is not set +# CONFIG_PKG_USING_PPP_DEVICE is not set # CONFIG_PKG_USING_AT_DEVICE is not set # CONFIG_PKG_USING_ATSRV_SOCKET is not set # CONFIG_PKG_USING_WIZNET is not set @@ -251,8 +259,10 @@ CONFIG_RT_USING_POSIX=y # CONFIG_PKG_USING_GAGENT_CLOUD is not set # CONFIG_PKG_USING_ALI_IOTKIT is not set # CONFIG_PKG_USING_AZURE is not set -# CONFIG_PKG_USING_TENCENT_IOTHUB is not set +# CONFIG_PKG_USING_TENCENT_IOT_EXPLORER is not set # CONFIG_PKG_USING_JIOT-C-SDK is not set +# CONFIG_PKG_USING_UCLOUD_IOT_SDK is not set +# CONFIG_PKG_USING_JOYLINK is not set # CONFIG_PKG_USING_NIMBLE is not set # CONFIG_PKG_USING_OTA_DOWNLOADER is not set # CONFIG_PKG_USING_IPMSG is not set @@ -263,6 +273,14 @@ CONFIG_RT_USING_POSIX=y # CONFIG_PKG_USING_PROTOBUF_C is not set # CONFIG_PKG_USING_ONNX_PARSER is not set # CONFIG_PKG_USING_ONNX_BACKEND is not set +# CONFIG_PKG_USING_DLT645 is not set +# CONFIG_PKG_USING_QXWZ is not set +# CONFIG_PKG_USING_SMTP_CLIENT is not set +# CONFIG_PKG_USING_ABUP_FOTA is not set +# CONFIG_PKG_USING_LIBCURL2RTT is not set +# CONFIG_PKG_USING_CAPNP is not set +# CONFIG_PKG_USING_RT_CJSON_TOOLS is not set +# CONFIG_PKG_USING_AGILE_TELNET is not set # # security packages @@ -270,6 +288,7 @@ CONFIG_RT_USING_POSIX=y # CONFIG_PKG_USING_MBEDTLS is not set # CONFIG_PKG_USING_libsodium is not set # CONFIG_PKG_USING_TINYCRYPT is not set +# CONFIG_PKG_USING_TFM is not set # # language packages @@ -298,6 +317,13 @@ CONFIG_RT_USING_POSIX=y # CONFIG_PKG_USING_QRCODE is not set # CONFIG_PKG_USING_ULOG_EASYFLASH is not set # CONFIG_PKG_USING_ADBD is not set +# CONFIG_PKG_USING_COREMARK is not set +# CONFIG_PKG_USING_DHRYSTONE is not set +# CONFIG_PKG_USING_NR_MICRO_SHELL is not set +# CONFIG_PKG_USING_CHINESE_FONT_LIBRARY is not set +# CONFIG_PKG_USING_LUNAR_CALENDAR is not set +# CONFIG_PKG_USING_BS8116A is not set +# CONFIG_PKG_USING_URLENCODE is not set # # system packages @@ -309,6 +335,7 @@ CONFIG_RT_USING_POSIX=y # CONFIG_PKG_USING_LWEXT4 is not set # CONFIG_PKG_USING_PARTITION is not set # CONFIG_PKG_USING_FAL is not set +# CONFIG_PKG_USING_FLASHDB is not set # CONFIG_PKG_USING_SQLITE is not set # CONFIG_PKG_USING_RTI is not set # CONFIG_PKG_USING_LITTLEVGL2RTT is not set @@ -317,6 +344,10 @@ CONFIG_RT_USING_POSIX=y # CONFIG_PKG_USING_LITTLEFS is not set # CONFIG_PKG_USING_THREAD_POOL is not set # CONFIG_PKG_USING_ROBOTS is not set +# CONFIG_PKG_USING_EV is not set +# CONFIG_PKG_USING_SYSWATCH is not set +# CONFIG_PKG_USING_SYS_LOAD_MONITOR is not set +# CONFIG_PKG_USING_PLCCORE is not set # # peripheral libraries and drivers @@ -324,6 +355,7 @@ CONFIG_RT_USING_POSIX=y # CONFIG_PKG_USING_SENSORS_DRIVERS is not set # CONFIG_PKG_USING_REALTEK_AMEBA is not set # CONFIG_PKG_USING_SHT2X is not set +# CONFIG_PKG_USING_SHT3X is not set # CONFIG_PKG_USING_STM32_SDIO is not set # CONFIG_PKG_USING_ICM20608 is not set # CONFIG_PKG_USING_U8G2 is not set @@ -332,10 +364,16 @@ CONFIG_RT_USING_POSIX=y # CONFIG_PKG_USING_SX12XX is not set # CONFIG_PKG_USING_SIGNAL_LED is not set # CONFIG_PKG_USING_LEDBLINK is not set +# CONFIG_PKG_USING_LITTLED is not set +# CONFIG_PKG_USING_LKDGUI is not set +# CONFIG_PKG_USING_NRF5X_SDK is not set +# CONFIG_PKG_USING_NRFX is not set # CONFIG_PKG_USING_WM_LIBRARIES is not set # CONFIG_PKG_USING_KENDRYTE_SDK is not set # CONFIG_PKG_USING_INFRARED is not set # CONFIG_PKG_USING_ROSSERIAL is not set +# CONFIG_PKG_USING_AGILE_BUTTON is not set +# CONFIG_PKG_USING_AGILE_LED is not set # CONFIG_PKG_USING_AT24CXX is not set # CONFIG_PKG_USING_MOTIONDRIVER2RTT is not set # CONFIG_PKG_USING_AD7746 is not set @@ -343,8 +381,19 @@ CONFIG_RT_USING_POSIX=y # CONFIG_PKG_USING_I2C_TOOLS is not set # CONFIG_PKG_USING_NRF24L01 is not set # CONFIG_PKG_USING_TOUCH_DRIVERS is not set -# CONFIG_PKG_USING_LCD_DRIVERS is not set # CONFIG_PKG_USING_MAX17048 is not set +# CONFIG_PKG_USING_RPLIDAR is not set +# CONFIG_PKG_USING_AS608 is not set +# CONFIG_PKG_USING_RC522 is not set +# CONFIG_PKG_USING_EMBARC_BSP is not set +# CONFIG_PKG_USING_EXTERN_RTC_DRIVERS is not set +# CONFIG_PKG_USING_MULTI_RTIMER is not set +# CONFIG_PKG_USING_MAX7219 is not set +# CONFIG_PKG_USING_BEEP is not set +# CONFIG_PKG_USING_EASYBLINK is not set +# CONFIG_PKG_USING_PMS_SERIES is not set +# CONFIG_PKG_USING_CAN_YMODEM is not set +# CONFIG_PKG_USING_LORA_RADIO_DRIVER is not set # # miscellaneous packages @@ -379,4 +428,8 @@ CONFIG_RT_USING_POSIX=y # CONFIG_PKG_USING_ELAPACK is not set # CONFIG_PKG_USING_ARMv7M_DWT is not set # CONFIG_PKG_USING_VT100 is not set +# CONFIG_PKG_USING_ULAPACK is not set +# CONFIG_PKG_USING_UKAL is not set +CONFIG_RT_USING_UART1=y CONFIG_SOC_MCIMX6X4=y +# CONFIG_RT_QEMU_SUPPORT is not set diff --git a/bsp/imx6ul/Kconfig b/bsp/imx6ul/Kconfig index 9fbc95e841fd513578cc4a85d8c3d0e6d38834f4..5684aa031e41a13dfd9c46dae65b455c732db0fe 100644 --- a/bsp/imx6ul/Kconfig +++ b/bsp/imx6ul/Kconfig @@ -28,5 +28,9 @@ source "$BSP_DIR/drivers/Kconfig" config SOC_MCIMX6X4 bool select RT_USING_COMPONENTS_INIT - #select RT_USING_USER_MAIN + select RT_USING_USER_MAIN default y + +config RT_QEMU_SUPPORT + bool "Using RT_QEMU_SUPPORT" + default n diff --git a/bsp/imx6ul/README.md b/bsp/imx6ul/README.md index 3dc29e5c935e799f670a1bed885d8cce8f3c1ade..a4d8c41fea9fc83b3f10f790c81f4656199f73ad 100644 --- a/bsp/imx6ul/README.md +++ b/bsp/imx6ul/README.md @@ -1,17 +1,137 @@ -# i.MX6 SoloX +# imx6ul BSP 说明 -Freescale's Smart Application Blueprint for Rapid Engineering (SABRE) board for smart devices +标签: ARM Cortex-A7 core、qemu、mcimx6ul-evk -Rev.B +--- -CPU: MCIMX6X4EVM10AB +## 开发板介绍 -* ARM Cortex-A9 @ 1GHz -* ARM Cortex-M4 @ 200MHz +100ASK_IMX6ULL开发板是百问科技推出的基于NXP CORTEX-A7 IMX6ULL,CPU主频最高为800MHZ,采用512MB DD3L内存,该开发板具有丰富的板载资源。 -* Freescale PF0200 PMIC -* 1GB DDR3 -* 32 MB x2 QuadSPI Flash +## QEMU MCIMX6UL-ENK介绍 + +基于QEMU_v5.0.0版本,对QEMU进行改动,添加了GUI显示,添加了更多的设备模拟,让用户可以更有真实感地使用QEMU来模拟IMX6UL板子。 +qemu模拟imx6ul环境:https://gitee.com/DAI_David/qemu_imx6ull_windows.git + +## 外设支持 + +本 BSP 目前对外设的支持情况如下: + +|**片上外设** |**支持情况**|**备注** | +| :----------------- | :----------: | :------------------------------------- | +| GPIO | 支持 | 即将支持 | +| UART | 支持 | UART1/x/x | +| SPI | 暂不支持 | 即将支持 | +| I2C | 暂不支持 | 即将支持 | +| SDIO | 暂不支持 | 即将支持 | +| RTC | 暂不支持 | 即将支持 | +| PWM | 暂不支持 | 即将支持 | +| USB Device | 暂不支持 | 即将支持 | +| USB Host | 暂不支持 | 即将支持 | +| IWG | 暂不支持 | 即将支持 | +| xxx | 暂不支持 | 即将支持 | +|**板载外设** |**支持情况**|**备注** | +| 以太网 | 暂不支持 | | +| SD 卡 | 暂不支持 | | +| CAN | 暂不支持 | | +|**扩展模块** |**支持情况**|**备注** | +| xxx 模块 | 支持 | | + +## 使用说明 + +使用说明分为如下两个章节: + +- 环境准备 + + 下载rtthread env编译环境,windows环境下的Qemu,用于为后面使用qemu模拟imx6ul开发板做准备 + +- 编译RT-thread imx6ul BSP包 + + 本章节是为需要在 RT-Thread 操作系统上使用更多开发板资源的开发者准备的。通过使用 ENV 工具对 BSP 进行配置,可以开启更多板载资源,实现更多高级功能。 + +- IMX6UL开发板运行RT-Thread + + 本章节描述使用真实IMX6UL开发板运行rt-thread + +- QEMU运行结果 + + 本章节为描述使用qemu模拟IMX6UL开发运行rt-thread + +### 环境准备 +env环境:[下载 Env 工具](https://www.rt-thread.org/page/download.html) +env用户手册:[Env 用户手册](https://github.com/RT-Thread/rtthread-manual-doc/blob/master/env/env.md) +qemu环境:git clone https://gitee.com/DAI_David/qemu_imx6ull_windows.git + + +### 编译RT-thread imx6ul BSP包 + +此BSP 默认开启串口的功能,如果需使用更多功能,需要利用 ENV 工具对 BSP 进行配置,步骤如下: +1. 在 bsp 下打开 env 工具进入rt-thread\bsp\imx6ul目录。 +2. 输入 `menuconfig` 命令配置工程,配置好之后保存退出。 +3. 输入 `pkgs --update` 命令更新软件包。 +4. 输入 `scons -jn` 命令重新生成二进制文件(n为cpu线程数)。 + +### IMX6UL开发板运行RT-Thread + +操作步骤如下: +1. 在 bsp 下打开 env 工具进入rt-thread\bsp\imx6ul目录。 +2. 输入 `scons -jn`命令重新生成二进制文件(n为cpu线程数)。 +3. 将rtthread.bin使用NXP tools进行打包生成rtthread.imx,具体命令./tools/mkimage -n ./tools/imximage.cfg.cfgtmp -T imximage -e 0x80100000 -d rttread.bin rtthread.imx(该工具提供NXP和商家会提供,这里不做详细描述) +4. 烧写到开发板中 +5. 连接串口(115200-8-1-N) + +复位设备后,可以看到 RT-Thread 的输出信息: + +```text + \ | / +- RT - Thread Operating System + / | \ 4.0.3 build Jun 16 2020 + 2006 - 2020 Copyright by rt-thread team +Freescale i.MX6 Platform SDK 1.2 +CPU: 528 MHz +DDR: 396 MHz +IPG: 49 MHz +msh /> +``` + +### QEMU模拟运行 + +将绝对路径添加到PATH环境变量:(由于env工具的qemu的版本比较旧不支持mcimx6ul-evk) + +此BSP 默认支持真实开发板环境运行,如果需qemu运行,需要利用 ENV 工具对 BSP 进行配置,操作步骤如下: +1. 在 bsp 下打开 env 工具进入rt-thread\bsp\imx6ul目录。 +2. 输入 `menuconfig` 命令配置工程,在菜单中找到Using RT_QEMU_SUPPORT,开启[*] Using RT_QEMU_SUPPORT +3. 配置qemu环境变量,例如: 输入`set PATH=D:\qemu_imx6ull_windows\qemu\bin;%PATH%`(D:\qemu_imx6ull_windows\qemu\bin为下载的qemu路径) +4. 输入 `qemu.bat nogui`命令可以看到 RT-Thread 的输出信息: + +```text + \ | / +- RT - Thread Operating System + / | \ 4.0.3 build Jun 16 2020 + 2006 - 2020 Copyright by rt-thread team +Freescale i.MX6 Platform SDK 1.2 +CPU: 528 MHz +DDR: 396 MHz +IPG: 49 MHz +msh /> +``` + +## 注意事项 + +xxx + +## 维护人信息 + +- [xxx](https://github.com/xxx) +- [邮箱](xxx@xxx.com) + +## 参考资料 + +* [RT-Thread 文档中心](https://www.rt-thread.org/document/site/) + +* [xxx 开发板数据手册](http://abc.com/datasheet.pdf) + +* [xxx 开发板参考手册](http://abc.com/reference.pdf) + +* [xxx 芯片数据手册](http://abc.com/um.pdf) -* Freescale MMA8451 3-Axis Accelerometer -* Freescale MAG3110 3D Magnetometer diff --git a/bsp/imx6ul/applications/application.c b/bsp/imx6ul/applications/application.c index 98fcbfc8832d9e4cc3b5305adc688aa943548c15..bcf6e0c329ac7ea96812ecb3bbeab4c2a74e9fd2 100644 --- a/bsp/imx6ul/applications/application.c +++ b/bsp/imx6ul/applications/application.c @@ -20,22 +20,10 @@ void show_freq(void) rt_kprintf("IPG: %d MHz\n", get_main_clock(IPG_CLK)/1000000); } -void init_thread(void* parameter) +int main(void) { rt_kprintf("Freescale i.MX6 Platform SDK %s\n", SDK_VERSION_STRING); show_freq(); - rt_components_init(); -} - -int rt_application_init() -{ - rt_thread_t tid; - - tid = rt_thread_create("init", init_thread, RT_NULL, - 1024, RT_THREAD_PRIORITY_MAX/3, 10); - if (tid != RT_NULL) rt_thread_startup(tid); - return 0; } - diff --git a/bsp/imx6ul/applications/startup.c b/bsp/imx6ul/applications/startup.c deleted file mode 100644 index 4c1f83619e61328adf7cfe1b250a09bdcc1a96ae..0000000000000000000000000000000000000000 --- a/bsp/imx6ul/applications/startup.c +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright (c) 2006-2018, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2012-12-05 Bernard the first version - */ - -#include -#include - -#include - -extern int rt_application_init(void); -extern void rt_hw_board_init(void); - -/** - * This function will startup RT-Thread RTOS. - */ -void rtthread_startup(void) -{ - // platform_init(); - // print_version(); - - /* initialzie hardware interrupt */ - rt_hw_interrupt_init(); - - /* initialize board */ - rt_hw_board_init(); - - /* show RT-Thread version */ - rt_show_version(); - - /* initialize memory system */ -#ifdef RT_USING_HEAP - rt_system_heap_init(HEAP_BEGIN, HEAP_END); -#endif - - /* initialize scheduler system */ - rt_system_scheduler_init(); - - /* initialize timer and soft timer thread */ - rt_system_timer_init(); - rt_system_timer_thread_init(); - - /* initialize application */ - rt_application_init(); - - /* initialize idle thread */ - rt_thread_idle_init(); - - /* start scheduler */ - rt_system_scheduler_start(); - - /* never reach here */ - return ; -} - -int main(void) -{ - /* disable interrupt first */ - rt_hw_interrupt_disable(); - - /* invoke rtthread_startup */ - rtthread_startup(); - - return 0; -} diff --git a/bsp/imx6ul/drivers/Kconfig b/bsp/imx6ul/drivers/Kconfig index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..8033ded3ef8d0530290dfdcd636696c97da45364 100644 --- a/bsp/imx6ul/drivers/Kconfig +++ b/bsp/imx6ul/drivers/Kconfig @@ -0,0 +1,3 @@ +config RT_USING_UART1 + bool "Using RT_USING_UART1" + default y diff --git a/bsp/imx6ul/drivers/board.c b/bsp/imx6ul/drivers/board.c index 015a3709c16bf54d82f360db61f592f63a5cfc32..8204ea5f32ff43939ce9ce719df2982fd35e80f7 100644 --- a/bsp/imx6ul/drivers/board.c +++ b/bsp/imx6ul/drivers/board.c @@ -21,6 +21,7 @@ #include #include +#include struct mem_desc platform_mem_desc[] = { {0x00000000, 0x80000000, 0x00000000, DEVICE_MEM}, @@ -69,16 +70,28 @@ int rt_hw_timer_init(void) } INIT_BOARD_EXPORT(rt_hw_timer_init); +void idle_wfi(void) +{ + asm volatile ("wfi"); +} + /** * This function will initialize hardware board */ void rt_hw_board_init(void) { + /* initialize hardware interrupt */ + rt_hw_interrupt_init(); + /* initialize system heap */ + rt_system_heap_init(HEAP_BEGIN, HEAP_END); + enable_neon_fpu(); disable_strict_align_check(); rt_components_board_init(); rt_console_set_device(RT_CONSOLE_DEVICE_NAME); + + rt_thread_idle_sethook(idle_wfi); } /*@}*/ diff --git a/bsp/imx6ul/drivers/imx6ul.h b/bsp/imx6ul/drivers/imx6ul.h index 7f0db1354fbf9e3c2616e887b9f4aa28ef581cd5..aefd28144e1153343ce5e3d031c97e77c8799535 100644 --- a/bsp/imx6ul/drivers/imx6ul.h +++ b/bsp/imx6ul/drivers/imx6ul.h @@ -30,15 +30,23 @@ /* the basic constants needed by gic */ rt_inline rt_uint32_t platform_get_gic_dist_base(void) { - rt_uint32_t gic_base; + rt_uint32_t gic_base = 0x00A00000; + +#ifndef RT_QEMU_SUPPORT //The default is 0x00A00000, if RT_QEMU_SUPPORT is not defined, read the P15 register to get GIC BASE. asm volatile ("mrc p15, 4, %0, c15, c0, 0" : "=r"(gic_base)); +#endif + return gic_base + kGICDBaseOffset; } rt_inline rt_uint32_t platform_get_gic_cpu_base(void) { - rt_uint32_t gic_base; + rt_uint32_t gic_base = 0x00A00000; + +#ifndef RT_QEMU_SUPPORT //The default is 0x00A00000, if RT_QEMU_SUPPORT is not defined, read the P15 register to get GIC BASE. asm volatile ("mrc p15, 4, %0, c15, c0, 0" : "=r"(gic_base)); +#endif + return gic_base + kGICCBaseOffset; } @@ -52,9 +60,6 @@ rt_inline rt_uint32_t platform_get_gic_cpu_base(void) /* keep compatible with platform SDK */ typedef enum { CPU_0, - CPU_1, - CPU_2, - CPU_3, } cpuid_e; enum _gicd_sgi_filter diff --git a/bsp/imx6ul/platform/drivers/epit.c b/bsp/imx6ul/platform/drivers/epit.c index efc88c7865adea2aae21c1774ceae40eb7791fc4..e0c0958467d0585183a461af812400bce707e9fc 100644 --- a/bsp/imx6ul/platform/drivers/epit.c +++ b/bsp/imx6ul/platform/drivers/epit.c @@ -156,8 +156,10 @@ void epit_init(uint32_t instance, uint32_t clock_src, uint32_t prescaler, clock_gating_config(base, CLOCK_ON); // start with a known state by disabling and reseting the module +#ifndef RT_QEMU_SUPPORT // Qemu restart timer has a bug HW_EPIT_CR_WR(instance, BM_EPIT_CR_SWR); - +#endif + // wait for the reset to complete while ((HW_EPIT_CR(instance).B.SWR) != 0) ; diff --git a/bsp/imx6ul/qemu.bat b/bsp/imx6ul/qemu.bat new file mode 100644 index 0000000000000000000000000000000000000000..26965f52ce182b815e179b1bab1567b664bf6f56 --- /dev/null +++ b/bsp/imx6ul/qemu.bat @@ -0,0 +1,68 @@ +@echo off +set ROOT_DIR=%~dp0 + +set QEMU_TOOLS=qemu-system-arm.exe +set FILE=rtthread-imx6.elf +set RUN_TYPE=%1 + +rem parameter setting +set MACHINES=mcimx6ul-evk -smp cpus=1 +set NO_DISPLAY=-nographic +set DISPLAY=-display sdl -show-cursor +set SERIAL_PORT=mon:stdio +set NETWORK=-nic user + +if exist %FILE% goto run +call scons -j4 + +:run + +if "%RUN_TYPE%"=="" ( + goto _help +) else ( + goto _start +) + +:_help +set var="" +echo "help(%0 [gui|nogui|debug]):" +echo " 1. gui" +echo " 2. nogui" +echo " 3. debug" +set /p var=Please input manually: +if "%var%"=="1" ( + goto gui_start +) else if "%var%"=="2" ( + goto nogui_start +) else if "%var%"=="3" ( + goto debug_start +) else ( + echo "Input error!" + goto _help +) + +:_start +if "%RUN_TYPE%"=="gui" ( + goto gui_start +) else if "%RUN_TYPE%"=="nogui" ( + goto nogui_start +) else if "%RUN_TYPE%"=="debug" ( + goto debug_start +) else ( + goto _help +) + +:gui_start +%QEMU_TOOLS% -M %MACHINES% -kernel %FILE% %DISPLAY% -serial %SERIAL_PORT% %NETWORK% +goto end + +:nogui_start +%QEMU_TOOLS% -M %MACHINES% -kernel %FILE% %NO_DISPLAY% -serial %SERIAL_PORT% %NETWORK% +goto end + +:debug_start +%QEMU_TOOLS% -M %MACHINES% -m 512M -kernel %FILE% %NO_DISPLAY% -serial %SERIAL_PORT% %NETWORK% -S -s +goto end + +:end +pause \ No newline at end of file diff --git a/bsp/imx6ul/rtconfig.h b/bsp/imx6ul/rtconfig.h index 19826089e27988e8645cefa70540b24bae14f7e1..3b63ce8fd9c995cc0d61c53502254cc005752d3b 100644 --- a/bsp/imx6ul/rtconfig.h +++ b/bsp/imx6ul/rtconfig.h @@ -9,12 +9,8 @@ /* RT-Thread Kernel */ #define RT_NAME_MAX 8 -/* RT_USING_ARCH_DATA_TYPE is not set */ -/* RT_USING_SMP is not set */ #define RT_ALIGN_SIZE 4 -/* RT_THREAD_PRIORITY_8 is not set */ #define RT_THREAD_PRIORITY_32 -/* RT_THREAD_PRIORITY_256 is not set */ #define RT_THREAD_PRIORITY_MAX 32 #define RT_TICK_PER_SECOND 100 #define RT_USING_OVERFLOW_CHECK @@ -22,19 +18,8 @@ #define RT_USING_IDLE_HOOK #define RT_IDLE_HOOK_LIST_SIZE 4 #define IDLE_THREAD_STACK_SIZE 256 -/* RT_USING_TIMER_SOFT is not set */ #define RT_DEBUG -/* RT_DEBUG_COLOR is not set */ -/* RT_DEBUG_INIT_CONFIG is not set */ -/* RT_DEBUG_THREAD_CONFIG is not set */ -/* RT_DEBUG_SCHEDULER_CONFIG is not set */ -/* RT_DEBUG_IPC_CONFIG is not set */ -/* RT_DEBUG_TIMER_CONFIG is not set */ -/* RT_DEBUG_IRQ_CONFIG is not set */ -/* RT_DEBUG_MEM_CONFIG is not set */ -/* RT_DEBUG_SLAB_CONFIG is not set */ -/* RT_DEBUG_MEMHEAP_CONFIG is not set */ -/* RT_DEBUG_MODULE_CONFIG is not set */ +#define RT_DEBUG_COLOR /* Inter-Thread communication */ @@ -43,41 +28,33 @@ #define RT_USING_EVENT #define RT_USING_MAILBOX #define RT_USING_MESSAGEQUEUE -/* RT_USING_SIGNALS is not set */ /* Memory Management */ #define RT_USING_MEMPOOL -/* RT_USING_MEMHEAP is not set */ -/* RT_USING_NOHEAP is not set */ #define RT_USING_SMALL_MEM -/* RT_USING_SLAB is not set */ -/* RT_USING_MEMTRACE is not set */ #define RT_USING_HEAP /* Kernel Device Object */ #define RT_USING_DEVICE -/* RT_USING_DEVICE_OPS is not set */ -/* RT_USING_INTERRUPT_INFO is not set */ #define RT_USING_CONSOLE #define RT_CONSOLEBUF_SIZE 128 -#define RT_CONSOLE_DEVICE_NAME "uart" -#define RT_VER_NUM 0x40002 +#define RT_CONSOLE_DEVICE_NAME "uart1" +#define RT_VER_NUM 0x40003 #define ARCH_ARM -/* RT_USING_CPU_FFS is not set */ #define ARCH_ARM_CORTEX_A #define ARCH_ARM_CORTEX_A7 -/* ARCH_CPU_STACK_GROWS_UPWARD is not set */ /* RT-Thread Components */ #define RT_USING_COMPONENTS_INIT -/* RT_USING_USER_MAIN is not set */ +#define RT_USING_USER_MAIN +#define RT_MAIN_THREAD_STACK_SIZE 2048 +#define RT_MAIN_THREAD_PRIORITY 10 /* C++ features */ -/* RT_USING_CPLUSPLUS is not set */ /* Command shell */ @@ -87,14 +64,11 @@ #define FINSH_HISTORY_LINES 5 #define FINSH_USING_SYMTAB #define FINSH_USING_DESCRIPTION -/* FINSH_ECHO_DISABLE_DEFAULT is not set */ #define FINSH_THREAD_PRIORITY 20 #define FINSH_THREAD_STACK_SIZE 4096 #define FINSH_CMD_SIZE 80 -/* FINSH_USING_AUTH is not set */ #define FINSH_USING_MSH #define FINSH_USING_MSH_DEFAULT -/* FINSH_USING_MSH_ONLY is not set */ #define FINSH_ARG_MAX 10 /* Device virtual file system */ @@ -104,248 +78,85 @@ #define DFS_FILESYSTEMS_MAX 2 #define DFS_FILESYSTEM_TYPES_MAX 2 #define DFS_FD_MAX 16 -/* RT_USING_DFS_MNTTABLE is not set */ -/* RT_USING_DFS_ELMFAT is not set */ #define RT_USING_DFS_DEVFS -/* RT_USING_DFS_ROMFS is not set */ -/* RT_USING_DFS_RAMFS is not set */ -/* RT_USING_DFS_UFFS is not set */ -/* RT_USING_DFS_JFFS2 is not set */ /* Device Drivers */ #define RT_USING_DEVICE_IPC #define RT_PIPE_BUFSZ 512 -/* RT_USING_SYSTEM_WORKQUEUE is not set */ #define RT_USING_SERIAL #define RT_SERIAL_USING_DMA #define RT_SERIAL_RB_BUFSZ 64 -/* RT_USING_CAN is not set */ -/* RT_USING_HWTIMER is not set */ -/* RT_USING_CPUTIME is not set */ -/* RT_USING_I2C is not set */ #define RT_USING_PIN -/* RT_USING_ADC is not set */ -/* RT_USING_PWM is not set */ -/* RT_USING_MTD_NOR is not set */ -/* RT_USING_MTD_NAND is not set */ -/* RT_USING_PM is not set */ -/* RT_USING_RTC is not set */ -/* RT_USING_SDIO is not set */ -/* RT_USING_SPI is not set */ -/* RT_USING_WDT is not set */ -/* RT_USING_AUDIO is not set */ -/* RT_USING_SENSOR is not set */ -/* RT_USING_TOUCH is not set */ -/* RT_USING_HWCRYPTO is not set */ -/* RT_USING_PULSE_ENCODER is not set */ -/* RT_USING_INPUT_CAPTURE is not set */ -/* RT_USING_WIFI is not set */ /* Using USB */ -/* RT_USING_USB_HOST is not set */ -/* RT_USING_USB_DEVICE is not set */ /* POSIX layer and C standard library */ #define RT_USING_LIBC -/* RT_USING_PTHREADS is not set */ #define RT_USING_POSIX -/* RT_USING_POSIX_MMAP is not set */ -/* RT_USING_POSIX_TERMIOS is not set */ -/* RT_USING_POSIX_AIO is not set */ -/* RT_USING_MODULE is not set */ /* Network */ /* Socket abstraction layer */ -/* RT_USING_SAL is not set */ /* Network interface device */ -/* RT_USING_NETDEV is not set */ /* light weight TCP/IP stack */ -/* RT_USING_LWIP is not set */ /* AT commands */ -/* RT_USING_AT is not set */ /* VBUS(Virtual Software BUS) */ -/* RT_USING_VBUS is not set */ /* Utilities */ -/* RT_USING_RYM is not set */ -/* RT_USING_ULOG is not set */ -/* RT_USING_UTEST is not set */ -/* RT_USING_LWP is not set */ /* RT-Thread online packages */ /* IoT - internet of things */ -/* PKG_USING_PAHOMQTT is not set */ -/* PKG_USING_WEBCLIENT is not set */ -/* PKG_USING_WEBNET is not set */ -/* PKG_USING_MONGOOSE is not set */ -/* PKG_USING_WEBTERMINAL is not set */ -/* PKG_USING_CJSON is not set */ -/* PKG_USING_JSMN is not set */ -/* PKG_USING_LIBMODBUS is not set */ -/* PKG_USING_FREEMODBUS is not set */ -/* PKG_USING_LJSON is not set */ -/* PKG_USING_EZXML is not set */ -/* PKG_USING_NANOPB is not set */ /* Wi-Fi */ /* Marvell WiFi */ -/* PKG_USING_WLANMARVELL is not set */ /* Wiced WiFi */ -/* PKG_USING_WLAN_WICED is not set */ -/* PKG_USING_RW007 is not set */ -/* PKG_USING_COAP is not set */ -/* PKG_USING_NOPOLL is not set */ -/* PKG_USING_NETUTILS is not set */ -/* PKG_USING_AT_DEVICE is not set */ -/* PKG_USING_ATSRV_SOCKET is not set */ -/* PKG_USING_WIZNET is not set */ /* IoT Cloud */ -/* PKG_USING_ONENET is not set */ -/* PKG_USING_GAGENT_CLOUD is not set */ -/* PKG_USING_ALI_IOTKIT is not set */ -/* PKG_USING_AZURE is not set */ -/* PKG_USING_TENCENT_IOTHUB is not set */ -/* PKG_USING_JIOT-C-SDK is not set */ -/* PKG_USING_NIMBLE is not set */ -/* PKG_USING_OTA_DOWNLOADER is not set */ -/* PKG_USING_IPMSG is not set */ -/* PKG_USING_LSSDP is not set */ -/* PKG_USING_AIRKISS_OPEN is not set */ -/* PKG_USING_LIBRWS is not set */ -/* PKG_USING_TCPSERVER is not set */ -/* PKG_USING_PROTOBUF_C is not set */ -/* PKG_USING_ONNX_PARSER is not set */ -/* PKG_USING_ONNX_BACKEND is not set */ /* security packages */ -/* PKG_USING_MBEDTLS is not set */ -/* PKG_USING_libsodium is not set */ -/* PKG_USING_TINYCRYPT is not set */ /* language packages */ -/* PKG_USING_LUA is not set */ -/* PKG_USING_JERRYSCRIPT is not set */ -/* PKG_USING_MICROPYTHON is not set */ /* multimedia packages */ -/* PKG_USING_OPENMV is not set */ -/* PKG_USING_MUPDF is not set */ -/* PKG_USING_STEMWIN is not set */ -/* PKG_USING_WAVPLAYER is not set */ -/* PKG_USING_TJPGD is not set */ /* tools packages */ -/* PKG_USING_CMBACKTRACE is not set */ -/* PKG_USING_EASYFLASH is not set */ -/* PKG_USING_EASYLOGGER is not set */ -/* PKG_USING_SYSTEMVIEW is not set */ -/* PKG_USING_RDB is not set */ -/* PKG_USING_QRCODE is not set */ -/* PKG_USING_ULOG_EASYFLASH is not set */ -/* PKG_USING_ADBD is not set */ /* system packages */ -/* PKG_USING_GUIENGINE is not set */ -/* PKG_USING_PERSIMMON is not set */ -/* PKG_USING_CAIRO is not set */ -/* PKG_USING_PIXMAN is not set */ -/* PKG_USING_LWEXT4 is not set */ -/* PKG_USING_PARTITION is not set */ -/* PKG_USING_FAL is not set */ -/* PKG_USING_SQLITE is not set */ -/* PKG_USING_RTI is not set */ -/* PKG_USING_LITTLEVGL2RTT is not set */ -/* PKG_USING_CMSIS is not set */ -/* PKG_USING_DFS_YAFFS is not set */ -/* PKG_USING_LITTLEFS is not set */ -/* PKG_USING_THREAD_POOL is not set */ -/* PKG_USING_ROBOTS is not set */ /* peripheral libraries and drivers */ -/* PKG_USING_SENSORS_DRIVERS is not set */ -/* PKG_USING_REALTEK_AMEBA is not set */ -/* PKG_USING_SHT2X is not set */ -/* PKG_USING_STM32_SDIO is not set */ -/* PKG_USING_ICM20608 is not set */ -/* PKG_USING_U8G2 is not set */ -/* PKG_USING_BUTTON is not set */ -/* PKG_USING_PCF8574 is not set */ -/* PKG_USING_SX12XX is not set */ -/* PKG_USING_SIGNAL_LED is not set */ -/* PKG_USING_LEDBLINK is not set */ -/* PKG_USING_WM_LIBRARIES is not set */ -/* PKG_USING_KENDRYTE_SDK is not set */ -/* PKG_USING_INFRARED is not set */ -/* PKG_USING_ROSSERIAL is not set */ -/* PKG_USING_AT24CXX is not set */ -/* PKG_USING_MOTIONDRIVER2RTT is not set */ -/* PKG_USING_AD7746 is not set */ -/* PKG_USING_PCA9685 is not set */ -/* PKG_USING_I2C_TOOLS is not set */ -/* PKG_USING_NRF24L01 is not set */ -/* PKG_USING_TOUCH_DRIVERS is not set */ -/* PKG_USING_LCD_DRIVERS is not set */ -/* PKG_USING_MAX17048 is not set */ /* miscellaneous packages */ -/* PKG_USING_LIBCSV is not set */ -/* PKG_USING_OPTPARSE is not set */ -/* PKG_USING_FASTLZ is not set */ -/* PKG_USING_MINILZO is not set */ -/* PKG_USING_QUICKLZ is not set */ -/* PKG_USING_MULTIBUTTON is not set */ -/* PKG_USING_FLEXIBLE_BUTTON is not set */ -/* PKG_USING_CANFESTIVAL is not set */ -/* PKG_USING_ZLIB is not set */ -/* PKG_USING_DSTR is not set */ -/* PKG_USING_TINYFRAME is not set */ -/* PKG_USING_KENDRYTE_DEMO is not set */ -/* PKG_USING_DIGITALCTRL is not set */ -/* PKG_USING_UPACKER is not set */ -/* PKG_USING_UPARAM is not set */ /* samples: kernel and components samples */ -/* PKG_USING_KERNEL_SAMPLES is not set */ -/* PKG_USING_FILESYSTEM_SAMPLES is not set */ -/* PKG_USING_NETWORK_SAMPLES is not set */ -/* PKG_USING_PERIPHERAL_SAMPLES is not set */ -/* PKG_USING_HELLO is not set */ -/* PKG_USING_VI is not set */ -/* PKG_USING_NNOM is not set */ -/* PKG_USING_LIBANN is not set */ -/* PKG_USING_ELAPACK is not set */ -/* PKG_USING_ARMv7M_DWT is not set */ -/* PKG_USING_VT100 is not set */ +#define RT_USING_UART1 #define SOC_MCIMX6X4 #endif diff --git a/bsp/imx6ul/rtconfig.py b/bsp/imx6ul/rtconfig.py index 0a9ea3dce37b5a9826a38e2a35a2ba7772d962e0..d372280626bb44c3e66aa721d9a57e58e6ae9c88 100644 --- a/bsp/imx6ul/rtconfig.py +++ b/bsp/imx6ul/rtconfig.py @@ -32,7 +32,7 @@ if PLATFORM == 'gcc': DEVICE = ' -march=armv7-a -mtune=cortex-a9 -mfpu=vfpv3-d16 -ftree-vectorize -ffast-math -mfloat-abi=softfp' CFLAGS = DEVICE + ' -Wall' - AFLAGS = ' -c' + DEVICE + ' -x assembler-with-cpp -D__ASSEMBLY__' + AFLAGS = ' -c' + DEVICE + ' -x assembler-with-cpp -D__ASSEMBLY__ -I.' LINK_SCRIPT = 'imx6.lds' LFLAGS = DEVICE + ' -Wl,--gc-sections,-Map=rtthread-imx6.map,-cref,-u,system_vectors'+\ ' -T %s' % LINK_SCRIPT diff --git a/components/net/lwip-2.1.2/src/arch/sys_arch.c b/components/net/lwip-2.1.2/src/arch/sys_arch.c old mode 100644 new mode 100755