找回密码
 注册
关于网站域名变更的通知
查看: 207|回复: 2
打印 上一主题 下一主题

RISC-V生态全景解析11——YoC组件的CSI组件介绍

  [复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-6-2 10:28 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
本文将介绍YoC系统硬件底层抽象组件 —— CSI组件。* U  W7 }: I! N9 o
+ X" e2 T& S, R% Z7 }
1、概述
+ V' `1 V- d2 Z' w  eCSI (Chip System InteRFace)是针对嵌入式系统,定义了CPU内核移植接口、外围设备操作接口、统一软件接口规范,消除不同芯片的差异,简化软件的使用及提高软件的移植性。通过CSI 接口规范,可以快速实现芯片对接到YoC 平台。CSI 的具体内容包括:
. k5 @( S7 L6 A6 p8 ^! `3 W-CSI-CORE:定义了CPU和相关紧耦合外设的接口规范
& O+ C" x9 [1 }; M+ b-CSI-driver:定义了常用的驱动的接口规范
" S; g5 d) D5 _6 q5 C/ _-CSI-kernel:定义实时操作系统的接口规范% G' v+ Z6 J$ P' B- U7 {
7 M" R: [0 D& W( U) f5 h
4 B/ }! E7 t- S+ D
2、CSI组件使用. Y, V2 j- o! v
CSI有两个版本,目前CSI1.0逐步启用,推荐使用CSI2.0。
1 E9 U3 P3 m+ M8 z7 a( D! j: m, i4 ~* p/ f9 T' Q0 X' s
3、头文件包含6 E4 z4 k- d; C
3.1 GCC -I 路径
) \$ }, i' r( v) J-I csi2/include/
  q. X% Y: H3 ~' I: F9 j* q8 ^2 w" a0 D/ ^" N0 j
3.2 CSI-Core头文件包含$ g6 \+ U% t" O! ^# @
#include <csi_core.h>  A# N& u" N4 I% K0 M) K

5 c, F/ s! `( j  H. m' w# P3.3 CSI-Driver头文件包含: [5 {/ B+ h1 ]4 S8 O
#include <drv/UART.h> #include <drv/timer.h>
4 R" @: A/ G7 G! r/ h0 U0 R/ Z/ b
3.4 CSI-Kernel头文件包含
7 `9 ?. n, R' ]# @6 S) o#include <csi_kernel.h>
# g0 {# L: q$ T, [1 R# ~8 ~. y6 }& d1 G8 S% w3 }
4、模块分述
2 K7 n9 f, G. K, Y* v+ e7 c+ Q8 K4.1 CSI-Core
* S- g( S" q: E6 k% l8 b0 O, d目前已针对RISCV、C-SKY架构做了接口的定义和实现。CSI-Core是驱动和RTOS程序的基础,CSI-Driver会基于CSI-Core的接口来定义外设寄存器描述和驱动实现。" y9 ^9 o6 b; P" H% O- s
7 C6 U8 d; j* B. [7 Z( l9 E
4.2 CSI-Driver
. S8 ]6 a" R4 N' b-CSI-Driver是应用接口,是对硬件功能的抽象,不会暴露所有硬件细节。
1 [: h" H( d/ y! x5 M7 V-CSI-Driver具有统一的接口,不同硬件IP之间的差异会在这层做统一。8 v1 x6 a" p# J3 U7 K5 {
-目前已规范了40+个模块的接口,包括IO类,加解密类,定时器类等。7 `+ @6 L9 N% n# ^+ b3 _
4.2.1 统一的设备和中断管理
1 }9 e' b3 q! @; P" p% [( U
9 K5 ^0 e! n& D9 e4.2.2 驱动程序的注册与注销8 ], ?) c% }: j% z0 C
4.2.2.1 注册+ e% d% t7 ]1 m/ L
注册函数负责驱动的初始化和硬件的基本初始化。一般的,CSI驱动注册函数形式为: csi_error_t csi__init(csi_xxx_t *xxx, uint32_t idx); 以uart为例,其驱动函数的注册接口如下:csi_error_t csi_uart_init(csi_uart_t *uart, uint32_t idx); 参数:   uart:uart控制块    idx:uart设备号。如uart0,则idx = 0;返回值:   错误号:csi_error_t
3 y; F# z; V' i, l$ t4.2.2.2 注销
6 A% c% d( l+ ~" z0 H注销函数负责驱动的反初始化和硬件的反初始化 一般的,CSI驱动注销函数形式为:void csi__uninit(csi_xxx_t *xxx); 以uart为例,其驱动函数的注销接口如下:void csi_uart_uninit(csi_uart_t *uart); 参数:   uart:uart控制块 返回值:   注销函数没有返回值/ h( Z) W" ~, F+ H$ j
* ?0 G4 ]  n1 y" D9 B! n
4.3 中断、回调和事件处理
; S5 q4 \+ o- L% J9 ^! t4 l( vCSI驱动接管设备中断处理,CSI接口用户无法直接编写中断处理函数。
2 F% b' f' F7 m8 G3 a) F8 y用户可以通过回调函数的方式来接收中断事件。$ w. p+ \# z- D' |$ T0 C9 E
4.3.1 回调注册
2 ^: |+ g9 p' ^8 G6 gCSI驱动提供回调注册注销函数:csi_xxx_attach(...) 和 csi_xxx_detach(...) 用户要接收中断事件,必须先注册回调函数。
" s: W) u2 n7 _7 M& I1 r/ O / G9 m/ a0 D; q5 v; P
4.4 同步异步处理
& `/ L5 D0 o* u. ~7 T/ OCSI-Driver接口设计区分同步处理和异步处理模式,轮询、中断、DMA功能分开处理。同步读写:通过轮询的方式 异步读写:通过中断或DMA的方式
  P( D7 ?# X$ X! F; W3 D9 _1 N& H4.4.1 轮询模式- `: a7 x, }- }( E
不产生中断
$ R& M8 a1 G  H4 \/ a+ p  S6 w不产生事件8 Z: U% w6 s7 p+ a
4.4.2 中断模式
/ ]9 T) G0 l. s0 O/ \. ?4 X0 R产生设备中断
) \  D3 a% \5 W5 p产生事件6 v+ C) x" e# g' r- K, D/ Q
4.4.3 DMA模式
: @" q( ?8 l8 I4 c% f8 E1 @不产生设备中断,而产生DMA中断7 ?8 f' K5 W9 E6 g0 n* B. O
产生的事件类型和中断模式一致
) Y, L- l  q& Y; u

该用户从未签到

3#
发表于 2022-6-2 13:47 | 只看该作者
来了来了,学习学习

该用户从未签到

2#
发表于 2022-6-2 13:06 | 只看该作者
来了来了,学习学习
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-23 02:34 , Processed in 0.156250 second(s), 27 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表