信息产业培训网

通过CPU仿真器(ICE)实现对嵌入式操作

http://www.miiceic.org.cn   2007-9-11 14:07:13   中程在线   浏览数:
关键字:CPU仿真器(ICE)
 对于开发嵌入式系统软件调试一直是一个难度大、直接影响产品质量的重要环节。由于嵌入式系统本身不具备调试环境,又有较高的实时性要求,所以必须要有外部调试工具的协助工作。ICE仿真器作为嵌入式调试的核心设备,可以帮助用户实现断点调试、单步运行、寄存器与内存读写、闪存烧写等功能。

       嵌入式系统通常可以分为硬件、硬件驱动、实时操作系统以及上层应用等几部分。其中实时操作系统是整个系统的管理者,起着承上启下,合理分配系统资源的作用。操作系统的开发、调试是系统开发的最重要环节。如果操作系统不能稳定运行,整个系统就无法正常工作;反之,操作系统正常工作了,再进行上层应用开发就会变得快速、稳定、可靠。同时,稳定的系统也有利于进行各种相关测试。







图1  ICE仿真器工作示意图



       日本横河数字计算机公司出品的AdvicePro仿真器产品,通过对实时操作系统TCB(Task Control Block)的解析,非常直观地显示操作系统的资源信息以及各进程的状态,为客户提供稳定的系统调试平台。以横河数字计算机公司为大唐移动提供的实时操作系统ThreadX调试方案为例,ThreadX是一种以占用空间小、可靠性高、实时性高、完全源代码透明而闻名的实时操作系统,完全与Green Hills Software的MULTI IDE集成,并包含可识别内核的调试(kernel awareness debugging)、工程项目管理、源代码浏览、事件跟踪分析、代码分析,用于系统及应用项目监控。作为多任务系统,在系统运行时,会产生多个线程互相通信,交替工作。ThreadX的各个线程的信息都保存在TCB结构体中,ThreadX的TCB结构体的一部分如下:



       typedef  struct TX_THREAD_STRUCT
{
    ULONG       tx_thread_id;           /* Control block ID         */
    ULONG       tx_run_count;           /* Thread’s run counter     */
    VOID_PTR    tx_stack_ptr;           /* Thread’s stack pointer   */
    VOID_PTR  tx_stack_start;         /* Stack starting address   */
    VOID_PTR    tx_stack_end;           /* Stack ending address     */
    ULONG       tx_stack_size;          /* Stack size               */
    ULONG       tx_time_slice;          /* Current time-slice       */
    ULONG  tx_new_time_slice;      /* New time-slice           */
  CHAR_PTR  tx_thread_name;         /* Pointer to thread’s name */
    UINT        tx_priority;            /* Priority of thread (0-31)*/
    UINT        tx_state;               /* Thread’s execution state */
    UINT   tx_delayed_suspend;     /* Delayed suspend flag     */
    UINT        tx_suspending;          /* Thread suspending flag   */
  UINT  tx_preempt_threshold;   /* Preemption threshold     */
   ULONG  tx_priority_bit;        /* Priority ID bit          */
 } 



       线程的信息保存在TCB结构体中,因此只要能够对TCB进行解析,就可以获取各线程的相关信息,跟踪系统状态。例如,在图2所示的系统中,通过解析,我们可以知道,该系统中共有9个线程被启动,同时工作。其中线程System_Timer_Thread拥有最高的优先级,状态为SUSPENDED。







图2  多线程状态表示界面



       在多任务系统中,每个进程都拥有独立使用的堆栈,用于保存进程在函数调用、中断处理时产生的临时信息、数据。适当地为堆栈分配空间,是维护系统稳定,节约系统资源的一个核心环节。因为,如果为堆栈分配的空间过小,当需要保存的信息较多时,堆栈就可能会溢出,从而导致系统崩溃;反之,如果给堆栈分配的空间过大,就会浪费宝贵的系统资源。AdvicePro的系统堆栈分析功能,可以直观地帮助用户了解到系统堆栈的状态,控制余量,在保证系统稳定的前提下,最大程度节省系统资源,提高系统效率。



       通过线程堆栈资源表示界面(图3),可以清楚地观察到各线程堆栈的当前状态。例如为线程System_Timer_Thread分配的堆栈空间是0x801f5a3~0x801f1a4,大小为400个双字,当前堆栈指针指向0x801f514,已使用空间占全部空间的14%。这样就可以非常直观地了解到堆栈的使用状况,有效预防由于堆栈溢出而引起的系统崩溃。







图3  线程堆栈资源表示界面



       AdvicePro的实时操作系统调试功能是通过TCL脚本语言来实现的。TCL是一种很通用的脚本语言,它几乎在所有的平台上都可以解释运行,功能强大,是Tool Command Language的缩写,主要适用于发布命令给一些交互程序,如文本编辑器、调试器和shell。它有简单的语法和很强可扩充性,TCL可以创建新的过程以增强其内建命令的执行能力。AdvicePro的调试软件MicroView-Plus中内嵌了TCL解释器,用户可以根据需要自行定制界面,增加了产品的灵活性。



       以上,我们只是以ThreadX为例,简单介绍了AdvicePro仿真器在嵌入式实时操作系统调试中的应用。作为日本最成熟的嵌入式测试产品,AdvicePro在Symbian、Linux、Nucleus等操作系统上也有相当丰富的实际经验。欲了解更多信息请访问:www.yokogawa.com/cn-ysh (中文)或 www.yokogawa.com (英文)。 


 
来源:上海横河国际贸易有限公司
相关连接
最新评论
*以下网友发言不代表中程在线网站的观点和看法
    我要评论

    请您注意
    1、遵守中华人民共和国的各项有关法律规定
    2、承担一切因您的行为而导致的法律责任
    3、本网留言管理人员有权删除其管辖留言内容
    4、您在本网的留言本网有权在网站内转载和引用
    5、参与本留言即表明您已经阅读并接受上述条款
    我爱研发网中电华信阿里西西JAVA爱好者北京英才网全球大学查询网
    中国人的网站导航中国电脑论坛信息产业部新浪科技搜狐IT信息产业部电子教育与考试中心
    IT世界网软件项目交易网中国软件交易网国信培训网亚远景科技....[更多]
    关于我们 | 网站地图 | 周边住宿 | 行车路线 | 联系我们 | 网站律师 | 意见反馈 | 虚位以待 | 友情链接
    中程在线(北京)科技有限公司 版权所有
    总 部:北京市海淀区青东商务楼A座西四层
    企业培训部:010-52636110 52636106 就业培训部:010-68716925 68716926
    邮 件:training@miiceic.org.cn
    京ICP备06053134号
    Copyright © 2005-2008 Miiceic.org.cn All Rights Reserved