Dave's Blog

My Collection of Hobbies, Code and Other Ramblings

Using a Segger JLink With OS X

I wanted to work on some ARM Cortex M3 programming on my Mac…

In order to program my dev boards, I use a Segger J-Flash. At first glance, they don’t appear to support the hardware on OS X. However, after some digging I found that they offer a beta that includes OS X support here

Once I got that installed, I received the following error:

dyld: Library not loaded: /usr/local/lib/libusb-1.0.0.dylib
Referenced from: /Users/draphael/JLink/./JLinkGDBServer
Reason: image not found
Trace/BPT trap: 5

Well, of course that just means I need libusb installed. I use homebrew for my ports of linux to mac.

brew install libusb

This worked like a champ…except…now I get this error:

dyld: Library not loaded: /usr/local/lib/libusb-1.0.0.dylib
Referenced from: /Users/draphael/JLink/./JLinkGDBServer
Reason: no suitable image found. Did find:
/usr/local/lib/libusb-1.0.0.dylib: mach-o, but wrong architecture
/usr/local/lib/libusb-1.0.0.dylib: mach-o, but wrong architecture
Trace/BPT trap: 5

D’OH! I’ve seen this before…time to edit the formula

brew edit libusb

I needed to add the i386 arch flag as shown in this code:

require 'formula'
class Libusb < Formula
url 'http://downloads.sourceforge.net/project/libusb/libusb-1.0/libusb-1.0.8/libusb-1.0.8.tar.bz2'
homepage 'http://www.libusb.org/'
md5 '37d34e6eaa69a4b645a19ff4ca63ceef'
head 'git://git.libusb.org/libusb.git'
def options
[["--universal", "Build a universal binary."]]
if ARGV.build_head? and MacOS.xcode_version >= "4.3"
depends_on "automake" => :build
depends_on "libtool" => :build
def install
ENV.universal_binary if ARGV.build_universal?
# Added flag to compile libusb for i386
ENV["CFLAGS"] += " -arch i386"
system "./autogen.sh" if ARGV.build_head?
system "./configure", "--prefix=#{prefix}", "--disable-dependency-tracking"
system "make install"

Once that was complete…

~/JLink $ ./JLinkGDBServer
SEGGER J-Link GDB Server V4.43c (beta)
JLinkARM.dll V4.43c (DLL compiled Feb 22 2012 20:13:03)
The server has been started with the following settings:
---Server related settings---
GDBInit file: none
Listening port: 2331
SWO thread listening port: 2332
Accept remote connection: yes
Logfile: off
Verify download: off
Init regs on start: on
Silent mode: off
Single run mode: off
---J-Link related settings---
J-Link script: none
Target interface: JTAG
Host interface: USB
Target endian: big
Target interface speed: 5kHz
Waiting for J-Link connection...
J-Link is connected.