rk3399/rk3399pro camera demo
时间: 2023-05-16 08:01:49 浏览: 124
rk3399/rk3399pro camera demo是Rockchip公司推出的一款用于演示RK3399和RK3399pro芯片的摄像头应用程序。该应用程序可以支持多种不同类型的摄像头,如USB摄像头、CSI接口摄像头和RGB/YUV接口摄像头等。通过这个demo,用户可以轻松地展示和测试摄像头的各种功能,包括曝光、图像增强、白平衡、自动对焦等。此外,该应用程序还可以同时打开多个摄像头,使用户可以拍摄多个不同角度或位置的图像。同时,rk3399/rk3399pro camera demo还可以支持摄像头实时采集图像并在屏幕上展示,用户可以方便快捷地实现实时图像监控。另外,该应用程序还提供了图像的保存功能,用户可以将拍摄的图像保存到文件中,以便后续的处理或分析。总体来说,rk3399/rk3399pro camera demo为用户提供了一个便捷的平台来测试和展示摄像头的各种功能,同时也为摄像头应用程序的开发提供了一个很好的参考。
相关问题
rk3399 /dev/dma-buf
RK3399 SoC 是一款基于 ARM Cortex-A72 和 Cortex-A53 的六核处理器,它支持 DMA-BUF 内存共享框架。在 RK3399 上,可以通过 /dev/dma-buf 设备节点来访问 DMA-BUF 内存共享缓冲区。
为了创建一个 DMA-BUF 缓冲区,需要使用 DRM 设备来分配内存。DRM 设备会返回一个指向分配内存的指针,然后可以使用 dma_buf_export() 函数将这个指针转换为 DMA-BUF 对象。DMA-BUF 对象可以通过文件描述符进行传递和共享,其他进程可以使用 dma_buf_import() 函数将其转换回指针并访问该内存。
以下是在 RK3399 上使用 DMA-BUF 的一些示例:
1. 分配内存
```c
#include <drm/drmP.h>
struct drm_device *dev; // DRM 设备指针
struct drm_gem_object *gem_obj;
int ret = drm_gem_object_init(dev, &gem_obj, size);
if (ret) {
// 分配内存失败
return ret;
}
```
2. 将内存转换为 DMA-BUF 对象
```c
#include <linux/dma-buf.h>
struct dma_buf *dmabuf = dma_buf_export(gem_obj->filp, gem_obj->size, O_RDWR, NULL);
if (IS_ERR(dmabuf)) {
// 转换失败
drm_gem_object_unreference_unlocked(gem_obj);
return PTR_ERR(dmabuf);
}
```
3. 将 DMA-BUF 对象传递给其他进程
```c
int fd = dma_buf_fd(dmabuf, O_CLOEXEC);
if (fd < 0) {
// 获取文件描述符失败
dma_buf_put(dmabuf);
drm_gem_object_unreference_unlocked(gem_obj);
return fd;
}
```
其他进程可以使用文件描述符打开 DMA-BUF 对象,并使用 dma_buf_import() 函数将其转换回指针以访问该内存。
2023-07-21T16:24:18 checking whether mknod can create fifo without root privileges... configure: error: in `/mnt/rk3399/3399_4.4/buildroot/output/rockchip_rk3399/build/host-tar-1.29': 2023-07-21T16:24:18 configure: error: you should not run configure as root (set FORCE_UNSAFE_CONFIGURE=1 in environment to bypass this check) 2023-07-21T16:24:18 See `config.log' for more details 2023-07-21T16:24:18 make[1]: *** [package/pkg-generic.mk:221: /mnt/rk3399/3399_4.4/buildroot/output/rockchip_rk3399/build/host-tar-1.29/.stamp_configured] Error 1 2023-07-21T16:24:18 make: *** [/mnt/rk3399/3399_4.4/buildroot/output/rockchip_rk3399/Makefile:16: _all] Error 2 Command exited with non-zero status 1 you take 0:19.87 to build builroot ERROR: Running build_buildroot failed! ERROR: exit code 1 from line 715: /usr/bin/time -f "you take %E to build builroot" $COMMON_DIR/mk-buildroot.sh $BOARD_CONFIG
根据提供的错误信息,问题出现在运行 configure 命令时。错误信息中提到了一个解决方案,即在环境中设置 FORCE_UNSAFE_CONFIGURE=1 来绕过此检查。
你可以按照之前提到的步骤尝试解决问题:
1. 执行以下命令,设置环境变量:
```
export FORCE_UNSAFE_CONFIGURE=1
```
2. 然后重新运行构建命令:
```
/usr/bin/time -f "you take %E to build builroot" $COMMON_DIR/mk-buildroot.sh $BOARD_CONFIG
```
这样设置环境变量后,应该可以绕过权限检查,并继续进行构建过程。
如果问题仍然存在,你可以查看 `config.log` 文件,其中可能包含更详细的错误信息。你可以使用以下命令查看该文件:
```
cat config.log
```
请确保你的构建环境满足 RK3399 SDK 的要求,并且所有依赖项都正确安装。如果问题仍然存在,请提供更多关于构建环境、配置选项以及其他错误信息的详细信息,以便我能够提供更准确的帮助。