前言

我从NXP官网申请了FRDM-MCXW71开发板,这个是专门为无线连接设计的

介绍

MCXW71是NXP推出的一款低功耗、高安全系数、面向无线连接的MCU,它的最大主频有96MHz,内核为Cortex-M33,片上集成1MB flash和128KB SRAM;FRDM-MCXW71是一款紧凑且可扩展的开发板,可让您快速基于MCX W71无线MCU开展原型设计。它可以轻松地评估MCX W71对BLE、Zigbee、Thread和Matter的多协议无线支持。该板包括一个板载MCU-Link调试器、便于访问MCU I/O的行业标准头、一个加速度传感器、一个光传感器和一个外接SPI闪存。

img

开发环境

  1. 安装VSCode,我这里安装的版本是1.96.4

img

  1. 打开VSCode Extensions,安装MCUPRESSO插件

img

  1. 安装Cortex-Debug插件

img

  1. 安装CMake插件

img

  1. 另外PC也要安装CMake

img

  1. 下载一个Ninja

img

  1. arm-gcc-toolchain,我这里安装的是10.2021.10版本

img

  1. NXP SDK Repository导入,这个要从GitHub上面拉取,拉取时间比较长

img

  1. 安装LinkServer工具

img

我安装的是1.6.133版本,VSCode自动能够识别

img

  1. 下载sdk包:SDK_2_16_100_FRDM-MCXW71.zip,在MCUXPRESSO VSCode面板导入

img

  1. 搭建demo工程

img

  1. 编译hello_world工程失败
1
d:/software/arm-gc~1/102021~1.10/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/bin/ld.exe: cannot find -lcr_newlib_nohost

需要把armgcc\debug\build.ninja文件的部分代码注释掉

1
-lcr_newlib_nohost 

然后按F5进入调试模式,这样就可以进行开发板的开发工作了

img

RT-Thread工程

Dist包

请用RT-Thread Env工具导出支持cmake的dist包

1
scons --dist

dist工程示例:所有RT-Thread源码被打包至rt-thread目录,并且被CMakeList.txt索引

img

VSCode配置

以下配置文件用于激活VSCode MCUPRESSO工程

img

.vscode\c_cpp_properties.json

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
{
"configurations": [
{
"name": "rt-thread",
"defines": [
"CPU_MCXW716CMFPA",
"DEBUG",
"RT_USING_LIBC",
"RT_USING_NEWLIBC",
"_POSIX_C_SOURCE=1",
"_REENT_SMALL",
"__RTTHREAD__"
],
"intelliSenseMode": "gcc-arm",
"compilerPath": "C:/env-windows/tools/gnu_gcc/arm_gcc/mingw/bin/arm-none-eabi-gcc",
"cStandard": "c99",
"cppStandard": "c++11",
"compileCommands": [
"build/compile_commands.json"
],
"includePath": [
"applications",
"rt-thread\\components\\libc\\compilers\\common\\include",
"rt-thread\\components\\libc\\compilers\\newlib",
"rt-thread\\components\\drivers\\include",
"rt-thread\\components\\drivers\\phy",
"board",
"board\\MCUX_Config\\board",
"Libraries\\drivers",
"Libraries\\drivers\\config",
"rt-thread\\components\\finsh",
".",
"rt-thread\\include",
"rt-thread\\libcpu\\arm\\common",
"rt-thread\\libcpu\\arm\\cortex-m33",
"Libraries\\CMSIS\\Core\\Include",
"Libraries\\MCXW71\\MCXW71",
"Libraries\\MCXW71\\MCXW71\\drivers",
"Libraries\\MCXW71\\MCXW71\\drivers\\romapi\\flash",
"Libraries\\MCXW71\\MCXW71\\drivers\\romapi\\mem_interface",
"Libraries\\MCXW71\\MCXW71\\drivers\\romapi\\nboot",
"Libraries\\MCXW71\\MCXW71\\drivers\\romapi\\runbootloader",
"rt-thread\\components\\libc\\posix\\io\\epoll",
"rt-thread\\components\\libc\\posix\\io\\eventfd",
"rt-thread\\components\\libc\\posix\\io\\poll",
"rt-thread\\components\\libc\\posix\\ipc",
"rt-thread\\components\\drivers\\smp_call",
"rt-thread\\components\\utilities\\ulog"
]
}
],
"version": 4
}

.vscode\launch.json

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
{
"configurations": [
{
"type": "mcuxpresso-debug",
"name": "Debug project configuration",
"request": "launch",
"cwd": "${workspaceRoot}",

"executable": "",
"stopAtSymbol": "main",
"probeSerialNumber": "2NL4XDTOIMBQA",
"isAttach": false,
"probeType": "",
"skipBuildBeforeDebug": false,
"skipPreFlashActions": false,

"gdbInitCommands": [
"set remotetimeout 600",
"set debug-file-directory",
"set non-stop off"
],

"showDevDebugOutput": "none"
}
]
}

