{"id":470,"date":"2018-11-16T19:11:50","date_gmt":"2018-11-16T19:11:50","guid":{"rendered":"https:\/\/justanotherelectronicsblog.com\/?p=470"},"modified":"2019-04-14T15:08:54","modified_gmt":"2019-04-14T15:08:54","slug":"hello-world-on-the-lichee-tang-risc-v-fpga-board","status":"publish","type":"post","link":"https:\/\/justanotherelectronicsblog.com\/?p=470","title":{"rendered":"Hello World on the Lichee Tang RISC-V\/FPGA board"},"content":{"rendered":"<p>A Chinese company recently launched a small dev board with some interesting features, it&#8217;s one of the very few boards with a RISC-V CPU, like the <a href=\"https:\/\/www.sifive.com\/boards\/hifive1\">SiFive HiFive1<\/a>, at least, I though. Unlike the HiFive1 board, the Lichee Tang doesn&#8217;t use a custom RISC-V microcontroller, instead it has a FPGA IC with a RISC-V core pre-loaded. This also means it&#8217;s possible to use it as an FPGA board, add custom things in the FPGA next to the CPU and so on. And this is just where the interesting tidbits start. Sadly, the documentation currently is mostly in Chinese. So let&#8217;s change that and make a hello world project. Meaning, get a toolchain up and running, recompile the FPGA project and load it all on the dev board. Don&#8217;t worry, I also created a virtual machine with all the work done already.<\/p>\n<p><a href=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/11\/blog1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-479\" src=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/11\/blog1-1024x469.png\" alt=\"\" width=\"878\" height=\"402\" srcset=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/11\/blog1-1024x469.png 1024w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/11\/blog1-300x137.png 300w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/11\/blog1-768x351.png 768w\" sizes=\"auto, (max-width: 878px) 100vw, 878px\" \/><\/a><\/p>\n<p><!--more--><\/p>\n<p>First a short explanation what RISC-V is and why I think it&#8217;s pretty cool. RISC-V is an open instruction set architecture, basicly it&#8217;s an open and free to use description on how to build a CPU. This means that anyone can make a CPU based on the RISC-V architecture and use it with no license costs needed. In contrast, with ARM devices, a license fee is in place as the people behind ARM want to earn some money. This means that RISC-V devices can be a bit cheaper, but there are much more advantages. As RISC-V is open, everyone can make a CPU and as long as it&#8217;s implemented correctly, compiled code will work on every device. It also means it&#8217;s possible to teach CPU design at schools and make something that can actually be used as compilers and such are already existent. Another advantage is that a more open source CPU is possible, as the HDL that makes up the actual CPU can be open source as well.<\/p>\n<p>Now back to the Lichee Tang, which contains an open source RISC-V CPU inside a Chinese FPGA on a board with a lot of IO. The board has the following:<\/p>\n<ul>\n<li>Anlogic EG4S20BG256<\/li>\n<li>QSPI Flash<\/li>\n<li>SD card slot<\/li>\n<li>RGB LED<\/li>\n<li>GD32F150 (STm32F150 clone?) for FPGA programming<\/li>\n<li>32 IO&#8217;s to pinheaders<\/li>\n<li>Camera interface connector<\/li>\n<li>LCD interface connector<\/li>\n<\/ul>\n<p>A few things are interesting, the FPGA is not from a well known brand like Intel or Xilinx, but a Chinese brand called Anlogic. The on board programmer only programs the FPGA, so with the RISC-V softcore an external programmer is needed. So when ordering this board, make sure to buy it with the programmer included. The programmer seems to be a normal FT2232 device, so a different, FT2232 based programmer should also work.<\/p>\n<p>With that out of the way, time to get all the components up and running.<\/p>\n<h3>Required software<\/h3>\n<p>I tested all the steps on a Debian system, so they should work on most Debian\/Ubuntu\/Mint based systems. I also created a virtual machine with everything setup. It can be downloaded <a href=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/11\/debian.ova\">here.<\/a> The username and password are both\u00a0 &#8220;riscv&#8221;<\/p>\n<p>On a clean Debian installation, the following packages are needed and can be installed with the apt install command:<br \/>\nbuild-essential<br \/>\nmodule-assistant<br \/>\ngit<br \/>\nlibftdi-dev<br \/>\nlibtool<br \/>\npkg-config<br \/>\ntexinfo<br \/>\nautomake<br \/>\nlibftdi1-dev<br \/>\nunrar-free<br \/>\nputty<\/p>\n<h3>The virtual machine<\/h3>\n<p>To make everything a bit easier, a Debian virtualbox image can be dowloaded <a href=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/11\/debian.ova\">here.<\/a> It should work in one go with Virtualbox 5.2.22 or newer and lets you skip, well, all of the below steps :) To login, the username and password are both &#8220;riscv&#8221;<\/p>\n<h3>Setting up the toolchain<\/h3>\n<p>The toolchain requires the following components:<\/p>\n<ul>\n<li>The example code for the CPU<\/li>\n<li>The GCC compiler<\/li>\n<li>The OpenOCD debugger<\/li>\n<\/ul>\n<p>The example code for the CPU can be downloaded from github using<\/p>\n<pre class=\"lang:default decode:true\">git clone https:\/\/github.com\/SI-RISCV\/e200_opensource.git<\/pre>\n<p>After downloading, the board support package for the Lichee Tang has to be downloaded and added. It can be downloaded <a href=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/11\/sirv-e203-lichee.tar.gz\">here<\/a>. After downloading, it must be unzipped and copied to the sirv-e-sdk\/bsp\/env folder in the e200_opensource folder downloaded earlier.<\/p>\n<p>OpenOCD is next. Navigate out of the e200_opensource folder to Documents or Downloads and clone the OpenOCD repository:<\/p>\n<pre class=\"lang:default decode:true\">git clone https:\/\/github.com\/Lichee-Pi\/LicheeTang_openocd.git<\/pre>\n<p>In the OpenOCD folder, execute the following commands to configure and build OpenOCD:<\/p>\n<pre class=\"lang:default decode:true\">.\/bootstrap \r\n.\/configure \r\nmake<\/pre>\n<p>After building openOCD, the files need to be copied to the right directory. The content of then folder &#8220;src&#8221; in the OpenOCD directory must be copied to: &#8220;sirv-e-sdk\/work\/build\/openocd\/prefix\/bin\/&#8221; (this is a new folder and has to be created)<\/p>\n<p>With OpenOCD in place, time to download the GCC compiler. It can be downloaded from <a href=\"https:\/\/github.com\/gnu-mcu-eclipse\/riscv-none-gcc\/releases\">here.<\/a><br \/>\nThe latest release ending in centos64.tgz is the correct one, at the moment of writing that is: <a class=\"d-flex flex-items-center\" href=\"https:\/\/github.com\/gnu-mcu-eclipse\/riscv-none-gcc\/releases\/download\/v8.1.0-2-20181019\/gnu-mcu-eclipse-riscv-none-gcc-8.1.0-2-20181019-0952-centos64.tgz\" rel=\"nofollow\"><strong class=\"pl-1 pr-2 flex-auto min-width-0\">gnu-mcu-eclipse-riscv-none-gcc-8.1.0-2-20181019-0952-centos64.tgz<\/strong><\/a><\/p>\n<p>After downloading and extracting the archive, the contents must be copied from &#8220;riscv-none-gcc\/8.1.0-2-20181019-0952\/&#8221; to &#8220;sirv-e-sdk\/work\/build\/riscv-gnu-toolchain\/riscv32-unknown-elf\/prefix\/&#8221; (This is a new folder again and must be created)<\/p>\n<p>After this, the map structure should look like this:<br \/>\n<a href=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/11\/Screenshot_20181114_193903.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-480\" src=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/11\/Screenshot_20181114_193903-132x300.png\" alt=\"\" width=\"170\" height=\"386\" srcset=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/11\/Screenshot_20181114_193903-132x300.png 132w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/11\/Screenshot_20181114_193903.png 431w\" sizes=\"auto, (max-width: 170px) 100vw, 170px\" \/><\/a><\/p>\n<p>With all that done, we are almost ready to compile a project, almost. First a small issue in the downloaded board support package must be fixed. Navigate to &#8220;sirv-e-sdk\/bsp\/env\/&#8221; and replace the following 3 files from &#8220;sirv-e201-arty&#8221; to &#8220;sirv-e203-lichee&#8221;: init.c, link.lsd and platform.h<br \/>\nAfter replacing these files, in a terminal in the &#8220;sirv-e-sdk&#8221; folder, the following command should build a demo gpio application that is included:<\/p>\n<pre class=\"lang:default decode:true\">make software PROGRAM=demo_gpio BOARD=sirv-e203-lichee<\/pre>\n<h3>Uploading software to the board<\/h3>\n<p>After all that work, the compiled binary still has to be uploaded to the board. For that, a USB rule has to be added so the debugger is accessible by the user, else only root can upload binaries to the board. First, the user must be added to the plugdev group using<\/p>\n<pre class=\"lang:default decode:true\">sudo usermod \u2013a \u2013G plugdev your user name<\/pre>\n<p>After that, a new file has to be made in the udev rules folder using the following commands:<\/p>\n<pre class=\"lang:default decode:true\">sudo nano \/etc\/udev\/rules.d\/45-dt2232.rules  \r\n<\/pre>\n<p>This opens the nano editor in the right directory<\/p>\n<pre class=\"lang:default decode:true\">ATTRS{idVendor}==\"0403\", ATTRS{idProduct}==\"6010\", MODE=\"0660\", GROUP=\"plugdev\", TAG+=\"uaccess\"<\/pre>\n<p>Press ctrl+x to save the file. After this a reboot is needed before continuing. After a reboot, plug in the external debugger with the board connected to it as follows:<br \/>\n<a href=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/11\/blog2.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-481\" src=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/11\/blog2-300x155.png\" alt=\"\" width=\"402\" height=\"208\" srcset=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/11\/blog2-300x155.png 300w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/11\/blog2-768x397.png 768w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/11\/blog2-1024x529.png 1024w\" sizes=\"auto, (max-width: 402px) 100vw, 402px\" \/><\/a> <a href=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/11\/blog3.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-482\" src=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/11\/blog3-300x141.png\" alt=\"\" width=\"400\" height=\"188\" srcset=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/11\/blog3-300x141.png 300w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/11\/blog3-768x361.png 768w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/11\/blog3-1024x481.png 1024w\" sizes=\"auto, (max-width: 400px) 100vw, 400px\" \/><\/a><br \/>\nIn a terminal in the &#8220;sirv-e-sdk&#8221; folder, the following command will upload the compiled binary<\/p>\n<pre class=\"lang:default decode:true\">make upload PROGRAM=demo_gpio BOARD=sirv-e203-lichee<\/pre>\n<p>With the FT2232 debugger connected, open Putty and connect to the serial port at 115200 BAUD, generally ttyUSB1, but check with &#8220;sudo dmesg&#8221; After uploading the binary and resetting the board, you should be greeted with the following:<\/p>\n<p><a href=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/11\/Screenshot_20181114_210027.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-486\" src=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/11\/Screenshot_20181114_210027.png\" alt=\"\" width=\"509\" height=\"556\" srcset=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/11\/Screenshot_20181114_210027.png 509w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/11\/Screenshot_20181114_210027-275x300.png 275w\" sizes=\"auto, (max-width: 509px) 100vw, 509px\" \/><\/a><\/p>\n<p>Finally, a toolchain completely setup. For debugging, 2 terminals must be open, one executing &#8220;make run_openocd PROGRAM=demo_gpio BOARD=sirv-e203- lichee&#8221; and the other the command &#8220;make run_gdb PROGRAM= demo_gpio BOARD=sirv-e203- lichee&#8221;<\/p>\n<h3>Creating a new project<\/h3>\n<p>The demo_gpio application is one, but it&#8217;s nice to be able to add a project to work on. To do so, it&#8217;s easiest to start with the demo_gpio project located in &#8220;sirv-e-sdk\/software\/&#8221; and make a copy. Rename the folder to something else, for example &#8220;hello_world&#8221;. Inside this folder, the makefile has to be changed a bit, the first line has to be changed from &#8220;TARGET = demo_gpio&#8221; to &#8220;TARGET = hello_world&#8221; (or how the new project is called). After that the project can be compiled using the following command:<\/p>\n<pre class=\"lang:default decode:true\">make software PROGRAM=hello_world BOARD=sirv-e203-lichee<\/pre>\n<p>As this is all makefile based, working with this SDK requires some make knowledge. If you are not familliar with makefiles, it&#8217;s best to look at a good online tutorials like <a href=\"https:\/\/www3.ntu.edu.sg\/home\/ehchua\/programming\/cpp\/gcc_make.html\">this one.<\/a><\/p>\n<h3>Synthesizing the FPGA CPU project<\/h3>\n<p>As the Lichee Tang has an on board debugger, this one also needs a udev rules file to make sure non root users can access it:<\/p>\n<pre class=\"lang:default decode:true\">sudo nano \/etc\/udev\/rules.d\/91-anlogic-jtag.rules\r\n<\/pre>\n<p>This opens the nano editor in the right directory<\/p>\n<pre class=\"lang:default decode:true\">SUBSYSTEMS==\"usb\", ATTRS{idVendor}==\"0547\", ATTRS{idProduct}==\"1002\", \\\r\n  GROUP=\"plugdev\", \\\r\n  MODE=\"0660\"<\/pre>\n<p>Press ctrl+x to save the file. After this a reboot is needed before continuing.<\/p>\n<p>The software enviroment for the FPGA can be downloaded <a href=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/11\/TD_RELEASE_SEPTEMBER2018_RHEL.rar\">here<\/a>. It&#8217;s a rar file and to extract it, the following command is needed:<\/p>\n<pre class=\"lang:default decode:true \">unrar-free x TD_RELEASE_SEPTEMBER2018_RHEL.rar<\/pre>\n<p>After extracting it, the binary has to be made executable<\/p>\n<pre class=\"lang:default decode:true \">cd bin\r\nchmod +x td<\/pre>\n<p>After this, the IDE can be started using the command &#8220;.\/td &#8211;gui&#8221; and you should be greeted with this:<br \/>\n<a href=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/11\/Screenshot_20181114_203918.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-483\" src=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/11\/Screenshot_20181114_203918-1024x758.png\" alt=\"\" width=\"760\" height=\"563\" srcset=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/11\/Screenshot_20181114_203918-1024x758.png 1024w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/11\/Screenshot_20181114_203918-300x222.png 300w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/11\/Screenshot_20181114_203918-768x568.png 768w, https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/11\/Screenshot_20181114_203918.png 1238w\" sizes=\"auto, (max-width: 760px) 100vw, 760px\" \/><\/a><\/p>\n<p>The FPGA project for the RISC-V CPU can be downloaded from git using<\/p>\n<pre class=\"lang:default decode:true \">git clone https:\/\/github.com\/Lichee-Pi\/Tang_E203_Mini<\/pre>\n<p>In the TD FPGA IDE, the project is loaded by selecting &#8220;project -&gt; open project&#8221; and opening the &#8220;e203egmini_new.al&#8221; file in &#8220;Tang_E203_Mini\/project\/&#8221;. After opening the project, it is build by double clicking on HDL2Bit flow in the bottom left. Synthesizing a complete microcontroller takes a while, so now is a good time to grab a needed cup of coffee. After that is all done, plugin the Lichee Tang using the USB connector on the board. In the TD FPGA IDE, double click on &#8220;Download&#8221; and it should find the FPGA board. Add the binary &#8220;e203egmini_new.bit&#8221; by pressing on add, then press on run and the upload process starts. For me it tends to hang a minute or so on 98%, so don&#8217;t get too impatient.<\/p>\n<h3>Final words, useful links and how to write code for the Lichee Tang<\/h3>\n<p>It took some effort, but a working toolchain for the CPU and for building the actual CPU are setup. I had a lot of help from the <a href=\"https:\/\/t.me\/sipeed\">sipeed telegram channel<\/a>, which is there for support for the Lichee Tang and other Lichee products.A few helpful things for working with the Lichee Tang. First of all, the schematic of the board, for figuring out what is connected to what. (todo) Second, the RISC-V CPU used is based on the <a href=\"https:\/\/github.com\/SI-RISCV\/e200_opensource\">e200 core from SI-RISCV<\/a>, the peripherals for UART, GPIO and so on seem to be copied from the SiFive HiFive1 microcontroller as all the registers match. This means the <a href=\"https:\/\/sifive.cdn.prismic.io\/sifive%2F4d063bf8-3ae6-4db6-9843-ee9076ebadf7_fe310-g000.pdf\">guide<\/a> for the SiFive HiFive1 microcontroller can be used when working with the peripherals.<\/p>\n<p>Documentation wise, the schematics of the board can be downloaded <a href=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/11\/LicheeTang_RV.pdf\">here<\/a> and an english guide on using the TD FPGA IDE can be downloaded <a href=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/11\/TD_User_Guide_V4.2_english.pdf\">here<\/a>. (credit to <a href=\"https:\/\/github.com\/kprasadvnsi\/Anlogic_Doc_English\">kprasadvni<\/a>)<\/p>\n<p>This blog post only mentioned on how to setup the tools as I ran into some issues with it, now it&#8217;s time to write some code and maybe talk about that next. Let me know what you want me to try on this interesting board.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A Chinese company recently launched a small dev board with some interesting features, it&#8217;s one of the very few boards with a RISC-V CPU, like the SiFive HiFive1, at least, I though. Unlike the HiFive1 board, the Lichee Tang doesn&#8217;t use a custom RISC-V microcontroller, instead it has a FPGA IC with a RISC-V core [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-470","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Hello World on the Lichee Tang RISC-V\/FPGA board - jaeblog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/justanotherelectronicsblog.com\/?p=470\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Hello World on the Lichee Tang RISC-V\/FPGA board - jaeblog\" \/>\n<meta property=\"og:description\" content=\"A Chinese company recently launched a small dev board with some interesting features, it&#8217;s one of the very few boards with a RISC-V CPU, like the SiFive HiFive1, at least, I though. Unlike the HiFive1 board, the Lichee Tang doesn&#8217;t use a custom RISC-V microcontroller, instead it has a FPGA IC with a RISC-V core [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/justanotherelectronicsblog.com\/?p=470\" \/>\n<meta property=\"og:site_name\" content=\"jaeblog\" \/>\n<meta property=\"article:published_time\" content=\"2018-11-16T19:11:50+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-04-14T15:08:54+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/11\/blog1-1024x469.png\" \/>\n<meta name=\"author\" content=\"riktw\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"riktw\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/justanotherelectronicsblog.com\/?p=470#article\",\"isPartOf\":{\"@id\":\"https:\/\/justanotherelectronicsblog.com\/?p=470\"},\"author\":{\"name\":\"riktw\",\"@id\":\"https:\/\/justanotherelectronicsblog.com\/#\/schema\/person\/d77e39721321c4a472b49909a8f1982b\"},\"headline\":\"Hello World on the Lichee Tang RISC-V\/FPGA board\",\"datePublished\":\"2018-11-16T19:11:50+00:00\",\"dateModified\":\"2019-04-14T15:08:54+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/justanotherelectronicsblog.com\/?p=470\"},\"wordCount\":1706,\"commentCount\":11,\"image\":{\"@id\":\"https:\/\/justanotherelectronicsblog.com\/?p=470#primaryimage\"},\"thumbnailUrl\":\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/11\/blog1-1024x469.png\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/justanotherelectronicsblog.com\/?p=470#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/justanotherelectronicsblog.com\/?p=470\",\"url\":\"https:\/\/justanotherelectronicsblog.com\/?p=470\",\"name\":\"Hello World on the Lichee Tang RISC-V\/FPGA board - jaeblog\",\"isPartOf\":{\"@id\":\"https:\/\/justanotherelectronicsblog.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/justanotherelectronicsblog.com\/?p=470#primaryimage\"},\"image\":{\"@id\":\"https:\/\/justanotherelectronicsblog.com\/?p=470#primaryimage\"},\"thumbnailUrl\":\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/11\/blog1-1024x469.png\",\"datePublished\":\"2018-11-16T19:11:50+00:00\",\"dateModified\":\"2019-04-14T15:08:54+00:00\",\"author\":{\"@id\":\"https:\/\/justanotherelectronicsblog.com\/#\/schema\/person\/d77e39721321c4a472b49909a8f1982b\"},\"breadcrumb\":{\"@id\":\"https:\/\/justanotherelectronicsblog.com\/?p=470#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/justanotherelectronicsblog.com\/?p=470\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/justanotherelectronicsblog.com\/?p=470#primaryimage\",\"url\":\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/11\/blog1.png\",\"contentUrl\":\"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/11\/blog1.png\",\"width\":3971,\"height\":1817},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/justanotherelectronicsblog.com\/?p=470#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/justanotherelectronicsblog.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Hello World on the Lichee Tang RISC-V\/FPGA board\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/justanotherelectronicsblog.com\/#website\",\"url\":\"https:\/\/justanotherelectronicsblog.com\/\",\"name\":\"jaeblog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/justanotherelectronicsblog.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/justanotherelectronicsblog.com\/#\/schema\/person\/d77e39721321c4a472b49909a8f1982b\",\"name\":\"riktw\",\"url\":\"https:\/\/justanotherelectronicsblog.com\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Hello World on the Lichee Tang RISC-V\/FPGA board - jaeblog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/justanotherelectronicsblog.com\/?p=470","og_locale":"en_US","og_type":"article","og_title":"Hello World on the Lichee Tang RISC-V\/FPGA board - jaeblog","og_description":"A Chinese company recently launched a small dev board with some interesting features, it&#8217;s one of the very few boards with a RISC-V CPU, like the SiFive HiFive1, at least, I though. Unlike the HiFive1 board, the Lichee Tang doesn&#8217;t use a custom RISC-V microcontroller, instead it has a FPGA IC with a RISC-V core [&hellip;]","og_url":"https:\/\/justanotherelectronicsblog.com\/?p=470","og_site_name":"jaeblog","article_published_time":"2018-11-16T19:11:50+00:00","article_modified_time":"2019-04-14T15:08:54+00:00","og_image":[{"url":"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/11\/blog1-1024x469.png","type":"","width":"","height":""}],"author":"riktw","twitter_card":"summary_large_image","twitter_misc":{"Written by":"riktw","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/justanotherelectronicsblog.com\/?p=470#article","isPartOf":{"@id":"https:\/\/justanotherelectronicsblog.com\/?p=470"},"author":{"name":"riktw","@id":"https:\/\/justanotherelectronicsblog.com\/#\/schema\/person\/d77e39721321c4a472b49909a8f1982b"},"headline":"Hello World on the Lichee Tang RISC-V\/FPGA board","datePublished":"2018-11-16T19:11:50+00:00","dateModified":"2019-04-14T15:08:54+00:00","mainEntityOfPage":{"@id":"https:\/\/justanotherelectronicsblog.com\/?p=470"},"wordCount":1706,"commentCount":11,"image":{"@id":"https:\/\/justanotherelectronicsblog.com\/?p=470#primaryimage"},"thumbnailUrl":"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/11\/blog1-1024x469.png","inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/justanotherelectronicsblog.com\/?p=470#respond"]}]},{"@type":"WebPage","@id":"https:\/\/justanotherelectronicsblog.com\/?p=470","url":"https:\/\/justanotherelectronicsblog.com\/?p=470","name":"Hello World on the Lichee Tang RISC-V\/FPGA board - jaeblog","isPartOf":{"@id":"https:\/\/justanotherelectronicsblog.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/justanotherelectronicsblog.com\/?p=470#primaryimage"},"image":{"@id":"https:\/\/justanotherelectronicsblog.com\/?p=470#primaryimage"},"thumbnailUrl":"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/11\/blog1-1024x469.png","datePublished":"2018-11-16T19:11:50+00:00","dateModified":"2019-04-14T15:08:54+00:00","author":{"@id":"https:\/\/justanotherelectronicsblog.com\/#\/schema\/person\/d77e39721321c4a472b49909a8f1982b"},"breadcrumb":{"@id":"https:\/\/justanotherelectronicsblog.com\/?p=470#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/justanotherelectronicsblog.com\/?p=470"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/justanotherelectronicsblog.com\/?p=470#primaryimage","url":"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/11\/blog1.png","contentUrl":"https:\/\/justanotherelectronicsblog.com\/wp-content\/uploads\/2018\/11\/blog1.png","width":3971,"height":1817},{"@type":"BreadcrumbList","@id":"https:\/\/justanotherelectronicsblog.com\/?p=470#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/justanotherelectronicsblog.com\/"},{"@type":"ListItem","position":2,"name":"Hello World on the Lichee Tang RISC-V\/FPGA board"}]},{"@type":"WebSite","@id":"https:\/\/justanotherelectronicsblog.com\/#website","url":"https:\/\/justanotherelectronicsblog.com\/","name":"jaeblog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/justanotherelectronicsblog.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/justanotherelectronicsblog.com\/#\/schema\/person\/d77e39721321c4a472b49909a8f1982b","name":"riktw","url":"https:\/\/justanotherelectronicsblog.com\/?author=1"}]}},"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/justanotherelectronicsblog.com\/index.php?rest_route=\/wp\/v2\/posts\/470","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/justanotherelectronicsblog.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/justanotherelectronicsblog.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/justanotherelectronicsblog.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/justanotherelectronicsblog.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=470"}],"version-history":[{"count":19,"href":"https:\/\/justanotherelectronicsblog.com\/index.php?rest_route=\/wp\/v2\/posts\/470\/revisions"}],"predecessor-version":[{"id":501,"href":"https:\/\/justanotherelectronicsblog.com\/index.php?rest_route=\/wp\/v2\/posts\/470\/revisions\/501"}],"wp:attachment":[{"href":"https:\/\/justanotherelectronicsblog.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=470"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/justanotherelectronicsblog.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=470"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/justanotherelectronicsblog.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=470"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}