RISC-V生态全景解析(十六):YoC组件发布开源操作指南

简介: 芯片开放社区(OCC)面向开发者推出RISC-V系列内容,通过多角度、全方位解读RISC-V,系统性梳理总结相关理论知识,构建RISC-V知识图谱,促进开发者对RISC-V生态全貌的了解。

编辑语:

芯片开放社区(OCC)面向开发者推出RISC-V系列内容,通过多角度、全方位解读RISC-V,系统性梳理总结相关理论知识,构建RISC-V知识图谱,促进开发者对RISC-V生态全貌的了解。


在前几期内容中,我们为大家介绍了YoC基础软件平台及其五大组件对RISC-V生态开发的支持。RISC-V生态的成长与发展还需要更多开发者的参与,YoC基础软件平台也亟待更多开发者加入开发并开源。因此,本期内容我们将为大家具体介绍如何上传组件到OCC进行开源。


# 修改历史

  • 更改product组件为产品组件
  • 更新组件添加页面为最新页面


# 开源须知

开发者和厂商贡献产品解决方案或组件,需要明确以下事项:

  • 以邮件的方式明确平头哥YoC管理员需要开源的组件和组件管理员信息。
  • 产品解决方案不放在OCC上,需要发邮件给平头哥管理员进行审批, 通过后以通用组件的方式开源 。
  • 明确组件代码是否涉及GPL等协议,如果涉及GPL等协议,不接收该组件。但可通过文档说明的方式,确保利用该组件做产品的开发者或厂商能找到组件管理员。
  • 针对内部开发者贡献的新组件和新解决方案,开发者自行走集团开源方案,通过后邮件通知平头哥YoC管理员。
  • 平头哥YoC管理员负责把组件和解决方案推到GITEE或GITHUB官网。


注意:平头哥YoC管理员邮箱为: cxx194832@alibaba-inc.com, shuta.lst@alibaba-inc.com


01 组件组成

所有组件名字不可重复,名字规范为C语言变量的命名规则,不可超过64字节长度。原则上都采用小写。


  • chip组件

至少包括include, src, package.yaml,README.md


命名规则:xxxx_chip (xxxx为芯片名字/型号), 位于components下。


  • board组件

至少包括include, src, config, package.yaml,README.md


命名规则:xxxx_[cpuX]_evb(xxxx为芯片名字/型号;在多核的情况下,X为序号,从0开始), 位于board下。


  • drv组件(common组件类型)

至少包括include, src, package.yaml,README.md


命名规则:drv_[xxxx]_yyyy (xxxx为IP名字,比如wifi,  yyyy为芯片名字/型号), 位于components下。


  • solution组件

至少包括app, Makefile, SCconstruct, package.yaml,README.md


命名规则:一般能指明这是个solution即可。

  • 如果是demo,一般命名为xxx_[cpuX]_demo,比如wifi_demo。在多核的情况下,X为序号,从0开始
  • 如果是平台方案实现,一般命名为xxxx_[cpuX]_function, 比如sc5654_boot。在多核的情况下,X为序号,从0开始


  • common组件

至少包括include, src, package.yaml,README.md


命名规则:唯一, 位于components下。


  • 虚拟组件

虚拟组件本身没有代码实现,只是用于把相关的组件归类在一起。


至少包括 package.yaml,README.md


目前YoC里支持的虚拟组件有:

  • sdk_chip_xxxx

芯片SDK虚拟组件包括芯片驱动,基本内核,常用的功能CLI, KV等组件。开发者可以直接在此基础之上进行二次开发。


  • sys_ble

BLE子系统,包括蓝牙协议栈和蓝牙服务等功能


  • sys_wifi

WiFi子系统,包括无线协议栈和WiFi服务等功能


  • sys_voice

语音子系统,包括播放器,MIC, RECORD等功能


  • sys_security

安全子系统包括密钥管理、SSL协议栈,算法库等功能


  • sdk_app_xxxx

解决方案虚拟组件包括芯片所有的解决方案和DEMO


一般情况下,一个解决方案由芯片SDK虚拟组件、子系统以及第三方SDK组成。


02 组件开发

开发者可以利用剑池CDK和yoctools进行组件开发,通过下列方式进行安装剑池CDK或yoctools

  • 通过剑池CDK安装包进行安装
  • sudo pip install yoctools


