剑池CDK快速使用指南

文章目录

    • 背景介绍
        • 平头哥IoT开发工具简介
        • 工作空间及组件
        • 组件操作及配置演示
    • 剑池CDK基础概念及功能
        • 工程管理及运行步骤:
        • 模拟器
        • 硬件调试器及配置
    • 使用剑池CDK进行IoT方案开发
    • 使用剑池CDK进行芯片SDK开发
        • 创建初始SDK
        • 算法工程原理及创建
        • 算法工程的调试和使用
        • 硬件相关组件开发
        • 硬件无关组件开发
        • 发布SDK工程
    • 其他特色功能

仅介绍剑池CDK的基本使用方法步骤,详细信息参考CDK的Help文档。参考教程——阿里云开发者 区-剑池CDK功能及开发实战。

背景介绍

平头哥IoT开发工具简介

平头哥剑池CDK开发工具主要用于开发玄铁CPU。如何开发出运行在玄铁CPU上的软件IoT芯片开发领域中,会有一些基础的IoT芯片软件开发工具,比如编译器、汇编器、链接器、集成开发环境、模拟器、Flash烧写工具、领域内算法库、CK-Link等。
玄铁处理器也有自己的开发工具,即剑池开发工具。

工作空间及组件

在IoT的开发中,运行在玄铁CPU上面的二进制文件称为镜像文件。在CDK中,我们定义CDK的工程是生成一个镜像文件的基本单元,一个CDK工程就可以被编译输出一个镜像文件,再通过CDK中的下载器将镜像文件下载到玄铁CPU中运行。我们在CDK中定义了工作空间的概念,一个工作空间是CDK工程的容器,可以包含一个或多个CDK工程,每个CDK工程之间都是相互独立的,它们可以生成独立的镜像文件运行在玄铁CPU上。

剑池CDK基础概念及功能

工程管理及运行步骤:

1、方案组件配置(即工程配置)

硬件调试器及配置

CDK能够连接的硬件调试器分为两个类型:CK-Link Lite和CK-Link Pro,这两个类型都有不同的型 。CK-Link Lite是低成本调试器,造价比较低,CK-Link Pro是高性能调试器,成本更高。对于MCU类的小成本CPU,用CK-Link Lite即可。两种调试器在CDK中都可以进行配置。
右击工程节点——Options for…——Debug

  1. 反汇编窗口Disassemble:展示程序实时运行中,在调试目标端,玄铁CPU运行的真实的指令流。
  2. 源代码窗口:显示正在运行的源代码的具体位置。反汇编窗口会联动地显示当前源代码的反汇编,同样,源代码窗口也会根据反汇编窗口的具体位置去显示具体的源代码。
  3. 寄存器窗口Register:显示和修改调试目标的寄存器的内容。
  4. Frame Info-Locals窗口:显示当前运行到的函数的局部变量。
  5. Frame Info-Watches窗口:显示用户输入的表达式的结果;显示程序所运行位置能够访问到的所有的变量,可以是全局变量或局部变量。可以输入“$寄存器名”,显示该寄存器的值。可以对变量或节点值进行修改。添加变量时,一种方法是在下方手动输入变量名,另一种方法是选中源代码窗口中的变量,按住鼠标拖动到Watches窗口中。
  6. Frame Info-Call Stack窗口:显示程序的调用轨迹。
  7. Frame Info-Memory窗口:显示用户输入的存储空间的内容;查看和修改某个内存地址的值。
  8. Serial Pane串口窗口:提供了三个功能相同的硬件串口窗口,可同时连接三个硬件串口;Debug Print用来连接支持CPU的调试打印串口,会自动连接到该串口。该窗口是通过硬件的调试通道实现了一个虚拟的串口打印功能。当使用的硬件CPU支持了调试打印功能以后,用户可以在程序中结合硬件实现printf功能,完成调试打印输出的功能,此时打印会输出在此窗口中;也就是之前配置的ICE(硬件调试方法)Debug Print功能。
  9. Peripherals外设窗口:显示外围设备状态,修改一些可修改内容(从菜单栏的Peripherals打开)。在开发阶段,开发者可配置自己的外设窗口,因为每个CPU对接的外设都不同——在工程的任一目录下-Add New File-Chip File(.svc)-
    其他的调试窗口可在View中打开。

