close-circle
Close
0%
0%

RTL8710 easy programming by Arduino IDE

Recent progress of WiFi modules does not need external MCU anymore. Now I just try to focus on ARM Cortex-M3 based RTL8710!

Similar projects worth following
close
WiFi modules, such as well-known ESP8266 has a built-in processor and they can be programmed by proper binary upload scheme. RTL8710 by Realtek, which is relatively new modules and known its ARM processor built-in and its feature is quite attractive from viewpoint of architecture continuity with other Arduino relevant. However, at this moment, good summary regarding RTL8710 programming is not appeared yet. Just a few days ago, I found one github project release by pvvx, which enables RTL8710 programming through Arduino IDE by Jlink DB. Indeed I did a parallel trying to binary upload CMSIS-DAP, which firmware is released by Realtek and now these are successfully combined to realise easy programming environment by Arduino IDE!!

RTL8710 can be programmed by GCC or some commercial compiler as summarised by realtek. As same, binary upload can be done by two ways, SWD or JTAG.

Before jumping into making something by myself, I bought RTL-Ameba board based on RTL8195 in order to learn how it works. This board has on-board CMSIS-DAP and binary upload is done by SWD. Good point of this board is, already fully (mostly) Arduino IDE compatible and we can easily program including binary uploading. But in my viewpoint, DAP part is useless once program is completed. So I've decided to make DAP part only and through it tried to program processor inside RTL-00 and PADI IoT (RTL8710).

I have two modules both based on RTL8710AF and seems both are hardware compatible (same?). For these module programming I made a minimum CMSIS-DAP which runs Realtek released firmware.

I was very happy if this board with RTL8710 modules can work in Arduino IDE but "Ameba Writer" surely upload binary but modules does not work. This is due to difference between RTL8710 and RTL8195 and I guess we need to change some compiler option. But actually yesterday I found a wonderful project regarding RTL8710 programming environment, Rtlduino!

