欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
【轉】純linux下jlink調試

純linux下jlink調試

上一篇文章說(shuō)到在ads中如何裸奔代碼(bin文件),很遺憾,如果用gcc編譯的elf文件ads并不能很好支持,當然帶調試信息的elf文件debug起來(lái)總是比較方便的;當然以下是各種方案:
1 linux gcc
編譯,windows ads或者iar調試;
2 linux gcc
編譯,windows keil或者realview調試;
3 windows
ads或者keil或者iar編譯調試;
4 windows
下用cygwin或者用GNUARM之類(lèi)的編譯,然后用gdb insight 配合gdb server調試。
5
虛擬機linux gcc編譯,然后運行gdb通過(guò)串口tcp遠程調試win主機的target,需要win端有一個(gè)gdbserver,如jlink gdbserver;
6
linux gcc編譯,gdbopenocdjlink或者wiggler調試,今天重點(diǎn)就是這個(gè)。

(1
(2)上一篇文章講過(guò)了,(3)相信大多數人都現在用著(zhù),(4)也很多資料介紹。
(5)
我之前實(shí)驗過(guò),vmware,insight啟動(dòng)后提示connection reset by peer。by the way:由于jlink gdbserver的端口(2331)無(wú)法更改,我的insight也神神秘秘的target selection對話(huà)框無(wú)法輸入,默認端口是1000,真讓人抓狂!這個(gè)問(wèn)題很多人問(wèn),其實(shí)insight啟動(dòng)后會(huì )在當前用戶(hù)主目錄執行.gdbtkinit這個(gè)文件,里面保存了很多配置信息,大家可以進(jìn)去看看,端口也是在里面更改的。


 

 

 

準備工作:
1
)本地gcc編譯器,一般linux自帶的就可以。
2
)交叉gcc編譯器,現成的或者用crosstool自己編譯一個(gè),可以參照我前面的文章。
3)insight
源碼。
4)openocd
源碼。

安裝insightopenocd
1
)安裝insight
# ./configure --prefix=/opt/crosstool/insight --target=arm-softfloat-linux --enable-sim
# make
# make install
2)
安裝
openocd(0.3.0)
# ./configure --prefix=/opt/crosstool/openocd --enable-parport--enable-jlink
# make
# make install

配置openocd

1
)好好看看官方的文檔,openocd每一個(gè)版本之間的命令差異很大。
2)
按照良好的編程習慣,openocd推薦你按照以下步驟配置openocd
配置
interface
配置
openocd
配置
board
配置
target
../openocd-0.3.0/share/openocd/scripts
有很多樣板腳本可以參考。

官方建議大家把共享的腳本寫(xiě)在一個(gè)cfg里面,差異化的按類(lèi)別寫(xiě),多個(gè)腳本可以用-fopenocd啟動(dòng)時(shí)候指定,也可以在一個(gè)cfg文件像c語(yǔ)言一樣include另外一個(gè)cfg文件,我寫(xiě)成一個(gè)腳本方便調試,大家可別學(xué)我哦。
腳本放在當前程序調試文件夾,openocd啟動(dòng)時(shí)候自動(dòng)搜索openocd.cfg文件執行腳本命令。
以下是我的openocd.cfg

#-------------------------------------------------------------------------
# Target configuration for the Samsung 44b0 system on chip
# Tested on a S3C44b0 Evaluation board
# Processor : ARM7tdmi
# Info: JTAG tap: s3c44b0.cpu tap/device found: 0x1f0f0f0f
#  (Manufacturer:
#-------------------------------------------------------------------------

if { [info exists CHIPNAME] } {
   set  _CHIPNAME $CHIPNAME
} else {
   set  _CHIPNAME s3c44b0
}

if { [info exists ENDIAN] } {
   set  _ENDIAN $ENDIAN
} else {
  # this defaults to a bigendian
   set  _ENDIAN little
}

if { [info exists CPUTAPID ] } {
   set _CPUTAPID $CPUTAPID
} else {
  # force an error till we get a good number
   set _CPUTAPID 0x1f0f0f0f
}

#jtag scan chain
jtag newtap $_CHIPNAME cpu -irlen 4 -ircapture 0x1 -irmask 0x0f -expected-id $_CPUTAPID

