嵌入式系统交叉调试方法一般分为两种,一种是基于JTAG的片上调试方法,一种是基于调试代理的远程调试方法。

JTAG是一种国际标准芯片测试协议,目前大多数CPU体系都支持JTAG。基于JTAG的片上调试方法最突出的代表就是JLink调试器,其定义了一个软件调试层面的RDI接口标准,然后JLink调试器将调试环境软件(IAR、KEIL等)发出的RDI接口转化为JTAG命令,对芯片进行调试。该方法多适用于嵌入式系统底层驱动调试、裸系统调试和单应用调试。

基于调试代理的远程调试方法是在目标机上运行一个调试代理程序,与宿主机的调试器进行通信交互,一起配合完成调试的任务。该方法主要使用软件陷入来模拟断点以接管CPU来完成调试。GDB远程调试是主要代表,其提供两种方式。一种是gdbserver,其能在目标机的系统上独立运行,用于调试有操作系统的应用程序;另一种是stub,其和嵌入式系统程序一起链接运行,一般用于调试系统程序。Gdbserver比较容易,但需要操作系统支持;stub调试比较难,需要针对具体的芯片体系进行移植。两者的工作原理是相似的。GDB调试基于串口协议或者TCP/IP协议。由于调试代理、串口驱动或者TCP/IP驱动需要占用大量的内存空间,因此该方法一般用于内存资源比较丰富的嵌入式系统的调试。

嵌入式系统一般分资源宽裕型系统和资源紧缺型系统,前者CPU处理能力强、内存资源丰富(一般在M字节级以上),如能支持Linux内核运行的嵌入式系统,而其一般都是选用基于调试代理的远程调试方法来进行开发;而后者的CPU处理能力一般、内存资源有限(一般在100K字节以下),多见于单片机控制器类成本敏感的消费类电子系统,系统程序难以和stub程序一起在内存中运行,因此难以选择基于调试代理的远程调试方法来进行开发,而是选择基于JTAG的片上调试方法或者直接串口打印的方式来进行调试。但是,在资源紧缺型嵌入式系统上,针对带操作系统(如基于UCOS内核、FreeRTOS内核)的应用程序进行调试,基于JTAG的片上调试方法也是难以胜任的。考虑以下类型的嵌入式系统:

带嵌入式操作系统的电子产品往往都具有多个应用,例如一些带LCD平的音频播放器,它除了有音乐应用,也有图片应用、FM应用、电子书应用等等,同时还可以充当一个U盘进行文件拷贝。该系统同时可能运行一到两个应用,例如听音乐看电子书,而其他应用则不能同时运行。嵌入式系统学习加意义气呜呜吧久零就易,这些应用程序和操作系统、UI资源文件、配置文件都是存在于外存(如nand flash或者nor flash)的固件区,对使用用户不可见;而音乐文件、电子书等则是存在于外存的用户区,对使用用户可见。从中可看成,各个应用程序是分时复用宝贵的内存资源。由于成本敏感,内存资源的大小是经过精心设计的。对于单个应用程序,也会将代码分为常驻内存类型和可切换类型。例如,对性能影响比较大的解码部分代码就需要常驻内存,而选择文件相关的代码则可以在需要时才加载到内存。同时,使用固化一部分内核的代码,就能做到以100K左右的内存来支撑整个系统的运行。应用程序在非运行状态时存储在外存中,在应用运行时才会被操作系统加载到内存中,同时对可切换类型的代码进行调度切换。

如果要调试这种带操作系统类型的应用程序,由于内存的原因,依然不能选择基于调试代理的远程调试方法,而选择基于JTAG的片上调试方法会遇到以下问题:

由于没有STUB在目标机运行,所以基于JTAG的片上调试方法只能通过JTAG协议接口来对内存进行读写。而上述应用程序包括常驻代码和可切换类型代码,在未运行时需要存储到外存中,在需要的时候才能由定制的操作系统加载到内存中。很明显,JTAG接口无法将代码写到外存中去。因此,需要通过其他的手段将固件(包括操作系统、所有的应用程序、UI资源文件、配置文件)烧写到固件区,才能使用基于JTAG的片上调试方法进行调试。即不使用该方法的程序下载功能,而是使用读内存、设置断点等功能。

因此,调试这种带操作系统类型的应用程序一般的流程如下:

1)  调试过程中遇到问题,停止调试,修改好,编译链接该应用程序。

2)  打包固件,将操作系统、所有的应用程序、UI资源文件、配置文件等打包成一个固件。

3)  烧写固件,一般使用USB量产工具,或者直接的外存烧写工具。

4)  启动系统,并运行到该程序,进入调试状态。

这种调试方式最大的问题就是效率很低,因为每次修改程序,都要重新打包整个固件,一般要耗费10分钟以上,同时,还要重新烧写整个固件,烧写前还要先擦除外存,这里也要耗费不少时间。另外,由于烧写固件和JTAG调试是两套不同的工具,板子上电到连接工具也需要消耗不少时间。

