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

相关文章
|
25天前
|
人工智能 编解码 算法
DeepSeek加持的通义灵码2.0 AI程序员实战案例:助力嵌入式开发中的算法生成革新
本文介绍了通义灵码2.0 AI程序员在嵌入式开发中的实战应用。通过安装VS Code插件并登录阿里云账号,用户可切换至DeepSeek V3模型,利用其强大的代码生成能力。实战案例中,AI程序员根据自然语言描述快速生成了C语言的base64编解码算法,包括源代码、头文件、测试代码和CMake编译脚本。即使在编译错误和需求迭代的情况下,AI程序员也能迅速分析问题并修复代码,最终成功实现功能。作者认为,通义灵码2.0显著提升了开发效率,打破了编程语言限制,是AI编程从辅助工具向工程级协同开发转变的重要标志,值得开发者广泛使用。
7944 68
DeepSeek加持的通义灵码2.0 AI程序员实战案例:助力嵌入式开发中的算法生成革新
|
20天前
|
人工智能 编解码 算法
使用 PAI-DSW x Free Prompt Editing图像编辑算法,开发个人AIGC绘图小助理
使用 PAI-DSW x Free Prompt Editing图像编辑算法,开发个人AIGC绘图小助理
|
3月前
|
机器学习/深度学习 前端开发 算法
婚恋交友系统平台 相亲交友平台系统 婚恋交友系统APP 婚恋系统源码 婚恋交友平台开发流程 婚恋交友系统架构设计 婚恋交友系统前端/后端开发 婚恋交友系统匹配推荐算法优化
婚恋交友系统平台通过线上互动帮助单身男女找到合适伴侣,提供用户注册、个人资料填写、匹配推荐、实时聊天、社区互动等功能。开发流程包括需求分析、技术选型、系统架构设计、功能实现、测试优化和上线运维。匹配推荐算法优化是核心,通过用户行为数据分析和机器学习提高匹配准确性。
243 3
|
4月前
|
机器学习/深度学习 算法 数据挖掘
C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出
本文探讨了C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出。文章还介绍了C语言在知名机器学习库中的作用,以及与Python等语言结合使用的案例,展望了其未来发展的挑战与机遇。
97 1
|
4月前
|
算法 测试技术 开发者
在Python开发中,性能优化和代码审查至关重要。性能优化通过改进代码结构和算法提高程序运行速度,减少资源消耗
在Python开发中,性能优化和代码审查至关重要。性能优化通过改进代码结构和算法提高程序运行速度,减少资源消耗;代码审查通过检查源代码发现潜在问题,提高代码质量和团队协作效率。本文介绍了一些实用的技巧和工具,帮助开发者提升开发效率。
76 3
|
7月前
|
算法 NoSQL 中间件
go语言后端开发学习(六) ——基于雪花算法生成用户ID
本文介绍了分布式ID生成中的Snowflake(雪花)算法。为解决用户ID安全性与唯一性问题,Snowflake算法生成的ID具备全局唯一性、递增性、高可用性和高性能性等特点。64位ID由符号位(固定为0)、41位时间戳、10位标识位(含数据中心与机器ID)及12位序列号组成。面对ID重复风险,可通过预分配、动态或统一分配标识位解决。Go语言实现示例展示了如何使用第三方包`sonyflake`生成ID,确保不同节点产生的ID始终唯一。
190 0
go语言后端开发学习(六) ——基于雪花算法生成用户ID
|
7月前
|
数据采集 前端开发 算法
基于朴素贝叶斯算法的新闻类型预测,django框架开发,前端bootstrap,有爬虫有数据库
本文介绍了一个基于Django框架和朴素贝叶斯算法开发的新闻类型预测系统,该系统具备用户登录注册、后台管理、数据展示、新闻分类分布分析、新闻数量排名和新闻标题预测等功能,旨在提高新闻处理效率和个性化推荐服务。
|
9月前
|
机器学习/深度学习 算法 BI
机器学习笔记(一) 感知机算法 之 原理篇
机器学习笔记(一) 感知机算法 之 原理篇
|
9月前
|
算法 Java API
记录我第一次在Android开发图像处理算法的经历
记录我第一次在Android开发图像处理算法的经历
50 1
|
10月前
|
人工智能 算法 C++
c++算法学习笔记 (17) 质数
c++算法学习笔记 (17) 质数

热门文章

最新文章