| | |
| | | |
| | | ## 1.1 安装交叉编译环境 |
| | | |
| | | ### 安装驱动 |
| | | |
| | | 1.下载RK驱动助手 DriverAssitant([下载地址](https://wiki.luckfox.com/zh/Luckfox-Pico/Luckfox-Pico-prepare)) |
| | | |
| | | 2.打开RK驱动助手 DriverAssitant 安装 USB 驱动程序,此过程无需连接,安装完成后重启电脑。 |
| | | |
| | | (注意:win10系统下,是能识别到USB驱动的,但win7上好像识别不到!!!) |
| | | |
| | |  |
| | | |
| | | ## 1.2 下载获取SDK源码 |
| | | |
| | | ### 1.2.1 安装依赖环境 |
| | | |
| | | ``` |
| | | sudo apt update |
| | | |
| | | sudo apt-get install -y git ssh make gcc gcc-multilib g++-multilib module-assistant expect g++ gawk texinfo libssl-dev bison flex fakeroot cmake unzip gperf autoconf device-tree-compiler libncurses5-dev pkg-config bc python-is-python3 passwd openssl openssh-server openssh-client vim file cpio rsync |
| | | ``` |
| | | |
| | | ### 1.2.2 获取最新的 SDK |
| | | |
| | | ``` |
| | | git clone https://gitee.com/LuckfoxTECH/luckfox-pico.git |
| | | ``` |
| | | |
| | | SDK目录结构 |
| | | |
| | | ``` |
| | | ├── build.sh -> project/build.sh ---- SDK编译脚本 |
| | | ├── media --------------------------- 多媒体编解码、ISP等算法相关(可独立SDK编译) |
| | | ├── sysdrv -------------------------- U-Boot、kernel、rootfs目录(可独立SDK编译) |
| | | ├── project ------------------------- 参考应用、编译配置以及脚本目录 |
| | | ├── output -------------------------- SDK编译后镜像文件存放目录 |
| | | └── tools --------------------------- 烧录镜像打包工具以及烧录工具 |
| | | ``` |
| | | |
| | | ## 1.3 Linux SDK 编译 |
| | | |
| | | Buildroot 镜像既支持TF卡启动又支持 SPI NAND FLASH 启动 |
| | | |
| | | 编译 Buildroot 镜像,使其能够支持 TF 卡启动,请修改对应的板型 BoardConfig-EMMC-Ubuntu-xxx.mk文件中 LF_TARGET_ROOTFS 改为 buildroot,如: |
| | | |
| | | ``` |
| | | export LF_TARGET_ROOTFS=buildroot |
| | | ``` |
| | | |
| | | 这里我们使用SPI NAND FLASH启动 |
| | | |
| | | ### 1.3.1 安装交叉编译工具链 |
| | | |
| | | ``` |
| | | cd {SDK_PATH}/tools/linux/toolchain/arm-rockchip830-linux-uclibcgnueabihf/ |
| | | source env_install_toolchain.sh |
| | | ``` |
| | | |
| | | ### 1.3.2 全部编译镜像 |
| | | |
| | | ``` |
| | | cd luckfox-pico |
| | | |
| | | #编译busybox/buildroot |
| | | ./build.sh lunch |
| | | ``` |
| | | |
| | | 会显示如下: |
| | | |
| | | ``` |
| | | BoardConfig-*.mk naming rules: |
| | | BoardConfig-"启动介质"-"系统版本"-"硬件版本"-"应用场景".mk |
| | | BoardConfig-"boot medium"-"system version"-"hardware version"-"applicaton".mk |
| | | |
| | | ---------------------------------------------------------------- |
| | | 0. BoardConfig_IPC/BoardConfig-EMMC-Buildroot-RV1103_Luckfox_Pico-IPC.mk |
| | | boot medium(启动介质): EMMC |
| | | system version(系统版本): Buildroot |
| | | hardware version(硬件版本): RV1103_Luckfox_Pico |
| | | applicaton(应用场景): IPC |
| | | ---------------------------------------------------------------- |
| | | |
| | | ---------------------------------------------------------------- |
| | | 1. BoardConfig_IPC/BoardConfig-EMMC-Buildroot-RV1103_Luckfox_Pico_Mini_A-IPC.mk |
| | | boot medium(启动介质): EMMC |
| | | system version(系统版本): Buildroot |
| | | hardware version(硬件版本): RV1103_Luckfox_Pico_Mini_A |
| | | applicaton(应用场景): IPC |
| | | ---------------------------------------------------------------- |
| | | |
| | | ---------------------------------------------------------------- |
| | | 。。。。。。 |
| | | ---------------------------------------------------------------- |
| | | 8. BoardConfig_IPC/BoardConfig-SPI_NAND-Buildroot-RV1106_Luckfox_Pico_Pro_Max-IP C.mk |
| | | boot medium(启动介质): SPI_NAND |
| | | system version(系统版本): Buildroot |
| | | hardware version(硬件版本): RV1106_Luckfox_Pico_Pro_Max |
| | | applicaton(应用场景): IPC |
| | | ---------------------------------------------------------------- |
| | | |
| | | Which would you like? [0]: |
| | | |
| | | ``` |
| | | |
| | | 这里我们输入8,选择BoardConfig_IPC/BoardConfig-SPI_NAND-Buildroot-RV1106_Luckfox_Pico_Pro_Max-IP C.mk |
| | | |
| | | 继续在当前目录下输入: |
| | | |
| | | ``` |
| | | ./build.sh |
| | | ``` |
| | | |
| | | ## 1.4 系统镜像烧录 |
| | | |
| | | ### 烧录 SPI NAND Flash |
| | | |
| | | 1.下载和解压烧录工具([下载地址](https://files.luckfox.com/wiki/Luckfox-Pico/Software/SocToolKit.zip))。 |
| | | |
| | | 2.开发板就选择 RV1106 |
| | | |
| | |  |
| | | |
| | | 3.LuckFox Pico Mini B/Plus/Pro/Max 在 Windows下载固件库方法: |
| | | |
| | | ① 按住 BOOT 键后连接电脑后,松开 BOOT 键,瑞芯微刷机工具就会显示 MaskRom 设备。 |
| | | ② 加载固件的存放目录,重载 env 文件,勾选所有项。 |
| | | ③ 点击下载。 |
| | | |
| | |  |
| | | |
| | | **注意:在执行①步骤的时候,一定要先按住BOOT键不放,用type-c数据先后,再松开,才会出现Maskrom显示!!!** |
| | | |
| | | ## 1.5 ADB登录 |
| | | |
| | | ### 1.5.1 安装ADB |
| | | |
| | | 1.下载 ADB 安装包,解压即可使用([戳我下载](https://files.luckfox.com/wiki/Luckfox-Pico/Software/adb_fastboot.zip))。 |
| | | |
| | | 2.右键我的电脑属性—>高级系统设置—>环境变量。 |
| | | |
| | |  |
| | | |
| | | 3.系统变量—>编辑—>将adb解压路径新建进去。 |
| | | |
| | |  |
| | | |
| | | 4.点击确定保存环境变量。 |
| | | |
| | |  |
| | | |
| | | ### 1.5.2 ADB登录 |
| | | |
| | | 按下 Win + R 快捷键输入 CMD 打开 Windows 终端,在终端输入 ADB 命令即可查看 ADB 相关信息。 |
| | | |
| | |  |
| | | |
| | | 将网线一端连路由器一端连接开发板网口 |
| | | |
| | |  |
| | | |
| | | 输入:`adb shell`,进入烧录好的系统 |
| | |  |
| | | |
| | | |
| | | |
| | | # 2. 摄像头应用测试 |
| | | |
| | | Luckfox Pico Max适配的是 SC3336 3MP Camera (A) 摄像头,这款摄像头采用思特威SC3336感光芯片,支持3百万像素。具备高灵敏度,高信噪比低照度的性能,能够呈现更加细腻、色彩更加逼真的夜视全彩成像,更好地适应环境光线变化。当前推流仅适用于 buildroot系统。 |
| | | |
| | | ## 2.1 查看摄像头 |
| | | |
| | | TBD |
| | | 1.首先连接摄像头,请确保连接正常后开机。系统将自动识别摄像头,注意接线不要接反了。 |
| | | |
| | | **LuckFox PicoMax 开发板连接摄像头时,请确保摄像头排线的金属面朝向开发板芯片。** |
| | | |
| | |  |
| | | |
| | | 2.查看摄像头,若成功识别摄像头会生成 rkipc.ini 文件。 |
| | | |
| | |  |
| | | |
| | | 3.获取设备的 IP 地址 |
| | | |
| | |  |
| | | |
| | | Luckfox Pico Max 默认 IP 为 172.32.0.93,网口ip为10.230.149.130 |
| | | |
| | | ## 2.2 配置RNDIS虚拟网口 |
| | | |
| | | 1.Windows 安全中心—>防火墙和网络保护—>关闭防火墙。 |
| | | |
| | | 2.配置 RNDIS 网卡的静态IP,打开设置—>高级网络设置—>更改适配器选项。 |
| | | |
| | | 3.网卡一般是类似这样的名字Remote NDIS based nternet Sharing Device,右键属性。 |
| | | |
| | |  |
| | | |
| | | 4.双击 internet 协议版本(TCP/IPv4),IPV4地址设置为 172.32.0.100,避免和设备冲突。 |
| | | |
| | |  |
| | | |
| | |  |
| | | |
| | | ## 2.3 使用VLC media player 推流 |
| | | |
| | | 1. 下载并安装 VLC media player 。 |
| | | |
| | | 2. 打开 VLC media player 软件,在媒体—>打开网络串流 |
| | | |
| | |  |
| | | |
| | | 3. 输入默认的 IP 地址:rtsp://172.32.0.93/live/0 |
| | | |
| | | 4. 也可以使用 eth0 的 IP地址串流: rtsp://10.230.149.130/live/0 |
| | | |
| | | 5. 点击播放,即可看到摄像头画面,可以旋转镜头来调焦 |
| | | |
| | |  |
| | | |
| | | ## 2.4 V4L2-utils 工具包安装 |
| | | |
| | | V4L2-utils 是一组用于测试和配置 V4L2 设备的实用工具,它们通过命令行界面提供了对 V4L2 接口的访问。Luckfox SDK 的buildroot包中已经包含了 v4l2-utils软件包中的工具,但需要手动开启它,进入到/luckfox-pico/sysdrv/source/buildroot/buildroot-2023.02.6下输入`make menuconfig`,进入buildroot图形化界面菜单选项(**注意:必须先将下载好的源码编译一次才会有/buildroot-2023.02.6**) |
| | | |
| | | 在 buildroot 目录添加 V4L2,使用关键字"libv4l2"进行搜索。 |
| | | |
| | |  |
| | | |
| | | 根据路径使能V4L2-utils 工具包 |
| | | |
| | |  |
| | | |
| | | **注意libv4l和v4l-utils tools都要选上选上后,一定要保存再退出,继续输入** |
| | | |
| | | ``` |
| | | make ARCH=arm savedefconfig |
| | | cp .config ./configs/luckfox_pico_defconfig |
| | | ``` |
| | | |
| | | 然后重新编译,编译完成后会在/luckfox-pico/output下生成编译产物 |
| | | |
| | | ``` |
| | | output/ |
| | | ├── image |
| | | │ ├── download.bin ---------------- 烧录工具升级通讯的设备端程序,只会下载到板子内存 |
| | | │ ├── env.img --------------------- 包含分区表和启动参数 |
| | | │ ├── uboot.img ------------------- uboot镜像 |
| | | │ ├── idblock.img ----------------- loader镜像 |
| | | │ ├── boot.img -------------------- kernel镜像 |
| | | │ ├── rootfs.img ------------------ kernel镜像 |
| | | │ └── userdata.img ---------------- userdata镜像 |
| | | └── out |
| | | ├── app_out --------------------- 参考应用编译后的文件 |
| | | ├── media_out ------------------- media相关编译后的文件 |
| | | ├── rootfs_xxx ------------------ 文件系统打包目录 |
| | | ├── S20linkmount ---------------- 分区挂载脚本 |
| | | ├── sysdrv_out ------------------ sysdrv编译后的文件 |
| | | └── userdata -------------------- userdata |
| | | ``` |
| | | |
| | | 将系统镜像烧录到开发板 |
| | | |
| | | ## 2.5 v4l2-ctl使用 |
| | | |
| | | 1.列出摄像头的设备 |
| | | |
| | | ``` |
| | | # v4l2-ctl --list-devices |
| | | rkisp-statistics (platform: rkisp): |
| | | /dev/video19 |
| | | /dev/video20 |
| | | |
| | | rkcif-mipi-lvds (platform:rkcif): |
| | | /dev/media0 |
| | | |
| | | rkcif (platform:rkcif-mipi-lvds): |
| | | /dev/video0 |
| | | /dev/video1 |
| | | /dev/video2 |
| | | /dev/video3 |
| | | /dev/video4 |
| | | /dev/video5 |
| | | /dev/video6 |
| | | /dev/video7 |
| | | /dev/video8 |
| | | /dev/video9 |
| | | /dev/video10 |
| | | |
| | | rkisp_mainpath (platform:rkisp-vir0): |
| | | /dev/video11 |
| | | /dev/video12 |
| | | /dev/video13 |
| | | /dev/video14 |
| | | /dev/video15 |
| | | /dev/video16 |
| | | /dev/video17 |
| | | /dev/video18 |
| | | /dev/media1 |
| | | |
| | | ``` |
| | | |
| | | - `rkisp_mainpath`:CSI摄像头 |
| | | |
| | | 2.列出摄像头支持的格式 |
| | | |
| | | ``` |
| | | # v4l2-ctl --device=/dev/video11 --list-formats-ext |
| | | ioctl: VIDIOC_ENUM_FMT |
| | | Type: Video Capture Multiplanar |
| | | |
| | | [0]: 'UYVY' (UYVY 4:2:2) |
| | | Size: Stepwise 32x16 - 2304x1296 with step 8/8 |
| | | [1]: 'NV16' (Y/CbCr 4:2:2) |
| | | Size: Stepwise 32x16 - 2304x1296 with step 8/8 |
| | | [2]: 'NV61' (Y/CrCb 4:2:2) |
| | | Size: Stepwise 32x16 - 2304x1296 with step 8/8 |
| | | [3]: 'NV21' (Y/CrCb 4:2:0) |
| | | Size: Stepwise 32x16 - 2304x1296 with step 8/8 |
| | | [4]: 'NV12' (Y/CbCr 4:2:0) |
| | | Size: Stepwise 32x16 - 2304x1296 with step 8/8 |
| | | [5]: 'NM21' (Y/CrCb 4:2:0 (N-C)) |
| | | Size: Stepwise 32x16 - 2304x1296 with step 8/8 |
| | | [6]: 'NM12' (Y/CbCr 4:2:0 (N-C)) |
| | | Size: Stepwise 32x16 - 2304x1296 with step 8/8 |
| | | ``` |
| | | |
| | | 3.显示摄像头参数 |
| | | |
| | | ``` |
| | | # v4l2-ctl --device=/dev/video11 --list-ctrls |
| | | |
| | | Image Processing Controls |
| | | |
| | | pixel_rate 0x009f0902 (int64) : min=0 max=1000000000 step=1 default=1000000000 value=101250000 flags=read-only, volatile |
| | | ``` |
| | | |
| | | 4.录制视频 |
| | | |
| | | ``` |
| | | #CSI 摄像头(需要先关掉自带的RKIPC) |
| | | killall rkipc |
| | | v4l2-ctl --device=/dev/video11 --set-fmt-video=width=640,height=480,pixelformat=NV12 --stream-mmap --stream-to=video50.yuv --stream-count=60 |
| | | ``` |
| | | |
| | | - `-device:`摄像头对应设备文件 |
| | | - `--set-fmt-video:`指定了宽高及 pxielformat (标识像素格式) |
| | | - `--stream-mmap:`指定 buffer的类型为 mmap,即由内核分配的物理连续的或经过 iommu 映射的buffer |
| | | - `--stream-to:`指定帧数据保存的文件路径 |
| | | - `--stream-count:`指定抓取的帧数,不包括--stream-skip丢弃的数量 |
| | | |
| | | 5.如果出现“The pixelformat 'UYVY' is invalid” 字样说明摄像头不支持此格式,使用第二步的方法查看摄像头支持的格式 |
| | | |
| | | 6.看到<<<<<<<<<<<<<<<<<<<<<<<<<< 25.00 fps 说明成功录制视频,可以成功生成video50.yuv视频文件 |
| | | |
| | | ``` |
| | | # killall rkipc |
| | | # v4l2-ctl --device=/dev/video11 --set-fmt-video=width=640,height=480,pixelforma |
| | | t=NV12 --stream-mmap --stream-to=video50.yuv --stream-count=60 |
| | | <<<<<<<<<<<<<<<<<<<<<<<<<< 25.00 fps |
| | | <<<<<<<<<<<<<<<<<<<<<<<<<< 25.00 fps |
| | | <<<<<<<< |
| | | # ls |
| | | bin lib32 oem run usr |
| | | data lib64 opt sbin var |
| | | dev linuxrc proc sys video50.yuv |
| | | etc media rockchip_test tmp |
| | | lib mnt root userdata |
| | | ``` |
| | | |
| | | ## 2.6 显示视频 |
| | | |
| | | 上面抓取的图片或者视频可以拷贝到 Ubuntu 中借助借助工具ffplay查看。`ffplay` 是 FFmpeg 工具包中的一个命令行工具,用于播放音频和视频文件。它基于 FFmpeg 库,支持广泛的音视频格式,能够在命令行中实时播放或预览多媒体内容。 |
| | | |
| | | 首先我们要让虚拟机和开发板在同一网段下 |
| | | |
| | |  |
| | | |
| | | 可以看到笔者的虚拟机ip地址为192.168.10.100,因此我们开发板IP地址 |
| | | |
| | |  |
| | | |
| | | 进入root目录,创建一个文件夹与虚拟机的目录进行nfs挂载,将生成的video50.yuv文件拷贝到虚拟机的挂载目录中 |
| | | |
| | |  |
| | | |
| | | 1.播放视频 |
| | | |
| | | ``` |
| | | ffplay -video_size 640x480 -pixel_format nv12 -framerate 10 -i video50.yuv |
| | | ``` |
| | | |
| | | - `-video_size size `设置帧尺寸 设置帧尺寸大小 |
| | | - `-pixel_format format` 设置像素格式 |
| | | - `-framerate 10`: 设置视频的帧率为 10 帧/秒 |
| | | |
| | |  |
| | | |
| | | 2.转换视频格式 |
| | | |
| | | ``` |
| | | ffmpeg -f rawvideo -pixel_format yuyv422 -video_size 640x480 -framerate 30 -i video.yuv -c:v libx264 output.mp4 |
| | | ``` |
| | | |
| | |  |
| | | |
| | | 生成MP4格式,使用mpv命令进行播放 |
| | | |
| | | ``` |
| | | mpv output.mp4 |
| | | ``` |
| | | |