平头哥剑池CDK教程——算法工程原理及创建

算法工程是用来将一个运行在flash区间的镜像文件烧写到我们的芯片flash空间中,那么算法工程的工作原理涉及到CDK硬件调试的概念,首先我们需要把CDK的硬件调试通路进行一个简单的说明。

在硬件调试中,我们是将CDK的开发环境中的工程生成的镜像文件通过我们的CK-Link调试工具去下载到我们的嵌入式设备ram区间中

如果说这个镜像有需要烧写到flash区间的话,那么在这种情况下就需要我们的算法文件去植入我们的调试器,去将下载到flash区间的镜像文件写到我们的flash区间中,那么,我们的整个的通路就变成下图的样子。

flash算法的目的是我们要把这个镜像程序最终会烧写到我们的flash区间中,如果说需要有flash区间的下载的话,我们的flash算法就好在这里起到一个作用。

我们的开发环境首先会把算法文件下载到我们的嵌入式设备的ram/sram区间中,那么这个过程是没有涉及到flash下载的,所以它是不需要任何的flash操作。

然后我们的开发环境再把镜像的二进制先放在我们的算法文件的buffer中,再通过我们的调试手段,去控制我们的算法逻辑,将我们需要烧写的数据,由我们的flash算法去加载到我们的flash区间中,以上就是我们整个flash算法的工作原理。

我们可以看到在CDK中,一个flash工程算法的组成部分有四个,如下图所示。

flash设备描述:是用来描述我们芯片中flash的基本参数,如名称,是否可读取以及flash空间大小等信息。

数据交互buffer:这部分的内容是用来跟我们的PC端烧写镜像的数据和我们的算法集进行数据交互的缓冲区。

flash接口调用控制:这部分是用来提供给我们硬件调试器控制的一些逻辑,能够将我们的buffer里面的数据真正的烧写到我们的flash中。

flash接口的实现:是我们做算法二次开发中最主要的一个工作,它的接口需要完成下图右边的接口内容。

flashinit和flashuninit是整个flash烧写的初始化工作,init是flash进行烧写最开始需要执行的业务逻辑,uninit是整个flash操作结束以后需要执行的业务逻辑。

flashprogram是我们整个flash区间进行烧写的接口,也就是说我们需要进行烧写的内容是通过flashprogram接口烧写到我们的flash区间中去的。

flashread是用来读取flash数据的接口,flasherase是用来对flash sector片擦的接口。

flashchiperase是用来对整个芯片的flash进行擦除的接口,flashchecksum是用来加速验证的接口

下面我们介绍一下如何在CDK中去创建一个flash工程,打开CDK,并且创建完一个workspace以后,点击project中的new soc project

在project type处我们需要选择flash选项。

然后我们在ram areas处去填写芯片中的ram地址,因为我们整个flash工程是始终运行在我们的目标端的ram空间中,配置好后点击ok即可

这样就完成了一个flash工程的创建

参考视频:

https://www.bilibili.com/video/BV1gA411K7Qr?p=17&vd_source=77c874a500ef21df351103560dada737

猜你喜欢

转载自blog.csdn.net/qq_42233059/article/details/134896126