使用剑池CDK进行IoT方案开发

从Welcome Page中可以下载方案示例和对应的开发资源。

使用剑池CDK进行芯片SDK开发

参考文档平头哥剑池CDK快速上手指南
我们可以把一个工程需要的资源划分成若干类型的组件,因此可以说一个硬件平台由若干个组件组成。定义运行在一个硬件平台下的多个方案工程,我们把这些方案工程及硬件平台一起打包,分发给方案开发者,把这样的一个软件包称为芯片的SDK。

flashChipErase整块擦除Flash,代码如下:

flashChecksum:如果Flash可直接读取,可以复制注释中代码到程序中。

算法工程的调试和使用

在调试算法工程前,将Compiler中的Optimization设为None(-O0),提高精准度。
观察main.c文件可见,Flash算法逻辑的核心是一个do while循环,通过g_func的全局变量,控制每次进入循环的入口,每个入口都是driver.c中二次开发的接口函数。由函数的参数调用可以看出,待烧写的数据都存储在g_rwBuffer数据空间中,需要操作的Flash地址是g_dstAddress这样一个全局变量。g_length是我们要操作的目标地址或buffer的宽度。
以烧写目标flashProgram为例,IDE CDK会设置待烧写的目标地址g_dstAddress,将要下载到Flash区间的数据写到g_rwBuffer中,然后把g_rwBuffer的长度设置为全局变量g_length。最重要的是,将g_func设置为1。
__bkpt_label()是一个汇编函数指令,是一个软断点,程序执行到这里时会始终停止,这样就完成了一次Flash操作。

硬件相关组件开发

硬件相关组件的开发都在SDK虚拟组件集下完成。
创建一个default的芯片组件,命名为_SmartL_Chip,更新当前的芯片组件。芯片组件的更新, 主要包含芯片外设驱动的代码的编写, 如果没有现成代码, 需要逐个添加, 编写代码, 如果存在驱动代码, 可以右击 _SmartL_Chip 组件节点, 选择 Add Source Folder, 将芯片组件需要包含的内容添加到芯片组件中。本例中, 将 _SmartL_Chip 组件使用的 csi_core 接口和驱动代码, 通过 Add Source Folder 的方式添加到芯片组件中。

硬件无关组件开发

在工程根节点创建Common组件_SmartL_Libs,右击工程节点,选择Creat a Common Package。工程依赖的所有与硬件无关的组件都放在Packages目录下。同样右击_SmartL_Libs,用Add Source Folder 的方式,导入一些外部资源,再在Compiler的Global Config中点击include进行添加头文件。一个Common类型的组件即配置完成。
同样,我们需要把方案相关的一些资源导入到SDK工程中。右击工程节点,用Add Source Folder 的方式,导入。本例中导入一个csi_config.h配置文件。再右击工程节点,在Compiler的Global Config中添加include头文件。

剑池CDK快速使用指南
一个SDK工程,即由方案逻辑、与平台相关的组件、与平台无关的组件组合而成。便于切换不同的平台。

发布SDK工程

发布过程就是将工程所有的组件全部上传到芯片开放 区中,供其他开发者使用。每个账户使用唯一的组件名。打包需要注意, 在打包的目录结构中, 工程目录与 Package Path 目录的相对路径关系,应 该 与 SDK 制 作 的 时 候 保 持 一 致 。 例 如 , 当 前 例 子 中 ,SmartL 工 程 在 桌 面 的project/my_solution/ 目 录 下 , 而 使 用 的 Package Path 目 录 是 桌 面 的project/my_pack_pool/目录, 那么发布的时候, 将桌面 project/my_solution/目录和桌面 project/my_pack_pool/目录共同拷贝到同一个目录 SmartLSDK 目录下, 然后压缩该目录作为一个 SDK 即可。

其他特色功能

CDK的AI部署工具。

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年3月4日
下一篇 2021年3月4日

相关推荐