|
闂傚倸鍊搁崐鐑芥嚄閸洖绠犻柟鍓х帛閸婂爼鏌涢鐘插姎缁炬儳顭烽弻鐔煎礈瑜忕敮娑㈡煟閹惧娲撮柡灞剧洴椤㈡洟顢曢~顓犵泿闂備浇顕ф蹇曟崲濠靛钃熼柨娑樺閸嬫捇鏁愭惔婵堢泿闂佸搫妫涢崑銈夊蓟閻旂⒈鏁嶆繛鎴炵懐濡啫螖閻橀潧浠﹂柨姘舵偂閵堝洨纾藉ù锝堢柈缂傛碍銇勯埞鍨闁宠鍨块弫宥夊礋椤愨剝婢€闂備胶枪鑷庨柛銉戝拋鍞甸梻浣芥硶閸o箓骞忛敓锟�
|
缂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧湱鎲搁悧鍫濈瑲闁稿顑嗙换婵囩節閸屾粌顣洪梺缁樻尰缁诲牓寮婚妸鈺傚亞闁稿本绋戦锟�
|
IC
|
闂傚倸鍊搁崐椋庣矆娓氣偓楠炴牠顢曢敃鈧粻鐘荤叓閸ャ劍鎯堥柤鏉挎健閺屾盯鏁傜拠鎻掔缂備讲鍋撳┑鐘叉处閸婄敻鏌ㄥ┑鍡涱€楀褎婢橀埥澶愬箻瀹曞泦褔鏌$仦璇插闁诡喓鍊濆畷鎺戔槈濮楀棔绱�
|
缂傚倸鍊搁崐鎼佸磹妞嬪孩顐介柨鐔哄Т缁愭淇婇妶鍌氫壕闂佷紮绲介崲鑼剁亽濠电偛妫涢崑鎾承掗敓锟�
|
婵犵數濮烽弫鎼佸磻閻愬搫鍨傞柛顐f礀缁犲綊鏌嶉崫鍕櫣闁活厽顨婇弻娑㈠箛闂堟稒鐏侀梺閫炲苯澧柛濠傛健瀵偊骞樼紒妯绘闂佽法鍣﹂幏锟�
|
闂傚倸鍊搁崐鐑芥嚄閼哥數浠氱紓鍌欒兌缁垶銆冮崨鏉戠厺闁哄倸绨卞Σ鍫ユ煏韫囧ň鍋撻崗鍛亝闂傚倷娴囧▔鏇㈠闯閿曞倸绠柨鐕傛嫹
|
闂傚倸鍊搁崐鐑芥倿閿曞倹鍎戠憸鐗堝笒閸ㄥ倻鎲搁悧鍫濈瑲闁稿﹨鍩栭幈銊ノ熺捄銊х勘婵犳鍠楁繛濠囧蓟閵娾晜鍋嗛柛灞剧☉椤忥拷
|
闂傚倸鍊搁崐鐑芥嚄閸撲焦鍏滈柛顐f礀閻ら箖鏌i幇顓犮偞闁哄绉归弻銊モ攽閸♀晜肖闂侀€炲苯鍘哥紒鑸靛哺瀵偊骞樼紒妯绘闂佽法鍣﹂幏锟�
|
闂傚倸鍊搁崐鐑芥倿閿曗偓椤啴宕归鍛數闂侀€炲苯澧扮紒杈ㄥ浮楠炴捇骞掑┑鍫濇倯闁诲氦顫夊ú妯煎垝閹捐鏋侀柟鍓х帛閺呮悂鏌ㄩ悤鍌涘
|
闂傚倸鍊搁崐椋庣矆娓氣偓楠炴牠顢曢敃鈧悿顕€鏌eΔ鈧悧濠囧矗韫囨稒鐓熼柟杈剧稻椤ュ鏌涘顒傜Ш闁哄被鍔戦幃銈夊磼濞戞﹩浼�
|
濠电姷鏁告慨鐑藉极閹间礁纾婚柣鎰惈閸ㄥ倿姊婚崼鐔剁繁闁搞倖娲熼幃瑙勩偊鐟併倐鍋撻埀顒勬煛鐎n亞效闁哄被鍔戦幃銈夊磼濞戞﹩浼�
|
闂傚倷娴囬褍霉閻戣棄鏋佸┑鐘宠壘绾捐鈹戦悩鍙夋悙缂佹劖顨嗘穱濠囧Χ閸涱厽娈ㄩ梺缁樺笒閿曨亪寮婚妸鈺傚亞闁稿本绋戦锟�
|
缂傚倸鍊搁崐鎼佸磹妞嬪海鐭嗗〒姘e亾闁诡垰鐭傚畷鎺戔堪閸涱垽绱虫繝娈垮枟鏋柛鈺傜墵瀹曟洖顓兼径瀣弳闂佺粯娲栭崐鍦偓姘炬嫹
|
闂傚倸鍊搁崐椋庣矆娴h櫣绀婂┑鐘插€寸紓姘辨喐閺冨牄鈧線寮介鐐茶€垮┑锛勫仧缁垶寮悩缁樷拺闂侇偆鍋涚粔鐢碘偓姘炬嫹
|
|
闂傚倸鍊搁崐鐑芥嚄閸撲礁鍨濇い鏍仜閺勩儵鏌涢鐘插姎闁稿被鍔岄湁闁绘ê妯婇崕蹇曠磼閻樿櫕绶叉い顓炴健閹虫粓妫冨☉姗嗘綋闂傚倸鍊搁崑鍡涘垂閸洖钃熼柕濞炬櫆閸嬪棝鏌涚仦鍓р槈妞ゅ骏鎷�
|
闂傚倸鍊搁崐鐑芥倿閿曞倹鍎戠憸鐗堝笒閸ㄥ倿鏌﹀Ο渚С缂傚倹姘ㄩ幉鍛婃償閵娿儳鐤勯梺闈浥堥弲娑㈡偂濞戙垺鐓曢悘鐐插⒔閳藉銇勯顒傜瘈婵﹨娅i幑鍕Ω閵夛妇褰氶梻浣烘嚀閸ゆ牠骞忛敓锟�
|
LED闂傚倸鍊峰ù鍥敋瑜忛幑銏ゅ箳濡も偓绾惧潡鏌熸潏鍓х暠缂佺媭鍨堕弻銊╂偆閸屾稑顏�
|
闂傚倸鍊搁崐鐑芥嚄閸撲礁鍨濇い鏍ㄧ矋閺嗘粓鏌熼悜姗嗘畷闁哄懏绻堥弻鏇熷緞閸繂濮夐梺琛″亾闁挎洖鍊归悡鍐喐濠靛绠柨鐕傛嫹
|
您现在的位置: 华玉生活网 >> 技术文库 >> 无线 >> 正文>> 体中文

