谢谢eepw给予这个开发板的试用机会,板子实物开箱如图:
肉眼可见板子做工优良,板子底部四脚都有橡皮圈,所以在桌子上声音拖动、放置等声音很轻柔没那么刺耳,笔者见过很多厂商的开发板似乎只要它家会注意这么多细节。
先说说板子概况:开发板基于NXP MCXA156VLL MCU,此MCU基于Arm Cortex-M33® 96MHz,flash高达1MB的闪存,sram高达128KB,一个带phy的usb全速控制器,两个LPSPI控制器,四个LPI2c,五个LPUART,一个I3C控制器,一个FlexIO,一个flexcan,两个flexpwm,5个32位timer等等。再看看板载情况:一个P3T1755DPJI3C/I²C 温度传感器,一个can phy,一个基于LPC55S69做的daplink(默认是cmsis dap固件,可以刷成jlink lite好像,但笔者没试过,CMSIS DAP用着挺好的),一个USB TYPEC口连接到MCU的usb,另一个usb typec连接到板载的daplink调试器,其它没什么了,MCU针脚大部分通过PMOD/mikroBUS等接口引出。
题外话:做daplink调试器的MCU比MCXA156自身强大得多嘿嘿。
测评第一步需要搭建下linux开发环境,一来:笔者一直是在linux系统下开发;二来笔者试用这个开发板最终目的是初步移植nuttx RTOS到MCXA156平台上。nuttx在非*nix系统下开发非常不方便,可以说甚至不支持吧。开发环境主要解决toolchain、工程源码组织和调试烧录。toolchain比较简单,安装arm-none-eabi-gcc即可,工程源码笔者想基于cmake做(剧透一下,其实nxp官方的mcuxsdk也是用cmake组织的),调试烧录用pyocd吧。
MCXA156 pack的下载安装
想用pyocd调试烧录MCXA156一个前提需要安装对应的pack包,我们看看nxp官方是不是已经上传到keil官网了
$ pyocd pack find mcxa156 Part Vendor Pack Version Installed --------------------------------------------------------------- MCXA156VLL NXP NXP.MCXA156_DFP 19.0.0 False MCXA156VMP NXP NXP.MCXA156_DFP 19.0.0 False MCXA156VPJ NXP NXP.MCXA156_DFP 19.0.0 False
Nice,说明可以直接pyocd命令安装MCXA156的pack,不用去官网单独下载pack了
$ pyocd pack install MCXA156VLL Downloading packs (press Control-C to cancel): NXP.MCXA156_DFP.19.0.0 Downloading descriptors (001/001)
看看安装成功与否:
$ pyocd list -t ... mcxa156 NXP MCXA156 MCXA156 pack mcxa156vll NXP MCXA156VLL MCXA156 pack mcxa156vmp NXP MCXA156VMP MCXA156 pack mcxa156vpj NXP MCXA156VPJ MCXA156 pack ...
可以看到已经支持MCXA156了
mcuxsdk下载
可从https://github.com/nxp-mcuxpresso/mcux-sdk下载release版或者自己west sync,但是如果没有看源码历史提交的需求,下载release包挺合适的,这个仓库包含了所有nxp mcu的code,所以非常的大。
点灯大师来了
验证开发环境搭建是否成功点灯最简单也最有效,mcuxsdk下其实做好了,代码在mcuxsdk/examples/frdmmcxa156/driver_examples/gpio/led_output
板子出厂默认应该也是一个点灯程序,咱们要验证pyocd能否成功烧录,最好自己改下源码,比如笔者修改gpio_led_output.c如下:
--- gpio_led_output.c +++ gpio_led_output.c @@ -69,6 +69,7 @@ BOARD_InitDebugConsole(); /* Print a note to terminal. */ + PRINTF("\r\n Hello MCXA156\r\n"); PRINTF("\r\n GPIO Driver example\r\n"); PRINTF("\r\n The LED is blinking.\r\n");
编译
$ export ARMGCC_DIR=/usr cd mcuxsdk/examples/frdmmcxa156/driver_examples/gpio/led_output/armgcc $ cmake -DCMAKE_TOOLCHAIN_FILE="../../../../../../core/tools/cmake_toolchain_files/armgcc.cmake" -DCMAKE_BUILD_TYPE=release -B build $ cmake --build build ... [100%] Linking C executable mcuxsdk/examples/frdmmcxa156/driver_examples/gpio/led_output/armgcc/release/gpio_led_output.elf Memory region Used Size Region Size %age Used m_interrupts: 420 B 512 B 82.03% m_text: 8676 B 1048064 B 0.83% m_data: 3728 B 120 KB 3.03% m_sramx0: 0 B 8 KB 0.00% [100%] Built target gpio_led_output.elf
release/gpio_led_output.elf就是我们要烧录的固件
烧录
pyocd load -e sector -t mcxa156vll release/gpio_led_output.elf
镜像烧录完毕后,板子会被自动reset,然后minicom下就能看到如下打印了:
Hello MCXA156 GPIO Driver example The LED is blinking.
同时板载LED开始有规律的闪烁。开发环境搭建成功。下一篇将会讲述一个nuttx RTOS的基本移植流程,敬请期待。