Code Monkey home page Code Monkey logo

lua-rtos-esp32's Introduction

What's Lua RTOS?

Lua RTOS is a real-time operating system designed to run on embedded systems, with minimal requirements of FLASH and RAM memory. Currently Lua RTOS is available for ESP32, ESP8266 and PIC32MZ platforms, and can be easilly ported to other 32-bit platforms.

Lua RTOS has a 3-layer design:

  1. In the top layer there is a Lua 5.3.4 interpreter which offers to the programmer all the resources provided by the Lua programming language, plus special modules for access the hardware (PIO, ADC, I2C, RTC, etc …), and middleware services provided by Lua RTOS (Lua Threads, LoRa WAN, MQTT, …).
  2. In the middle layer there is a Real-Time micro-kernel, powered by FreeRTOS. This is the responsible for that things happen in the expected time.
  3. In the bottom layer there is a hardware abstraction layer, which talk directly with the platform hardware.

For porting Lua RTOS to other platforms is only necessary to write the code for the bottom layer, because the top and the middle layer are the same for all platforms.

How is it programmed?

The Lua RTOS compatible boards can be programmed in two ways: using the Lua programming language directly, or using a block-based programming language that translates blocks to Lua. No matter if you use Lua or blocks, both forms of programming are made from the same programming environment. The programmer can decide, for example, to made a fast prototype using blocks, then change to Lua, and finally back to blocks.

In our wiki you have more information about this.

How to get Lua RTOS firmware?

Prerequisites

  1. Please note you need probably to download and install drivers for your board's USB-TO-SERIAL adapter for Windows and Mac OSX versions. The GNU/Linux version usually doesn't need any drivers. This drivers are required for connect to your board through a serial port connection.

    Board
    WHITECAT ESP32 N1
    ESP32 CORE
    ESP32 THING

Method 1: get a precompiled firmware

  1. Install esptool (the ESP32 flasher utility), following this instructions.

  2. Get the precompiled binaries for your board:

    Board
    WHITECAT ESP32 N1
    ESP32 CORE
    ESP32 THING
    GENERIC
  3. Uncompress to your favorite folder:

    unzip LuaRTOS.10.WHITECAT-ESP32-N1.1488209955.zip
  4. Go to the uncompressed folder, and flash:

    cd LuaRTOS.10.WHITECAT-ESP32-N1.1488209955

    For flash the firmware:

    python <esp-idf path>/components/esptool_py/esptool/esptool.py --chip esp32 --port "<usb path>" --baud 921600
    --before "default_reset" --after "hard_reset" write_flash -z --flash_mode "dio" --flash_freq "40m"
    --flash_size detect 0x1000 bootloader.WHITECAT-ESP32-N1.bin 0x10000
    lua_rtos.WHITECAT-ESP32-N1.bin 0x8000 partitions_singleapp.WHITECAT-ESP32-N1.bin

    For flash the filesystem:

    python <esp-idf path>/components/esptool_py/esptool/esptool.py --chip esp32 --port "<usb path>" --baud 921600
    --before "default_reset" --after "hard_reset" write_flash -z --flash_mode "dio" --flash_freq "40m"
    --flash_size detect 0x180000 spiffs_image.WHITECAT-ESP32-N1.bin

    Change "esp-idf path" and "usb path" according to your needs.

Method 2: build by yourself

  1. Install ESP32 toolchain for your desktop platform. Please, follow the instructions provided by ESPRESSIF:

  2. Clone esp-idf repository from ESPRESSIF:

    git clone --recursive https://github.com/espressif/esp-idf.git
  3. Clone Lua RTOS repository:

    git clone --recursive https://github.com/whitecatboard/Lua-RTOS-ESP32
  4. Setup the build environment:

    Go to Lua-RTOS-ESP32 folder:

    cd Lua-RTOS-ESP32

    Edit the env file and change HOST_PLATFORM, PATH, IDF_PATH, LIBRARY_PATH, PKG_CONFIG_PATH, CPATH for fit to your installation locations.

    Now do:

    source ./env
  5. Set the default configuration for your board:

    Board Run this command
    WHITECAT ESP32 N1 make SDKCONFIG_DEFAULTS=WHITECAT-ESP32-N1 defconfig
    ESP32 CORE make SDKCONFIG_DEFAULTS=ESP32-CORE-BOARD defconfig
    ESP32 THING make SDKCONFIG_DEFAULTS=ESP32-THING defconfig
    GENERIC make SDKCONFIG_DEFAULTS=GENERIC defconfig
  6. Change the default configuration:

    You can change the default configuration doing:

    make menuconfig

    Remember to check the device name for your board's USB-TO-SERIAL adapter under the "Serial flasher config / Default serial port" category.

  7. Compile:

    Build Lua RTOS, and flash it to your ESP32 board:

    make flash

    Flash the spiffs file system image to your ESP32 board:

    make flashfs

Connect to the console

You can connect to the Lua RTOS console using your favorite terminal emulator program, such as picocom, minicom, hyperterminal, putty, etc ... The connection parameters are:

  • speed: 115200 bauds
  • data bits: 8
  • stop bits: 1
  • parity: none
  • terminal emulation: VT100

For example, if you use picocom:

picocom --baud 115200 /dev/tty.SLAB_USBtoUART
   /\       /\
  /  \_____/  \
/_____________\
W H I T E C A T

Lua RTOS beta 0.1 build 1479953238 Copyright (C) 2015 - 2017 whitecatboard.org
cpu ESP32 at 240 Mhz
spiffs0 start address at 0x180000, size 512 Kb
spiffs0 mounted
spi2 at pins sdi=012/sdo=013/sck=014/cs=015
sd0 is at spi2, pin cs=015
sd0 type II, size 1943552 kbytes, speed 15 Mhz
sd0a partition type 0b, sector 227, size 1943438 kbytes
fat init file system
fat0 mounted
redirecting console messages to file system ...

Lua RTOS beta 0.1 powered by Lua 5.3.4


Executing /system.lua ...
Executing /autorun.lua ...

/ > 

Lua RTOS is free for you, but funds are required for make it possible. Feel free to donate as little or as much as you wish. Every donation is very much appreciated.

paypal

lua-rtos-esp32's People

Contributors

jolivepetrus avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.