利用JTAGOCD加速Linux设备开发

引言传统上,调试嵌入式Linux产品需要将硬件和软件工具结合起来,如用JTAG工具进行硬件bring-up,用基于代理(agent-based)的解决方案进行软件开发。这些JTAG和基于代理的工具相结合的方法通常可以解决单点问题,但它们最初并不是专门针对集成化的Linux开发而设计的。因而,在当今集成化的产品开发中,这些传统方法常常是不可行的。但是,我们可以在Linux内核的配置、补丁管理以及在基于Eclipse的IDE环境中的用户空间应用开发、调试


引言

传统上,调试嵌入式Linux产品需要将硬件和软件工具结合起来,如用JTAG工具进行硬件bring-up,用基于代理(agent-based)的解决方案进行软件开发。这些JTAG和基于代理的工具相结合的方法通常可以解决单点问题,但它们最初并不是专门针对集成化的Linux开发而设计的。因而,在当今集成化的产品开发中,这些传统方法常常是不可行的。

但是,我们可以在Linux内核的配置、补丁管理以及在基于Eclipse的IDE环境中的用户空间应用开发、调试和分析之中,将传统JTAG硬件调试融入其中得到一种全新的方法,从而完全改变开发人员使用JTAG连接进行Linux设备软件调试的方法,这就是Wind RiverWorkbench。

Linux设备调试的复杂性

在嵌入式设备领域,Linux的应用正在迅速增加。根据技术市场研究机构VDC的报告,在新的设备研发项目中,有23%会采用Linux。由于开发工作跨越Boot Loader、Linux内核、内核模块和应用,调试工作很可能极为复杂。Linux开发人员必须面对的问题包括为Boot Loader建立目标配置文件,在用户模式和内核模式之间双向对硬Linux虚拟地址、映射内核符号信息以及排除遍布于用户和内核空间之中的差错。包括内核GNU调试器和GNU调试器在内,在基于代理的调试方案中,要想解决上述任何问题都会遇到极大困难。

Boot Loader调试

如果浪费太多的时间在BootLoader的开发与调试上,将会严重影响开发人员对于系统稳定性、设备软件与应用开发的精力投入。因此,开发人员应当借助于先进的工具,尽快逾越这个阶段。

Linux需要依靠BootLoader来启动操作系统。这段代码存放在Flash或者其他非易失性存储器之中,在系统开机或者复位之后立即运行。Boot Loader的调试可能会非常复杂。这段代码与硬件密切相关,在系统启动之后开发人员必须把它从Flash存储重新定位到RAM之中。在今天的SoC处理器中可能包括了数百个配置寄存器,都需要在此时进行初始化,这项工作需要熟悉数千页的特殊设定文档。如果设定寄存器错误,可能导致随后Linux内核或者应用调试的异常。并且手工编辑寄存器设定是一项极为繁琐易错的工作。

Boot Loader开发的另一项常见挑战出现在Boot Loader把Linux装入RAM并启动操作系统的时候。基于代理的调试解决方案不支持BootLoader调试,因为在此过程中还没有开始发挥作用。因此,开发人员只能寄希望于JTAG工具。

JTAG调试解决方案提供了很强的能力来帮助开发人员快速有效地完成Boot Loader的测试与故障排除工作。它使寄存器设置工作大大简化,通过设置硬件断点以及单步执行Flash中的代码,可以快速发现原代码中的错误。IDE可以支持反汇编,还可以让你混合查阅源代码和汇编代码,符号管理功能比较便于代码从Flash向RAM的重新定位,使整个调试工作得到很大帮助。

