技术解码 | YoC组件开发系列一:如何向OCC发布芯片产品组件

简介: 技术解码栏目:是面向开发者详细解读芯片开放社区(OCC)上关于处理器、芯片、基础软件平台、集成开发环境及应用开发平台的相关技术,方便开发者学习及快速上手,提升开发效率。

5月29日,2021年阿里云开发者大会的“RISC-V技术趋势与芯片应用实践”分论坛上,平头哥连续发布三款RISC-V芯片开发板,且已向全球开发者开放申请。考虑到开发者在使用这些开发板进行嵌入式开发时,将会运用到YoC基础软件平台。故从本期开始,我们将持续为大家推荐YoC组件开发系列内容,帮助大家快速上手YoC基础软件平台。


关于YoC基础软件平台,我们已经在上期【技术解码】中进行了详细介绍,大家可以在文末的往期回顾中点击查看。


一 前言

平头哥芯片开放社区(简称OCC)里的芯片空间立志于打造贯穿全链路的基础设施平台。芯片厂商在对接完YoC移植或芯片开发者完成一个新的产品解决方案后,可以向OCC发布该产品组件且向YoC提交一个完整的组件,后续根据代码审核意见进行修改和完善后,最终会被合并到YoC的主分支上。


如果通过剑池CDK下载YoC最新源码仓库到本地,打开helloworld例程,在sdk_chip_ch2201节点下的cb2201和chip_ch2201组件就是芯片的BSP组件了。如果有读者朋友使用过平头哥CH2201芯片,欢迎使用体验该芯片BSP组件或者提交BUG。


image.png


关于CH2201芯片产品信息,可以前往平头哥芯片开放社区(OCC)>【芯片空间】查询获取。


image.png


本文介绍了如何向OCC发布芯片产品组件和向YoC贡献代码。


注意:YoC作为一个开源项目,其遵循协议是Apache-2.0 License。这个协议有一下几个特点:


  • 永久权利 一旦被授权,永久拥有。
  • 全球范围的权利 在一个国家获得授权,适用于所有国家。假如你在美国,许可是从印度授权的,也没有问题。
  • 授权免费,且无版税 前期,后期均无任何费用。
  • 授权无排他性 任何人都可以获得授权
  • 授权不可撤消 一旦获得授权,没有任何人可以取消。比如,你基于该产品代码开发了衍生产品,你不用担心会在某一天被禁止使用该代码


开源协议虽然不一定具备法律效力,但是当涉及软件版权纠纷时,开源协议也是非常重要的证据之一。


二 芯片产品组件代码维护方案

产品组件代码的维护有两个方案:

  • 方案A:开发者创建公开仓库进行管理,需要将组件代码推送到组件仓库里,同时也允许其他开发者贡献组件代码到仓库里。如何将组件代码提交到组件仓库里,请参考第三章节_如何提交代码到组件仓库_。
  • 方案B:开发者创建私有仓库进行管理。


两种方案的不同点


方案 组件版本发布管理 代码仓库管理
方案A 支持 跟随组件发布版本迭代
方案B 支持 自行代码迭代


三 芯片开发移植工作

