16981|51

73

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

O-Link发布RC版本(硬件已验证),提供原生OpenOCD程序,建立mailli [复制链接]

丑媳妇总要见公婆的,既然做了,总有发布的一天,虽然在国内估计这个平台使用的人相当的极其少。
感谢万利赠送的免费开发套件,使得我有机会可以玩玩新的ARM核
警告:使用这个环境需要有一定的基础,可能需要看一些英文文档,甚至可能需要看一些源代码。
准备使用的人发份mail我(webmaster#simonqian.com),建立邮件列表,以后提供内部测试版本。目前已有2人。

LZ位:介绍,并发布(基于GPLv2的源代码和原理图)
1楼:介绍如何配置这个开发环境(IAR EWARM 5.11 + OpenOCD + O-Link)
2楼:已发现的问题
3楼:FAQ


【介绍】
O-Link是我自己开发的基于GPLv2开源协议的低成本JTAG调试器,上位机使用OpenOCD,可以使用IAR EWARM 5.11通过GDB Server来调试STM32芯片,其他芯片和平台暂没有测试。O-Link的USB协议可以叠加在其他的设备上(省的自己开发驱动),我自己使用的版本就是叠加在JTAGICE mkII设备上的,这样同一个设备,既可以只是AVR芯片的ISP和JTAG下载程序,也可以支持STM32的JTAG接口下载程序和调试。当然,如果有人愿意提供一个PID/VID的话,也可以开发独立的O-Link驱动。


【主页(新PCB完成后更新)】
http://www.SimonQian.com/en/O-Link/


【说明】
1.为什么使用OpenOCD?
因为ARM公司不可能提供给我RDI协议和许可,还好有GDB这个开源的调试工具,而EWARM 5.11戏剧性的支持了这个协议,如果以后RVMDK也可以支持GDB的话,那也可能同样可以支持O-Link了。
2.我测试的速度
笔记本是IBM T60,T7200的CPU,2G的RAM,使用IAR EWARM 5.11通过GDB Server连接到OpenOCD后,调试STM32的一个简单Demo程序(亮亮LED而已),设置了5个端点,可以正常调试。通过IAR显示的信息的第一行(速度)测试速度,平均7.50KB/s(RPBF时7.91KB/s)。以上测试的O-Link的固件代码为IAR EWARM 5.11编译,使用最大size优化。
3.开发O-Link使用的工具
硬件使用KiCAD制作
固件使用Codesourcery的GCC或者IAR EWARM 5.11 Kickstart(RVMDK还有一个设置问题没解决)
4.上位机支持
目前支持所有可以使用GDB Gerver的上位机,包括各种xxxx-gdb和IAR EWARM 5.11(可以在Linux下正常模拟运行)。MDK目前没有支持GDB Server,所以不能支持O-Link。
5.使用的开源协议
目前暂定使用GPLv2协议,不排除以后升级更新的GPL协议。所有资料都可以免费使用,但没有得到许可的话不得用于商业目的
6.其他具有JTAG接口的芯片的支持
目前已经测试的可以支持STM32,LPC,AVR芯片
7.USB协议(暂时使用,如果有版权问题,请立即通知,我马上修改)
使用了和JLink totally different的协议,没想到即使调试STM32,jtag速度也可以设置到更高了(找到了原来jtag速度加快stm32容易出错的原因),目前测试速度突破7KB/s,并向8KB/s挺进
/// no parameters
/// return version string
#define OLINK_CMD_CONN                0x80
/// no parameters
/// no return data
#define OLINK_CMD_DISCONN            0x81
/// parameter 1(1 byte): jtag speed
/// no return data
#define OLINK_CMD_SET_SPEED            0x82
/// parameter 1(1 byte): port mask
/// parameter 2(1 byte): port data
/// no return data
#define OLINK_CMD_SET_PORT            0x90
/// parameter 1(2 bytes): length in bytes
/// parameter 2(length in bytes): JTAGSEQ Commands
/// return data: JTAGSEQ return data
#define OLINK_CMD_HW_JTAGSEQ        0xA0

/// parameter 1(length in bytes): tms data
/// no return data
#define OLINK_CMDJTAGSEQ_TMSBYTE    0x00
/// parameter 1(length in bits): tms data
/// no return data
#define OLINK_CMDJTAGSEQ_TMSBIT        0x10
/// parameter 1(1 byte): length in bytes
/// parameter 2(length bytes): tdi data, last 2 bytes are tms data
/// return data: tdo data
#define OLINK_CMDJTAGSEQ_SCAN        0x20


【Demo版本】
说明:
O-Link使用了一个STM32F103C8芯片(C6应该也可,但不保证;C8以上的没有必要,因为我使用IAR ERARM 5.11 Kickstart版本),目前可以使用的JTAG速度最高为18M,其他可以使用的速度依次为:18M/2,18M/4,18M/8,18M/16,18M/32,18M/64,18M/128。

原理图:
终于拿到了PCB,芯片只有一块,PCB送来了16快,有够晕的。基本上一次搞定了。想弄个透明的热缩套管做外壳
不知道拆STM32的芯片容易不?想把stlinkII上的芯片拆下来,再做一个O-Link,不过胆电容没了,图片里的那个是用stlinkII上的胆电容。。。。经过不懈努力,顺利把STM32拆坏了(难怪大学里人称:开发板杀手)
测试了几次,速度都在7KB/s以上,看来青出于蓝而胜于蓝啊






20080627更新
STM32USBBoot源代码:http://www.SimonQian.com/download/STM32USBBoot.zip
STM32USBBoot使用USB接口模拟成串口,并实现了Flashloader协议,直接使用stm32boot或者Flashloader程序既可下载固件

O-Link源代码:http://www.SimonQian.com/download/O-Link1.0.zip
这个版本的代码使用的驱动是JTAGICE mkII,所以需要安装AVR Studio后方可以安装设备

OpenOCD中的O-Link驱动:http://www.SimonQian.com/download/olink.c

Windows原生openocd.exe(不需要Cygwin,但需要安装MinGW runtime):http://www.SimonQian.com/download/openocd.zip
此帖出自stm32/stm8论坛

最新回复

                                 FT2232,jlink,usbprogO-Link需要自己给openocd打个补丁就可以支持了,openocd可以支持许多芯片的JTAG调试,O-Link并没有支持那么多(有3个类型的芯片不支持),不过一般使用是够了。O-Link是这些调试器中成本最低的,性能上至少要比usbprog高   详情 回复 发表于 2008-6-21 13:35
点赞 关注
 

回复
举报

76

帖子

0

TA的资源

一粒金砂(初级)

沙发
 

环境的配置

【OpenOCD介绍】
OpenOCD为嵌入式目标系统提供一个调试,在线编程和JTAG边界扫描测试的工具。支持Wiggler,基于FT2232的JTAG界面等一些调试器。目标芯片支持ARM7,ARM9和Cortex等核心的芯片。并提供一个GDB Server接口。最新的SVN版本支持JLink。O-Link的支持需要自己添加一个驱动文件。


【OpenOCD的编译和安装】
建议使用LZ位的原生openocd程序,使用MinGW编译
由于需要自己添加驱动文件,所以只能自行编译OpenOCD。
首先,如果是Windows平台的话,需要先安装Cygwin环境(带有build的基本工具,如m4等;为了省麻烦,可以完全安装,占用4G多的空间,需要下载700M的文件),如何安装?自己google
然后下载OpenOCD的SVN源代码,打开Cygwin命令行界面,执行如下的命令:
svn checkout svn://svn.berlios.de/openocd/trunk
下载需要一定的时间,完成后,当前目录下就多了trunk目录,里面就有源代码。
然后,把O-Link的驱动patch打上,参考【OpenOCD的OLink补丁】。
接着使用如下命令配置并编译:
./bootstrap
./configure --enable-olink
make
make install
make pdf
这样OpenOCD就编译并安装完成了,并在doc目录下生产了openocd.pdf帮助文档。
可以使用命令"openocd -v"来查看版本。


【OpenOCD的OLink补丁】
OpenOCD的补丁:http://www.SimonQian.com/download/trunk.patch
使用方法:
拷贝trunk.patch到trunk目录的上一层目录,在Cygwin中进入trunk目录并键入命令:
patch -p1 < ../trunk.patch
然后把o-link.c文件拷贝到trunk/src/jtag目录下即可。
如果要支持IAR EWARM5.11,需要修改一个参数:把src/target/armv7m.h中的ARMV7_GDB_HACKS宏去掉,并且修改之后OpenOCD调试该类芯片将不支持GDB


【OpenOCD的配置】
详细配置说明,请参考帮助文档
STM32的配置文件(openocd_stm32.cfg):

# daemon configuration

# logging
#debug 3

# default ports
telnet_port 4444
gdb_port 3333

daemon_startup reset

# interface configuration

interface olink
# olink_usb    VID        PID        BULKOUT    BULKIN
olink_usb     0x03EB    0x2103    0x02    0x82

# jtag_speed
# 0        1        2        3        4        5        6        7    
# 18M    9M        4.5M    2.25M    1.125M    562.5K    281.25K    140.625K
jtag_speed 0

jtag_nsrst_delay 0
jtag_ntrst_delay 0

reset_config trst_and_srst

# scan chain configuration

# jtag_device L IRC IRCM IDCODE (Length, IR Capture, IR Capture Mask, IDCODE)
jtag_device 4 0x1 0xf 0xe
jtag_device 5 0x1 0x1 0x1e

# target configuration

# target <type> <startup mode>
# target cortex_m3 <endianness> <reset mode> <chainpos> <variant>
target cortex_m3 little reset_halt 0
#target cortex_m3 little run_and_halt 0

# run_and_halt_time <target> <time_in_ms>
#run_and_halt_time 0 0

# working_area <target> <address> <size> <backup|nobackup>
working_area 0 0x20000000 0x5000 nobackup

# flash bank <driver> <base> <size> <chip_width> <bus_width> <target> [options]
# flash bank stm32x <base> <size> 0 0 <target>
flash bank stm32x 0x08000000 0x20000 0 0 0

#scripts



【OpenOCD的测试】
打开Cygwin命令行界面,执行命令(如果需要看更多的调试信息,加上"-d 3"选项):
openocd -f 配置文件.cfg
以下是我的输出数据:

$ openocd -f openocd_stm32.cfg
Open On-Chip Debugger 1.0 (2008-06-13-19:35) svn:708M
$URL: http://svn.berlios.de/svnroot/repos/openocd/trunk/src/openocd.c $
Info:    options.c:50 configuration_output_handler(): Open On-Chip Debugger 1.0 (2008-06-13-19:35) svn:708M
Info:    olink.c:484 olink_handle_olink_usb_command(): olink is on device with PID=0x2103 VID=0x03EB BULKOUT=0x02 BULKIN=0x82
Info:    options.c:50 configuration_output_handler(): jtag_speed: 6, 6
Info:    olink.c:294 olink_init(): OLink by Simon, compiled on 20080614
Info:    olink.c:306 olink_init(): OLink JTAG Interface ready
Info:    jtag.c:1396 jtag_examine_chain(): JTAG device found: 0x3ba00477 (Manufacturer: 0x23b, Part: 0xba00, Version: 0x3)
Info:    jtag.c:1396 jtag_examine_chain(): JTAG device found: 0x16410041 (Manufacturer: 0x020, Part: 0x6410, Version: 0x1)
Info:    jtag.c:1396 jtag_examine_chain(): JTAG device found: 0x3ba00477 (Manufacturer: 0x23b, Part: 0xba00, Version: 0x3)
Info:    jtag.c:1396 jtag_examine_chain(): JTAG device found: 0x16410041 (Manufacturer: 0x020, Part: 0x6410, Version: 0x1)



【IAR的配置】
在项目选项的Debug中的setup页里,选择GDB Server;Download页里选择Use flash loader(因为代码需要下载到flash中运行),并选择ST提供的out文件;在plugin页里,可以去掉stack以提高速度。
在下面的GDB Server中,TCP/IP address or hostname中添localhost。
之后就可以按调试按钮开始调试了。
此帖出自stm32/stm8论坛
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

板凳
 

目前还有的问题

1.MDK设置问题,我上传的代码起始地址为0x08002000,IAR和GCC的设置都搞定了,但MDK不知道怎么配置链接脚本,设置R/O base为0x08002000的话,会有错误提示说".DebugObjO-Link.axf: error: L6938E: Invalid value for --ro-base."
MS原因已经找到:http://www.keil.com/demo/limits.asp
谁有正式版的MDK,能帮忙编译一下,我想测试一下速度
此帖出自stm32/stm8论坛
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

4
 

如何DIY O-Link

1.按照原理图制版
2.需要一个串口线下载Bootlaoder
JTAG接口(P90)第4脚(P_BOOT)接3.3V,通过第17和19脚(P_TXD,P_RXD)连接到PC(需要电平转换),然后下载Bootloader(通过ST的Flash loader或者stm32boot)
3.下载O-Link固件
按住按键,接上USB,使用ST提供的USB CDC驱动,既进入Bootloader模式,然后下载Firmware(通过ST的Flash loader或者stm32boot,注意选择的串口为USB转成的串口,并且设置Flash首地址为0x08002000)
4.使用
直接使用我上传的固件的话,需要安装AVR Studio,接上电脑后提示找到JTAGICE mkII,自动安装驱动。
此帖出自stm32/stm8论坛
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

5
 

关注中...........

                                  
此帖出自stm32/stm8论坛
 
 
 

回复

86

帖子

0

TA的资源

一粒金砂(初级)

6
 

好帖,先顶了!

                                  
此帖出自stm32/stm8论坛
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

7
 

先给条裤子,然后再慢慢看

                                  
此帖出自stm32/stm8论坛
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

8
 

前十名有我?

                                 谢谢楼主的贡献。
此帖出自stm32/stm8论坛
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

9
 

基本不懂,继续学习

                                 谢谢
此帖出自stm32/stm8论坛
 
 
 

回复

90

帖子

0

TA的资源

一粒金砂(初级)

10
 

好帖子欠顶啊,哈哈

                                 赶快穿条裤子吧
此帖出自stm32/stm8论坛
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

11
 

我也打算用FT2232D做一个,PCB画好了,我的名字也叫OLink啊

                                  
此帖出自stm32/stm8论坛
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

12
 

simon21ic, 可以搞个OpenOCD的中文论坛

                                  
此帖出自stm32/stm8论坛
 
 
 

回复

86

帖子

0

TA的资源

一粒金砂(初级)

13
 

速度还可以提高吗?

                                  
此帖出自stm32/stm8论坛
 
 
 

回复

89

帖子

0

TA的资源

一粒金砂(初级)

14
 

建议在21搞个开源的版面



好叫open等发扬广大
此帖出自stm32/stm8论坛
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

15
 

呵呵 支持

                                 支持 能自己做调试工具是最好的了。
此帖出自stm32/stm8论坛
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

16
 

谢谢关注

争取这2天把资料都准备好

to 11楼,用FT2232做的好像叫OOCD

to 12楼,国内用OpenOCD的确实少的可怜,估计建立这个论坛也没有什么人气的

to 13楼,速度还有提高的空间,但除了提高JTAG频率外,其他的没有必要
1.USB接口使用双缓冲
2.固件代码使用最高速度优化
3.使用高速的JTAG接口,等新的硬件测试
此帖出自stm32/stm8论坛
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

17
 

确实不错.速度再提高点就好了.

                                  
此帖出自stm32/stm8论坛
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

18
 

速度高了就不能调试STM32了

其实以目前的硬件,速度可以更快,但调试时,会OVERRUN
希望新PCB来后可以实现18M的JTAG速度
我测试的在同等条件下,O-Link的协议比JLink的协议速度快,流方式处理数据还是有一定的作用的
同样硬件的st-linkII的速度也是5K以上,所以速度上还算及格
此帖出自stm32/stm8论坛
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

19
 

终于出手了。呵呵。

                                 前几天还在惦记着这事儿呢,还研究了几天OpenOCD,发现搞这个的人太了不起了。可以学很多东西。LZ能来个彻底的完整的功能演示更是让我受宜匪浅啊。
此帖出自stm32/stm8论坛
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

20
 

人工置顶

                                 翻一下山头……
此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表