这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
cc2640r2f:hardware_architecture [2018/11/12 15:27] jaylee |
cc2640r2f:hardware_architecture [2021/06/22 23:14] (当前版本) |
||
---|---|---|---|
行 1: | 行 1: | ||
< | < | ||
- | # v4l2 drier framework code review | + | # 硬件架构 # |
- | ## 术语解释 | + | ## 概述 ## |
- | | 术语 | 解释 | | + | TI 低功耗蓝牙软件开发套件( ble-stack SDK )是开发单模低功耗蓝牙应用的完整软件平台。该 SDK 基于完整的片上系统( SoC )低功耗蓝牙解决方案SimpleLink CC2640R2F。 |
- | | ---- | ------------------------ | | + | |
- | | vfe | video front end driver | + | |
- | | cci | camera control interface | | + | |
- | | csi | camera serial | + | |
- | ## 启动流程 | + | CC2640R2F 结合了 2.4GHz RF 收发器、128KB 系统可编程存储器、20KB SRAM 以及丰富的外设。它有一个 ARM® Cortex®-M3 系列的处理器用来处理应用程序和蓝牙低功耗协议栈,还有一个 ARM Cortex®-M0 处理器来处理所有底层的无线电控制以及相关的物理层和部分链路层。 |
- | ```bash | + | 传感器控制器模块能够独立于 Cortex-M3 处理器进行自主数据采集和控制,从而提供了额外的灵活性,进一步扩展了 CC2640R2F 的低功耗能力。下图显示了模块框图。有关 CC2640R2F 的更多信息,请参见** CC26xx Technical Reference Manual **。 |
- | $dmesg | + | |
- | ``` | + | |
- | ![v4l2 driver lod sequecnce](http:// | + | ![](http:// |
- | 如上启动顺序 | + | ## 硬件核心 ## |
- | * csi、cci、mipi 等外设初始化; | + | 如上框图不难看出 CC2640R2F 包含三个物理内核,每个CPU既可独立使用也可共享 RAM/ROM,3 个 CPU 各司其职又协同工作,最大程度实现了性能和功耗平衡。 |
- | * vfe控制 v4l2 启动; | + | ### ARM Cortex M3(Main CPU) ### |
- | vfe在初始化 v4l2-device启动的时候已经同sub-device ov5640 | + | 系统内核( CM3 )用于运行低功耗蓝牙协议栈的链路层到用户应用程序的。链路层通过位于 RF 门铃上方称为 RF 驱动器的软件模块连接到无线电内核。RF 驱动器在 CM3 上运行,可在 CC2640R2F 上作为无线电的接口,还能管理无线电硬件和内核的电源域。 |
+ | 有关 RF 驱动程序的文档,请参见 ` TI-RTOS Drivers Reference` 。RF 驱动器上面的就是 TI 低功耗蓝牙协议栈,它是在库代码中实现的。 | ||
- | * sub-device camera sensor ov5640 加载; | + | 协议栈和应用都工作在 M3 和它的 128 Flash 中。注意区分提到过 App+stack 工程管理方式,整个 App+Stack 都是运行在该 CPU 上面,而不是错误理解为App 工作在 M3,Stack 协议栈工作在 M0。 |
+ | ### ARM Cortex M0(RF Core) ### | ||
+ | CC2640R2F 内的 Cortex M0(CM0)内核负责与无线电硬件相连接、将来自 Cortex M3(CM3)内核的复杂指令转换为数据(可以通过无线电发送的)。低功耗蓝牙协议中 CM0 实现协议栈的物理层(PHY)。通常 CM0 能够自主运行,从而将 CM3 释放出来处理更高级别的协议和应用层。 | ||
- | ## 驱动框架 | + | CM3 通过一个称为 RF 门铃的硬件接口与 CM0 进行通信,这在 `CC26xx Technical Reference Manual` 的第 23.2 节中有说明。 |
- | ![v4l2 驱动框架](http:// | + | CM0 不提供用户编程,由 TI 出厂固化好,M3 通过寄存器写入命令原语和共享 RAM 方式实现彼此通信。 BLE 这样的高级协议栈几乎屏蔽了物理层操作,所以几乎不用关心这里的 CM0。一些基于物理层( CC13x0 |
- | ### kernel space | + | ### SensorController ### |
- | 1. vfe模块加载,加载csi、mipi、isp、cci模块,同时从sys_config读出sensor的配置; | + | 功耗优化的 16 位单片机、具有 2K SRAM。负责一些外设控制、ADC 采样、SPI 通信等。在系统 CPU 休眠的时候 SC 能够独立工作,这样的设计极大降低了系统 CPU 唤醒频率,从而减少功耗。 |
- | 2. 创建v4l2-device; | + | |
- | 3. ov5640 通过cci/ | + | |
- | 4. 创建video 设备节点 ; | + | |
- | ### userspace | + | SensorControl 必须熟悉其原理、开发。具体细节会将其放在< |
- | * libv4l2 源码可以通过`sudo apt-get source libv4l2rds0` 下载。 | + | ## 存储系统 ## |
- | ```bash | + | 对于存储系统必须要有以下认识: |
- | $ cat / | + | * 基于多个 CPU 的设计,每个 CPU 具有自己独立和彼此共享的存储系统。 |
- | deb http:// | + | * TI 保留的 128 ROM 作为出厂固件固化,用以实现部分 DriverLib、TI-RTOS、BLE-Stack 功能; |
- | deb-src http:// | + | * TI 保留 8 KB 的 Cache 作为预取指缓存。该 8 KB Cache 可以通过 RAM 配置,即用户可使用的 RAM 从 20 KB 配置到 28 KB。 |
- | ``` | + | |
- | > **注意**:如上,确定已经添加source 源。 | + | ![](http:// |
+ | > | ||
+ | 熟悉以上存储空间映射图和各个存储器起始地址对以后把控代码工程至关重要。 | ||
+ | ## 加入我们 ## | ||
+ | |||
+ | 文章所有代码、工具、文档开源。加入我们[**QQ群 591679055**](http:// | ||
+ | <div> | ||
+ | <p align=" | ||
+ | <a target=" | ||
+ | © Copyright 2017, 成都乐控畅联科技有限公司. | ||
+ | </p> | ||
+ | </ | ||
</ | </ |