天天看點

K60(Cortex-M4)開源開發探索(六)—— OpenOCD的配置        1、Daemon         2、Interface        3、board        4、Target

      OpenOCD需要針對不同的JTAG工具和不同的目标晶片,配置一個配置文檔。一般而言,配置文檔分為4個部分。

        1、Daemon

         主要是配置openocd對外的通訊所使用的本地TCP/IP端口,如gdb、telnet所使用的端口。 接口Port的定義一般如下(非特殊情況,無需修改,定義了一些端口号)

telnet_port 4444
         tcl_port 6666
           

         在用telnet或gdb進行調試時,将會根據定義的端口号連接配接到服務程式openocd上。     

         2、Interface

          就是openocd所操作的連接配接開發闆的調試器。

# type of debug adapter
          interface ft2232 
          # Provides the USB device description (the iProduct string) of the FTDI FT2232 device. If not specified, the FTDI default value is used.
         ft2232_device_desc "USB<=>JTAG&RS232" 
         # Each vendor’s FT2232 device can use different GPIO signals to control output-enables, reset signals, and LEDs
         ft2232_layout jtagkey 
         # The vendor ID and product ID of the FTDI FT2232 device
         ft2232_vid_pid 0x1457 0x5118 
           

         注: 檢視ID的方法:            lsusb //檢視裝置的相關簡要資訊

           擷取如下:

Bus 006 Device 030: ID 1457:5118 First International Computer, Inc. OpenMoko Neo1973 Debug board (V2+)
           

           擷取更詳細的資訊:

sudo lsusb -v -D /dev/bus/usb/006/030
           

           詳細資訊如下:

Device: ID 1457:5118 First International Computer, Inc. OpenMoko Neo1973 Debug board (V2+)
    Device Descriptor:
    bLength                18
    bDescriptorType         1
    bcdUSB               2.00
    bDeviceClass            0 (Defined at Interface level)
    bDeviceSubClass         0 
    bDeviceProtocol         0 
    bMaxPacketSize0         8
    idVendor           0x1457 First International Computer, Inc.
    idProduct          0x5118 OpenMoko Neo1973 Debug board (V2+)
    bcdDevice            5.00
    iManufacturer           1 www.100ask.net
    iProduct                2 USB<=>JTAG&RS232
    iSerial                 0 
    bNumConfigurations      1
    Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           55
    bNumInterfaces          2
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0x80
    (Bus Powered)
    MaxPower              100mA
    Interface Descriptor:
    bLength                 9
    bDescriptorType         4
	bInterfaceNumber        0
    bAlternateSetting       0
    bNumEndpoints           2
    bInterfaceClass       255 Vendor Specific Class
    bInterfaceSubClass    255 Vendor Specific Subclass
    bInterfaceProtocol    255 Vendor Specific Protocol
    iInterface              2 USB<=>JTAG&RS232
    Endpoint Descriptor:
    bLength                 7
	bDescriptorType         5
	bEndpointAddress     0x81  EP 1 IN
    bmAttributes            2
    Transfer Type            Bulk
    Synch Type               None
    Usage Type               Data
	wMaxPacketSize     0x0040  1x 64 bytes
	bInterval               0
    Endpoint Descriptor:
    bLength                 7
	bDescriptorType         5
	bEndpointAddress     0x02  EP 2 OUT
	bmAttributes            2
	Transfer Type            Bulk
	Synch Type               None
	Usage Type               Data
	wMaxPacketSize     0x0040  1x 64 bytes
	bInterval               0
    Interface Descriptor:
	bLength                 9
    bDescriptorType         4
    bInterfaceNumber        1
    bAlternateSetting       0
    bNumEndpoints           2
    bInterfaceClass       255 Vendor Specific Class
    bInterfaceSubClass    255 Vendor Specific Subclass
    bInterfaceProtocol    255 Vendor Specific Protocol
    iInterface              2 USB<=>JTAG&RS232
    Endpoint Descriptor:
    bLength                 7
    bDescriptorType         5
    bEndpointAddress     0x83  EP 3 IN
    bmAttributes            2
    Transfer Type            Bulk
    Synch Type               None
    Usage Type               Data
    wMaxPacketSize     0x0040  1x 64 bytes
    bInterval               0
    Endpoint Descriptor:
    bLength                 7
    bDescriptorType         5
    bEndpointAddress     0x04  EP 4 OUT
    bmAttributes            2
    Transfer Type            Bulk
    Synch Type               None
    Usage Type               Data
    wMaxPacketSize     0x0040  1x 64 bytes
    bInterval               0
    Device Status:     0x0000
(Bus Powered)
           

        3、board

       (1)jtag速率         對于常見的arm、arm9,jtag配置的最大速率不能高于于cpu時鐘的六分之一。如果所用的cpu時鐘為60Mhz,是以jtag最大速率可設定為:

jtag_khz 10000
           

         如果使用

jtag_rclk 3000
           

        即使用自适應時鐘,它将會用rclk自己搜尋jtag工作頻率,速度會很慢。

        (2)晶片複位         這裡配置的為jtag和target cpu可用的複位信号。其中複位jtag中的tap控制器的為trst信号,srst信号用于target cpu複位,它是都是可選的。最好的情況是這兩個信号都有,這樣openocd就可分别控制tap控制器和cpu的複位。

reset_config trst_and_srst
           

        4、Target

        在/usr/local/share/openocd/scripts/target目錄下可以找到很多晶片的配置例程,是以參照樣本添加配置。

        配置TAP是一個通用的端口,通過TAP可以通路晶片提供的所有資料寄存器(DR)和指令寄存器(IR),配置文法為:

jtag newtap $_CHIPNAME cpu -irlen 4 -ircapture 0×1 -irmask 0xf -expected-id $_CPUTAPID
           

       配置cpu 此處設定cpu名稱以及大小端排列順序即可。配置如下:

target create $_TARGETNAME cortex_m3 -endian $_ENDIAN -chain-position $_TARGETNAME
           

       在使用openocd下載下傳映像到ram時,為了提高速度,在ram中設定一塊工作區域,配置如下:

$_TARGETNAME configure -work-area-phys 0x20000000 -work-area-size $_WORKAREASIZE -work-area-backup 0
           

       由于K60是Cortex-M4的核心,相比之前的arm系列有很大的不同,openocd針對cortex系列也有很多的特殊配置,是以上面的配置還隻是初級的配置文檔,更加詳細的配置還要待今後對這一核心進入深入研究之後再添加了。

       參考連結:http://a.chinaunix.com/space.php?uid=23947686&do=blog&id=172600

----------------------------------------------------------------

歡迎大家轉載我的文章。

轉載請注明:轉自古-月

http://blog.csdn.net/hcx25909

歡迎繼續關注我的部落格