set _TARGETNAME [format "%s.cpu" $_CHIPNAME]
target create $_TARGETNAME arm7tdmi -endian $_ENDIAN -chain-position $_TARGETNAME -variant arm7tdmi
#$_TARGETNAME configure -work-area-virt 0 -work-area-phys 0x40000000  -work-area-size 0x4000 -work-area-backup 1

#-------------------------------------------------------------------------
#interface
#-------------------------------------------------------------------------
interface jlink

#-------------------------------------------------------------------------
#reset configuration
#-------------------------------------------------------------------------
jtag_nsrst_delay 200
jtag_ntrst_delay 200
reset_config trst_and_srst

#-------------------------------------------------------------------------
# JTAG ADAPTER SPECIFIC
# IMPORTANT! See README at top of this file.
#-------------------------------------------------------------------------

    jtag_khz 3000


#-------------------------------------------------------------------------
# GDB Setup
#-------------------------------------------------------------------------
    telnet_port 4444
    gdb_port 2331
    tcl_port 6666
    echo " "
    echo "-------------------------------------------"
    echo "--- login with - telnet localhost 4444  ---"
    echo "--- gdb_port 2331                       ---"
    echo "-------------------------------------------"
    echo " "  
    gdb_breakpoint_override soft
    gdb_memory_map disable

#------------------------------------------------
# ARM SPECIFIC
#------------------------------------------------


  #  arm7_9 dcc_downloads enable
  #  arm7_9 fast_memory_access enable

    arm7_9 dbgrq disable
 
#------------------------------------------------
# Processor Initialialization
# Note: Processor writes can only occur when
# the state is in SYSTEM. When you call init_44b0
#------------------------------------------------

proc init_44b0 { } {

    halt
    s3c44b0.cpu curstate
    arm7_9 write_xpsr 0xd3 0
#-----------------------------------------------------------------
#-----------------------------System configure----------------------
#-----------------------------------------------------------------
#SYSCFG;INTMSK;WTCON
#PLLCON,10MHZ OSC,66M OUT
#SBUSCON;BWSCON;BANKCON0;BANKCON1;BANKCON2;BANKCON3;BANKCON4;BANKCON5;BANKCON6;BANKCON7
#REFRESH;BANKSIZE;MRSRB6;MRSRB7

    mww phys 0x01C00000 0x0E      
    mww phys 0x01E0000C 0x07FFFFFF
    mww phys 0x01D30000 0x0       
    mww phys 0x01D80000 0x0003A031
    mww phys 0x01C40000 0x80001B1B 
    mww phys 0x01C80000 0x11110112    
    mww phys 0x01C80004 0x00000600      
    mww phys 0x01C80008 0x00000700     
    mww phys 0x01C8000C 0x00000700      
    mww phys 0x01C80010 0x00000700       
    mww phys 0x01C80014 0x00000700       
    mww phys 0x01C80018 0x00000700       
    mww phys 0x01C8001C 0x00018000      
    mww phys 0x01C80020 0x00018000      
    mww phys 0x01C80024 0x0086041A       
    mww phys 0x01C80028 0x00000016      
    mww phys 0x01C8002C 0x00000020       
    mww phys 0x01C80030 0x00000020       
  
#-----------------------------------------------------------------
#-----------------------------Port configure----------------------
#-----------------------------------------------------------------
#PCONA#;PDATA;PCONC;PUPC;PDATC;PDATD;PCOND;PUPD;PCONE;PDATE;PUPE;
#PCONF;PUPF;PDATF;PDATG;PCONG;PUPG;PDATB;PCONB


    mww phys 0x01D20000 0x000001FF
    mww phys 0x01D20004 0x00000000
    mww phys 0x01D20010 0xfff5ff55
    mww phys 0x01D20014 0x00000000
    mww phys 0x01D20018 0x00003000
    mww phys 0x01D2001C 0x0000AAAA
    mww phys 0x01D20020 0x00000055
    mww phys 0x01D20024 0x00000000
    mww phys 0x01D20028 0x0000556B
    mww phys 0x01D2002C 0x00000357
    mww phys 0x01D20030 0x00000006
    mww phys 0x01D20034 0x0022445A
    mww phys 0x01D20038 0x00000000
    mww phys 0x01D2003C 0x000001D3
    mww phys 0x01D20040 0x00000000
    mww phys 0x01D20044 0x000000FF
    mww phys 0x01D20048 0x00000000
    mww phys 0x01D20008 0x0000004F
    mww phys 0x01D2000C 0x0000004F
}