这个是整个芯片产品开发移植最重要、也是最繁琐最耗时的一步。针对平头哥玄铁处理器内核,可以参考YoC芯片对接流程,如果是其他的处理器内核,可以先参考YoC最小系统实现方法。(参考文档链接:https://yoc.docs.t-head.cn/yocbook/


芯片开发移植工作完成后,会有生成一个Chip SDK Package, 至少包括以下部分:


  • 最小系统AliOS内核移植,支持任务调度,任务通讯,信号量等系统服务
  • 支持PIN、中断、串口、GPIO等外设CSI驱动
  • 支持SCons构建系统,可以使用平头哥玄铁、RISC-V和ARM处理器跨平台编译
  • 支持生成CDK工程,在线发布产品组件
  • README文件用于介绍该组件的功能信息、对外接口、运行资源等


在芯片开发移植工作中,尽量不需要修改YoC现有的组件,所有的改动和新增代码确保限制在Chip组件、Board组件和Solution组件里。除组件Bug或新增功能外的改动在后续提交PR的时候有很大的可能会被拒绝。


四 如何发布你的芯片产品组件

芯片产品组件包括:

  • Chip组件
  • Board组件
  • solution组件


利用剑池CDK完成芯片移植后,可以直接利用剑池CDK发布芯片组件至OCC。发布芯片产品组件到OCC,只是将组件打包成ZIP压缩包上传到OCC你的账户下,并没有将组件代码提交到该组件仓库。


提示:组件以ZIP包的方式发布到OCC,不仅可以维护组件的版本,而且可以进行后续的组件更新维护,操作简单,适合Windows开发者。


1. 准备工作

申请企业入驻,注册获取企业资质账号。如果想申请企业资质,进入以下网址申请即可。(https://occ.t-head.cn/occ-manage/vendor_locate


发布的芯片产品可以申请产品1520认证。如果需要了解产品1520认证流程,请进入以下网址。(https://occ.t-head.cn/document?temp=1520-certification-operation-guide


芯片产品组件包括以下三部分:

  • 芯片发布
  • 开发板发布
  • 解决方案发布


注:具体发布流程请进入以下网址了解:https://occ.t-head.cn/document?temp=solution-upload-guide


2. 进入我的发布

  • 点击剑池CDK工具栏上的home图标,进入剑池CDK Home Web页面。


image.png



  • 点进账号登录,进入登录界面, 输入企业资质账号和密码后,点击确认。


image.png


  • 点击左侧我的发布,进入我的发布,可以看到已经发布的内容。


image.png


3. 发布芯片组件

点击右上角的上传本地组件按钮,查看chip类型的组件,选择你的芯片组件,然后点击确定。


image.png


信息提示依次填写CPU和技术领域信息后,点击确认上传按钮。


image.png


4. 发布开发板组件

点击右上角的上传本地组件按钮,查看board类型的组件,选择你的开发板组件,然后点击确定。


image.png


按照对话框信息提示依次填写芯片、接入方式和技术领域信息后,点击确认上传按钮。


image.png


5. 发布解决方案组件

点击右上角的上传本地组件按钮,查看solution类型的组件,选择你的解决方案组件,然后点击确定。


image.png


按照对话框信息提示依次填写开板、技术领域和应用领域信息后,点击确认上传按钮。


image.png


五 如何提交代码到组件仓库

YoC的功能组件开源在GITEE代码托管平台上,开发者在用剑池CDK完成芯片移植开发工作后,可以直接将代码提交到YoC组件仓库里。


1. 准备工作

在进行芯片组件对接和提交前,需要做一下准备工作:

  • 一个GITEE账号
  • Git Windows客户端
  • 一些基本的Git命令使用,比如git clone/add/commit/pull/push/checkout等


2. 提交新增产品组件代码

2.1. 创建新组件仓库

如果是第一次提交该组件仓库,可以联系YoC管理员创建组件仓库。默认新建仓库包含master分支,发布分支需要组件管理者自行创建。


2.2. 创建发布分支

开发者先将组件代码提交到master分支上,再利用GITEE仓库分支管理功能创建发布分支,其内容从master分支Clone过来即可。


image.png


3. 提交现有产品组件代码或功能组件代码

3.1. Fork复制组件代码到本地

登录自己的GITEE账号,找到该组件仓库后,点击右上角Fork按钮下载仓库到本地。


image.png


3.2. 创建开发分支

利用GITEE仓库分支管理功能或者GIT命令从master分支创建新的开发分支。


3.3. 合并组件代码

将开发更新后的该组件代码PATCH合入该分支,再次确认编译和测试均通过。


3.4. 提交到远程仓库发起PR

本地测试通过后就可以发送请求给组件管理者要求合并。点击Pull Request按钮,填写修改的标题和内容后,再点击创建来完成申请。


image.png


image.png


3.5. 组件管理员完成审核和合并

组件管理员收到New Pull Request后会根据修改内容进行审核,如果判断没有问题,可以点击"接受Pull Request"按钮,完成代码合并。后续的开发者下载下来的组件代码就包含了本次改动。


相关文章
|
传感器 监控 物联网
玄铁RISC-V处理器入门与实战-RISC-V 玄铁系列开发板实践-基于玄铁C906处理器的D1 Dock Pro开发实践(下)
玄铁RISC-V处理器入门与实战-RISC-V 玄铁系列开发板实践-基于玄铁C906处理器的D1 Dock Pro开发实践
962 0
|
安全
AlmaLinux 9(RHEL9)下安装部署漏洞扫描系统Nessus-10.6.0
AlmaLinux 9(RHEL9)下安装部署漏洞扫描系统Nessus-10.6.0
725 3
|
存储 缓存 Java
仅花200行代码,如何将60万行的RocksDB改造成协程
采用少量手动修改+自动代码转换的方式,将大型多线程程序改造成协程。在某些重IO、高并发的场景中,帮助业务取得了性能翻倍的效果。
56704 3
仅花200行代码,如何将60万行的RocksDB改造成协程
|
9月前
|
存储 缓存 NoSQL
分布式锁
分布式锁是分布式系统中实现跨节点资源互斥访问的关键机制,常用于解决多进程、多机器环境下的并发控制问题。它依赖外部存储(如Redis、ZooKeeper)协调锁状态,确保全局唯一性和原子性操作。常见实现包括基于Redis的单点锁与RedLock算法、ZooKeeper的临时顺序节点及数据库唯一索引。适用于任务调度、缓存重建和库存管理等场景。设计时需关注可重入性、锁超时、续租及异常处理,并权衡性能与可靠性。
326 0
|
7月前
|
数据采集 存储 监控
ETL 工程师必看!3个数据处理阶段及应用场景
本文详解ETL全流程:从需求对齐、数据探查,到提取转换加载,再到质量监控与优化,并结合制造、零售场景展示其应用价值,揭示如何构建高效、可靠的数据生命线。
|
存储 人工智能 数据库
Chroma | AI应用开发
文将详细介绍Chroma向量数据库的功能特点、适应场景,并通过Python实操演示其基本使用方法【7月更文挑战第7天】
1383 1
Chroma | AI应用开发
|
弹性计算 缓存 监控
基于“日志审计应用”的 DNS 日志洞察实践
DNS 解析日志是一种记录 DNS 请求和响应的基础信息,监控 DNS 服务可以帮助用户识别网络活动并保持系统安全。日志审计服务支持采集 DNS 内网解析日志、公网权威解析日志、GTM 日志。理解 DNS 日志的字段含义,洞察 DNS 日志背后所代表的网络信息,既可以帮助发现和诊断 DNS 解析相关的问题,还可以检测和识别潜在的安全威胁。
9004 110
|
开发框架 Android开发 iOS开发
安卓与iOS开发中的跨平台策略:一次编码,多平台部署
在移动应用开发的广阔天地中,安卓和iOS两大阵营各占一方。随着技术的发展,跨平台开发框架应运而生,它们承诺着“一次编码,到处运行”的便捷。本文将深入探讨跨平台开发的现状、挑战以及未来趋势,同时通过代码示例揭示跨平台工具的实际运用。
419 3