多核时代已经来临,您准备好了吗?
今天您可能还未尝试过多核开发,但很快您就会涉足这一领域。近年来,电子技术、半导体技术已经取得突飞猛进的发展,多核架构也已逐渐从高端服务器走向个人PC,并且嵌入式领域崭露头角。由于多核系统能够能达到单核系统同等性能,并且前者主频更低、高集成化、占用较小空间特点使得其能够提供更多的功能。越来越多的半导体厂商开始设计多核芯片,开发人员们也已经尝试在其产品中应用多核系统。
2010年11月1日,恩智浦半导体(NXP)宣布推出LPC4300系列微控制器,该系列产品是全球首次采用ARM Cortex-M4和Cortex-M0双核架构的非对称数字信号控制器。
对于LPC4300系列这种片上多核系统,开发人员不得不面对多核系统所特有的“资源分配与抢占”、“并行运行”、“如何同时多核调试”等问题。这些问题都使得问题的查找变得复杂和不易重现。此时开发人员无法再采用传统的手段进行单一内核的调试,而是希望能够同时调试各个内核,独立地控制每个内核的运行状态,观察各内核的运行状态。
传统仿真器已经很难给用户提供这种完整的调试支持。并且由于LPC4300系列芯片仅提供一组外部调试接口,无法同时使用多台仿真器分别调试各内核,使得同时进行多核调试成为不可能。
而TKScope则已经率先突破此种障碍,用户可同时将多个IDE连接到一台仿真器分别调试LPC4300系列的Cortex-M4和Cortex-M0内核。
图1 仿真器连接示意图
LPC4300系列双核调试难点 LPC4300系列数字信号控制器(DSC)是业界首个带有Cortex-M0协处理器的双核非对称架构DSC。该系列采用独特的非对称双核架构,内置双ARM核:Cortex-M4内核用于实时处理,Cortex-M0内核用于实时控制,两个内核均可在204MHz下运行。由于门数极少的Cortex-M0内核能分担大量的控制与I/O处理任务,减少Cortex-M4处理器的带宽占用,从而使Cortex-M4可以全力以赴地处理数字信号控制应用中的数字计算。LPC4300系列将成为各类应用的理想之选,包括嵌入式音频、高端马达控制、工业自动化、POS机、医疗器械及汽车配件等。
在芯片内部,Cortex-M4和Cortex-M0共享片上Flash、RAM和外设资源。外部引脚仅提供了一组JTAG/SWD调试接口为两个内核共享,即仅允许外接一台仿真器。传统的仿真器仅仅能支持一次调试其中一个内核,无法同时控制另一内核的运行!
传统仿真器对LPC4300系列支持的局限 在使用传统仿真器调试LPC4300系列时,每次只能打开一个IDE环境并连接到仿真器。例如要单独仿真Cortex-M0内核,需要在仿真器的JTAG扫描链配置中根据Cortex-M0核的IDCODE选择M0核,然后保存进行调试。该项配置在某传统仿真器的配置如图2所示。
图2 某传统仿真器仿真LPC4300系列的Cortex-M0核
如果要仿真Cortex-M4内核,必须退出调试、重新配置JTAG扫描链,根据Cortex-M4核的IDCODE选择M4核,再次进入调试状态。该项配置在某传统仿真器的配置如图3所示。
图3 某传统仿真器仿真LPC4300系列的Cortex-M4核
可以看到,使用传统仿真器进行调试最大的问题是:无法同时调试Cortex-M4和Cortex-M0内核。而实际系统运行时必定是两个内核同时运行,如果运行中出现问题,采用此种调试模式是非常难以复现和查出问题,因为一次只能观察和控制其中的一个内核。
TKScope对LPC4300系列的支持 既然LPC4300系列外部只提供了一组JTAG/SWD调试接口,如果要实现双内核的同时调试,必须采用支持至两个IDE同时连接至一台仿真器,并且支持分别选择JTAG链上多个器件中某个内核进行仿真。TKScope支持这种双核系统调试,不仅支持单独调试LPC4300系列的Cortex-M4和Cortex-M0;也支持在两个IDE环境中同时连接同一台仿真器分别调试Cortex-M4和Cortex-M0,相对于使用传统仿真器,TKScope为用户提供了更好的调试手段。
另外,TKScope广泛支持主流IDE环境的特点使得用户可以在诸如TKStudio、Keil、IAR、Eclipse、RVDS等环境中进行LPC4300系列双核系统的开发。下面简要介绍在Keil和TKStudio分别调试Cortex-M4和Cortex-M0的配置。
在Keil中调试Cortex-M4内核 在Keil中调试Cortex-M4内核时,需要在【TAP设置】里选择当前需要仿真的内核。打开仿真器配置界面【TAP设置】,选择Cortex-M4后,确认退出,然后即可进行正常的调试。
图4 Keil下调试Cortex-M4内核设置
在TKStudio中调试Cortex-M0内核 在TKStudio中调试Cortex-M0内核时,也需要在【TAP设置】里选择当前需要仿真的内核。打开仿真器配置界面【TAP设置】,选择Cortex-M0后,确认退出,然后即可进行正常的调试。注意,此时如果已经在Keil中调试Cortex-M4内核,此时无需退出调试!因为TKScope仿真器支持两个IDE同时连接,这与传统仿真器在多核调试上的很大区别。
图5 TKStudio下调试Cortex-M0内核设置
TKStudio、Keil联调双核效果 当完成上述设置后,便可分别在TKStudio、Keil环境中切换至Debug模式,TKScope将分别完成Cortex-M4、Cortex-M0内核的初始化配置、程序下载。在进入Debug模式后,可以任意地在任何一个IDE环境中设置断点、单步、全速运行。此时您完全掌握了调试状态下Cortex-M4、Cotex-M0内核的运行控制权,为程序问题的查找带来了极大的便利!
图6 在Keil和TKStudio下同时调试Cortex-M4和Cortex-M0
小结 多核系统的引入给调试带来了不小的挑战,开发人员已经很难再使用传统的仿真器辅助调试,必须慎重地考虑并选择合适的工具。即便是现在您还未调试LPC4300这种多核系统,也需要从长远的角度出发选择合适的工具,以避免后期额外购买此类工具的成本。作为专业的仿真器品牌,TKScope不仅及时地支持新内核、新芯片种类;而且也一如既往的关注用户需求,为多核调试提供着全面的支持。TKScope仿真器后续会不断地创新和发展,保持与嵌入式处理器同步发展和进步。