【Spiffo】光速项目:LVGL v9框架下的MIPI简易相机_Part1
摘要由于现在网上对于LVGL v9以及MIPI DSI、CSI的资料少的可怜,本期来做一个简易MIPI相机的demo,来大概串一下这几个东西的使用思路和框架构建。(演示的gif只能传5M,难绷座机画质)
https://i-blog.csdnimg.cn/direct/e7650455536a44cfa5a196aad0b04bd8.gif
根据使用场景的差异,文章第一节先介绍怎样快速部署项目运行起来(毕设人狂喜),后面再详细介绍这个demo的各种细节,各取所需吧。如果项目有任何环节出现问题可以留言,我会尽可能答复。
预备工作
因为教程还是面向新手的,以是这次我用各位容易买到的树莓派,不外你可以不用,实际上任何平台的任何板子都可以用,你只必要确认你的板子是支持mipi dsi,mipi csi的MPU即可。单片机姑且不做讨论,因为我确实没有带mipi控制器却不能跑Linux的芯片。
于是乎你必要如图的这些东西:
留意:
1.如果你用的恰好是树莓派,别买最新的module v3摄像头,已经不支持经典的控制方式了
2.这种类型的摄像头和显示屏都是专板专用的(比如其他各种板子的外设,即使是这样的软排线连接,也不见得就能用),因为排线只充当导线的作用,能不能兼容取决于其接口定义是否雷同,最好买官方适配的外设
https://i-blog.csdnimg.cn/direct/9578c8dea76d472fa904419d851ff390.png
安装方式:
拽住黑色的插槽卡扣网上拉,引脚面朝凹槽插入,然后卡扣摁回去就行了
https://i-blog.csdnimg.cn/direct/c70d10e7d2d645429849a4f04077f8a1.pnghttps://i-blog.csdnimg.cn/direct/79b8084118be49e081449f152d85ebc1.png
安装完长这样,留意摄像头和显示屏的接口不可调换:
https://i-blog.csdnimg.cn/direct/856652a6d7664d4dbd0595e8d89370c8.png
部署:
一、工程下载
先下载我已经测试好的demo文件:
还是百度网盘吧,测试了几次,github在国内不好使,链接:
https://pan.baidu.com/s/1GHs6pqRNpbFEuXX_k2VhMw 提取码: tj38 下载以后解压出来有两个东西,如图:https://i-blog.csdnimg.cn/direct/8de2ebbc026444a0933853b516c16028.png
(1)左边是一个转png格式的第三方库(开源的,感恩):
GitHub - lvandeve/lodepng: PNG encoder and decoder in C and C++.
(2)右边的是配置好的程序
二、一些简单的配置
在编译使用以前有些东西必要根据实际环境进行修改
1、关闭默认的桌面
首先是关闭默认的桌面程序让出frame buffer设备来,各家有各家的调法,我这里说一下树莓派怎么关闭(究竟上基于gnome框架的桌面程序大部门都能这样关)
sudo systemctl set-default multi-user.target 即可关闭,重启后见效,关闭后长这样:
https://i-blog.csdnimg.cn/direct/666ff81cc938430da4ed37d4869f884e.png
如果必要再次打开可以:
sudo systemctl set-default graphical.target
2、修改设备号
然后必要根据实际的设备号进行设备的选择,这个工程使用了三种设备:fb设备(屏幕)、v4l2设备(摄像头)、以及evdev(屏幕的触控),他们都在main.c里进行修改。
(1)前两类如果每种只使用一个设备(这个板子上只有一个屏和一个摄像头)的话默认大概率就是fb0和video0,不用改。假设确实是不一样的话,修改在main.c的(CTRL + F可以进行搜刮)
https://i-blog.csdnimg.cn/direct/bc37c9ec88604eeea07715843b5a8a9f.png
和
https://i-blog.csdnimg.cn/direct/5834c72907cf403eb929826c8e63f7fb.png
(2)然后是evdev,这个不一样的概率比较大, 必要安装工具测试一下设备是哪个,差异的板子能下载到的包不一样,这里简单过一下就得了,着实不行从0开始今后一个个试,总能对的。
树莓派安装这两个东西,
sudo apt install input-utils
sudo apt install evtest
安装完以后输入lsinput就可以看到各种输入设备了:
https://i-blog.csdnimg.cn/direct/e7114a8455af41249d3ab152a1ea921b.png
触摸通常是I2C驱动的,以是重点找I2C字眼的内容,比如这样,可以看到设备是 /dev/input/event4
https://i-blog.csdnimg.cn/direct/487cef5a6485483abeec9f04b5541d6f.png
找到以后验证一下是否是它,输入下面内容后,摸一下屏幕在控制台如果有输出,说明就是它了
evtest /dev/input/event4 https://i-blog.csdnimg.cn/direct/8c6bef8aeb9d4af5b8c1b854af5a3ebc.png
然后可以在这里(也是main.c里)修改变乱设备号,上面测试出来是多少就写多少
https://i-blog.csdnimg.cn/direct/0ed13c255d9d4847a8126e5d9dfd5a43.png
3、图片的生存路径
只必要修改中央框起来的部门,A:不用管,我已经处理好了,output.png是输出命名,想换也可以
举个例子,比如我想放在系统根目录的文件夹output里,命名为233.png,则必要写为:
"A:/output/233.png"(也就是中央写的是绝对路径)。
https://i-blog.csdnimg.cn/direct/28d7cbd39b164910939bcf8e2af72f83.png
三、编译
大致上有两种使用方式,第一种是直接放到板子上进行编译,比较吃板子性能;第二种是在主机上进行交织编译成arm版本的二进制文件放到板子上运行,编译更快,但是稍微贫苦点,我两种都讲,先看第一种。
1、直接板上编译
板上编译的话我建议先配置一个ssh连接,方便文件传输和控制,详细配置方法和这个类似:
【Spiffo】环境配置:VScode+Windows下开发Linux-CSDN博客
其次,你必要下载cmake工具,因为整个工程都是按照cmake进行配置的,这是主流的做法,最好是学习使用,不难的。安装:
sudo apt install cmake
连接上以后进入lv_port_linux-master这个文件夹,可以或许看到一大堆文件,但是你只必要管这三个:
bin文件夹存放编译出来的程序,build文件夹存放编译过程产生的中央文件,main.c就是字面意思
https://i-blog.csdnimg.cn/direct/799de5f6fc7740de9b274fa0b1af71c7.png
要进行编译你只必要进入build文件夹,然后输入
cmake .. 就会开始构建编译文件
https://i-blog.csdnimg.cn/direct/a03c57fe37b14f589476a486bad510c4.png
编译规则构建完后直接在当前的文件夹里输入
make 就会开始编译了,整个过程大概持续四五分钟(视板子性能而定)中央会出现些许的warning,不用管
https://i-blog.csdnimg.cn/direct/5951a15e47e849dfac38ece55a0511b1.png
瞥见这个就算编译好了
https://i-blog.csdnimg.cn/direct/d763ce71a13b45128e0adebe3d5cad4d.png
编译完成后回到上一级目录,进入bin文件夹,可以看到天生了一个可执行程序
https://i-blog.csdnimg.cn/direct/bc3da7316f1d40ae88f7f90b13349e84.png
2、交织编译放到板子上运行
第二种方式就是主机上交织编译完然后放到板子上运行,这种做法稍微贫苦一点,但是编译很快,差不多半分钟就好了。
如果使用交织编译工具的话必要对工程进行一定的额外配置才能正常使用,留意,因为是混编,以是gcc和g++(有的叫gxx,一个东西)都是必要的,配置方法很多,但是我保举这样配置,省得后续出一系列奇怪的问题,详细配置如下:
首先必要在项目根目录新建一个规则文件(其实放哪里都行,叫什么也无所谓),比如我就命名成保举的toolchain.cmake了,然后其中写上这些内容:
https://i-blog.csdnimg.cn/direct/b32fcff7abf14b20ba05bf5a72f3da3e.png
其中这部门是你的交织编译器路径
https://i-blog.csdnimg.cn/direct/2c2787ad705a4929be68f678a4ff8c41.png
假设你没有交织编译工具的话,从这里下载
https://pan.baidu.com/s/1o6vqsCVEwDNj1kMauShiFw 提取码: sibk 如果对变量整不明白的就像我一样直接写完整路径,toolchains这个文件夹本体我是放在系统根目录了,以是是
/toolchains/…… 假设你下载下来的文件要放在其他地方的话就是
其他地方/toochains/…… 写完生存退出后工程里的东西就是这些:
https://i-blog.csdnimg.cn/direct/f7702131e71441b0a6ec805a58a4ccde.png
生存后就像上面一样,进入build文件夹,然后输入
cmake -DCMAKE_TOOLCHAIN_FILE=”../toolchain.cmake” .. 构建编译规则,可以看到交织编译工具已经配置上了
https://i-blog.csdnimg.cn/direct/76a5337abbb7458ca9d41311aa1ea866.png
留意:网传说这步如果是使用刚发布的LVGL v9版本会出现一定的问题,详细处理见(如果是官方的master分支的话是没有问题的):
LVGLv9.1.0移植 - 韦东山 - 博客园
然后make编译,完了以后和上面一样在上一级的bin目录里天生对应的二进制文件,把这个天生的文件弄到开发板就可以运行了
https://i-blog.csdnimg.cn/direct/24804e3377e44217be8e72a90a77f88b.png
至于传文件的方法,这里说两种:
(1)tftp
第一种是使用tftp,配置过程如下:
【Spiffo】环境配置:开发板和虚拟机文件互传(TFTP)_开发板tftp-CSDN博客
(2)ssh自带文件互传
第二种是直接使用vscode的ssh文件传输,直接拖拽文件,放到侧边栏里就可以了
https://i-blog.csdnimg.cn/direct/27e8b8cee6a048ebbedb92ee31e0a0be.png
如果报权限错误的话,参考这篇配置一下
【Spiffo】防傻防呆Tips——Error:EACCES:permission denied,open.....问题解决_error: eacces: permission denied, open-CSDN博客
四、执行demo程序
传输已往的文件默认不带可执行权限,以是必要进行手动添加:
chmod +x lvglsim 然后输入下面指令即可运行
./lvglsim 然后显示屏上的画面就跟开头演示的gif一样,点一下蓝色的按钮可以拍照,生存在lvglsim旁边
https://i-blog.csdnimg.cn/direct/76d25d4bbf9d40669355ace43fecb656.png
聊点闲话
现在还没做点击预览图检察和图库,因为我重心放在MIPI设备的使用上,要做也很简单,可以自行尝试。个人认为在触发变乱里加一个九宫格然后列出图片即可,后续有空就做(有更好的方案也可以留言)。后续我先更新一下demo工程的细节剖析。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]