嵇康 2023-11-02 11:15 采纳率: 0%
浏览 2

你好,我是jimmy,订阅你的“零基础驱动”。

你好,我是jimmy,订阅你的“零基础驱动”。我最近也在看设备树(基于朱有朋x210开发板)。现在想在老版linux2.6里添加一个ov7670,一直没有成功。你有相关经验吗?我们可以一起看看,学习下。以后想用设备树替代mach-x210.c 。我的邮件:jimingkang@gmail.com

这是我在mach-x210.c里添加的内容:


```c


static struct ov7670_platform_data ov7670_plat = {
  1444        .default_width = 800,
  1445        .default_height = 600,
  1446        .pixelformat = V4L2_PIX_FMT_UYVY,
  1447        .freq = 24000000,
  1448        .is_mipi = 0,
  1449 };
  1450 
  1451 static struct i2c_board_info  ov7670_i2c_info = {
  1452        I2C_BOARD_INFO("ov7670", 0x21),// ov7670 0x21
  1453        .platform_data = &ov7670_plat,
  1454 };
  1455 
  1456 static struct s3c_platform_camera ov7670 = {
  1457 #ifdef CAM_ITU_CH_A
  1458         .id             = CAMERA_PAR_A,
  1459 #else
  1460         .id             = CAMERA_PAR_B,
  1461 #endif
  1462        .type           = CAM_TYPE_ITU,
  1463        .fmt            = ITU_601_YCBCR422_8BIT,
  1464        .order422       = CAM_ORDER422_8BIT_CBYCRY,
  1465        .i2c_busnum     = 1,
  1466        .info           = &ov7670_i2c_info,
  1467        .pixelformat    = V4L2_PIX_FMT_UYVY,
  1468        .srclk_name     = "mout_epll",
  1469        .clk_name       = "sclk_cam1",
  1470        .clk_rate       = 24000000,
  1471        .line_length    = 1920,
  1472        .width          = 800,
  1473        .height         = 600,
  1474        .window         = {
  1475         ¦      .left   = 0,

```

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-11-02 14:21
    关注

    【以下回答由 GPT 生成】

    从你的问题描述来看,你在老版Linux 2.6中尝试添加一个ov7670设备,但一直没有成功。你在mach-x210.c文件中添加了相关的内容。根据你提供的信息,我将以下几个方面给予你一些解决问题的建议:

    1. 设备树配置:在Linux内核2.6中,你需要在设备树中配置ov7670设备。首先,请确认你是否已经在设备树中添加了ov7670节点,并正确地设置了相关属性。你可以通过查看设备树的源代码,找到/arch/arm/boot/dts目录下的设备树文件,例如x210.dtsx210-evb.dts,来确认是否正确配置了设备树。

    在设备树中,你需要为ov7670设备添加相关的属性,例如compatibleregclocks等。请确保你已正确配置这些属性,并将ov7670节点添加到正确的位置。

    1. i2c适配器配置:ov7670是通过i2c总线进行通信的,因此你还需要确保正确配置了与ov7670设备连接的i2c适配器。在你提供的代码中,你为ov7670设备创建了一个i2c_board_info结构体并指定了设备的地址和名称。但是,代码中的I2C_BOARD_INFO 宏定义是不完整的,请确认你是否提供了正确的宏定义。一般情况下,它应该是这样的:#define I2C_BOARD_INFO(dev_name, dev_addr) { I2C_BOARD_INFO_NAME, (dev_name), (dev_addr) }

    另外,请确保你已经正确配置了I2C适配器,使其可以与ov7670设备进行通信。你可能需要在设备树或配置文件中设置I2C控制器的相关属性。

    1. camera子系统配置:你的代码还包含了一个struct s3c_platform_camera结构体ov7670。这个结构体用于配置摄像头子系统的一些属性。请确保你已经正确配置了ov7670的相关参数,例如id、type和fmt。在你提供的代码中,ov7670的type属性应该是ITU类型,数据的格式应该是ITU_601_YCBCR422_8BIT。请确认这些参数是否正确设置。

    以上是一个大致的解决方案的建议,具体的解决方案可能还需要根据你的操作系统和开发环境的具体情况来确定。如果你仍然无法成功添加ov7670设备,我建议你参考相关文档和资料,尤其是设备树和i2c驱动的配置方式,或者向更有经验的开发者咨询寻求帮助。

    希望以上建议对你有所帮助。如果你有任何其他问题,请随时提问。


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 11月2日

悬赏问题

  • ¥15 FPGA-SRIO初始化失败
  • ¥15 MapReduce实现倒排索引失败
  • ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
  • ¥15 找一位技术过硬的游戏pj程序员
  • ¥15 matlab生成电测深三层曲线模型代码
  • ¥50 随机森林与房贷信用风险模型
  • ¥50 buildozer打包kivy app失败
  • ¥30 在vs2022里运行python代码
  • ¥15 不同尺寸货物如何寻找合适的包装箱型谱
  • ¥15 求解 yolo算法问题