Skip to content

Latest commit

 

History

History
129 lines (108 loc) · 8.26 KB

driver.md

File metadata and controls

129 lines (108 loc) · 8.26 KB

驱动和bsp分层的原因

只要这样根据步骤来编写我们的驱动代码简单粗暴,但是这存在着问题,我们将硬件的信息都写进了驱动里了, 根据某个硬件编写的驱动只要修改了一下引脚接口,这个驱动代码就得重新修改才能使用,这显然是不合理的, 那有没有合适的解决方案呢?答案是肯定的,Linux引入了设备驱动模型分层的概念, 将我们编写的驱动代码分成了两块:设备与驱动。设备负责提供硬件资源而驱动代码负责去使用这些设备提供的硬件资源。 并由总线将它们联系起来。

驱动

当你做这个tinyusb的项目的时候,也有原理图,也有硬件焊接工作,也需要器件选型,也需要画图画板子但是是不是和你想象中的工作不大相同,比如说,因为这是个树莓派的项目,所以大部分的引脚上下拉取的工作是不是不用你判断,是不是没有用到一些和寄存器配置,datesheet查看去使用的相关工作,而是可以直接用sdk和网上的开源库去直接进行函数的书写,从而显示出大部分的工作其实是软件工作,硬件配置选型,可能只占据了百分之四十,所以你仍需努力去进行软件上工作的精准研发,加油! 甚至到了后期,可能性的工作软件都也不满足,而是一些算法上面的工作!!!加油,奥利给

tinyusb

  1. tinyusb 是一种库,帮助你把当前设备抽象成一个usb设备供别人使用
  2. 有很多种不同的库是因为,可能首先与硬件限制,需要一些功能先简单,代码量小的usb设备,有些可能需要复杂的设备
  3. 文件目录
    1. tusb.c tusb.h最核心,实现usb协议目录
    2. class 包含tinyusb所有支持的类,比如hid鼠标类,或者是usb内存盘类,视频类,摄像头类,音频类等
    3. common 目录 通用的工具和结构体定义的地方
    4. devices 目录 作为一个设备的相关代码,可能需要和class一同使用
    5. host目录 作为主机使用的类的地方,比如接收一个键盘,u盘的信息等等
    6. osal
    7. protable目录 包含的是支持硬件部分的代码
    8. typec 目录
    9. src 目录
  4. 除了这些核心代码,还需要其他代码的辅助
    1. boards 板及支持包,定义一些和硬件有关的内容,包括usb使用的pin引脚,配置usb所使用的时钟,或者usb和其他使用的外设等内容
    2. hw, board中和usb连接的外设的功能的相关代码,hw包括上面的board代码,是大他一级的存在
    3. tools 工具目录,调试构建等

20个控制硬件平台(硬件芯片)

