我正在尝试使用beaglebone black中的OpenCV运行程序,如链接末尾所述https://solarianprogrammer.com/2014/04/21/opencv-beaglebone-black-ubuntu/
我有一些使用
解决的编译问题g++ `pkg-config --cflags --libs opencv` test_2.cpp -o test_2
它成功编译,但是当我尝试使用
运行时./test_2
我收到错误:
CMEM错误:init:无法打开/ dev / cmem:'没有这样的文件或 目录“
似乎没有安装cmemk内核模块。
以root命令运行的命令将安装cmemk和 允许OpenCL正常进行。
对于可用的CMEM DDR块大小:~512MB:modprobe cmemk phys_start = 0xa0000000 phys_end = 0xc0000000 pools = 1x536870912 allowOverlap = 1
我不知道为什么我会这样做,而且我已经几天都无法解决它了。请引导我走向正确的方向。
此致
答案 0 :(得分:1)
所以,我遇到了同样的问题(从beaglebone网站上的最新Debian版本开始运行 - 8.5)。
我找到了这个链接here - 这表明我做了这些事情:
For older images do this:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get remove dkms --purge #get rid of dkms/etc..
cd /opt/scripts/tools/
git pull
sudo ./update_kernel.sh
sudo reboot
cd /usr/share/ti/examples/opencl/float_compute/
sudo make
sudo modprobe cmemk
sudo ./float_compute
现在,update_kernel.sh实际上并没有完全正常工作(grep在最后一次更新-initramfs上中断),所以我尝试安装initramfs-tools
,但它仍然没有工作......所以我只是评论出来了。重新启动后,我试图找到opencvl / float_compute文件夹......但是这并不存在,所以我只是运行我的代码,并希望最好,它实际上工作。
所以,我的建议是:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get remove dkms --purge #get rid of dkms/etc..
cd /opt/scripts/tools/
git pull
sudo apt-get install initramfs-tools
然后通过在update-initramfs -uk ${latest_kernel}
方法中注释掉third_party_final()
行来编辑update_kernel(只需在行前添加#)。然后做:
sudo ./update_kernel.sh
sudo reboot
可能没有必要安装initramfs-tools,但我不确定。我有一种感觉,实际的解决方案只是remove dkms
或内核的更新,但同样,不确定。我只能说这样做对我有用。