5.3 芯片SDK开发:算法工程的二次开发|学习笔记

简介: 快速学习5.3 芯片SDK开发:算法工程的二次开发

开发者学堂课程【平头哥剑池 CDK 功能及开发实战5.3 芯片SDK开发:算法工程的二次开发】学习笔记与课程紧密联系,让用户快速学习知识

课程地址https://developer.aliyun.com/learning/course/61/detail/1132


5.3 芯片SDK开发:算法工程的二次开发

 

上节课讲解 cdk 中的算法文件的工作原理及如何在 cdk 中创建一个算法文件,本次课程讲解算法工程的开发步骤。

image.png

上节课提到了算法工程分为这四个步骤,在做算法步骤需要进行二次开发的是这三个部分,第一 flash 设备描述,需要按照 flash 实际的参数去填写 flash 的描述信息。第二是 flash 接口的实现,我们根据具体的 flash 硬件设备特性去完成 flash 标准接口的逻辑。第三关于 buffer 数据交互的调整,根据芯片的大小来设置 buffer 的大小。因为 buffer 讲到是 pc 端的带商品镜像跟算法交互的数据传输的 buffer 的区域,这个区域理论上设置的越大其交互树状会议越少,使得整个 flash 烧写的速度就会变快。涉及到小方面是 flash 烧写速度会明显降低,会议需要根据目标端的具体的大小尽可能的设置较大的 buffer 最后一步是根据工作原理调试系统。演示 cdk 中做的二次开发需要的内容:

image.png

创建完成一个 flash 计算工程以后,它包含 arch、inc、script、src 目录,真正需要二次开发的是 src 目录下的三个文件,首先观察 flashDev.c 就是 flash的描述工程,这里我们只需要按照注释的要求逐个去填写即可,第一项是保留不进行修改,第二项是填写 flash 的名称即应聘设备上的应聘名称,填写所用 cpu 的型号,第三项是 flash 的 id ,此 id 是作为 flash 标识,起显示作用。第四项是 flash的类型,根据 flash 的类型去填写字符串。下面区域不进行修改。可以直接访问的方式是为了表示 flash 空间是否可以直接读取,如果这里配置的是1,那么后续配置进行读 flash 的操作的时候,就不会调用需要二次接发开口的 flashread 接口;反之,若此处配置调用0,那么后续配置调用 flashread 接口读取 flash 的内容,最后是 flash 空间的配比,支持多个 flash 区域的配置。每个 flash 配置都是由起始地址以及每一个 second、size 组成,根据硬件的实际指标保持默认配比即可。

image.png

第二部分是在慢函数点 c 的 j_rwbuffer 数据的大小,默认是4k 的大小,根据自身亲切的 RAM 空间配置,尽可能配置相适应的 buffer 大小。需要改进的非文件,其中每一个标有 to do 的位置是需要做接口开发的全部内容包含上节课讲到的 inituninitprogramkeypuistakesome 的一个接口根据我们的硬件行为完成具体的逻辑。硬件如果进行 flash 操作之前需要进行硬件相关的配置这里的 demo 不需要进行配置。uninit 是所有 flash 配置之后所有的 flash 硬件的一些初始化。flashid 需要返回之前的 scvc 描述的 idprogram将我们必要烧写到数据烧写到 flash 区间当中,第一个参数 dst flash 需要编程的地址,第二个是原地址,第三个是需要双写数据的长度。会把这个内存上面的 longs 常数去双写到 dest 所在的位置,因为在实际的演示当中是用一个 reck 模拟 flash,所以需要双写的数据直接复制到目标地址即可。简单的数据转移过程,此时完成数据 program 接口。Read 接口如果说是第一位参数 diredly 选择的是1,其不会调用,不做任何操作。Erase second 操作,该地址是 second 对齐首地址,long 是需要开出的地址,erase 是需要整片擦除的地址。

image.png

此处是模拟的需要擦除的内容,将需要擦除的内容直接写下来即可,再去模拟整个 flash 擦除的操作。因为前面描述的 flashsize next 8000size ,这里以 next 8000为数据长度,把i作为地址,进行地址上的操作,将8000区域所有数据值改1.takesomeflash 是读取情况下直接复制到业务逻辑即可。可以将 flashface 的开发工作完成。由图可知是 flash 模拟的擦除内容进行简单开发,实际开发要比演示更加复杂。为了后续开发手段,在 flash 驱动过程中加入一些 src 的驱动,建议大家将每个接口的数据进行打印,为后续做 flash 烧写调序进行铺垫。

本次课程就到这里,下节课为大家讲解如何调试并验证 flash 能否正常工作。

相关文章
|
20天前
|
机器学习/深度学习 人工智能 算法
深入解析图神经网络:Graph Transformer的算法基础与工程实践
Graph Transformer是一种结合了Transformer自注意力机制与图神经网络(GNNs)特点的神经网络模型,专为处理图结构数据而设计。它通过改进的数据表示方法、自注意力机制、拉普拉斯位置编码、消息传递与聚合机制等核心技术,实现了对图中节点间关系信息的高效处理及长程依赖关系的捕捉,显著提升了图相关任务的性能。本文详细解析了Graph Transformer的技术原理、实现细节及应用场景,并通过图书推荐系统的实例,展示了其在实际问题解决中的强大能力。
115 30
|
4月前
|
数据可视化 API 开发工具
影创SDK☀️三、工程默认配置,及基础测试建议
影创SDK☀️三、工程默认配置,及基础测试建议
|
6月前
|
机器学习/深度学习 算法 BI
机器学习笔记(一) 感知机算法 之 原理篇
机器学习笔记(一) 感知机算法 之 原理篇
|
7月前
|
人工智能 算法 C++
c++算法学习笔记 (17) 质数
c++算法学习笔记 (17) 质数
|
7月前
|
算法 C++
c++算法学习笔记 (15) 单调栈与单调队列
c++算法学习笔记 (15) 单调栈与单调队列
|
7月前
|
人工智能 算法 C++
c++算法学习笔记 (18) 约数
c++算法学习笔记 (18) 约数
|
7月前
|
算法 C++
c++算法学习笔记 (16) 并查集
c++算法学习笔记 (16) 并查集
|
7月前
|
算法 C++
c++算法学习笔记 (21) STL
c++算法学习笔记 (21) STL
|
7月前
|
算法 C++
c++算法学习笔记 (20) 哈希表
c++算法学习笔记 (20) 哈希表
|
7月前
|
算法 C++
c++算法学习笔记 (19) 堆
c++算法学习笔记 (19) 堆

热门文章

最新文章