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

相关文章
|
10天前
|
前端开发 JavaScript
React 步骤条组件 Stepper 深入解析与常见问题
步骤条组件是构建多步骤表单或流程时的有力工具,帮助用户了解进度并导航。本文介绍了在React中实现简单步骤条的方法,包括基本结构、状态管理、样式处理及常见问题解决策略,如状态管理库的使用、自定义Hook的提取和CSS Modules的应用,以确保组件的健壮性和可维护性。
48 17
|
2月前
|
人工智能 自然语言处理 前端开发
SpringBoot + 通义千问 + 自定义React组件:支持EventStream数据解析的技术实践
【10月更文挑战第7天】在现代Web开发中,集成多种技术栈以实现复杂的功能需求已成为常态。本文将详细介绍如何使用SpringBoot作为后端框架,结合阿里巴巴的通义千问(一个强大的自然语言处理服务),并通过自定义React组件来支持服务器发送事件(SSE, Server-Sent Events)的EventStream数据解析。这一组合不仅能够实现高效的实时通信,还能利用AI技术提升用户体验。
224 2
|
2月前
|
SQL 关系型数据库 MySQL
数据库导入SQL文件:全面解析与操作指南
在数据库管理中,将SQL文件导入数据库是一个常见且重要的操作。无论是迁移数据、恢复备份,还是测试和开发环境搭建,掌握如何正确导入SQL文件都至关重要。本文将详细介绍数据库导入SQL文件的全过程,包括准备工作、操作步骤以及常见问题解决方案,旨在为数据库管理员和开发者提供全面的操作指南。一、准备工作在导
447 0
|
16天前
|
前端开发 UED
React 文本区域组件 Textarea:深入解析与优化
本文介绍了 React 中 Textarea 组件的基础用法、常见问题及优化方法,包括状态绑定、初始值设置、样式自定义、性能优化和跨浏览器兼容性处理,并提供了代码案例。
42 8
|
1月前
|
自然语言处理 并行计算 数据可视化
免费开源法律文档比对工具:技术解析与应用
这款免费开源的法律文档比对工具,利用先进的文本分析和自然语言处理技术,实现高效、精准的文档比对。核心功能包括文本差异检测、多格式支持、语义分析、批量处理及用户友好的可视化界面,广泛适用于法律行业的各类场景。
|
1月前
|
前端开发 JavaScript 开发者
揭秘前端高手的秘密武器:深度解析递归组件与动态组件的奥妙,让你代码效率翻倍!
【10月更文挑战第23天】在Web开发中,组件化已成为主流。本文深入探讨了递归组件与动态组件的概念、应用及实现方式。递归组件通过在组件内部调用自身,适用于处理层级结构数据,如菜单和树形控件。动态组件则根据数据变化动态切换组件显示,适用于不同业务逻辑下的组件展示。通过示例,展示了这两种组件的实现方法及其在实际开发中的应用价值。
37 1
|
2月前
|
存储 JavaScript 前端开发
Vue3权限控制全攻略:路由与组件层面的用户角色与权限管理方法深度解析
Vue3权限控制全攻略:路由与组件层面的用户角色与权限管理方法深度解析
218 2
|
2月前
|
机器学习/深度学习 编解码 算法
深入解析MaxFrame:关键技术组件及其对视频体验的影响
【10月更文挑战第12天】随着流媒体服务和高清视频内容的普及,用户对于视频质量的要求越来越高。为了满足这些需求,许多技术被开发出来以提升视频播放的质量。其中,MaxFrame是一种旨在通过一系列先进的图像处理算法来优化视频帧的技术。本文将深入探讨构成MaxFrame的核心组件,包括运动估计、超分辨率重建以及时间插值算法,并讨论这些技术如何协同工作以改善视频播放效果。
47 1
|
1月前
|
机器学习/深度学习 自然语言处理 数据管理
GraphRAG核心组件解析:图结构与检索增强生成
【10月更文挑战第28天】在当今数据科学领域,自然语言处理(NLP)和图数据管理技术的发展日新月异。GraphRAG(Graph Retrieval-Augmented Generation)作为一种结合了图结构和检索增强生成的创新方法,已经在多个应用场景中展现出巨大的潜力。作为一名数据科学家,我对GraphRAG的核心组件进行了深入研究,并在此分享我的理解和实践经验。
68 0
|
2月前
|
测试技术 数据库 Android开发
深入解析Android架构组件——Jetpack的使用与实践
本文旨在探讨谷歌推出的Android架构组件——Jetpack,在现代Android开发中的应用。Jetpack作为一系列库和工具的集合,旨在帮助开发者更轻松地编写出健壮、可维护且性能优异的应用。通过详细解析各个组件如Lifecycle、ViewModel、LiveData等,我们将了解其原理和使用场景,并结合实例展示如何在实际项目中应用这些组件,提升开发效率和应用质量。
52 6

推荐镜像

更多
下一篇
DataWorks