$_TARGETNAME configure -event gdb-attach init_44b0

init
#----------------------------------------------------------------------------
#----------------------------------- END ------------------------------------
#----------------------------------------------------------------------------

配置.gdbinit
GDB
在啟動(dòng)的時(shí)候會(huì )按一定的路徑順序(通常是先當前目錄而后用戶(hù)目錄)尋找 .gdbinit 文件,一旦找到,就會(huì )自動(dòng)執行里面的命令。這個(gè)功能允許用戶(hù)把常用的一些命令放在這個(gè)文件里,這樣就不用每次進(jìn)入 gdb 后再去手動(dòng)執行這些命令。事實(shí)上,.gdbinit 就是一個(gè)腳本,甚至可在里面把常用的若干 gdb命令序列定義成一個(gè)新命令,這樣只要在 gdb 里面輸入這個(gè)新命令就等于自動(dòng)執行了被定義的那個(gè)命令序列。

以下是我的.gdbinit文件

#GDB 6.8 and higher set any memory area not in the memory map as inaccessible, this can be changed to the old behaviour by using the following gdb command.
set mem inaccessible-by-default off

#Previous versions of OpenOCD required the following gdb options to increase the packet size and speed up gdb communication.
#This is now handled in the qSupported PacketSize.
#
但是現在如果去掉,還是出現(openocd那邊):Warning:acknowledgment received, but no packet pending
#Warning:negative reply, retrying
#Error: GDB missing ack(2) - assumed good
#Warning:negative reply, retrying
#
之類(lèi)的錯誤,gdbconsole窗口也會(huì )出現錯誤。

set remote memory-write-packet-size 1024
set remote memory-write-packet-size fixed
set remote memory-read-packet-size 1024
set remote memory-read-packet-size fixed

target remote localhost:2331
monitor sleep 500
monitor poll
monitor soft_reset_halt

 

 

接下來(lái)現啟動(dòng)openocd服務(wù),等待gdb或者insight來(lái)連接。
命令我就不寫(xiě)了
//______________________________________________//
force soft breakpoints
use of EmbeddedICE dbgrq instead of breakpoint for target halt disabled
Info : J-Link initialization started / target CPU reset initiated
Info : J-Link ARM V7 compiled Jun 30 2009 11:05:27
Info : JLink caps 0xb9ff7bbf
Info : JLink hw version 70000
Info : JLink max mem block 9152
Info : Vref = 3.222 TCK = 1 TDI = 0 TDO = 0 TMS = 0 SRST = 0 TRST = 0

Info : J-Link JTAG Interface ready
Info : clock speed 3000 kHz
Info : JTAG tap: s3c44b0.cpu tap/device found: 0x1f0f0f0f (mfg: 0x787, part: 0xf0f0, ver: 0x1)
Info : Embedded ICE version 1

注意:openocd執行時(shí)候需要讀寫(xiě)jlink,普通用戶(hù)可能沒(méi)有這個(gè)權限,需要admin權限,而jlink不是usbfs設備,暫時(shí)沒(méi)有弄給普通用戶(hù)添加jlink的權限。普通用戶(hù)執行openocd會(huì )出現如下錯誤:

force soft breakpoints
use of EmbeddedICE dbgrq instead of breakpoint for target halt disabled
Info : J-Link initialization started / target CPU reset initiated
Error: J-Link command 0xde failed (-1)
Error: J-Link command 0xdc failed (-1)
Error: J-Link command 0x01 failed (-1)
Error: J-Link command EMU_CMD_VERSION failed (-1)

然后啟動(dòng)insight:命令我就不寫(xiě)了呵呵


 

最后下載,然后就可以調試了,也可以在gdb控制臺輸入命令來(lái)調試。

可愛(ài)的hello world 出現了:

 

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
【轉】ubuntu linux下openocd gdb-insight 用Jlink調試arm程序
Ubuntu 11.04 OpenJTag OpenOCD Mini6410 配置
openOCD+jlink調試uboot
終于成功搭配好jlink +jlink gdb server +insight的調試環(huán)境
STM32 · Arduino中國
關(guān)于OpenOCD的安裝配置(以mini2440+OpenJTAG為例)
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久