====== J-tag programátor JTAGFT2232V02A ====== [[http://www.mlab.cz/Modules/CommSerial/JTAGFT2232V02A/DOC/JTAGFT2232V02A.cs.pdf|Dokumentace k modulu]] [[http://www.ust.cz/shop/product_info.php?products_id=236&osCsid=knud68e99fjvmuruh74pk48hj3|E-shop UST]] Jedná se o J-TAG programátor vhodný pro programování procesorů ARM osazených v modulu [[cs:stm32f10xrxt|STM32F10xRxT01A]]. Tento modul programátoru je softwarově i hardwarově kompatibilní se známou konstrukcí BusBlaster V4. ===== Konstrukce modulu ===== Modul obsahuje USB interface s čipem FTDI a FPGA Xilinx. FTDI čip je připojován k hradlovému poli přes spínače HC4066. A hradlové pole proto může pracovat samostatně a nebo v kombinaci s FTDI čipem. Interni komunikacni signaly jsou 3.3 V proto, protože spicac HC4066 nepracuje spolehlive se signaly mensimi, nez 2 V. ===== Oživení modulu ===== Protože modul komunikuje s programovanou periferií přes hradlové pole, tak je potřeba hradlové pole nejdříve naplnit schématem. To lze udělat programem [[http://xc3sprog.sourceforge.net/guide.php|xc3sprog]]. Tento program zatím nemá .deb balíček. Proto je potřeba jej zkompilovat a nainstalovat klasickým postupem: svn co https://xc3sprog.svn.sourceforge.net/svnroot/xc3sprog/trunk xc3sprog cd xc3sprog cmake . make make package Chybu o nedostupnosti programu // RPM package requires rpmbuild executable// můžeme ignorovat, protože RPM balíček v Ubuntu nepotřěbujeme. Měl by ale vzniknout deb balíček //xc3sprog-0.0-svn752.x86_64.deb//. Který můžeme již nainstalovat standardním instalačním procesem. Pro nahrání schéma je potřeba mín na madolu JTAGFT2232V02A Jumper MODE v poloze JTAG, která umožňuje JTAG spojení s interním CPLD. Pomocí příkazu pak již do modulu nahrajeme schéma: sudo xc3sprog -c bbv2_2 jtagkey.bit Bitfile od schéma je v dokumentační složce //svnMLAB/Modules/CommSerial/JTAGFT2232V02A/HDL/JTAGkey//. ===== Využití modulu ===== Modul může být díky svojí univerzální konstrukci, kdy je jeho funkce dána obsahem CPLD využit pro různé účely. ==== SPI programátor ==== Modul může být použit k naprogramování schéma do SPI flash paměti. ==== J-tag programátor ==== === ARM === Procesory ARM lze přes tento modul programovat pomocí programu OpenOCD. Podrobnosti najdete na stránce [[cs:arm_programming#j-tag|o programování procesorů ARM]]. OpenOCD má v Ubuntu sice dostupné balíčky, ale jejich verze je zatím značně opožděna za současným vývojem. Proto je lepší si zkompilovat aktuální verzi. To provedeme následujícím postupem: sudo apt-get install libtool git gcc automake libftdi-dev texinfo git clone git://git.code.sf.net/p/openocd/code openocd-code cd openocd-code/ ./bootstrap ./configure --enable-maintainer-mode --disable-werror --enable-ft2232_libftdi make sudo make install Tím máme v systému naistalováno OpenOCD. Pokud jej budeme chtít odinstalovat, použije se příkaz sudo make uninstall Pokud máme k počítači připojený modul [[cs:jtagft2232v|JTAGFT2232V02A]] s nahraným schématem v FPGA, tak se můžeme připojit k nějakému ARMu. sudo openocd -f "interface/busblaster.cfg" -f "target/stm32f1x.cfg" Open On-Chip Debugger 0.7.0-rc1-dev-00011-gd9ba56c (2013-04-28-11:46) Licensed under GNU GPL v2 For bug reports, read http://openocd.sourceforge.net/doc/doxygen/bugs.html Info : only one transport option; autoselect 'jtag' adapter speed: 1000 kHz adapter_nsrst_delay: 100 jtag_ntrst_delay: 100 cortex_m3 reset_config sysresetreq Info : max TCK change to: 30000 kHz Info : clock speed 1000 kHz Info : JTAG tap: stm32f1x.cpu tap/device found: 0x3ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x3) Info : JTAG tap: stm32f1x.bs tap/device found: 0x16410041 (mfg: 0x020, part: 0x6410, ver: 0x1) Info : stm32f1x.cpu: hardware has 6 breakpoints, 4 watchpoints OpenOCD teď vytvořilo server ke kterému se můžeme přípojit přes telnet telnet localhost 4444 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. Open On-Chip Debugger > === FPGA hradlová pole === Modul může být dále využit k programování hradlových polí. Tedy například i vývojové desky [[cs:s3an|S3AN01A]]. Výhodou tohoto programátoru oproti řešení [[cs:xvc_ft220x|Xilinx Virtual Cable s obvodem FTDI FT220X]] je že takto lze schéma nahrát i do interní FLASH paměti, takže v FPGA zůstane i po vypnutí napájení. K tomu co je k JTAG modulu připojeno se dostaneme příkazem: xc3sprog -c bbv2 ==== Vývojová deska FPGA ==== Hradlové pole v modulu lze využívat i samostatně v aplikacích, kde je jeho rychlost a rozměr dostačující. Modul tak může být v některých případech použit, jako USB interfaece mezi PC a aplikací. ====== JTAGFT2232V01A ====== Je již zastaralá verze modulu, která není nadále podporována. ==== TODO ==== Seznam změn: přidat tranzistor na (NRST nebo JNTRST - musím zjistit, nemám u sebe zdrojáky) odebrat piníky J9 , J5 ,J6, J7, J13 - jsou nepotřebné a zabírají místo přidat pojistku na USB přidat sériové odpory 22Ohm na JTCK ,JTDI, JTDO, JTMS dodělat nap. translátor? (budeme zatím programovat jen 3,3V aplikace?) === Napsal MIJA === Chtěl jsem udělat JTAG i s napěťovým translátorem ( 1,8 - 3,3 V), proto jsou tam ty tranzistory na reset. Nemusí se řešit napěťová úroveň. Pro datové signály jsem pořídil od TI sn74avc4t774 na převod úrovně. Toto byla první verze, kde jsem chtěl otestovat samotnou funkčnost JTAG. Verze po úpravě ve zdrojáku v OPENOCD fungovala, a mezi tím KAHO přišel na ST-link, který umí pohodlněji naprogramovat STM32Fxxx. Já už se na úpravu nedostal. Pokud bys chtěl FTDI 2232D tak mám ještě dvě (ať mi tu neleží). FTDI dodává už FT2232H, který komunikuje s USB přes High-speed. Bohužel je jiné pouzdro. Určitě dokáže rychleji naprogramovat, ale po prostudování STM je rychlost JTAG omezena a na to stačí FTDI2232D (full-speed).