.vscode\mcuxpresso-tools.json

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{
"version": "24.9",
"toolchainPath": "d:/software/arm-gcc-toolchain/10 2021.10",
"linkedProjects": [],
"trustZoneType": "none",
"multicoreType": "none",
"debug": {
"linkserver": {
"device": "MCXW716CxxxA:FRDM-MCXW71",
"core": "primary"
},
"pemicro": {},
"segger": {}
},
"projectType": "cmake-freestanding"
}

.vscode\project.json

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
{
"RT-Thread": "D:\\project\\rt-thread",
"Groups": [
{
"name": "Applications",
"path": "applications",
"files": [
"applications\\main.c",
"applications\\SConscript"
]
},
{
"name": "Compiler",
"path": "rt-thread\\components\\libc\\compilers\\common",
"files": [
"rt-thread\\components\\libc\\compilers\\common\\cctype.c",
"rt-thread\\components\\libc\\compilers\\common\\cstdlib.c",
"rt-thread\\components\\libc\\compilers\\common\\cstring.c",
"rt-thread\\components\\libc\\compilers\\common\\ctime.c",
"rt-thread\\components\\libc\\compilers\\common\\cunistd.c",
"rt-thread\\components\\libc\\compilers\\common\\cwchar.c",
"rt-thread\\components\\libc\\compilers\\newlib\\syscalls.c",
"rt-thread\\components\\libc\\compilers\\common\\SConscript"
]
},
{
"name": "DeviceDrivers",
"path": "rt-thread\\components\\drivers\\core",
"files": [
"rt-thread\\components\\drivers\\core\\device.c",
"rt-thread\\components\\drivers\\hwtimer\\hwtimer.c",
"rt-thread\\components\\drivers\\ipc\\completion_comm.c",
"rt-thread\\components\\drivers\\ipc\\completion_up.c",
"rt-thread\\components\\drivers\\ipc\\condvar.c",
"rt-thread\\components\\drivers\\ipc\\dataqueue.c",
"rt-thread\\components\\drivers\\ipc\\pipe.c",
"rt-thread\\components\\drivers\\ipc\\ringblk_buf.c",
"rt-thread\\components\\drivers\\ipc\\ringbuffer.c",
"rt-thread\\components\\drivers\\ipc\\waitqueue.c",
"rt-thread\\components\\drivers\\ipc\\workqueue.c",
"rt-thread\\components\\drivers\\pin\\dev_pin.c",
"rt-thread\\components\\drivers\\serial\\dev_serial.c",
"rt-thread\\components\\drivers\\core\\SConscript"
]
},
{
"name": "Drivers",
"path": "board",
"files": [
"board\\MCUX_Config\\board\\clock_config.c",
"board\\MCUX_Config\\board\\pin_mux.c",
"board\\board.c",
"Libraries\\drivers\\drv_pin.c",
"Libraries\\drivers\\drv_uart.c",
"board\\SConscript"
]
},
{
"name": "Finsh",
"path": "rt-thread\\components\\finsh",
"files": [
"rt-thread\\components\\finsh\\msh_parse.c",
"rt-thread\\components\\finsh\\shell.c",
"rt-thread\\components\\finsh\\msh.c",
"rt-thread\\components\\finsh\\cmd.c",
"rt-thread\\components\\finsh\\SConscript"
]
},
{
"name": "Kernel",
"path": ".",
"files": [
"rt-thread\\src\\clock.c",
"rt-thread\\src\\components.c",
"rt-thread\\src\\cpu_up.c",
"rt-thread\\src\\defunct.c",
"rt-thread\\src\\idle.c",
"rt-thread\\src\\ipc.c",
"rt-thread\\src\\irq.c",
"rt-thread\\src\\kservice.c",
"rt-thread\\src\\mem.c",
"rt-thread\\src\\mempool.c",
"rt-thread\\src\\object.c",
"rt-thread\\src\\scheduler_comm.c",
"rt-thread\\src\\scheduler_up.c",
"rt-thread\\src\\thread.c",
"rt-thread\\src\\timer.c",
".\\SConscript"
]
},
{
"name": "klibc",
"path": "rt-thread\\src\\klibc",
"files": [
"rt-thread\\src\\klibc\\rt_vsnprintf_tiny.c",
"rt-thread\\src\\klibc\\kerrno.c",
"rt-thread\\src\\klibc\\rt_vsscanf.c",
"rt-thread\\src\\klibc\\kstring.c",
"rt-thread\\src\\klibc\\kstdio.c",
"rt-thread\\src\\klibc\\SConscript"
]
},
{
"name": "libcpu",
"path": "rt-thread\\libcpu\\arm\\common",
"files": [
"rt-thread\\libcpu\\arm\\common\\atomic_arm.c",
"rt-thread\\libcpu\\arm\\common\\div0.c",
"rt-thread\\libcpu\\arm\\common\\showmem.c",
"rt-thread\\libcpu\\arm\\cortex-m33\\context_gcc.S",
"rt-thread\\libcpu\\arm\\cortex-m33\\cpuport.c",
"rt-thread\\libcpu\\arm\\cortex-m33\\syscall_gcc.S",
"rt-thread\\libcpu\\arm\\cortex-m33\\trustzone.c",
"rt-thread\\libcpu\\arm\\common\\SConscript"
]
},
{
"name": "Libraries",
"path": "Libraries\\MCXW71",
"files": [
"Libraries\\MCXW71\\MCXW71\\drivers\\fsl_edma.c",
"Libraries\\MCXW71\\MCXW71\\drivers\\fsl_cmc.c",
"Libraries\\MCXW71\\MCXW71\\system_MCXW716C.c",
"Libraries\\MCXW71\\MCXW71\\drivers\\fsl_common_arm.c",
"Libraries\\MCXW71\\MCXW71\\drivers\\fsl_crc.c",
"Libraries\\MCXW71\\MCXW71\\drivers\\fsl_spc.c",
"Libraries\\MCXW71\\MCXW71\\drivers\\fsl_clock.c",
"Libraries\\MCXW71\\MCXW71\\drivers\\fsl_ccm32k.c",
"Libraries\\MCXW71\\MCXW71\\gcc\\startup_MCXW716C.S",
"Libraries\\MCXW71\\MCXW71\\drivers\\fsl_lpuart.c",
"Libraries\\MCXW71\\MCXW71\\drivers\\fsl_gpio.c",
"Libraries\\MCXW71\\MCXW71\\drivers\\fsl_common.c",
"Libraries\\MCXW71\\SConscript"
]
},
{
"name": "Utilities",
"path": "rt-thread\\components\\utilities\\ulog",
"files": [
"rt-thread\\components\\utilities\\ulog\\backend\\console_be.c",
"rt-thread\\components\\utilities\\ulog\\ulog.c",
"rt-thread\\components\\utilities\\ulog\\SConscript"
]
}
]
}