2.1 剑池CDK开发

2.1.1 获取解决方案

打开剑池CDK进入主界面,选择Project->New IoT Project根据提示, 选择对应开发板的解决方案。

截屏2021-11-22 下午10.02.38.png


2.1.2 获取目标组件

单击home工具图标进入"show welcome page",输入目标组件名字搜索,找到组件后选择下载,添加完成后,在工程窗口package节点下可以看到添加的组件。

截屏2021-11-22 下午10.03.09.png


2.1.3 创建开发仓库

开发者获取解决方案或组件代码后,可以根据自身的需求在代码托管平台上创建组件开发仓库,进行组件开发。


2.1.4 开发组件功能

开发者在开发过程中提交代码到组件开发仓库,直到组件功能完成。


2.1.5 贡献发布组件

开发者将组件贡献合入YoC,需要按照以下章节3进行操作。


2.2 yoctools开发

2.2.1 获取解决方案

根据已经发布的解决方案版本,开发者可以根据以下命令获取解决方案, 比如开发者想利用v7.4.0版本helloworld解决方案进行开发,可以通过以下命令获取:

yoc init
yoc install helloworld -b v7.4.0


2.2.2 获取目标组件

根据已经发布的组件版本,开发者可以根据以下命令获取目标组件, 比如开发者想利用v7.4.0版本kv解决方案进行开发,可以通过以下命令获取:


yoc install kv -b v7.4.0


2.2.3 创建开发仓库

开发者获取解决方案或组件代码后,可以根据自身的需求在代码托管平台上创建组件开发仓库,进行组件开发。


2.2.4 开发组件功能

开发者在开发过程中提交代码到组件开发仓库,直到组件功能完成。


2.2.5 贡献发布组件

开发者将组件贡献合入YoC,需要按照以下章节3进行操作。


03 组件提交

开发者贡献组件给YoC,需要根据新增组件和现有组件分别处理。


对于需要创建新组件仓库,分为两种情况:

  • 提交组件开发者邮箱、组件功能描述等信息给平头哥管理员,由管理员进行统一创建GITEE组件仓库。
  • 可以自行创建组件GITEE仓库,但需要将组建仓库地址提交给平头哥管理员进行仓库管理。


为了满足产品发布需要,如果遇到YoC公共组件修改的情况,可以先创建组件分支,先进行发布,发布后需要和组件Owner进行讨论沟通,确认合入组件主干的计划。


3.1 新增组件

  • 内部开发者向YoC仓库管理员申请AONE组件新仓库(默认新建仓库包含master分支, 发布分支需要组件管理者自行创建)。
  • 外部开发者向YoC仓库管理员申请GITEE组件新仓库(默认新建仓库包含master分支,发布分支需要组件管理者自行创建)。
  • 部开发者向YoC仓库管理员提供已经申请好的新仓库地址(默认新建仓库包含master分支,发布分支需要组件管理者自行创建)。


开发者将组件代码提交到新组件仓库的master分支和DEV分支,然后将代码上传到master分支和dev分支,打上标签进行发布,标签遵循vX.Y.Z版本规则,初始版本号组件管理员自己定义。


3.2 现有组件

  • 内部开发者提交组件代码到AONE现有组件仓库开发分支上,组件管理员根据需要评估合入方式,测试通过后,直接打上标签进行发布。
  • 外部开发者提交组件代码到GITEE现有组件仓库DEV分支上,组件管理员根据需要评估合入方式,测试通过后,打上标签进行发布。


04 组件测试

开发者提交组件代码到组件仓库,会触发组件CI测试,根据新增组件和现有组件,组件CI测试用例处理不同。


组件CI系统在测试完成后会自动发邮件给组件管理员,组件管理员可以登录代码托管组件仓库查看测试结果。

截屏2021-11-22 下午10.04.34.png


4.1 新增组件

  • 内部开发者提交组件代码到AONE的组件开发分支前,需要和组件测试管理员讨论新组件自动化测试用例,保证新组建提交到组件开发分支上会触发CI组件自动化测试
  • 外部开发者提交组件代码到GITEE的组件开发分支


  • 如果组件管理员是外部开发者,组件管理员自行保证组件功能测试。
  • 如果组件管理员有平头哥内部人员,需要和组件测试管理员讨论新组件自动化测试用例,保证新组件提交到组件开发分支上会触发CI组件自动化测


