这段时间在用jlink调试freescale的mx51板子,下面将使用jlink的方法在此做一个笔记。 jlink是segger公司的产品,由于正版的工具巨贵,所以现在大部分人都喜欢用山寨版的jlink,幸运的是我的山寨版jlink支持arm cortex a8,所以能调试mx51板子。 jlink的官方提供调试软件和驱动,调试软件有jlink commander(j-tag调试)、j-mem(内存查看)、j-flash(flash烧写)等。我主要用到的是jlink commander,以下是它的命令集: SEGGER J-Link Commander V4.20h ('?' for help) Compiled Oct 5 2010 19:11:57 DLL version V4.20h, compiled Oct 5 2010 19:11:41 Firmware: J-Link ARM V8 compiled Oct 5 2010 08:59:59 Hardware: V8.00 S/N: 20100214 Feature(s): RDI,FlashDL,FlashBP,JFlash,GDBFull VTarget = 3.280V Info: TotalIRLen = ?, IRPrint = 0x..FFFFFFFFFFFFFFFFFFFFFFF1
WARNING: CPU core not found. No devices found on JTAG chain. Trying to find device on SWD.
WARNING: CPU core not found.
****** Error: Parity error (Data = 0xFFFFFFFF, ReceivedParity = 1)
No device found on SWD. Did not find any core. Info: TotalIRLen = 9, IRPrint = 0x0011 Found 2 JTAG devices, Total IRLen = 5: #0 Id: 0x2B900F0F, IRLen: 04, IRPrint: 0x0, ARM ETB #1 Id: 0x07B76F0F, IRLen: 05, IRPrint: 0x1, ARM1176 Core ARM11 identified.
Available commands are: ---------------------- f Firmware info h halt g go Sleep Waits the given time (in milliseconds). Syntax: Sleep <delay> s Single step the target chip st Show hardware status hwinfo Show hardware info mem Read memory. Syntax: mem <Addr>, <NumBytes> (hex) mem8 Read 8-bit items. Syntax: mem8 <Addr>, <NumBytes> (hex) mem16 Read 16-bit items. Syntax: mem16 <Addr>, <NumItems> (hex) mem32 Read 32-bit items. Syntax: mem32 <Addr>, <NumItems> (hex) w1 Write 8-bit items. Syntax: w1 <Addr>, <Data> (hex) w2 Write 16-bit items. Syntax: w2 <Addr>, <Data> (hex) w4 Write 32-bit items. Syntax: w4 <Addr>, <Data> (hex) wm Write test words. Syntax: wm <NumWords> is Identify length of scan chain select register ms Measure length of scan chain. Syntax: ms <Scan chain> mr Measure RTCK react time. Syntax: mr q Quit qc Close JLink connection and quit r Reset target (RESET) rx Reset target (RESET). Syntax: rx <DelayAfterReset> RSetType Set the current reset type. Syntax: RSetType <type> Regs Display contents of registers wreg Write register. Syntax: wreg <RegName>, <Value> SetBP Set breakpoint. Syntax: SetBP <addr> [A/T] [S/H] SetWP Set Watchpoint. Syntax: <Addr> [R/W] [<Data> [<D-Mask>] [A-Mask]] ClrBP Clear breakpoint. Syntax: ClrBP <BP_Handle> ClrWP Clear watchpoint. Syntax: ClrWP <WP_Handle> VCatch Write vector catch. Syntax: VCatch <Value> loadbin Load binary file into target memory. Syntax: loadbin <filename>, <addr> savebin Saves target memory into binary file. Syntax: savebin <filename>, <addr>, <NumBytes> SetPC Set the PC to specified value. Syntax: SetPC <Addr> le Change to little endian mode be Change to big endian mode log Enables log to file. Syntax: log <filename> unlock Unlocks a device. Syntax: unlock <DeviceName> Type unlock without <DeviceName> to get a list of supported device names. nRESET has to be connected ---- CP15 ------------ rce Read CP15. Syntax: rce <Op1>, <CRn>, <CRm>, <Op2> wce Write CP15. Syntax: wce <Op1>, <CRn>, <CRm>, <Op2>, <Data> ---- ICE ------------- Ice Show state of the embedded ice macrocell (ICE breaker) ri Read Ice reg. Syntax: ri <RegIndex>(hex) wi Write Ice reg. Syntax: wi <RegIndex>, <Data>(hex) ---- ETM ------------- etm Show ETM status re Read ETM reg. Syntax: re <RegIndex> we Write ETM reg. Syntax: we <RegIndex>, <Data>(hex) es Start trace ---- ETB ------------- etb Show ETB status rb Read ETB register. Syntax: rb <RegIndex> wb Write ETB register. Syntax: wb <RegIndex>, <Data>(hex) ---- TRACE ----------- TAddBranch TRACE - Add branch instruction to trace buffer. Paras:<Addr>,<BAddr> TAddInst TRACE - Add (non-branch) instruction to trace buffer. Syntax: <Addr> TClear TRACE - Clear buffer TSetSize TRACE - Set Size of trace buffer TSetFormat TRACE - SetFormat TSR TRACE - Show Regions (and analyze trace buffer) TStart TRACE - Start TStop TRACE - Stop ---- SWO ------------- SWOSpeed SWO - Show supported speeds SWOStart SWO - Start SWOStop SWO - Stop SWOStat SWO - Display SWO status SWORead SWO - Read and display SWO data SWOShow SWO - Read and analyze SWO data SWOFlush SWO - Flush data ---- File I/O -------- fwrite Write file to emulator fread Read file from emulator fshow Read and display file from emulator fdelete Delete file on emulator fsize Display size of file on emulator ---- Test ------------ thg Run go/halt 1000 times ts Run step 1000 times testwspeed Test download speed. Syntax: testwspeed [<Addr> [<Size>]] testrspeed Test upload speed. Syntax: testrspeed [<Addr> [<Size>] [<NumBlock s>]] testcspeed Test CPU speed. Syntax: testcspeed [<RAMAddr>] ---- JTAG ------------ Config Set number of IR/DR bits before ARM device. Syntax: Config <IRpre>, <DRpre> speed Set JTAG speed. Syntax: speed <freq>|auto|adaptive, e.g. speed 2000, speed a i Read JTAG Id (Host CPU) wjc Write JTAG command (IR). Syntax: wjc <Data>(hex) wjd Write JTAG data (DR). Syntax: wjd <Data32>(hex), <NumBits>(dec) RTAP Reset TAP Controller using state machine (111110) wjraw Write Raw JTAG data. Syntax: wjraw <NumBits(dec)>, <tms>, <tdi> rt Reset TAP Controller (nTRST) ---- JTAG-Hardware --- c00 Create clock with TDI = TMS = 0 c Clock 0 Clear TDI 1 Set TDI t0 Clear TMS t1 Set TMS trst0 Clear TRST trst1 Set TRST r0 Clear RESET r1 Set RESET ---- Connection ------ usb Connect to J-Link via USB. Syntax: usb <port>, where port is 0..3 ip Connect to J-Link ARM Pro or J-Link TCP/IP Server via TCP/IP. Syntax: ip <ip_addr> ---- Configuration --- si Select target interface. Syntax: si <Interface>, where 0=JTAG and 1=SWD. power Switch power supply for target. Syntax: power <State> [perm], where State is either On or Off. Example: power on perm wconf Write configuration byte. Syntax: wconf <offset>, <data> rconf Read configuration bytes. Syntax: rconf usbaddr Assign usb address to the connected J-Link: Syntax: usbaddr = <addr> ipaddr Show/Assign IP address and subnetmask of/to the connected J-Link. gwaddr Show/Assign network gateway address of/to the connected J-Link. dnsaddr Show/Assign network DNS server address of/to the connected J-Link. conf Show configuration of the connected J-Link. ecp Enable the J-Link control panel. calibrate Calibrate the target current measurement. ---------------------- NOTE: Specifying a filename in command line will start J-Link Commander in script mode.
总结一下我们使用的最多的命令: usb--------连接目标板 r----------重启目标板 halt-------停止cpu运行的程序 loadbin----加载可执行的二进制文件 g----------跳到代码段地址执行 s----------单步执行(调试用) setpc-----设置pc寄存器的值(调试用) setbp-----设置断点
Regs-------读寄存器组织 wreg-------写寄存器 mem--------读内存 w4---------写内存 power off mmu---关闭mmu,这个对于裸板调试很重要 w4 cpsr,0x0000001f------切换到系统模式
speed------设置jtag的传输速率 rce 0,c0,c0,0-----设置cp15寄存器的第1个寄存器为0
完结。 |