当前位置: 首页 > news >正文

在MCUXpresso IDE中建立使用静态库的工程 - 指南

文章目录

    • 在MCUXpresso IDE中建立使用静态库的工程
    • 概述
    • 笔记
    • 将工作区清空
    • 建立库工程
    • 建立主工程
    • 验证
    • END

在MCUXpresso IDE中建立使用静态库的工程

概述

在做Smoothieware工程移植到MCUXpresso IDE的任务。
查看编译日志,发现Smoothieware分为2个工程,一个主工程lpc1768, 一个静态库工程mbed-lpc1768.
我前面实验,是将所有代码都在一个工程中编译,编译出来的elf在MCU中装不下。当然原因很多。
但是我想严格按照Smoothieware的做法来,也将工程分为2个工程,一个主工程a,一个库工程b.
先编译b, 再编译a(a中链接b, 并使用b的接口)。

做了一个实验,验证了建立这种2个工程的例子,确实可以。

笔记

将工作区清空

在这里插入图片描述
在这里插入图片描述
头2个文件夹是工作区用的,不能删
后面3个logs文件夹是硬件调试器的单步调试连接日志,是自动产生的,不用删(删了也会再产生)。

建立库工程

新建c++工程
在这里插入图片描述
MCU选1769
在这里插入图片描述
选c++静态库工程
在这里插入图片描述
给定静态库工程名称
在这里插入图片描述
不要选LpcOpen库和CMSIS库
在这里插入图片描述

在这里插入图片描述
语言标准选2011,除了src目录,不需要建立inc目录
在这里插入图片描述
新建inc目录
在这里插入图片描述
在这里插入图片描述
在inc目录中新建c++的.h文件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
同理,在src目录中建立实现文件my_lib.cpp
将工程根目录加入工程的包含路径。
在这里插入图片描述
填写my_lib.h内容如下

// @file my_lib.h
// @brief only test static library's interface
#ifndef __MY_LIB_H__
#define __MY_LIB_H__
int add(int x, int y);
#endif // #ifndef __MY_LIB_H__

填写my_lib.cpp内容如下

// @file my_lib.cpp
#include "inc/my_lib.h"
int add(int x, int y)
{
return  (x + y);
}

编译通过。

17:53:44 **** Incremental Build of configuration Debug for project my_lib ****
make -r -j16 all
make[1]: Nothing to be done for 'main-build'.
Performing post-build steps
arm-none-eabi-size "libmy_lib.a" ; # arm-none-eabi-objdump -h -S "libmy_lib.a" >"libmy_lib.lss"
text	   data	    bss	    dec	    hex	filename
26	      0	      0	     26	     1a	my_lib.o (ex libmy_lib.a)
17:53:45 Build Finished. 0 errors, 0 warnings. (took 475ms)

建立主工程

在同一个工作区中,再建立主工程。
以下是不同的地方,相同的地方请参考静态库工程的建立。
选c++工程
在这里插入图片描述
在这里插入图片描述
不选crp
在这里插入图片描述
在主工程的my_main.cpp中加入库函数调用。

/*
* Copyright 2022 NXP
* NXP confidential.
* This software is owned or controlled by NXP and may only be used strictly
* in accordance with the applicable license terms.  By expressly accepting
* such terms or by downloading, installing, activating and/or otherwise using
* the software, you are agreeing that you have read, and that you agree to
* comply with and are bound by, such license terms.  If you do not agree to
* be bound by the applicable license terms, then you may not retain, install,
* activate or otherwise use the software.
*/
#ifdef __USE_CMSIS
#include "LPC17xx.h"
#endif
#include <cr_section_macros.h>// TODO: insert other include files here#include "my_lib.h"// TODO: insert other definitions and declarations hereint main(void) {// TODO: insert code hereint z = add(3, 5);// Force the counter to be placed into memoryvolatile static int i = z ;// Enter an infinite loop, just incrementing a counterwhile(1) {i++ ;// "Dummy" NOP to allow source level single// stepping of tight while() loop__asm volatile ("nop");}return 0 ;}

设置头文件路径
在这里插入图片描述
增加要链接的库名称和库搜索路径
在这里插入图片描述
编译通过

