5.4 芯片SDK开发:算法工程的调试和使用|学习笔记

简介: 快速学习5.4 芯片SDK开发:算法工程的调试和使用

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

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


5.4 芯片SDK开发:算法工程的调试和使用

 

主要内容

一、操作

二、调试

三、发布

 

上节课是关于算法工程的二次开发的一些基本要领,本节课是关于算法工程的调试和使用。

 

一、操作

有一个开发完成的算法工程,进行调试。配置算法工程的编译选项目的是保证他是O0编,即不优化得到更准确的调试精度。

image.png

择 build 或 rebuild 算法工程

image.png

将 硬件CD link 连接开发板,并连接至 SDK 中,选择divide tab连接方式为 ICE 并单击 seeing。

image.png

确定开发板已连接,且开发板型号与算法工程型号相匹配。

image.png

点击调试按钮,开始调试,算法工程已经进入算法的 main 函数。

 

二 、调试

image.png为了更好的调试算法,下面首先介绍一下算法工程如何与之前所介绍

的接口进行配合,进而实现烧写。

1.框架介绍

算法配置的核心是 do while 的循环,通过g_ func  全局变量控制每次进入循环的入口。入口即上次课程所进行的二次开发的接口。

image.png

对于 flash program ,flash read 等需要参数的端口,他们带烧写的数据所对应的都是 g_rw buffer 数据空间,需要进行操作的 flash地址是 g_dst address的全局变量。G_ length是需要操作的目标地址的宽度或者是buffer的宽度。SDK 通过控制一些全局变量,调用真正的接口,去实现真正的操作。

2.以烧写目标为例

IDE SDK 设置带烧写的目标地址:例如将全局变量的地址设置为 flash

地址0x0

image.png

(1)将镜像文件中需要烧写到目标地址的数据下载到 g_rw buffer  中。

(2)将 g_rw buffer 的长度设置为全局变量。

(3)关机键是将 g_func 设置成 program 对应的1。

(4)运行。程序会进入switch case语句中调用 flash program 逻辑,从而实现 buffer 点的数据烧写到具体的 flash 地址的目的。

程序不会一直运行,有 bkp labell 函数,它是一个汇编指令,执行了一个软断点,程序执行到此会停止。程序会始终停在这里,完成了一次flash操作。

image.png

这是CDK使用算法的控制逻辑实现烧写的目的。此控制逻辑也可以通过调试的手段模拟出来

3.调试 g_program 函数的正确性。

(1)将 g_func 值配置为1,将其拖动至窗口中修改g_func值为1

image.png

(2)修改目标地址,将 g_dst address 拖动至窗口中将其改写为0地址。

(3)验证目标地址长度,将 G_ length 拖动至窗口中,因为目的是验证长度,所以可以烧写一个较少的字节,即烧写一个 word 去验证其正确性。

(4)希望数组中的数据进行更新,需要设置g_rw buffer的值

首先查看g_rw buffer 的地址,可以看到地址在0x20000598的位置

image.png

地址中里面的内容目前是全0,将其地址前四个字节改写成需要烧写的值。

image.png

这时所有参数的设置全部完成,运行程序发现程序始终停在 bkp labell函数,无法运行到地址。

image.png

将 pc 的值直接设置在 return 寄存器中。pc的值将不指向断点指令。在 RV 的 CPU 中, ra 表示 return address,将 return address的值复制给 pc。在刷新后,程序就会在入口处。

image.png

在程序 flash program 入口处设置一个断点。做完这些后重新运行程序,程序就会按照预期运行到所做的二次开发逻辑中。程序的目标地址是设置的0,buffer地址是g_rw buffer 的地址,数据长度是之前设计的四个字节。这样之前写的逻辑就会被执行,就是将buffer中的一个字节拷贝到0x0开始的目标内存中去,可以通过内存看0x0烧写地址是否正确,0x0位置上显示我们烧写的目标地址,就说明我们的逻辑是成功的,同理可以通过更新改变 g_ func 的值来验证函数逻辑是否正确。完成了flash接口的验证。

调试完成以后,在程序配置窗口 complete  optimitation窗口中编译选项调整成o2,整个flash运行效率会提升。重新完成flash工程的编译,这样flash就可以完成发布。

 

三、发布

image.png

点击 open containing Folder

image.png

找到obj目录,找到对应的.alf文件就是flash算法文件,该文件可以用于后续学习的芯片SDK中。

image.png

相关文章
|
3月前
|
数据采集 开发工具 Python
海康威视工业相机SDK+Python+PyQt开发数据采集系统(支持软件触发、编码器触发)
该系统基于海康威视工业相机SDK,使用Python与PyQt开发,支持Gige与USB相机设备的搜索及双相机同时显示。系统提供软件触发与编码器触发模式,并可在数据采集过程中实时保存图像。此外,用户可以调节曝光时间和增益,并进行信息输入,这些信息将被保存至配置文件以便下次自动加载。参数调节与实时预览等功能进一步增强了系统的实用性。
178 1
|
3月前
|
数据可视化 API 开发工具
影创SDK☀️三、工程默认配置,及基础测试建议
影创SDK☀️三、工程默认配置,及基础测试建议
|
3月前
|
存储 监控 开发工具
Django 后端架构开发:手机与邮箱验证码接入、腾讯云短信SDK和网易邮箱
Django 后端架构开发:手机与邮箱验证码接入、腾讯云短信SDK和网易邮箱
62 0
|
4月前
|
NoSQL 开发工具 数据库
开发与运维测试问题之应用启动报 Can not load this fake sdk class 的异常如何解决
开发与运维测试问题之应用启动报 Can not load this fake sdk class 的异常如何解决
|
6月前
|
开发工具 CDN 容器
基于Html+腾讯云播SDK开发的m3u8播放器
周末业余时间在家无事,学习了一下腾讯的云播放sdk,并制作了一个小demo(m3u8播放器),该在线工具是基于腾讯的云播sdk开发的,云播sdk非常牛,可以支持多种播放格式。
234 1
|
5月前
|
API 开发工具
抖音sdk,抖音开发api接口
抖音sdk,抖音开发api接口
|
6月前
|
存储 测试技术 开发工具
创建制作SDK的静态库工程
创建制作SDK的静态库工程
44 1
|
6月前
|
机器学习/深度学习 文字识别 开发工具
视觉智能平台常见问题之sdk调试报401错如何解决
视觉智能平台是利用机器学习和图像处理技术,提供图像识别、视频分析等智能视觉服务的平台;本合集针对该平台在使用中遇到的常见问题进行了收集和解答,以帮助开发者和企业用户在整合和部署视觉智能解决方案时,能够更快地定位问题并找到有效的解决策略。
视觉智能平台常见问题之sdk调试报401错如何解决
|
6月前
|
Java 开发工具 Maven
Android SDK开发的那些事(1),已整理成文档
Android SDK开发的那些事(1),已整理成文档
|
6月前
|
机器学习/深度学习 人工智能 自然语言处理
【EMNLP 2023】面向Stable Diffusion的自动Prompt工程算法BeautifulPrompt
近日,阿里云人工智能平台PAI与华南理工大学朱金辉教授团队合作在自然语言处理顶级会议EMNLP2023上发表了BeautifulPrompt的深度生成模型,可以从简单的图片描述中生成高质量的提示词,从而使文生图模型能够生成更美观的图像。BeautifulPrompt通过对低质量和高质量的提示进行微调,并进一步提出了一种基于强化学习和视觉信号反馈的技术,以最大化生成提示的奖励值
下一篇
无影云桌面