.vscode\settings.json

1
2
3
4
5
6
7
8
{
"cmake.configureOnOpen": false,
"C_Cpp.errorSquiggles": "disabled",
"C_Cpp.default.configurationProvider": "ms-vscode.cmake-tools",
"cmake.useCMakePresets": "always",
"cmake.buildTask": true,
"cmake.sourceDirectory": "${workspaceFolder}"
}

.vscode\tasks.json

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
{
"version": "2.0.0",
"tasks": [
{
"type": "cmake",
"label": "CMake: build",
"command": "build",
"preset": "debug",
"targets": [
"all"
],
"group": {
"kind": "build",
"isDefault": true
},
"problemMatcher": [
"$gcc"
],
"detail": "CMake template build task"
},
{
"type": "cmake",
"label": "CMake: clean",
"command": "clean",
"preset": "debug",
"problemMatcher": [
"$gcc"
],
"detail": "CMake template clean task"
},
{
"type": "cmake",
"label": "CMake: configure",
"command": "configure",
"preset": "debug",
"problemMatcher": [
"$gcc"
],
"detail": "CMake template configure task"
}
]
}

CMakePresets.json

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
{
"version": 7,
"cmakeMinimumRequired": {
"major": 3
},
"configurePresets": [
{
"name": "debug",
"displayName": "debug",
"generator": "Ninja",
"toolchainFile": "D:/repository/core/tools/cmake_toolchain_files/armgcc.cmake",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "debug",
"GNinja": "D:/software/ninja.exe"
},
"inherits": "debug-env"
},
{
"name": "release",
"displayName": "release",
"generator": "Ninja",
"toolchainFile": "D:/repository/core/tools/cmake_toolchain_files/armgcc.cmake",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "release",
"GNinja": "D:/software/ninja.exe"
},
"inherits": "release-env"
}
],
"buildPresets": [
{
"name": "debug",
"displayName": "debug",
"configurePreset": "debug"
},
{
"name": "release",
"displayName": "release",
"configurePreset": "release"
}
],
"include": [
"mcux_include.json"
]
}

mcux_include.json

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
{
"version": 7,
"cmakeMinimumRequired": {
"major": 3
},
"configurePresets": [
{
"name": "debug-env",
"displayName": "debug-env",
"hidden": true,
"environment": {
"ARMGCC_DIR": "d:/software/arm-gcc-toolchain/10 2021.10",
"SdkRootDirPath": "",
"POSTPROCESS_UTILITY": "",
"MCUX_VENV_PATH": "",
"PATH": "$env{MCUX_VENV_PATH};$penv{PATH}"
}
},
{
"name": "release-env",
"displayName": "release-env",
"hidden": true,
"environment": {
"ARMGCC_DIR": "d:/software/arm-gcc-toolchain/10 2021.10",
"SdkRootDirPath": "",
"POSTPROCESS_UTILITY": "",
"MCUX_VENV_PATH": "",
"PATH": "$env{MCUX_VENV_PATH};$penv{PATH}"
}
}
],
"buildPresets": []
}

后续文章会介绍怎么移植RT-Thread


© 2025 hywing 使用 Stellar 创建
总访问 113701 次 | 本页访问 326