丰富的线上&线下活动,深入探索云世界
做任务,得社区积分和周边
资深技术专家手把手带教
技术交流,直击现场
让创作激发创新
海量开发者使用工具、手册,免费下载
极速、全面、稳定、安全的开源镜像
开发手册、白皮书、案例集等实战精华
热门
芯片开放社区(Open Chip Community 简称OCC),是平头哥芯片基础设施的云端载体,提供开发中心、创芯空间、技术部落等互动版块,汇聚海量应用资源,助力芯片合作伙伴构建软硬融合的芯片生态。面向芯片企业,OCC以应用驱动芯片精准定义、以全栈技术支撑芯片敏捷开发;面向开发者,OCC以芯片生态降低IoT开发门槛、以1520体系加速IoT产品落地。
1
回答
0
文章 技术小达人 2022-09-02 1213浏览量
二号异常也是最经常出现的异常,例如常见的错误有:
1.内存访问越界
2.线程栈溢出
3.野指针赋值
4.重复释放指针(free)
以上内容摘自《无需从0开发 1天上手智能语音离在线方案》电子书,点击https://developer.aliyun.com/topic/download?id=904可下载完整版
如下表所示,在 XT CPU 架构里,不同的 cpu 异常会有不同的异常号,我们往往需要通过异常号来判断可能出现的问题。
1.调试的时候 elf 文件 一定要和运行程序对应上,不然没法调试,使用一个错误的 elf 文件调试程序,会出现各种乱七八糟的现象。而且同一份代码,不同的编译器,不同 的主机编译出来的 elf 都可能不相同。所以保存好编译出来的 elf 相当重要。
2.对于一些代码运行在 flash 的芯片方案,GDB 调试的时候要注意转换,和在 ram 上 GDB 调试命令有一些不一样。
3.watch 只能 watch 到 cpu 的 内存更改行为,如果是外设(DMA 等)运行导致的 内存变化,不能被 watch 到
4.CKLink 连接开发板可能存在各种问题连接不上,要仔细检查,包括:开发板是否上电,芯片是否上电,芯片是否在运行,JTAG 排线是否插反等等。
你可以找一块开发板,按照下面步骤体验 GDB 调试过程: 1.下载并安装 DebugServer
2.GDB 连上 DebugServer
3.lo //灌入编译好的 elf
4.b main //打断点到 main 函数入口
5.c // 运行程序
6.如果顺利,这时程序应该自动停在 main 函数入口
7.n // 单步执行下一行程序,可以多执行几次
8.找几个全局变量, p 查看结果
大部分开发板上电都自动会运行程序,连上 DegbuServer 就会停止运行。
加载程序:load/lo
继续执行:c``ontinue/c
暂停运行:ctrl+c(使用c继续运行)
打印变量:print/p
设置断点:breakpoint/b
设置内存断点:watchpoint/watch
查看断点:info breakpoint/i b
使能断点:enable/en
禁止断点:disable/dis
查看栈信息:backtrace/bt
选择栈帧:frame/f
单步执行:next/n
单步执行进入函数:step/s
单步执行(汇编):nexti/ni
单步执行进入函数(汇编):stepi/si
完成当前函数:finish/fin
设施变量:set [variable] = [value]
查看内存:x /[n][f][u] [address]
CK GDB 是运行在 PC 上的 GDB 程序,通过仿真器和 JTAG 协议与开发板相连接,可以调试基于 CK CPU 的芯片。其中 DebugServer 为作为连接 GDB 和 CKLink 仿真器的桥梁和翻译官,一端通过网络与 GDB 连接,另一端通过 USB 线与仿真器连接。
1.建立 GDB 连接
2.启动 GDB 及配置
3.开始调试
GDB 是 C/C++ 程序员的程序调试利器,很多问题使用 GDB 来调试都可以大大提高效率。GDB 调试在查看变量、跟踪函数跳转流程、查看内存内容、查看线程栈等方面都非常方便。是深入理解程序运行细节最有效的方式之一。
同时,GDB 对于学习了解 C 语言代码、全局变量、栈、堆等内存区域的分布也有一定的帮助。
yoc 中,串口命令代码模块为 cli,其代码头文件为 cli.h。我们需要包含这个头文件。
1.我们需要定义一个被 cli 回调的函数,当串口输入这个命令时就会触发这个回调 cmd_mycmd_ctrl_func
2.我们需要定义一个命令字符串,用于 cli 比较用于输入字符串来触发回调, my_cmd
3.我们需要定义一个 help 信息,用于 串口输入 help 命令时打印出来,my_cmd test
4.当然最后我们在系统初始化时把这个命令注册到cli里面去,cli_reg_cmd_my_cmd 这样我们就可以拥有自己的串口调试命令了,效果如下:
ifconfig 命令可以查看当前网络连接的状态,其中:
第一部分是 本机的网络状态,包括本机 mac 地址,本机 IP,网关地址、掩码、DNS Server 地址
第二部分是 连接的路由器信息,包括 wifi 的名称,mac 地址,连接的信道、信号质量
平头哥半导体官网: http://www.t-head.cn
芯片开放社区: http://occ.t-head.cn
玄铁CPU
SoC平台
IoT 芯片
IoT 应用