V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
yhm2046
V2EX  ›  程序员

怎么系统学习嵌入式驱动开发?

  •  
  •   yhm2046 · 2023-01-03 07:38:17 +08:00 · 2770 次点击
    这是一个创建于 693 天前的主题,其中的信息可能已经有所发展或是发生改变。

    本人换了工作,目前需要调色摄像头,驱动这块不熟悉,看不懂原理图和电路图,请问要如何系统学习,要报培训班还是自学? 报班要报哪一种?自学的话看什么书和资料上手最快?

    12 条回复    2023-01-04 17:36:58 +08:00
    litguy
        1
    litguy  
       2023-01-03 08:12:23 +08:00
    大概看看 Linux 内核设计与实现,对内核有个概念
    看 Linux 设备驱动 第三版,基本掌握内核驱动编写规则

    原理图和电路图,你看看 数字电路 + 微机原理 /计算机接口 这些书吧
    这个大学应该学过
    有啥问题丢这里大家一起讨论吧

    过去干啥工作的
    怎么跨度这么大
    摄像头驱动不好搞,寄存器特别多
    随便改个值,画面变化明显

    我也只搞过一次摄像头驱动
    还是十多年前,镁光的摄像头
    体验不怎么好

    最快速的办法是两条路,我上面说的是正规路子,蹲马步
    另一个就是四处问,四处搜,先解决工作中的问题
    yhm2046
        2
    yhm2046  
    OP
       2023-01-03 09:24:10 +08:00
    @litguy 好的谢谢,原来做 android 应用和 framework 上层的,现在是小公司人少事多,老板说都要学习
    LXGMAX
        3
    LXGMAX  
       2023-01-03 09:25:52 +08:00
    芯片公司?
    实际上内部有足够资源让你学习的,问下有没有文档之类,找人带带
    BingoXuan
        4
    BingoXuan  
       2023-01-03 09:37:08 +08:00
    先了解一下摄像头用什么物理总线先,使用什么硬件平台连结摄像头,看一下嵌入式开发是 linux 还是 rtos 还是 bare metal 。把基本软硬件流程走一遍就没啥太大问题了。
    kennyCoretek
        5
    kennyCoretek  
       2023-01-03 09:54:08 +08:00
    emmm 所以 是怎么找到工作的。。。
    Xavi1996
        6
    Xavi1996  
       2023-01-03 10:26:39 +08:00
    想快速上手的话不需要看电路图,啃 linux 驱动开发这本书吧,然后看摄像头的 datasheet ,看看是怎么通过写寄存器控制各种效果的。
    singerll
        7
    singerll  
       2023-01-03 10:31:11 +08:00
    要看懂电路图引脚啥的应该比较简单,但要彻底看懂电路图,最起码要把高数、复变函数、电路、数电、模电啥的看一遍,先不说难度如何,时间最起码也要半年。
    wtsamuel
        8
    wtsamuel  
       2023-01-03 10:47:09 +08:00
    上手最快没必要系统学习, 直接看驱动摄像头的 mcu 的 datasheet 和这个摄像头相关例子的源码
    有看不懂的问题, 上网搜或者提问让大神回答
    duke807
        9
    duke807  
       2023-01-03 11:34:13 +08:00
    建议先学 stm32 ,自己搞一些小 project ,譬如可以看一下我这个 stm32 驱动 ov2640 的小东西:
    https://github.com/dukelec/cdcam

    模拟电路建议看日本的丛书,譬如 「晶体管电路设计(上下) /铃木雅臣」
    数字电路也可以试试「数字电路设计——图解实用电子技术丛书 (日)汤山俊夫」,这本我没看过

    自己搞这些 mcu project 都要在 linux 环境,gcc 编译,kicad 画板,为后面 linux 驱动开发打基础

    等都熟悉差不多了,再开始学 linux 驱动开发

    不建议报培训班,国内编程培训班都很垃圾,譬如学嵌入式 linux 它会让你在 windows 里面安装虚拟机,这样你熟悉 linux 的时间会长 N 倍,效果还不好
    zhttp
        10
    zhttp  
       2023-01-03 16:39:05 +08:00
    如果不是原厂开发的话,一般不会让你从头开始调吧,找一找 sdk 里面有没有相近型号设备的驱动程序,然后根据 datasheet 修改里面的初始化代码和各种寄存器读写代码,先跑起来确认设备和驱动能匹配上,然后再一点一点对。我之前调过一款摄像头,调到吐,主要是 datasheet 和实际寄存器有种完全对不上的感觉,读写没反应,最后还是原厂给了个写好的文档我 copy 过去的。。。学习的话,我看过宋宝华的那本 linux 设备驱动开发,还不错,再就是学一下 linux 基础。
    xsen
        11
    xsen  
       2023-01-04 08:23:59 +08:00
    就一句话,不要系统性学习驱动开发
    针对性研究要调的摄像头驱动,不懂再去问、再去查资料
    yhm2046
        12
    yhm2046  
    OP
       2023-01-04 17:36:58 +08:00
    多谢各位老铁意见,现在有个具体问题请教:
    rk3399pro 平台,Android9, gc2053 摄像头目前报错, 让 rk 工程师看了目前怀疑是 v4l2 命令重启导致摄像头连不上,命令如下
    v4l2-ctl -d /dev/video0 --set-fmt-video=width=1920,height=1080,pixelformat=NV12 --stream-mmap=3 --stream-skip=30 --stream-to=/tmp/cif2.out --stream-count=5 --stream-poll
    执行完重启,串口 log:
    [Imgur]( https://imgur.com/fOoqnas)
    有人遇到类似问题吗?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1077 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 19:58 · PVG 03:58 · LAX 11:58 · JFK 14:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.