【MCUXpresso for VS Code】-- 工程搭建后期维护

news2024/11/19 13:14:21

​ 基于上一篇文章【MCUXpresso for VS Code】 – 基于VSCode搭建nxp mcu工程_

本章将介绍工程搭建完成后,后期维护问题。

1.MCUXpresso 插件窗口

请添加图片描述

该窗口,通常用在编译调试,工程导入导出等场合。编译和调试除了点击图标外,也可以按F7F5执行相关操作

2.CMAKE 插件窗口

请添加图片描述

这里强烈建议安装CMAKE插件,我们可以通过插件窗口和CMakeLists.txt,查阅当前工程包含有哪些文件

3.CMakeLists.txt 文件添加和修改

请添加图片描述

CMakeLists.txt中,使用会很频繁,这里管理着我们的工程文件和需要输出的文件(如:bin srec hex 文件)等

# CROSS COMPILER SETTING
SET(CMAKE_SYSTEM_NAME Generic)
CMAKE_MINIMUM_REQUIRED (VERSION 3.10.0)

# THE VERSION NUMBER
SET (MCUXPRESSO_CMAKE_FORMAT_MAJOR_VERSION 2)
SET (MCUXPRESSO_CMAKE_FORMAT_MINOR_VERSION 0)

include(ide_overrides.cmake OPTIONAL)

if(CMAKE_SCRIPT_MODE_FILE)
  message("${MCUXPRESSO_CMAKE_FORMAT_MAJOR_VERSION}")
  return()
endif()


# ENABLE ASM
ENABLE_LANGUAGE(ASM)

SET(CMAKE_STATIC_LIBRARY_PREFIX)
SET(CMAKE_STATIC_LIBRARY_SUFFIX)

SET(CMAKE_EXECUTABLE_LIBRARY_PREFIX)
SET(CMAKE_EXECUTABLE_LIBRARY_SUFFIX)

# CURRENT DIRECTORY
SET(ProjDirPath ${CMAKE_CURRENT_SOURCE_DIR})

SET(EXECUTABLE_OUTPUT_PATH ${ProjDirPath}/${CMAKE_BUILD_TYPE})
SET(LIBRARY_OUTPUT_PATH ${ProjDirPath}/${CMAKE_BUILD_TYPE})


project(rt1176_rtos_app)

set(MCUX_BUILD_TYPES debug release sdram_debug sdram_release flexspi_nor_debug flexspi_nor_release)

set(MCUX_SDK_PROJECT_NAME rt1176_rtos_app.elf)

if (NOT DEFINED SdkRootDirPath)
    SET(SdkRootDirPath ${ProjDirPath}/../../../../../..)
endif()

include(${ProjDirPath}/flags.cmake)

include(${ProjDirPath}/config.cmake)

add_executable(${MCUX_SDK_PROJECT_NAME} 
"${ProjDirPath}/../evkmimxrt1170_connect_cm4_cm7side.jlinkscript"
"${ProjDirPath}/../FreeRTOSConfig.h"
# "${ProjDirPath}/../pin_mux.c"
# "${ProjDirPath}/../pin_mux.h"
"${ProjDirPath}/../dcd.c"
"${ProjDirPath}/../dcd.h"
# "${ProjDirPath}/../board.c"
# "${ProjDirPath}/../board.h"
# "${ProjDirPath}/../clock_config.c"
# "${ProjDirPath}/../clock_config.h"
# 包含相关用户文件
#xapp
"${ProjDirPath}/../xapp/main.c"
"${ProjDirPath}/../xapp/xAPP_MainTask.c"
"${ProjDirPath}/../xapp/xAPP_KeyDeal.c"
#xgui
"${ProjDirPath}/../xgui/lv_conf.h"
"${ProjDirPath}/../xgui/lvgl_support.c"
"${ProjDirPath}/../xgui/lvgl_support.h"
"${ProjDirPath}/../xgui/xGUI_MainTask.c"
"${ProjDirPath}/../xgui/xGUI_MainTask.h"
#xsys 
"${ProjDirPath}/../xsys/xSYS_KeyScan.c"
"${ProjDirPath}/../xsys/xSYS_KeyScan.h"
"${ProjDirPath}/../xsys/xSYS_Encoder.c"
"${ProjDirPath}/../xsys/xSYS_Encoder.h"
"${ProjDirPath}/../xsys/xSYS_ST7789.c"
"${ProjDirPath}/../xsys/xSYS_ST7789.h"
#xbsp 
"${ProjDirPath}/../xbsp/xBSP_Config.c"
"${ProjDirPath}/../xbsp/xBSP_Config.h"
"${ProjDirPath}/../xbsp/xBSP_MPU.c"
"${ProjDirPath}/../xbsp/xBSP_MPU.h"
"${ProjDirPath}/../xbsp/xBSP_Interrupt.c"
"${ProjDirPath}/../xbsp/xBSP_Interrupt.h"
"${ProjDirPath}/../xbsp/xBSP_Gpio.c"
"${ProjDirPath}/../xbsp/xBSP_Gpio.h"
"${ProjDirPath}/../xbsp/xBSP_Encoder.c"
"${ProjDirPath}/../xbsp/xBSP_Encoder.h"
"${ProjDirPath}/../xbsp/xBSP_SPI.c"
"${ProjDirPath}/../xbsp/xBSP_SPI.h"
)

