[{"data":1,"prerenderedAt":1923},["ShallowReactive",2],{"post-\u002Fblog\u002F2022\u002Fpushing-the-rectangle-through-the-round-develop-with-riot-os-on-windows-doing-the-impossible":3},{"id":4,"title":5,"body":6,"categories":1907,"date":1912,"description":50,"extension":1913,"image":1914,"meta":1915,"navigation":292,"path":1919,"seo":1920,"stem":1921,"__hash__":1922},"blog\u002Fblog\u002F2022\u002Fpushing-the-rectangle-through-the-round-develop-with-riot-os-on-windows-doing-the-impossible.md","Pushing the Rectangle Through the Round - Develop With RIOT OS on Windows - Doing The Impossible",{"type":7,"value":8,"toc":1889},"minimark",[9,13,16,27,32,41,44,74,89,146,149,164,167,170,175,183,187,190,194,197,201,208,212,250,254,258,267,273,276,322,325,445,449,458,462,477,480,483,489,492,496,499,503,508,511,515,522,669,672,678,681,1685,1688,1691,1694,1738,1749,1864,1867,1871,1885],[10,11,12],"p",{},"Work in progress",[10,14,15],{},"As many of you, I also have Windows 10 natively on my Notebook and don't want to switch to Linux, every time, I do some development that relies on the common Linux cross-development-tools but runs inside MSYS. The great advantage is, that recent notebooks are quite comfortably staffed with CPU power and they are always at your hand.",[10,17,18,19,26],{},"Just to make it a bit more complicated, the toolchain is always a minor issue to link to it correctly and to extend complexity, I'll also give some hints on setting up the MSP430, STM32 and the ESP32 environment. For ARM, it mostly can be done using the ",[20,21,25],"a",{"href":22,"rel":23},"https:\u002F\u002Fdoc.riot-os.org\u002Fgetting-started.html",[24],"nofollow","Getting Started Guide"," on RIOT.",[28,29,31],"h2",{"id":30},"preparations","Preparations",[10,33,34,35,40],{},"Therefore, I decided to give MSYS2 again some try (see ",[20,36,39],{"href":37,"rel":38},"https:\u002F\u002Fthe78mole.de\u002Fwindows-was-just-a-pain\u002F",[24],"Windows (was) just a pain"," to get up with MSYS2) and try to build RIOT OS on MSYS2.",[10,42,43],{},"When MSYS has been installed, you can simply create some SSH key on the MSYS command line using:",[45,46,51],"pre",{"className":47,"code":48,"language":49,"meta":50,"style":50},"language-bash shiki shiki-themes github-light github-dark","$ ssh-keygen -t ed25519\n","bash","",[52,53,54],"code",{"__ignoreMap":50},[55,56,59,63,67,71],"span",{"class":57,"line":58},"line",1,[55,60,62],{"class":61},"sScJk","$",[55,64,66],{"class":65},"sZZnC"," ssh-keygen",[55,68,70],{"class":69},"sj4cs"," -t",[55,72,73],{"class":65}," ed25519\n",[10,75,76,77,80,81,84,85,88],{},"Answer everything with enter, if it is OK for you to not have the key password protected. Check, where your key-pair has been placed (",[52,78,79],{},"\u002Fc\u002FUsers\u002F$USERNAME\u002F.ssh"," or ",[52,82,83],{},"~\u002F.ssh",") and put a ssh config file beside it with e.g. ",[52,86,87],{},"vim ~\u002F.ssh\u002Fconfig"," or any editor of your choice (need to run in MSYS shell) with the following content:",[45,90,92],{"className":47,"code":91,"language":49,"meta":50,"style":50},"Host github.com\nForwardAgent yes\nUser git\nIdentityFile \u002Fhome\u002F\u003CYOUR_USERNAME>\u002F.ssh\u002Fid_ed25519\n",[52,93,94,102,111,120],{"__ignoreMap":50},[55,95,96,99],{"class":57,"line":58},[55,97,98],{"class":61},"Host",[55,100,101],{"class":65}," github.com\n",[55,103,105,108],{"class":57,"line":104},2,[55,106,107],{"class":61},"ForwardAgent",[55,109,110],{"class":65}," yes\n",[55,112,114,117],{"class":57,"line":113},3,[55,115,116],{"class":61},"User",[55,118,119],{"class":65}," git\n",[55,121,123,126,129,133,136,140,143],{"class":57,"line":122},4,[55,124,125],{"class":61},"IdentityFile",[55,127,128],{"class":65}," \u002Fhome\u002F",[55,130,132],{"class":131},"szBVR","\u003C",[55,134,135],{"class":65},"YOUR_USERNAM",[55,137,139],{"class":138},"sVt8B","E",[55,141,142],{"class":131},">",[55,144,145],{"class":65},"\u002F.ssh\u002Fid_ed25519\n",[10,147,148],{},"As soon as you did this, put your public key into the settings of your GitHub account. You can show the public key with",[45,150,152],{"className":47,"code":151,"language":49,"meta":50,"style":50},"$ cat ~\u002F.ssh\u002Fid_ed25519.pub\n",[52,153,154],{"__ignoreMap":50},[55,155,156,158,161],{"class":57,"line":58},[55,157,62],{"class":61},[55,159,160],{"class":65}," cat",[55,162,163],{"class":65}," ~\u002F.ssh\u002Fid_ed25519.pub\n",[10,165,166],{},"Copy the output and paste it as a new key in your GitHub settings.",[10,168,169],{},"To be able to compile the RIOT OS for your specific platform, you need to install the appropriate toolchain:",[171,172,174],"h3",{"id":173},"arm-cortex","ARM Cortex",[45,176,181],{"className":177,"code":179,"language":180},[178],"language-text","$ pacman -S mingw-w64-x86_64-arm-none-eabi-gcc \\\n            mingw-w64-x86_64-openocd \\\n            mingw-w64-x86_64-gdb-multiarch \\\n            make doxygen wget unzip \\\n            mingw-w64-x86_64-python-pyserial\n\n# Be sure to add the path to the compiler to your PATH environment by adding the following to your ~\u002F.bashrc\n$ vim ~\u002F.bashrc\n\n[...]\nPATH=${PATH}:\u002Fmingw64\u002Fbin\u002F\nexport PATH\n","text",[52,182,179],{"__ignoreMap":50},[171,184,186],{"id":185},"esp32","ESP32",[10,188,189],{},"Download and install ESP-IDF in your Windows environment. Follow the Get Started - ESP32 page (you only need to install the ESP-IDF and optionally the VSCode extensions.",[171,191,193],{"id":192},"msp430msp430f","MSP430\u002FMSP430F",[10,195,196],{},"There is only a single board left for this arch... There is a high change, that you need to create your own board definition for a development board using this, including to add some of the forgotton cpu regs...",[171,198,200],{"id":199},"general","General",[10,202,203,204,207],{},"To find available boards quickly, clone the GIT and run ",[52,205,206],{},"make info-boards"," on the shell.",[28,209,211],{"id":210},"getting-the-code","Getting the Code",[45,213,215],{"className":47,"code":214,"language":49,"meta":50,"style":50},"$ cd ~\n$ mkdir GIT\n$ git clone git@github.com\u002FRIOT-OS\u002FRIOT.git\n",[52,216,217,227,237],{"__ignoreMap":50},[55,218,219,221,224],{"class":57,"line":58},[55,220,62],{"class":61},[55,222,223],{"class":65}," cd",[55,225,226],{"class":65}," ~\n",[55,228,229,231,234],{"class":57,"line":104},[55,230,62],{"class":61},[55,232,233],{"class":65}," mkdir",[55,235,236],{"class":65}," GIT\n",[55,238,239,241,244,247],{"class":57,"line":113},[55,240,62],{"class":61},[55,242,243],{"class":65}," git",[55,245,246],{"class":65}," clone",[55,248,249],{"class":65}," git@github.com\u002FRIOT-OS\u002FRIOT.git\n",[28,251,253],{"id":252},"creating-the-hello-world-application","Creating the Hello World Application",[171,255,257],{"id":256},"manual-creation-of-application","Manual creation of application",[10,259,260,261,266],{},"Since we first want to understand the structure for extending riot, which also applies for modules and drivers, we will first do it manually. We will follow the guide on the ",[20,262,265],{"href":263,"rel":264},"https:\u002F\u002Fdoc.riot-os.org\u002Fcreating-an-application.html",[24],"RIOT doc page",".",[45,268,271],{"className":269,"code":270,"language":180},[178],"$ mkdir hello_world\n$ cd hello_world\n",[52,272,270],{"__ignoreMap":50},[10,274,275],{},"Create a main.c with following content:",[45,277,281],{"className":278,"code":279,"language":280,"meta":50,"style":50},"language-c shiki shiki-themes github-light github-dark","#include \u003Cstdio.h>\n\nint main(void)\n{\n    puts(\"Hello World!\");\n    return 0;\n}\n","c",[52,282,283,288,294,299,304,310,316],{"__ignoreMap":50},[55,284,285],{"class":57,"line":58},[55,286,287],{},"#include \u003Cstdio.h>\n",[55,289,290],{"class":57,"line":104},[55,291,293],{"emptyLinePlaceholder":292},true,"\n",[55,295,296],{"class":57,"line":113},[55,297,298],{},"int main(void)\n",[55,300,301],{"class":57,"line":122},[55,302,303],{},"{\n",[55,305,307],{"class":57,"line":306},5,[55,308,309],{},"    puts(\"Hello World!\");\n",[55,311,313],{"class":57,"line":312},6,[55,314,315],{},"    return 0;\n",[55,317,319],{"class":57,"line":318},7,[55,320,321],{},"}\n",[10,323,324],{},"Create the file Makefile with following content:",[45,326,328],{"className":47,"code":327,"language":49,"meta":50,"style":50},"# Set the name of your application:\nAPPLICATION = helloworld\n\n#BOARD ?= esp32-wroom-32\n#BOARD ?= msb-430h\n# We will use the STM32F429-DISC1 for further stuff... In a later blog post, I will also show the ESP32...\nBOARD ?= stm32f429i-disc1\n\n# When using ESP32, put the path in, where you installed the ESP-IDF, e.g.\n#ESP32_SDK_DIR=\u002Fc\u002FUsers\u002Fthe78mole\u002Fesp\u002Fesp-idf\n\n# This has to be the absolute path to the RIOT base directory:\nRIOTBASE ?= $(CURDIR)\u002F..\u002F..\u002FRIOT\n\ninclude $(RIOTBASE)\u002FMakefile.include\n",[52,329,330,336,347,351,356,361,366,377,382,388,394,399,405,425,430],{"__ignoreMap":50},[55,331,332],{"class":57,"line":58},[55,333,335],{"class":334},"sJ8bj","# Set the name of your application:\n",[55,337,338,341,344],{"class":57,"line":104},[55,339,340],{"class":61},"APPLICATION",[55,342,343],{"class":65}," =",[55,345,346],{"class":65}," helloworld\n",[55,348,349],{"class":57,"line":113},[55,350,293],{"emptyLinePlaceholder":292},[55,352,353],{"class":57,"line":122},[55,354,355],{"class":334},"#BOARD ?= esp32-wroom-32\n",[55,357,358],{"class":57,"line":306},[55,359,360],{"class":334},"#BOARD ?= msb-430h\n",[55,362,363],{"class":57,"line":312},[55,364,365],{"class":334},"# We will use the STM32F429-DISC1 for further stuff... In a later blog post, I will also show the ESP32...\n",[55,367,368,371,374],{"class":57,"line":318},[55,369,370],{"class":61},"BOARD",[55,372,373],{"class":65}," ?=",[55,375,376],{"class":65}," stm32f429i-disc1\n",[55,378,380],{"class":57,"line":379},8,[55,381,293],{"emptyLinePlaceholder":292},[55,383,385],{"class":57,"line":384},9,[55,386,387],{"class":334},"# When using ESP32, put the path in, where you installed the ESP-IDF, e.g.\n",[55,389,391],{"class":57,"line":390},10,[55,392,393],{"class":334},"#ESP32_SDK_DIR=\u002Fc\u002FUsers\u002Fthe78mole\u002Fesp\u002Fesp-idf\n",[55,395,397],{"class":57,"line":396},11,[55,398,293],{"emptyLinePlaceholder":292},[55,400,402],{"class":57,"line":401},12,[55,403,404],{"class":334},"# This has to be the absolute path to the RIOT base directory:\n",[55,406,408,411,413,416,419,422],{"class":57,"line":407},13,[55,409,410],{"class":61},"RIOTBASE",[55,412,373],{"class":65},[55,414,415],{"class":138}," $(",[55,417,418],{"class":61},"CURDIR",[55,420,421],{"class":138},")",[55,423,424],{"class":65},"\u002F..\u002F..\u002FRIOT\n",[55,426,428],{"class":57,"line":427},14,[55,429,293],{"emptyLinePlaceholder":292},[55,431,433,436,438,440,442],{"class":57,"line":432},15,[55,434,435],{"class":61},"include",[55,437,415],{"class":138},[55,439,410],{"class":61},[55,441,421],{"class":138},[55,443,444],{"class":65},"\u002FMakefile.include\n",[171,446,448],{"id":447},"generating-an-application-with-riotgen","Generating an Application with riotgen",[10,450,451,452,457],{},"To generate the base structure of RIOT extensions (applications, boards, modules, drivers, examples packages and tests) easily and efficiently, some can also make use of the ",[20,453,456],{"href":454,"rel":455},"https:\u002F\u002Fpypi.org\u002Fproject\u002Friotgen\u002F",[24],"riotgen"," tool, which is available as a python module through a pypi project. To install riotgen, simply execute:",[28,459,461],{"id":460},"starting-to-build","Starting to build",[45,463,465],{"className":47,"code":464,"language":49,"meta":50,"style":50},"$ make info-programmers-supported\n",[52,466,467],{"__ignoreMap":50},[55,468,469,471,474],{"class":57,"line":58},[55,470,62],{"class":61},[55,472,473],{"class":65}," make",[55,475,476],{"class":65}," info-programmers-supported\n",[10,478,479],{},"You should should be informed, that the programming tool is esptool for ESP32, mspdebug for MSP430 and .",[10,481,482],{},"If you selected the STM32 board an also added the path to ARM-GCC correctly, you should be able to see the following output:",[10,484,485],{},[486,487],"img",{"alt":50,"src":488},"\u002Fimages\u002Fblog\u002F2022\u002F01\u002Fimage-1.png",[10,490,491],{},"stm32f429i-disc1 would be the correct board... otherwise, serial over ST-Link will not work (just an older screenshot)",[28,493,495],{"id":494},"adding-blinken-lights-to-hello-world","Adding Blinken Lights to Hello World",[10,497,498],{},"TODO",[28,500,502],{"id":501},"target-specific-configs","Target specific configs",[504,505,507],"h4",{"id":506},"stm32","STM32",[10,509,510],{},"To be able to run openocd with the stlink command, you need to add some stlink.cfg, that fits your environment. You also need some ST-Link or a discovery board with an integrated ST-Link.",[28,512,514],{"id":513},"flashing-your-target","Flashing Your Target",[10,516,517,518,521],{},"Flashing with OpenOCD (e.g. for STLink) does not work out of the box in MSYS2 and needs some little push. OpenOCD can not find the stlink.cfg, you should edit the ",[52,519,520],{},"RIOT\u002Fdist\u002Ftools\u002Fopenocd\u002Fopenocd.sh"," and add two lines of code to adjust the absolute path and prepend it with the drive-letter in windows style... OK, a very dirty fix, but at least, it works for the moment :-P",[45,523,525],{"className":47,"code":524,"language":49,"meta":50,"style":50},"#!\u002Fusr\u002Fbin\u002Fenv bash\n#\n\n# Work around a mingw\u002FMSYS2 bug with absolute filenames and linux style drive-letter path\nOPENOCD_ADAPTER_INIT=$(echo $OPENOCD_ADAPTER_INIT | sed -e 's\u002F\\\u002F\\(.\\)\u002F\\1:\u002F')\n\n[...]\n\n#\n# now comes the actual actions\n#\ndo_flash() {\n    IMAGE_FILE=$1\n\n    # Another workaround to fix a bad mingw\u002FMSYS2 behaviour\n    IMAGE_FILE=$(echo $IMAGE_FILE | sed -e 's\u002F^\\\u002F\\(.\\)\u002F\\1:\u002F')\n    test_config\n    test_imagefile\n",[52,526,527,532,537,541,546,578,582,587,591,595,600,604,612,623,627,632,657,663],{"__ignoreMap":50},[55,528,529],{"class":57,"line":58},[55,530,531],{"class":334},"#!\u002Fusr\u002Fbin\u002Fenv bash\n",[55,533,534],{"class":57,"line":104},[55,535,536],{"class":334},"#\n",[55,538,539],{"class":57,"line":113},[55,540,293],{"emptyLinePlaceholder":292},[55,542,543],{"class":57,"line":122},[55,544,545],{"class":334},"# Work around a mingw\u002FMSYS2 bug with absolute filenames and linux style drive-letter path\n",[55,547,548,551,554,557,560,563,566,569,572,575],{"class":57,"line":306},[55,549,550],{"class":138},"OPENOCD_ADAPTER_INIT",[55,552,553],{"class":131},"=",[55,555,556],{"class":138},"$(",[55,558,559],{"class":69},"echo",[55,561,562],{"class":138}," $OPENOCD_ADAPTER_INIT ",[55,564,565],{"class":131},"|",[55,567,568],{"class":61}," sed",[55,570,571],{"class":69}," -e",[55,573,574],{"class":65}," 's\u002F\\\u002F\\(.\\)\u002F\\1:\u002F'",[55,576,577],{"class":138},")\n",[55,579,580],{"class":57,"line":312},[55,581,293],{"emptyLinePlaceholder":292},[55,583,584],{"class":57,"line":318},[55,585,586],{"class":138},"[...]\n",[55,588,589],{"class":57,"line":379},[55,590,293],{"emptyLinePlaceholder":292},[55,592,593],{"class":57,"line":384},[55,594,536],{"class":334},[55,596,597],{"class":57,"line":390},[55,598,599],{"class":334},"# now comes the actual actions\n",[55,601,602],{"class":57,"line":396},[55,603,536],{"class":334},[55,605,606,609],{"class":57,"line":401},[55,607,608],{"class":61},"do_flash",[55,610,611],{"class":138},"() {\n",[55,613,614,617,619],{"class":57,"line":407},[55,615,616],{"class":138},"    IMAGE_FILE",[55,618,553],{"class":131},[55,620,622],{"class":621},"s4XuR","$1\n",[55,624,625],{"class":57,"line":427},[55,626,293],{"emptyLinePlaceholder":292},[55,628,629],{"class":57,"line":432},[55,630,631],{"class":334},"    # Another workaround to fix a bad mingw\u002FMSYS2 behaviour\n",[55,633,635,637,639,641,643,646,648,650,652,655],{"class":57,"line":634},16,[55,636,616],{"class":138},[55,638,553],{"class":131},[55,640,556],{"class":138},[55,642,559],{"class":69},[55,644,645],{"class":138}," $IMAGE_FILE ",[55,647,565],{"class":131},[55,649,568],{"class":61},[55,651,571],{"class":69},[55,653,654],{"class":65}," 's\u002F^\\\u002F\\(.\\)\u002F\\1:\u002F'",[55,656,577],{"class":138},[55,658,660],{"class":57,"line":659},17,[55,661,662],{"class":61},"    test_config\n",[55,664,666],{"class":57,"line":665},18,[55,667,668],{"class":61},"    test_imagefile\n",[10,670,671],{},"After that, to flash your target, simply execute:",[45,673,676],{"className":674,"code":675,"language":180},[178],"make flash\n",[52,677,675],{"__ignoreMap":50},[10,679,680],{},"...showing somehting like this:",[45,682,684],{"className":47,"code":683,"language":49,"meta":50,"style":50},"$ make flash\nBuilding application \"helloworld\" for \"stm32f429i-disc1\" with MCU \"stm32\".\n\n\"make\" -C \u002Fc\u002FGIT\u002FXYZ\u002FRIOT\u002Fboards\u002Fstm32f429i-disco\n\"make\" -C \u002Fc\u002FGIT\u002FXYZ\u002FRIOT\u002Fboards\u002Fstm32f429i-disc1\n\"make\" -C \u002Fc\u002FGIT\u002FXYZ\u002FRIOT\u002Fcore\n\"make\" -C \u002Fc\u002FGIT\u002FXYZ\u002FRIOT\u002Fcpu\u002Fstm32\n\"make\" -C \u002Fc\u002FGIT\u002FXYZ\u002FRIOT\u002Fcpu\u002Fcortexm_common\n\"make\" -C \u002Fc\u002FGIT\u002FXYZ\u002FRIOT\u002Fcpu\u002Fcortexm_common\u002Fperiph\n\"make\" -C \u002Fc\u002FGIT\u002FXYZ\u002FRIOT\u002Fcpu\u002Fstm32\u002Fperiph\n\"make\" -C \u002Fc\u002FGIT\u002FXYZ\u002FRIOT\u002Fcpu\u002Fstm32\u002Fstmclk\n\"make\" -C \u002Fc\u002FGIT\u002FXYZ\u002FRIOT\u002Fcpu\u002Fstm32\u002Fvectors\n\"make\" -C \u002Fc\u002FGIT\u002FXYZ\u002FRIOT\u002Fdrivers\n\"make\" -C \u002Fc\u002FGIT\u002FXYZ\u002FRIOT\u002Fdrivers\u002Fperiph_common\n\"make\" -C \u002Fc\u002FGIT\u002FXYZ\u002FRIOT\u002Fsys\n\"make\" -C \u002Fc\u002FGIT\u002FXYZ\u002FRIOT\u002Fsys\u002Fauto_init\n\"make\" -C \u002Fc\u002FGIT\u002FXYZ\u002FRIOT\u002Fsys\u002Fauto_init\u002Fusb\n\"make\" -C \u002Fc\u002FGIT\u002FXYZ\u002FRIOT\u002Fsys\u002Fevent\n\"make\" -C \u002Fc\u002FGIT\u002FXYZ\u002FRIOT\u002Fsys\u002Ffmt\n\"make\" -C \u002Fc\u002FGIT\u002FXYZ\u002FRIOT\u002Fsys\u002Ffrac\n\"make\" -C \u002Fc\u002FGIT\u002FXYZ\u002FRIOT\u002Fsys\u002Fisrpipe\n\"make\" -C \u002Fc\u002FGIT\u002FXYZ\u002FRIOT\u002Fsys\u002Fluid\n\"make\" -C \u002Fc\u002FGIT\u002FXYZ\u002FRIOT\u002Fsys\u002Fmalloc_thread_safe\n\"make\" -C \u002Fc\u002FGIT\u002FXYZ\u002FRIOT\u002Fsys\u002Fnewlib_syscalls_default\n\"make\" -C \u002Fc\u002FGIT\u002FXYZ\u002FRIOT\u002Fsys\u002Fpm_layered\n\"make\" -C \u002Fc\u002FGIT\u002FXYZ\u002FRIOT\u002Fsys\u002Ftsrb\n\"make\" -C \u002Fc\u002FGIT\u002FXYZ\u002FRIOT\u002Fsys\u002Fusb\u002Fusbus\n\"make\" -C \u002Fc\u002FGIT\u002FXYZ\u002FRIOT\u002Fsys\u002Fusb\u002Fusbus\u002Fcdc\u002Facm\n\"make\" -C \u002Fc\u002FGIT\u002FXYZ\u002FRIOT\u002Fsys\u002Fztimer\n   text    data     bss     dec     hex filename\n  19344     176    4584   24104    5e28 C:\u002FGIT\u002FXYZ\u002FRIOT\u002Fhello_world\u002Fbin\u002Fstm32f429i-disco\u002Fhelloworld.elf\necho \"\"\n\n\u002Fc\u002FGIT\u002FXYZ\u002FRIOT\u002Fdist\u002Ftools\u002Fopenocd\u002Fopenocd.sh flash \u002Fc\u002FGIT\u002FXYZ\u002FRIOT\u002Fhello_world\u002Fbin\u002Fstm32f429i-disco\u002Fhelloworld.elf\n### Flashing Target ###\nOpen On-Chip Debugger 0.11.0\nLicensed under GNU GPL v2\nFor bug reports, read\n        http:\u002F\u002Fopenocd.org\u002Fdoc\u002Fdoxygen\u002Fbugs.html\nhla_swd\nInfo : The selected transport took over low-level target control. The results might differ compared to plain JTAG\u002FSWD\nInfo : clock speed 2000 kHz\nInfo : STLINK V2J36M26 (API v2) VID:PID 0483:374B\nInfo : Target voltage: 2.856743\nInfo : stm32f4x.cpu: hardware has 6 breakpoints, 4 watchpoints\nInfo : starting gdb server for stm32f4x.cpu on 0\nInfo : Listening on port 59743 for gdb connections\n    TargetName         Type       Endian TapName            State\n--  ------------------ ---------- ------ ------------------ ------------\n 0* stm32f4x.cpu       hla_target little stm32f4x.cpu       running\n\nInfo : Unable to match requested speed 2000 kHz, using 1800 kHz\nInfo : Unable to match requested speed 2000 kHz, using 1800 kHz\ntarget halted due to debug-request, current mode: Thread\nxPSR: 0x01000000 pc: 0x08000804 msp: 0x20000200\nInfo : device id = 0x20016419\nInfo : flash size = 2048 kbytes\nInfo : Dual Bank 2048 kiB STM32F42x\u002F43x\u002F469\u002F479 found\nauto erase enabled\nwrote 32768 bytes from file c:\u002FGIT\u002FXYZ\u002FRIOT\u002Fhello_world\u002Fbin\u002Fstm32f429i-disco\u002Fhelloworld.elf in 1.104519s (28.972 KiB\u002Fs)\n\nverified 19520 bytes in 0.184755s (103.177 KiB\u002Fs)\n\nInfo : Unable to match requested speed 2000 kHz, using 1800 kHz\nInfo : Unable to match requested speed 2000 kHz, using 1800 kHz\nshutdown command invoked\nDone flashing\n",[52,685,686,695,721,725,736,745,754,763,772,781,790,799,808,817,826,835,844,853,862,872,882,892,902,912,922,932,942,952,962,972,993,1014,1022,1027,1039,1045,1060,1078,1093,1099,1105,1161,1180,1202,1218,1246,1273,1298,1316,1337,1356,1361,1394,1421,1447,1468,1486,1506,1530,1542,1577,1582,1605,1610,1637,1664,1676],{"__ignoreMap":50},[55,687,688,690,692],{"class":57,"line":58},[55,689,62],{"class":61},[55,691,473],{"class":65},[55,693,694],{"class":65}," flash\n",[55,696,697,700,703,706,709,712,715,718],{"class":57,"line":104},[55,698,699],{"class":61},"Building",[55,701,702],{"class":65}," application",[55,704,705],{"class":65}," \"helloworld\"",[55,707,708],{"class":65}," for",[55,710,711],{"class":65}," \"stm32f429i-disc1\"",[55,713,714],{"class":65}," with",[55,716,717],{"class":65}," MCU",[55,719,720],{"class":65}," \"stm32\".\n",[55,722,723],{"class":57,"line":113},[55,724,293],{"emptyLinePlaceholder":292},[55,726,727,730,733],{"class":57,"line":122},[55,728,729],{"class":61},"\"make\"",[55,731,732],{"class":69}," -C",[55,734,735],{"class":65}," \u002Fc\u002FGIT\u002FXYZ\u002FRIOT\u002Fboards\u002Fstm32f429i-disco\n",[55,737,738,740,742],{"class":57,"line":306},[55,739,729],{"class":61},[55,741,732],{"class":69},[55,743,744],{"class":65}," \u002Fc\u002FGIT\u002FXYZ\u002FRIOT\u002Fboards\u002Fstm32f429i-disc1\n",[55,746,747,749,751],{"class":57,"line":312},[55,748,729],{"class":61},[55,750,732],{"class":69},[55,752,753],{"class":65}," \u002Fc\u002FGIT\u002FXYZ\u002FRIOT\u002Fcore\n",[55,755,756,758,760],{"class":57,"line":318},[55,757,729],{"class":61},[55,759,732],{"class":69},[55,761,762],{"class":65}," \u002Fc\u002FGIT\u002FXYZ\u002FRIOT\u002Fcpu\u002Fstm32\n",[55,764,765,767,769],{"class":57,"line":379},[55,766,729],{"class":61},[55,768,732],{"class":69},[55,770,771],{"class":65}," \u002Fc\u002FGIT\u002FXYZ\u002FRIOT\u002Fcpu\u002Fcortexm_common\n",[55,773,774,776,778],{"class":57,"line":384},[55,775,729],{"class":61},[55,777,732],{"class":69},[55,779,780],{"class":65}," \u002Fc\u002FGIT\u002FXYZ\u002FRIOT\u002Fcpu\u002Fcortexm_common\u002Fperiph\n",[55,782,783,785,787],{"class":57,"line":390},[55,784,729],{"class":61},[55,786,732],{"class":69},[55,788,789],{"class":65}," \u002Fc\u002FGIT\u002FXYZ\u002FRIOT\u002Fcpu\u002Fstm32\u002Fperiph\n",[55,791,792,794,796],{"class":57,"line":396},[55,793,729],{"class":61},[55,795,732],{"class":69},[55,797,798],{"class":65}," \u002Fc\u002FGIT\u002FXYZ\u002FRIOT\u002Fcpu\u002Fstm32\u002Fstmclk\n",[55,800,801,803,805],{"class":57,"line":401},[55,802,729],{"class":61},[55,804,732],{"class":69},[55,806,807],{"class":65}," \u002Fc\u002FGIT\u002FXYZ\u002FRIOT\u002Fcpu\u002Fstm32\u002Fvectors\n",[55,809,810,812,814],{"class":57,"line":407},[55,811,729],{"class":61},[55,813,732],{"class":69},[55,815,816],{"class":65}," \u002Fc\u002FGIT\u002FXYZ\u002FRIOT\u002Fdrivers\n",[55,818,819,821,823],{"class":57,"line":427},[55,820,729],{"class":61},[55,822,732],{"class":69},[55,824,825],{"class":65}," \u002Fc\u002FGIT\u002FXYZ\u002FRIOT\u002Fdrivers\u002Fperiph_common\n",[55,827,828,830,832],{"class":57,"line":432},[55,829,729],{"class":61},[55,831,732],{"class":69},[55,833,834],{"class":65}," \u002Fc\u002FGIT\u002FXYZ\u002FRIOT\u002Fsys\n",[55,836,837,839,841],{"class":57,"line":634},[55,838,729],{"class":61},[55,840,732],{"class":69},[55,842,843],{"class":65}," \u002Fc\u002FGIT\u002FXYZ\u002FRIOT\u002Fsys\u002Fauto_init\n",[55,845,846,848,850],{"class":57,"line":659},[55,847,729],{"class":61},[55,849,732],{"class":69},[55,851,852],{"class":65}," \u002Fc\u002FGIT\u002FXYZ\u002FRIOT\u002Fsys\u002Fauto_init\u002Fusb\n",[55,854,855,857,859],{"class":57,"line":665},[55,856,729],{"class":61},[55,858,732],{"class":69},[55,860,861],{"class":65}," \u002Fc\u002FGIT\u002FXYZ\u002FRIOT\u002Fsys\u002Fevent\n",[55,863,865,867,869],{"class":57,"line":864},19,[55,866,729],{"class":61},[55,868,732],{"class":69},[55,870,871],{"class":65}," \u002Fc\u002FGIT\u002FXYZ\u002FRIOT\u002Fsys\u002Ffmt\n",[55,873,875,877,879],{"class":57,"line":874},20,[55,876,729],{"class":61},[55,878,732],{"class":69},[55,880,881],{"class":65}," \u002Fc\u002FGIT\u002FXYZ\u002FRIOT\u002Fsys\u002Ffrac\n",[55,883,885,887,889],{"class":57,"line":884},21,[55,886,729],{"class":61},[55,888,732],{"class":69},[55,890,891],{"class":65}," \u002Fc\u002FGIT\u002FXYZ\u002FRIOT\u002Fsys\u002Fisrpipe\n",[55,893,895,897,899],{"class":57,"line":894},22,[55,896,729],{"class":61},[55,898,732],{"class":69},[55,900,901],{"class":65}," \u002Fc\u002FGIT\u002FXYZ\u002FRIOT\u002Fsys\u002Fluid\n",[55,903,905,907,909],{"class":57,"line":904},23,[55,906,729],{"class":61},[55,908,732],{"class":69},[55,910,911],{"class":65}," \u002Fc\u002FGIT\u002FXYZ\u002FRIOT\u002Fsys\u002Fmalloc_thread_safe\n",[55,913,915,917,919],{"class":57,"line":914},24,[55,916,729],{"class":61},[55,918,732],{"class":69},[55,920,921],{"class":65}," \u002Fc\u002FGIT\u002FXYZ\u002FRIOT\u002Fsys\u002Fnewlib_syscalls_default\n",[55,923,925,927,929],{"class":57,"line":924},25,[55,926,729],{"class":61},[55,928,732],{"class":69},[55,930,931],{"class":65}," \u002Fc\u002FGIT\u002FXYZ\u002FRIOT\u002Fsys\u002Fpm_layered\n",[55,933,935,937,939],{"class":57,"line":934},26,[55,936,729],{"class":61},[55,938,732],{"class":69},[55,940,941],{"class":65}," \u002Fc\u002FGIT\u002FXYZ\u002FRIOT\u002Fsys\u002Ftsrb\n",[55,943,945,947,949],{"class":57,"line":944},27,[55,946,729],{"class":61},[55,948,732],{"class":69},[55,950,951],{"class":65}," \u002Fc\u002FGIT\u002FXYZ\u002FRIOT\u002Fsys\u002Fusb\u002Fusbus\n",[55,953,955,957,959],{"class":57,"line":954},28,[55,956,729],{"class":61},[55,958,732],{"class":69},[55,960,961],{"class":65}," \u002Fc\u002FGIT\u002FXYZ\u002FRIOT\u002Fsys\u002Fusb\u002Fusbus\u002Fcdc\u002Facm\n",[55,963,965,967,969],{"class":57,"line":964},29,[55,966,729],{"class":61},[55,968,732],{"class":69},[55,970,971],{"class":65}," \u002Fc\u002FGIT\u002FXYZ\u002FRIOT\u002Fsys\u002Fztimer\n",[55,973,975,978,981,984,987,990],{"class":57,"line":974},30,[55,976,977],{"class":61},"   text",[55,979,980],{"class":65},"    data",[55,982,983],{"class":65},"     bss",[55,985,986],{"class":65},"     dec",[55,988,989],{"class":65},"     hex",[55,991,992],{"class":65}," filename\n",[55,994,996,999,1002,1005,1008,1011],{"class":57,"line":995},31,[55,997,998],{"class":61},"  19344",[55,1000,1001],{"class":69},"     176",[55,1003,1004],{"class":69},"    4584",[55,1006,1007],{"class":69},"   24104",[55,1009,1010],{"class":65},"    5e28",[55,1012,1013],{"class":65}," C:\u002FGIT\u002FXYZ\u002FRIOT\u002Fhello_world\u002Fbin\u002Fstm32f429i-disco\u002Fhelloworld.elf\n",[55,1015,1017,1019],{"class":57,"line":1016},32,[55,1018,559],{"class":69},[55,1020,1021],{"class":65}," \"\"\n",[55,1023,1025],{"class":57,"line":1024},33,[55,1026,293],{"emptyLinePlaceholder":292},[55,1028,1030,1033,1036],{"class":57,"line":1029},34,[55,1031,1032],{"class":61},"\u002Fc\u002FGIT\u002FXYZ\u002FRIOT\u002Fdist\u002Ftools\u002Fopenocd\u002Fopenocd.sh",[55,1034,1035],{"class":65}," flash",[55,1037,1038],{"class":65}," \u002Fc\u002FGIT\u002FXYZ\u002FRIOT\u002Fhello_world\u002Fbin\u002Fstm32f429i-disco\u002Fhelloworld.elf\n",[55,1040,1042],{"class":57,"line":1041},35,[55,1043,1044],{"class":334},"### Flashing Target ###\n",[55,1046,1048,1051,1054,1057],{"class":57,"line":1047},36,[55,1049,1050],{"class":61},"Open",[55,1052,1053],{"class":65}," On-Chip",[55,1055,1056],{"class":65}," Debugger",[55,1058,1059],{"class":69}," 0.11.0\n",[55,1061,1063,1066,1069,1072,1075],{"class":57,"line":1062},37,[55,1064,1065],{"class":61},"Licensed",[55,1067,1068],{"class":65}," under",[55,1070,1071],{"class":65}," GNU",[55,1073,1074],{"class":65}," GPL",[55,1076,1077],{"class":65}," v2\n",[55,1079,1081,1084,1087,1090],{"class":57,"line":1080},38,[55,1082,1083],{"class":61},"For",[55,1085,1086],{"class":65}," bug",[55,1088,1089],{"class":65}," reports,",[55,1091,1092],{"class":65}," read\n",[55,1094,1096],{"class":57,"line":1095},39,[55,1097,1098],{"class":61},"        http:\u002F\u002Fopenocd.org\u002Fdoc\u002Fdoxygen\u002Fbugs.html\n",[55,1100,1102],{"class":57,"line":1101},40,[55,1103,1104],{"class":61},"hla_swd\n",[55,1106,1108,1111,1114,1117,1120,1123,1126,1129,1132,1135,1138,1140,1143,1146,1149,1152,1155,1158],{"class":57,"line":1107},41,[55,1109,1110],{"class":61},"Info",[55,1112,1113],{"class":65}," :",[55,1115,1116],{"class":65}," The",[55,1118,1119],{"class":65}," selected",[55,1121,1122],{"class":65}," transport",[55,1124,1125],{"class":65}," took",[55,1127,1128],{"class":65}," over",[55,1130,1131],{"class":65}," low-level",[55,1133,1134],{"class":65}," target",[55,1136,1137],{"class":65}," control.",[55,1139,1116],{"class":65},[55,1141,1142],{"class":65}," results",[55,1144,1145],{"class":65}," might",[55,1147,1148],{"class":65}," differ",[55,1150,1151],{"class":65}," compared",[55,1153,1154],{"class":65}," to",[55,1156,1157],{"class":65}," plain",[55,1159,1160],{"class":65}," JTAG\u002FSWD\n",[55,1162,1164,1166,1168,1171,1174,1177],{"class":57,"line":1163},42,[55,1165,1110],{"class":61},[55,1167,1113],{"class":65},[55,1169,1170],{"class":65}," clock",[55,1172,1173],{"class":65}," speed",[55,1175,1176],{"class":69}," 2000",[55,1178,1179],{"class":65}," kHz\n",[55,1181,1183,1185,1187,1190,1193,1196,1199],{"class":57,"line":1182},43,[55,1184,1110],{"class":61},[55,1186,1113],{"class":65},[55,1188,1189],{"class":65}," STLINK",[55,1191,1192],{"class":65}," V2J36M26",[55,1194,1195],{"class":138}," (API ",[55,1197,1198],{"class":65},"v2",[55,1200,1201],{"class":138},") VID:PID 0483:374B\n",[55,1203,1205,1207,1209,1212,1215],{"class":57,"line":1204},44,[55,1206,1110],{"class":61},[55,1208,1113],{"class":65},[55,1210,1211],{"class":65}," Target",[55,1213,1214],{"class":65}," voltage:",[55,1216,1217],{"class":69}," 2.856743\n",[55,1219,1221,1223,1225,1228,1231,1234,1237,1240,1243],{"class":57,"line":1220},45,[55,1222,1110],{"class":61},[55,1224,1113],{"class":65},[55,1226,1227],{"class":65}," stm32f4x.cpu:",[55,1229,1230],{"class":65}," hardware",[55,1232,1233],{"class":65}," has",[55,1235,1236],{"class":69}," 6",[55,1238,1239],{"class":65}," breakpoints,",[55,1241,1242],{"class":69}," 4",[55,1244,1245],{"class":65}," watchpoints\n",[55,1247,1249,1251,1253,1256,1259,1262,1264,1267,1270],{"class":57,"line":1248},46,[55,1250,1110],{"class":61},[55,1252,1113],{"class":65},[55,1254,1255],{"class":65}," starting",[55,1257,1258],{"class":65}," gdb",[55,1260,1261],{"class":65}," server",[55,1263,708],{"class":65},[55,1265,1266],{"class":65}," stm32f4x.cpu",[55,1268,1269],{"class":65}," on",[55,1271,1272],{"class":69}," 0\n",[55,1274,1276,1278,1280,1283,1285,1288,1291,1293,1295],{"class":57,"line":1275},47,[55,1277,1110],{"class":61},[55,1279,1113],{"class":65},[55,1281,1282],{"class":65}," Listening",[55,1284,1269],{"class":65},[55,1286,1287],{"class":65}," port",[55,1289,1290],{"class":69}," 59743",[55,1292,708],{"class":65},[55,1294,1258],{"class":65},[55,1296,1297],{"class":65}," connections\n",[55,1299,1301,1304,1307,1310,1313],{"class":57,"line":1300},48,[55,1302,1303],{"class":61},"    TargetName",[55,1305,1306],{"class":65},"         Type",[55,1308,1309],{"class":65},"       Endian",[55,1311,1312],{"class":65}," TapName",[55,1314,1315],{"class":65},"            State\n",[55,1317,1319,1322,1325,1328,1331,1334],{"class":57,"line":1318},49,[55,1320,1321],{"class":61},"--",[55,1323,1324],{"class":69},"  ------------------",[55,1326,1327],{"class":69}," ----------",[55,1329,1330],{"class":69}," ------",[55,1332,1333],{"class":69}," ------------------",[55,1335,1336],{"class":69}," ------------\n",[55,1338,1340,1343,1345,1348,1351,1353],{"class":57,"line":1339},50,[55,1341,1342],{"class":61}," 0*",[55,1344,1266],{"class":65},[55,1346,1347],{"class":65},"       hla_target",[55,1349,1350],{"class":65}," little",[55,1352,1266],{"class":65},[55,1354,1355],{"class":65},"       running\n",[55,1357,1359],{"class":57,"line":1358},51,[55,1360,293],{"emptyLinePlaceholder":292},[55,1362,1364,1366,1368,1371,1373,1376,1379,1381,1383,1386,1389,1392],{"class":57,"line":1363},52,[55,1365,1110],{"class":61},[55,1367,1113],{"class":65},[55,1369,1370],{"class":65}," Unable",[55,1372,1154],{"class":65},[55,1374,1375],{"class":65}," match",[55,1377,1378],{"class":65}," requested",[55,1380,1173],{"class":65},[55,1382,1176],{"class":69},[55,1384,1385],{"class":65}," kHz,",[55,1387,1388],{"class":65}," using",[55,1390,1391],{"class":69}," 1800",[55,1393,1179],{"class":65},[55,1395,1397,1399,1401,1403,1405,1407,1409,1411,1413,1415,1417,1419],{"class":57,"line":1396},53,[55,1398,1110],{"class":61},[55,1400,1113],{"class":65},[55,1402,1370],{"class":65},[55,1404,1154],{"class":65},[55,1406,1375],{"class":65},[55,1408,1378],{"class":65},[55,1410,1173],{"class":65},[55,1412,1176],{"class":69},[55,1414,1385],{"class":65},[55,1416,1388],{"class":65},[55,1418,1391],{"class":69},[55,1420,1179],{"class":65},[55,1422,1424,1427,1430,1433,1435,1438,1441,1444],{"class":57,"line":1423},54,[55,1425,1426],{"class":61},"target",[55,1428,1429],{"class":65}," halted",[55,1431,1432],{"class":65}," due",[55,1434,1154],{"class":65},[55,1436,1437],{"class":65}," debug-request,",[55,1439,1440],{"class":65}," current",[55,1442,1443],{"class":65}," mode:",[55,1445,1446],{"class":65}," Thread\n",[55,1448,1450,1453,1456,1459,1462,1465],{"class":57,"line":1449},55,[55,1451,1452],{"class":61},"xPSR:",[55,1454,1455],{"class":69}," 0x01000000",[55,1457,1458],{"class":65}," pc:",[55,1460,1461],{"class":69}," 0x08000804",[55,1463,1464],{"class":65}," msp:",[55,1466,1467],{"class":69}," 0x20000200\n",[55,1469,1471,1473,1475,1478,1481,1483],{"class":57,"line":1470},56,[55,1472,1110],{"class":61},[55,1474,1113],{"class":65},[55,1476,1477],{"class":65}," device",[55,1479,1480],{"class":65}," id",[55,1482,343],{"class":65},[55,1484,1485],{"class":69}," 0x20016419\n",[55,1487,1489,1491,1493,1495,1498,1500,1503],{"class":57,"line":1488},57,[55,1490,1110],{"class":61},[55,1492,1113],{"class":65},[55,1494,1035],{"class":65},[55,1496,1497],{"class":65}," size",[55,1499,343],{"class":65},[55,1501,1502],{"class":69}," 2048",[55,1504,1505],{"class":65}," kbytes\n",[55,1507,1509,1511,1513,1516,1519,1521,1524,1527],{"class":57,"line":1508},58,[55,1510,1110],{"class":61},[55,1512,1113],{"class":65},[55,1514,1515],{"class":65}," Dual",[55,1517,1518],{"class":65}," Bank",[55,1520,1502],{"class":69},[55,1522,1523],{"class":65}," kiB",[55,1525,1526],{"class":65}," STM32F42x\u002F43x\u002F469\u002F479",[55,1528,1529],{"class":65}," found\n",[55,1531,1533,1536,1539],{"class":57,"line":1532},59,[55,1534,1535],{"class":61},"auto",[55,1537,1538],{"class":65}," erase",[55,1540,1541],{"class":65}," enabled\n",[55,1543,1545,1548,1551,1554,1557,1560,1563,1566,1569,1572,1575],{"class":57,"line":1544},60,[55,1546,1547],{"class":61},"wrote",[55,1549,1550],{"class":69}," 32768",[55,1552,1553],{"class":65}," bytes",[55,1555,1556],{"class":65}," from",[55,1558,1559],{"class":65}," file",[55,1561,1562],{"class":65}," c:\u002FGIT\u002FXYZ\u002FRIOT\u002Fhello_world\u002Fbin\u002Fstm32f429i-disco\u002Fhelloworld.elf",[55,1564,1565],{"class":65}," in",[55,1567,1568],{"class":65}," 1.104519s",[55,1570,1571],{"class":138}," (28.972 ",[55,1573,1574],{"class":65},"KiB\u002Fs",[55,1576,577],{"class":138},[55,1578,1580],{"class":57,"line":1579},61,[55,1581,293],{"emptyLinePlaceholder":292},[55,1583,1585,1588,1591,1593,1595,1598,1601,1603],{"class":57,"line":1584},62,[55,1586,1587],{"class":61},"verified",[55,1589,1590],{"class":69}," 19520",[55,1592,1553],{"class":65},[55,1594,1565],{"class":65},[55,1596,1597],{"class":65}," 0.184755s",[55,1599,1600],{"class":138}," (103.177 ",[55,1602,1574],{"class":65},[55,1604,577],{"class":138},[55,1606,1608],{"class":57,"line":1607},63,[55,1609,293],{"emptyLinePlaceholder":292},[55,1611,1613,1615,1617,1619,1621,1623,1625,1627,1629,1631,1633,1635],{"class":57,"line":1612},64,[55,1614,1110],{"class":61},[55,1616,1113],{"class":65},[55,1618,1370],{"class":65},[55,1620,1154],{"class":65},[55,1622,1375],{"class":65},[55,1624,1378],{"class":65},[55,1626,1173],{"class":65},[55,1628,1176],{"class":69},[55,1630,1385],{"class":65},[55,1632,1388],{"class":65},[55,1634,1391],{"class":69},[55,1636,1179],{"class":65},[55,1638,1640,1642,1644,1646,1648,1650,1652,1654,1656,1658,1660,1662],{"class":57,"line":1639},65,[55,1641,1110],{"class":61},[55,1643,1113],{"class":65},[55,1645,1370],{"class":65},[55,1647,1154],{"class":65},[55,1649,1375],{"class":65},[55,1651,1378],{"class":65},[55,1653,1173],{"class":65},[55,1655,1176],{"class":69},[55,1657,1385],{"class":65},[55,1659,1388],{"class":65},[55,1661,1391],{"class":69},[55,1663,1179],{"class":65},[55,1665,1667,1670,1673],{"class":57,"line":1666},66,[55,1668,1669],{"class":61},"shutdown",[55,1671,1672],{"class":65}," command",[55,1674,1675],{"class":65}," invoked\n",[55,1677,1679,1682],{"class":57,"line":1678},67,[55,1680,1681],{"class":61},"Done",[55,1683,1684],{"class":65}," flashing\n",[10,1686,1687],{},"This should now execute the make dependencies again (e.g. compiling stuff) and then start OpenOCD to flash your target.",[10,1689,1690],{},"Connecting Seriously To Your Board",[10,1692,1693],{},"OK, seriously serially :-) If you want to connect using the serial interface (of the STLink on Disco Boards), you should first install python serial using pip:",[45,1695,1697],{"className":47,"code":1696,"language":49,"meta":50,"style":50},"$ pacman -S mingw64\u002Fmingw-w64-x86_64-python-pip\n$ # pip install serial # maybe this line is not needed and not working...\n$ python -m pip install pyserial\n",[52,1698,1699,1712,1719],{"__ignoreMap":50},[55,1700,1701,1703,1706,1709],{"class":57,"line":58},[55,1702,62],{"class":61},[55,1704,1705],{"class":65}," pacman",[55,1707,1708],{"class":69}," -S",[55,1710,1711],{"class":65}," mingw64\u002Fmingw-w64-x86_64-python-pip\n",[55,1713,1714,1716],{"class":57,"line":104},[55,1715,62],{"class":61},[55,1717,1718],{"class":334}," # pip install serial # maybe this line is not needed and not working...\n",[55,1720,1721,1723,1726,1729,1732,1735],{"class":57,"line":113},[55,1722,62],{"class":61},[55,1724,1725],{"class":65}," python",[55,1727,1728],{"class":69}," -m",[55,1730,1731],{"class":65}," pip",[55,1733,1734],{"class":65}," install",[55,1736,1737],{"class":65}," pyserial\n",[10,1739,1740,1741,1744,1745,1748],{},"After installing, try executing ",[52,1742,1743],{},"make term PORT=\u002Fdev\u002FttyS4"," (or the port that belongs to the STLink). If your board supports the UART over ST-Link, like the DISC1 does, it should show something like the following and print a new line of ",[52,1746,1747],{},"Hello World!"," every time you press reset.",[45,1750,1752],{"className":47,"code":1751,"language":49,"meta":50,"style":50},"$ make term PORT=\u002Fdev\u002FttyS4\n\u002Fc\u002FGIT\u002FXYZ\u002FRIOT\u002Fdist\u002Ftools\u002Fpyterm\u002Fpyterm -p \"\u002Fdev\u002FttyS4\" -b \"115200\"\nTwisted not available, please install it if you want to use pyterm's JSON capabilities\n2022-01-25 00:03:23,222 # Connect to serial port \u002Fdev\u002FttyS4\nWelcome to pyterm!\nType '\u002Fexit' to exit.\n2022-01-25 00:03:25,685 # main(): This is RIOT! (Version: 2022.01-devel-1577-g2491b)\n2022-01-25 00:03:25,686 # Hello World!\n2022-01-25 00:03:26,657 # main(): This is RIOT! (Version: 2022.01-devel-1577-g2491b)\n2022-01-25 00:03:26,658 # Hello World!\n2022-01-25 00:03:27,401 # main(): This is RIOT! (Version: 2022.01-devel-1577-g2491b)\n2022-01-25 00:03:27,402 # Hello World!\n",[52,1753,1754,1766,1783,1819,1824,1829,1834,1839,1844,1849,1854,1859],{"__ignoreMap":50},[55,1755,1756,1758,1760,1763],{"class":57,"line":58},[55,1757,62],{"class":61},[55,1759,473],{"class":65},[55,1761,1762],{"class":65}," term",[55,1764,1765],{"class":65}," PORT=\u002Fdev\u002FttyS4\n",[55,1767,1768,1771,1774,1777,1780],{"class":57,"line":104},[55,1769,1770],{"class":61},"\u002Fc\u002FGIT\u002FXYZ\u002FRIOT\u002Fdist\u002Ftools\u002Fpyterm\u002Fpyterm",[55,1772,1773],{"class":69}," -p",[55,1775,1776],{"class":65}," \"\u002Fdev\u002FttyS4\"",[55,1778,1779],{"class":69}," -b",[55,1781,1782],{"class":65}," \"115200\"\n",[55,1784,1785,1788,1791,1794,1797,1799,1802,1805,1808,1811,1813,1816],{"class":57,"line":113},[55,1786,1787],{"class":61},"Twisted",[55,1789,1790],{"class":65}," not",[55,1792,1793],{"class":65}," available,",[55,1795,1796],{"class":65}," please",[55,1798,1734],{"class":65},[55,1800,1801],{"class":65}," it",[55,1803,1804],{"class":65}," if",[55,1806,1807],{"class":65}," you",[55,1809,1810],{"class":65}," want",[55,1812,1154],{"class":65},[55,1814,1815],{"class":65}," use",[55,1817,1818],{"class":65}," pyterm's JSON capabilities\n",[55,1820,1821],{"class":57,"line":122},[55,1822,1823],{"class":65},"2022-01-25 00:03:23,222 # Connect to serial port \u002Fdev\u002FttyS4\n",[55,1825,1826],{"class":57,"line":306},[55,1827,1828],{"class":65},"Welcome to pyterm!\n",[55,1830,1831],{"class":57,"line":312},[55,1832,1833],{"class":65},"Type '\u002Fexit' to exit.\n",[55,1835,1836],{"class":57,"line":318},[55,1837,1838],{"class":65},"2022-01-25 00:03:25,685 # main(): This is RIOT! (Version: 2022.01-devel-1577-g2491b)\n",[55,1840,1841],{"class":57,"line":379},[55,1842,1843],{"class":65},"2022-01-25 00:03:25,686 # Hello World!\n",[55,1845,1846],{"class":57,"line":384},[55,1847,1848],{"class":65},"2022-01-25 00:03:26,657 # main(): This is RIOT! (Version: 2022.01-devel-1577-g2491b)\n",[55,1850,1851],{"class":57,"line":390},[55,1852,1853],{"class":65},"2022-01-25 00:03:26,658 # Hello World!\n",[55,1855,1856],{"class":57,"line":396},[55,1857,1858],{"class":65},"2022-01-25 00:03:27,401 # main(): This is RIOT! (Version: 2022.01-devel-1577-g2491b)\n",[55,1860,1861],{"class":57,"line":401},[55,1862,1863],{"class":65},"2022-01-25 00:03:27,402 # Hello World!\n",[1865,1866],"hr",{},[28,1868,1870],{"id":1869},"kommentare-comments","Kommentare \u002F Comments",[10,1872,1873,1874,1879,1880,266],{},"Hast du Fragen oder Anmerkungen zu diesem Artikel? ",[20,1875,1878],{"href":1876,"rel":1877},"https:\u002F\u002Fgithub.com\u002Fthe78mole-blog\u002Fthe78mole-blog.github.io\u002Fissues\u002Fnew?title=Kommentar+zu%3A+pushing-the-rectangle-through-the-round-develop-with-riot-os-on-windows-doing-the-impossible&labels=comment",[24],"Erstelle ein GitHub Issue"," oder starte eine ",[20,1881,1884],{"href":1882,"rel":1883},"https:\u002F\u002Fgithub.com\u002Fthe78mole-blog\u002Fthe78mole-blog.github.io\u002Fdiscussions",[24],"Diskussion",[1886,1887,1888],"style",{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"title":50,"searchDepth":104,"depth":104,"links":1890},[1891,1897,1898,1902,1903,1904,1905,1906],{"id":30,"depth":104,"text":31,"children":1892},[1893,1894,1895,1896],{"id":173,"depth":113,"text":174},{"id":185,"depth":113,"text":186},{"id":192,"depth":113,"text":193},{"id":199,"depth":113,"text":200},{"id":210,"depth":104,"text":211},{"id":252,"depth":104,"text":253,"children":1899},[1900,1901],{"id":256,"depth":113,"text":257},{"id":447,"depth":113,"text":448},{"id":460,"depth":104,"text":461},{"id":494,"depth":104,"text":495},{"id":501,"depth":104,"text":502},{"id":513,"depth":104,"text":514},{"id":1869,"depth":104,"text":1870},[1908,1909,186,1910,507,1911],"ARM","Bashing","OS","Windows","2022-01-11","md","\u002Fimages\u002Fblog\u002F2022\u002F01\u002Friot-os.png",{"tags":1916},[186,1917,1918,507],"IoT","RTOS","\u002Fblog\u002F2022\u002Fpushing-the-rectangle-through-the-round-develop-with-riot-os-on-windows-doing-the-impossible",{"title":5,"description":50},"blog\u002F2022\u002Fpushing-the-rectangle-through-the-round-develop-with-riot-os-on-windows-doing-the-impossible","KihfUf8FlJWbCHlaoWarLLIdWOaoTO4UgOaptLOykQc",1777286693874]