diff --git a/web/Makefile b/web/Makefile index e543c123..40e4c47c 100644 --- a/web/Makefile +++ b/web/Makefile @@ -1,4 +1,4 @@ -WEB=kawk,urjtag@web.sourceforge.net:/home/groups/u/ur/urjtag +WEB=arniml,urjtag@web.sourceforge.net:/home/groups/u/ur/urjtag JTAG=../jtag BOOK=./htdocs/book diff --git a/web/htdocs/book/UrJTAG.dbk b/web/htdocs/book/UrJTAG.dbk index 21be2c09..95c35943 100644 --- a/web/htdocs/book/UrJTAG.dbk +++ b/web/htdocs/book/UrJTAG.dbk @@ -4,7 +4,7 @@ Universal JTAG library, server and tools - 2008-07-15 + 2009-02-27 Kolja Waschk @@ -12,7 +12,7 @@ KW( -13032008-07-15KW( +14452009-02-27KW( @@ -118,14 +118,14 @@ program devices. The player has been developed according to the "Serial Vector Format Specification", Revision E, 8 March 1999 issued by ASSET InterTech, Inc. The full specification can be found at -http://www.asset-intertech.com/support/svf.pdf +http://www.asset-intertech.com/support/svf.pdf UrJTAG features an "SVF player" that can read SVF files and perform the described actions on the bus. -SVF parser and lexer are also copyright 2002, CDS at http://www-csd.ijs.si/. +SVF parser and lexer are also copyright 2002, CDS at http://www-csd.ijs.si/. They have been reused from the "Experimental Boundary Scan" project at -http://ebsp.sourceforge.net/. +http://ebsp.sourceforge.net/.
@@ -167,7 +167,7 @@ at the UrJTAG website.
UrJTAG Website The most current version of this documentation and UrJTAG sourcecode -is always available from the project homepage at http://www.urjtag.org +is always available from the project homepage at http://www.urjtag.org
@@ -215,7 +215,7 @@ with Cygwin installed. -current Cygwin net installation from http://cygwin.com +current Cygwin net installation from http://cygwin.com @@ -308,6 +308,11 @@ Amontec JTAGkey-Tiny (supported as cable "JTAGkey") +TinCanTools Flyswatter + + + + Olimex ARM-USB-JTAG @@ -318,7 +323,7 @@ Olimex ARM-USB-TINY -OOCDLink-s (experimental) http://www.joernonline.de/dw/doku.php?id=projects:oocdlink:2_oocdlinks +OOCDLink-s (experimental) http://www.joernonline.de/dw/doku.php?id=projects:oocdlink:2_oocdlinks @@ -328,12 +333,12 @@ Other FT2232-based USB JTAG cables (experimental) -Turtelizer 2 (experimental) http://www.ethernut.de/en/hardware/turtelizer/ +Turtelizer 2 (experimental) http://www.ethernut.de/en/hardware/turtelizer/ -USB to JTAG Interface (experimental) http://www.hs-augsburg.de/~hhoegl/proj/usbjtag/usbjtag.html +USB to JTAG Interface (experimental) http://www.hs-augsburg.de/~hhoegl/proj/usbjtag/usbjtag.html @@ -347,7 +352,7 @@ Xverve Signalyzer Tool (experimental) -Altera USB-Blaster and compatible http://www.ixo.de/info/usb_jtag +Altera USB-Blaster and compatible http://www.ixo.de/info/usb_jtag @@ -361,6 +366,9 @@ Xilinx Platform USB Cable / DLC9 (slow, experimental, work in progress - don't u +Other cables: + * Technologic Systems TS-7800 SoC GPIO builtin JTAG interface +
JTAG-aware parts (chips) @@ -557,10 +565,10 @@ AMD Am29xx040B (Am29F040B, Am29LV040B) The distributed source tarball contains source pregenerated with a current flex version; flex therefore is only needed if you want to compile code checked out from our Subversion repository. Flex 2.5.4a as it comes with -Cygwin cannot build the scanners for BSDL and SVF. Building these files -requires Flex 2.5.33 or newer. The configure script will compare the available -Flex version against these preconditions and enables or disables the related -features. +most but the very latest Cygwin release cannot build the scanners for BSDL and +SVF. Building these files requires Flex 2.5.33 or newer. The configure script +will compare the available Flex version against these preconditions and enables +or disables the related features. Furthermore, libtool should be available, and "devel" versions of the following packages: @@ -600,7 +608,7 @@ you don't run Linux, you can get it from -http://www.intra2net.com/de/produkte/opensource/ftdi/ +http://www.intra2net.com/en/developer/libftdi/ @@ -614,12 +622,12 @@ There is a libusb-win32 variant that can be used in a Cygwin environment: -http://libusb.sourceforge.net (libusb) +http://libusb.sourceforge.net (libusb) -http://libusb-win32.sourceforge.net (libusb for Windows) +http://libusb-win32.sourceforge.net (libusb for Windows) @@ -655,7 +663,7 @@ make install -http://www.ftdichip.com/Drivers/D2XX.htm (FTDI FTD2XX library) +http://www.ftdichip.com/Drivers/D2XX.htm (FTDI FTD2XX library) @@ -677,7 +685,7 @@ without spaces in the name is better) and afterwards run configure with the -http://libusb-win32.sourceforge.net +http://libusb-win32.sourceforge.net @@ -689,16 +697,29 @@ might give problems if the path contains spaces, as "Program Files" does!): Compiling with MinGW UrJTAG may be compiled into a Windows executable using the MinGW compiler -(http://www.mingw.org). This has the advantage over running in a Cygwin -environment that you don't need to install anything else but the jtag.exe. -However, because support for MinGW is quite new in UrJTAG, it may lack some +(http://www.mingw.org), or Cygwin GCC with the "-mno-cygwin" compiler flag. + +This has the advantage over running in a Cygwin environment that you don't need +to install anything else but the jtag.exe (plus libraries like FTD2XX.dll or +InpOut32.DLL that are required for device access under Windows in any case). + +However, because support for MinGW is quite new in UrJTAG, it may lack some features (e.g. readline support) or run a little slower. +Because it seems to be easier to set up a Cygwin environment, we recommend +using the Cygwin GCC with "-mno-cygwin" flag instead of using a MinGW setup: + +CFLAGS="-mno-cygwin -O2" ./configure --with-ftd2xx=/tmp/cdm-drivers --with-inpout32 It is even possible to cross-compile and build the executable on a Linux host: -./configure --host=i586-mingw32msvc --with-ftd2xx=/tmp/cdm-drivers +./configure --host=i586-mingw32msvc --with-ftd2xx=/tmp/cdm-drivers --with-inpout32 make +The "—with-inpout32" switch tells UrJTAG to use the InpOut32.DLL for access to +parallel ports, because the Cygwin ioperm isn't available for MinGW. The InpOut32 +library is available from logix4u.net: + +http://logix4u.net/Legacy_Ports/Parallel_Port/Inpout32.dll_for_Windows_98/2000/NT/XP.html
Driver tailoring @@ -1242,6 +1263,14 @@ FTD2XX is selected. That's simply because FTD2XX showed some performance advantages over libftdi in the past. You can still force libftdi with the respective parameter. +There's one quirk to consider when using FTDI's FTD2XX driver. It +connects to any known FTDI chip, randomly. I.e. if there's more than one FTDI +device connected to the host, chances are that the driver connects to the +wrong USB device. This might be an OEM USB-serial converter and you'll be +banging your head why there's no proper reading from the JTAG chain. Therefore +it's strongly recommended to specify the desc=xxx parameter for the cable +command if the ftd2xx driver is to be used. Set xxx to the product or serial +number descriptor string that are exhibited by the USB device.
detect @@ -1268,7 +1297,9 @@ also the documentation for the "include" command.
print -Print a list of parts in the chain and the currently active instruction per part. +Print a list of parts in the chain and the currently active instruction per part. +Further details of bus, signals and instructions can be obtained with dedicated +command options, see "help print".
@@ -1441,6 +1472,16 @@ get external signal value +pod + + + +low level direct access to POD signals like TRST; use with care + + + + + scan @@ -1605,7 +1646,7 @@ In case the TDO parameter of an SDR command leads to a mismatch the player issues a warning and continues. If the player should abort in this case then specify stop at the svf command. -The absence of error or warning messages indicate that the SVF file could be +The absence of error or warning messages indicate that the SVF file was executed without problems. To get a progress reporting while the player advances through the SVF file, specify progress at the svf command. @@ -1704,11 +1745,15 @@ TIR, TDR commands not supported. -Operation can be slowed down significantly when the FREQUENCY command has -been specified. This is not a problem of the SVF player itself but seem to -happen when the frequency of UrJTAG is set to a value larger than 0. -Configuration takes very long although the maximum allowed frequency is 10 MHz. -Consider to comment out the FREQUENCY command at the beginning of the SVF file. +SVF files for programming flash-based devices might or might not work for a given +setup. This has been observed for Actel IGLOO devices where success and failure +depends on the actual clocking rate of the chosen cable. + +The ref_freq=<…> option to the svf command allows to tweak the calculation +of RUNTEST xxx SEC commands. For these commands, the SVF player needs to +calculate the equivalent number of clocks and per default it will use the +current cable clock frequency. This can be overridden with the ref_freq option +that specifies a fixed reference frequency for such calculations.
@@ -2676,7 +2721,7 @@ Q. The documentation is incomplete. Where can I get more information? - A. Please ask in the "Using UrJTAG" Forum on http://urjtag.org + A. Please ask in the "Using UrJTAG" Forum on http://urjtag.org @@ -2784,6 +2829,56 @@ Q. When running "make install", I get "Permission denied" errors + + +Q. My BSDL file defines the bus DAT as bit_vector(15 downto 0), how should I access single elements? + + + + A. BSDL syntax is an extension of the VHDL language. Array elements are indexed with + parentheses: DAT(4) selects index number 4 of the DAT vector. Also refer to the "print + signals" command. + + + + + +Q. My board requires certain signals to be set to dedicated values before external memories can be accessed. + + + + A. Most (if not all) BSR-based bus drivers allow for static configurations of + pins that are controlled by BSR bits. Apply the required "set" commands before + issueing the "initbus …" command. These settings are preserved by all bus + related commands if they don't collide with the signals required for bus operation. + + + + + +Q. My USB pod seems slow. + + + + A. USB-based JTAG pods suffer from a couple of intrinsic issues. Consider the + following to get maximum performance: + + + + +Run UrJTAG on native linux. Cygwin and VMWare are reportedly slower. + + + + +Connect the pod via a high speed USB hub to a high speed USB host port. + Even though the pod is a full speed device, it benefits from the shorter + turn-around times between host and hub. + + + + + diff --git a/web/htdocs/book/UrJTAG.html b/web/htdocs/book/UrJTAG.html index 6c7328e3..bdf22e37 100644 --- a/web/htdocs/book/UrJTAG.html +++ b/web/htdocs/book/UrJTAG.html @@ -1,4 +1,4 @@ - + The player has been developed according to the "Serial Vector Format Specification", Revision E, 8 March 1999 issued by ASSET InterTech, Inc. The full specification can be found at -http://www.asset-intertech.com/support/svf.pdf</P +<A +HREF="http://www.asset-intertech.com/support/svf.pdf" +TARGET="_top" +>http://www.asset-intertech.com/support/svf.pdf</A +></P ><P >UrJTAG features an "SVF player" that can read SVF files and perform the described actions on the bus.</P ><P ->SVF parser and lexer are also copyright 2002, CDS at http://www-csd.ijs.si/. +>SVF parser and lexer are also copyright 2002, CDS at <A +HREF="http://www-csd.ijs.si/" +TARGET="_top" +>http://www-csd.ijs.si/</A +>. They have been reused from the "Experimental Boundary Scan" project at -http://ebsp.sourceforge.net/.</P +<A +HREF="http://ebsp.sourceforge.net/" +TARGET="_top" +>http://ebsp.sourceforge.net/</A +>.</P ></DIV ><DIV CLASS="section" @@ -692,7 +704,11 @@ NAME="_urjtag_website" ></H3 ><P >The most current version of this documentation and UrJTAG sourcecode -is always available from the project homepage at http://www.urjtag.org</P +is always available from the project homepage at <A +HREF="http://www.urjtag.org" +TARGET="_top" +>http://www.urjtag.org</A +></P ></DIV ><DIV CLASS="section" @@ -777,7 +793,11 @@ NAME="_required_software_for_running_urjtag" ><UL ><LI ><P -> current Cygwin net installation from http://cygwin.com +> current Cygwin net installation from <A +HREF="http://cygwin.com" +TARGET="_top" +>http://cygwin.com</A +> </P ></LI ><LI @@ -886,6 +906,11 @@ CLASS="emphasis" ></LI ><LI ><P +> TinCanTools Flyswatter +</P +></LI +><LI +><P > Olimex ARM-USB-JTAG </P ></LI @@ -896,7 +921,11 @@ CLASS="emphasis" ></LI ><LI ><P -> OOCDLink-s (experimental) http://www.joernonline.de/dw/doku.php?id=projects:oocdlink:2_oocdlinks +> OOCDLink-s (experimental) <A +HREF="http://www.joernonline.de/dw/doku.php?id=projects:oocdlink:2_oocdlinks" +TARGET="_top" +>http://www.joernonline.de/dw/doku.php?id=projects:oocdlink:2_oocdlinks</A +> </P ></LI ><LI @@ -906,12 +935,20 @@ CLASS="emphasis" ></LI ><LI ><P -> Turtelizer 2 (experimental) http://www.ethernut.de/en/hardware/turtelizer/ +> Turtelizer 2 (experimental) <A +HREF="http://www.ethernut.de/en/hardware/turtelizer/" +TARGET="_top" +>http://www.ethernut.de/en/hardware/turtelizer/</A +> </P ></LI ><LI ><P -> USB to JTAG Interface (experimental) http://www.hs-augsburg.de/~hhoegl/proj/usbjtag/usbjtag.html +> USB to JTAG Interface (experimental) <A +HREF="http://www.hs-augsburg.de/~hhoegl/proj/usbjtag/usbjtag.html" +TARGET="_top" +>http://www.hs-augsburg.de/~hhoegl/proj/usbjtag/usbjtag.html</A +> </P ></LI ><LI @@ -927,7 +964,11 @@ CLASS="emphasis" ><UL ><LI ><P -> Altera USB-Blaster and compatible http://www.ixo.de/info/usb_jtag +> Altera USB-Blaster and compatible <A +HREF="http://www.ixo.de/info/usb_jtag" +TARGET="_top" +>http://www.ixo.de/info/usb_jtag</A +> </P ></LI ><LI @@ -941,6 +982,9 @@ CLASS="emphasis" </P ></LI ></UL +><P +>Other cables: + * Technologic Systems TS-7800 SoC GPIO builtin JTAG interface</P ></DIV ><DIV CLASS="section" @@ -1191,10 +1235,10 @@ NAME="_required_software_for_compiling_urjtag" >The distributed source tarball contains source pregenerated with a current flex version; flex therefore is only needed if you want to compile code checked out from our Subversion repository. Flex 2.5.4a as it comes with -Cygwin cannot build the scanners for BSDL and SVF. Building these files -requires Flex 2.5.33 or newer. The configure script will compare the available -Flex version against these preconditions and enables or disables the related -features.</P +most but the very latest Cygwin release cannot build the scanners for BSDL and +SVF. Building these files requires Flex 2.5.33 or newer. The configure script +will compare the available Flex version against these preconditions and enables +or disables the related features.</P ><P >Furthermore, libtool should be available, and "devel" versions of the following packages:</P @@ -1243,7 +1287,11 @@ you don't run Linux, you can get it from</P ><UL ><LI ><P -> http://www.intra2net.com/de/produkte/opensource/ftdi/ +> <A +HREF="http://www.intra2net.com/en/developer/libftdi/" +TARGET="_top" +>http://www.intra2net.com/en/developer/libftdi/</A +> </P ></LI ></UL @@ -1259,12 +1307,20 @@ There is a libusb-win32 variant that can be used in a Cygwin environment:</P ><UL ><LI ><P -> http://libusb.sourceforge.net (libusb) +> <A +HREF="http://libusb.sourceforge.net" +TARGET="_top" +>http://libusb.sourceforge.net</A +> (libusb) </P ></LI ><LI ><P -> http://libusb-win32.sourceforge.net (libusb for Windows) +> <A +HREF="http://libusb-win32.sourceforge.net" +TARGET="_top" +>http://libusb-win32.sourceforge.net</A +> (libusb for Windows) </P ></LI ></UL @@ -1326,7 +1382,11 @@ NAME="_linking_to_ftd2xx_dll_in_cygwin_environment" ><UL ><LI ><P -> http://www.ftdichip.com/Drivers/D2XX.htm (FTDI FTD2XX library) +> <A +HREF="http://www.ftdichip.com/Drivers/D2XX.htm" +TARGET="_top" +>http://www.ftdichip.com/Drivers/D2XX.htm</A +> (FTDI FTD2XX library) </P ></LI ></UL @@ -1360,7 +1420,11 @@ NAME="_using_libusb_win32_in_cygwin_environment" ><UL ><LI ><P -> http://libusb-win32.sourceforge.net +> <A +HREF="http://libusb-win32.sourceforge.net" +TARGET="_top" +>http://libusb-win32.sourceforge.net</A +> </P ></LI ></UL @@ -1381,17 +1445,38 @@ NAME="_compiling_with_mingw" ></H3 ><P >UrJTAG may be compiled into a Windows executable using the MinGW compiler -(http://www.mingw.org). This has the advantage over running in a Cygwin -environment that you don't need to install anything else but the jtag.exe. -However, because support for MinGW is quite new in UrJTAG, it may lack some +(<A +HREF="http://www.mingw.org" +TARGET="_top" +>http://www.mingw.org</A +>), or Cygwin GCC with the "-mno-cygwin" compiler flag.</P +><P +>This has the advantage over running in a Cygwin environment that you don't need +to install anything else but the jtag.exe (plus libraries like FTD2XX.dll or +InpOut32.DLL that are required for device access under Windows in any case).</P +><P +>However, because support for MinGW is quite new in UrJTAG, it may lack some features (e.g. readline support) or run a little slower.</P ><P +>Because it seems to be easier to set up a Cygwin environment, we recommend +using the Cygwin GCC with "-mno-cygwin" flag instead of using a MinGW setup:</P +><PRE +CLASS="literallayout" +>CFLAGS="-mno-cygwin -O2" ./configure --with-ftd2xx=/tmp/cdm-drivers --with-inpout32</PRE +><P >It is even possible to cross-compile and build the executable on a Linux host:</P ><PRE CLASS="literallayout" ->./configure --host=i586-mingw32msvc --with-ftd2xx=/tmp/cdm-drivers +>./configure --host=i586-mingw32msvc --with-ftd2xx=/tmp/cdm-drivers --with-inpout32 make</PRE +><P +>The "—with-inpout32" switch tells UrJTAG to use the InpOut32.DLL for access to +parallel ports, because the Cygwin ioperm isn't available for MinGW. The InpOut32 +library is available from logix4u.net:</P +><PRE +CLASS="literallayout" +>http://logix4u.net/Legacy_Ports/Parallel_Port/Inpout32.dll_for_Windows_98/2000/NT/XP.html</PRE ></DIV ><DIV CLASS="section" @@ -1653,7 +1738,7 @@ CLASS="informaltable" ><P ></P ><A -NAME="AEN347" +NAME="AEN371" ></A ><TABLE BORDER="0" @@ -2381,6 +2466,39 @@ the respective driver is selected. If both libraries are available, then FTD2XX is selected. That's simply because FTD2XX showed some performance advantages over libftdi in the past. You can still force libftdi with the respective parameter.</P +><DIV +CLASS="warning" +><P +></P +><TABLE +CLASS="warning" +WIDTH="100%" +BORDER="0" +><TR +><TD +WIDTH="25" +ALIGN="CENTER" +VALIGN="TOP" +><IMG +SRC="../images/warning.gif" +HSPACE="5" +ALT="Warning"></TD +><TD +ALIGN="LEFT" +VALIGN="TOP" +><P +>There's one quirk to consider when using FTDI's FTD2XX driver. It +connects to any known FTDI chip, randomly. I.e. if there's more than one FTDI +device connected to the host, chances are that the driver connects to the +wrong USB device. This might be an OEM USB-serial converter and you'll be +banging your head why there's no proper reading from the JTAG chain. Therefore +it's strongly recommended to specify the desc=xxx parameter for the cable +command if the ftd2xx driver is to be used. Set xxx to the product or serial +number descriptor string that are exhibited by the USB device.</P +></TD +></TR +></TABLE +></DIV ></DIV ><DIV CLASS="section" @@ -2422,7 +2540,9 @@ NAME="_print" >3.2.3.3. print</A ></H4 ><P ->Print a list of parts in the chain and the currently active instruction per part.</P +>Print a list of parts in the chain and the currently active instruction per part. +Further details of bus, signals and instructions can be obtained with dedicated +command options, see "help print".</P ></DIV ><DIV CLASS="section" @@ -2536,7 +2656,7 @@ CLASS="informaltable" ><P ></P ><A -NAME="AEN602" +NAME="AEN628" ></A ><TABLE BORDER="0" @@ -2645,7 +2765,7 @@ CLASS="informaltable" ><P ></P ><A -NAME="AEN634" +NAME="AEN660" ></A ><TABLE BORDER="0" @@ -2720,6 +2840,25 @@ CLASS="emphasis" CLASS="strong" ><B CLASS="emphasis" +>pod</B +></SPAN +> +</P +></TD +><TD +> <P +> low level direct access to POD signals like TRST; use with care +</P +> +</TD +></TR +><TR +><TD +><P +> <SPAN +CLASS="strong" +><B +CLASS="emphasis" >scan</B ></SPAN > @@ -2793,7 +2932,7 @@ CLASS="informaltable" ><P ></P ><A -NAME="AEN678" +NAME="AEN710" ></A ><TABLE BORDER="0" @@ -3028,7 +3167,7 @@ CLASS="emphasis" ></SPAN > at the svf command.</P ><P ->The absence of error or warning messages indicate that the SVF file could be +>The absence of error or warning messages indicate that the SVF file was executed without problems. To get a progress reporting while the player advances through the SVF file, specify <SPAN CLASS="emphasis" @@ -3046,7 +3185,7 @@ CELLPADDING="5" ><DIV CLASS="sidebar" ><A -NAME="AEN744" +NAME="AEN776" ></A ><P ><B @@ -3152,11 +3291,21 @@ NAME="AEN744" ></LI ></UL ><P ->Operation can be slowed down significantly when the FREQUENCY command has -been specified. This is not a problem of the SVF player itself but seem to -happen when the frequency of UrJTAG is set to a value larger than 0. -Configuration takes very long although the maximum allowed frequency is 10 MHz. -Consider to comment out the FREQUENCY command at the beginning of the SVF file.</P +>SVF files for programming flash-based devices might or might not work for a given +setup. This has been observed for Actel IGLOO devices where success and failure +depends on the actual clocking rate of the chosen cable.</P +><P +>The ref_freq=<…> option to the svf command allows to tweak the calculation +of <SPAN +CLASS="emphasis" +><I +CLASS="emphasis" +>RUNTEST xxx SEC</I +></SPAN +> commands. For these commands, the SVF player needs to +calculate the equivalent number of clocks and per default it will use the +current cable clock frequency. This can be overridden with the ref_freq option +that specifies a fixed reference frequency for such calculations.</P ></DIV ></TD ></TR @@ -3427,7 +3576,7 @@ CLASS="informaltable" ><P ></P ><A -NAME="AEN833" +NAME="AEN867" ></A ><TABLE BORDER="0" @@ -4632,7 +4781,11 @@ CLASS="variablelist" >Q. The documentation is incomplete. Where can I get more information?</DT ><DD ><P -> A. Please ask in the "Using UrJTAG" Forum on http://urjtag.org +> A. Please ask in the "Using UrJTAG" Forum on <A +HREF="http://urjtag.org" +TARGET="_top" +>http://urjtag.org</A +> </P ></DD ><DT @@ -4712,6 +4865,49 @@ CLASS="literal" > A. If you want to install into a system directory (the default /usr/local is one), you'll have to run "make install" as the superuser, e.g. do "sudo make install". </P ></DD +><DT +>Q. My BSDL file defines the bus DAT as bit_vector(15 downto 0), how should I access single elements?</DT +><DD +><P +> A. BSDL syntax is an extension of the VHDL language. Array elements are indexed with + parentheses: DAT(4) selects index number 4 of the DAT vector. Also refer to the "print + signals" command. +</P +></DD +><DT +>Q. My board requires certain signals to be set to dedicated values before external memories can be accessed.</DT +><DD +><P +> A. Most (if not all) BSR-based bus drivers allow for static configurations of + pins that are controlled by BSR bits. Apply the required "set" commands before + issueing the "initbus …" command. These settings are preserved by all bus + related commands if they don't collide with the signals required for bus operation. +</P +></DD +><DT +>Q. My USB pod seems slow.</DT +><DD +><P +> A. USB-based JTAG pods suffer from a couple of intrinsic issues. Consider the + following to get maximum performance: +</P +><P +></P +><UL +><LI +><P +> Run UrJTAG on native linux. Cygwin and VMWare are reportedly slower. +</P +></LI +><LI +><P +> Connect the pod via a high speed USB hub to a high speed USB host port. + Even though the pod is a full speed device, it benefits from the shorter + turn-around times between host and hub. +</P +></LI +></UL +></DD ></DL ></DIV ></DIV diff --git a/web/htdocs/book/_compilation_and_installation.html b/web/htdocs/book/_compilation_and_installation.html index 770335f6..007ae3ca 100644 --- a/web/htdocs/book/_compilation_and_installation.html +++ b/web/htdocs/book/_compilation_and_installation.html @@ -1,4 +1,4 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML ><HEAD ><TITLE @@ -93,10 +93,10 @@ NAME="_required_software_for_compiling_urjtag" >The distributed source tarball contains source pregenerated with a current flex version; flex therefore is only needed if you want to compile code checked out from our Subversion repository. Flex 2.5.4a as it comes with -Cygwin cannot build the scanners for BSDL and SVF. Building these files -requires Flex 2.5.33 or newer. The configure script will compare the available -Flex version against these preconditions and enables or disables the related -features.</P +most but the very latest Cygwin release cannot build the scanners for BSDL and +SVF. Building these files requires Flex 2.5.33 or newer. The configure script +will compare the available Flex version against these preconditions and enables +or disables the related features.</P ><P >Furthermore, libtool should be available, and "devel" versions of the following packages:</P @@ -145,7 +145,11 @@ you don't run Linux, you can get it from</P ><UL ><LI ><P -> http://www.intra2net.com/de/produkte/opensource/ftdi/ +> <A +HREF="http://www.intra2net.com/en/developer/libftdi/" +TARGET="_top" +>http://www.intra2net.com/en/developer/libftdi/</A +> </P ></LI ></UL @@ -161,12 +165,20 @@ There is a libusb-win32 variant that can be used in a Cygwin environment:</P ><UL ><LI ><P -> http://libusb.sourceforge.net (libusb) +> <A +HREF="http://libusb.sourceforge.net" +TARGET="_top" +>http://libusb.sourceforge.net</A +> (libusb) </P ></LI ><LI ><P -> http://libusb-win32.sourceforge.net (libusb for Windows) +> <A +HREF="http://libusb-win32.sourceforge.net" +TARGET="_top" +>http://libusb-win32.sourceforge.net</A +> (libusb for Windows) </P ></LI ></UL @@ -228,7 +240,11 @@ NAME="_linking_to_ftd2xx_dll_in_cygwin_environment" ><UL ><LI ><P -> http://www.ftdichip.com/Drivers/D2XX.htm (FTDI FTD2XX library) +> <A +HREF="http://www.ftdichip.com/Drivers/D2XX.htm" +TARGET="_top" +>http://www.ftdichip.com/Drivers/D2XX.htm</A +> (FTDI FTD2XX library) </P ></LI ></UL @@ -262,7 +278,11 @@ NAME="_using_libusb_win32_in_cygwin_environment" ><UL ><LI ><P -> http://libusb-win32.sourceforge.net +> <A +HREF="http://libusb-win32.sourceforge.net" +TARGET="_top" +>http://libusb-win32.sourceforge.net</A +> </P ></LI ></UL @@ -283,17 +303,38 @@ NAME="_compiling_with_mingw" ></H2 ><P >UrJTAG may be compiled into a Windows executable using the MinGW compiler -(http://www.mingw.org). This has the advantage over running in a Cygwin -environment that you don't need to install anything else but the jtag.exe. -However, because support for MinGW is quite new in UrJTAG, it may lack some +(<A +HREF="http://www.mingw.org" +TARGET="_top" +>http://www.mingw.org</A +>), or Cygwin GCC with the "-mno-cygwin" compiler flag.</P +><P +>This has the advantage over running in a Cygwin environment that you don't need +to install anything else but the jtag.exe (plus libraries like FTD2XX.dll or +InpOut32.DLL that are required for device access under Windows in any case).</P +><P +>However, because support for MinGW is quite new in UrJTAG, it may lack some features (e.g. readline support) or run a little slower.</P ><P +>Because it seems to be easier to set up a Cygwin environment, we recommend +using the Cygwin GCC with "-mno-cygwin" flag instead of using a MinGW setup:</P +><PRE +CLASS="literallayout" +>CFLAGS="-mno-cygwin -O2" ./configure --with-ftd2xx=/tmp/cdm-drivers --with-inpout32</PRE +><P >It is even possible to cross-compile and build the executable on a Linux host:</P ><PRE CLASS="literallayout" ->./configure --host=i586-mingw32msvc --with-ftd2xx=/tmp/cdm-drivers +>./configure --host=i586-mingw32msvc --with-ftd2xx=/tmp/cdm-drivers --with-inpout32 make</PRE +><P +>The "—with-inpout32" switch tells UrJTAG to use the InpOut32.DLL for access to +parallel ports, because the Cygwin ioperm isn't available for MinGW. The InpOut32 +library is available from logix4u.net:</P +><PRE +CLASS="literallayout" +>http://logix4u.net/Legacy_Ports/Parallel_Port/Inpout32.dll_for_Windows_98/2000/NT/XP.html</PRE ></DIV ><DIV CLASS="section" diff --git a/web/htdocs/book/_copyright.html b/web/htdocs/book/_copyright.html index 235c6423..ecde9da1 100644 --- a/web/htdocs/book/_copyright.html +++ b/web/htdocs/book/_copyright.html @@ -1,4 +1,4 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML ><HEAD ><TITLE diff --git a/web/htdocs/book/_data_file_format.html b/web/htdocs/book/_data_file_format.html index 7fc64478..f09d3dad 100644 --- a/web/htdocs/book/_data_file_format.html +++ b/web/htdocs/book/_data_file_format.html @@ -1,4 +1,4 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML ><HEAD ><TITLE diff --git a/web/htdocs/book/_development.html b/web/htdocs/book/_development.html index 6b858fd5..08706a97 100644 --- a/web/htdocs/book/_development.html +++ b/web/htdocs/book/_development.html @@ -1,4 +1,4 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML ><HEAD ><TITLE diff --git a/web/htdocs/book/_drivers.html b/web/htdocs/book/_drivers.html index e5b35300..978cf25b 100644 --- a/web/htdocs/book/_drivers.html +++ b/web/htdocs/book/_drivers.html @@ -1,4 +1,4 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML ><HEAD ><TITLE diff --git a/web/htdocs/book/_f_a_q.html b/web/htdocs/book/_f_a_q.html index eda7e93b..b76d4158 100644 --- a/web/htdocs/book/_f_a_q.html +++ b/web/htdocs/book/_f_a_q.html @@ -1,4 +1,4 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML ><HEAD ><TITLE @@ -87,7 +87,11 @@ CLASS="variablelist" >Q. The documentation is incomplete. Where can I get more information?</DT ><DD ><P -> A. Please ask in the "Using UrJTAG" Forum on http://urjtag.org +> A. Please ask in the "Using UrJTAG" Forum on <A +HREF="http://urjtag.org" +TARGET="_top" +>http://urjtag.org</A +> </P ></DD ><DT @@ -167,6 +171,49 @@ CLASS="literal" > A. If you want to install into a system directory (the default /usr/local is one), you'll have to run "make install" as the superuser, e.g. do "sudo make install". </P ></DD +><DT +>Q. My BSDL file defines the bus DAT as bit_vector(15 downto 0), how should I access single elements?</DT +><DD +><P +> A. BSDL syntax is an extension of the VHDL language. Array elements are indexed with + parentheses: DAT(4) selects index number 4 of the DAT vector. Also refer to the "print + signals" command. +</P +></DD +><DT +>Q. My board requires certain signals to be set to dedicated values before external memories can be accessed.</DT +><DD +><P +> A. Most (if not all) BSR-based bus drivers allow for static configurations of + pins that are controlled by BSR bits. Apply the required "set" commands before + issueing the "initbus …" command. These settings are preserved by all bus + related commands if they don't collide with the signals required for bus operation. +</P +></DD +><DT +>Q. My USB pod seems slow.</DT +><DD +><P +> A. USB-based JTAG pods suffer from a couple of intrinsic issues. Consider the + following to get maximum performance: +</P +><P +></P +><UL +><LI +><P +> Run UrJTAG on native linux. Cygwin and VMWare are reportedly slower. +</P +></LI +><LI +><P +> Connect the pod via a high speed USB hub to a high speed USB host port. + Even though the pod is a full speed device, it benefits from the shorter + turn-around times between host and hub. +</P +></LI +></UL +></DD ></DL ></DIV ></DIV diff --git a/web/htdocs/book/_general.html b/web/htdocs/book/_general.html index 6809da5a..10f598fd 100644 --- a/web/htdocs/book/_general.html +++ b/web/htdocs/book/_general.html @@ -1,4 +1,4 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML ><HEAD ><TITLE @@ -205,14 +205,26 @@ program devices.</P >The player has been developed according to the "Serial Vector Format Specification", Revision E, 8 March 1999 issued by ASSET InterTech, Inc. The full specification can be found at -http://www.asset-intertech.com/support/svf.pdf</P +<A +HREF="http://www.asset-intertech.com/support/svf.pdf" +TARGET="_top" +>http://www.asset-intertech.com/support/svf.pdf</A +></P ><P >UrJTAG features an "SVF player" that can read SVF files and perform the described actions on the bus.</P ><P ->SVF parser and lexer are also copyright 2002, CDS at http://www-csd.ijs.si/. +>SVF parser and lexer are also copyright 2002, CDS at <A +HREF="http://www-csd.ijs.si/" +TARGET="_top" +>http://www-csd.ijs.si/</A +>. They have been reused from the "Experimental Boundary Scan" project at -http://ebsp.sourceforge.net/.</P +<A +HREF="http://ebsp.sourceforge.net/" +TARGET="_top" +>http://ebsp.sourceforge.net/</A +>.</P ></DIV ><DIV CLASS="section" diff --git a/web/htdocs/book/_gnu_free_documentation_license_fdl.html b/web/htdocs/book/_gnu_free_documentation_license_fdl.html index 2a6464ca..ee0438d0 100644 --- a/web/htdocs/book/_gnu_free_documentation_license_fdl.html +++ b/web/htdocs/book/_gnu_free_documentation_license_fdl.html @@ -1,4 +1,4 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML ><HEAD ><TITLE diff --git a/web/htdocs/book/_gnu_general_public_license_gpl.html b/web/htdocs/book/_gnu_general_public_license_gpl.html index f908d199..5fd337f0 100644 --- a/web/htdocs/book/_gnu_general_public_license_gpl.html +++ b/web/htdocs/book/_gnu_general_public_license_gpl.html @@ -1,4 +1,4 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML ><HEAD ><TITLE diff --git a/web/htdocs/book/_internals.html b/web/htdocs/book/_internals.html index d3cba3b4..c2d2e23d 100644 --- a/web/htdocs/book/_internals.html +++ b/web/htdocs/book/_internals.html @@ -1,4 +1,4 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML ><HEAD ><TITLE @@ -99,7 +99,7 @@ CLASS="informaltable" ><P ></P ><A -NAME="AEN833" +NAME="AEN867" ></A ><TABLE BORDER="0" diff --git a/web/htdocs/book/_jtag_commands.html b/web/htdocs/book/_jtag_commands.html index 83af5d22..ed03c3ca 100644 --- a/web/htdocs/book/_jtag_commands.html +++ b/web/htdocs/book/_jtag_commands.html @@ -1,4 +1,4 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML ><HEAD ><TITLE @@ -95,7 +95,7 @@ CLASS="informaltable" ><P ></P ><A -NAME="AEN347" +NAME="AEN371" ></A ><TABLE BORDER="0" @@ -823,6 +823,39 @@ the respective driver is selected. If both libraries are available, then FTD2XX is selected. That's simply because FTD2XX showed some performance advantages over libftdi in the past. You can still force libftdi with the respective parameter.</P +><DIV +CLASS="warning" +><P +></P +><TABLE +CLASS="warning" +WIDTH="100%" +BORDER="0" +><TR +><TD +WIDTH="25" +ALIGN="CENTER" +VALIGN="TOP" +><IMG +SRC="../images/warning.gif" +HSPACE="5" +ALT="Warning"></TD +><TD +ALIGN="LEFT" +VALIGN="TOP" +><P +>There's one quirk to consider when using FTDI's FTD2XX driver. It +connects to any known FTDI chip, randomly. I.e. if there's more than one FTDI +device connected to the host, chances are that the driver connects to the +wrong USB device. This might be an OEM USB-serial converter and you'll be +banging your head why there's no proper reading from the JTAG chain. Therefore +it's strongly recommended to specify the desc=xxx parameter for the cable +command if the ftd2xx driver is to be used. Set xxx to the product or serial +number descriptor string that are exhibited by the USB device.</P +></TD +></TR +></TABLE +></DIV ></DIV ><DIV CLASS="section" @@ -864,7 +897,9 @@ NAME="_print" >3.2.3.3. print</A ></H3 ><P ->Print a list of parts in the chain and the currently active instruction per part.</P +>Print a list of parts in the chain and the currently active instruction per part. +Further details of bus, signals and instructions can be obtained with dedicated +command options, see "help print".</P ></DIV ><DIV CLASS="section" @@ -978,7 +1013,7 @@ CLASS="informaltable" ><P ></P ><A -NAME="AEN602" +NAME="AEN628" ></A ><TABLE BORDER="0" @@ -1087,7 +1122,7 @@ CLASS="informaltable" ><P ></P ><A -NAME="AEN634" +NAME="AEN660" ></A ><TABLE BORDER="0" @@ -1162,6 +1197,25 @@ CLASS="emphasis" CLASS="strong" ><B CLASS="emphasis" +>pod</B +></SPAN +> +</P +></TD +><TD +> <P +> low level direct access to POD signals like TRST; use with care +</P +> +</TD +></TR +><TR +><TD +><P +> <SPAN +CLASS="strong" +><B +CLASS="emphasis" >scan</B ></SPAN > @@ -1235,7 +1289,7 @@ CLASS="informaltable" ><P ></P ><A -NAME="AEN678" +NAME="AEN710" ></A ><TABLE BORDER="0" @@ -1470,7 +1524,7 @@ CLASS="emphasis" ></SPAN > at the svf command.</P ><P ->The absence of error or warning messages indicate that the SVF file could be +>The absence of error or warning messages indicate that the SVF file was executed without problems. To get a progress reporting while the player advances through the SVF file, specify <SPAN CLASS="emphasis" @@ -1488,7 +1542,7 @@ CELLPADDING="5" ><DIV CLASS="sidebar" ><A -NAME="AEN744" +NAME="AEN776" ></A ><P ><B @@ -1594,11 +1648,21 @@ NAME="AEN744" ></LI ></UL ><P ->Operation can be slowed down significantly when the FREQUENCY command has -been specified. This is not a problem of the SVF player itself but seem to -happen when the frequency of UrJTAG is set to a value larger than 0. -Configuration takes very long although the maximum allowed frequency is 10 MHz. -Consider to comment out the FREQUENCY command at the beginning of the SVF file.</P +>SVF files for programming flash-based devices might or might not work for a given +setup. This has been observed for Actel IGLOO devices where success and failure +depends on the actual clocking rate of the chosen cable.</P +><P +>The ref_freq=<…> option to the svf command allows to tweak the calculation +of <SPAN +CLASS="emphasis" +><I +CLASS="emphasis" +>RUNTEST xxx SEC</I +></SPAN +> commands. For these commands, the SVF player needs to +calculate the equivalent number of clocks and per default it will use the +current cable clock frequency. This can be overridden with the ref_freq option +that specifies a fixed reference frequency for such calculations.</P ></DIV ></TD ></TR diff --git a/web/htdocs/book/_licensing.html b/web/htdocs/book/_licensing.html index a9986eee..a181742c 100644 --- a/web/htdocs/book/_licensing.html +++ b/web/htdocs/book/_licensing.html @@ -1,4 +1,4 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML ><HEAD ><TITLE diff --git a/web/htdocs/book/_system_requirements.html b/web/htdocs/book/_system_requirements.html index 01c83b5a..4320b7aa 100644 --- a/web/htdocs/book/_system_requirements.html +++ b/web/htdocs/book/_system_requirements.html @@ -1,4 +1,4 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML ><HEAD ><TITLE @@ -106,7 +106,11 @@ NAME="_required_software_for_running_urjtag" ><UL ><LI ><P -> current Cygwin net installation from http://cygwin.com +> current Cygwin net installation from <A +HREF="http://cygwin.com" +TARGET="_top" +>http://cygwin.com</A +> </P ></LI ><LI @@ -215,6 +219,11 @@ CLASS="emphasis" ></LI ><LI ><P +> TinCanTools Flyswatter +</P +></LI +><LI +><P > Olimex ARM-USB-JTAG </P ></LI @@ -225,7 +234,11 @@ CLASS="emphasis" ></LI ><LI ><P -> OOCDLink-s (experimental) http://www.joernonline.de/dw/doku.php?id=projects:oocdlink:2_oocdlinks +> OOCDLink-s (experimental) <A +HREF="http://www.joernonline.de/dw/doku.php?id=projects:oocdlink:2_oocdlinks" +TARGET="_top" +>http://www.joernonline.de/dw/doku.php?id=projects:oocdlink:2_oocdlinks</A +> </P ></LI ><LI @@ -235,12 +248,20 @@ CLASS="emphasis" ></LI ><LI ><P -> Turtelizer 2 (experimental) http://www.ethernut.de/en/hardware/turtelizer/ +> Turtelizer 2 (experimental) <A +HREF="http://www.ethernut.de/en/hardware/turtelizer/" +TARGET="_top" +>http://www.ethernut.de/en/hardware/turtelizer/</A +> </P ></LI ><LI ><P -> USB to JTAG Interface (experimental) http://www.hs-augsburg.de/~hhoegl/proj/usbjtag/usbjtag.html +> USB to JTAG Interface (experimental) <A +HREF="http://www.hs-augsburg.de/~hhoegl/proj/usbjtag/usbjtag.html" +TARGET="_top" +>http://www.hs-augsburg.de/~hhoegl/proj/usbjtag/usbjtag.html</A +> </P ></LI ><LI @@ -256,7 +277,11 @@ CLASS="emphasis" ><UL ><LI ><P -> Altera USB-Blaster and compatible http://www.ixo.de/info/usb_jtag +> Altera USB-Blaster and compatible <A +HREF="http://www.ixo.de/info/usb_jtag" +TARGET="_top" +>http://www.ixo.de/info/usb_jtag</A +> </P ></LI ><LI @@ -270,6 +295,9 @@ CLASS="emphasis" </P ></LI ></UL +><P +>Other cables: + * Technologic Systems TS-7800 SoC GPIO builtin JTAG interface</P ></DIV ><DIV CLASS="section" diff --git a/web/htdocs/book/_urjtag.html b/web/htdocs/book/_urjtag.html index 6fa1d09e..7b6c89fb 100644 --- a/web/htdocs/book/_urjtag.html +++ b/web/htdocs/book/_urjtag.html @@ -1,4 +1,4 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML ><HEAD ><TITLE @@ -151,7 +151,11 @@ NAME="_urjtag_website" ></H2 ><P >The most current version of this documentation and UrJTAG sourcecode -is always available from the project homepage at http://www.urjtag.org</P +is always available from the project homepage at <A +HREF="http://www.urjtag.org" +TARGET="_top" +>http://www.urjtag.org</A +></P ></DIV ><DIV CLASS="section" diff --git a/web/htdocs/book/_usage.html b/web/htdocs/book/_usage.html index daec7b97..876f7b9d 100644 --- a/web/htdocs/book/_usage.html +++ b/web/htdocs/book/_usage.html @@ -1,4 +1,4 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML ><HEAD ><TITLE diff --git a/web/htdocs/book/index.html b/web/htdocs/book/index.html index f3adbcb2..d944bac6 100644 --- a/web/htdocs/book/index.html +++ b/web/htdocs/book/index.html @@ -1,4 +1,4 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML ><HEAD ><TITLE