{"id":1044,"date":"2013-10-11T21:09:17","date_gmt":"2013-10-11T21:09:17","guid":{"rendered":"http:\/\/blog.bachi.net\/?p=1044"},"modified":"2018-12-09T11:40:37","modified_gmt":"2018-12-09T11:40:37","slug":"seggers-jlink","status":"publish","type":"post","link":"https:\/\/blog.bachi.net\/?p=1044","title":{"rendered":"Seggers JLink"},"content":{"rendered":"<h3>IDA Pro<\/h3>\n<p><a href=\"https:\/\/www.segger.com\/products\/debug-probes\/j-link\/technology\/ides\/hex-rays-ida-pro\/\">Hex-Rays IDA Pro<\/a><\/p>\n<h3>v8 vs. v9<\/h3>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\nVersion 8.0\r\nIdentical to version 7.0 with the following exception:\r\n- SWD support for non-3.3V targets.\r\n\r\nVersion 9.1\r\n- New design based on STM32F205.\r\n\r\nVersion 9.2\r\nIdentical to version 9.1 with the following exception:\r\n- Pin 1 (VTref) is used for measuring target reference\r\n  voltage only. Buffers on J-Link side are no longer\r\n  powered through this pin but via the J-Link internal\r\n  voltage supplied via USB.\r\n<\/pre>\n<h3>Boards<\/h3>\n<p><a href=\"http:\/\/www.olliw.eu\/2013\/stm32-this-and-that\/\">STM32: Hello World<\/a> (Shenzhen LC Technology STM32F103C8 development board)<br \/>\n<a href=\"http:\/\/www.chinalctech.com\/\">Shenzhen LC Technology Co.,Ltd.<\/a><\/p>\n<h3>J-Link Device Name Settings<\/h3>\n<p><a href=\"https:\/\/mcuoneclipse.com\/2014\/05\/10\/gnu-arm-eclipse-segger-j-link-device-name-settings\/\">GNU ARM Eclipse &#038; Segger J-Link Device Name Settings<\/a><\/p>\n<p><a href=\"https:\/\/wiki.segger.com\/index.php?title=J-Link_Commander\">J-Link Commander<\/a><br \/>\n<a href=\"http:\/\/stackoverflow.com\/questions\/35365105\/reading-peripheral-register-of-cortex-m0-mcu-using-jlink-and-gdb\">Reading peripheral register of Cortex M0 MCU using JLink and GDB<\/a><\/p>\n<h3>Commands<\/h3>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\nTo switch to serial wire debug (SWD):\r\n&gt; si 1\r\n\r\nSet the device profile for the target MCU:\r\n&gt; device EFM32GG990F1024\r\n&gt; device STM32F103C8\r\n\r\nErase the flash:\r\n&gt; erase\r\n\r\nDownload a binary file:\r\n&gt; loadbin c:\\blink.bin, 0x0\r\n&gt; loadbin \/home\/andreas\/Downloads\/generic_boot20_pc13.bin 0x0\r\n\r\nReset the MCU:\r\n&gt; r\r\n\r\nRun the MCU (Go):\r\n&gt; g\r\n\r\nHalt the MCU:\r\n&gt; h\r\n\r\nTo verify that a binary file was properly downloaded to MCU flash:\r\n&gt; verifybin c:\\blink.bin, 0x0\r\n\r\nTo upload memory from MCU flash and save it to a\r\nbinary file (start-address, length):\r\n&gt; savebin c:\\upload.bin, 0x0, 0x1084\r\n<\/pre>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\n$ \/opt\/SEGGER\/JLink\/JLinkExe -device STM32F103C8 -if SWD -speed 4000\r\n\r\nSEGGER J-Link Commander V5.12f (Compiled May 17 2016 16:01:56)\r\nDLL version V5.12f, compiled May 17 2016 16:01:51\r\n\r\nConnecting to J-Link via USB...O.K.\r\nFirmware: J-Link V9 compiled Apr 22 2016 11:47:06\r\nHardware version: V9.20\r\nS\/N: xxxxxxxxx\r\nLicense(s): GDB, RDI, FlashBP, FlashDL, JFlash, RDDI\r\nVTref = 3.322V\r\n\r\nJ-Link&gt;showemulist\r\nJ-Link&#x5B;0]: Connection: USB, Serial number: xxxxxxxxx, ProductName: xxxxxxxxxx\r\n\r\nJ-Link&gt;connect\r\nDevice &quot;STM32F103C8&quot; selected.\r\n\r\nFound SWD-DP with ID 0x1BA01477\r\nFound SWD-DP with ID 0x1BA01477\r\nFound Cortex-M3 r1p1, Little endian.\r\nFPUnit: 6 code (BP) slots and 2 literal slots\r\nCoreSight components:\r\nROMTbl 0 @ E00FF000\r\nROMTbl 0 &#x5B;0]: FFF0F000, CID: B105E00D, PID: 001BB000 SCS\r\nROMTbl 0 &#x5B;1]: FFF02000, CID: B105E00D, PID: 001BB002 DWT\r\nROMTbl 0 &#x5B;2]: FFF03000, CID: B105E00D, PID: 000BB003 FPB\r\nROMTbl 0 &#x5B;3]: FFF01000, CID: B105E00D, PID: 001BB001 ITM\r\nROMTbl 0 &#x5B;4]: FFF41000, CID: B105900D, PID: 001BB923 TPIU-Lite\r\nCortex-M3 identified.\r\n\r\nJ-Link&gt;loadbin \/home\/andreas\/Downloads\/F103_blink_ledNUCLEO_F103RB.bin 0x0\r\nHalting CPU for downloading file.\r\nDownloading file &#x5B;\/home\/andreas\/Downloads\/F103_blink_ledNUCLEO_F103RB.bin]...\r\nComparing flash   &#x5B;100%] Done.\r\nErasing flash     &#x5B;100%] Done.\r\nProgramming flash &#x5B;100%] Done.\r\nVerifying flash   &#x5B;100%] Done.\r\nJ-Link: Flash download: Flash programming performed for 1 range (24576 bytes)\r\nJ-Link: Flash download: Total time needed: 1.071s (Prepare: 0.055s, Compare: 0.004s, Erase: 0.352s, Program: 0.654s, Verify: 0.000s, Restore: 0.003s)\r\nO.K.\r\n\r\nJ-Link&gt;loadbin \/home\/andreas\/Downloads\/generic_boot20_pc13.bin 0x0\r\nHalting CPU for downloading file.\r\nDownloading file &#x5B;\/home\/andreas\/Downloads\/generic_boot20_pc13.bin]...\r\nComparing flash   &#x5B;100%] Done.\r\nErasing flash     &#x5B;100%] Done.\r\nProgramming flash &#x5B;100%] Done.\r\nVerifying flash   &#x5B;100%] Done.\r\nJ-Link: Flash download: Flash programming performed for 1 range (8192 bytes)\r\nJ-Link: Flash download: Total time needed: 0.480s (Prepare: 0.066s, Compare: 0.002s, Erase: 0.176s, Program: 0.218s, Verify: 0.000s, Restore: 0.016s)\r\nO.K.\r\n\r\n<\/pre>\n<h3>Toolchain<\/h3>\n<p><a href=\"http:\/\/gnuarmeclipse.github.io\/\">GNU ARM Eclipse<\/a><br \/>\n<a href=\"http:\/\/gnuarmeclipse.github.io\/toolchain\/install\/\">How to install the ARM toolchain?<\/a><br \/>\n<a href=\"https:\/\/launchpad.net\/gcc-arm-embedded\">GNU ARM Embedded Toolchain<\/a><br \/>\n<a href=\"https:\/\/launchpad.net\/~team-gcc-arm-embedded\/+archive\/ubuntu\/ppa\">Ubuntu PPA: GNU ARM Embedded Toolchain<\/a><\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\n$ sudo add-apt-repository ppa:team-gcc-arm-embedded\/ppa\r\n$ sudo apt-get update\r\n$ sudo apt-get install gcc-arm-embedded\r\n<\/pre>\n<p><a href=\"https:\/\/gcc.gnu.org\/onlinedocs\/gcc\/Option-Summary.html\">GCC Option Summary<\/a><\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\n-v            Print the commands executed to run\r\n              the stages of compilation.\r\n-x language   Specify explicitly the language for\r\n              the following input files.\r\n-E            Stop after the preprocessing stage;\r\n              do not run the compiler proper.\r\n-Wp,option    You can use -Wp,option to bypass the\r\n              compiler driver and pass option\r\n              directly through to the preprocessor. \r\n\r\n$ echo | arm-none-eabi-gcc -v -x c -E -\r\nUsing built-in specs.\r\nCOLLECT_GCC=arm-none-eabi-gcc\r\nTarget: arm-none-eabi\r\nConfigured with: \/build\/gcc-arm-none-eabi-CE0_5N\/gcc-arm-none-eabi-6-2016q4\/src\/gcc\/configure --target=arm-none-eabi --prefix=\/build\/gcc-arm-none-eabi-CE0_5N\/gcc-arm-none-eabi-6-2016q4\/install-native --libexecdir=\/build\/gcc-arm-none-eabi-CE0_5N\/gcc-arm-none-eabi-6-2016q4\/install-native\/lib --infodir=\/build\/gcc-arm-none-eabi-CE0_5N\/gcc-arm-none-eabi-6-2016q4\/install-native\/share\/doc\/gcc-arm-none-eabi\/info --mandir=\/build\/gcc-arm-none-eabi-CE0_5N\/gcc-arm-none-eabi-6-2016q4\/install-native\/share\/doc\/gcc-arm-none-eabi\/man --htmldir=\/build\/gcc-arm-none-eabi-CE0_5N\/gcc-arm-none-eabi-6-2016q4\/install-native\/share\/doc\/gcc-arm-none-eabi\/html --pdfdir=\/build\/gcc-arm-none-eabi-CE0_5N\/gcc-arm-none-eabi-6-2016q4\/install-native\/share\/doc\/gcc-arm-none-eabi\/pdf --enable-languages=c,c++ --enable-plugins --disable-decimal-float --disable-libffi --disable-libgomp --disable-libmudflap --disable-libquadmath --disable-libssp --disable-libstdcxx-pch --disable-nls --disable-shared --disable-threads --disable-tls --with-gnu-as --with-gnu-ld --with-newlib --with-headers=yes --with-python-dir=share\/gcc-arm-none-eabi --with-sysroot=\/build\/gcc-arm-none-eabi-CE0_5N\/gcc-arm-none-eabi-6-2016q4\/install-native\/arm-none-eabi --with-host-libstdcxx='-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm' --with-pkgversion='GNU Tools for ARM Embedded Processors' --with-multilib-list=rmprofile\r\nThread model: single\r\ngcc version 6.2.1 20161205 (release) &#x5B;ARM\/embedded-6-branch revision 243739] (GNU Tools for ARM Embedded Processors) \r\nCOLLECT_GCC_OPTIONS='-v' '-E'\r\n \/usr\/bin\/..\/lib\/gcc\/arm-none-eabi\/6.2.1\/cc1 -E -quiet -v -iprefix \/usr\/bin\/..\/lib\/gcc\/arm-none-eabi\/6.2.1\/ -isysroot \/usr\/bin\/..\/arm-none-eabi -D__USES_INITFINI__ -\r\nignoring duplicate directory &quot;\/usr\/bin\/..\/lib\/gcc\/..\/..\/lib\/gcc\/arm-none-eabi\/6.2.1\/include&quot;\r\nignoring nonexistent directory &quot;\/usr\/bin\/..\/arm-none-eabi\/usr\/local\/include&quot;\r\nignoring duplicate directory &quot;\/usr\/bin\/..\/lib\/gcc\/..\/..\/lib\/gcc\/arm-none-eabi\/6.2.1\/include-fixed&quot;\r\nignoring duplicate directory &quot;\/usr\/bin\/..\/lib\/gcc\/..\/..\/lib\/gcc\/arm-none-eabi\/6.2.1\/..\/..\/..\/..\/arm-none-eabi\/include&quot;\r\nignoring nonexistent directory &quot;\/usr\/bin\/..\/arm-none-eabi\/usr\/include&quot;\r\n#include &quot;...&quot; search starts here:\r\n#include &lt;...&gt; search starts here:\r\n \/usr\/bin\/..\/lib\/gcc\/arm-none-eabi\/6.2.1\/include\r\n \/usr\/bin\/..\/lib\/gcc\/arm-none-eabi\/6.2.1\/include-fixed\r\n \/usr\/bin\/..\/lib\/gcc\/arm-none-eabi\/6.2.1\/..\/..\/..\/..\/arm-none-eabi\/include\r\nEnd of search list.\r\n# 1 &quot;&lt;stdin&gt;&quot;\r\n# 1 &quot;&lt;built-in&gt;&quot;\r\n# 1 &quot;&lt;command-line&gt;&quot;\r\n# 1 &quot;&lt;stdin&gt;&quot;\r\nCOMPILER_PATH=\/usr\/bin\/..\/lib\/gcc\/arm-none-eabi\/6.2.1\/:\/usr\/bin\/..\/lib\/gcc\/:\/usr\/bin\/..\/lib\/gcc\/arm-none-eabi\/6.2.1\/..\/..\/..\/..\/arm-none-eabi\/bin\/\r\nLIBRARY_PATH=\/usr\/bin\/..\/lib\/gcc\/arm-none-eabi\/6.2.1\/:\/usr\/bin\/..\/lib\/gcc\/:\/usr\/bin\/..\/lib\/gcc\/arm-none-eabi\/6.2.1\/..\/..\/..\/..\/arm-none-eabi\/lib\/:\/usr\/bin\/..\/arm-none-eabi\/lib\/\r\nCOLLECT_GCC_OPTIONS='-v' '-E'\r\n\r\n$ echo | arm-none-eabi-gcc -E -Wp,-v -\r\nignoring duplicate directory &quot;\/usr\/bin\/..\/lib\/gcc\/..\/..\/lib\/gcc\/arm-none-eabi\/6.2.1\/include&quot;\r\nignoring nonexistent directory &quot;\/usr\/bin\/..\/arm-none-eabi\/usr\/local\/include&quot;\r\nignoring duplicate directory &quot;\/usr\/bin\/..\/lib\/gcc\/..\/..\/lib\/gcc\/arm-none-eabi\/6.2.1\/include-fixed&quot;\r\nignoring duplicate directory &quot;\/usr\/bin\/..\/lib\/gcc\/..\/..\/lib\/gcc\/arm-none-eabi\/6.2.1\/..\/..\/..\/..\/arm-none-eabi\/include&quot;\r\nignoring nonexistent directory &quot;\/usr\/bin\/..\/arm-none-eabi\/usr\/include&quot;\r\n#include &quot;...&quot; search starts here:\r\n#include &lt;...&gt; search starts here:\r\n \/usr\/bin\/..\/lib\/gcc\/arm-none-eabi\/6.2.1\/include\r\n \/usr\/bin\/..\/lib\/gcc\/arm-none-eabi\/6.2.1\/include-fixed\r\n \/usr\/bin\/..\/lib\/gcc\/arm-none-eabi\/6.2.1\/..\/..\/..\/..\/arm-none-eabi\/include\r\nEnd of search list.\r\n# 1 &quot;&lt;stdin&gt;&quot;\r\n# 1 &quot;&lt;built-in&gt;&quot;\r\n# 1 &quot;&lt;command-line&gt;&quot;\r\n# 1 &quot;&lt;stdin&gt;&quot;\r\n<\/pre>\n<h3>Eclipse<\/h3>\n<p><a href=\"http:\/\/gnuarmeclipse.livius.net\/blog\/jlink-install\/\">SEGGER J-Link install<\/a><br \/>\n<a href=\"http:\/\/gnuarmeclipse.livius.net\/blog\/jlink-debugging\/\">The J-Link hardware debugging Eclipse plug-in<\/a><br \/>\n<a href=\"http:\/\/gnuarmeclipse.livius.net\/blog\/plugins-install\/\">Plug-ins install<\/a><br \/>\n<a href=\"http:\/\/help.eclipse.org\/luna\/index.jsp?topic=%2Forg.eclipse.cdt.doc.user%2Ftasks%2Fcdt_t_disassembly.htm\">Stepping into disassembled code<\/a><\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\nIncludes:\r\n\/usr\/arm-none-eabi\/include\r\n\/usr\/lib\/gcc\/arm-none-eabi\/6.2.1\/include\r\n\/home\/andreas\/src\/TivaWare\r\n\r\nSymbols:\r\nPART_TM4C123GH6PM\r\nor\r\nPART_LM4F120H5QR\r\n<\/pre>\n<table>\n<tr>\n<td><a href=\"http:\/\/blog.bachi.net\/wp-content\/uploads\/2013\/10\/eclipse_lm4c_includes.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.bachi.net\/wp-content\/uploads\/2013\/10\/eclipse_lm4c_includes-300x203.png\" alt=\"\" width=\"300\" height=\"203\" class=\"alignleft size-medium wp-image-5705\" srcset=\"https:\/\/blog.bachi.net\/wp-content\/uploads\/2013\/10\/eclipse_lm4c_includes-300x203.png 300w, https:\/\/blog.bachi.net\/wp-content\/uploads\/2013\/10\/eclipse_lm4c_includes-768x520.png 768w, https:\/\/blog.bachi.net\/wp-content\/uploads\/2013\/10\/eclipse_lm4c_includes-624x423.png 624w, https:\/\/blog.bachi.net\/wp-content\/uploads\/2013\/10\/eclipse_lm4c_includes.png 816w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/td>\n<\/tr>\n<td><a href=\"http:\/\/blog.bachi.net\/wp-content\/uploads\/2013\/10\/eclipse_lm4c_symbols.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.bachi.net\/wp-content\/uploads\/2013\/10\/eclipse_lm4c_symbols-300x203.png\" alt=\"\" width=\"300\" height=\"203\" class=\"alignleft size-medium wp-image-5706\" srcset=\"https:\/\/blog.bachi.net\/wp-content\/uploads\/2013\/10\/eclipse_lm4c_symbols-300x203.png 300w, https:\/\/blog.bachi.net\/wp-content\/uploads\/2013\/10\/eclipse_lm4c_symbols-768x520.png 768w, https:\/\/blog.bachi.net\/wp-content\/uploads\/2013\/10\/eclipse_lm4c_symbols-624x423.png 624w, https:\/\/blog.bachi.net\/wp-content\/uploads\/2013\/10\/eclipse_lm4c_symbols.png 816w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/td>\n<\/tr>\n<\/table>\n<h3>Debugging Libraries<\/h3>\n<p><a href=\"http:\/\/mcuoneclipse.com\/2014\/08\/23\/gnu-libs-with-debug-information-rebuilding-the-gnu-arm-libraries\/\">GNU Libs with Debug Information: Rebuilding the GNU ARM Libraries<\/a><br \/>\n<a href=\"http:\/\/mcuoneclipse.com\/2014\/09\/11\/semihosting-with-gnu-arm-embedded-launchpad-and-gnu-arm-eclipse-debug-plugins\/\">Semihosting with GNU ARM Embedded (LaunchPad) and GNU ARM Eclipse Debug Plugins<\/a><\/p>\n<h3>Serial Wire Output (SWO) \/ Retargeting<\/h3>\n<p><a href=\"https:\/\/plus.google.com\/+AndreyYurovsky\/posts\/5rupuziHKGC\">Semihosting on ARM Cortex-M with open-source tools<\/a><br \/>\n<a href=\"https:\/\/answers.launchpad.net\/gcc-arm-embedded\/+question\/232520\">Cannot Get Semihosting To Print (STM32F4, OpenOCD)<\/a><br \/>\n<a href=\"http:\/\/forum.segger.com\/index.php?page=Thread&#038;threadID=1010\">STM32F2 + SWO + JLINK + JLINK server + GDB client elf console<\/a><br \/>\n<a href=\"http:\/\/forum.segger.com\/index.php?page=Thread&#038;threadID=1598\">Semihosting on STM32 with GNU ARM Embedded, Eclipse and JLink GDB Server<\/a><br \/>\n<a href=\"http:\/\/www.segger.com\/j-link-swo-viewer.html\">J-Link SWO Viewer<\/a><br \/>\n<a href=\"http:\/\/eclipse.dzone.com\/articles\/semihosting-gnu-arm-embedded\">Semihosting with GNU ARM Embedded (LaunchPad) and GNU ARM Eclipse Debug Plugins<\/a><br \/>\n<a href=\"http:\/\/stackoverflow.com\/questions\/13235748\/linker-error-on-a-c-project-using-eclipse\">Linker error on a C project using eclipse<\/a><br \/>\n<a href=\"https:\/\/sites.google.com\/site\/stm32discovery\/open-source-development-with-the-stm32-discovery\/getting-newlib-to-work-with-stm32-and-code-sourcery-lite-eabi\">Getting NewLib and printf to work with the STM32 and Code Sourcery Lite eabi<\/a><br \/>\n<a href=\"http:\/\/embdev.net\/topic\/linker-error-undefined-reference-to-_sbrk\">Linker error, undefined reference to `_sbrk&#8217;<\/a><br \/>\n<a href=\"https:\/\/answers.launchpad.net\/gcc-arm-embedded\/+question\/232520\">Cannot Get Semihosting To Print (STM32F4, OpenOCD)<\/a><br \/>\n<a href=\"https:\/\/devzone.nordicsemi.com\/question\/14554\/printing-hello-world-to-terminal-from-some-board-including-nrf51822\/\">Printing &#8220;Hello World&#8221; to terminal from some board including nrf51822.<\/a><br \/>\n<a href=\"https:\/\/github.com\/hlnd\/printf-gcc\/\">printf-gcc: An example of how printf can be redirected to UART with nRF51822<\/a><br \/>\n<a href=\"http:\/\/www.mikrocontroller.net\/topic\/166473\">STM32 &#8211; printf<\/a><br \/>\n<a href=\"http:\/\/www.firefly-power.de\/ARM\/printf.html\">Printf() &#8211; debugging<\/a><br \/>\n<a href=\"https:\/\/answers.launchpad.net\/gcc-arm-embedded\/+question\/239171\">Supply own _sbrk with libnosys\/rdimon<\/a><\/p>\n<h4>undefined reference to `_sbrk&#8217;<\/h4>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\narm-none-eabi-gcc -ggdb -Wall -Tstm32_flash.ld  -mlittle-endian -mthumb -mcpu=cortex-m4 -mthumb-interwork -mfloat-abi=hard -mfpu=fpv4-sp-d16 -Iinc -Ilib -Ilib\/inc  -Ilib\/inc\/core -Ilib\/inc\/peripherals  src\/main.c src\/stm32f4xx_it.c src\/system_stm32f4xx.c lib\/startup_stm32f4xx.s -o main.elf -Llib -lstm32f4\r\n\/usr\/bin\/..\/lib\/gcc\/arm-none-eabi\/4.8.4\/..\/..\/..\/..\/arm-none-eabi\/lib\/armv7e-m\/fpu\/libg.a(lib_a-sbrkr.o): In function `_sbrk_r':\r\nsbrkr.c:(.text._sbrk_r+0xc): undefined reference to `_sbrk'\r\n\/usr\/bin\/..\/lib\/gcc\/arm-none-eabi\/4.8.4\/..\/..\/..\/..\/arm-none-eabi\/lib\/armv7e-m\/fpu\/libg.a(lib_a-writer.o): In function `_write_r':\r\nwriter.c:(.text._write_r+0x10): undefined reference to `_write'\r\n\/usr\/bin\/..\/lib\/gcc\/arm-none-eabi\/4.8.4\/..\/..\/..\/..\/arm-none-eabi\/lib\/armv7e-m\/fpu\/libg.a(lib_a-closer.o): In function `_close_r':\r\ncloser.c:(.text._close_r+0xc): undefined reference to `_close'\r\n\/usr\/bin\/..\/lib\/gcc\/arm-none-eabi\/4.8.4\/..\/..\/..\/..\/arm-none-eabi\/lib\/armv7e-m\/fpu\/libg.a(lib_a-fstatr.o): In function `_fstat_r':\r\nfstatr.c:(.text._fstat_r+0xe): undefined reference to `_fstat'\r\n\/usr\/bin\/..\/lib\/gcc\/arm-none-eabi\/4.8.4\/..\/..\/..\/..\/arm-none-eabi\/lib\/armv7e-m\/fpu\/libg.a(lib_a-isattyr.o): In function `_isatty_r':\r\nisattyr.c:(.text._isatty_r+0xc): undefined reference to `_isatty'\r\n\/usr\/bin\/..\/lib\/gcc\/arm-none-eabi\/4.8.4\/..\/..\/..\/..\/arm-none-eabi\/lib\/armv7e-m\/fpu\/libg.a(lib_a-lseekr.o): In function `_lseek_r':\r\nlseekr.c:(.text._lseek_r+0x10): undefined reference to `_lseek'\r\n\/usr\/bin\/..\/lib\/gcc\/arm-none-eabi\/4.8.4\/..\/..\/..\/..\/arm-none-eabi\/lib\/armv7e-m\/fpu\/libg.a(lib_a-readr.o): In function `_read_r':\r\nreadr.c:(.text._read_r+0x10): undefined reference to `_read'\r\ncollect2: error: ld returned 1 exit status\r\nmake: *** &#x5B;main.elf] Error 1\r\n<\/pre>\n<p>Use rdimon:<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\n--specs=rdimon.specs\r\n<\/pre>\n<h4>undefined reference to `__end__&#8217;<\/h4>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\narm-none-eabi-gcc -ggdb -Wall -Tstm32_flash.ld  -mlittle-endian -mthumb -mcpu=cortex-m4 -mthumb-interwork -mfloat-abi=hard -mfpu=fpv4-sp-d16 -Iinc -Ilib -Ilib\/inc  -Ilib\/inc\/core -Ilib\/inc\/peripherals  src\/main.c src\/stm32f4xx_it.c src\/system_stm32f4xx.c lib\/startup_stm32f4xx.s --specs=rdimon.specs -Wl,--start-group -lgcc -lc -lm -lrdimon -Wl,--end-group -o main.elf -Llib -lstm32f4\r\n\/usr\/bin\/..\/lib\/gcc\/arm-none-eabi\/4.8.4\/..\/..\/..\/..\/arm-none-eabi\/lib\/armv7e-m\/fpu\/rdimon-crt0.o: In function `_start':\r\n(.text+0xd8): undefined reference to `__end__'\r\ncollect2: error: ld returned 1 exit status\r\nmake: *** &#x5B;main.elf] Error 1\r\n<\/pre>\n<p>No __end__ identifier. Create one in stm32_flash.ld<\/p>\n<pre class=\"brush: plain; title: old; notranslate\" title=\"old\">\r\n  .bss :\r\n  {\r\n    &#x5B;...]\r\n    _ebss = .;         \/* define a global symbol at bss end *\/\r\n    __bss_end__ = _ebss;\r\n  } &gt;RAM\r\n\r\n  ._user_heap_stack :\r\n  {\r\n<\/pre>\n<pre class=\"brush: plain; title: new; notranslate\" title=\"new\">\r\n  .bss :\r\n  {\r\n    &#x5B;...]\r\n    _ebss = .;         \/* define a global symbol at bss end *\/\r\n    __bss_end__ = _ebss;\r\n  } &gt;RAM\r\n\r\nPROVIDE(__end__ = _ebss);\r\n  ._user_heap_stack :\r\n  {\r\n<\/pre>\n<h4>Debug Register: Decimal -> Hex<\/h4>\n<p>Window->Preferences->C\/C++->Debug<br \/>\nIn &#8220;Opened view default settings&#8221; change &#8220;Default register format:&#8221; to &#8220;Hexadecimal&#8221;.<\/p>\n<h3>Questions<\/h3>\n<p><a href=\"http:\/\/sourceforge.net\/p\/openocd\/mailman\/message\/28348843\/\">Busted JLink<\/a><br \/>\n<a href=\"http:\/\/marc.info\/?l=openocd-development&#038;m=133821232906438\">J-Link v8 with FW newer than May 20, 2010?<\/a><br \/>\n<a href=\"http:\/\/comments.gmane.org\/gmane.comp.debugging.openocd.devel\/19669\">OpenOCD and Segger J-Link<\/a><br \/>\n<a href=\"https:\/\/forum.sparkfun.com\/viewtopic.php?f=18&#038;t=33108\">OpenOCD 0.5.0 not working with JLink 4.50m FW<\/a><br \/>\n<a href=\"https:\/\/www.mail-archive.com\/openocd-devel@lists.sourceforge.net\/msg01802.html\">J-Link v8 with FW newer than May 20, 2010?<\/a><br \/>\n<a href=\"http:\/\/embedded.kleier.selfhost.me\/lockup.php\">Clearing lockup after double fault<\/a><br \/>\n<a href=\"http:\/\/sourceforge.net\/p\/openocd\/mailman\/message\/29313911\/\">J-Link v8 with FW newer than May 20, 2010?<\/a><\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\n$ sudo JLinkExe \r\nSEGGER J-Link Commander V4.78a ('?' for help)\r\nCompiled Oct  8 2013 13:36:53\r\nCan not connect to J-Link via USB.\r\n<\/pre>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\n$ cat JLink.log \r\nTB75126C0 000:000 SEGGER J-Link V4.78a Log File (0000ms, 0000ms total)\r\nTB75126C0 000:000 DLL Compiled: Oct  8 2013 13:36:49 (0000ms, 0000ms total)\r\nTB75126C0 000:000 Logging started @ 2013-10-11 22:18 (0000ms, 0000ms total)\r\nTB75126C0 000:000 JLINK_SetWarnOutHandler(...) (0000ms, 0000ms total)\r\nTB75126C0 000:000 JLINK_SelectUSB(Port = 0)  returns 0x00 (0001ms, 0001ms total)\r\nTB75126C0 000:001 JLINK_OpenEx(...)\r\n  ***** Error: Can not connect to J-Link via USB.  returns &quot;Can not connect to J-Link via USB.&quot; (0136ms, 0137ms total)\r\nTB75126C0 224:915 JLINK_ClrError() (0000ms, 0137ms total)\r\nTB75126C0 224:915 JLINK_Close() (0000ms, 0137ms total)\r\nTB75126C0 224:915  (0000ms, 0137ms total)\r\nTB75126C0 224:915 Closed (0000ms, 0137ms total)\r\n<\/pre>\n<pre class=\"brush: plain; title: \/etc\/udev\/rules.d\/99-jlink.rules; notranslate\" title=\"\/etc\/udev\/rules.d\/99-jlink.rules\">\r\nBUS!=&quot;usb&quot;, ACTION!=&quot;add&quot;, SUBSYSTEM!==&quot;usb_device&quot;, GOTO=&quot;jlink_rules_end&quot;\r\n#\r\n# Give all users read and write access.\r\n#\r\nATTRS{idProduct}==&quot;0101&quot;, ATTRS{idVendor}==&quot;1366&quot;, MODE=&quot;666&quot;\r\nATTRS{idProduct}==&quot;0102&quot;, ATTRS{idVendor}==&quot;1366&quot;, MODE=&quot;666&quot;\r\nATTRS{idProduct}==&quot;0103&quot;, ATTRS{idVendor}==&quot;1366&quot;, MODE=&quot;666&quot;\r\nATTRS{idProduct}==&quot;0104&quot;, ATTRS{idVendor}==&quot;1366&quot;, MODE=&quot;666&quot;\r\n#\r\n# J-Link OBs with CDC functionality\r\n#\r\nATTRS{idProduct}==&quot;0105&quot;, ATTRS{idVendor}==&quot;1366&quot;, MODE=&quot;666&quot;\r\nLABEL=&quot;jlink_rules_end&quot;\r\n<\/pre>\n<pre class=\"brush: plain; title: \/etc\/udev\/rules.d\/99-jlink.rules; notranslate\" title=\"\/etc\/udev\/rules.d\/99-jlink.rules\">\r\n<\/pre>\n<p><a href=\"http:\/\/www.dfrobot.com.cn\/community\/forum.php?mod=viewthread&#038;tid=356&#038;extra=page%3D1\">Breaking JLink Clone-Detection<\/a><br \/>\n<a href=\"http:\/\/forum.segger.com\/index.php?page=Thread&#038;threadID=103\">Anyone used JLink on Linux<\/a><br \/>\n<a href=\"http:\/\/segger2.com\/index.php?page=Thread&#038;postID=4094\">J-Link Commander without sudo<\/a><\/p>\n<h3>Local GDB rather than Segger GDB<\/h3>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\nGNU gdb (Ubuntu 7.11.1-0ubuntu1~16.04) 7.11.1\r\n&#x5B;...]\r\nThis GDB was configured as &quot;x86_64-linux-gnu&quot;.\r\n&#x5B;...]\r\nwarning: Cannot convert floating-point register value to non-floating-point type.\r\n<\/pre>\n<h3>JLink DLL \/ SO<\/h3>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\n$ file \/opt\/SEGGER\/JLink_V512f\/libjlinkarm.so.5.12.6\r\nELF 64-bit LSB shared object,\r\nx86-64,\r\nversion 1 (SYSV),\r\ndynamically linked,\r\nBuildID&#x5B;sha1]=93c09423c37da8451fa0a37bbbf613b8352a6948, stripped\r\n\r\n$ objdump -f \/opt\/SEGGER\/JLink_V512f\/libjlinkarm.so.5.12.6\r\n\/opt\/SEGGER\/JLink_V512f\/libjlinkarm.so.5.12.6:     file format elf64-x86-64\r\narchitecture: i386:x86-64, flags 0x00000150:\r\nHAS_SYMS, DYNAMIC, D_PAGED\r\nstart address 0x00000000000ff510\r\n\r\n$ readelf -S \/opt\/SEGGER\/JLink_V512f\/libjlinkarm.so.5.12.6\r\nThere are 27 section headers, starting at offset 0x9f46a0:\r\n\r\nSection Headers:\r\n  &#x5B;Nr] Name              Type             Address           Offset       Size              EntSize          Flags  Link  Info  Align\r\n  &#x5B; 0]                   NULL             0000000000000000  00000000     0000000000000000  0000000000000000           0     0     0\r\n  &#x5B; 1] .note.gnu.build-i NOTE             0000000000000190  00000190     0000000000000024  0000000000000000   A       0     0     4\r\n  &#x5B; 2] .gnu.hash         GNU_HASH         00000000000001b8  000001b8     0000000000001350  0000000000000000   A       3     0     8\r\n  &#x5B; 3] .dynsym           DYNSYM           0000000000001508  00001508     00000000000040f8  0000000000000018   A       4     2     8\r\n  &#x5B; 4] .dynstr           STRTAB           0000000000005600  00005600     0000000000003334  0000000000000000   A       0     0     1\r\n  &#x5B; 5] .gnu.version      VERSYM           0000000000008934  00008934     000000000000056a  0000000000000002   A       3     0     2\r\n  &#x5B; 6] .gnu.version_r    VERNEED          0000000000008ea0  00008ea0     00000000000000d0  0000000000000000   A       4     5     8\r\n  &#x5B; 7] .rela.dyn         RELA             0000000000008f70  00008f70     00000000000f2bf8  0000000000000018   A       3     0     8\r\n  &#x5B; 8] .rela.plt         RELA             00000000000fbb68  000fbb68     0000000000002280  0000000000000018   A       3    10     8\r\n  &#x5B; 9] .init             PROGBITS         00000000000fdde8  000fdde8     0000000000000018  0000000000000000  AX       0     0     4\r\n  &#x5B;10] .plt              PROGBITS         00000000000fde00  000fde00     0000000000001710  0000000000000010  AX       0     0     4\r\n  &#x5B;11] .text             PROGBITS         00000000000ff510  000ff510     0000000000153f28  0000000000000000  AX       0     0     16\r\n  &#x5B;12] .fini             PROGBITS         0000000000253438  00253438     000000000000000e  0000000000000000  AX       0     0     4\r\n  &#x5B;13] .rodata           PROGBITS         0000000000253460  00253460     00000000001337fc  0000000000000000   A       0     0     32\r\n  &#x5B;14] .eh_frame_hdr     PROGBITS         0000000000386c5c  00386c5c     000000000000d924  0000000000000000   A       0     0     4\r\n  &#x5B;15] .eh_frame         PROGBITS         0000000000394580  00394580     0000000000038bd4  0000000000000000   A       0     0     8\r\n  &#x5B;16] .ctors            PROGBITS         00000000005cd158  003cd158     0000000000000028  0000000000000000  WA       0     0     8\r\n  &#x5B;17] .dtors            PROGBITS         00000000005cd180  003cd180     0000000000000020  0000000000000000  WA       0     0     8\r\n  &#x5B;18] .jcr              PROGBITS         00000000005cd1a0  003cd1a0     0000000000000008  0000000000000000  WA       0     0     8\r\n  &#x5B;19] .data.rel.ro      PROGBITS         00000000005cd1c0  003cd1c0     000000000008bfe0  0000000000000000  WA       0     0     32\r\n  &#x5B;20] .dynamic          DYNAMIC          00000000006591a0  004591a0     00000000000001d0  0000000000000010  WA       4     0     8\r\n  &#x5B;21] .got              PROGBITS         0000000000659370  00459370     0000000000000410  0000000000000008  WA       0     0     8\r\n  &#x5B;22] .got.plt          PROGBITS         0000000000659780  00459780     0000000000000b98  0000000000000008  WA       0     0     8\r\n  &#x5B;23] .data             PROGBITS         000000000065a320  0045a320     000000000059a240  0000000000000000  WA       0     0     32\r\n  &#x5B;24] .bss              NOBITS           0000000000bf4560  009f4560     000000000020c8f0  0000000000000000  WA       0     0     32\r\n  &#x5B;25] .comment          PROGBITS         0000000000000000  009f4560     0000000000000059  0000000000000001  MS       0     0     1\r\n  &#x5B;26] .shstrtab         STRTAB           0000000000000000  009f45b9     00000000000000e5  0000000000000000           0     0     1\r\nKey to Flags:\r\n  W (write), A (alloc), X (execute), M (merge), S (strings), l (large)\r\n  I (info), L (link order), G (group), T (TLS), E (exclude), x (unknown)\r\n  O (extra OS processing required) o (OS specific), p (processor specific)\r\n\r\n$ objdump -s -j .rodata \/opt\/SEGGER\/JLink_V512f\/libjlinkarm.so.5.12.6\r\n&#x5B;...]\r\n 328ed0 31473137 00415439 3153414d 44323147  1G17.AT91SAMD21G\r\n 328ee0 31374100 41543931 53414d44 32314731  17A.AT91SAMD21G1\r\n 328ef0 37415500 41543931 53414d44 32314731  7AU.AT91SAMD21G1\r\n 328f00 38004154 53414d44 32314731 38004154  8.ATSAMD21G18.AT\r\n 328f10 39315341 4d443231 47313841 00415453  91SAMD21G18A.ATS\r\n 328f20 414d4432 31473138 41550041 54393153  AMD21G18AU.AT91S\r\n 328f30 414d4432 314a3134 00415453 414d4432  AMD21J14.ATSAMD2\r\n 328f40 314a3134 00415439 3153414d 4432314a  1J14.AT91SAMD21J\r\n&#x5B;...]\r\n<\/pre>\n<h3>Start Debugging in Assembler<\/h3>\n<p><a href=\"https:\/\/mcuoneclipse.com\/2015\/03\/25\/command-line-programming-and-debugging-with-gdb\/\">Command Line Programming and Debugging with GDB<\/a><br \/>\n<a href=\"https:\/\/sourceware.org\/gdb\/onlinedocs\/gdb\/Registers.html\">Registers<\/a><br \/>\n<a href=\"https:\/\/sourceware.org\/gdb\/onlinedocs\/gdb\/Machine-Code.html\">Source and Machine Code<\/a><br \/>\n<a href=\"http:\/\/kirste.userpage.fu-berlin.de\/chemnet\/use\/info\/gdb\/gdb_8.html\">Examining Source Files<\/a><\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\n$ \/opt\/SEGGER\/JLink_V512f\/JLinkGDBServer -device ATSAMD21G18 -if SWD -speed 4000\r\n\r\n$ arm-none-eabi-gdb \r\n(gdb) target remote :2331\r\n(gdb) monitor reset\r\n(gdb) si\r\n(gdb) info registers\r\nr0             0x2000005c\t536871004\r\nr1             0x0\t0\r\nr2             0x20000000\t536870912\r\nr3             0x42001400\t1107301376\r\nr4             0x200003e8\t536871912\r\nr5             0x20\t32\r\nr6             0xc\t12\r\nr7             0x20000400\t536871936\r\nr8             0xffd9befd\t4292460285\r\nr9             0x75fdf1ff\t1979576831\r\nr10            0xbfe7fffb\t3219652603\r\nr11            0xd373ffff\t3547594751\r\nr12            0x0\t0\r\nsp             0x20007fec\t0x20007fec\r\nlr             0x4fc5\t20421\r\npc             0x652\t0x652\r\nxpsr           0x41000000\t1090519040\r\nMSP            0x20007fec\t536903660\r\nPSP            0x7f6fefec\t2138042348\r\nPRIMASK        0x0\t0\r\nBASEPRI        0x0\t0\r\nFAULTMASK      0x0\t0\r\nCONTROL        0x0\t0\r\n\r\n(gdb) p\/x $pc\r\n$1 = 0x652\r\n\r\n(gdb) x\/5i $pc\r\n=&gt; 0x64e:\tldr\tr0, &#x5B;pc, #60]\t; (0x68c)\r\n   0x650:\tpush\t{r3, r4, r5, lr}\r\n   0x652:\tcmp\tr2, r0\r\n   0x654:\tbne.n\t0x660\r\n   0x656:\tldr\tr2, &#x5B;pc, #56]\t; (0x690)\r\n\r\n<\/pre>\n<h1>Linux AT91SAM7<\/h1>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\n&#x5B;  857.978356] usb 1-1: new full-speed USB device number 7 using xhci_hcd\r\n&#x5B;  858.127257] usb 1-1: New USB device found, idVendor=03eb, idProduct=6124\r\n&#x5B;  858.127264] usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0\r\n&#x5B;  858.128567] cdc_acm 1-1:1.0: ttyACM1: USB ACM device\r\n<\/pre>\n<h1>Linux udev<\/h1>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\n\r\n$ file \/opt\/SEGGER\/JLink_V634h\/libjlinkarm.so.6.34.8 \r\n\/opt\/SEGGER\/JLink_V634h\/libjlinkarm.so.6.34.8: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID&#x5B;sha1]=2a5fdec57f4c7979a8f453bc87e3f4f11a2b58c9, stripped\r\n\r\n$ file \/opt\/SEGGER\/JLink_V634h\/libjlinkarm_x86.so.6.34.8 \r\n\/opt\/SEGGER\/JLink_V634h\/libjlinkarm_x86.so.6.34.8: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, BuildID&#x5B;sha1]=87bcf47d3d0a1ce17be9b08d935ca62451c68658, stripped\r\n\r\n$ \/opt\/SEGGER\/JLink_V634h\/JLinkExe \r\nSEGGER J-Link Commander V6.34h (Compiled Oct  9 2018 15:50:29)\r\nDLL version V6.34h, compiled Oct  9 2018 15:50:01\r\n\r\nConnecting to J-Link via USB...Updating firmware:  J-Link\r\nReplacing firmware: J-Link\r\nFAILED: Failed to activate bootloader (timeout)\r\nJ-Link&gt;\r\n\r\n$ sudo udevadm control --reload-rules\r\n\r\n$ udevadm monitor --udev\r\nmonitor will print the received events for:\r\nUDEV - the event which udev sends out after rule processing\r\n\r\nUDEV  &#x5B;3055.482775] add      \/devices\/pci0000:00\/0000:00:14.0\/usb1\/1-1 (usb)\r\nUDEV  &#x5B;3055.489309] add      \/devices\/pci0000:00\/0000:00:14.0\/usb1\/1-1\/1-1:1.1 (usb)\r\nUDEV  &#x5B;3055.489419] add      \/devices\/pci0000:00\/0000:00:14.0\/usb1\/1-1\/1-1:1.0 (usb)\r\nUDEV  &#x5B;3055.493441] bind     \/devices\/pci0000:00\/0000:00:14.0\/usb1\/1-1\/1-1:1.1 (usb)\r\nUDEV  &#x5B;3055.496803] add      \/devices\/pci0000:00\/0000:00:14.0\/usb1\/1-1\/1-1:1.0\/tty\/ttyACM1 (tty)\r\nUDEV  &#x5B;3055.500750] add      \/devices\/pci0000:00\/0000:00:14.0\/usb1\/1-1\/1-1:1.2 (usb)\r\nUDEV  &#x5B;3055.506381] bind     \/devices\/pci0000:00\/0000:00:14.0\/usb1\/1-1\/1-1:1.0 (usb)\r\nUDEV  &#x5B;3055.511787] bind     \/devices\/pci0000:00\/0000:00:14.0\/usb1\/1-1 (usb)\r\n\r\nUDEV  &#x5B;3078.917122] unbind   \/devices\/pci0000:00\/0000:00:14.0\/usb1\/1-1\/1-1:1.1 (usb)\r\nUDEV  &#x5B;3078.919208] remove   \/devices\/pci0000:00\/0000:00:14.0\/usb1\/1-1\/1-1:1.2 (usb)\r\nUDEV  &#x5B;3078.921420] remove   \/devices\/pci0000:00\/0000:00:14.0\/usb1\/1-1\/1-1:1.1 (usb)\r\nUDEV  &#x5B;3078.922618] remove   \/devices\/pci0000:00\/0000:00:14.0\/usb1\/1-1\/1-1:1.0\/tty\/ttyACM1 (tty)\r\nUDEV  &#x5B;3078.928998] unbind   \/devices\/pci0000:00\/0000:00:14.0\/usb1\/1-1\/1-1:1.0 (usb)\r\nUDEV  &#x5B;3078.931900] remove   \/devices\/pci0000:00\/0000:00:14.0\/usb1\/1-1\/1-1:1.0 (usb)\r\nUDEV  &#x5B;3078.936413] unbind   \/devices\/pci0000:00\/0000:00:14.0\/usb1\/1-1 (usb)\r\nUDEV  &#x5B;3078.941354] remove   \/devices\/pci0000:00\/0000:00:14.0\/usb1\/1-1 (usb)\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>IDA Pro Hex-Rays IDA Pro v8 vs. v9 Version 8.0 Identical to version 7.0 with the following exception: &#8211; SWD support for non-3.3V targets. Version 9.1 &#8211; New design based on STM32F205. Version 9.2 Identical to version 9.1 with the following exception: &#8211; Pin 1 (VTref) is used for measuring target reference voltage only. Buffers [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-1044","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/blog.bachi.net\/index.php?rest_route=\/wp\/v2\/posts\/1044","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.bachi.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.bachi.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.bachi.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.bachi.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1044"}],"version-history":[{"count":50,"href":"https:\/\/blog.bachi.net\/index.php?rest_route=\/wp\/v2\/posts\/1044\/revisions"}],"predecessor-version":[{"id":8906,"href":"https:\/\/blog.bachi.net\/index.php?rest_route=\/wp\/v2\/posts\/1044\/revisions\/8906"}],"wp:attachment":[{"href":"https:\/\/blog.bachi.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1044"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.bachi.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1044"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.bachi.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1044"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}