就是所谓的硬件控制芯片 以下是 20 个硬件平台公司,这些公司在嵌入式系统、开源硬件、机器人、自动驾驶等领域提供了广泛的硬件平台和开发工具。每个公司都有其独特的技术特色和产品系列,适用于不同的应用场景。

  1. Arduino 描述:开源硬件平台,提供多种微控制器开发板,如 Arduino Uno、Arduino Mega 等。 应用:嵌入式控制、传感器、机器人、物联网(IoT)等。 特点:开源、易于学习和使用,强大的社区支持。

  2. STMicroelectronics (STM32) 描述:著名的半导体公司,提供多种高性能 ARM Cortex-M 微控制器,如 STM32 系列。 应用:实时控制、工业自动化、嵌入式系统、机器人。 特点:高性能、低功耗,广泛应用于嵌入式和实时系统。

  3. Raspberry Pi Foundation 描述:提供开源单板计算机(SBC),如 Raspberry Pi 4、Raspberry Pi Zero 等。 应用:教育、DIY 项目、机器人、计算机视觉、自动驾驶。 特点:低成本、高性能、强大的社区支持。

  4. NVIDIA 描述:知名的图形处理单元(GPU)和 AI 计算平台供应商,提供 Jetson 系列开发板。 应用:人工智能(AI)、深度学习、计算机视觉、自动驾驶、机器人。 特点:强大的 GPU 和 AI 推理能力,适合复杂计算任务。

  5. BeagleBoard.org 描述:提供 BeagleBone 系列嵌入式开发板,如 BeagleBone Black、BeagleBone Green 等。 应用:工业控制、嵌入式系统、实时系统、机器人。 特点:开源硬件平台,适合需要实时控制的应用。

  6. Intel 描述:全球领先的半导体公司,提供多种开发平台,如 Intel NUC 和 FPGA 开发板。 应用:高性能计算、嵌入式系统、边缘计算、人工智能、自动驾驶。 特点:强大的处理能力,广泛应用于工业和嵌入式计算领域。

  7. Adafruit 描述:知名的开源硬件供应商,提供各种电子组件、开发板和传感器模块。 应用:嵌入式系统、物联网(IoT)、机器人、DIY 项目。 特点:开源、教育导向,广泛的硬件模块支持。

  8. SparkFun 描述:提供开源硬件和开发工具,适用于各种嵌入式和机器人项目。 应用:物联网(IoT)、机器人、DIY 项目、传感器接口。 特点:低成本、开源、社区支持。

  9. Texas Instruments (TI) 描述:全球领先的半导体公司,提供多种微控制器和处理器平台,如 Tiva C 系列、MSP430。 应用:嵌入式系统、工业控制、物联网(IoT)、机器人。 特点:高性能、低功耗,适用于实时控制和精密仪器。

  10. Microchip Technology 描述:提供多种微控制器和模拟半导体产品,如 PIC、SAM 等。 应用:嵌入式系统、工业控制、汽车电子。 特点:广泛的微控制器产品线,适用于各种嵌入式应用。

  11. Siemens 描述:全球领先的工业自动化公司,提供各种 PLC(可编程逻辑控制器)和嵌入式控制平台。 应用:工业自动化、机器人控制、智能制造。 特点:工业级产品,适用于复杂的控制和监测系统。

  12. Rockchip 描述:知名的 ARM 架构处理器供应商,提供基于 ARM 的处理平台。 应用:嵌入式系统、机器人、智能设备。 特点:高效能、低成本,广泛用于消费类电子产品和工业设备。

  13. Pine64 描述:开源硬件公司,提供如 Pine A64、Rock64 等单板计算机。 应用:嵌入式开发、计算机视觉、物联网(IoT)、边缘计算。 特点:低成本、开源,适合 DIY 项目和小型企业应用。

  14. Seeed Studio 描述:提供开源硬件和电子产品的供应商,产品包括 Grove 系列、Seeeduino 等。 应用:物联网(IoT)、智能硬件、机器人、传感器集成。 特点:低成本、开源、适用于快速原型设计。

  15. Nordic Semiconductor 描述:提供低功耗无线通信解决方案,专注于蓝牙、Zigbee、Thread 等技术。 应用:物联网(IoT)、无线传感器网络、智能家居。 特点:低功耗、高效能,专注于无线通信。

  16. Kendryte 描述:开发 AI 处理器平台,Kendryte K210 是其代表性产品。 应用:人工智能推理、计算机视觉、智能硬件。 特点:高效能的 AI 处理能力,适用于边缘计算和嵌入式 AI。

  17. Lattice Semiconductor 描述:提供 FPGA 和可编程逻辑解决方案,适用于嵌入式系统开发。 应用:数字信号处理、嵌入式系统、通信、视频处理。 特点:高效能、低功耗,适用于需要灵活硬件定制的应用。

  18. Nuvoton Technology 描述:提供微控制器和其他嵌入式解决方案的公司,主要产品包括 NuMicro 系列。 应用:工业控制、智能家居、物联网(IoT)、汽车电子。 特点:提供高性价比的微控制器,适合嵌入式应用。

  19. Rohm Semiconductor 描述:提供多种模拟和数字半导体产品,涵盖电源管理、传感器等领域。 应用:汽车电子、工业自动化、智能硬件。 特点:高精度、低功耗的半导体解决方案。

  20. Allwinner Technology 描述:提供 ARM 处理器平台,主要产品包括 Allwinner A系列和 H系列处理器。 应用:嵌入式系统、智能硬件、平板电脑、物联网(IoT)设备。 特点:高性价比,适用于消费电子和嵌入式应用。