嵌入式系统交叉调试原理和方法相关推荐

  1. 【原创】QT在嵌入式系统中显示中文的方法

    [原创]QT在嵌入式系统中显示中文的方法 此篇文章主要借鉴:http://zzqh007.blog.163.com/blog/static/44434847201011312168296/ 移植QT4 ...

  2. 嵌入式系统中进程间通信的监视方法

    概述 复杂的嵌入式系统中,常常同时运行着相当多的进程.这些进程之间频繁的进行着大量的通信动作.进程的运行状态与这些不断发生的通信有着直接和紧密的联系.通过对进程间通信的监视,开发人员可以掌控系统内部运 ...

  3. 滴滴在招聘,以及司乘防疫口罩识别技术的系统框架、原理和方法展

    "数据猿年度重磅活动预告:2020年度金猿策划活动(金猿榜单发布+金猿奖杯颁发)即将推出,尽情咨询期待! 大数据产业创新服务媒体 --聚焦数据 · 改变商业 桔妹导读:2020年新春伊始,新 ...

  4. 嵌入式系统HAL原理与BSP的实现方法

    随着计算机软硬件技术的快速发展,出现了越来越多的便携设备和智能设备.这些设备中通常包含控制用的CPU和相应的操作系统;这类特殊的计算机系统叫做嵌入式实时系统.嵌入式实时系统以其简洁高效等特点在计算机. ...

  5. 嵌入式系统调试诊断方法

    嵌入式系统开发过程实际上就是一个调试诊断的过程,而且调试诊断将一直伴随着一个产品的终身,即使是最成熟的产品也偶尔会出现这样或那样的问题,这都需要开发人员去诊断.排查.       嵌入式系统的调试包括 ...

  6. 嵌入式系统的知识体系、学习误区及学习建议

    嵌入式系统的知识体系.学习误区及学习建议 1.嵌入式系统的知识体系     嵌入式系统的应用范围可以粗略分为两大类:电子系统的智能化(工业控制.现代农业.家用电器.汽车电子.测控系统.数据采集等),计 ...

  7. 基于机智云的嵌入式系统应用开发—空调远程智能控制系统

    摘要: 文章主要介绍了一种基于机智云iot开发平台的空调远程控制模块的应用开发,模块功能是通过智能手机的用户界面远程控制空调的工作,包括工作条件的设置和温度环境监测,开发内容包含了硬件和软件两部分,硬 ...

  8. 嵌入式系统的知识体系

    嵌入式系统的知识体系 嵌入式系统的应用范围可以粗略分为两大类:电子系统的智能化(工业 控制.现代农业.家用电器.汽车电子.测控系统.数据采集等),计算机应用的延伸(MP3.手机.通信.网络.计算机外围 ...

  9. 嵌入式系统概念以及嵌入式基础知识

    嵌入式系统概念以及嵌入式基础知识 \\\插播一条:我自己在今年年初录制了一套还比较系统的入门单片机教程,想要的同学找我拿就行了免費的(禾厶-亻言-手戈).最近比较闲,带做毕设,带学生参加省级以上比赛/ ...

最新文章

  1. Python的操作符重载
  2. 这八大互联网金融商业模式,你都知道吗?
  3. mysql 存guid类型_从C#在MySQL中存储GUID
  4. 【原创】ABAP根据文件路径获取文件所在目录
  5. 请领导批阅文件怎么说_有请考过的说物业经理资格证怎么考?
  6. 软件中Undo(撤回)和Redo(重做)的实现
  7. Ext2.0的EditorGridPanel
  8. Robotium-基础理论介绍
  9. windows系统下Redis下载安装与配置(内附蓝奏云下载地址)
  10. ngx-datatable的使用
  11. 求生之路怎么显示服务器,求生之路2怎么屏蔽rpg服务器 求生之路2屏蔽rpg服务器方法-超能街机...
  12. My findings:CoordConv坐标嵌入技术及其泛化性能
  13. ARANGODB INSTALL
  14. cuug内部oracle视频教程-oracle sql_tune
  15. window 2003安装完系统之后网卡驱动处理办法
  16. Bandzip右键菜单离奇消失解决办法
  17. MATLAB利用逐步搜索法求隔根区间
  18. SimpleDateFormat用法
  19. 波动率在数字资产CTA策略中的应用研究
  20. 她每天坐Waymo无人车上学购物 每公里1刀 说考驾照没意义

热门文章

  1. ML: 导数、方向导数、曲率小结
  2. 一张图解决thinkpad Ctrl和Fn互换问题
  3. CabloyJS一站式助力微信、企业微信、钉钉开发 - 微信篇
  4. 沈阳html5培训学校,沈阳哪个web培训好(web前端开发)
  5. 红米手机3S 3X简单卡刷开发版获得ROOT权限的方法
  6. 上海师范大学计算机考研难度,上师大考研难吗
  7. Javascript - 如何代码中字符串换行书写
  8. RuntimeError: Ninja is required to load C++ extension
  9. 【观察】神州数码:向云而生,纵情向前
  10. 验证码实战案例:鲸藏数藏玩家背后的安全验证码