开发者社区> 问答> 正文

如何创建一个Flash 算法文件?

已解决

如何创建一个Flash 算法文件?

展开
收起
詹姆斯邦德00 2022-07-04 15:41:36 620 0
1 条回答
写回答
取消 提交回答
  • 推荐回答

    1、配置算法初始信息

    要在CDK 中制作一个特定芯片的方案,需要通过New SOC Project 创建一个Flash 类型的CDK 工程。

    image.png

    此时Project Type 选为Flash,并在RAM1 中填写SmartL 的RAM 区域。CPU 和对应SDK 的CPU 要完全一致。

    完成工程创建以后,工程视图显示内容如下:

    image.png

    FlashDev.c 文件用来对算法基本信息进行描述。

    image.png

    将默认的内容修改为SmartL 硬件信息相匹配即可。

    2、实现算法接口

    Driver.c 文件用来实现算法逻辑,针对具体的硬件信息,实现对应的接口。

    image.png

    3、调试算法逻辑

    main.c 文件是算法工程的主控逻辑,main 函数完成此功能。

    image.png

    CDK 通过下载此算法工程到芯片RAM 的g_rwBuffer[]数组中,然后通过控制g_func,g_dstAddress,g_length,g_checksum 这些全局变量,实现对特定Flash 器件的编程功能。这里需要调试算法文件,就是模拟整个烧写的过程,将每个函数调试通过即可。

    为了能够更方便的调试算法文件,右击算法工程,在Compiler 配置中,修改Optimization修改为-O0 ,然后再次编译算法工程。

    image.png

    双击工程视图的算法工程节点,设置为active project,然后点击调试按钮,启动调试,运行到main 函数以后,全速运行,发现算法文件停止在__bkpt_label 函数处。

    image.png

    然后,我们这里根据调试需求,设置相应的全局变量,进行验证。

    例如,这里我们调试flashProgram 接口的正确性,首先在CDK Watch 界面将g_func设置为1,g_dstAddress 设置为要进行编程的Flash 区域的地址,g_length 设置为要烧写的数据长度,g_rwBuffer 设置为具体的烧写数据内容,一般来说,对于调试,g_length数据量不需要太长。

    image.png

    这里我们设置向Flash 区域0x0—0x8 区域烧写0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8 特征数据,来验证算法文件的正确性。CDK 中设置好这些变量以后,把PC 的值设置为当前lr(r15)的值,然后点击单步运行。

    image.png

    点击单步运行,程序运行在main.c 文件的flashProgram 入口,然后通过常规的调试手段,进入该函数内部,运行函数完成以后,验证是否正确烧写。

    按照上述手段,分别验证每个函数的正确性即可。

    4、配置算法文件到SDK 工程

    当完成整个算法文件调试以后,为了更好的提升算法文件的性能,这里我们将算法工程的Compiler 编译选项由-O0 修改为-O2 , 然后重新编译, 编译完成以后, 将SmartL_Flash 工程根路径下Obj/目录中生成的SmartL_Flash.elf 算法文件copy 到my_solution 工程使用的SmartL_Chip 组件的目录中去,CDK 工程视图右击菜单OpenContaining Folder 选项,可以直接打开工程、组件所在的目录。

    然后在工程视图SmartL_Chip 组件节点的配置窗口中,配置SmartL_Flash.elf 作为算法文件。

    【情况1】

    image.png

    对于没有使用芯片组件或者使用旧版本的组件的情况,则需要将SmartL_Flash.elf 拷贝到my_solution 工程根路径下(与my_solution.ckdproj 文件同目录),然后在工程配置的Flash Tab 的算法选择中,选择该组件即可。

    image.png

    以上内容摘自《平头哥剑池CDK快速上手指南》电子书,点击https://developer.aliyun.com/topic/download?id=1072可下载完成版

    2022-07-04 16:18:02
    赞同 展开评论 打赏
来源圈子
更多
收录在圈子:
作为全球云计算的领先者,阿里云为全球230万企业提供着云计算服务,服务范围覆盖200多个国家和地区。我们致力于为企业、政府等组织机构提供安全可靠的云计算服务,给用户带来极速愉悦的服务体验。
问答排行榜
最热
最新

相关电子书

更多
数据+算法定义新世界 立即下载
袋鼠云基于实时计算的反黄牛算法 立即下载
Alink:基于Apache Flink的算法平台 立即下载