Finished building: ../src/cr_cpp_config.cpp
Finished building: ../src/cr_startup_lpc175x_6x.cpp
Finished building: ../src/crp.c
Finished building: ../src/my_main.cpp
Building target: my_main.axf
Invoking: MCU C++ Linker
arm-none-eabi-c++ -nostdlib -L"D:\my_tmp\nxp_dev\ws\my_lib\Debug" -Xlinker -Map="my_main.map" -Xlinker --cref -Xlinker --gc-sections -Xlinker -print-memory-usage -mcpu=cortex-m3 -mthumb -T "my_main_Debug.ld" -o "my_main.axf" ./src/cr_cpp_config.o ./src/cr_startup_lpc175x_6x.o ./src/crp.o ./src/my_main.o    -lmy_lib
Memory region         Used Size  Region Size  %age Used
MFlash512:       16048 B       512 KB      3.06%
RamLoc32:        1828 B        32 KB      5.58%
RamAHB32:           0 B        32 KB      0.00%
Finished building target: my_main.axf
Performing post-build steps
arm-none-eabi-size "my_main.axf"; # arm-none-eabi-objcopy -v -O binary "my_main.axf" "my_main.bin" ; # checksum -p LPC1769 -d "my_main.bin";
text	   data	    bss	    dec	    hex	filename
14668	   1380	    444	  16492	   406c	my_main.axf
18:08:44 Build Finished. 0 errors, 0 warnings. (took 2s.351ms)

验证

接上1769板子, 选SWD调试,可以单步调试,接口调用正确,且可以单步调试进入接口。

END

http://www.hskmm.com/?act=detail&tid=38215

相关文章:

  • 从“天书”到源码:HarmonyOS NEXT 崩溃堆栈解析实战指南
  • 深入理解Java线程
  • 2025年江苏博士后微服务公司权威推荐榜单:博士后服务团/高层次人才服务/高层次人才引进源头公司精选
  • RFSOC学习记录(六)混频模式分析
  • OSI七层网络参考模型(Leo)
  • 2025 年最新推荐河道护栏源头厂家口碑榜,聚焦全流程服务与高性价比之选铝合金/绳索/不锈钢河道护栏公司推荐
  • ABP vNext 基础四层
  • 2025 年管道修补器源头厂家最新推荐排行榜:揭秘行业内具备全流程管控能力的靠谱厂商及优质产品选型指南加长/铸铁/弯头/卡箍式管道修补器公司推荐
  • 2025 年最新推荐!软件验收测试公司最新排行榜,揭秘具备 CMA/CNAS 资质的靠谱品牌可靠/权威/知名的软件验收测试公司推荐
  • Socket 编程 TCP(准备阶段) - 指南
  • 信号(Signal)、信号量(Semaphore)
  • 在线聊天室
  • 2025 年亚克力板材厂家联系方式推荐:江苏金穗技术工艺与工程案例解析,泳池 / 鱼缸 / 海洋馆解决方案
  • 2025 年 亚克力透明泳池厂家联系方式推荐:江苏金穗的技术积淀与工程服务优势解析
  • vue3+vite学习日记之配置全新项目
  • 2025 全案/VI/品牌设计公司服务商推荐:意识形体(上海意感)五星领跑,这些专注视觉价值的公司值得选
  • 2025 年水泥房厂家联系方式推荐,内蒙古蒙营新型建材提供预制水泥房及配套产品专业解决方案
  • 2025修护/二硫化硒去屑/香氛/控油蓬松/洗发水品牌推荐榜:MASIL 玛丝兰(西安悦己容)五星领衔,这些专研洗护品牌值得关注
  • 2025年Q345B/20G/5310/无缝钢管 高压/5310高压/6479高压合金管推荐榜:天津大无缝五星领跑,这些品质流通企业适配工业需求
  • 一网统管,智慧赋能:国标GB28181算法算力平台EasyGBS构建城市交通可视、巡检与指挥新范式
  • YouTube数据抓取漏洞利用与概念验证解析
  • 2025 年检查井厂家联系方式推荐,内蒙古蒙营新型建材提供专业检查井解决方案与可靠产品供应
  • oracle 控制文件
  • iOS 26 查看电池容量与健康状态 多工具组合的工程实践
  • 2025年纤维布袋风管厂家权威推荐榜单:保温布袋风管/修理厂布袋风管/防火布袋风管源头厂家精选
  • APUE学习笔记之文件与目录(四) - Invinc
  • 国标GB28181算法算力平台EasyGBS智慧果园一体化监控解决方案
  • 2025年新疆旅游攻略公司权威推荐榜单:旅游线路/新疆旅游/新疆禾木旅游源头公司精选
  • 2025 年离心风机源头厂家最新推荐榜:基于中国通用机械工业协会测评权威数据,精选优质品牌解决采购难题塑料/PP/通用/钛材离心风机公司推荐
  • Java使用Selenium自动化测试网盘链接是否失效