4.2 现有组件

  • 更新组件功能代码
  • 内部开发者提交组件到AONE的组件开发分支或新增分支,会触发CI组件自动化测试。
  • 外部开发者提交组件到GITEE的组件开发分支或新增分支,会触发CI组件自动化测试。


  • 扩展组件功能代码
  • 内部开发者提交组件代码到AONE的组件分支或新增分支前,需要和组件测试管理员讨论扩展组件功能自动化测试用例,保证组件提交到组件开发分支上会触发CI组件完整自动化测试
  • 外部开发者提交组件代码到GITEE的组件分支或新增分支,


  • 如果组件管理员是外部开发者,组件管理员自行保证组件功能测试。
  • 如果组件管理员有平头哥内部人员,需要和组件测试管理员讨论扩展组件功能自动化测试用例,保证组件提交到组件开发分支上会触发CI组件完整自动化测试


05 组件合入

  • 提交组件测试通过,则开发者通过pull request 请求合入组件仓库开发分支,组件管理员决定何时发布。具体pull request流程请参考https://gitee.com/help/articles/4133
  • 提交组件测试不通过,则组件管理员拒绝合入和取消请求,邮件通知开发者测试结果,要求修改后重新提交。


新组件合入组件仓库后,需要通知仓库管理员在manifest仓库加入该新组建,确保外部能够正确获取。


06 组件发布

6.1 通过剑池CDK发布

注意:通过剑池CDK发布的组件是以ZIP包的方式上传到OCC上,并非上传到组件仓库。


6.1.1 添加common组件

  • 步骤一    进入我的发布

单击home工具图标进入"show welcome page",进入我的发布,

截屏2021-11-22 下午10.05.07.png


  • 步骤二    上传common组件

点击右上角的"上传本地组件"按钮,选择本地的需要发布的common组件,上传成功。

截屏2021-11-22 下午10.05.39.png


  • 步骤三    查看发布common组件

点击左侧的"组件资源",可以看到发布的组件已在其中。

截屏2021-11-22 下午10.06.07.png


6.1.2 添加产品组件

  • 步骤一    登录OCC账户

只有具备企业资质认证的账户才能发布产品组件,否则无权限发布。


  • 步骤二    进入我的发布

单击home工具图标进入"show welcome page",进入我的发布,

截屏2021-11-22 下午10.06.36.png


  • 步骤三    上传产品组件

点击右上角的"上传本地组件"按钮,选择本地的需要发布的产品组件,上传成功。

截屏2021-11-22 下午10.07.01.png


  • 步骤四    查看发布产品组件

点击左侧的"我的发布"->我的方案,可以看到发布的产品组件已在其中。

截屏2021-11-22 下午10.07.23.png


6.2 通过控制台发布

6.2.1 添加Common组件

  • 步骤一    登录OCC,进入OCC控制台

截屏2021-11-22 下午10.07.57.png


  • 步骤二    点击左侧组件管理菜单,点击右侧新增按钮

截屏2021-11-22 下午10.08.25.png


  • 步骤三    点击选择GITEE添加方式,依次填写组件名称和仓库组件地址,最后确定即可

截屏2021-11-22 下午10.08.57.png


6.2.2 添加产品组件

  • 步骤一 登录OCC,进入OCC控制台

截屏2021-11-22 下午10.10.12.png


  • 步骤二    点击芯片管理,进入芯片管理页面

截屏2021-11-22 下午10.10.35.png


  • 步骤三    选择产品,点击编辑按钮,进入产品详细页

截屏2021-11-22 下午10.11.02.png


  • 步骤四    选择组件TAB,点击上传组件

截屏2021-11-22 下午10.11.27.png


  • 步骤五    点击选择GITEE添加方式,依次填写组件名称和仓库组件地址,最后确定即可

截屏2021-11-22 下午10.12.09.png


6.2.3 组件仓库信息同步

一旦组件的仓库发生变动,比如新的版本发布,新的分支建立,新的TAG添加等,OCC的组件管理服务不会主动去拉取组件仓库信息(原因是GITEE对组件的仓库刷新次数有日限制), 需要组件管理员人为的在OCC控制台的组件管理项对更新的组件进行刷新。

截屏2021-11-22 下午10.12.35.png


07 组件仓库消息设定

7.1 关注仓库

