乐鑫技术交流
直播中

陈霞

7年用户 945经验值
私信 关注
[问答]

请问opencv组件.bss太大了怎么放到片外RAM?

我试过 在定义时,cv::QRCodeDetector QRdetecter 前面加 EXT_RAM_BSS_ATTR,但是并没有用。IDF文档中提到,利用链接器片段方案 extram_bss 将组件或库的 BSS 段放到片外 RAM 中。然而这方面的具体教程。                                                                                                                                                                                                                                 

回帖(1)

rosa

2024-6-5 17:41:36
要将OpenCV组件的.bss段放到片外RAM中,您需要遵循以下步骤:

1. 首先,确保您的硬件支持片外RAM。请查阅您的硬件文档以确认这一点。

2. 在您的项目中,创建一个名为`sdkconfig.rename`的文件,用于重命名配置选项。在该文件中,添加以下行:

```
CONFIG_SPIRAM_SUPPORT=y
```

这将启用片外RAM支持。

3. 在您的CMakeLists.txt文件中,添加以下代码以启用片外RAM:

```cmake
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mfix-esp32-psram-cache-issue")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -u _ZN2cv12QRCodeDetector6detectERKSt6vectorIN3cv3MatEESaIS5_EE")
```

这将修复ESP32的片外RAM缓存问题,并确保QRCodeDetector的BSS段被放置在片外RAM中。

4. 在您的代码中,使用`EXT_RAM_BSS_ATTR`属性来声明需要放置在片外RAM的变量。例如:

```cpp
EXT_RAM_BSS_ATTR cv::QRCodeDetector QRdetector;
```

5. 重新构建您的项目,并确保链接器配置正确地将.bss段放置在片外RAM中。

6. 如果您仍然遇到问题,请检查您的硬件连接和配置,确保片外RAM已正确连接并配置。

请注意,这些步骤可能需要根据您的具体硬件和项目需求进行调整。如果您仍然遇到问题,请查阅相关的硬件和软件文档,或寻求社区支持。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分