[Cortex-A]

ERROR: image is not a fdt - must RESET the board to recover

[复制链接]
4478|0
手机看帖
扫描二维码
随时随地手机跟帖
fyu658|  楼主 | 2020-11-29 23:44 | 显示全部楼层 |阅读模式
尊敬的工程师您好:
目前我在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。非常感谢帮助

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

5

帖子

1

粉丝