Update documentation removing all sg-utils notes
authorKarl Palsson <karlp@tweak.net.au>
Fri, 4 Nov 2011 01:56:22 +0000 (01:56 +0000)
committerKarl Palsson <karlp@tweak.net.au>
Fri, 4 Nov 2011 01:56:22 +0000 (01:56 +0000)
Just libusb now.  Verified the modprobe.conf on Ubuntu 10.04

10-stlink.rules [deleted file]
README
TODO
src/stlink-sg.c
stlink.modprobe.conf [deleted file]
stlink_v1.modprobe.conf [new file with mode: 0644]

diff --git a/10-stlink.rules b/10-stlink.rules
deleted file mode 100644 (file)
index 2413acd..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-# This file was taken from arm-utilites project, located at
-# http://code.google.com/p/arm-utilities/, which is licensed under GPL3.
-# An explicit permission to include any code from that project in
-# this one under BSD license was granted by arm-utilites author, Donald Becker.
-
-# This file watches for a STMicro ST-Link or STM32VLDiscovery board
-# and creates a device named /dev/stlink
-# See udev(7) for syntax.
-#
-# Written 2010,2011 by Donald Becker
-#
-# The STLink on the Discovery has a USB ID 0483:3744 and presents itself
-# as a mass storage (i.e. SCSI) device.  The SCSI emulation is signficantly
-# broken, and the kernel spews error reports for a while until it is
-# accepted.  Further problems are encountered when if it is automatically
-# mounted.
-#
-# Options that may prevent the mount are
-# ENV{UDISKS_PRESENTATION_HIDE}:="1",
-# ENV{UDISKS_PRESENTATION_NOPOLICY}:="1",
-# ENV{DM_UDEV_DISABLE_DISK_RULES_FLAG}:="1"
-
-ACTION!="add|change", GOTO="stlink_rules_end"
-
-SUBSYSTEMS=="usb", ATTR{idVendor}=="0483", ATTR{idProduct}=="3744", \
-   MODE="0664", GROUP="tape", NAME="stlinkusb%n", ENV{STLINK}="1", \
-   ENV{UDISKS_PRESENTATION_HIDE}:="1", \
-   ENV{UDISKS_PRESENTATION_NOPOLICY}:="1", \
-   ENV{DM_UDEV_DISABLE_DISK_RULES_FLAG}:="1", \
-   OPTIONS="last_rule"
-
-# Other possible settings:
-# OPTIONS="last_rule", ATTRS{vendor}=="STM32"
-
-KERNEL=="sg[0-9]*", MODE="0664", GROUP:="tape", \
-  NAME+="stlink-sg%n", SYMLINK+="stlink", \
-  ENV{UDISKS_PRESENTATION_HIDE}:="1", \
-  ENV{UDISKS_PRESENTATION_NOPOLICY}:="1", \
-  ENV{DM_UDEV_DISABLE_DISK_RULES_FLAG}:="1"
-
-SUBSYSTEM=="scsi", ATTR{vendor}=="STM32", MODE="0664", GROUP="tape", NAME="stlinksg-scsi%n", SYMLINK+="stlinkscsi", OPTIONS="last_rule"
-
-LABEL="stlink_rules_end"
diff --git a/README b/README
index 429b8511f7dc7060a6a522279ad3fe0b379b635d..109aa25003a298fffa36e4e4412823ff98ef42dd 100644 (file)
--- a/README
+++ b/README
@@ -11,22 +11,47 @@ called stlink and there are 2 versions:
 . STLINKv1 uses SCSI passthru commands over USB,
 . STLINKv2 uses raw USB commands.
 
-It means that if you are using a STM32VL board, you have to install and load
-SCSI related software. First, load the sg kernel module:
-# modprobe sg
+Common requirements
+~~~~~~~~~~~~~~~~~~~
 
-Then, you need to install the package libsgutils2-dev. On Ubuntu:
-# sudo apt-get install libsgutils2-dev
+libusb-1.0  (You probably already have this, but you'll need the 
+development version to compile)
 
-LIBUSB is required for both cases.
+IF YOU HAVE AN STLINKv1
+~~~~~~~~~~~~~~~~~~~~~~~
+The STLINKv1's SCSI emulation is very broken, so the best thing to do
+is tell your operating system to completely ignore it.
+
+Options (do one of these before you plug it in)
+   *) modprobe -r usb-storage && modprobe usb-storage quirks=483:3744:i
+or *)1. add "options usb-storage quirks=483:3744:i" to /etc/modprobe.conf
+   *)2. modprobe -r usb-storage && modprobe usb-storage
+or *)1. cp stlink_v1.modprobe.conf /etc/modprobe.d
+   *)2. modprobe -r usb-storage && modprobe usb-storage
+
+IF YOU HAVE AN STLINKv2
+~~~~~~~~~~~~~~~~~~~~~~~
+
+You're ready to go :)
 
 To run the gdb server, do (you do not need sudo if you have set up
 permissions correctly):