This is very close to what I want to do, but it assumes Jlink (JTAG) programming. Changing binary uploading way is not difficult and finally I got "RTL8710 programming environment by Arduino IDE with CMSIS-DAP !"

  • Small fix for latest pvvx environment

    kodera2t03/20/2017 at 11:52 0 comments

    I got a report on youtube movie, which the latest pvvx environment does not work with my previous explanation. This is the way to fix.

    open open board.txt in development/rtl87xx/boards.txt

    and

    modify

    (original) rtlmodule_rtl8710.build.ldscript=linker_scripts/gcc/rtl8710-symbol-v03-img2_arduino_arduino.ld

    to

    (fix) rtlmodule_rtl8710.build.ldscript=linker_scripts/gcc/rtl8710-symbol-v04-img2_arduino_arduino.ld

    This is enough to work it again!

  • Single module web radio

    kodera2t01/16/2017 at 11:08 0 comments

    I am very impressed to see the web radio by single RTL8710 without any decoder. Indeed the source code is a part of RTLduino distribution , which is written by Russian programmer and currently sound does not come fluently but really nice to see the potential of RTL8710!

  • Solar-powered sensor board based on RTL8710 done!

    kodera2t01/16/2017 at 00:26 0 comments

    When we think about sensor terminal working outside, battery replacement is a headache problem if we put it on the mountain top or roof top. Here I made a "self-powered board" contains RTL8710 module, BME280 I2C sensor, OLED display and LiPo charging circuit powered by Solar cell!!

    So we don't need to care power source anymore and just put on somewhere as we wish and continue to work till LiPo's lifetime!!

    Power consumption (current flow) of this board is,,,

    OLED activation, not web server accessed: 30mA

    OLED activated, web server accessed: 70mA ! (very short time, like spike)

    OLED turns-off, not web server accessed: 17mA (continuous)

    OED turns-off, web-accessed: 60mA (during access, very short time, spike current)

    So for the 24/7 operation, considering night time length, just 300 mAh battery is well enough if not so frequent access (for example, just one time every hours). Indeed RTL8710 has a deep-sleep function and if we utilise it, we may be able to work with just 100mAh battery...

    Actual operation can be found in the following movie. Have fun!

  • NOW RTL8710 board is eventually officially supported by Realtek in Arduino IDE

    kodera2t01/14/2017 at 13:15 1 comment

    Finally RTL8710 board (Ameba 8710 and my Ameba writer) is supported by Realtek!

    Just adding in preference of Arduino IDE

    https://github.com/Ameba8195/Arduino/raw/master/release/package_realtek.com_ameba_index.json
    and we will see in board manager and install version 2.0.0 support and..

    YES YES now the wonderful time is starting (officially)!!

    We can see the "Ameba RTL8710" in the board selector and

    All of my released RTL8710 board works with this new support!!


  • Quick demo of USD/JPY currency display

    kodera2t01/08/2017 at 02:47 0 comments

    During the preparation for tindie store, I quickly write a demo program, showing JPY/USD currency. This program is greatly based on the source released at this website (I would thank the author), which is written for ESP8266. The source for ESP8266 is almost compatible with RTL8710 and we can enjoy RTL8710, as same as ESP8266. My Arduino sketch is uploaded to github. and this all-in-one board is on sale at tindie!

  • All-in-one RTL8710 prototyping board is done!

    kodera2t01/07/2017 at 03:22 0 comments

    Now I made an all-in-one RTL8710 prototyping board.

    RTL8710 has a 17-digital IO and all of them are accessible through Arduino IDE, after setting environment. Also it has I2C and SPI interface and together with WiFi capability, we can easily make "IoT thing".!! I quickly check "LED blink" and "OLED drive" and "WiFi access" by some demo program, which actual operation can be found in the following movie... Have fun!

  • My progress on RTL8710 module usage...

    kodera2t01/03/2017 at 13:11 0 comments

    By using my "Ameba writer",

    https://www.tindie.com/products/microwavemont/ameba-rtl8710-programmer-for-arduino-ide/

    we can program RTL8710 through very popular Arduino IDE. Now I made a quick demo of "clock", which data is taken from ntp server.

    This type of demo is well-established on ESP8266 but we can do on RTL8710 as same!

    The working code is uploaded to

    https://github.com/kodera2t/Ameba_RTL8710_sample/blob/master/Ameba_ntp_clock.ino

    Have fun!

  • OLED driving with WiFi is done!

    kodera2t12/29/2016 at 11:26 0 comments

    Now by using my tiny RTL8710 programmer, I succeed to drive OLED by RTL8710. Indeed this operation is purely written by Arduino code and we don't need any additional complex knowledge. Source code is uploaded ti github.

    Actual operation can be found in the following movie... Have fun!

  • How to connect Ameba writer with RTL8710 module?

    kodera2t12/29/2016 at 02:29 3 comments

    Here I quickly made a pinout diagram of Ameba Writer and connection to RTL8710 WiFi module for programming.

    For operation check, one LED is connected between GA4 (D4) and ground. Selecting RTL00 in the board selection is all what we need to set up. (after finishing the setup of my previous log).

    So now Let's make it blink!

    Now LED is at D4, and really the same thing as general Arduino. Just pushing upload button will upload blink program...

  • How to arrange Arduino IDE with my Amebe writer

    kodera2t12/29/2016 at 01:07 0 comments

    This information below is obsolete, due to official support of RTL8710 by Realtek is done. Please see my update (it gets quite easy!!)

    Here I would like to introduce how to arrange programming environment. Indeed most part is contributed by lvvx, RtlDuino project and I just change the way from JTAG to SWD.

    Step 1 : Add Ameba (Realtek) support in your Arduino IDE by board manager.

    Putting

    https://github.com/Ameba8195/Arduino/raw/master/release/package_realtek.com_ameba_index.json

    Additional board manager is enough to see

    Detailed procedure is explained in Realtek's homepage.

    Step 2: Add RTL8710 support in your Arduino IDE by copying required items.

    This process is not automatic, firstly we need to download files from lvvx, RtlDuino project.

    The downloaded item should be put inside Arduino IDE installed directory as above. Just this procedure you will see new addition of board support as

    BUT this is not my final goal since This support is assuming Jlink binary upload.

    We should modify these two files boards.txt and platform.txt for DAP uploading. The below one showing the modified boards.txt. Reading clock frequency of 166.66MHz is something weird (because real one in RTL8710 is 83.33MHz), and I changed once but it seems it does not matter. Just commented out Jlink related lines and add DAP information in boards.txt and...
    menu.device_variant=Variant
    menu.upload_method=Upload method
    
    
    rtlmodule_rtl8710.name=RTL00 (RTL8710)
    rtlmodule_rtl8710.vid.0=0x2341
    rtlmodule_rtl8710.pid.0=0x003d
    rtlmodule_rtl8710.upload.tool=ameba_tools
    rtlmodule_rtl8710.upload.protocol=mbed_dap
    #rtlmodule_rtl8710.upload.protocol=jlink
    rtlmodule_rtl8710.upload.maximum_size=372736
    rtlmodule_rtl8710.upload.use_1200bps_touch=false
    rtlmodule_rtl8710.upload.wait_for_upload_port=false
    rtlmodule_rtl8710.upload.native_usb=false
    rtlmodule_rtl8710.build.mcu=cortex-m3
    rtlmodule_rtl8710.build.f_cpu=166666666L
    rtlmodule_rtl8710.build.usb_product="Module RTL8710"
    rtlmodule_rtl8710.build.board=rtlmodule
    rtlmodule_rtl8710.build.core=arduino
    rtlmodule_rtl8710.build.extra_flags=-mthumb -DBOARD_RTL8710
    rtlmodule_rtl8710.build.ldscript=linker_scripts/gcc/rtl8710-symbol-v03-img2_arduino_arduino.ld
    rtlmodule_rtl8710.build.variant=rtl8710
    
    #rtlmodule_rtl8710.menu.upload_method.jlinkram=JLink RAM
    #rtlmodule_rtl8710.menu.upload_method.jlinkram.upload.protocol=jlink
    #rtlmodule_rtl8710.menu.upload_method.jlinkram.upload.tool=jlink
    
    #rtlmodule_rtl8710.menu.upload_method.jlgdbimg=JLink IMG
    #rtlmodule_rtl8710.menu.upload_method.jlgdbimg.upload.protocol=jlgdbimg
    #rtlmodule_rtl8710.menu.upload_method.jlgdbimg.upload.tool=jlgdbimg
    
    
    #rtlmodule_rtl8710.menu.upload_method.jlgdbota=JLink OTA
    #rtlmodule_rtl8710.menu.upload_method.jlgdbota.upload.protocol=jlgdbota
    #rtlmodule_rtl8710.menu.upload_method.jlgdbota.upload.tool=jlgdbota
    
    #rtlmodule_rtl8710.menu.upload_method.networkota=Network OTA
    #rtlmodule_rtl8710.menu.upload_method.networkota.upload.protocol=network
    #rtlmodule_rtl8710.menu.upload_method.networkota.upload.tool=network

    In the "platform.txt", I added several lines for DAP support

    # rtlmodule Uploader tools
    # -------------------
    tools.ameba_tools.upload.params.verbose=
    tools.ameba_tools.upload.params.quiet=
    tools.ameba_tools.upload.pattern="{runtime.tools.ameba_tools.path}/upload_dap.sh" {upload.verbose}
    tools.ameba_tools.upload.pattern.windows="{runtime.tools.ameba_tools.path}/upload_dap.exe" "{runtime.tools.ameba_tools.path}\ram_all.bin" {upload.verbose}
    tools.ameba_tools.upload.pattern.macosx="{runtime.tools.ameba_tools.path}/upload_dap_mac" "{runtime.tools.ameba_tools.path}/ram_all.bin" {upload.verbose}
    tools.ameba_tools.upload.network_pattern="{runtime.tools.ameba_tools.path}/upload_ota.exe" -i "{serial.port}" -p "{network.port}" -f "{runtime.tools.ameba_tools.path}\ota.bin"
    tools.ameba_tools.upload.network_pattern.windows="{runtime.tools.ameba_tools.path}/upload_ota.exe" -i "{serial.port}" -p "{network.port}" -f "{runtime.tools.ameba_tools.path}\ota.bin"
    tools.ameba_tools.upload.network_pattern.macosx=...
    Read more »

View all 10 project logs

Enjoy this project?

Share

Discussions

kodera2t wrote 08/15/2017 at 08:15 point

rtl8711 is a variant of rtl8195 and I guess, small midification of rtl8195 should work...

  Are you sure? yes | no

Johny Radio wrote 08/15/2017 at 07:08 point

Great stuff! Do you know if the RTL8711 can use these techniques? thx!

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates