开发者学堂课程【极简开发 - 平头哥 YoC 平台如何帮助开发者快速入门 AIoT :平头哥 YoC 平台——支持从芯片到云全链路高效设计的 IoT 全栈技术平台(三)】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/735/detail/13098
平头哥 YoC 平台——支持从芯片到云全链路高效设计的 IoT 全栈技术平台(三)
五、让芯片 SDK 开发更快速
在 YoC 中,主要解决两个问题,第一个问题是让开发者快速的开发产品,第二个问题是芯片公司能够快速对接。
1.CSI—芯片 SDK 开发平台
该平台由 IP 仓库、芯片 SDK 快速开发、OCC 组成。
IP 仓库提供了很多仓库中 RIP 的驱动,例如 GPIO、USB、SDIO 等等,其主要驱动和技术手册,测试用例度、文档等等技术都在 IP 仓库中。
芯片 SDK 快速开发,是为了解决芯片的快速开发,通过提供一个芯片描述文件,该描述文件可以快速的与仓库之间选取芯片所使用的 IP,同时根据其提供的定义可以快速的生成芯片上的驱动。例如芯片的 SDK ,甚至还会生成芯片对应的软件模拟机器,这样可以在芯片没有开发出来之前就能做整个软件的开发,还包括芯片的驱动测试例集、技术文档和手册。还会提供一个芯片自动化的验证平台来运行 keys 、解决芯片开发的过程中可能会添加新的渠道,能够将测试结果通过不停的迭代输出,保证驱动的质量。
当一个程序开发完成后,可以利用 OCC 提供的组件、资源将其打包,生成芯片的 SDK 。
自动化:
SDK、技术手册、测试用例生成
芯片模拟器生成(QEMU)
持续集成系统(CI)
优势:
代码符合 IEC61508 工业标准
针对嵌入式的代码密度优化(可以在很小的芯片的诉求到大的芯片诉求进行很好的运行)
上千条测试用例集保障代码质量
对接 Alios-Things 操作系统(对接后,无论是上面所说的上层的应用组件,上层的方案可以快速的运行)
2.CSI—自动化测试框架
在该框架中,有板级的自动化流程,通过测试用例等配置,包括一些测试文件的信息,然后可以自动的执行。还提供日志的分析,整个测试过程如下:
最后会形成测试报告,测试过程会根据下面连接,例如被测试机,被测试的机器和辅助测试的机器通过一些文件进行测试,测试的模块可以通过自动化流程把其进入下发的测试机中,然后即可自动化的进行测试的润利。
该测试包括:
测试覆盖:边界测试、性能测试
多种触发方式:(开发时)提交代码时触发、定时触发、(开发人员)人工触发等
扩展测试用例:只需添加更改配置文件即可(将测试用例通过配置加载到测试框架中,然后将自己开发的驱动加入到该测试框架中,即可进行自动化的运行,有了该测试框架可以进行快速的代码迭代,芯片开发团队和软件开发团队就可以快速的提交代码、验证等任务,时刻保证质量)
测试执行效率:比手工执行提升50倍以上
测试报告:直观的 web 页面展示
自动化测试可以保证芯片最终输出的质量,质量对芯片来说非常重要。
3.芯片开发环节
整个开发中,简单的将其分为三个环节,分别是芯片定义、开发驱动芯片 SDK 、发布芯片 SDK 组件。
第一步是芯片定义
在芯片定义中,在每个芯片中会有芯片描述文件,通过描述文件定义芯片描述的信息。
chip.yaml 文件由五个部分组成,第一个部分是厂商自定义字段,第二部分是 cpu 型号,第三部分是 clock 字段,定义了芯片的使用源,第四部分 devices 字段定义了芯片包含的外设,包括外设名称、外设版本、基本地址。输入指令生成 danacia sdk 软件包,该软件包由组件组合而成,sdk 软件包中还包含新建的 ati 手册,danica 目录下包含所有的实例工程,包括操作系统实例工程、外设驱动实例工程以及自动化测试软件包。
通过芯片的定义能够快速的生成芯片的 SDK,在 SDK 中将生成芯片的用户手册(手动编写用户生成比较麻烦)。所以自动生成用户手册,还有测试用户的测试代码,和整个的实例工程都可以通过自动生成。
第二步是开发驱动芯片 SDK
做一个芯片除了平台提供的默认驱动外,可能还会增加一些自己的 IP 驱动,因此用户可以开发自己的驱动。在整个过程看,整个 SDK 过程中包的组件、芯片的组件,还提供模拟器,整个开发过程可以直接在模拟器上运行出芯片的结果,包括前面介绍的 CDK 的开发工具,开发的平台保证芯片开发的质量。
演示:
打开 SDK 包装的工程,可以看到 CDK 的内容以图片的形式存在,打开 sdk 文件,通过图形化界面可以进行芯片的功能配置,编写完毕后到 flag 中进行运行,打开窗口中端,按下服务按钮即可看到工程正常运行。
第三步:发布芯片 SDK 组件
可以看到目录结构中提供的各种设备实例工程,包括代码,都可以快速的运用。在把新的 IP 驱动开发后,提供自动化的测试并且有一个好的质量的输出后,可以将芯片发布到 OCC 平台。
演示:
自动化测试触发后,发现计算机正在进行 spi 的测试,连接到另一台机器查看,看到机器正在进行 gpio 的测试。
说明整个的过程都在自动化的完成。
通过三个步骤,测试完后的组件通过一键的 CDK 一键发布的方式就可以将芯片的 SDK 发布到 OCC 的官网。
4.回顾:
第一步是芯片定义,把芯片的信息通过 chip.yaml 的文件形式将其描述,然后生成驱动模板,基础的组件。第二步是在工程中通过 CDK 的计算开发工具增加芯片的特有的驱动,然后通过测试化的平台不断的测试和验证整个开发的过程,这样可以提高开发的时间,保证 CDK 的质量。开发完成后通过第三步完成芯片的发布。
前面通过两个环节介绍了在整个 OCC 开发平台中,芯片开发社区中,解决两类工作。第一类是开发者可以通过 OCC 的开发社区能够直接得到平台的解决方案、组件,能够快速的做封装产品的开发,能够得到芯片公司资源的支持。另一方面是芯片的厂家,可以通过 SDK 的开发工具、开发的组件,能够快速将芯片的 SDK 生成,然后接入到 平台。这样从上游的芯片公司到下游的开发商和开发者,可以很好的在芯片开发社之间进行互动来完成整个生态的快速连接。
在 OCC 中,有1520计划,能够加速合作伙伴(芯片公司和开发者)共同构建 AIoT 芯生态,共同打造这样的社区。