尊敬的工程师您好:
目前我在SATA5D27-SOM1-EK开发板,想实现一款新的摄像头在LCD成像的功能,目前内核没有ov6946的设备树以及驱动自己添加进去。摄像头OV7670已经实现了这个功能。具体如下,关键第三步第四步,我按照这个模仿一下均如下:
OV7670:
1、在如下网页下载linux4sam-buildroot-sama5d27_som1_ek-graphics-2020.04.img.bz2 https://www.linux4sam.org/bin/view/Linux4SAM/Sama5d27Som1EKMainPage 使用Etcher将此镜像烧录到SD卡中 (建议参考如下网址重新编译整个Buildroot,请使用sama5d27_som1_ek_graphics_defconfig这个配置文件 https://www.linux4sam.org/bin/view/Linux4SAM/BuildRoot)
2、修改SD卡中的sama5d27_som1_ek.itb,增加ov7670的device tree overlay 在如下网址下载dt-overlay-at91 https://github.com/linux4sam/dt-overlay-at91 打上附件补丁ov7670-dt-overlay-at91.patch(原开发板厂家提供实际上就是设备树文件的相关补丁,我会发你) 参照如下网页重新生成sama5d27_som1_ek.itb https://www.linux4sam.org/bin/view/Linux4SAM/DT-Overlay 此步骤需要编译内核,请从如下网址下载kernel源码,请使用tag:linux4sam-2020.04 https://github.com/linux4sam/linux-at91 (或编译buildroot后使用buildroot中的kernel源码 打好补丁后直接在buildroot根目录下执行如下命令即可:(无需执行make sama5d27_som1_ek_dtbos) make dt-overlay-at91-reconfigure make dt-overlay-at91-rebuild)
sama5d27_som1_ek.itb文件更新后直接替换SD卡中的对应文件即可
3、修改uboot启动参数 修改后的bootcmd_boot如下: bootcmd_boot=fatload mmc 0:1 ${loadaddr} ${board_name}.itb; bootm ${loadaddr}#kernel_dtb${at91_overlays_config}#ov7670 (setenv bootcmd_boot 'fatload mmc 0:1 ${loadaddr} ${board_name}.itb; bootm ${loadaddr}#kernel_dtb${at91_overlays_config}#ov7670')
4、启动后可在自动运行的EGT demo查看摄像头图像 第一次查看时会出现图像颜色不对的情况,此时按K1触摸键返回主菜单再次计入后图像颜色正常 也可kill egt-launcher后直接使用命令egt_camera测试摄像头输出: egt_camera --width 640 --height 480
OV6946: 目前实现了ov7670在SAMA5D27-SOM1-EK1的lcd显示,按照这个流程希望实现ov6946的一个成像,进行下列操作
之前的ov7670设备树添加过程,我模仿了一下,首先生成了ov6946的sama5d27_som1_ek_ov426.dtso文件以及新的sama5d27_som1_ek.its文件,
make sama5d27_som1_ek_dtbos
make sama5d27_som1_ek.itb
命令生成新的sama5d27_som1_ek.itb文件,这个生成过程中没有问题,相关的sama5d27_som1_ek_ov426.dtbo文件以及新的sama5d27_som1_ek.itb已经生成。放在附件中
但是在uboot里不执行命令,可以进入内核,或执行
setenv bootcmd_boot 'fatload mmc 0:1 ${loadaddr} ${board_name}.itb; bootm ${loadaddr}#kernel_dtb${at91_overlays_config}#ov7670'
也没有问题。
可是当我重启设置setenv bootcmd_boot 'fatload mmc 0:1 ${loadaddr} ${board_name}.itb; bootm ${loadaddr}#kernel_dtb${at91_overlays_config}#ov7670#ov426'
或是
setenv bootcmd_boot 'fatload mmc 0:1 ${loadaddr} ${board_name}.itb; bootm ${loadaddr}#kernel_dtb${at91_overlays_config}#ov426'
## Loading fdt from FIT Image at 21000000 ...
Using 'ov426' configuration
Trying 'fdt_ov426' fdt subimage
Description: Device Tree blob ov426 overlay
Type: Flat Device Tree
Compression: uncompressed
Data Start: 0x2147d844
Data Size: 2258 Bytes = 2.2 KiB
Architecture: ARM
Load Address: 0x231b0000
Hash algo: crc32
Hash value: 5d2332c5
Hash algo: sha1
Hash value: 8394e79419ba54825161a200548807629b2032e2
Verifying Hash Integrity ... crc32+ sha1+ OK
Loading fdt from 0x2147d844 to 0x231b0000
faiLED on fdt_overlay_apply(): FDT_ERR_NOTFOUND
Booting using the fdt blob at 0x23000000
Loading Kernel Image
ERROR: image is not a fdt - must RESET the board to recover.
FDT creation failed! hanging...### ERROR ### Please RESET the board ###
我仅仅替换了sama5d27_som1_ek.itb,这个制作过程也是之前的流程,在ov7670里面没有问题。这个问题几个星期没有解决,希望同仁们能给予帮助,如能解决,必酬谢,微信:qq2075574720。非常感谢帮助
|