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

相关文章
|
4月前
|
开发工具 Android开发
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
649 11
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
|
4月前
|
算法 安全 数据可视化
基于多目标鲸鱼优化算法(NSWOA)求解地铁隧道竖向位移和成本的双目标求解(以铁道科学报与工程文章为例)研究(Matlab代码实现)
基于多目标鲸鱼优化算法(NSWOA)求解地铁隧道竖向位移和成本的双目标求解(以铁道科学报与工程文章为例)研究(Matlab代码实现)
100 0
|
11月前
|
前端开发 安全 开发工具
【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
737 90
【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
8月前
|
监控 算法 数据处理
基于 C++ 的 KD 树算法在监控局域网屏幕中的理论剖析与工程实践研究
本文探讨了KD树在局域网屏幕监控中的应用,通过C++实现其构建与查询功能,显著提升多维数据处理效率。KD树作为一种二叉空间划分结构,适用于屏幕图像特征匹配、异常画面检测及数据压缩传输优化等场景。相比传统方法,基于KD树的方案检索效率提升2-3个数量级,但高维数据退化和动态更新等问题仍需进一步研究。未来可通过融合其他数据结构、引入深度学习及开发增量式更新算法等方式优化性能。
218 17
|
8月前
|
人工智能 自然语言处理 开发工具
HarmonyOS NEXT~鸿蒙开发能力:HarmonyOS SDK AI 全解析
本文深入解析HarmonyOS SDK中的AI功能集,涵盖分布式AI引擎、核心组件(NLP、计算机视觉等)及智能决策能力。通过代码示例与开发实践指南,帮助开发者掌握环境配置、性能调优及多场景应用(智能家居、移动办公等)。同时探讨性能优化策略与未来演进方向,助力构建高效分布式智能应用。
971 9
|
7月前
|
存储 机器学习/深度学习 监控
公司电脑上网监控中滑动窗口算法的理论构建与工程实现
本文提出一种基于滑动窗口算法的实时网络流量监控框架,旨在强化企业信息安全防护体系。系统采用分层架构设计,包含数据采集、处理与分析决策三大模块,通过 Java 实现核心功能。利用滑动窗口技术动态分析流量模式,结合阈值检测与机器学习模型识别异常行为。实验表明,该方案在保证高检测准确率的同时支持大规模并发处理,为企业数字化转型提供可靠保障。
182 0
|
10月前
|
存储 开发工具 开发者
揭秘 Microsoft.Docker.SDK:让容器开发更轻松的强大工具揭秘
随着云计算和容器技术的快速发展,`Docker` 已经成为容器化技术的事实标准。`Microsoft` 作为 `Docker` 的主要支持者和参与者,推出了 `Microsoft.Docker.SDK`,旨在帮助开发者更轻松地进行容器开发。本文将深入揭秘 Microsoft.Docker.SDK 的功能、使用方法以及它在容器开发中的应用。
313 13
|
11月前
|
前端开发 JavaScript 开发工具
【04】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-正确安装鸿蒙SDK-结构目录介绍-路由介绍-帧动画(ohos.animator)书写介绍-能够正常使用依赖库等-ArkUI基础组件介绍-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
【04】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-正确安装鸿蒙SDK-结构目录介绍-路由介绍-帧动画(ohos.animator)书写介绍-能够正常使用依赖库等-ArkUI基础组件介绍-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
768 5
【04】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-正确安装鸿蒙SDK-结构目录介绍-路由介绍-帧动画(ohos.animator)书写介绍-能够正常使用依赖库等-ArkUI基础组件介绍-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
|
11月前
|
前端开发 Java Shell
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
788 20
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
API 开发工具 Android开发
【01】完整开发即构美颜sdk的uni官方uts插件—让所有开发者可以直接使用即构美颜sdk的能力-优雅草卓伊凡
【01】完整开发即构美颜sdk的uni官方uts插件—让所有开发者可以直接使用即构美颜sdk的能力-优雅草卓伊凡
531 23
【01】完整开发即构美颜sdk的uni官方uts插件—让所有开发者可以直接使用即构美颜sdk的能力-优雅草卓伊凡

热门文章

最新文章