X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=doc%2Ftutorial%2Ftutorial.tex;h=c3615df7818a1dad9f4d08a35ae8639217d9b42d;hb=c98c487fa52651505871de11d65bacaeaf1cac39;hp=0437119c1351ed910d1d02a78078b0ab6f80c602;hpb=5a379699bb2d0e282dcd74122e94e1377198cd95;p=fw%2Fstlink diff --git a/doc/tutorial/tutorial.tex b/doc/tutorial/tutorial.tex index 0437119..c3615df 100644 --- a/doc/tutorial/tutorial.tex +++ b/doc/tutorial/tutorial.tex @@ -24,7 +24,7 @@ \section{Overview} \paragraph{} This guide details the use of STMicroelectronics STM32 discovery kits in -an opensource environment. +an open source environment. \newpage @@ -48,18 +48,18 @@ This documentation assumes the toolchains is installed in a \$TOOLCHAIN\_PATH. \section{Installing STLINK} \paragraph{} -STLINK is an opensource software to program and debug the discovery kits. Those +STLINK is open source software to program and debug ST's STM32 Discovery kits. Those kits have an onboard chip that translates USB commands sent by the host PC into -JTAG commands. This chip is called STLINK, which is confusing since the software -has the same name. It comes into 2 versions (STLINK v1 and v2). From a software +JTAG/SWD commands. This chip is called STLINK, (yes, isn't that confusing? suggest a better +name!) and comes in 2 versions (STLINK v1 and v2). From a software point of view, those versions differ only in the transport layer used to communicate -(v1 uses SCSI passthru commands, while v2 uses raw USB). +(v1 uses SCSI passthru commands, while v2 uses raw USB). From a user point of view, they +are identical. \paragraph{} Before continuing, the following dependencies must be met: \begin{itemize} \item libusb-1.0 -\item libsgutils2 (optionnal) \end{itemize} \paragraph{} @@ -78,7 +78,7 @@ Everything can be built from the top directory:\\ \begin{small} \begin{lstlisting}[frame=tb] $> cd stlink.git -$> make CONFIG_USE_LIBSG=0 +$> make \end{lstlisting} \end{small} It includes: @@ -95,23 +95,34 @@ It includes: A simple LED blinking example is provided in the example directory. It is built using:\\ \begin{small} \begin{lstlisting}[frame=tb] -# update the make option accordingly to your architecture cd stlink.git/example/blink ; -PATH=$TOOLCHAIN_PATH/bin:$PATH make CONFIG_STM32L_DISCOVERY=1; +PATH=$TOOLCHAIN_PATH/bin:$PATH make \end{lstlisting} \end{small} +This builds three files, one for each of the Discovery boards currently +available, linked to run from SRAM. (So no risk of overwriting anything you didn't mean to) +These blink examples can safely be used to verify that: + +\begin{itemize} +\item Your installed toolchain is capable of compiling for cortex M3/M4 targets +\item stlink is functional +\item Your arm-none-eabi-gdb is functional +\item Your board is functional +\end{itemize} \paragraph{} -A GDB server must be start to interact with the STM32. Depending on the discovery kit you +A GDB server must be started to interact with the STM32. Depending on the discovery kit you are using, you must run one of the 2 commands:\\ \begin{small} \begin{lstlisting}[frame=tb] -# STM32VL discovery kit -$> sudo ./st-util /dev/sg2 +# STM32VL discovery kit (onboard ST-link) +$> ./st-util --stlinkv1 -# STM32L discovery kit -# 2 dummy command line arguments needed, will be fixed soon -$> sudo ./st-util fu bar +# STM32L or STM32F4 discovery kit (onboard ST-link/V2) +$> ./st-util + +# Full help for other options (listen port, version) +$> ./st-util --help \end{lstlisting} \end{small} @@ -136,7 +147,8 @@ By default, the program was linked such that the base address is 0x20000000. Fro memory map, GDB knows this address belongs to SRAM. To load the program in SRAM, simply use:\\ \begin{small} \begin{lstlisting}[frame=tb] -$> load blink.elf +$> # Choose one as appropriate for your Discovery kit +$> load blink_32L.elf | load blink_32VL.elf | load blink_F4.elf \end{lstlisting} \end{small} @@ -150,8 +162,7 @@ $> continue \end{small} \paragraph{} -The board BLUE and GREEN leds should be blinking (those leds are near the user and reset buttons). - +All the LEDs on the board should now be blinking in time (those leds are near the user and reset buttons). \newpage \section{Building and flashing a program} @@ -163,13 +174,13 @@ FLASH memory reading and writing is done by a separate tool, as shown below:\\ $> cd stlink.git/flash ; # stlinkv1 command to read 4096 from flash into out.bin -$> ./flash read /dev/sg2 out.bin 0x8000000 4096 +$> ./flash read v1 out.bin 0x8000000 4096 # stlinkv2 command $> ./flash read out.bin 0x8000000 4096 # stlinkv1 command to write the file in.bin into flash -$> ./flash write /dev/sg2 in.bin 0x8000000 +$> ./flash write v1 in.bin 0x8000000 # stlinkv2 command $> ./flash write in.bin 0x8000000 @@ -263,16 +274,6 @@ $> make \end{lstlisting} \end{small} -\subsection{STM32VL support} -\paragraph{} -It seems support for STM32VL is quite broken. If it does not work, try build STLINK using libsg: -\begin{small} -\begin{lstlisting}[frame=tb] -$> cd stlink.git -$> make CONFIG_USE_LIBSG=1 -\end{lstlisting} -\end{small} - \newpage \section{References}