Skip to main content

ESP8266_RTOS_SDK and Debian

If you search the Internet for ESP8266 you will get Arduino related results. It seems that the world see ESP8266 as a part of Arduino. This may change in the future.

I prefer not to use Arduino for ESP8266 development because that approach was technically a work-a-round. Arduino IDE was designed for its own devices. I don't want to use an IDE which generally comes with unnecessary dependencies and constraints. I want to have the full control of the device that I'm working on. That's why I started my earlier ESP8266 developments with esp-open-sdk. I'm okay with the command line approach and a simple text editor.

Now I want to utilize the real time operating system and explore its potentials. ESP8266 is powerful enough for RTOS. I searched the Internet for ESP8266 and RTOS, and I found many paradigms. ESP8266 is in a constant development. People were trying all sorts of approaches because in the beginning they were left alone. And now Espressif seems to take over all the tested approaches and to standardize them.

Espressif is supporting FreeRTOS. I think it is a good deal since FreeRTOS is a matured real time operating system with many organizational contributors, and it is a part of Amazon Web Services. FreeRTOS applications can be upgraded to SAFERTOS the Safety Critical Real-Time OS. It feels like a serious deal.

ESP8266_RTOS_SDK is based on FreeRTOS. I found many outdated tutorials on the Internet. The SDK is evolving. There is a note on its roadmap:

ESP8266_RTOS_SDK's framework is quite outdated and different from the current esp-idf and we are planning to migrate ESP8266_RTOS_SDK to esp-idf eventually after v2.0.0.

The copy of the ESP8266_RTOS_SDK master branch that I'm working on right now is already implementing esp-idf which stands for Espressif IoT Development Framework. It scaffolds makefile and centralizes configurations with a menu driven tool. And it also standardizes the flashing and monitoring tools. Your makefile becomes simpler. However, the esp-idf will force you to learn the details of the device and its development framework. That is a good thing.

ESP8266_RTOS_SDK relies on Xtensa toolchain. Espressif ESP8266 is based on the Tensilica Xtensa L106 32-bit RISC microprocessor core. Tensilica is a subsidiary of a Nasdaq listed company Cadence Design Systems. Knowing the companies behind ESP8266 give me a better confidence in it. A bonus: ESP8266EX was crowdfunded.

The Debian side is simplified since Espressif already made Linux the priority development platform. You only need to export the IDF_PATH and the path to the Xtensa toolchain. You only need to do it once by appending the instructions into the ~/.profile and ~/.bashrc files. See the notes below.

Notes

  1. ~/esp is the home for Espressif toolchains. The ESP8266_RTOS_SDK and the Xtensa toolchain are kept there.
  2. Export the IDF_PATH. Append this line 'export IDF_PATH="$HOME/esp/ESP8266_RTOS_SDK"' into ~/.profile and ~/.bashrc files.
  3. Export the Xtensa toolchain path. Append this line 'export PATH="$HOME/esp/xtensa-lx106-elf/bin:$PATH"' into ~/.profile and ~/.bashrc files.
  4. Execute the followings once to immediately export the paths:
    • $ source ~/.profile
    • $ source ~/.bashrc 

Comments

Popular posts from this blog

Setting Up PyScripter for Quantum GIS

PyScripter is a general purpose Python Integrated Development Environment (IDE). Quantum GIS (QGIS) is a desktop GIS application that can be extended with Python plugins. Both are open source softwares. We intend to use PyScripter as an IDE to build QGIS Python plugin. We are using PyScripter 2.4.1.0 and QGIS 1.6.0 in Windows. PyScripter does not come with Python. On the other hand, QGIS is built in with Python. Thus, we will setup up PyScripter to use the build in Python in QGIS. We assume both PyScripter and QGIS are already installed. Preparing PyScripter batch file We assume that QGIS is installed in C:\OSGeo4W\ folder and PyScripter is installed in C:\Program Files\PyScripter\ . 1. Copy qgis.bat in C:\OSGeo4W\ bin to pyscripter.bat 2. Edit pyscripter.bat to remove the last line that read something like this start "Quantum GIS" /B "%OSGEO4W_ROOT%"\apps\qgis\bin\qgis.exe %* and replace it with this in one line Start "PyScripter" /B "C:\Progr

MicroSD Card Module with SPI Connection

A MicroSD card can be directly connected to a 3.3v microcontroller without the need of any additional module. However, a cheap module such as shown in the picture above can be handy in terms of wiring and card replacement. Yet, if you get the module from China then you are on your own, you have to figure it out yourself how the module works. The module above needs 5v VCC to operate. The 5v is needed by the 3.3v LM1117 regulator to power the MicroSD card and the 74125 bus buffer (the 14-pin IC in the module above). Hence, the bus buffer is operating at 3.3v. The VCC is connected directly to the input of the regulator and no where else. Thus, the VCC is solely meant for the regulator. The right-side SPI bus (CS, SCK, MOSI & MISO) is connected directly to the 3.3v bus buffer. No line in the SPI bus that is connected to the VCC. Thus, the SPI bus does not follow VCC. The buffer is 5v tolerant so the right-side SPI connection can be driven at either 3.3v or 5v. Hence, the SPI ca

fatal: Couldn't find remote ref master

If you are using Github then  master is now known as main . Whatever you want to do with a master must now be referred to a main . If you search for this error message on the Internet then you will encounter with a lot of old discussions on how to set up your master properly which is probably not what you are looking for. The master  is your problem. Rename it to main . I wrote Git My Way about two years ago. Today I created another Github repository. I got this  "fatal: Couldn't find remote ref master"  error message when I wanted to sync the new repo for the first time with my notebook using the notes I wrote in the blog. All the discussions around the error message I found on the Internet were perplexing. Then I recalled that Github had renamed master to main  due to the master-slave connotation. We always have a master copy of a code, never a slave copy. Now suddenly a word context has been diminished for good. What is going to happen to the existing vast documen