本帖最后由 未来开发者 于 2022-3-17 10:59 编辑
在收到许多工程师对于剑池CDK的问题反馈后,我们发现许多问题具有一定共性,整理成册后可以供其他开发者借鉴学习。因此,我们将目前已收录的问题整理为一份Q&A资料,供大家学习查阅。
如果各位工程师遇到了本帖中不包含的问题,请通过工单的形式向我们寻求技术支持,工单地址:https://occ.t-head.cn/people/workorder-submit
欢迎在沟通解决问题后,将问题和解决方法补充在本帖下方以帮助更多开发者。
Q1:剑池CDK如何在工程目录下搜索关键字?
A1:可以点击CDK工具栏的搜索按钮搜索,如图:
Q2:剑池CDK无法启动,或启动后闪退,如何解决?
A2:CDK无法启动(或启动后闪退),可能是由如下原因导致:
- CDK安装路径不能有中文
- 检查路径:%appdata%(可以通过cmd下输入命令:cd %appdata%),该路径中不能含有中文;如果有中文,更改Windows账号为英文账号,在英文账户里安装使用CDK
- 请将CDK安装在非C盘;如果一定要安装在C盘,建议安装在%appdata%目录下
- 如若不是上述原因,可以尝试清空 %appdata%/cdk 目录中的内容
- 此外,一些杀毒软件(例如 360)也可能会造成闪退。请关闭杀毒软件后再次尝试
Q3:剑池CDK如何生成map文件?剑池CDK如何查看编译后内存占用
A3:按照如下方法在CDK生成map文件:
- 在工程上点击右键,选择第一个选项:“Options for ...", 打开工程选项窗口
- 选择标签【Output【,勾选【Listing】下面的【Linker Map Listing: ./Lst/*.map】
- 重新编译
- 编译完成后,打开工程文件夹,在【Lst】目录下可以看到一个.map文件
- 打开.map文件,拖到最后,可以看到编译image占用内存情况,map文件也包含了每个库的内存占用情况。
Q4:剑池CDK如何查看函数定义?函数定义没法跳转该怎么办?
A4:在CDK中,右键函数,选择“goto declaration”可以查看函数定义。若点击后无法跳转,一般情况下是没有自动对工程进行解析,可以手动进行:
- 点击菜单栏 Project -> parse all project,等待Project View中的进度条结束
- 再次通过“goto declaration”功能
然后即可正常进行函数的查看。
Q5:剑池CDK如何更改编译选项?
A5:1.右击项目名称 -> 选择“Option for …"
2.点击【Compiler】标签,在【Other flags】一栏可以配置编译选项
Q6:剑池CDK版本号如何查看?
A6:在CDK工具栏选择【Help】 -> 【About...】,得到CDK的版本号
Q7:剑池CDK如何查看工具链版本?
A7:在CDK工具栏选择【Help】 -> 【About...】,在弹出的窗口中选择【Tools】,可以看到CDK的工具链版本
Q8:剑池CDK如何使用自定义脚本执行命令?
A8:右击工程,选择【options for xxx】 -> 【User】,在Run #1栏中可以根据需要填入执行命令或者脚本。
- Run User Programs Before Completion of a C/C++ File: CDK会在编译每个C/C++文件的之前执行这里输入的命令;
- Run User Programs Before Build/Rebuild:CDK会在每次Build/Rebuild之前执行输入的命令;
- Run User Programs Afrter Build/Rebuild:CDK会在每次Build/Rebuild之后执行输入的命令;
Q9:烧录时如何配置Flash脚本
A9:配置CDK烧录时的Flash脚本步骤如下:
- 选择菜单栏【Flash】->【Flash Management】,打开Flash算法管理页面
- 点击【Add】,添加工程的Flash算法文件;Flash算法文件(文件名称类似于:xxxFlash.elf)一般位于工程根目录或script目录下,可尝试在目录中搜索。
- 右键工程->选择【Options for xxx】,打开工程配置页面->选择【Flash】标签->在页面下方点击【Add】,将上一步配置的Flash算法文件添加到工程中。
Q10:上传组件提示“组件名已经其他账户xxx”该怎么办?
A10:原因:组件名是稀缺的,如果一个组件名被某个账号使用,那么其他账户将无权限使用该组件名。
解决方式:修改本地组件名,重新上传。
Q11:剑池CDK烧录失败是什么原因?
A11:首先检查是否为CKLink/JTAG连接问题,可以按照如下方法检查:
- 重新插拔JTAG线,重启设备
- 检查CKLink线是否连接错,是否松动
- 检查开发板是否已经正常启动,没有出现异常或者进入低功耗模式
- 打开工具CskyDebugServer,检查CskyDebugServer是否可以连接
如果不是连接问题,要检查Flash脚本是否配置:
- 选择CDK工具栏'Flash'->'Configure Flash Tools…',确认是否配置Flash脚本(如下图):
- 如果要配置新的脚本文件,选择'Add',添加工程目录下的'.elf'文件。'.elf'文件一般位于工程根目录或script目录下,可尝试在目录中搜索
Q12:如何使用剑池CDK调试?
A12:点击CDK工具栏'Help'-> 选择“CDK Help‘,在弹出的用户手册中选择’调试‘,即可看到CDK的调试说明。如下图:
Q13:剑池CDK如何下载组件?
A13:CDK下载新组件的方法如下(CDK版本需要>= V2.8.1):
- 点击工具栏的【Home】按钮,进入【Welcome】界面:
- 点击【组件资源】,搜索要下载的组件,选择正确的版本,点击【下载并使用】
Q14:剑池CDK的帮助文档在哪里?
A14:第一次用CDK,建议先看一下CDK用户手册,了解一些CDK里面的基本操作;在菜单栏选择:Help->CDK Help;此外,也可以参考如下帮助信息:
Q15:在哪里下载剑池CDK?
A15:请按照以下步骤下载CDK:
- 登录平头哥芯片开放社区
- 点击开发中心 -> 集成开发环境 -> 剑池CDK -> 了解详情
- 在弹出的页面中,点击“资源下载”,即可下载最新版本CDK
Q16:剑池CDK如何配置大小端?
A16:CDK使用过程中,如果出现大小端相关错误,可能是由于大小端配置不对引起。按照以下方法配置大小端:
- 在工程上点击右键,选择第一个选项:【Options for ...】, 打开工程选项窗口
- 在【Target】标签栏,若勾选【Big Endian】即为选择大端;反之选择小端
Q17:剑池CDK如何打开FlashProgrammer?
A17:如果想通过剑池CDK打开Flash Programmer,需要在工程根目录下配置xxxxx.cdkflashconfig文件,该文件会配置Flash的烧录参数;关于不同烧录方式的介绍:
- 工具栏上的'Flash Download'按钮:使用默认烧录参数,烧录所有分区
- 使用Flash Programmer:通过读取xxxxx.cdkflashconfig文件,定制化烧录
Q18:剑池CDK出现编译错误:unexpected end of file,该怎么办?
A18:出现该问题的原因是工程配置路径过多或者路径长度太长,超过了Windows命令行处理的极限;
解决方法:
- 右键工程名 -> 【Options for xxxxx...】
- 点开【Compiler】标签,检查【Include】一栏,是否路径太多或者长度太长;减少路径数
- 检查其他标签,是否存在类似情况
Q19:剑池CDK报错:找不到组件,该怎么办?
A19:如果遇到如下图的CDK错误,可能是由于该组件配置错误,或者版本号不匹配:
解决方法:
- 在CDK中,右键单击工程的Pacakges目录->选择【Packages for xxxx】
- 在【Depends packages】一栏,检查该组件是否存在;若不存在,将该组件从【Available package list】列表中导入
- 检查版本号与路径下面版本号是否一致;若版本不一致,需要更改该组件下package.yaml文件,修改版本号与路径显示一致
Q20:剑池CDK调试时断点进不去,该怎么办?
A20:检查工程配置Compiler Tab中是否打开了优化选项。Os/O2有可能出现调试不准确的情况;Og会相对准确。请参考如下方法更改优化选项:
- 右键工程,选择第一项:【Options for xxxx】
- 点击【Compiler】标签,查看【Optimization】选项
Q21:剑池CDK如何设置代码优化选项?
A21:请参考如下步骤优化代码size:
- 右击工程 -> Options fox ..,打开工程配置窗口
- 点击【Compiler】标签,找到【Optimization】,可以配置优化选项。不同的选项介绍如下:
O0:不做任何优化
O1:在不影响编译速度的前提下,尽量优化代码大小和运行速度
O2:几乎执行所有优化,会牺牲编译速度
O3:和-O2相比,会尽全力提供程序运行速度,哪怕增加目标代码大小
Os: 在-O2基础上,会尽量降低目标代码的大小
Og:适用于调试
请根据您的需求,配置相应的优化选项。
Q22:剑池CDK如何提升编译速度?
A22:1.编译时选择【build】按钮,会只编译修改过的文件;不要选择【rebuild】,否则会重新编译整个工程
2.此外,通过菜单 Edit -> Configuration -> Build Settings,选中【Multi core build】,可以加快编译速度:
Q23:如何通过剑池CDK发布SDK?
A23:若要使用CDK发布SDK,请参考《平头哥剑池CDK快速上手指南》第六章:“如何将制作完成的SDK发布给其他开发者使用”:
- 登录OCC芯片开放社区
- 点击“开发中心” -> “资源下载” -> "电子书" -> "剑池CDK"
- 下载《平头哥剑池CDK快速上手指南》
- 参考第27页第六章:“如何将制作完成的SDK发布给其他开发者使用”
同时,也可以参考如下博文:如何向T-HEAD OCC发布芯片产品组件
Q24:剑池CDK如何包含math库?
A24:在CDK中使用math库,请按照如下步骤:
- 右击工程 -> 选择"Options for xxxx",打开工程选项
- 选择“Linker”标签,在“Link Flags”中增加选项“-lm”:
- 代码的头文件包含:#include "math.h"
Q25:剑池CDK如何变更组件?
A25:若要在CDK工程中变更组件,请参考如下步骤:
- 如果要添加组件,首先确保该组件已经下载。参考下面链接【相关问题查询】。
- 在工程中找到【Packages】,右击选择【Pacakges for xxxxx】
- 在弹出的Pacakges管理界面中,在【Available packages list】一栏列出了工程中所有已经下载的组件,【Depends pacakges】一栏列出工程当前依赖的组件
- 点击【>>】,【<<】变更组件,将正确的组件添加到【Depends pacakges】下:
- 点击【OK】,退出该界面。工程左边的Pacakges列表下就会显示更新后的组件
Q26:剑池CDK开发环境介绍
A26:剑池CDK是平头哥推出的一款IDE集成开发环境,以极简开发为理念,是专业为IoT应用开发打造的集成开发环境。它在不改变用户开发习惯的基础上,全面接入云端开发资源,结合 图形化的OSTracer、Profiling等调试分析工具,加速用户产品开发。
具体可参考OCC芯片开放社区-> 开发中心 -> 集成开发环境
Q27:剑池CDK支持哪些芯片?
A27:CDK目前主要支持玄铁处理器、RISC-V指令架构处理器的芯片研发,暂时还不支持Arm芯片的开发。Arm芯片可以使用Keil开发环境,也欢迎使用平头哥芯片并体验CDK开发环境!
Q28:剑池CDK如何二次开发flash烧写驱动?
A28:关于CDK中Flash算法文件的具体介绍,请参考《平头哥剑池CDK快速上手指南》:
- 进入OCC首页
- 点击页面顶端的【开发中心】 -> 【资源下载】,在页面左边找到【电子书】 -> 【剑池CDK】
- 点击下载《平头哥剑池CDK快速上手指南》-> 第四章:【如何创建一个Flash算法文件】
此外,您也可以观看CDK教学视频:链接,学习《5.2 芯片SDK开发:算法工程原理及创建》,《5.3 芯片SDK开发:算法工程的二次开发》,《5.4 芯片SDK开发:算法工程的调试和使用》
Q29:剑池CDK flash驱动是什么?
A29:Flash驱动(也成为Flash算法)是CDK/CDS中使用的客户二次开发的运行在设备RAM端的可执行程序,与CDK/CDS结合使用,用来将需要烧写到设备Flash区域的镜像文件烧写到设备Flash空间。Flash驱动可以通过二次开发,适配不同类型的Flash型号,具体二次开发方式,可以参考如下问题Q28.
Q30:剑池CDK输出的hex格式是哪种格式?
A30:CDK中生成的ihex格式,效果等同于使用命令行工具生成:csky-elfabiv2-objcopy -O ihex xx.elf xx.ihex
Q31:剑池CDK启动代码中的中断向量表为什么要 .align 10?
A31:在启动文件中类似:
section .vectors
.align 10
.globl
__Vectors
.type
__Vectors, @object
中断向量表基地址要和vbr寄存器匹配,vbr寄存器要求是1k对齐,所以要设置中断向量表的时候要 .align 10
Q32:汇编文件 .S .s的区别
A32:大写的S文件是默认要被预处理的文件,可以包含#开头的宏定义及宏展开,小写s文件只能包含汇编宏
Q33:剑池CDK如何查看预定义的宏?
A33:按照如下方法查看CDK中工具链预定义的宏:
打开CDK,菜单栏【Windows】->【Open Shell】,然后在命令行所在的目录创建一个空的c文件,例如 demo.c,命令行输入 {工具链名称} -E -dM demo.c
其中工具链名称是需要查看内置宏的工具链,可以是 csky-elf-gcc / csky-elfabiv2-gcc / riscv64-unknown-elf-gcc
Q34:剑池CDK怎么确保不会被链接器删除掉指定的section?
A34:使用方式为在链接脚本中:KEEP(*(.section_name))
比如
SECTIONS
.text : {
. = ALIGN(0x4) ;
KEEP(*startup.o(.vectors))
__stext = . ;
*(.text)
*(.text*)
*(.text.*)
此种情况下,*.startup.o匹配的o文件中名称为.vectors的section会无条件被链接器保留
Q35:剑池CDK如何显示被删除的section?
A35:在工程配置Linker Tab中的other flags输出:-Wl,--print-gc-sections
这样在编译输出output窗口中就会打印出被删除的section信息
Q36:-ffunction-sections, -fdata-sections是什么意思?
A36:在进行程序的链接,生成可执行镜像中,CDK是以section为最小的处理单元,只要一个section中某个符号(通常是全局变量、静态局部变量、函数等)被用到,则该符号所在整个section都会被链接进最终的可执行镜像中;
-ffunction-sctions表示在当前被编译的文件中,将每个函数作为独立的section来进行链接,-fdata-sections表示在当前被编译的文件中,将每个数据符号(全局变量、局部静态变量)作为独立的section来进行链接。
通过这种方式,配合工程配置->Linker Tab中的Enable garbage collection of unused input sections选项(勾选此选项),在链接过程中,程序没有使用到的函数、变量等符号,都不会出现在最终的镜像文件中,从而达到减少程序size的目的
Q37:剑池CDK如何添加外设寄存器?
A37:右击project下的某个目录 -> add a new file -> Chip File(.svc)->输入文件名
Add将加入外设名,比如uart,然后可以在外设名下添加register和编辑操作
Q38:剑池CDK如何查看工程预编译文件?
A38:右击工程,打开工程配置窗口Output Tab中,Preprocessor Listing选项勾选,然后编译工程,此时,每个c文件对应的i文件都保存在了工程根目录下面的Lst目录中;可以右击工程,点击Open Containing Folder直接打开工程根目录,然后打开Lst目录,进行具体查看
Q39:剑池CDK如何查看反汇编文件?
A39:右击工程 Options for "xxx"选项,打开工程配置窗口, Output Tab中勾选 Compiler Asm Listing: ./Lst/*.asm 选项,然后编译工程,此时,每个c文件对应的asm文件都保存在了工程根目录下面的Lst目录中;可以右击工程,点击Open Containing Folder直接打开工程根目录,然后打开Lst目录,进行具体查看;最终可执行镜像对应的asm文件,可以在编译结束后,右击工程,选择 Open Disassemble File
Q40:剑池CDK怎么将bin文件链接到elf中?
A40:在CDK中点击菜单栏 Windows->Open Shell,打开命令行工具,cd到包含二进制文件所在的目录中,执行命令:
链接器名称 -r -bbinary xxx.jpeg -o xxx.o
其中链接器名称根据不同的CPU而不同,500,600系列CPU使用 csky-elf-ld,800系列CPU是csky-elfabiv2-ld,900系列CPU是riscv64-unknown-elf-ld
得到这个bin文件对应的.o文件
再使用对应readelf工具输入以下命令进行查看:
readelf工具名 -s xxx.o
其中工具名称根据不同的CPU而不同,500,600系列CPU使用 csky-elf-readelf,800系列CPU是csky-elfabiv2-readelf,900系列CPU是riscv64-unknown-elf-readelf
该命令输出结果类似于以下:
通常是以下这样的:其中006a6cf3表示这个bin的大大小。
2: 00000000 0 NOTYPE GLOBAL DEFAULT 1 _binary_xxx_start
3: 006a6cf3 0 NOTYPE GLOBAL DEFAULT ABS _binary_xxx_size
4: 006a6cf3 0 NOTYPE GLOBAL DEFAULT 1 _binary_xxx_end
这样,在工程编程中,这个二进制的数据就可以以数组的方式进行访问了,其中char _binary_xxx_start为数组名,即在程序中可以声明为 unsigned char _binary_xxx_start[],其中数组的size为 _binary_xxx_size
Q41:怎样打开剑池CDK的命令行?
A41:以下方法都可以打开CDK命令行:
- CDK菜单栏 Windows -> Open Shell
- 工程节点右击 菜单栏选择 Open Shell
- 代码编辑窗口,每个打开的源代码的tab,右击,选择 Open Shell
Q42:剑池CDK工具链版本和使用的C库版本不一致,可以混合使用吗?
A42:C库是工具链内置库,每个版本工具链会自带与工具链版本匹配的C库
Q43:剑池CDK是否支持Linux版本?
A43:暂不支持Linux开发环境
Q44:剑池CDK怎样在调试状态下将已有文件写入内存?
A44:调试状态下,打开Debugger Pane中的Command视图,使用restore命令,具体命令使用方法可以直接点击command视图中的Help按钮查看
Q45:剑池CDK调试找不到相应的视图怎么办?
A45:在Debug菜单或工具条显示视图按钮列表中,找到需要使用的视图,点击,则会主动显示该视图,如果这种方式不行,则可以点击菜单栏【windows】->【Reset Views to Default】,将全部视图重新设置在初始位置;
如果仍然不能正常显示,则可以点击菜单栏 【Help】->【Open Log Containing Folder】,然后关闭CDK,清空打开的目录中的文件,重新打开CDK
Q46:剑池CDK如何修改工程的CPU型号?
A46:右键芯片类型组件 -> 【Options for xxx】 -> 选择【Info】标签,即可配置工程的CPU型号;
Q47:剑池CDK编译错误:undefined reference to xxx?
A47:如果在编译时提示“undefined reference to xxx”,请按照如下步骤分析:
1、该函数是否有定义?
- 如果没有定义和实现,需要您首先定义好该函数并添加到工程中;
* 某些库函数(例如fputc)的实现依赖于硬件,所以编译器没有实现,也需要您自己实现
2、该函数是否能在工程中看到/搜索到?
- 如果只是把文件copy到工程目录,即使reload all project,这个文件对工程来说仍然可能是不可见的。您需要通过工程视图右键【Add an Exsiting File】或者【Add Source Folder】,确保函数定义在工程中可以看到;
3、查看相关函数是否被宏定义包裹,如果是,需要对相应的宏进行定义。
4、如果该函数定义在某个外部库中:
- 请确认外部库是否被包含在链接参数中?通过右键工程->选择【Options for xxx】进入工程配置页面->点击【Linker】标签->找到【Library Configuration】,检查是否包含了这个库;
- 请确认是否在代码中,包含了这个函数声明所在的头文件?
5、另外也可能时链接时,没有把函数的符号链接进来。
* 右键工程->选择【Options for xxx】,打开工程配置页面-> 选择【Linker】标签-> 在【Link Type】选择“whole-archive”或者“start-group”
Q48:剑池CDK如何不停止调试实时查看变量的值?
A48:剑池CDK只能停止调试后查看/修改变量,不支持实时查看变量值
Q49:剑池CDK调试时没有显示源代码是什么原因?
A49:请尝试以下步骤:
- 确认工程配置界面的【Compiler】标签中的【Debug Level】是否设置为【-g】?如果不是,修改此选项为-g(即打开调试信息输出),然后停止调试,重新编译工程即可;
- 检查程序是否运行在预期的地址空间范围,即当前PC是否还在可执行程序的运行空间内(是否“跑飞了”);如果PC的位置不是合理位置,需要查看PC运行到不合理的具体原因
Q50:剑池CDK如何不让代码参与编译?
A50:在CDK的工程视图中,所有能看到的文件都会被CDK编译;如果不想让某个文件被编译,需要先将该文件移出工程文件夹,然后点击CDK菜单栏【Project】->【Reload All Projects】,即可刷新工程视图。确保这个文件在工程视图中看不见,重新编译就可以了。
Q51:剑池CDK如何指定编译镜像文件的名称?
A51:右键工程名->选择【Options for xxx】,打开工程配置->选择【Output】标签,在【Name of output】一栏可以修改编译输出的文件名,$(ProjectName)表示当前工程的名称,您可以根据需要替换成自定义文件名。
Q52:剑池CDK调试配置的soft reset和hard reset有哪些区别?
A52:1.Soft Reset 软件复位,即通过软件的方式,从调试通路,向CPU硬件调试模块中的某个寄存器写入某个特征值,触发硬件的行为(该行为由硬件定义),该特征值在Soft Reset下拉菜单后的输入框中填写;
2.Hard Reset 硬件复位,即使能ICE与CPU连接的5线JTAG中的NRESET信号;
Q53:剑池CDK调试gdb.init脚本支持哪些命令?
A53:gdb.init脚本是在正确连接到调试目标以后,执行的脚本,支持的帮助信息可以按照如下方式查看:右键工程名->选择【Options for xxx】,打开工程配置->选择【Debug】标签->点击右下角【Help】按钮,查看弹出的帮助文档
Q54:剑池CDK如何查看内部变量?
A54:CDK向用户提供了一些程序内部变量,用于提升嵌入式程序的灵活性;
通过以下方法查看CDK内部变量:
- 点击菜单栏【Help】 -> 【CDK Help】
- 在帮助页面中搜索【内部变量】,打开内部变量主题,即可看到所有CDK支持的内部变量。除说明文档外,还支持以下变量:
$(SolutionName):方案名称
$(ChipName):使用的芯片组件名
$(BoardName):使用的开发板组件名称;
$PATH_xxx:对应组件的真实磁盘路径,xxx为对应组件名称
Q55:剑池CDK编译错误:No such file or directory?
A55:如果使用CDK编译时遇到找不到文件的错误(提示信息为:error: xxxxx: No such file or directory),请按照如下方法排查:
1.检查如下路径,确认路径名不能包含空格或者中文
- CDK工程路径
- 在Windows的文件浏览窗口中输入:%appdata%
2.在工程视图下,检查缺少的文件是否存在,是否可以打开并编辑:
- 如果是原始SDK的文件缺少,可能是下载出错,请尝试重新下载;
- 如果是自己创建的文件,请确保该文件可以在左边工程列表中看到并可以打开编辑。可以通过右键 -> 【Add Source Folder】手动添加
3.如果该文件是头文件(.h),并且在工程视图可以看到,检查其所在路径是否被包括在编译选项中:
- 右键该文件所在的组件名 -> 选择【Options for xxx】-> 打开【Compiler】标签 -> 检查 “Global Config” 的【Include】配置项是否配置了该文件
Q56:剑池CDK编译错误: No rule to make target xxx?
A56:CDK编译时遇到错误:No rule to make target xxx,该错误多由于package.yaml里面引用了不存在的文件,检查该文件是否定义:
- 右键工程 -> 【Open Solution Config File】
- 在弹出的package.yaml文件中检查(主要是include和source_file部分),是否引用了不存在的文件,该文件是否能在工程视图中看到。
- 此外,也可以先Clean Project之后,再次尝试重新编译
Q57:剑池CDK烧录错误:Can’t find output file xxx.elf?
A57:如果CDK烧录/调试时,遇到错误找不到elf文件,请按照如下方法排查:
- 右击工程 -> 【Options fox ....】,进入工程配置页面
- 点击【Output】标签,勾选【Create Executable...】选项:
- 候选后重新烧录,CDK会自动生成elf文件
- 若依然找不到,说明CDK编译出错,请检查CDK的编译输出窗口
Q58:剑池CDK链接错误:link script not found?
A58:若使用CDK时遇到错误:link script not found,请按照如下方法排查:
- 右击工程 -> 【Options fox ....】,进入工程配置页面
- 点击【Linker】标签,检查配置的【Link File】是否存在于工程目录下。
- 如果不存在,在开发板组件右击-> 【Options fox ....】->进入【Linker】标签,检查是否有【Link File】配置;
- 如果工程和开发板都没有配置,需要手动将该链接文件配置到开发板或工程配置页面下。
Q59:剑池CDK烧录失败,FlashProgrammer可以正常使用
A59:如果CDK烧录结果和Flash Programmer烧录结果不一致(一个可以烧录,另外一个不能烧录),按照如下步骤依次检查:
- 先确认CDK烧写过程和FlashProgrammer的烧写配置是相同的(Erase Type、Connect Type)
- 确认两者使用的脚本,FlashProgrammer中Pre-Script脚本和CDK中的工程配置-Flash Tab中Flash Init File文件内容一致;
- FlashProgrammer 中 Advance-> LocalJTAG->Use DDC 取消勾选;CDK中Debug Tab->ICE Settings-> Use DDC取消勾选;
- 确认FlashProgrammer使用的Program Algorithm File与CDK中使用的算法文件是一致的;
- 如果上述检查完毕,仍然没有解决,请转人工。
Q60:剑池CDK下载时找不到git,该怎么办?
A60:CDK可以支持使用git工具用于代码的版本管理。如果需要使用git,请按照如下方式配置:
- 从官网下载适用于Windows版本的git:[下载链接](https://git-scm.com/download/win)
- 下载完成后安装git,默认会安装在“C:\Program Files\Git\bin”目录下。
- 点击CDK菜单栏:【View】 -> 【Git Pane】,打开窗口的【Setting Tab】,配置Git的命令路径,用户名和邮箱信息:
- 如果打开【setting】时,看不到配置信息,点击右上角,将窗口最大化:
具体可参考CDK帮助文档:菜单栏【Help】->【CDK Help】,搜索【Git窗格】,查看更多使用信息。
Q61:剑池CDK如何下载应用示例?
A61:CDK下载应用示例的方法如下:
- 进入CDK,点击菜单栏的【Home】按钮(参考下图):
- 在弹出的【Welcome】窗口中,点击【新建工程】,会弹出所有CDK上线工程示例
- 找到感兴趣的工程,点击【创建工程】,即可下载示例代码。也可以在搜索栏中搜索工程关键词,从搜索结果中进行下载。
Q62:剑池CDK编译错误:Couldn't reserve space for cygwin's heap?
A62:如果CDK编译时遇到如下错误:Couldn't reserve space for cygwin's heap, Win32 error 0:
请按照如下方法解决:
- 点击CDK菜单栏【Windows】->【Open Shell】,然后进入CDK安装目录下的【CDK\CSKY\MinGW\bin】子目录;
- 输入命令:rebase.exe -b 0x50000000 msys-1.0.dll
- 如果问题仍然存在,可以尝试改变 -b 后面的数值
- 若依然无法解决,请尝试重启电脑修复问题;若重启后问题依然存在,参考网上解决方法:链接
Q63:剑池CDK是否支持苹果mac操作系统?
A63:CDK当前不支持MAC操作系统。
Q64:enable garbage collection of unused input sections含义?
A64:Enable garbage collection of unused input sections含义:在链接过程中,忽略程序没有使用到的段,不将它们链接到最终的可执行程序中;
Q65:剑池CDK如何新建一个组件?
A65:请参考OCC博文:YoC组件开发系列五: 如何新增一个YoC组件,了解如何创建一个新的组件。
Q66:剑池CDK老版本没法编译?
A66:大部分CDK工程在开发时,都是基于当前最新版本CDK,会依赖新版本CDK的功能,所以旧版本CDK可能没法使用呢。建议您永远使用最新版本的CDK进行开发,谢谢您的理解和支持。如果您有特殊需求,需要使用某个固定版本的CDK来开发,请提交工单告知我们,我们后台工作人员会帮您处理。
Q67:剑池CDK如何导入工程文件?
A67:可以按照如下方式导入一个已有的CDK工程:
1.如果没有工作空间,首先要导入工作空间
点击菜单栏【Project】-> 【Open Multi-Project Workspace】-> 导入已经存在的工作空间(后缀名为.cdkws)
2.已经导入工作空间之后,右键点击工作空间 -> 【Add an Existing Project】,可以导入已有的工程。
Q68:剑池CDK如何切换皮肤?
A68:您可以点击CDK菜单栏【Windows】 -> 【Global Themes】,选择您喜欢的皮肤
注意:除了【Classical】皮肤外,其他皮肤都会占用较多系统资源,可能导致运行速度慢;如果切换批复后发现运行卡顿,请使用【Classical】皮肤
Q69:剑池CDK使用起来为什么特别卡?
A69:DK使用卡顿, 可能是由于您使用了不同的CDK皮肤导致的。由于不同的CDK皮肤渲染时间不一样,在实际使用时可能会遇到某些皮肤使用较卡顿的情况。
建议您更换为【Classical】(经典皮肤)后再次尝试,更换方法如下:
点击CDK菜单栏【Windows】 -> 【Global Themes】-> 选择【Classical】
此外,也有可能是因为您的系统安装了杀毒软件(例如 360)导致,请关闭杀毒软件后使用。
Q70:错误: file's abi is conflict with current gdb?
A70:如果出现错误:“file's abi is conflict with current gdb”,多半是您的工程配置的Flash算法文件与当前CPU架构不匹配,请检查并确认您使用了正确的Flash算法文件。
Q71:错误:core file path does not exist?
A71:如果出现错误“core file path does not exist”,请参考如下方法解决:
- 右键工程,选择【Options for xxx】
- 打开项目设置页面,选择【Debug】标签
- 最后一行,不要勾选【Start with CDK core file】
Q72:剑池CDK如何使用serial pane?
A72:CDK支持两种串口打印工具:
1.Debug(print):虚拟串口打印,依赖于芯片的支持(有些内核芯片不支持,例如CK802),不需要占用串口资源。但是只能输出日志,没法输入;使用方法如下:
- 右键工程->选择【Options for xxx】,打开工程配置页面-> 选择【Debug】标签->点击ICE旁边的【Settings】->选中【Enable debug print】
- 配置完成后,选择CDK菜单栏【View】->【Serial Pane】-> 选择Debug(print)
2.Uart #,CDK自带的串口窗口,功能和其他串口工具(minicom/SecureCRT)类似。使用方法如下:
- 选择CDK菜单栏【View】->【Serial Pane】-> 选择【Uart】串口
- 在窗口右键单击->选择【Settings】,可以配置串口波特率等参数
3.更多信息,请参考CDK Help,搜索【串口窗格】
Q73:剑池CDK如何配置调试窗口?
A73:CDK的调试窗口配置,请参考如下:
1.右键工程->选择【Options for xxx】,打开工程配置页面-> 选择【Debug】标签:
- Use ICE。使用CDK内置仿真器;如果选择【Remote ICE】,则使用外置仿真器(Debug Server)
- Stop at main。进入debug模式后,代码直接运行并停在main()函数
- Soft Reset。软复位内容由CPU决定。默认的软复位内容都为0xabcd1234。
- Perform Reset after Load。进入debug模式后,执行一次复位操作。
2.点击”ICE“旁边的【Settings】,进入ICE配置页面:
- ICE Clock。ICE的时钟设置建议不超过芯片上电后运行的最慢时钟的1/4。
- Enable debug print。参考“CDK:如何使用serial pane"。
- Reset After Connect。连接上后进行软复位操作。
- Update。查看调试器和芯片的连接情况。
- Download to Flash。进入调试模式前,把代码download到芯片Flash内。
Q74:剑池CDK安装缺少dll文件?
A74:如果CDK安装时提示错误”找不到dll文件“,或者突然不能用了,有可能是由于您的电脑使用了如360之类的杀毒软件。除了在安装过程中允许CDK的操作之外,安装之后,必须将整个CDK安装目录加入到杀毒软件的白名单区。
Q75:剑池CDK如何设置全局条件编译?
A75:在一些工程中,存在一些条件编译(如下图):
当多个文件同时需要这个条件编译的时候,可以通过设置全局条件编译统一管理:
右键工程->选择【Options for xxx】,打开工程配置页面->选择【Compiler】标签->在”Global Config“的【Define】窗格添加全局条件编译宏
Q76:连接错误:Can't get target information
A76:如果CDK连接开发板失败,可能有两种原因:
1、出现如下错误提示,说明您的的仿真器(CKLink)没有和PC连接:
2、出现如下错误提示,说明您的仿真器(CKLink)没有和芯片连接:
Q77:连接错误:由于目标计算机积极拒绝,无法连接
A77:如果CDK出现”由于目标计算机积极拒绝,无法连接“的错误,请尝试如下步骤解决:
- 有可能是您的仿真器(CKLink)处于非正常状态。通常可以通过复位仿真芯片或是给仿真器重新上电解决
- 也有可能是您的CDK或者调试器驱动安装失败导致。建议卸载CDK,然后关闭杀毒软件,重新将CDK安装在非中文目录下,且安装过程中提示是否安装驱动点击安装即可。
- 如果您使用模拟器调试,说明模拟器启动失败了。通常是目标程序跟模拟器配置文件不匹配导致的;
如果还有问题,请提交工单咨询:工单链接
Q78:下载错误:Verify failed
A78:如果CDK调试器提示校验失败(Verify Failed!),请按照如下方法检查:
- 尝试重新下载多次
- 尝试Flash erase:点击菜单栏【Flash】->选择【Chip Erase】
- 检查是否加载了正确的flash算法文件。
如果上述尝试都不成功,有可能是芯片出现问题,请更换芯片。
Q79:剑池CDK工程视图中出现红色问号是什么原因?
A79:如果在CDK的工程视图中出现红色问号,说明工程依赖的组件版本和本地代码版本不匹配,可以按照如下方法解决:
1.如果您的工程有多个版本,请先切换SDK版本
右键工程->选择【Switch SDK】,选择最新的SDK版本
点击【Reload All Projects】,刷新工程视图
2.另外也可以单独下载该组件的对应版本
Q80:剑池CDK如何查看芯片寄存器值?
A80:请参考如下步骤查看寄存器值:
1.如果工程已经包含svc格式的芯片描述文件,可以通过【Peripherals Pane】查看:
- 首先进入调试模式 ,然后选择CDK菜单栏【View】->【Peripherals Pane】,打开外设窗格
- 选择CDK菜单栏【Peripherals】->【System Viewer】,选择要查看的外色
- 在外设窗格中可以看到对应外设寄存器的内容
2、如果工程没有svc文件,可以通过【Frame Pane】查看:
- 首先进入调试模式 ,然后选择CDK菜单栏【View】->【Frame Pane】,打开Frame Pane页面
- 对照芯片使用手册,查询外设基地址
- 点击【Memory】标签,根据外设基地址,定位寄存器内容
Q81:Analysis Pane为什么是空白?
A81:如果Analysis Pane打开后是空白,请参考如下方法解决:
- 启动模拟器时,模拟器配置页面需要勾选【Trace enable】选项;
- 在Analysis Pane右键,选择【Start Trace】
Q82:剑池CDK打开工程报错:File path include Chinese character.?
A82:如果出现错误:“File path include Chinese character”,这是由于您的CDK工程放在含有中文目录导致,把工程的目录名称改为英文或者放到英文目录即可。
Q83:剑池CDK怎么生成烧录文件?
A83:正常CDK点击编译后,在工程文件夹下的“Obj”目录里面会生成.elf和.IHEX两个文件。如果没有则检查下CDK配置:
- 点击CDK菜单栏中的【Project】 -> 【Open Active Project Options...】
- 在Project Settings对话框中点击【Output】 ,然后勾选上【Create Executable:.\Obj\*.elf】、【CreateHexFile】和【CreatBinFile】,再点击【OK】退出
- 重新编译即可在“Obj”目录生成烧录文件。
Q84:剑池CDK怎么打开汇编窗口?
A84:CDK默认设置在Debug的时候上面会显示对应的汇编窗口,如果被误关闭想打开则先进入Debug模式,然后点击菜单栏中的【Debug】->【Debug Views】->【Disassemble】,显示后再拖动到合适位置。
Q85:剑池CDK怎么恢复默认的图形界面?
A85:如果部分图形界面接口被关闭想恢复到默认的设置,您可以点击菜单栏中的【Windows】->【Reset View to Defaults】即可恢复到默认的设置。
未完待续......
|