本帖最后由 tobot 于 2022-12-24 21:48 编辑
BL808板卡已到驿站多日,但疫情原因,一直被封锁,今日驿站才刚解封,第一时间去取了货,算是给自己拿了一个圣诞礼物吧。
如网友们的测评,板卡相当清新简洁。在博流的产品介绍页(https://www.bouffalolab.com/product/)找不到相关产品,但是比较有趣的是可以在博流官方github中(https://github.com/bouffalolab/bl808_linux)找到SDK。根据github对MCU的整体介绍(https://github.com/bouffalolab/bl_mcu_sdk)可以看到这款芯片还有部分功能尚未完善测试。
因为这块板子可以分别支持RTOS和Linux,分别进行了尝试:
首先参考sipeed的wiki
(https://wiki.sipeed.com/hardware/zh/maix/m1s/other/start.html)
在linux环境中git下M1s_BL808_example和M1s_BL808_SDK,然后在导入环境参数:
export BL_SDK_PATH=/home/tobot/M1s_BL808_SDK
再到M1s_BL808_example/c906_app目录下,使用build.sh逐个编译例程。在wiki中没有提到编译时使用的文件权限,但最好是先使用sudo su提升权限后再做后续操作,不然编译时总会出现这样或者那样问题。
板卡缺省就支持RTOS,按住板卡左右两个按钮,将板卡的uart接口通过附带的usb线连接到电脑上,电脑中会自动生成一个大约5M的u盘,将编译完成的例程XX.bin(在M1s_BL808_example/c906_app/build_out/目录下),拷贝到u盘的根目录下就会自动执行,wiki中说到需要指定文件名d0fw.bin(实测并不需要)。
目前已测试例程:lvgl_demo 、image_processing_demo。
1)lvgl_demo
这个源码相对简单(具体分析就不献拙了),源码可以在目录
“M1s_BL808_SDK\components\lvgl”中细看。
2)image_processing_demo
主要是 “M1s_BL808_SDK/components/platform/hosal/bl808_hal/ bl_cam.c”
从bl_cam_mipi_rgb_frame_get(&picture, &length)获得&picture,再经过
“M1s_BL808_SDK/components/sipeed/m1s_tools/inc/imgtool/ bilinear_interpolation.h”中的BilinearInterpolation_RGBA8888将picture转换成image_buf,处理后
使用
“M1s_BL808_SDK/components/platform/soc/bl808/bl808_std/BSP_Common/lcd/spi/st7789v_spi.c”调用st7789v_spi_draw_picture_nonblocking输出到lcd上
代码本身并不复杂,但构思很精巧。
在代码中给出了五组tans_mats,用于图像处理
手机拍摄效果不太好,我在电脑上模拟了一下效果,大致如下:
矩阵
{
{0, 0, 0},
{0, 1, 0},
{0, 0, 0},
}
显示的就是原图(效果1)
{
{-1, -1, -1},
{-1, 8, -1},
{-1, -1, -1},
}
是边缘检测(效果2)
{
{-1, -1, -1},
{-1, 9, -1},
{-1, -1, -1},
}
是块模糊(效果3)
{
{2, 0, 0},
{0, -1, 0},
{0, 0, -1},
}
和
{
{-1, -1, 0},
{-1, 0, 1},
{0, 1, 1},
}
感觉是浮雕效果?(效果4和效果5)
类似的,尝试了一下linux(还未烧入板子)
首先是git sdk:
再下载toolchain:
mkdir -p toolchain/cmake toolchain/elf_newlib_toolchain toolchain/linux_toolchain
curl https://cmake.org/files/v3.19/cmake-3.19.3-Linux-x86_64.tar.gz | tar xz -C toolchain/cmake/ --strip-components=1
curl https://occ-oss-prod.oss-cn-hangzhou.aliyuncs.com/resource//1663142243961/Xuantie-900-gcc-elf-newlib-x86_64-V2.6.1-20220906.tar.gz | tar xz -C toolchain/elf_newlib_toolchain/ --strip-components=1
curl https://occ-oss-prod.oss-cn-hangzhou.aliyuncs.com/resource//1663142514282/Xuantie-900-gcc-linux-5.10.4-glibc-x86_64-V2.6.1-20220906.tar.gz | tar xz -C toolchain/linux_toolchain/ --strip-components=1
完成后的目录结构大概是这样:
执行./build.sh all以后,在out目录下可以生成linux文件。
这里有几点README似乎有些忽略了:
1)编译所需要的不是所有的包在linux缺省安装时都已经具备了,可能会出现诸如:
scripts/extract-cert.c:21:10: fatal error: openssl/bio.h: No such file or directory
21 | #include <openssl/bio.h>
| ^~~~~~~~~~~~~~~
compilation terminated.
之类的提示,这时就需要找到差的包,使用apt安装,例如上面这个提示,就使用
apt-get install libssl-dev
修复。
2)toolchain应该放在SDK的下级目录,但操作时候没有进入toolchain目录,在完成curl后,可以用mv修改。
|