target_include_directories(${MCUX_SDK_PROJECT_NAME} PRIVATE
    ${ProjDirPath}/..
    ${ProjDirPath}/../xbsp
    ${ProjDirPath}/../xsys
    ${ProjDirPath}/../xapp  
    ${ProjDirPath}/../xgui   
)

#rtos
set_source_files_properties("${ProjDirPath}/../FreeRTOSConfig.h" PROPERTIES COMPONENT_CONFIG_FILE "middleware_freertos-kernel_template")
#lvgl
set_source_files_properties("${ProjDirPath}/../lv_conf.h" PROPERTIES COMPONENT_CONFIG_FILE "middleware_lvgl_template")
set_source_files_properties("${ProjDirPath}/../lvgl_support.h" PROPERTIES COMPONENT_CONFIG_FILE "middleware_lvgl_template")
set_source_files_properties("${ProjDirPath}/../lvgl_support.c" PROPERTIES COMPONENT_CONFIG_FILE "middleware_lvgl_template")


include(${SdkRootDirPath}/devices/MIMXRT1176/all_lib_device.cmake)

IF(NOT DEFINED TARGET_LINK_SYSTEM_LIBRARIES)  
    SET(TARGET_LINK_SYSTEM_LIBRARIES "-lm -lc -lgcc -lnosys")  
ENDIF()  

TARGET_LINK_LIBRARIES(${MCUX_SDK_PROJECT_NAME} PRIVATE -Wl,--start-group)

target_link_libraries(${MCUX_SDK_PROJECT_NAME} PRIVATE ${TARGET_LINK_SYSTEM_LIBRARIES})

TARGET_LINK_LIBRARIES(${MCUX_SDK_PROJECT_NAME} PRIVATE -Wl,--end-group)

# 编译输出文件
ADD_CUSTOM_COMMAND(TARGET ${MCUX_SDK_PROJECT_NAME} POST_BUILD
COMMAND ${CMAKE_OBJCOPY} -Oihex ${EXECUTABLE_OUTPUT_PATH}/${MCUX_SDK_PROJECT_NAME} ${EXECUTABLE_OUTPUT_PATH}/rt1176_rtos_app.hex 
COMMAND ${CMAKE_OBJCOPY} -Obinary ${EXECUTABLE_OUTPUT_PATH}/${MCUX_SDK_PROJECT_NAME} ${EXECUTABLE_OUTPUT_PATH}/rt1176_rtos_app.bin
COMMAND ${CMAKE_OBJCOPY} -Osrec ${EXECUTABLE_OUTPUT_PATH}/${MCUX_SDK_PROJECT_NAME} ${EXECUTABLE_OUTPUT_PATH}/rt1176_rtos_app.srec
)

set_target_properties(${MCUX_SDK_PROJECT_NAME} PROPERTIES ADDITIONAL_CLEAN_FILES "output.map;${EXECUTABLE_OUTPUT_PATH}/rt1176_rtos_app.bin")

4.config.cmake 文件添加和修改

请添加图片描述

config.cmake 用来添加相关驱动和组件等(配合CMakeLists.txt一起使用),具体信息文件头告诉我们可以查阅:all_lib_device.cmake

5.flags.cmake 文件添加和修改

请添加图片描述

flags.cmake 管理当前工程相关全局宏,优化等级等等功能

6.工程无法下载问题

有时候我们会遇到某些芯片无法下载,原因是下载算法不适配我们的Flash,这时候我们需要修改下载算法。这里拿rt1052举例,我们当前使用的flash是winbondw25qxx,用官方默认下载算法是无法下载的
请添加图片描述

首先根据 mcuxpresso-tools.json 文件,我们知道锁定设备名称为:MIMXRT1052xxxxB

请添加图片描述

C:\Program Files\SEGGER\JLink路径,打开 JLinkDevices.xml,添加设备:MIMXRT1052xxxxB 信息,使用下载算法:RT105x_W25Q.elf(当然也支持FLM文件)

添加完成后,我们就能将代码下载到Flash了

未完待续。。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/886241.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python简单计算器

附赠源码: import PySimpleGUI as sg import relistsNumber [[AC, (, ), %],[1, 2, 3, ],[4, 5, 6, -],[7, 8, 9, x],[0, ., , ], ]layout [[sg.Text(font(黑体, 10), key-msg-)],[sg.Multiline(,key-show-,s(22, 10),font(黑体, 14),border_width1,expand_xTrue…

Java进阶(3)——手动实现ArrayList 源码的初步理解分析 数组插入数据和删除数据的问题

目录 引出手动实现ArrayList定义接口MyList<T>写ArrayList的实现类增加元素删除元素 写测试类进行测试数组插入数据? 总结 引出 1.ArrayList的结构分析&#xff0c;可迭代接口&#xff0c;是List的实现&#xff1b; 2.数组增加元素和删除元素的分析&#xff0c;何时扩容…

Spring三级缓存解决循环依赖问题

一、Bean对象的创建过程 一般的Bean对象如下&#xff1a;首先通过构造器构造一个普通对象&#xff0c;然后进行依赖注入&#xff0c;再进行一些初始化操作&#xff0c;初始化后根据AOP生成代理对象&#xff0c;最后再放入单例池map&#xff0c;这个单例池map就是一级缓存。 …

Data Abstract for .NET and Delphi Crack

Data Abstract for .NET and Delphi Crack .NET和Delphi的数据摘要是一套或RAD工具&#xff0c;用于在.NET、Delphi和Mono中编写多层解决方案。NET和Delphi的数据摘要是一个套件&#xff0c;包括RemObjects.NET和Delphi版本的数据摘要。RemObjects Data Abstract允许您创建访问…

DHCP Server

简介 动态主机配置协议 DHCP&#xff08;Dynamic Host Configuration Protocol&#xff0c;动态主机配置协议&#xff09; 是 RFC 1541&#xff08;已被 RFC 2131 取代&#xff09;定义的标准协议&#xff0c;该协议允许服务器向客户端动态分配 IP 地址和配置信息。 使用UDP协…

C++MFC 串口通信 上位机

本节介绍 在工业控制中&#xff0c;工控机(一般都基于Windows平台)经常需要与智能仪表通过串口进行通信。串口通信方便易行&#xff0c;应用广泛。 一般情况下&#xff0c;工控机和各智能仪表通过RS485总线进行通信。RS485的通信方式是半双工的&#xff0c;只能由作为主…

软件测试知识库+1,5款顶级自动化测试工具推荐和使用分析

“工欲善其事必先利其器”&#xff0c;在自动化测试领域&#xff0c;自动化测试工具的核心地位不容置疑的。目前市面上有很多可以支持接口测试的工具&#xff0c;在网上随便一搜就可以出来很多&#xff0c;利用自动化测试工具进行接口测试&#xff0c;可以很好的提高测试效率&a…

Web3创新者之夜,与其他开发者一同畅谈波卡生态

Token2049在即&#xff0c;许多开发者都将在9月中齐聚新加坡&#xff0c;一同讨论区块链生态发展及未来。届时将会有超过1万名与会者&#xff0c;并有超过300个赞助商和项目协助支持本次大会。波卡作为跨链互操作性的龙头生态也将参与至本次盛会之中。 为了让波卡社区的成员、贡…

uniapp微信小程序消息订阅快速上手

一、微信公众平台小程序开通消息订阅并设置模板 这边的模板id和详细内容后续前后端需要使用 二、uniapp前端 需要是一个button触发 js&#xff1a; wx.getSetting({success(res){console.log(res)if(res.authSetting[scope.subscribeMessage]){// 业务逻辑}else{uni.request…

Python+Selenium自动化测试环境搭建步骤(selenium环境搭建)

一、自动化简介 1.自动化测试概念&#xff1a; 是把以人为驱动的测试转化为机器执行的一种过程&#xff0c;它是一种以程序测试程序的过程 2.自动化测试分类&#xff1a; 一般IT上所说的自动化测试是指功能自动化测试&#xff0c;通过编码的方式用一段程序来测试一个软件的功…

Ctfshow web入门 命令执行RCE篇 web29-web77 与 web118-web124 详细题解 持续更新中(预计8.18完成)~

Ctfshow 命令执行 web29 pregmatch是正则匹配函数&#xff0c;匹配是否包含flag&#xff0c;if(!preg_match("/flag/i", $c))&#xff0c;/i忽略大小写 可以利用system来间接执行系统命令 flag采用f*绕过&#xff0c;或者mv fl?g.php 1.txt修改文件名&#xff0c…

初识Visual Basic编辑器并建立一段简单的代码(下)

【分享成果&#xff0c;随喜正能量】时间宝贵&#xff0c;切莫贪睡。学习诸大菩萨的精神&#xff0c;勇猛精进不懈怠&#xff1b;随缘进取不疲厌。单是说不行&#xff0c;要紧的是做。 《VBA之Excel应用》&#xff08;10178983&#xff09;是非常经典的&#xff0c;是我推出的…

【运维】linkis1.3.2添加jdbc引擎(添加mysql、greenplum、starrocks、doris数据源查询)与配合多数据源管理提交任务初探

文章目录 一. 引擎的安装1. 前置工作2. 获取引擎插件3. 上传和加载4. 引擎刷新4.1. 重启刷新4.2. 检查引擎是否刷新成功 二. 测试mysql、starrocks与doris数据库1. 通过shell提交任务2. 通过(IDE)shell进行提交3. 通过接口提交 三. 添加greenplum四. 通过linkis的数据源管理提交…

【java毕业设计】基于SSM+MySql的人才公寓管理系统设计与实现(程序源码)--人才公寓管理系统

基于SSMMySql的人才公寓管理系统设计与实现&#xff08;程序源码毕业论文&#xff09; 大家好&#xff0c;今天给大家介绍基于SSMMySql的人才公寓管理系统设计与实现&#xff0c;本论文只截取部分文章重点&#xff0c;文章末尾附有本毕业设计完整源码及论文的获取方式。更多毕业…

VGG简单学习

VGG简单学习 简单介绍 在AlexNet网络的基础上&#xff0c;为了设计深层神经网络&#xff0c;牛津大学设计了VGG网络,采用块的设计理念&#xff0c;将AlexNet中多个重复的卷积层和池化层组成一个块 论文中&#xff0c;使用3x3卷积核&#xff0c;padding1的卷积层 和带有2x2的汇…

网工内推 | 网络工程师专场,CCNP证书优先,多次晋升机会

01 上海正诺信息科技有限公司 招聘岗位&#xff1a;网络工程师 职责描述&#xff1a; 1、负责公司办公内网内网需求对接、实施和方案的标准化&#xff1b; 2、负责办公网络、机房的网络设备&#xff08;接入层&#xff09;的运维、变更、故障解决&#xff1b; 3、负责公司网…

网络通信原理ARP协议(第四十六课)

ARP/RARP报文 ARP(Address Resolution Protocol,地址解析协议)是用来将IP地址解析为MAC地址的协议。RARP(Reverse Address Resolution Protocol,反向地址解析协议)是用来将MAC地址解析为IP地址的协议。 字段长度(bit)含义Ethernet Address of Destination48比特目的…

【GitHub】Pycharm本地项目打包上传到Github仓库的操作步骤

文章目录 1、Pycharm端的设置操作2、Github端的设置操作3、Pycharm上配置Github4、Git本地项目至GitHub仓库5、前往Github中查看确认6、常见报错 1、Pycharm端的设置操作 通过CtrlAltS快捷组合键的方式&#xff0c;打开设置&#xff0c;导航到版本控制一栏中的Git&#xff0c;…

【视频笔记】2023年上半年最耀眼的AI创业公司

大模型赛道&#xff1a; OpenAI&#xff08;估值270-290亿美元&#xff09;&#xff1a;继续融资3亿美元 Anthropic&#xff08;估值50亿美元&#xff09;&#xff1a;绑定谷歌、免费开放Claude2 Adept&#xff08;估值10亿美元&#xff09;&#xff1a;推出ACT-1模型&#xf…

Navicat Premium连接sqlserve数据库失败?你需要注意这几点看看配置对了么?

新建数据库连接的时候这么填的信息 报错 原因1&#xff1a;sqlserver数据库的端口和IP地址之间不是&#xff1a;连接而是用&#xff0c;连接 改成如下样式用逗号连接端口和IP地址就好了 原因2&#xff1a;在Navicat Premium中需要安装一个sqlserver的插件 找到安装路径的根目…