From 62ea3faf1e1d51823ed10ea985f3f36040e0d512 Mon Sep 17 00:00:00 2001 From: Fabien Le Mentec Date: Fri, 16 Dec 2011 14:07:17 -0600 Subject: [PATCH] [add] stlinkv1_macosx_driver from marco.cassinerio@gmail.com --- stlinkv1_macosx_driver/Makefile | 57 ++++++++++++++++++++++++++++++ stlinkv1_macosx_driver/README | 23 ++++++++++++ stlinkv1_macosx_driver/osx.tar.gz | Bin 0 -> 23264 bytes 3 files changed, 80 insertions(+) create mode 100644 stlinkv1_macosx_driver/Makefile create mode 100644 stlinkv1_macosx_driver/README create mode 100644 stlinkv1_macosx_driver/osx.tar.gz diff --git a/stlinkv1_macosx_driver/Makefile b/stlinkv1_macosx_driver/Makefile new file mode 100644 index 0000000..9947ff6 --- /dev/null +++ b/stlinkv1_macosx_driver/Makefile @@ -0,0 +1,57 @@ +# make ... for both stlink v1 and stlink v2 support +## +VPATH=src + +SOURCES_LIB=stlink-common.c stlink-usb.c stlink-sg.c uglylogging.c +OBJS_LIB=$(SOURCES_LIB:.c=.o) +TEST_PROGRAMS=test_usb test_sg +LDFLAGS=-L. -lstlink -lusb-1.0 + +CFLAGS+=-g +CFLAGS+=-DDEBUG=1 +CFLAGS+=-std=gnu99 +CFLAGS+=-Wall -Wextra + + +LIBRARY=libstlink.a + +all: $(LIBRARY) flash gdbserver $(TEST_PROGRAMS) + +$(LIBRARY): $(OBJS_LIB) + @echo "objs are $(OBJS_LIB)" + $(AR) -cr $@ $^ + @echo "done making library" + + +test_sg: test_sg.o $(LIBRARY) + @echo "building test_sg" + $(CC) test_sg.o $(LDFLAGS) -o $@ + +test_usb: test_usb.o $(LIBRARY) + @echo "building test_usb" + $(CC) test_usb.o $(LDFLAGS) -o $@ + @echo "done linking" + +%.o: %.c + @echo "building $^ into $@" + $(CC) $(CFLAGS) -c $^ -o $@ + @echo "done compiling" + +clean: + rm -rf $(OBJS_LIB) + rm -rf $(LIBRARY) + rm -rf test_usb* + rm -rf test_sg* + $(MAKE) -C flash clean + $(MAKE) -C gdbserver clean + +flash: + $(MAKE) -C flash + +gdbserver: + $(MAKE) -C gdbserver CONFIG_USE_LIBSG="$(CONFIG_USE_LIBSG)" + +osx_stlink_shield: + ./osx/install.sh + +.PHONY: clean all flash gdbserver diff --git a/stlinkv1_macosx_driver/README b/stlinkv1_macosx_driver/README new file mode 100644 index 0000000..23bbd86 --- /dev/null +++ b/stlinkv1_macosx_driver/README @@ -0,0 +1,23 @@ +from: marco.cassinerio@gmail.com +to: texane@gmail.com + +Hi, + +i managed to get the stlink v1 working under os x and i would like to share the solution so maybe you can +add it in your package. +The problem is that os x claims the device as scsi and libusb won't be able to connect to it. +I've created what is called a codeless driver which claims the device and has a higher priority then the +default apple mass storage driver, so the device can be accessed through libusb. + +I tested this codeless driver under OS X 10.6.8 and 10.7.2. I assume it works with any 10.6.x and 10.7.x +version as well. + +Attached to this mail you'll find the osx folder with the source code of the driver, both drivers (for +10.6.x and 10.7.x), an install.sh script and the modified Makefile, i only added a line at the end which +invoke the install.sh. + +To install the driver the user have only to do: + +sudo make osx_stlink_shield + +no reboot required. \ No newline at end of file diff --git a/stlinkv1_macosx_driver/osx.tar.gz b/stlinkv1_macosx_driver/osx.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..6e7bb275ba87719974b35d6ddb051c74b6cb914e GIT binary patch literal 23264 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�_R&V`)I1TVxBwpP-mqV% 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 jOJ4Glm%QX9FL}vJUhPrLjd4{D&t0O$h%G+`s^ literal 0 HcmV?d00001 -- 2.30.2