开发者学堂课程【剑池系列开发工具 :剑池系列开发工具系统规划(二)】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/734/detail/13095
剑池系列开发工具系统规划(二)
三、开发工具集合
1.编译工具链
对于编译工具链主要介绍的是 GCC Based。可以认为官网已经集成了原来玄铁800系列的整套工具。其次是函数库,也就是 C 库或基础的库。根据当前应用情况,因为每个客户都有不同的应用场景,对于不同需求,都一并支持。针对玄铁处理器实现了 Minilibc 的版本,专门面向 MCU 领域,有运行库,会把软件浮点、除法指令、利用思维的乘法除法取模自动处理,同时加入到 CPU 运行时库中,达到对整个产品形成很好的 codecast 的竞争力。同时在语言类的开源官网上的 GCC 版本中做了许多优化,针对整个流水线结构、微架构的特征做了通用型的优化。以下是增强性能的效果:
相对标准指令由平均20%的提升。以上是整个编译工具链。
2.调试系统
(1)基于 GDB 支持标准调试命令
(2)多种调试方式
裸程序在线调试. Linux 应用调试
软件模拟调试
(3)功能多样性
常用调试命令
硬断点或 Watch 点
RTOS 多线程调试
只读存储空间在线调试
(4)在线仿真器 ICE
CKLink-Lite, CKLink-Pro
最高达1.1M Bytes/s下载速度
支持半主机模式,支持 Debug Print
调试系统采用的是 GDB based,调试中心与市面上的事物非常通用。在原来 GDB 中使用习惯的方式或标准的调试命令在此处都支持。除此之外,支持类似于硬件的断点。支持 RTOS 多线程调试,在 RTOS 时,调试器会自动从整个芯片中抓取每个线程的信息。同时以 CR 的形式或 EY 的形式展示在页面中,方便调试。支持 Flash、 ROM 只读空间的在线调试。从调试方式上看,可以分为3种调试方式:
(1)裸程序调试,也就是调试的是开发版,里面没有 OS 或只有裸跑程序,可以通过在线仿真器进行调试;
(2)支持 Linux 应用调试。可以通过 GDB server 的方式直接连接,现在已经支持 native 的方式,相当于 GDB 可以直接运行在开发板上。例如 X86 调试应用程序一样调试整个例子的应用程序。
(3)软件模拟调试例如,在没有任何开发板或。运行环境的情况下,仍然可以启动软件模拟器,让它模拟整套硬件,再基于整个模拟器进行调试。在把程序全部调试完毕之后,可以将一模一样的程序移到真实的开发板上直接运行。
在线仿真器 ICE 分为2个版本:
(1)CK Link Lite
(2)CK Link Pro
CK Link Lite 面向 MCU 领域,因为制造成本较低,是通过 MCU 的方式模拟节态的持续,达到调试效果,是为了方便芯片厂家或客户或应用方案厂家,在推广自己的开发板时,可以直接将 Lite 集成到开发板中,达到使用方便,成本低的目的。对于 CK Link Pro 的开发,在调试大型应用程序时会出现下载应用程序有很多兆的情况, 此时 CK Link Lite 只有几百 K 的传输速率,会花很长时间。CK Link Pro 能够达到1.1兆Byte 每秒的下载速度。还支持半主机模式调试打印,半主机模式就是在调试过程中,因为 MCU 领域没有文件系统。希望将文件信息打印输出主机的文件系统中,或者从主机直接读取文件到 MCU 系统中,此时就可以直接使用半主机模式。调试机器会自动通过调试通道将两个事物嫁接好,就可以访问自己本机操作系统文件。此外,还支持调试打印。调试打印是在没有串口的情况下,还可以支持通过调试通道将信息输出。相当于不需要其他输出方式,直接通过调试口输出想要的信息到电脑屏幕中,以下就是整个调试系统:
3.模拟器
模拟器目前使用 Chrome based,有两个使用模式:系统模式和 Link 用户模式。系统模式就是模拟器模拟了一个 soc芯片,或直接模拟了一块芯片,或直接模拟了一个板子。当运行的时候,就会像直接运行开发板一样。用户模式指的是不只模拟一个板子,还模拟了 Linux 用户环境。可以直接用 Linux 用户程序通过模拟器执行,不需要先把整个文件系统运行起来才能够运行应用程序。可以直接在模拟器中运行相应程序。在用户模式下,模拟速度较高。在3.4赫兹的情况下,用户模式可以达到500兆的硬件速度。系统模式能够达到300兆或400兆的硬件速度。除此之外,通过该系统能够直接在没有硬件的情况下调试开发板,使用 CPU。在 IDEe 中,支持自定义配置自己的 soc,如图所示是集成开发环境的配置界面:
用户能够通过该途径搭建出自己的芯片。可以根据公司内目标芯片通过拼凑搭建出自己的芯片。在该芯片上做同步开发,就能够更快速的无缝式迁移到未来的芯片中。相当于用扑天化的方式将模拟器配置做成动态化。
3.可二次开发的 Flash 烧写器
(1)烧写算法二次开发
二次开发的Flash驱动实现和新建
烧写驱动模板的复制、导入和导出
(2)特性
调试时一键烧写
支持 iHex、ELF、Raw Binary 文件
多样化的烧写时擦除方式
烧写前的开发板附加操作,如 Preload 等
提供了可二次开发的 Flash 烧写器,由于最后要生产出产品,就需要将程序烧写到 Flash 中。在开发原型的过程中,如果要额外制作 Flash 烧写器,就会很麻烦,需要浪费许多时间和成本。阿里云提供了可二次开发的 Flash 烧写器,能够提供市面上能够提供市面上常见的擦除烧写的功能。程序如何烧录等问题,能够通过二次开发接口或通过 IDE 中的 Flash 算法帮助用户直接生成 Flash 算法,只需要在阿里云的 Flash 上指定算法,就可以使用。能够节约开发成本和开发时间。
4.极简开发的集成开发环境
有两个集成开发环境:cdk、cds,面向 MCU、ROT 应用开发的专业 IDE,市面上的 IDE 在功能上有许多相似。从统计上看,市面上许多产品都是使用 MCU 开发的,使用 IDEe 开发的产品很少。从这类用户人群中,将这些工具打造好。包括用户使用习惯编程,程序作为可视化编辑。希望让51开发单片机或 CPU IDEE 用户群体能够顺滑地迁移到开发工具上。
5. CDK 极简开发理念
将 CDK 打造为有着极简开发为目的的工具。在许多使用过程中,一旦软件入口多了之后,就会考虑 CPU 功能是是否配置错误,导致工程运行失败,会花较多时间在调试问题上。用户开发者更多的是关心业务代码的开发,不用担心新品的配置。通过一些手段将东西 UI 化,将其模板化之后,达到了可以让很多繁杂的配置在前期阶段完成。
6.CDK-工程组件化开发方式
建议用户将每个应用中的每个模块组件化。例如驱动组件、CPU 组件和协议相关的组件。这些组件在各个应用之间可以互用互通,通过云端组件化管理的平台,将组件放在其中管理起来,用户可以直接通过通用的组件代码将组件插到自己的工程中,形成芯片的应用生态。芯片厂家推销芯片时也较为方便,只需要提到驱动有更新,直接推到 OC 平台中,OC 平台的用户或开发者就能够立即接收到推送信息,将自己的组件更新。
7.CDK-图形化管脚选择&外设配置
在 CDK 中加入了在 MCU 中使用较为频繁的图形化管脚选择和配置。如图所示。管脚示意图不是静态图片,芯片厂家通过描述文件能够制作出相应的芯片,描述文件中有对芯片相应的描述,例如芯片形状、管脚排布、管脚取名等。芯片厂家会通过配置文件自动生成整个芯片的样子。以上是第一步,第二步可以双击每个管脚,能够弹出一个对话框,弹出对话框之后,能够直接选择每个管脚功能。选择完毕之后。,CDK 会自动生成芯片管脚的功能选择的配置代码。如右图所示,包括波特率配置、gpl 配置和 ad 采样配置。以上内容如果要通过公司计算产生。会极其不方便,能够直接通过 UI 的方式将配置问题全部解决。如果希望改变配置信息,可以通过 UI 的方式直接更改,也会自动将代码更改。
8.旗舰版集成开发环境 CDS
基于 Eclipse 5,并持续跟踪
友好的 SOC 厂商工程模板管理
图形化芯片模拟器编辑器
Flash 只读存储调试
可二次开发的 Flash 编程器
SOC 1/O 寄存器调试视图
图形化 OS Tracer、Profiling 功能
面向更高性能处理器的开发。将所有开发工具放到 CDs 中。在其中会涵盖许多黑科技。例如会将 profiling 或其他用起来耗资源或性能分期效果较好的工具放到 CDs 中。如何选择 CDS 和 CDK?对于 MCU 用户,更加适合用 CDK,因为原来的使用习惯适合用 CDK,对于整个应用开发群体或工程师迁移起来会较为平缓,应用习惯会较为相似。如果用户群体之前使用的是 Eclipse,那么使用 CDs 的时候就会较为顺手。所以对于2个工具的选择,是基于用户习惯的。更希望将 CDK 打造为简洁的功能。 CDs 是 Eclipse based,包括工程管理、编辑窗口、Profile、界面风格都类似于Eclipse。比较有特色的功能就是图形化的 profiling,如图所示:
在去年发布了整个 Risk five 业内第一个支持图形化 profiling 的 IDE。支持基于模拟器的 Profiling,目前支持5个功能:第一能够实时查看芯片运行情况、函数与运行占比等。其次,能够生成运行报告,也就是 overview。在运行完成之后会生成性能测试报告,在报告中找到想要的总体信息。第三 Timeline,Timeline 记录所有时间轨迹上的任何一个点发生的事情,只需要通过鼠标选择时间片段,即可查看运行指令或源码等。第四是 function 视图, Function视图在开发过程中较为常用,因为在做应用程序开发时,最关心的是性能分析、找程序热点。 在程序当中通过function 的方式运行完之后,会按照运行时所占的时间排序出来。告诉用户该函数在整个运行当中占比时间是多少,会显示出全部占比。用户能够通过该视图提高性能,对占比较高的函数进行优化。第五点是 call path,会将整个动态运行过程中程序调用的关系图统计出,。能够在该点上看到函数调用关系是否错误?是否符合预期?运行路线是什么?
9.演示
以上是 profiling 视图运行情况。也就是运行状态在运行过程中能够看到 Memory 访问次数,还可以得出中断次数,会对消耗次数进行统计:
以下是 overview 视图:
能够从图中得出应用占比较高的函数,还会显示 local store 的占比。