开发者学堂课程【平头哥剑池 CDK 功能及开发实战:5.2 芯片SDK开发:算法工程原理及创建】学习笔记与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/61/detail/1131
5.2 芯片SDK开发:算法工程原理及创建
上节课讲解如何在 cdk 当中创建初始的 sdk 工程,本节课讲解算法工程原理及创建方法。
首先算法工程是将运行在 flash 区间的镜像烧写到 flash 空间当中。算法工程的工作原理涉及到 cdk 的硬件调试概念,首先需要将 cdk 硬件通路进行简单的说明,在硬件调试中,我们将 cdk 开发环境生成的镜像文件通过 ck-link 的调试下载到程序的 RAM 区间当中。如果说镜像需要烧写到 flash 区间,那么在这种情况下,需要算法文件去辅助调试器将下载到 flash 区间的镜像写到 flash 区间当中,那么整个的通路就变为如图所示:
Flash 算法的目的就是将镜像的程序最终会烧写到 flash 区间当中,如果说需要有 flash 区间的一个下载, flash 算法在其中起到的作用即开发环境会将算法文件下载到镶入式设备当中的 ram 或 sram 区间中。该过程并没有涉及到 flash 的下载,所以其不需要任何操作。换言之通过下载 ram 的手段将算法下载到 ram 当中,然后开发环境再将镜像的二进制放到算法文件中,通过调试手段控制算法逻辑将需要双写的数据由 flash 算法加载到 flash 区间当中。以上是 flash 算法的基本原理,由此可知 flash 算法的组成是整个 flash 烧写的核心。
如图所示,在 cdk 中 flash 工程算法的组成有四个部分。第一 flash 的设备描述,描述芯片中 flash 的基本参数,其名称以及其是否可直接读取,其中最重要的是 flash 区间当中的 Exercise 和 flash的空间。第二数据监控 buffer ,这部分内容作用于与 pc 端的双写镜像的数据和算法之间进行相互的数据 buffer 。第三是 flash 数据接口调用控制,这部分用来意念调试器控制的逻辑,能够将数据 buffer 当中的数据正真的烧写到 flash 当中。最后是 flash 接口的实现,flash 接口是做算法二次开发中最主要的一个工作,它的接口需要完成以下这些接口内容:
flashInit 与 flashunInit 是整个 flash 初始化的工作,init 是flash 烧写最开始需要执行的业务逻辑, uninit 是整个 flash 操作结束需要操作的业务逻辑。 flashprogram 是整个 flash 区间烧写的接口,需要烧写的内容是通过 flashprogram 接口完成烧写到 flash 区间中去。 flashread 是用来读取 flash 当中数据的接口, flasherase 是用来做 sector 片擦的接口,chiperase 用来整片擦除接口而 checksum 用来烧写过程加速 verify 的接口。
以上就是整个 flash 的基本工作原理以及它的一些主要组成。下面讲解如何在 cdk 中创建 flash 的工程。
打开 cdk 以后,创建 workspace ,点击 new sce project ,需要选择 flash 选项,然后选择对应芯片的cpu型号,以 fed 为例,在 ram 区间去填写芯片中的 ram 地址,分为 flash 工程,始终逆行在 tan 端的ram 的空间中,将工程名称填写,点击确定。完成 flash 工程的创建。
本节课就介绍结束,下节课将详细演示如何把创建的工程进行二次的开发,保证能在芯片端能够正常的使用。