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

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

  [复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
本文将介绍YoC系统硬件底层抽象组件 —— CSI组件。
5 j8 g6 ^) L$ C# S4 E  u1 a% V& P, `) g. Y4 H1 F
1、概述3 [  U9 j" o. h' b/ F6 M
CSI (Chip System InteRFace)是针对嵌入式系统,定义了CPU内核移植接口、外围设备操作接口、统一软件接口规范,消除不同芯片的差异,简化软件的使用及提高软件的移植性。通过CSI 接口规范,可以快速实现芯片对接到YoC 平台。CSI 的具体内容包括:& I, C# i( m) ?3 E% y1 U% {! M; z
-CSI-CORE:定义了CPU和相关紧耦合外设的接口规范
' S  d0 U0 D! b+ l* s6 I& d  `" m-CSI-driver:定义了常用的驱动的接口规范
) c7 m( m$ b9 f% ]. q* U( F7 H! B8 w-CSI-kernel:定义实时操作系统的接口规范) N- }: [- t6 [% L
/ e) k& Q: @% E( f5 _  \
8 `# T% N4 h4 Z% D
2、CSI组件使用
: U# j: W* g( x) a; hCSI有两个版本,目前CSI1.0逐步启用,推荐使用CSI2.0。! W! a: H. B. L8 N: Y% O: |; \
" R  C* o( @8 A( r5 S
3、头文件包含
! L+ g6 E% s# Q3.1 GCC -I 路径
: n; ~! |9 Y% ^1 f* H$ N! ], C-I csi2/include/
; a" B9 q& p5 V: A6 G
3 t. K# A1 Z! d4 O3.2 CSI-Core头文件包含( r% m" `1 ^/ z0 m7 a8 D% ?
#include <csi_core.h>: F# d, c* g2 i( B' v7 L8 m
9 {, L% `/ V; N& w& ]
3.3 CSI-Driver头文件包含
# ~1 O' e% e7 S2 y& S2 v#include <drv/UART.h> #include <drv/timer.h>
( ]% O4 C; K  y# u- Q
) Z/ E; ]/ y' K% E% w- h3.4 CSI-Kernel头文件包含  V) D9 e% o' {6 O$ v: H
#include <csi_kernel.h>6 ~  K  n/ J- l; K
9 V  I2 O( Z$ K  `
4、模块分述
4 R3 w9 O+ p" E3 T! L4.1 CSI-Core/ @5 P9 U' r* L3 y$ b
目前已针对RISCV、C-SKY架构做了接口的定义和实现。CSI-Core是驱动和RTOS程序的基础,CSI-Driver会基于CSI-Core的接口来定义外设寄存器描述和驱动实现。
9 x/ G# x4 s) H; w+ }2 K% i' f* W5 w  E, J: O. H  ?6 [5 z$ Y% f
4.2 CSI-Driver6 p( |1 @# }, l6 r& W
-CSI-Driver是应用接口,是对硬件功能的抽象,不会暴露所有硬件细节。
6 a% b5 o2 u8 h6 M) _$ V/ o9 j# s-CSI-Driver具有统一的接口,不同硬件IP之间的差异会在这层做统一。
! _; y7 a% W& X# l% |: o-目前已规范了40+个模块的接口,包括IO类,加解密类,定时器类等。* S' p3 U# ~) r* O& [5 m
4.2.1 统一的设备和中断管理  x" G* v- U- {/ j/ P3 |$ O/ h3 w
$ s  \5 _7 L/ a; C
4.2.2 驱动程序的注册与注销
& H( }/ g- [4 k) Q, F& O4.2.2.1 注册, T/ q7 L0 f% A, f0 D( [
注册函数负责驱动的初始化和硬件的基本初始化。一般的,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+ `# b4 d! Y! i0 f
4.2.2.2 注销: i, z  H6 X- m1 C7 ~
注销函数负责驱动的反初始化和硬件的反初始化 一般的,CSI驱动注销函数形式为:void csi__uninit(csi_xxx_t *xxx); 以uart为例,其驱动函数的注销接口如下:void csi_uart_uninit(csi_uart_t *uart); 参数:   uart:uart控制块 返回值:   注销函数没有返回值
" _5 R5 g+ l# Z! W2 \1 O. L: E' K, @% b  q' W0 [% g8 d5 F
4.3 中断、回调和事件处理
! o" w7 L; K) I. |; U/ |CSI驱动接管设备中断处理,CSI接口用户无法直接编写中断处理函数。
& F& b4 D% B. Q$ Y用户可以通过回调函数的方式来接收中断事件。) n& n! g6 X3 W- @
4.3.1 回调注册" q! D6 D; o4 Z9 S
CSI驱动提供回调注册注销函数:csi_xxx_attach(...) 和 csi_xxx_detach(...) 用户要接收中断事件,必须先注册回调函数。7 U; m: q8 |) a- V6 y' L  n4 C

5 X% t" |  q+ d! Q4.4 同步异步处理
8 i; ]" q. I6 o; I4 f3 M( d# O" wCSI-Driver接口设计区分同步处理和异步处理模式,轮询、中断、DMA功能分开处理。同步读写:通过轮询的方式 异步读写:通过中断或DMA的方式4 u& E7 V2 y& {, F
4.4.1 轮询模式
6 d2 V# K. F" ]- }$ w6 n! w1 V不产生中断  Y' T" k  _, _+ F
不产生事件
- q& f# \( z$ P1 o' P/ X4.4.2 中断模式
5 j$ o) Q8 X% D7 B  {产生设备中断
* d* F/ A9 h! j2 }) ~+ S产生事件; T: c, Y/ m4 r$ O0 a' P' F
4.4.3 DMA模式
: m9 P! Z2 U; F/ `1 k- g' o不产生设备中断,而产生DMA中断
, I& L+ Y- _7 b# v产生的事件类型和中断模式一致
  X4 j! G$ F9 y9 t

该用户从未签到

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

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-23 10:54 , Processed in 0.141601 second(s), 27 queries , Gzip On.

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

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

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