-$ make -C build && sudo ./build/st-util [/dev/sgX]
+$ make && [sudo] ./gdbserver/st-util 
+
+There are a few options:
+
+./gdbserver/st-util - usage:
 
-Currently, the GDB server listening port is hardcoded to 4242:
+  -h, --help        Print this help
+  -vXX, --verbose=XX    specify a specific verbosity level (0..99)
+  -v, --verbose specify generally verbose logging
+  -s X, --stlink_version=X
+            Choose what version of stlink to use, (defaults to 2)
+  -1, --stlinkv1    Force stlink version 1
+  -p 4242, --listen_port=1234
+            Set the gdb server listen port. (default port: 4242)
 
-Then, in gdb:
+Then, in gdb: (remember, you need to run an _ARM_ gdb, not an x86 gdb)
 (gdb) target remote :4242
 
 Have fun!
@@ -50,13 +75,14 @@ for GDB.
 Setting up udev rules
 =====================
 
-For convenience, you may install udev rules file, 10-stlink.rules, located
+For convenience, you may install udev rules file, 49-stlinkv2.rules, located
 in the root of repository. You will need to copy it to /etc/udev/rules.d,
 and then either reboot or execute
 $ udevadm control --reload-rules
 
-Udev will now create a /dev/stlink file, which will point at appropriate
-/dev/sgX device. Good to not accidentally start debugging your flash drive.
+Udev will now create a /dev/stlinkv2_XX file, with the appropriate permissions.
+This is currently all the device is for, (only one stlinkv2 is supported at 
+any time presently)
 
 Running programs from SRAM
 ==========================
diff --git a/TODO b/TODO
index e3795fc327304e4ff17a55679539e48e91004fd9..e415e57b883845f00f3bab9a7c243c1dafd05f36 100644 (file)
--- a/TODO
+++ b/TODO
@@ -7,9 +7,6 @@
 . documentation
  . make README points to doc/tutorial
 
-. remove libsg dependency using:
-https://github.com/afaerber/stlink/tree/master/libstlink
-
 . compile and test a realtime kernel, for instance:
 http://www.chibios.org/dokuwiki/doku.php?id=chibios:articles:stm32l_discovery
 svn checkout https://chibios.svn.sourceforge.net/svnroot/chibios/trunk ;
index 276986ef7fde4d1e5e47300ba3ba91eb1cf4b4db..2bbbaf9d957a80d060316c05e1d302d8ea7f02ca 100644 (file)
@@ -12,7 +12,6 @@
  The stlink related constants kindly provided by Oliver Spencer (OpenOCD)
  for use in a GPL compatible license.
 
- Code format ~ TAB = 8, K&R, linux kernel source, golang oriented
  Tested compatibility: linux, gcc >= 4.3.3
 
  The communication is based on standard USB mass storage device
  CBW           - Command Block Wrapper
  CSW           - Command Status Wrapper
  RFU           - Reserved for Future Use
- scsi_pt       - SCSI pass-through
- sg            - SCSI generic
 
- * usb-storage.quirks
+ Originally, this driver used scsi pass through commands, which required the
+ usb-storage module to be loaded, providing the /dev/sgX links.  The USB mass
+ storage implementation on the STLinkv1 is however terribly broken, and it can 
+ take many minutes for the kernel to give up.
+ However, in Nov 2011, the scsi pass through was replaced by raw libusb, so 
+ instead of having to let usb-storage struggle with the device, and also greatly 
+ limiting the portability of the driver, you can now tell usb-storage to simply
+ ignore this device completely.
+   
+ usb-storage.quirks
  http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob_plain;f=Documentation/kernel-parameters.txt
  Each entry has the form VID:PID:Flags where VID and PID are Vendor and Product
  ID values (4-digit hex numbers) and Flags is a set of characters, each corresponding
 
  Example: quirks=0419:aaf5:rl,0421:0433:rc
  http://permalink.gmane.org/gmane.linux.usb.general/35053
+ For the stlinkv1, you just want the following
 
- modprobe -r usb-storage && modprobe usb-storage quirks=483:3744:l
+ modprobe -r usb-storage && modprobe usb-storage quirks=483:3744:i
 
  Equivalently, you can add a line saying
 
- options usb-storage quirks=483:3744:l
+ options usb-storage quirks=483:3744:i
 
  to your /etc/modprobe.conf or /etc/modprobe.d/local.conf (or add the "quirks=..."
  part to an existing options line for usb-storage).
-
- https://wiki.kubuntu.org/Kernel/Debugging/USB explains the protocoll and 
- would allow to replace the sg access to pure libusb access
  */
 
 
diff --git a/stlink.modprobe.conf b/stlink.modprobe.conf
deleted file mode 100644 (file)
index e918c90..0000000
+++ /dev/null
@@ -1 +0,0 @@
-options usb-storage quirks=483:3744:l
diff --git a/stlink_v1.modprobe.conf b/stlink_v1.modprobe.conf
new file mode 100644 (file)
index 0000000..94b3786
--- /dev/null
@@ -0,0 +1 @@
+options usb-storage quirks=483:3744:i