⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 00000003.htm

📁 水木社区 embeded 版精华区 下载
💻 HTM
字号:
<?xml version="1.0" encoding="gb2312"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"/><title>BDM手册3                               turbolinux </title></head><body><center><h1>BBS 水木清华站∶精华区</h1></center><a name="top"></a>发信人:&nbsp;doot&nbsp;(ltt),&nbsp;信区:&nbsp;Embedded&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />标&nbsp;&nbsp;题:&nbsp;BDM手册3&nbsp;<br />发信站:&nbsp;BBS&nbsp;水木清华站&nbsp;(Thu&nbsp;Oct&nbsp;26&nbsp;16:19:07&nbsp;2000)&nbsp;<br />&nbsp;<br />Limitations,&nbsp;etc.&nbsp;<br />The&nbsp;limitations&nbsp;to&nbsp;crash&nbsp;and&nbsp;burn&nbsp;debugging&nbsp;come&nbsp;down&nbsp;to&nbsp;time&nbsp;and&nbsp;money.&nbsp;It&nbsp;&nbsp;<br />is&nbsp;ultimately&nbsp;<br />more&nbsp;expensive&nbsp;to&nbsp;spend&nbsp;a&nbsp;great&nbsp;deal&nbsp;of&nbsp;time&nbsp;tracking&nbsp;down&nbsp;each&nbsp;bug.&nbsp;Debuggi&nbsp;<br />ng&nbsp;this&nbsp;way&nbsp;<br />is&nbsp;similar&nbsp;to&nbsp;trying&nbsp;to&nbsp;fix&nbsp;a&nbsp;mechanical&nbsp;device&nbsp;in&nbsp;a&nbsp;dark&nbsp;room.&nbsp;Just&nbsp;turn&nbsp;on&nbsp;<br />&nbsp;the&nbsp;light,&nbsp;use&nbsp;a&nbsp;<br />debugger&nbsp;of&nbsp;some&nbsp;type.&nbsp;<br />ROM&nbsp;monitors&nbsp;are&nbsp;actually&nbsp;very&nbsp;powerful&nbsp;in&nbsp;their&nbsp;debugging&nbsp;abilities.&nbsp;One&nbsp;of&nbsp;<br />&nbsp;the&nbsp;first&nbsp;<br />drawbacks&nbsp;is&nbsp;a&nbsp;chicken&nbsp;and&nbsp;egg&nbsp;type&nbsp;of&nbsp;problem.&nbsp;If&nbsp;you&nbsp;are&nbsp;writing&nbsp;the&nbsp;monit&nbsp;<br />or&nbsp;for&nbsp;a&nbsp;new&nbsp;<br />processor,&nbsp;how&nbsp;do&nbsp;you&nbsp;debug&nbsp;it?&nbsp;Typically,&nbsp;you&nbsp;crash&nbsp;and&nbsp;burn&nbsp;to&nbsp;get&nbsp;basic&nbsp;c&nbsp;<br />ommunication&nbsp;<br />functions&nbsp;working.&nbsp;Then&nbsp;you&nbsp;add&nbsp;debug&nbsp;statements&nbsp;(fprints&nbsp;in&nbsp;C)&nbsp;and&nbsp;do&nbsp;a&nbsp;mod&nbsp;<br />ified&nbsp;or&nbsp;<br />“informed”&nbsp;crash&nbsp;and&nbsp;burn&nbsp;to&nbsp;get&nbsp;the&nbsp;debug&nbsp;monitor&nbsp;working.&nbsp;If&nbsp;you&nbsp;are&nbsp;goo&nbsp;<br />d,&nbsp;and&nbsp;you&nbsp;are&nbsp;<br />porting&nbsp;a&nbsp;known&nbsp;monitor,&nbsp;this&nbsp;should&nbsp;not&nbsp;take&nbsp;too&nbsp;much&nbsp;time&nbsp;(relatively&nbsp;spea&nbsp;<br />king).&nbsp;<br />Another&nbsp;drawback&nbsp;to&nbsp;ROM&nbsp;monitors&nbsp;is&nbsp;that&nbsp;the&nbsp;target&nbsp;processor&nbsp;is&nbsp;always&nbsp;runn&nbsp;<br />ing.&nbsp;Why&nbsp;is&nbsp;<br />this&nbsp;a&nbsp;problem?&nbsp;Many&nbsp;processors&nbsp;(especially&nbsp;smaller&nbsp;microcontrollers)&nbsp;have&nbsp;p&nbsp;<br />eripherals&nbsp;or&nbsp;<br />features&nbsp;that&nbsp;never&nbsp;stop.&nbsp;For&nbsp;instance,&nbsp;the&nbsp;timer&nbsp;on&nbsp;Motorola’s&nbsp;68HC05&nbsp;runs&nbsp;<br />&nbsp;continually,&nbsp;<br />even&nbsp;when&nbsp;you&nbsp;enter&nbsp;the&nbsp;monitor.&nbsp;Thus,&nbsp;any&nbsp;debugging&nbsp;of&nbsp;timer&nbsp;interrupts&nbsp;is&nbsp;&nbsp;<br />difficult&nbsp;if&nbsp;<br />not&nbsp;impossible.&nbsp;This&nbsp;includes&nbsp;real-&nbsp;time&nbsp;schedulers,&nbsp;a&nbsp;common&nbsp;piece&nbsp;of&nbsp;softw&nbsp;<br />are.&nbsp;<br />ROM&nbsp;monitors&nbsp;are&nbsp;also&nbsp;just&nbsp;that,&nbsp;monitors&nbsp;in&nbsp;ROM.&nbsp;Thus,&nbsp;you&nbsp;must&nbsp;have&nbsp;some&nbsp;R&nbsp;<br />OM&nbsp;for&nbsp;<br />the&nbsp;monitor.&nbsp;Some&nbsp;processors&nbsp;let&nbsp;you&nbsp;get&nbsp;around&nbsp;this&nbsp;if&nbsp;they&nbsp;have&nbsp;a&nbsp;type&nbsp;of&nbsp;&nbsp;<br />auto-&nbsp;bootload&nbsp;<br />that&nbsp;will&nbsp;load&nbsp;code&nbsp;into&nbsp;RAM&nbsp;on&nbsp;start-&nbsp;up&nbsp;(Motorola&nbsp;68HC11),&nbsp;usually&nbsp;via&nbsp;a&nbsp;s&nbsp;<br />erial&nbsp;port.&nbsp;In&nbsp;<br />general,&nbsp;the&nbsp;monitor&nbsp;must&nbsp;be&nbsp;resident&nbsp;and&nbsp;takes&nbsp;anywhere&nbsp;from&nbsp;256&nbsp;bytes&nbsp;of&nbsp;c&nbsp;<br />ode&nbsp;to&nbsp;30K&nbsp;<br />and&nbsp;up.&nbsp;<br />A&nbsp;typical&nbsp;ROM&nbsp;monitor&nbsp;will&nbsp;only&nbsp;debug&nbsp;code&nbsp;that&nbsp;resides&nbsp;in&nbsp;RAM.&nbsp;This&nbsp;means&nbsp;t&nbsp;<br />hat&nbsp;your&nbsp;<br />target&nbsp;must&nbsp;have&nbsp;enough&nbsp;RAM&nbsp;to&nbsp;hold&nbsp;the&nbsp;code&nbsp;and&nbsp;have&nbsp;it&nbsp;in&nbsp;the&nbsp;same&nbsp;(or&nbsp;equ&nbsp;<br />ivalent)&nbsp;<br />memory&nbsp;map&nbsp;as&nbsp;the&nbsp;final&nbsp;product’s&nbsp;ROM.&nbsp;The&nbsp;main&nbsp;reason&nbsp;for&nbsp;needing&nbsp;the&nbsp;code&nbsp;<br />&nbsp;in&nbsp;RAM&nbsp;is&nbsp;<br />for&nbsp;controlling&nbsp;the&nbsp;program’s&nbsp;execution.&nbsp;Breakpoints&nbsp;are&nbsp;typically&nbsp;implemen&nbsp;<br />ted&nbsp;in&nbsp;software&nbsp;<br />(inserting&nbsp;an&nbsp;opcode&nbsp;for&nbsp;a&nbsp;“trap”)&nbsp;and&nbsp;thus&nbsp;must&nbsp;be&nbsp;in&nbsp;RAM.&nbsp;Single&nbsp;steppin&nbsp;<br />g&nbsp;is&nbsp;often&nbsp;done&nbsp;<br />by&nbsp;inserting&nbsp;breakpoints&nbsp;in&nbsp;appropriate&nbsp;places.&nbsp;<br />ROM&nbsp;monitors&nbsp;use&nbsp;processor&nbsp;resources&nbsp;or&nbsp;require&nbsp;additional&nbsp;hardware.&nbsp;The&nbsp;mon&nbsp;<br />itor&nbsp;must&nbsp;<br />communicate&nbsp;with&nbsp;an&nbsp;external&nbsp;debugger&nbsp;(or,&nbsp;minimally,&nbsp;a&nbsp;“dumb”&nbsp;terminal)&nbsp;a&nbsp;<br />nd&nbsp;this&nbsp;<br />requires&nbsp;a&nbsp;UART.&nbsp;It&nbsp;may&nbsp;be&nbsp;an&nbsp;on-&nbsp;chip&nbsp;UART&nbsp;(thus&nbsp;using&nbsp;a&nbsp;resource)&nbsp;or&nbsp;an&nbsp;ex&nbsp;<br />ternal&nbsp;<br />UART&nbsp;requiring&nbsp;special&nbsp;hardware&nbsp;just&nbsp;for&nbsp;debug,&nbsp;eating&nbsp;up&nbsp;valuable&nbsp;board&nbsp;rea&nbsp;<br />l&nbsp;estate,&nbsp;etc.&nbsp;<br />Finally,&nbsp;since&nbsp;the&nbsp;ROM&nbsp;monitor&nbsp;runs&nbsp;on&nbsp;the&nbsp;target&nbsp;processor,&nbsp;upon&nbsp;reset&nbsp;it&nbsp;t&nbsp;<br />ypically&nbsp;does&nbsp;<br />some&nbsp;housekeeping&nbsp;on&nbsp;the&nbsp;chip.&nbsp;This&nbsp;may&nbsp;include&nbsp;initializing&nbsp;chip&nbsp;selects,&nbsp;s&nbsp;<br />etting&nbsp;the&nbsp;<br />stack&nbsp;pointer,&nbsp;clearing&nbsp;memory,&nbsp;etc.&nbsp;If&nbsp;the&nbsp;target&nbsp;code&nbsp;does&nbsp;not&nbsp;recreate&nbsp;th&nbsp;<br />is&nbsp;initialization,&nbsp;<br />the&nbsp;environment&nbsp;that&nbsp;the&nbsp;target&nbsp;code&nbsp;runs&nbsp;in&nbsp;will&nbsp;be&nbsp;different&nbsp;than&nbsp;that&nbsp;env&nbsp;<br />ironment&nbsp;<br />during&nbsp;debug.&nbsp;This&nbsp;is&nbsp;assuming&nbsp;that&nbsp;the&nbsp;final&nbsp;product&nbsp;does&nbsp;not&nbsp;go&nbsp;to&nbsp;the&nbsp;ROM&nbsp;<br />&nbsp;monitor&nbsp;on&nbsp;<br />reset.&nbsp;This&nbsp;is&nbsp;a&nbsp;vitally&nbsp;important&nbsp;point.&nbsp;Again,&nbsp;&nbsp;the&nbsp;final&nbsp;code&nbsp;may&nbsp;not&nbsp;be&nbsp;&nbsp;<br />running&nbsp;in&nbsp;the&nbsp;<br />same&nbsp;environment&nbsp;as&nbsp;the&nbsp;tested&nbsp;code.&nbsp;<br />ROM&nbsp;emulators&nbsp;main&nbsp;limitation&nbsp;is&nbsp;that&nbsp;they&nbsp;are&nbsp;limited&nbsp;to&nbsp;systems&nbsp;that&nbsp;conta&nbsp;<br />in&nbsp;external&nbsp;<br />ROM.&nbsp;This&nbsp;eliminates&nbsp;many&nbsp;microcontrollers&nbsp;that&nbsp;run&nbsp;in&nbsp;single-&nbsp;chip&nbsp;mode.&nbsp;Ad&nbsp;<br />ditionally,&nbsp;<br />since&nbsp;they&nbsp;basically&nbsp;implement&nbsp;a&nbsp;ROM&nbsp;monitor,&nbsp;all&nbsp;the&nbsp;drawbacks&nbsp;just&nbsp;mention&nbsp;<br />ed&nbsp;may&nbsp;<br />apply.&nbsp;<br />In-&nbsp;circuit&nbsp;emulators&nbsp;also&nbsp;have&nbsp;some&nbsp;drawbacks.&nbsp;The&nbsp;vast&nbsp;majority&nbsp;have&nbsp;some&nbsp;&nbsp;<br />type&nbsp;of&nbsp;<br />interface&nbsp;to&nbsp;the&nbsp;outside&nbsp;world&nbsp;(your&nbsp;target&nbsp;circuit)&nbsp;that&nbsp;is&nbsp;not&nbsp;100%&nbsp;identi&nbsp;<br />cal&nbsp;to&nbsp;the&nbsp;interface&nbsp;<br />on&nbsp;the&nbsp;actual&nbsp;chip&nbsp;(contrary&nbsp;to&nbsp;the&nbsp;advertising&nbsp;for&nbsp;the&nbsp;emulator).&nbsp;For&nbsp;insta&nbsp;<br />nce,&nbsp;the&nbsp;oscillator&nbsp;<br />circuit&nbsp;is&nbsp;usually&nbsp;in&nbsp;the&nbsp;emulator,&nbsp;not&nbsp;your&nbsp;target.&nbsp;Additionally,&nbsp;many&nbsp;emul&nbsp;<br />ators&nbsp;must&nbsp;<br />re-&nbsp;create&nbsp;parallel&nbsp;ports&nbsp;on&nbsp;microcontrollers&nbsp;since&nbsp;the&nbsp;emulator&nbsp;uses&nbsp;them&nbsp;a&nbsp;<br />s&nbsp;address&nbsp;and&nbsp;<br />data&nbsp;lines&nbsp;for&nbsp;its&nbsp;own&nbsp;use.&nbsp;There&nbsp;are&nbsp;exceptions.&nbsp;Philips&nbsp;Semiconductors’&nbsp;X&nbsp;<br />A&nbsp;emulator&nbsp;chip&nbsp;<br />uses&nbsp;a&nbsp;totally&nbsp;separate&nbsp;bond-&nbsp;out&nbsp;section&nbsp;for&nbsp;emulation&nbsp;and&nbsp;all&nbsp;user&nbsp;pins&nbsp;ar&nbsp;<br />e&nbsp;available&nbsp;<br />without&nbsp;buffering&nbsp;or&nbsp;recreation.&nbsp;The&nbsp;factory&nbsp;debugger/&nbsp;emulator&nbsp;is&nbsp;actually&nbsp;&nbsp;<br />as&nbsp;pure&nbsp;an&nbsp;<br />emulator&nbsp;as&nbsp;you&nbsp;can&nbsp;get,&nbsp;i.&nbsp;e.:&nbsp;no&nbsp;signal&nbsp;modification&nbsp;or&nbsp;additional&nbsp;loading&nbsp;<br />&nbsp;on&nbsp;the&nbsp;user&nbsp;side&nbsp;<br />of&nbsp;the&nbsp;chip.&nbsp;Do&nbsp;be&nbsp;aware&nbsp;that&nbsp;the&nbsp;author&nbsp;of&nbsp;this&nbsp;manual&nbsp;is&nbsp;the&nbsp;designer&nbsp;of&nbsp;t&nbsp;<br />hat&nbsp;board&nbsp;and&nbsp;<br />may&nbsp;be&nbsp;prejudiced.&nbsp;<br />Additionally,&nbsp;an&nbsp;in-&nbsp;circuit&nbsp;emulator&nbsp;is&nbsp;not&nbsp;always&nbsp;available.&nbsp;Many&nbsp;of&nbsp;the&nbsp;n&nbsp;<br />ewer&nbsp;<br />microcontrollers&nbsp;are&nbsp;actually&nbsp;designed&nbsp;with&nbsp;a&nbsp;single&nbsp;customer&nbsp;in&nbsp;mind.&nbsp;That&nbsp;&nbsp;<br />customer&nbsp;may&nbsp;<br />buy&nbsp;hundreds&nbsp;of&nbsp;thousands&nbsp;of&nbsp;chips&nbsp;but&nbsp;only&nbsp;need&nbsp;three&nbsp;or&nbsp;four&nbsp;debug&nbsp;station&nbsp;<br />s.&nbsp;It&nbsp;is&nbsp;not&nbsp;<br />worth&nbsp;the&nbsp;cost&nbsp;of&nbsp;developing&nbsp;an&nbsp;ICE&nbsp;for&nbsp;three&nbsp;sales!&nbsp;One&nbsp;solution&nbsp;is&nbsp;from&nbsp;He&nbsp;<br />wlett&nbsp;Packard&nbsp;<br />with&nbsp;their&nbsp;“Distributed&nbsp;Emulation”,&nbsp;basically&nbsp;an&nbsp;OCD&nbsp;debugger&nbsp;and&nbsp;a&nbsp;sophis&nbsp;<br />ticated&nbsp;logic&nbsp;<br />analyzer&nbsp;working&nbsp;with&nbsp;a&nbsp;single&nbsp;user&nbsp;interface&nbsp;to&nbsp;essentially&nbsp;create&nbsp;a&nbsp;custom&nbsp;<br />&nbsp;ICE.&nbsp;<br />In-&nbsp;circuit&nbsp;emulators&nbsp;are&nbsp;generally&nbsp;expensive.&nbsp;They&nbsp;typically&nbsp;include&nbsp;high-&nbsp;&nbsp;<br />speed&nbsp;memory&nbsp;<br />(read:&nbsp;expensive),&nbsp;ASICs&nbsp;(read:&nbsp;expensive),&nbsp;and&nbsp;specialized&nbsp;cables&nbsp;(read:&nbsp;ex&nbsp;<br />pensive).&nbsp;<br />On&nbsp;the&nbsp;positive&nbsp;side,&nbsp;an&nbsp;ICE&nbsp;will&nbsp;typically&nbsp;give&nbsp;you&nbsp;real-&nbsp;time&nbsp;trace,&nbsp;not&nbsp;u&nbsp;<br />se&nbsp;processor&nbsp;<br />resources,&nbsp;and&nbsp;allow&nbsp;debugging&nbsp;without&nbsp;target&nbsp;hardware.&nbsp;<br />As&nbsp;for&nbsp;OCD,&nbsp;it&nbsp;has&nbsp;no&nbsp;drawbacks.&nbsp;<br />Seriously,&nbsp;it&nbsp;does&nbsp;have&nbsp;a&nbsp;few&nbsp;drawbacks.&nbsp;The&nbsp;target&nbsp;usually&nbsp;needs&nbsp;RAM&nbsp;instea&nbsp;<br />d&nbsp;of&nbsp;ROM&nbsp;<br />for&nbsp;debugging,&nbsp;but&nbsp;this&nbsp;is&nbsp;not&nbsp;always&nbsp;necessary.&nbsp;There&nbsp;typically,&nbsp;but&nbsp;not&nbsp;al&nbsp;<br />ways,&nbsp;is&nbsp;no&nbsp;form&nbsp;<br />of&nbsp;real-&nbsp;time&nbsp;trace.&nbsp;<br />&nbsp;<br />--&nbsp;<br />&nbsp;<br />※&nbsp;来源:·BBS&nbsp;水木清华站&nbsp;smth.org·[FROM:&nbsp;202.117.114.7]&nbsp;<br /><a href="00000002.htm">上一篇</a><a href="javascript:history.go(-1)">返回上一页</a><a href="index.htm">回到目录</a><a href="#top">回到页首</a><a href="00000004.htm">下一篇</a></h1></center><center><h1>BBS 水木清华站∶精华区</h1></center></body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -