Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
BSP
SCons
[LPC55S6X]解决在--dist之后无法编译的问题的思路
发布于 2023-03-02 17:36:48 浏览:491
订阅该版
[tocm] ### 背景 在进行bsp适配的时候,在bsp\lpc55sxx\lpc55s36_nxp_evk下输入命令scons --dist, ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230302/7e7e886508863bf6caaf61d5ce9ecf62.png) 等待导出成功,然后以dist文件下的工程开始开发,注意此时dist文件夹可以放置在任意地方,此时在dist\project下scons编译,会出现如下错误,为了更清楚的复现报错,这里并没有使用多线程编译 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230302/228a80d8b858615bc19906cc88c4dac2.png) ### 发现问题 当然对至于这样的报错。必然先确认在dist下是否真的存在这个文件,结果是没有的,那就去bsp下寻找,这里使用了everything搜索工具 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230302/f7db3d3e757fd8410341f8e39d909aa7.png.webp) 在查找到文件之后,复制过去到dist下,然后接着编译,会继续发现报错缺少其他文件,而且很显然,这些文件都在一个文件夹下,即bsp\lpc55sxx\Libraries\CMSIS\Core\Include,那么可以肯定的是,同时对比dist目录,可以肯定的是,CMSIS整个文件夹都没有被scons --dist打包出去 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230302/a0e52febf62b43770e0f06276712c8d9.png) 那么到这里基本就明确了问题,现在有两个思路可以去解决这个问题: - 修改env中的scons --dist脚本,这样就不用动CMSIS目录,不用去修改控制文件编译的SConscript脚本 - 移动CMSIS文件夹的位置,然后需要修改SConscript文件才可以编译成功,这样就不用动env 那么这两种方案呢,修改env需要考虑到其他bsp的导出问题,同时需要考虑顶层的设计,这里呢,仅仅把env中控制scons --dist的位置指明,具体位置在 [这里](https://github.com/RT-Thread/rt-thread/blob/master/bsp/lpc55sxx/tools/sdk_dist.py) ,而且其他bsp没有出现这个问题,足以证明是改bsp出现了问题,就此可以确定我们需要修改的是CMSIS的路径 ### 如何解决 #### 修改CMSIS文件夹的位置 那么现在确定了我们将要移动CMSIS文件夹,那么把它移向哪里呢,显然我们目前不知道,怎么办,看stm32 嗯就是这么直接,stm32放哪里我们放哪里,可以明确看到CMSIS是在drivers下的,那么很直接,我们复制过去同样的位置就可以了,将两个路径都放出来了,我们可以对比一下 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230302/3b7835dc4d38c664e59427fad787cf2e.png) ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230302/8b4853c79837ad524f2030a113e4e4b6.png) 到此是不是就结束了呢,显然并不是,还需要编译一下去测试才可以提交pr,诶这个时候我们会发现编译通不过了,仍然找不到"core_cm33.h"文件,让我们想想是哪里出了问题,现在文件有了,我们是不是该考虑一下编译器为什么找不到,很显然我们应该去看SConscript脚本了,在那里为编译器寻找文件指明了路径,但是那么多的SConscript脚本,我们应该去寻找哪一个,这里呢,笔者的想法是找最近的,显然lpc55sxx\Libraries\drivers\SConscript最近,遂,看!!!! ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230302/4c8ba462c3492e434f0fab3c29425733.png.webp) 看来里边是没有的,全是对.c文件的控制,等等,我们CMSIS\core\include下的可都是.h文件,我们应该从上层向下寻找,来到bsp根目录下 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230302/fc7292231e3dbacf6322cd2d698f3a3f.png.webp) 这里我就直接用vscode打开了SConscript,大家注意看路径,是bsp根目录下,很显然这个SConscript就是 了,第五行很明显确定了CMSIS的路径,(这里是我修改之后的),那么接下来开始编译 [假装有图] 很好一遍成功!!! 似乎就到此为止了,我们可以提交pr了 解决一个问题是没有那么容易的,这里(LPC55sxx里)还有其他使用CMSIS的bsp,他们的SConscript脚本我们也需要一并修改了 到此呢,就真的结束了见 [pr](https://github.com/RT-Thread/rt-thread/pull/7006/files),我还不小心将CMSIS下的LICENSE.txt文件删掉了,又加了一个commit才解决这件事情,最后的pr长这样 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230302/92765e1830ac693db25391ad5fb0d810.png.webp) **在满鉴霆大佬和杨熙大佬的建议下,最终的解决办法采用了另一种解决方案** #### 修改sdk_dist.py文件 sdk_dist.py文件在bsp\lpc55sxx\tools下,env在接受到scons --dist之后会调用该脚本 只需要在脚本里添加一句话即可 ```c print("=> copy bsp CMSIS") bsp_copy_files(os.path.join(library_path, 'CMSIS'), os.path.join(library_dir, 'CMSIS')) ``` 然后scons --dist的效果是这样的 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230303/5059cd835765ed8df51bc12e71c1b4d3.png) 然后编译测试一下 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230303/8f4854e0cc1d1e4498e05a9fdc7c831c.png) 附上 [pr](https://github.com/RT-Thread/rt-thread/pull/7011) 到这里就真的结束啦
0
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
linshire
这家伙很懒,什么也没写,当然是选择原谅他
文章
2
回答
3
被采纳
0
关注TA
发私信
相关文章
1
scons不支持python3吗?
2
编译又出现问题
3
BSP目录下做好一个项目后,怎么把发给别人的包裁剪的小...
4
为什么重新scons --target=mdk 后,以前在MDK工程里保存的C文
5
Scons 添加Group,SConscript已经执行,源码却没有添加进工程
6
scons如何指定输出目录?
7
新人求助。
8
想用env 工具自己构建编译环境想用vscode 进行一些简单程序
9
关于scons脚本问题
10
使用scons --target=makefile的问题
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
I2C_IIC
ESP8266
UART
WIZnet_W5500
ota在线升级
PWM
cubemx
flash
freemodbus
BSP
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
flashDB
GD32
socket
编译报错
中断
Debug
rt_mq_消息队列_msg_queue
SFUD
msh
keil_MDK
ulog
C++_cpp
MicroPython
本月问答贡献
xusiwei1236
5
个答案
2
次被采纳
踩姑娘的小蘑菇
1
个答案
2
次被采纳
用户名由3_15位
7
个答案
1
次被采纳
bernard
4
个答案
1
次被采纳
张世争
1
个答案
1
次被采纳
本月文章贡献
聚散无由
2
篇文章
15
次点赞
catcatbing
2
篇文章
5
次点赞
Wade
2
篇文章
2
次点赞
Ghost_Girls
1
篇文章
6
次点赞
YZRD
1
篇文章
2
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部