You are on page 1of 16
sr20%5 Products Download Buy VisuaiGDB Version history Tutorials Tutorial lst MinGW/projects MingWe4 projects Cygwin provects Importing cygwin apos ‘Quick Debug (wins2) Debugging GNU tools Embedded MSP430 devices, MSP430 UART ‘STMS2 devices ATS1SAMT devices noc. ‘ST-Link debugging Texane/ST-Link STM32F4.Discovery ‘STMG2 Timers Freescale Kinetis FROM-KL257, KL252 RGB LEDs STM32 PWM. ‘STZ FPL STM32 UART ARM Semhosting ‘STM32 USB CDC NXPLPC Legacy devices ‘heads Stand-alone projects Newhb-nano ‘C3200 Wi Intellisense nux Tutorials Creating Linux apps Importing Linux apps Linux Libraries ‘Quick Debug (Linux) Embedded Lindx apps ‘Eixing breaknoinis Allaching to apps ‘GNU Octave plugins LLidlelang ‘Gore dumps ‘OtUinux apps. ‘Converting to custom ImageMagick library ‘Tutorial: Making abasic USB CDC project for STMS2F4Discovery Downloads Tutorials Support Contact Making a basic USB CDC project for STM32F4Discovery ‘This tutorial shows how to create a basic USB communication device using the STM32F4Discovery ‘board. The USB protocol stack implementation is contained in the STM32CubeF4 firmware package, however to get a complete project you need to elther use the Stm32Cube MX tool to generat assemble it rom different components inthe firmware package. In this tutorial we will use the second way. Before you begin instal VisualGDB 4.2 or later and get the latest version of the STM32 BSP via Embedded Tools Manager in Visual Studio Tools menu, Also download the STMS2CubeF4 package and unpack its contents somewhere on your computer. 4. Start Visual Studio, open VisualGDB Embedded Project Wizard cae METFemevo iS + Sonne Oubut fuchinttesTe 2 aaa fp sresreiind mene Tm ton saree otemtetont wns Sem strmamemane et eat [eee ee Qi meses mene = BY v4 nscy qi rjc War no 08 ene lection (Gieee) Soltea mae 1 reece trsion 2, The fist page of the wizard allows selecting project type. Proceed withthe default settings: Impuvisualgdh comnorialsiarmisimszsby we sr20%5 ‘OpenGL Linux apps QT on Ubuntu ‘CMake Host aliases Android Tutorials ‘Android quickstart Android Studi ‘Co-debug with Eclnse Vscandroid projects ‘Android InteliSense Andioid Code Mi ‘Android libraries 8 debuggin Using intel HAXM, Hellosni Hello-al2 Hello-neon San-angeles Bitmap-plasm Native-plasma Nave-acivily Native-audio Tworlbs Breakpoint problems Foung breakpoint Debugaing APK Files Developing for OUYA ‘Qt on Android 2dex ‘Command-line too! ware Support Beaglebone Beaglebone C++ ‘Gross-compling ‘QeEmbedded ‘oexnt Raspberry PI Raspberry PI basics ‘Blinking LED Gross-complier Cubieboard C++ ‘Gross-comaling sting tutorials Windows to Linux QT Applications, Customizations Per-user variables ‘Custom sleps (Custom shortouts VisualGDB SDK ‘Tutorial: Making abasic USB CDC project for STMS2FADiscovery New Embedded Project (EEE © nese: YeelG00 genet ee eoncaly nc ap 8 Wl Sud pec sed Devi Sein So Gl uo eee dare Senpe Saeco pecan ma Deh etd ‘Additional output fies: bin shex Go Static trary (2) © © Impost a project buat with commandine too's jerale a Makefile to buld the projec Copy imported Bio specty ati command ine manly project directory LB Goatees) (Ens) Eacnoatan) 3, Select your STM32 device on the second page of the wizard New Embedded Project Psa ect a tua at bo vod eb er oe ieee RI CSG am wai @ Sitscenimail © Secykinnmnny (Seloninlerestioeeiea] eed mo Potegporengpot (Sifyas (eBsweue) (SHB) (snes) ies 4. Speci the location of your LED and the crystal frequency on the sample selection page, Impuvisualgdh comnorialsiarmisimszsby 2K sr20%5 Getting started Array visualizer ‘SDK Reference Documentation GDB commands Linux targets ‘Auto source downl Embedded targets Project Variables, ‘Soures cache Debugging Tricks Environment Makell ‘Android Startup Path mapping Android GDB versions Eindine Hh FAQ ‘Troublesh Tools ADB fix USB driver tool QT Cross-compiler ‘Tutorial: Making abasic USB CDC project for STMS2FADiscovery New Embedded Project omen Teas Senet ace een = , ES --- ss as caaeee Deere) 10 i Cyl feaeey —s0o0H0 continue -[deiug | AS OO 2 HG? Process (]STNE2USOeme. -| se Toons emerge Bae —___ SSCP. ¢ Ea = TE ceto_ZaieSractire Speed = GP0_ SPEED M06; ¥g at Geto tnit(ceron, RaPr0_Tnitstructure); a fer Ga) 3 AL_gPro.jotePtn(eT0D, 6P10_PIN_A2, 6PT0_PIHLSET): q at belay(500) : . HaLGPao feitePin(@L00, GOO PDNLA2, GFIO_POU RESET}: 2 va belay(500)5 > ) copsaion vax Ven mode Uercommends- stews —_-|RS 0 RAP ¥ Visualns is licensed to Sysprogs (site license) :\sys¢0C\amr-eabi \bin\arm-sabi-gdb.exe interpreter ai cr \projec (sea) Calstock|openocd| Hardware. | respite Conmman. inmedat. |Oitput GD8Sess.. Aitos| Loesch 7. Now that the basic project is working, we will add the USB protocol implementation from ST, The USB. implementation consists of 3 parts: ‘© USB core protocol implementation © USB CDC device class (virtual COM port) ‘= USB configuration (descriptors and hardware mappings) First ofall we wil add the core protocol implementation. Right-click on the "Source files" folder and select Add->Import Folder Recursively Impuvisualgdh comnorialsiarmisimszasby 416 sri2015 Tutorial: Making abasic USB CDC project for STMS2FA4Discovery 04) strezsbeno. Miso vento Qaictinnch car BB ALE QT VW FROICT BUD OFUG TAN T0015 ANDROID TEST _ARCHTECTRE ANALYZE NOW HELD o- B-aew LocstWindows Debugger - Debug - | Ab $f teancpe =x - EEE 4 Glo Seopa 1 60d) e-2 am gare ? wa zntt(s (clin) D~ z FT Solution 'STMR2USBDemo! O proje 2 Pe, -aenes 4 fl Header ties Pi Device peti ks ‘eP10_Inktstructure.Mode = 69T0_00® OUTPUT PP » 2 (Pr Enitstructure-spoed = 6°20 s?e=o MIS Rerource ies ero_Enitstructure.Pull = 610_H0PULL? 4 Gl sourcefies AL_GPL0_Inse(GF100, aPIO_Instseractare)s Newer creesnineg Ae tng tem, switteae-x}a Cos Wad cr 1 New Saiton Explore View 4 Resource x ce cox erp folder reasvely Copy cake SP5ts exetenooo pet onaseensco 1 Aires eeepetive() nee not inva 1 Rename itget halted ue 9 debumcreguns A Popes Attar imbedded Memory Explorer EorUt| Output Find Symbol Rests pet] Seat. [Frome Ce 8. Select the STM32_USB_Device_Library\Core directory from the STM32CubeF4 package. Select ‘copy folder to project with subpath’ and enter ‘USB’ as the subpath: Bi» tlds cad on ts computer Fellertoimpot: —W_ SW (2 cConyfotero sec ier whats: (U58 AN ee slop (ae STHRLSEDEne Csi | 9. Press OK. The core files will be copied and imported to Solution Explorer. Import the Class\CDC directory from the STM32CubeF4 package in a similar way: Impuvisualgdh comnorialsiarmisimszasby 516 sri2015 “Tutorial: Making abasic USB CDC project for STMS2FADiscovery Bo tro cxoritcstetonis computer Faldertoimoot: V7.1 0Wddieweres\ST\STHS2 USB Device Ltran/\Ciew\C0C (i) Wicortixrometitrwh sit: Ut aren eaten sane 10, Finally we need to copy USB configuration files. A sample CDC project can be found under Projocts\$TM324x3|_EVAL\Applications\USB_Dovico\CDC_ Standalone in the STM32CubeF'4 package. Copy usb. conf and usb. dose sources from the sré directory and their counterparts from the ine directory, Add them to the praject and delete the usbd_conf_tomplate.h and usbd_cont_template.c files from the USBlcore folder as they are now replaced by actual ‘configuration les. When you're done, the Solution Explorer should look the following way: 0 stvezusedemo- wicost view! stale ule Laure (re e- 4 x LE EDIT YEW BROIECT BUILD DEBUG TEAM TOOLS ANDROID TEST. ARCHITECTURE ANALYZE WINDOW — HELP oo B-aae ieee mie : wine 6 ec» - I Ee : Jee bre aeloe = El Schtion STNEZUSHDeMe! proce) BU | wie cxinaitis Reece i or aaa GP10_InitStructure.Pin = GPIO_PIN_12; re neehiae GPIO_IntStructure.Made = GPIO_M0D¢_OUTPUT_PP5 ‘sal Resource files ‘Gt0_intestructure.speed = GP10 sPtzD MIG 4 Gi Sourceftes Seren cons iatcsonee eee ees, ee Bafa mel ee ‘ Vie eteleee ax cero nrteepin(orto0, gore pan_32, or20_ pene ‘wat_be10y (500s ‘aL_GPTO_MeltePin(GPTOD, GPTO_PTHLA2, GPIO_y ae moe -« » di ae ‘Output ea » usbe cthege 2PSR: exeieeegee pc: axeseee369 nsp: enzeeiceee = 1B stma2tho hal contin ire: teepative() oa not invoned in the se0ees tine bt ustdeonte ‘arpet hated aun to de eo Scenes Embedded Memory Emploer ErorUst| Output FndSymbolResuts Propet |Soltiow TeamEn | Ces 11. Finally we need to add the directories withthe copied include files to the include directory list and ensure the usb_cont.c file uses the USB peripheral in FS mode (HS is nat supported on 'STM32F407). Open VistalGDB Project Properties, add the 'USE_USB_FS' macro to Preprocessor Macros and the backward slash (\) Impuvisualgdh comnorialsiarmisimszasby 'USB/CorelIne’ and USB/CDED/Ine’ directories to Include Directories (dont use the oe sri2015 ‘Tutorial: Making abasic USB CDC project for STMS2FADiscovery Projet Watt tins Poses (Ecorse Ouostonaye —_STUEBUSBDane utd Teste (Hite swsctie =] [2 Sacre eet Wakeconmards — [endmse ze i) ioral samen Con graten Make tg Bay recuy: Debs rey ancien Lira: Assn erro: ac 0S aman: russ. “so Raines 5D cori “cof Rrctonsners osiceste OD Coe) Cena) Ete) 12, Although the projects stil missing some important parts, we will now build i to ensure that we did not ‘miss any include fl ‘should succeed, although the USB code will be discarded by the linker as its not referenced anywhere resuiting in a tiny memory footprint: Impuvisualgdh comnorialsiarmisimszasby 716 sri2015 ‘Tutorial: Making abasic USB CDC project for STMS2FA4Discovery 04) strezDeno. Miso ant to Qadiani BY a BLE EDIT YEW BROIRCT BUILD DEBUG TEAM TOOLS ANDROID. TEST. ARCHITECTURE ANALYZE WINDOW HELP OB -G~ P tecsivinsouDebugger- Dewy - A ta $ seoscontc CTR Sessa oe =4 zy ic = +! i a, zocr4ck(s E a SALSYSTI6C Pater ()s r zg ob 8 Fine msin(void) = ¢ ‘ sa antes A 3 ston cue EUABLE() =] Bio lsty pater Gozo EakeStructares i (ao-intestructre. pees = ohxo shiD OR : ‘s10_Enitstructure,PUll = 690 NOPULG: 2 ‘aL Geta zn eot0o, A6PEo EnStractre)s Ee oupet + PX Fnbaed Meer ~ 4x ‘sea Haste 2660 wytes oa oF sears (08) ALASE (lll 206800 ted Rise 32 byte out ot 19008 (08) ; iiss A successes, @ Faited, @ up-teo RAM | tee 7 a ole. For it| Output Find Sb Renits (1 /Sye6CC (armen /bin/ere 19. Now i’ the time to start using the imported USB code from main). Replace the main( function with the following code (do.not remove SysTick Handler): eatern "oF C Binclude include Vinciude #include USBD_HandletypeDef USBD_Device; , static void systemclock Config (void) fi RCC_ClkrnittypeDef RCC_ClkInitstruct: RCC_OscinitTypeDef RCC_Oscinitszract; __PWR_CZK_ENABLE (); han_peR_vonTasi “ALING_CONFTG (PWR_REGULATOR_VOLTAGE_SCALE Roc_Oseznitstruct.OscillatorType = RCC_OSCTLLATORTYFE_HSE; RCC_OscInitstruct ASEState ~ RCC_HSE OW; RoC_Oscrnitstruct..PuL.PLState ~ RCC_?LL_oWs RCC_OseInitStruct PLL. PLLSource = RCE_PLUSOURCE_#S= RoC_Oscrnittruct.PuL.PLIM = 87 ROCLOseInitStruct PLL.PLIN = 33) RoC_OseinitStruct..PUL.PLLP = RCC PLLP_DIV2: ReC_oseInieseruct PLL.PLLO= 77 RAL _RCC_OscConfig {sRCC_OocTnitstruct) + RCC_Clkrnitstruct .ClockType ~ {RCC_CLOCKTYPE_SYSCIK | RCC_CLOCKTYPE_HCLK || RCC_CLOCKTYPR_PCLE1 | RCCLELOCKTYPE_PCLE2) ; Impuvisualgdh comnorialsiarmstmsziusby ane srs Tutorial Making abasic USB COC projector STMSZF4DIscovey Rcg_ClkInitstruct .SYSCiRSource = RCC_SYSCLKSOURCH_PLLCIRs RCC_CLeInitStruct .AHBCLADS vider = RCE_SYSCLK_DIVIT. Roo_ClkinitStruct APBICLRDivider = RCC_ACLK_BIVa; RCC_CleInieStruct APB2CLKDivider = RCC_ACLK_DIV2; RAL_RCC_ClockConfigieRcc_Clkinitstruct, FLASH_LATENCY_S} 1 int main (void) ‘ HAL_Init SystenClock config); USBD_Init (40SED_Device, sVCP_Desc, 0}; USED _RegisterClass(cUSBD_Device, sUSSD_cDC}; USBO_CDC Registerinterface (SUSED_Cevice, US8D_COC Template USBD_Start («USBD_Device) ; for Gi) 1 "Note that the PLL values above are valid for the 8 MHz crystal on the STM32F4Discovery board. If you are using a different crystal, you will need to modify the values. 114, Two last things to do before we can test our device is to implement the _sbrk() function that tells the © Niprary the location of the heap and provide the USB OTG interrupt handler that wil call the corresponding handler of the ST USB library: caddr_t _sbrk(int increment) ‘ extern char end asni"end") ; register char *pStack asm("sp") : static char *s_pHeapsndy Af (1s_ptteapEna) 5 pieapend = send; if (s_pHeapend - increment > pstack) return (caddr_t)-17 char *poldieapsnd ~ s_pHeapend s_pleapina += increment? return (caddr_t) poldieapBnd , extern PCD_HandletypeDef hped; void 076 ¥8_IRQHandler (void) ‘ HAL_PCD_IRgHandier (ahped) ; > 15. Build the project again. Note how the FLASH footprint increased from 2.6KB to 23KB as the USB code Js now included in the binary. Impuvisualgdh comnorialsiarmisimszasby a6 sri2015 ‘Tutorial: Making abasic USB CDC project for STMS2FA4Discovery 8 sie sick unc (-) e- 8 x BLE EDIT YEW PROIECT EULD QEEUG TEAM TOOLS ANDROID TEST. ARCHITECTURE AWALYZE WONDOW HELP eel eee eee ee ee Te — b Pa iscsi ‘ minis eS, seems Si giana fren, Pere renders re ree : Seer te Ga) ‘ i SOEs eee ICES Spee ieee ra Es Se ee ee Ce ee | as 16. Connect your board using both USB sockets. Note thatthe mini-USB socket is needed for JTAG debugging and the micro-USB socket is connected to the STM32F407 microcontraller itself ‘STM32 USB (micro-USB) JTAG(mini-USB) 17. Press C1rFS to program the device without debugging it. The Device Manager should now show 2 instances of the port. Each instance corresponds to ane of 2 interfaces reported by the ST library (see the definition of USBD_CDC_CtgFSDesc} Impuvisualgdh comnorialsiarmisimszasby 1018 sri2015 Tutorial: Making abasic USB CDC project for STMS2FADiscovery fie aston View Hp 9G Bl el Ta Dis 2 ny epee © B ovrco-eeu ine: 5 Ta Ronny ates > copy vcore + Bj Maran imeoe Doves © GQ DEATIATAM conte > S opoaes Ph Meee png aw i vento oR Neto tape 4 Lb Other devices: {STA Veal emoninFSMode 5 5B Pore comaen > Proceso 5: Sur ceo and pene cotoe ©} Songe coolers 2 Spe deve >i) Unwell us combos ar) 18, Although the ST USB library implements the standard USB CDC class and Windows has drivers for it, ‘twill not recognize the device without an inf file specifying which diver to use. Download and install the SIMS2 VCP drivers to get Windows to recognize your device. Take a note of the COM port ‘number assigned to the device: ‘le Aion View Hep > |fn| |B rel | OF ee 7 Depry stoies eh BODIED ROM eer 1 Pepe eves 1 ei Floppy eve contro: Oj Hamanirertce Deve peg DEATAATADL contllrs 5S Koa 1B Miceand othe pointing dovces [onto aE Newark adapts 'P Pene (coma ton, I Communicators Pert (COM) "Communication Pot COM) 1 Pinter Pot LPT) | [0 smtiresleoncs Virus COM Por (COM) DE Prscenon 1% Sound video and game contraers |S Stonge conte 1 AB Sytem devices bl) Univeral eral Bur contre 2 Us 19. Now we will add some basic functionality to our project. We will make a variation ofa simple ‘echo’ application. First of all madify the TEMPLATE_Init() function in usbd_ede_i_template.c to set a receive buffer: extern USBi Handisiypete® Wseb Sevieey static struct fl wint#_t Buffer [CoC_DATA_#5_OUT_PACKET_sIZE]; int Position, Sizes char Readdones Impuvisualgdh comnorialsiarmisimszusby wi sri2015 “Tutorial: Making abasic USB CDC project for STMS2F4Discovery 1} s_RxBufter; char g_VCPInitialized; static Int®_t TENPLATE_rnit (void) fi USBD_COC_SetRXBuffer (SUSBD_Device, # RwBUffer Buffer) : g_VeBInitialized = 1; return (0); 20. Then modify TEMPLATE,_Receive() that is called from an interrupt handler to store received data in cour buffer: Static Int@ U TEMBLATE Receive (Wiaee War, WIREIAT Fea fi 2_RxBuffer.Position = 07 Ss ReBuffer.Size = "Len; ScReBUuF fer Readdone = 17 return (0); n 21, Then add basic read and write functions: Tne Vee read (void “pBuffer, iat size) c Af (18_RxBuffer ReadDone) return 0; int remaining int todo = MIN Af (tedo <= 0) return 07 s_AxBuffer-Size ~ s_RxBuffer.Positions efaining, size): memcpy (pBuffer, ¢_Rxbuffer.bufter + s_RxBuffer.Position, todo): 5 ReBuffer.Position += todo; AT (s_RxBuffer.Position >= 9_RxBuffer.size) ‘ s_RxBuffer-ReadDone = 97 D_CDC_ReceivePacket (6USSD_Device) ; return todo: int VeP_write(const void *pBuffer, int size Af (size > coc_DATA_Hs_ovP PACKET SIZE) ‘ int offset; for (offset = 0; offact < size: offsects) c int todo = MIN (COC_DATA_HS_OUT_PACKET_SrZE, size ~ offset); int done ~ VoP_write(({char *)pBuffer) + offset, todo); if (done I= todo) return offset + done: ' > USBD_COC_HandleTypepet *pcoe = {us30_coc_Handielypebet *)US80_Device.pClassData; whiletpene->7xstate) { } //wait for previous transfer USBO_COC_SetTxBUffer (SUSBD_Device, (uintB_t *)pBuffer, size); if (UsBD_cbc_Transmitpacket (4USBD Device) != U820_0K) return 07 while(penc-otxstate) { } //wait until transfer is done D ‘Add the prototypes of the new functions and the intalization flag to usb_ede_if Impuvisualgdh comnorialsiarmisimszasby vai8 sri2015 ‘Tutorial: Making abasic USB CDC project for STMS2F4Discovery FRE" UEB esas ota SBME RSE Re ST zeT 7 int VePTwrite (const void *pBuffer, int size): Note that the current code will use the receive butfer for one packet only and wait for the entre transmission to complete before returning. This is slow and inefficient compared to a pair of ring buffers and is only shown here do to extreme simplicity. 22, The ST's USBD_CDC_TransmitPacket() function contains a bug: it sets the ‘transmission in progress’ lag AFTER Starting the actual transmission, so if the ‘transmission done’ interrupt happens. too early, the flag willbe set AFTER the interrupt and hence will never be cleared. To fix this, move LL, hede->txstate = 2 USBD_LL_Transmit (pdev, CDC_IN_SP, hede->7xBuffer, hede->Txlengta) + return JSBD_OK; 2 23, Finally replace the empty loop in maind with the fallowing code: Ghar syte? for Ui t if (WeP_road(abyte, 1) != 1) vo write("\r\nyou typed ", 127 ver™write(abyce, 1); vor write("\r\a", 2); n 24. Now we wil test our fimware. Go fo VisualGDB Project Properties and enable the raw terminal on the device COM port. Set the mode to "ext only and enable character echoing: (2) Opens tome wt sina pt Conection ting: Paasche conection oe 1 Eoin pdb het ct veeerame LE 3 osc aie cam tein ont ates a: ER wet (Cn) (tetas) ate) Impuvsualgdh comnorialsiarmisimszsby 1916 sri2015 ‘Tutorial: Making abasic USB CDC project for STMS2F4Discovery 25. Build your project and press FS to start debugging. Open the raw terminal and type something there. See how the you typed’ lines are sent by the device, You can also set breakpoints, step and inspect Variable values like when debugging normal programs: 06 strezs0.ne Dang ALE EDIT VEW PROIECT BUILD DEBUG TEAM TOOLS ANOROID TEST ARCHITECTURE ANALYZE WINDOW HELP ° aawo > cominse Process 1 ch e- 8 x BO 2G Toren 1] Remote tse “v resin) char bytes fer G3) a ‘ a 26 (ver rend(atyee, 2) 1) g ‘oneinies 2 ver wedteC"irAnvou typed "5 22)5 z e vorcwrste(byte, 1; Eerste ee byte 52 com vax Coneaestocomt @ X a id t+ 27. Ifyou try to build your project now, the linker will complain about missing functions like _write(). This Js because the standard library does not know how to sendireceive data through the USB interface. ‘Add the following code to your main file to provide the necessary functions: P'finelude at (int fd, struct stat *pstas) aR, int write (int fd, ch Impuvisualgdh comnorialsiarmstmsziusby wie sri2015 ‘Tutorial: Making abasic USB CDC project for STMS2F4Discovery if (done) ‘ . 28. Now build your project and press F5 to start debugging. Note thatthe first ‘enter @ number line will be lost as is printed before VisualGDB connects to the COM port. Type in some numbers and observe the output: @]st22us80emo Running) - Microsoft Visual Sti wick Launch (Ci ep- 8 x BLE EDIT YEW BROIECT EULD QEEUG TEAM TOOLS ANDROID TEST. ARCHITECTURE ANALYZE WINDOW HELP ° wee = Process ()STNEZUSEOeno. onf(-Xs", 6001) : g prdntt("Kd = oxdae\n", val, valde : 29. Congratulations! If you see the output as in this example, you have created a fll functional USB device. Note how the FLASH footprint of the firmware has increased significantly after we started sing printf), Use the Embedded Memory Explorer to find which ofthe functions occupy most ofthe memory: Impuvisualgdh comnorialsiarmisimszasby 1816 sri2015 ‘Tutorial: Making abasic USB CDC project for STMS2FA4Discovery bd srrezuszdemo- micros view Sto ul Laure (0 pa a x BLE EDIT YEW BROIRCT BUILD DEBUG TEAM TOOLS ANDROID. TEST. ARCHITECTURE ANALYZE WINDOW HELP o-o|8-auw > LocaWindoweDehugger~ Oenag -| Aste OT - aan s usd ae a 3 (Guba ope v4 £ wile Cg veriieintised) ee sh tor : z 1 ese : z prise (tear wonders 9 q Feentxt, eat) i prints (Cad = ACA, val, wes Be ms mal 4 z oun + PX Embeds Menon Bylo £ [ites a saraee staves nauces — =— Xe5k exeteea009 pe: oxaonenese | GREASE Ix 70% {erect felted de £0 bresooint este sa 73% Mare heen anv) ves ne ine ) Lj —“2Vemer fae fa ‘Terset stares halves LSet [=e faex! ‘rg lie he fo doe ene ods [ro sas ee aa |sa san a Mi las: an = [stent [amass < > oi eco Rover tra pas For Lit | Output Find Symbol Renits Adsense 000160 (© 2015 Sysprogs OU. All rights reserved. - Impressum | Tamms of Use| Capyright | Privacy Policy, Impuvisualgdh comnorialsiarmistmsusby 1618

You might also like