Part Number:PROCESSOR-SDK-J784S4

我使用了k3-j784s4-evm-csi2-ov5640.dtbo,启动后,使用lsmod查看,ov5640已正常加载上了,
但是使用devmem2读取dphy寄存器地址0x4504048出现内核panic。

除了0x04504048地址,我还尝试访问了0x4590B00, 0x04504040, 0x04504060, 0x04504100 等寄存器,均出现相同的panic。
xiang rong:
# This uEnv.txt file can contain additional environment settings that you # want to set in U-Boot at boot time.This can be simple variables such # as the serverip or custom variables.The format of this file is: #variable=value # NOTE: This file will be evaluated after the bootcmd is run and the #bootcmd must be set to load this file if it exists (this is the #default on all newer U-Boot images.This also means that some #variables such as bootdelay cannot be changed by this file since #it is not evaluated until the bootcmd is run. psdk_setup_file=.psdk_setup check_psdk_setup=load mmc 1:1 ${loadaddr} ${psdk_setup_file}# Reset to the default environment do_psdk_setup=env default -f -a; saveenv# Update the Linux hostname based on board_name # The SK also requires an additional dtbo to boot. Prepend it to name_overlays depending on board_name uenvcmd=printenv# Setting the right U-Boot environment variables dorprocboot=1 name_overlays=ti/k3-j784s4-evm-ethfw.dtbo ti/k3-j784s4-vision-apps.dtbo ti/k3-j784s4-evm-csi2-ov5640.dtbo
Hi,Ti,
当我在uEnv将dtbo的加载改成:name_overlays=ti/k3-j784s4-evm-ethfw.dtbo ti/k3-j784s4-vision-apps.dtbo ti/k3-j784s4-evm-csi2-ov5640.dtbo
重启demo板后,使用devmem2访问 0x04504048,0x4590B00, 0x04504040, 0x04504060, 0x04504100 等寄存器,未出现panic,
从dtso内看,仅仅是将k3-j784s4-vision-apps这个设备树先加载,然后再加载k3-j784s4-evm-csi2-ov5640,访问dphy寄存器就未出现panic.
// SPDX-License-Identifier: GPL-2.0 /** vision-apps: device-tree overlay** Copyright (C) 2019 - 2022 Texas Instruments Incorporated - http://www.ti.com/*//dts-v1/; /plugin/;#include <dt-bindings/mux/ti-serdes.h>&main_r5fss0_core0_shared_memory_queue_region {status = "disabled"; };&main_r5fss0_core0_shared_memory_bufpool_region {status = "disabled"; };#include "k3-j784s4-rtos-memory-map.dtsi"&main_i2c1 {status = "disabled"; };&main_i2c4 {status = "disabled"; };&main_i2c5 {status = "disabled"; };&dss {status = "disabled"; };&serdes_wiz4 {status = "disabled"; };&ti_csi2rx0 {status = "disabled"; };&ti_csi2rx1 {status = "disabled"; };&ti_csi2rx2 {status = "disabled"; };请问这其中的根本原因是什么?
谢谢!
,
Daniel:
您好
这通常意味着该模块无法从 Linux 内核访问。 当您启用 dtbo 时、它已经初始化。 您能仔细检查一下吗?
,
xiang rong:
Hi Ti,
demo 板启动后,lsmod查看如下,已经存在j721e_csi2rx,ov5640模块:
root@j784s4-evm:~# lsmod ModuleSizeUsed by overlay1392640 cfg802113973120 bluetooth5038082 ecdh_generic163841 bluetooth ecc368641 ecdh_generic rfkill286723 bluetooth,cfg80211 rpmsg_ctrl122880 rpmsg_char204801 rpmsg_ctrl panel_edp327680 cdns_csi2rx163841 ti_am335x_adc163840 kfifo_buf122881 ti_am335x_adc cdns3409600 cdns_pltfrm122880 cdns_usb_common204801 cdns3 crct10dif_ce122881 snd_soc_j721e_evm286720 display_connector122880 omap_mailbox1228811 omap_hwspinlock122880 phy_can_transceiver122883 at24163840 ti_k3_r5_remoteproc245760 j721e_csi2rx245760 wave5942080 ov5640368640 videobuf2_dma_contig163842 j721e_csi2rx,wave5 videobuf2_memops122881 videobuf2_dma_contig v4l2_mem2mem327681 wave5 snd_soc_davinci_mcasp327682 k3_j72xx_bandgap122880 v4l2_fwnode204802 ov5640,cdns_csi2rx ... ..我仍然在uEnv.txt使用如下环境变量启动的,此刻devmem2 0x04590B00 w仍然会出现panic.
# Setting the right U-Boot environment variables
dorprocboot=1
name_overlays=ti/k3-j784s4-evm-ethfw.dtbo ti/k3-j784s4-evm-csi2-ov5640.dtbo
,
xiang rong:
Hi ti,
查看设备树文件,
主设备树文件中,如上所示:
k3-j784s4-evm-csi2-ov5640.dtso中对status进行了覆盖,改写为okay,
查找驱动文件,从compatible = "ti,j721e-csi2rx-shim";属性,在driver中找到对应的驱动文件为\board-support\ti-linux-kernel-6.6.44+git-ti\drivers\media\platform\ti\j721e-csi2rx\j721e-csi2rx.c,
板子起来后,lsmod查看,确实是加载了j721e_csi2rx.ko,以及ov5640.ko,
查看j721e-csi2rx.c,初始化过程中会注册v4l2设备"TI-CSI2RX",
板子起来后,查看v4l2设备
root@j784s4-evm:/var# v4l2-ctl –list-devices
wave5-dec (platform:4210000.video-codec):
/dev/video0
/dev/video1wave5-dec (platform:4220000.video-codec):
/dev/video2
/dev/video3TI-CSI2RX (platform:4520000.ticsi2rx):
/dev/media0
,
Daniel:
您好
请从 uEnv.txt 中删除"k3-j784s4-vision-apps.dtbo"、因为这会在 RTOS 端启用 csirx 和 DSS。 由于您使用的是 Linux、这将禁用 csirx 和 DSS。 进行此更改后、您是否可以共享 media-ctl -p 的输出?
,
xiang rong:
Hi,ti
我这边确实是在uEnv.txt中没有使用"k3-j784s4-vision-apps.dtbo",uEnv.txt中我的设备树加载是这样的,"name_overlays=ti/k3-j784s4-evm-ethfw.dtbo ti/k3-j784s4-evm-csi2-ov5640.dtbo"
csi驱动加载后,在linux端用devmem2 0x04590B00 w访问dphy寄存器会导致内核panic。
与此相反,当我在uEnv.txt中使用"name_overlays=ti/k3-j784s4-evm-ethfw.dtbo ti/k3-j784s4-vision-apps.dtbo ti/k3-j784s4-evm-csi2-ov5640.dtbo"这样加载设备树,
在linux端用devmem2 访问dphy的状态寄存器,才能正常读取,没有出现panic。
虽然我们知道在a71 linux上要使用csi驱动,应该删掉name_overlays中的ti/k3-j784s4-vision-apps.dtbo,但是这样会导致访问dphy寄存器时内核panic。
我无法判断是什么原因导致的,只是怀疑可能跟mcu2_0 rtos这端有一些关系。
,
xiang rong:
root@j784s4-evm:~# media-ctl -pMedia controller API version 6.6.44
Media device information————————driver j721e-csi2rxmodel TI-CSI2RXserial bus info platform:4520000.ticsi2rxhw revision 0x1driver version 6.6.44
Device topology- entity 1: 4520000.ticsi2rx (9 pads, 0 link, 0 routes) type V4L2 subdev subtype Unknown flags 0 pad0: Sink pad1: Source pad2: Source pad3: Source pad4: Source pad5: Source pad6: Source pad7: Source pad8: Source
– entity 11: cdns_csi2rx.4524000.csi-bridge (5 pads, 0 link, 0 routes) type V4L2 subdev subtype Unknown flags 0 pad0: Sink pad1: Source pad2: Source pad3: Source pad4: Source
,
Daniel:
您好
这是完整的输出吗? 您在将器件树叠加添加到 uEnv.txt 之外是否对 SDK 进行了任何更改? 您是否连接了 LI OV5640 MIPI CSI 摄像头的传感器? 请查看 SDK 文档中的 CSI2RX 部分: 3.2.2.3. CSI2RX — Processor SDK Linux for J784s4 Documentation
,
xiang rong:
我们决定使用Ti-openvx框架来做摄像头应用,放弃使用linux上的v4l2
TI中文支持网








