{"id":4056,"date":"2018-08-08T10:22:08","date_gmt":"2018-08-08T17:22:08","guid":{"rendered":"https:\/\/visualgdb.com\/w\/?p=4056"},"modified":"2020-01-08T08:42:13","modified_gmt":"2020-01-08T16:42:13","slug":"developing-renesas-rl78-projects-with-visual-studio","status":"publish","type":"post","link":"https:\/\/visualgdb.com\/tutorials\/renesas\/rl78\/","title":{"rendered":"Developing Renesas RL78 Projects with Visual Studio"},"content":{"rendered":"<p>This tutorial shows how to use VisualGDB to develop and debug C\/C++ projects\u00a0targeting the RL78 devices with Visual Studio. We will create a basic project for the <a href=\"https:\/\/www.renesas.com\/ja-jp\/doc\/products\/mpumcu\/doc\/rl78\/r01uh0363ej0200_rl78i1a.pdf\">RL78\/I1A DC LED <\/a>board (EZ-0012) that will turn on the on-board LEDs using the code generated by the Applilet tool from Renesas and will show how to\u00a0build and debug the project with Visual Studio.<\/p>\n<p>Before you begin, download and install the following tools:<\/p>\n<ul>\n<li>Visual Studio<\/li>\n<li>VisualGDB 5.4 Preview 4 or later<\/li>\n<li><a href=\"https:\/\/www.renesas.com\/en-us\/products\/software-tools\/tools\/ide\/e2studio.html\">Renesas E2 Studio<\/a><\/li>\n<li>RL78 GCC Toolchain (installed\u00a0via the E2 Studio installer)<\/li>\n<li>Applilet\u00a0EZ for HCD<\/li>\n<\/ul>\n<p>Once all the necessary tools are installed, ensure you can create and debug a basic project using the Renesas E2 Studio. Once you confirm that the E2-Studio-based debug works, take a note of the GDB stub command line shown in the debug console:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/08-eclipse.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-4059\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/08-eclipse.png\" alt=\"08-eclipse\" width=\"1128\" height=\"670\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/08-eclipse.png 1128w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/08-eclipse-300x178.png 300w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/08-eclipse-1024x608.png 1024w\" sizes=\"(max-width: 1128px) 100vw, 1128px\" \/><\/a><\/p>\n<p>The command line may vary depending on the exact debug tool\u00a0you are using. We will show later in this tutorial how to\u00a0ensure that VisualGDB will use the same command line when debugging your RL78-based project.<\/p>\n<ol>\n<li>Download and run the <a href=\"https:\/\/sysprogs.com\/gettool?tool=RenesasToolchainManager\">RenesasToolchainManager.exe<\/a> tool.\u00a0Ensure\u00a0is shows the correct paths to the\u00a0RL78 toolchain and the E2 Studio and click &#8220;Integrate with VisualGDB&#8221;:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/01-import.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-4057\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/01-import.png\" alt=\"01-import\" width=\"751\" height=\"195\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/01-import.png 751w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/01-import-300x78.png 300w\" sizes=\"(max-width: 751px) 100vw, 751px\" \/><\/a><\/li>\n<li>The tool will scan the\u00a0E2 Studio directory for supported device definitions and will automatically convert them to a\u00a0VisualGDB-compatible format. It will also convert peripheral register definitions and will register the E2 Studio gdb server as a supported debug method. This might take 1-5 minutes depending on your system performance:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/02-progress.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-4058\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/02-progress.png\" alt=\"02-progress\" width=\"786\" height=\"205\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/02-progress.png 786w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/02-progress-300x78.png 300w\" sizes=\"(max-width: 786px) 100vw, 786px\" \/><\/a><\/li>\n<li>Start the VisualGDB Embedded Project Wizard:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/03-wiz.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-4060\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/03-wiz.png\" alt=\"03-wiz\" width=\"888\" height=\"542\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/03-wiz.png 888w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/03-wiz-300x183.png 300w\" sizes=\"(max-width: 888px) 100vw, 888px\" \/><\/a><\/li>\n<li>On the first page of the wizard select &#8220;Create a new project&#8221; -&gt; &#8220;MSBuild&#8221;:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/04-msbuild.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-4061\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/04-msbuild.png\" alt=\"04-msbuild\" width=\"856\" height=\"670\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/04-msbuild.png 856w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/04-msbuild-300x235.png 300w\" sizes=\"(max-width: 856px) 100vw, 856px\" \/><\/a><\/li>\n<li>On the next page select the Renesas RL78 toolchain and choose your device from the list.\u00a0If the toolchain\u00a0is not shown, ensure you restart\u00a0Visual Studio after running the Renesas Toolchain Manager.<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/05-device.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-4062\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/05-device.png\" alt=\"05-device\" width=\"856\" height=\"670\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/05-device.png 856w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/05-device-300x235.png 300w\" sizes=\"(max-width: 856px) 100vw, 856px\" \/><\/a>If you are planning to use C++ source files, check the corresponding checkbox\u00a0in the device settings.<\/li>\n<li>The imported Renesas toolchain will not contain any project samples. Click &#8220;Next&#8221; on the Sample Selection page to proceed with creating an empty project:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/06-sample.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-4063\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/06-sample.png\" alt=\"06-sample\" width=\"856\" height=\"670\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/06-sample.png 856w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/06-sample-300x235.png 300w\" sizes=\"(max-width: 856px) 100vw, 856px\" \/><\/a><\/li>\n<li>On the last page of the wizard select\u00a0your debug interface. The RL78\/I1A DC LED board contains an EZ debug module (ensure you activate it using the on-board switches), so we\u00a0will select it in this tutorial:<br \/>\n<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/07-debug.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-4064\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/07-debug.png\" alt=\"07-debug\" width=\"856\" height=\"670\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/07-debug.png 856w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/07-debug-300x235.png 300w\" sizes=\"(max-width: 856px) 100vw, 856px\" \/><\/a><\/li>\n<li>If you are using any other board,\u00a0expand the &#8220;Advanced Settings&#8221; field and copy the gdb stub command line\u00a0obtained from the E2 Studio into VisualGDB, removing the <strong>-g<\/strong>, <strong>-t<\/strong>, <strong>-p<\/strong> and &#8211;<strong>d<\/strong> flags and the corresponding arguments:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/09-expanded1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-4067\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/09-expanded1.png\" alt=\"09-expanded\" width=\"856\" height=\"693\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/09-expanded1.png 856w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/09-expanded1-300x243.png 300w\" sizes=\"(max-width: 856px) 100vw, 856px\" \/><\/a><\/li>\n<li>Press &#8220;Finish&#8221; to create the project. VisualGDB will generate a basic project including a linker script, default interrupt handlers and I\/O register definitions for the selected device:<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-4068\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/10-built.png\" alt=\"10-built\" width=\"1128\" height=\"678\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/10-built.png 1128w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/10-built-300x180.png 300w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/10-built-1024x615.png 1024w\" sizes=\"(max-width: 1128px) 100vw, 1128px\" \/><\/li>\n<li>Set a breakpoint on the &#8220;nop&#8221; line and press F5 to start debugging. VisualGDB will launch the E2 Studio gdb stub, program the FLASH memory and start the program. Once the breakpoint is hit, you will be able to debug the program as usual:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/11-debug1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-4071\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/11-debug1.png\" alt=\"11-debug\" width=\"1128\" height=\"670\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/11-debug1.png 1128w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/11-debug1-300x178.png 300w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/11-debug1-1024x608.png 1024w\" sizes=\"(max-width: 1128px) 100vw, 1128px\" \/><\/a><\/li>\n<li>The toolchain importing process\u00a0automatically converted the peripheral register definitions\u00a0to the VisualGDB format, so you will be able to view them via Debug-&gt;Windows-&gt;Hardware Registers:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/12-hwreg1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-4072\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/12-hwreg1.png\" alt=\"12-hwreg\" width=\"1128\" height=\"670\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/12-hwreg1.png 1128w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/12-hwreg1-300x178.png 300w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/12-hwreg1-1024x608.png 1024w\" sizes=\"(max-width: 1128px) 100vw, 1128px\" \/><\/a><\/li>\n<li>Now we will show how to import a basic project generated by the Applilet\u00a0EZ for HCD tool. Launch the tool and create a basic project for your board, then click &#8220;Generate Code&#8221;:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/13-applilet.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-4073\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/13-applilet.png\" alt=\"13-applilet\" width=\"720\" height=\"602\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/13-applilet.png 720w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/13-applilet-300x251.png 300w\" sizes=\"(max-width: 720px) 100vw, 720px\" \/><\/a>The generated code will normally be available in the <strong>&lt;Documents&gt;\\Applilet EZ HCD\\Projects<\/strong> folder, even if the tool crashes.<\/li>\n<li>Open the VisualGDB Embedded Project Wizard again and select &#8220;Import a project built with command-line tools&#8221; on the first page:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/14-import.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-4074\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/14-import.png\" alt=\"14-import\" width=\"856\" height=\"693\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/14-import.png 856w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/14-import-300x243.png 300w\" sizes=\"(max-width: 856px) 100vw, 856px\" \/><\/a><\/li>\n<li>On the next page select the same toolchain\/device and proceed to the Import Source page. Then point the wizard to the location of the generated project:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/15-loc.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-4075\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/15-loc.png\" alt=\"15-loc\" width=\"856\" height=\"693\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/15-loc.png 856w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/15-loc-300x243.png 300w\" sizes=\"(max-width: 856px) 100vw, 856px\" \/><\/a><\/li>\n<li>Proceed with the same debug settings\u00a0as before\u00a0and click &#8220;Finish&#8221; to generate the project. If you try building it initially, VisualGDB will fail due to missing header files:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/16-missing1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-4082\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/16-missing1.png\" alt=\"16-missing\" width=\"1128\" height=\"670\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/16-missing1.png 1128w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/16-missing1-300x178.png 300w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/16-missing1-1024x608.png 1024w\" sizes=\"(max-width: 1128px) 100vw, 1128px\" \/><\/a><\/li>\n<li>Once you open any of the source files with the error message, VisualGDB will automatically locate them and\u00a0suggest adjusting the settings. Click &#8220;Add selected directories to build and IntelliSense Settings&#8221;:<br \/>\n<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/17-inc.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-4077\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/17-inc.png\" alt=\"17-inc\" width=\"1128\" height=\"671\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/17-inc.png 1128w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/17-inc-300x178.png 300w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/17-inc-1024x609.png 1024w\" sizes=\"(max-width: 1128px) 100vw, 1128px\" \/><\/a><\/li>\n<li>If you build the project now, it will\u00a0fail due to multiple definitions of several symbols:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/18-multiple1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-4083\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/18-multiple1.png\" alt=\"18-multiple\" width=\"1128\" height=\"670\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/18-multiple1.png 1128w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/18-multiple1-300x178.png 300w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/18-multiple1-1024x608.png 1024w\" sizes=\"(max-width: 1128px) 100vw, 1128px\" \/><\/a><\/li>\n<li>This happens because the Applilet tool generates\u00a0independent copies of the files\u00a0imported\u00a0from\u00a0E2 Studio. Remove the reference to the default startup files via the Embedded Frameworks page of VisualGDB Project Properties:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/18-multiple.png\"><br \/>\n<\/a> <a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/19-nofiles.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-4079\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/19-nofiles.png\" alt=\"19-nofiles\" width=\"775\" height=\"489\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/19-nofiles.png 775w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/19-nofiles-300x189.png 300w\" sizes=\"(max-width: 775px) 100vw, 775px\" \/><\/a><\/li>\n<li>Before you can successfully build the project, you will need to resolve one last error &#8211; missing reset handler:<br \/>\n<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/20-reset.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-4080\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/20-reset.png\" alt=\"20-reset\" width=\"1128\" height=\"670\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/20-reset.png 1128w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/20-reset-300x178.png 300w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/20-reset-1024x608.png 1024w\" sizes=\"(max-width: 1128px) 100vw, 1128px\" \/><\/a><\/li>\n<li>It happens\u00a0as\u00a0VisualGDB doesn&#8217;t automatically import assembly files\u00a0when using default settings. Locate the\u00a0<strong>reset_program.asm<\/strong> file in the generated project folder, change its extension to .S so that gcc can\u00a0handle it properly (note the uppercase &#8216;S&#8217;) and add it to the project:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/21-entry.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-4081\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/21-entry.png\" alt=\"21-entry\" width=\"1128\" height=\"670\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/21-entry.png 1128w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/21-entry-300x178.png 300w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/21-entry-1024x608.png 1024w\" sizes=\"(max-width: 1128px) 100vw, 1128px\" \/><\/a><\/li>\n<li>Now the project will build successfully and running it will turn on the on-board LEDs. You can\u00a0step through the code responsible for\u00a0setting various hardware registers by setting a breakpoint in the LED1_set() function and then using the regular &#8220;step over&#8221; command:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/22-bkpt.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-4084\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/22-bkpt.png\" alt=\"22-bkpt\" width=\"1128\" height=\"669\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/22-bkpt.png 1128w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/22-bkpt-300x178.png 300w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2018\/07\/22-bkpt-1024x607.png 1024w\" sizes=\"(max-width: 1128px) 100vw, 1128px\" \/><\/a><\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This tutorial shows how to use VisualGDB to develop and debug C\/C++ projects\u00a0targeting the RL78 devices with Visual Studio. We<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[89],"tags":[64,166,167],"_links":{"self":[{"href":"https:\/\/visualgdb.com\/w\/wp-json\/wp\/v2\/posts\/4056"}],"collection":[{"href":"https:\/\/visualgdb.com\/w\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/visualgdb.com\/w\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/visualgdb.com\/w\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/visualgdb.com\/w\/wp-json\/wp\/v2\/comments?post=4056"}],"version-history":[{"count":3,"href":"https:\/\/visualgdb.com\/w\/wp-json\/wp\/v2\/posts\/4056\/revisions"}],"predecessor-version":[{"id":5557,"href":"https:\/\/visualgdb.com\/w\/wp-json\/wp\/v2\/posts\/4056\/revisions\/5557"}],"wp:attachment":[{"href":"https:\/\/visualgdb.com\/w\/wp-json\/wp\/v2\/media?parent=4056"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/visualgdb.com\/w\/wp-json\/wp\/v2\/categories?post=4056"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/visualgdb.com\/w\/wp-json\/wp\/v2\/tags?post=4056"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}