JTAG调试解决方案不需要通过Boot Loader即可装载Linux内核。对于那些在Boot Loader尚未完成之前就希望开始系统开发的项目管理人员来说,这项功能具有特殊的重要意义。提供了引导行能力的JTAG调试解决方案可以支持Boot Loader和操作系统稳定化的并行开发,从而加速软件开发项目的整体进程。

Linux内核及内核模块调试

Linux内核及内核模块是Linux操作系统的核心构建。在系统被Boot Loader初始化之后,首先装载的就是Linux内核。Linux模块则根据需要进行装载。在进行操作系统bring-up时,开发人员必须专注于Linux操作系统的优化或剪裁以及内核模块的开发,需要必须密切监控硬件与软件之间的互动。Linux内核调试要求具备观察寄存器、数据缓存器及其它底层数据。LinuxKGDB要求具备稳定的Linux内核,并且确保诸如设备驱动之类的客户硬件接口处于就绪状态,其中的代理才能工作。基于代理的调试不具备底层硬件的可视化能力,也不能提供完全的诊断功能,因而无法让开发者了解硬件与Linux内核之间的互动。

如果采用代理来调试Linux内核和内核模块,在进入调试断点时可能会涉及系统暂停或者冻结方面的问题。例如,KGDB无法暂停CPU(特别是在多核或者多处理器环境中)来让开发人员检查CPU的现行状态,它也不能帮助开发人员对崩溃的系统进行调试,因为崩溃的操作系统显然已经不能再运行代理。而且,KGDB还需要以太网等通信接口实现主机系统与目标之间的沟通。总之,采用代理来实现Linux内核模式调试,需要具备由IP栈、稳定的Linux内核和处于运行状态的设备驱动。在上述条件尚未具备,或者上述软件本身还需要调试的时候,基于代理的调试显然就无能为力。

为了实现并验证一个目标系统中的Linux内核,必须拥有可以监控和管理Linux内核和内核模块的全面调试解决方案。基于JTAG的调试解决方案功能特性包括查看局部/全局符号和寄存器以及指令和数据缓存器。已经有商业化的JTAG调试解决方案可以把物理内存和虚拟内存顺畅地映射过来,从而帮助开发人员正确地观察内存地址和内容,也具有对Linux内核模块进行调试的能力,以及在不必反复连接和切断目标系统的前提下多次装载和卸载。

JTAG调试解决方案的另一个重要能力是把系统完全置于暂停状态并且全面观察操作系统和应用的状态。这种能力又被称为“系统模式调试(system mode debug)”,对于Linux内核和Linux内核模块的调试是极为有用的。有了系统模式调试能力,开发人员就可以把整个系统完全暂停下来,包括处理器、操作系统和所有的线程以及中断处理程序。以这种方式暂停系统,就有可能获得系统硬件和软件的完整细节视图,当然也可以让系统继续执行或者分步骤执行某些代码。

因此,在一些KGDB无法使用的情况下,JTAG解决方案就可大派用场,特别是在Linux内核出错或者目标崩溃的情况下更是如此。因此JTAG解决方案在提升操作系统和设备驱动稳定性方面特别有用。


  • 扩展阅读
  • 上一个文章:
  • 【返回网站首页】 【返回无线】
  • 下一个文章:
  • 【字体: 】【】【发表评论】【加入收藏】【告诉好友】【打印此文
    文章 软件 电影 商品

    相关文章

    本站公告

    • 扫一扫,打赏给我们,谢谢!

      本站2016年12月16日起取消ruida.org.cn域名,该域名正式作废,该域名发布任何信息与本站无关。


      启用ruida.orghy928.net域名;

      瑞达网,瑞达科技网宣

    专 题 栏 目

    • 公元干支年号皇帝对照年表618年-2025年
      全国各地庙会圩日表
       婵犵數濮烽弫鎼佸磻濞戞瑥绶為柛銉墮缁€鍫熺節闂堟稒锛旈柤鏉跨仢闇夐柨婵嗘噺鐠愨剝銇勯埡鍐ㄥ幋闁诡喛顫夐幏鍛村传閵夘垳绀婄紓鍌欑椤︻垶鎮樺┑瀣叀濠㈣埖鍔曠粻濠氭倵濞戞顏嗗閸愬樊娓婚柕鍫濈箳鐎佃偐绱掗鐣屾噧妞ゆ洩缍佸畷鎰版偄閾忚婢戦梻浣告惈濞层劑宕伴幘缁樺仒闁跨噦鎷�
    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
        没有任何评论

    | 服务声明 | 充值中心| 华安五金电器 | 收费标准| 论坛| 留言| 实用查询| 会员中心| 下载帮助| 设为首页|

    技术支持:瑞达科技 即时交谈QQ:237013889 QQ群:13810759 E-Mail:237013889@qq.com
    非盈利网站,如有侵权,请来信来电告知,第一时间处理,谢谢!
    桂ICP备17008104号 华玉生活网网站统计
    tj