截屏2021-11-22 下午10.12.58.png


点击右上角的Starred图标来关注该仓库。


7.2 消息设置

截屏2021-11-22 下午10.13.30.png


添加个人账户里的邮箱设置填写你的邮箱地址。


7.3 通知设置

截屏2021-11-22 下午10.13.56.png


在通知设置里把邮箱通知的相关内容打上勾。具体参考 https://gitee.com/profile/notifications


08 注意事项

分支或者TAG名称和package.yaml中的version字段要匹配。

截屏2021-11-22 下午10.14.31.png截屏2021-11-22 下午10.14.50.png截屏2021-11-22 下午10.15.22.png

相关文章
|
18天前
|
监控 网络协议 Java
Tomcat源码解析】整体架构组成及核心组件
Tomcat,原名Catalina,是一款优雅轻盈的Web服务器,自4.x版本起扩展了JSP、EL等功能,超越了单纯的Servlet容器范畴。Servlet是Sun公司为Java编程Web应用制定的规范,Tomcat作为Servlet容器,负责构建Request与Response对象,并执行业务逻辑。
Tomcat源码解析】整体架构组成及核心组件
|
19天前
|
Kubernetes API 调度
Kubernetes 架构解析:理解其核心组件
【8月更文第29天】Kubernetes(简称 K8s)是一个开源的容器编排系统,用于自动化部署、扩展和管理容器化应用。它提供了一个可移植、可扩展的环境来运行分布式系统。本文将深入探讨 Kubernetes 的架构设计,包括其核心组件如何协同工作以实现这些功能。
39 0
|
7天前
|
开发工具
Flutter-AnimatedWidget组件源码解析
Flutter-AnimatedWidget组件源码解析
|
21天前
|
存储 安全 虚拟化
深入解析:Docker的架构与组件
【8月更文挑战第27天】
111 2
|
1月前
|
数据可视化 定位技术 API
云解析地图作业问题之通过saveEffect实现组件联动如何解决
云解析地图作业问题之通过saveEffect实现组件联动如何解决
43 14
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
【热门开源项目】阿里开源巨擘:Qwen-2 72B深度解析与推荐
在人工智能的浪潮中,开源模型如同璀璨的星辰,指引着开发者们探索未知的领域。而今天,我们将聚焦在阿里云推出的开源模型Qwen-2 72B上,从其项目介绍、技术特点、代码解析等多个角度,深入解析并推荐这一卓越的开源项目。
74 1
|
1月前
|
监控 Oracle 关系型数据库
"深度剖析:Oracle SGA大小调整策略——从组件解析到动态优化,打造高效数据库性能"
【8月更文挑战第9天】在Oracle数据库性能优化中,系统全局区(SGA)的大小调整至关重要。SGA作为一组共享内存区域,直接影响数据库处理能力和响应速度。本文通过问答形式介绍SGA调整策略:包括SGA的组成(如数据缓冲区、共享池等),如何根据负载与物理内存确定初始大小,手动调整SGA的方法(如使用`ALTER SYSTEM`命令),以及利用自动内存管理(AMM)特性实现智能调整。调整过程中需注意监控与测试,确保稳定性和性能。
104 2
|
17天前
|
前端开发 UED 开发者
React组件优化全攻略:深度解析让你的前端应用飞速运行的秘诀——从PureComponent到React.memo的彻底性能比较
【8月更文挑战第31天】在构建现代Web应用时,性能是提升用户体验的关键因素。React作为主流前端库,其组件优化尤为重要。本文深入探讨了React组件优化策略,包括使用`PureComponent`、`React.memo`及避免不必要的渲染等方法,帮助开发者显著提升应用性能。通过实践案例对比优化前后效果,不仅提高了页面渲染速度,还增强了用户体验。优化React组件是每个开发者必须关注的重点。
28 0
|
24天前
|
Kubernetes 负载均衡 网络协议
在K8S中,DNS组件有什么特性?
在K8S中,DNS组件有什么特性?
|
2月前
|
SQL 开发框架 前端开发
在C#开发中使用第三方组件LambdaParser、DynamicExpresso、Z.Expressions,实现动态解析/求值字符串表达式
在C#开发中使用第三方组件LambdaParser、DynamicExpresso、Z.Expressions,实现动态解析/求值字符串表达式

热门文章

最新文章

推荐镜像

更多