<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to Home</title><link>https://sourceforge.net/p/ecxx/wiki/Home/</link><description>Recent changes to Home</description><atom:link href="https://sourceforge.net/p/ecxx/wiki/Home/feed" rel="self"/><language>en</language><lastBuildDate>Fri, 06 Jan 2023 02:08:35 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/ecxx/wiki/Home/feed" rel="self" type="application/rss+xml"/><item><title>Home modified by Aloysius Indrayanto</title><link>https://sourceforge.net/p/ecxx/wiki/Home/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v86
+++ v87
@@ -110,8 +110,6 @@

 If a client gets stuck on *"configuring interface"* or *"setting network address"* when connecting to an eCxx access point, simply disconnect and reconnect the client \(rebooting the eCxx access point may also help\).

-eCxx supports both the older version \(4.8.2\) and the newer versions \(10.x.x\) of Xtensa LX106 GCC. However, using the older version of GCC also means using the older versions of the BearSSL and lwIP libraries; it might mean more unfixed bugs.
-
 Please refer to the [README](https://sourceforge.net/p/ecxx/code/HEAD/tree/trunk/docs/README) file for details on program memory macros and functions.

 &lt;hr/&gt;
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Aloysius Indrayanto</dc:creator><pubDate>Fri, 06 Jan 2023 02:08:35 -0000</pubDate><guid>https://sourceforge.nete8f5d2592363a91bd45b384b28817027f9e9f8a4</guid></item><item><title>Home modified by Aloysius Indrayanto</title><link>https://sourceforge.net/p/ecxx/wiki/Home/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v85
+++ v86
@@ -89,6 +89,8 @@
     
 

+Please refer to the [README](https://sourceforge.net/p/ecxx/code/HEAD/tree/trunk/docs/README) file for details on program memory macros and functions.
+
 # Supported NodeMCU \(ESP8266\) Boards

 All NodeMCU variants with:
@@ -110,6 +112,8 @@

 eCxx supports both the older version \(4.8.2\) and the newer versions \(10.x.x\) of Xtensa LX106 GCC. However, using the older version of GCC also means using the older versions of the BearSSL and lwIP libraries; it might mean more unfixed bugs.

+Please refer to the [README](https://sourceforge.net/p/ecxx/code/HEAD/tree/trunk/docs/README) file for details on program memory macros and functions.
+
 &lt;hr/&gt;

 ## [Getting Started]
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Aloysius Indrayanto</dc:creator><pubDate>Thu, 23 Jun 2022 04:24:19 -0000</pubDate><guid>https://sourceforge.net8413852faadffbbb37767b68503ee58b122336bf</guid></item><item><title>Home modified by Aloysius Indrayanto</title><link>https://sourceforge.net/p/ecxx/wiki/Home/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v84
+++ v85
@@ -1,235 +1,115 @@
-# Getting Started
+&lt;pre style="font-family: monospace,monospace; font-size: 1em; font-weight: bold;"&gt;+                           * ***
+                         *  ****  *
+                        *  *  ****
+                       *  **   **
+                      *  ***         ***    ***     ***    ***
+              ***    **   **        * ***  **** *  * ***  **** *
+             * ***   **   **           *** *****      *** *****
+            *   ***  **   **            ***  **        ***  **
+           **    *** **   **             ***            ***
+           ********  **   **            * ***          * ***
+           *******    **  **           *   ***        *   ***
+           **          ** *      *    *     ***      *     ***
+           ****    *    ***     *    *       *** *  *       *** *
+            *******      *******    *         ***  *         ***
+             *****         ***
+
+                                A C++ Library for AVR and NodeMCU
+           ~ tailored for micro LED displays and lighting effects ~
+&lt;/pre&gt;

 &lt;hr/&gt;

-AVR and/or NodeMCU build toolkit and SDK are needed to build eCxx. The easiest method is to install an Arduino IDE. For NodeMCU, you will need to install an additional package \(please refer to [Getting Started with NodeMCU ESP8266 on Arduino IDE](https://create.arduino.cc/projecthub/electropeak/getting-started-w-nodemcu-esp8266-on-arduino-ide-28184f) for more details\).
+eCxx's SVN repository and distribution packages consists of Open Source Software library as well as Open Hardware schematic and PCB designs for AVR and NodeMCU.

-To start building eCxx library and its test applications and firmwares, simply edit the *Makefile.config\[.\*\]* files to reflect your build environment. After that, simply type *make* to see the available targets.
+The SVN repository and distribution packages also include some Java-based and Python-based utility applications.

-Please refer to [MAKEFILE_CONFIGURATION_VARIABLES](https://sourceforge.net/p/ecxx/code/HEAD/tree/trunk/docs/MAKEFILE_CONFIGURATION_VARIABLES) for some explanation about configuration variables within the makefiles.
-
-Major Namespace Names
----
-
-* `eCxx` - the primary namespace of eCxx
-* `eCxx::Ext` - classes and functions that use dynamic memory allocation as well as other auxiliary features \(such as color constants, etc.\)
-
-* `eCxx::placeholders` - placeholders for `eCxx::bind&amp;lt;&amp;gt;()`
-* `eCxx::argument_selectors` - argument selectors for `eCxx::OutputFormatter`'s format dispatchers \(specifiers\)
-
-* `eCxx::TZ` - timezone name constants
-* `eCxx::AVR` - platform specific namespace for AVR and AVRX platforms
-* `eCxx::NodeMCU` - platform specific namespace for NodeMCU platforms
-
-Namespace Names for Literal Operators
----
-
-The literal operators are defined within their own namespaces. Therefore, the C++ using-directives will be needed to bring them to the active scope before using:
-
-~~~c++
-using namespace eCxx::program_string_literals;
-
-using namespace eCxx::string_view_ram_string_literals;
-using namespace eCxx::string_view_program_string_literals;
-
-using namespace eCxx::string_ip_literals;
-using namespace eCxx::string_uuid_literals;
-
-using namespace eCxx::unsigned_string_literals;
-using namespace eCxx::output_formatter_string_literals;
-
-using namespace eCxx::fixed_point_literals;
-using namespace eCxx::decimal_floating_point_literals;
-
-using namespace eCxx::binary_constant_literals;
-using namespace eCxx::hexadecimal_constant_literals;
-~~~
-
-Some of the string literal operators will only be available if the corresponding macros are defined. Please refer to
-[FEATURE_MACROS](https://sourceforge.net/p/ecxx/code/HEAD/tree/trunk/docs/FEATURE_MACROS) for more details.
-
-Troubleshooting Errors Like "make: \*\*\* No rule to make target '&amp;lt;???&amp;gt;.cpp', needed by 'build/&amp;lt;???&amp;gt;.cpp.d'. Stop."
----
-
-Try if executing this command twice fixes the problem:
-
-~~~bash
-make fdepend -k
-~~~
+[[download_button]]

 &lt;hr/&gt;

-Using AVR Device Pack \(AVR DFP\) for Newer AVR MCUs
----
+This library is tested using existing development boards and our customized development boards. The schematic and PCB design of our eCxx development boards are included in the SVN repository and release packages. Some of the eCxx development boards that have been tested are:

-Please download the latest ATmega series device pack from [Microchip Packs Repository](http://packs.download.atmel.com) and extract \(unzip\) it to a base directory named Atmel.ATmega_DFP.x.x.xxx.
++ [ATmega1284P Development Board](https://sourceforge.net/p/ecxx/code/HEAD/tree/trunk/hardware/ATmega1284P_DevBoard_v1.0.2a.png)
++ [NodeMCU Development Board](https://sourceforge.net/p/ecxx/code/HEAD/tree/trunk/hardware/NodeMCU_DevBoard_v1.0.3b.png)

-The base directory should then be placed inside one of this locations:
++ [IO Expander](https://sourceforge.net/p/ecxx/code/HEAD/tree/trunk/hardware/IO_Expander_v1.0.1a.png)

-~~~bash
-/usr
-/usr/share
-/etc
-/usr/local
-/usr/local/share
-/usr/local/etc
-/opt
-/home/&amp;lt;user_name&amp;gt;
-/home/&amp;lt;user_name&amp;gt;/Arduino
-/home/&amp;lt;user_name&amp;gt;/arduino
-/home/&amp;lt;user_name&amp;gt;/.arduino
-/home/&amp;lt;user_name&amp;gt;/.arduino/packages
-~~~
++ [UART LCD Backpack](https://sourceforge.net/p/ecxx/code/HEAD/tree/trunk/hardware/UART_LCD_Backpack_v1.0.0a.png)
++ [JTAG2UPDI and Serial Bridge](https://sourceforge.net/p/ecxx/code/HEAD/tree/trunk/hardware/JTAG2UPDI_Serial_Bridge_Micro_ProMini_v1.0.1.png)

-Troubleshooting Errors Like "/dev/ttyACM0: Device or resource busy"
----
++ [ESP-01 AVR Uploader](https://sourceforge.net/p/ecxx/code/HEAD/tree/trunk/hardware/ESP01_AVR_Uploader_v1.0.3a.png) \(tested to work with [ESP-LINK 3.0.14](https://github.com/jeelabs/esp-link/releases/tag/V3.0.14) and eCxx's own firmware in both 5V and 3.3V modes\)

-Due to eCxx uses free shared USB VID/PID pair for CDC devices \(VID=0x16C0 ; PID=0x05E1\) from  [USB IDs for free](https://github.com/obdev/v-usb/blob/master/usbdrv/USB-IDs-for-free.txt), on Linux machines with ModemManager installed, the device may show up as busy for ~15 seconds while modem manager tries to decide if its a modem. To disable this, you can add a custom UDEV rule:
+*Some features and bug fixes may can only be found in the source code within the SVN repository \(they are not yet included in any released package\).*

-~~~bash
-echo 'ATTRS{idVendor}=="16c0" ATTRS{idProduct}=="05e1", ENV{ID_MM_DEVICE_IGNORE}="1"' &amp;gt;&amp;gt; \
-/etc/udev/rules.d/99-ttyacms.rules
+# Supported AVR MCUs

-udevadm control --reload-rules
-~~~
+
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+&lt;table&gt;&lt;tbody&gt;&lt;tr&gt; &lt;th&gt;Generation                                &lt;/th&gt; &lt;th&gt;MCU Group  &lt;/th&gt; &lt;th colspan="2"&gt;Verified using Real Hardware&lt;/th&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td rowspan="6"&gt;Original                      &lt;/td&gt; &lt;td&gt;ATmega8    &lt;/td&gt; &lt;td&gt;   &lt;/td&gt;                       &lt;td&gt;     &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;                                                     &lt;td&gt;ATmega8A   &lt;/td&gt; &lt;td&gt;Yes&lt;/td&gt;                       &lt;td&gt;★★   &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;                                                     &lt;td&gt;ATmega16   &lt;/td&gt; &lt;td&gt;   &lt;/td&gt;                       &lt;td&gt;     &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;                                                     &lt;td&gt;ATmega32   &lt;/td&gt; &lt;td&gt;   &lt;/td&gt;                       &lt;td&gt;     &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;                                                     &lt;td&gt;ATmega64   &lt;/td&gt; &lt;td&gt;   &lt;/td&gt;                       &lt;td&gt;     &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;                                                     &lt;td&gt;ATmega128  &lt;/td&gt; &lt;td&gt;   &lt;/td&gt;                       &lt;td&gt;     &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td rowspan="4"&gt;Improved (Smaller Package)    &lt;/td&gt; &lt;td&gt;ATmega48P  &lt;/td&gt; &lt;td&gt;   &lt;/td&gt;                       &lt;td&gt;     &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;                                                     &lt;td&gt;ATmega88P  &lt;/td&gt; &lt;td&gt;   &lt;/td&gt;                       &lt;td&gt;     &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;                                                     &lt;td&gt;ATmega168P &lt;/td&gt; &lt;td&gt;   &lt;/td&gt;                       &lt;td&gt;     &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;                                                     &lt;td&gt;ATmega328P &lt;/td&gt; &lt;td&gt;Yes&lt;/td&gt;                       &lt;td&gt;★★★★★&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td rowspan="4"&gt;Improved (Smaller Package)    &lt;/td&gt; &lt;td&gt;ATmega48PB &lt;/td&gt; &lt;td&gt;   &lt;/td&gt;                       &lt;td&gt;     &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;                                                     &lt;td&gt;ATmega88PB &lt;/td&gt; &lt;td&gt;   &lt;/td&gt;                       &lt;td&gt;     &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;                                                     &lt;td&gt;ATmega168PB&lt;/td&gt; &lt;td&gt;   &lt;/td&gt;                       &lt;td&gt;     &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;                                                     &lt;td&gt;ATmega328PB&lt;/td&gt; &lt;td&gt;Yes&lt;/td&gt;                       &lt;td&gt;★    &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td rowspan="4"&gt;Improved (Larger Package)     &lt;/td&gt; &lt;td&gt;ATmega164P &lt;/td&gt; &lt;td&gt;   &lt;/td&gt;                       &lt;td&gt;     &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;                                                     &lt;td&gt;ATmega324P &lt;/td&gt; &lt;td&gt;   &lt;/td&gt;                       &lt;td&gt;     &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;                                                     &lt;td&gt;ATmega644P &lt;/td&gt; &lt;td&gt;   &lt;/td&gt;                       &lt;td&gt;     &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;                                                     &lt;td&gt;ATmega1284P&lt;/td&gt; &lt;td&gt;Yes&lt;/td&gt;                       &lt;td&gt;★★   &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td rowspan="2"&gt;Largest Package               &lt;/td&gt; &lt;td&gt;ATmega1280 &lt;/td&gt; &lt;td&gt;   &lt;/td&gt;                       &lt;td&gt;     &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;                                                     &lt;td&gt;ATmega2560 &lt;/td&gt; &lt;td&gt;Yes&lt;/td&gt;                       &lt;td&gt;★★★★★&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td rowspan="4"&gt;With USB Device Module        &lt;/td&gt; &lt;td&gt;ATmega16U4 &lt;/td&gt; &lt;td&gt;   &lt;/td&gt;                       &lt;td&gt;     &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;                                                     &lt;td&gt;ATmega32U4 &lt;/td&gt; &lt;td&gt;Yes&lt;/td&gt;                       &lt;td&gt;★★★  &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;                                                     &lt;td&gt;AT90USB646 &lt;/td&gt; &lt;td&gt;   &lt;/td&gt;                       &lt;td&gt;     &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;                                                     &lt;td&gt;AT90USB1286&lt;/td&gt; &lt;td&gt;Yes&lt;/td&gt;                       &lt;td&gt;★    &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td rowspan="4"&gt;With Configurable Custom Logic&lt;/td&gt; &lt;td&gt;ATmega808  &lt;/td&gt; &lt;td&gt;   &lt;/td&gt;                       &lt;td&gt;     &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;                                                     &lt;td&gt;ATmega1608 &lt;/td&gt; &lt;td&gt;   &lt;/td&gt;                       &lt;td&gt;     &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;                                                     &lt;td&gt;ATmega3208 &lt;/td&gt; &lt;td&gt;   &lt;/td&gt;                       &lt;td&gt;     &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;                                                     &lt;td&gt;ATmega4808 &lt;/td&gt; &lt;td&gt;Yes&lt;/td&gt;                       &lt;td&gt;★★★  &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td rowspan="4"&gt;With Configurable Custom Logic&lt;/td&gt; &lt;td&gt;ATmega809  &lt;/td&gt; &lt;td&gt;   &lt;/td&gt;                       &lt;td&gt;     &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;                                                     &lt;td&gt;ATmega1609 &lt;/td&gt; &lt;td&gt;   &lt;/td&gt;                       &lt;td&gt;     &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;                                                     &lt;td&gt;ATmega3209 &lt;/td&gt; &lt;td&gt;   &lt;/td&gt;                       &lt;td&gt;     &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;                                                     &lt;td&gt;ATmega4809 &lt;/td&gt; &lt;td&gt;Yes&lt;/td&gt;                       &lt;td&gt;★    &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;&lt;td colspan="4"&gt;
+        Note:
+        &lt;br/&gt;&lt;br/&gt;
+        &lt;ul&gt;
+            &lt;li&gt;The number of black stars (★) indicates how extensive eCxx has been tested on the respective AVR MCUs.&lt;/li&gt;
+            &lt;li&gt;Some of the AVR MCUs may have flash memories that are too small to support some of the test applications.&lt;/li&gt;
+        &lt;/ul&gt;
+    &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;

-Troubleshooting Baudrate Mismatch between the Target MCU and the Arduino Micro in the JTAG2UPDI_Serial_Bridge_Micro_ProMini Board
----
+# Supported NodeMCU \(ESP8266\) Boards

-Upon power-on \(plugged to a host PC's USB port\), the hardware UART of the Arduino Micro will be set to the default baudrate of 57600 bps.
+All NodeMCU variants with:

-If the serial device has been opened using a different baudrate by the host PC, and then the board is unplugged and plugged back to the host PC, the OS may not know that the baudrate has been reset to 57600 bps. In this case, the serial console may connect with a mismatched baudrate. To fix this, simply start the serial console with a different baudrate, close it, and start it again using the intended baudrate.
++ ESP8266 \(ESP-12E Module\)
++ CPU frequency 80/160 MHz
++ Flash size 4 MB
+
+All ESP-01 variants with:
+
++ CPU frequency 80 MHz
++ Flash size 1 MB
+
+In the early days of ESP8266 adoption by the community, the development boards were marketed under the name NodeMCU; therefore, the term NodeMCU began to be associated more with the hardware than the firmware. Also, spelling out ESP8266 is a mouthful while spelling out NodeMCU is more comfortable; hence, eCxx prefers the term NodeMCU over ESP8266.
+
+Please note that eCxx will not support WiFi Enterprise because its main design paradigm is to act as a simple WiFi access point from where user-application features can be configured \(in addition, using WiFi Enterprise will also require more resources\).
+
+If a client gets stuck on *"configuring interface"* or *"setting network address"* when connecting to an eCxx access point, simply disconnect and reconnect the client \(rebooting the eCxx access point may also help\).
+
+eCxx supports both the older version \(4.8.2\) and the newer versions \(10.x.x\) of Xtensa LX106 GCC. However, using the older version of GCC also means using the older versions of the BearSSL and lwIP libraries; it might mean more unfixed bugs.

 &lt;hr/&gt;

-ESP8266 GPIO Behavior at Boot
----
-
-When ESP8266 is booting, some of its GPIOs will output pulses. It may even fail to boot if some of the GPIOs are pulled low or high during the booting phase. For more information, please refer to:
-
-+ [ESP8266 GPIO Behaviour at Boot](https://rabbithole.wwwdotorg.org/2017/03/28/esp8266-gpio.html)
-+ [ESP8266 Pinout Reference](https://randomnerdtutorials.com/esp8266-pinout-reference-gpios)
-
-This behavior may cause problems to and from the attached peripherals. This is why eCxx's NodeMCU development board has 74LVC541 buffers for those GPIOs. The buffers must be activated manually from within the user code \(as shown in some of the test applications\).
-
-Because the buffers' outputs will be in high impedance when they are inactive, noise may affect the attached peripherals. This problem can be solved by adding pull-up or pull-down resistors for those outputs. However, the eCxx's NodeMCU development board does not have this resistors onboard because it cannot possibly know if the attached peripherals will need to be pulled high or low during the booting phase.
-
-Using Custom Xtensa LX106 GCC
----
-
-Please download the GCC package matching your host PC's architecture from [ESP8266 Quick Toolchain](https://github.com/earlephilhower/esp-quick-toolchain/releases).
-
-Extract the package and put its main directory to one of this locations:
-
-~~~bash
-/opt
-/usr/local
-/usr/share
-~~~
-
-If using custom Xtensa LX106 GCC with newlib 4.0.0, please set the **USE\_NEWLIB** variable in the file **Makefile.config.nodemcu** \(or **Makefile.shadow.config** to **auto** or **1**\); otherwise, it will fail to build.
-
-Please note that newlib 4.0.0 is binary incompatible with the previous releases because of time_t size change. Therefore, do not mix code compiled using the new library with code compiled using the previous releases.
-
-Troubleshooting Errors Like "/lib64/libstdc++.so.6: version 'GLIBCXX\_3.4.21' not found" when Executing "mklittlefs"
----
-
-The "mklittlefs" utility requires at least GLIBCXX version 3.4.21 which is included with GCC version
-5.1.0 and later.
-
-In case your system has multiple GCC installations, setting the LD_LIBRARY_PATH environment variable
-would solve the problem; for example:
-
-~~~bash
-export LD_LIBRARY_PATH=/opt/gcc-5.3.0/lib64:$LD_LIBRARY_PATH
-export LD_LIBRARY_PATH=/opt/gcc-7.5.0/lib64:$LD_LIBRARY_PATH
-~~~
-
-In case of 32-bit system, replace "lib64" with "lib".
-
-Espressif AT Firmware for WiFi Modules
----
-
-The original firmware of ESP-01 \(or other compatible modules\) with 1 MB of flash can backed up using this command \(please adjust the parameter for ESP8266 module with different flash size\):
-
-~~~bash
-esptool.py --port /dev/ttyUSB0 --baud 460800 read_flash 0x000000 0x100000 orig_fw.bin
-~~~
-
-The firmware can later be restored using this command \(please adjust the parameter for ESP8266 module with different flash size\):
-
-~~~bash
-esptool.py --port /dev/ttyUSB0 --baud 460800 write_flash -fs 1MB -ff 40m 0x000000 orig_fw.bin
-~~~
-
-The latest Non-OS firmware \(version 1.7.4, at the time this document was written\) for ESP-01 \(or other compatible modules\) with 1 MB of flash can be downloaded from:
-
-+ [AT | Espressif Systems](https://www.espressif.com/en/support/download/at?keys=&amp;amp;field_type_tid[]=799)
-+ [ESP8266_NonOS_AT_Bin_V1.7.4.zip](https://www.espressif.com/sites/default/files/ap/ESP8266_NonOS_AT_Bin_V1.7.4.zip)
-
-The Non-OS firmware can then be uploaded using this command:
-
-~~~bash
-esptool.py --port /dev/ttyUSB0 --baud 460800 write_flash -fs 1MB -ff 40m \
-    0x000000 bin/boot_v1.7.bin                   \
-    0x001000 bin/at/512+512/user1.1024.new.2.bin \
-    0x07E000 bin/blank.bin                       \
-    0x081000 bin/at/512+512/user2.1024.new.2.bin \
-    0x0FB000 bin/blank.bin                       \
-    0x0FC000 bin/esp_init_data_default_v08.bin   \
-    0x0FE000 bin/blank.bin
-~~~
-
-The latest RTOS firmware \(version 2.2.0, at the time this document was written\) for ESP-01 \(or other compatible modules\) with 1 MB of flash can be downloaded from:
-
-+ [WiFiEspAT](https://github.com/jandrassy/WiFiEspAT)
-+ [ESP8266-1MB-tx1rx3-AT_V2.2.zip](https://github.com/jandrassy/UnoWiFiDevEdSerial1/wiki/files/ESP8266-1MB-tx1rx3-AT_V2.2.zip)
-
-The RTOS firmware can then be uploaded using this command:
-
-~~~bash
-esptool.py --port /dev/ttyUSB0 --baud 460800 write_flash -fs 1MB -ff 40m \
-    0x000000 bootloader/bootloader.bin                           \
-    0x008000 partition_table/partition-table.bin                 \
-    0x009000 ota_data_initial.bin                                \
-    0x020000 esp-at.bin                                          \
-    0x018000 at_customize.bin                                    \
-    0x019000 customized_partitions/factory_param_ESP8266_1MB.bin \
-    0x01A000 customized_partitions/client_cert.bin               \
-    0x01B000 customized_partitions/client_key.bin                \
-    0x01C000 customized_partitions/client_ca.bin                 \
-    0x01D000 customized_partitions/mqtt_cert.bin                 \
-    0x01E000 customized_partitions/mqtt_key.bin                  \
-    0x01F000 customized_partitions/mqtt_ca.bin
-~~~
-
-On the other hand, the latest RTOS firmware \(version 2.2.0, at the time this document was written\) for ESP8266 \(or other compatible modules\) with 2 MB of flash can be downloaded from:
-
-+ [ESP8266-AT Release v2.2.0.0](https://github.com/espressif/esp-at/releases/tag/v2.2.0.0_esp8266)
-+ [ESP8266-IDF-AT_V2.2.0.0.zip](https://github.com/espressif/esp-at/files/6677984/ESP8266-IDF-AT_V2.2.0.0.zip)
-+ [AT2_esp8266_factory_param_tx1rx3.bin](https://github.com/jandrassy/WiFiEspAT/raw/master/extras/AT2_esp8266_factory_param_tx1rx3.bin)
-
-
-The RTOS firmware can then be uploaded using this command:
-
-~~~bash
-esptool.py --port /dev/ttyUSB0 --baud 460800 write_flash -fs 2MB -ff 40m \
-    0x000000 bootloader/bootloader.bin                                   \
-    0x008000 partition_table/partition-table.bin                         \
-    0x009000 ota_data_initial.bin                                        \
-    0x010000 esp-at.bin                                                  \
-    0x0F0000 at_customize.bin                                            \
-    0x0F1000 customized_partitions/AT2_esp8266_factory_param_tx1rx3.bin  \
-    0x0F8000 customized_partitions/client_cert.bin                       \
-    0x0FA000 customized_partitions/client_key.bin                        \
-    0x0FC000 customized_partitions/client_ca.bin                         \
-    0x104000 customized_partitions/mqtt_cert.bin                         \
-    0x106000 customized_partitions/mqtt_key.bin                          \
-    0x108000 customized_partitions/mqtt_ca.bin
-~~~
-
-After uploading the default UART baudrate should have been set to 115200 bps.
-
-&lt;hr/&gt;
-
-## [Home]
+## [Getting Started]
&amp;lt;/user_name&amp;gt;&amp;lt;/user_name&amp;gt;&amp;lt;/user_name&amp;gt;&amp;lt;/user_name&amp;gt;&amp;lt;/user_name&amp;gt;&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Aloysius Indrayanto</dc:creator><pubDate>Fri, 17 Jun 2022 00:28:31 -0000</pubDate><guid>https://sourceforge.netde9c7dd86dfe9b7dc51ccbd560327931ebd06648</guid></item><item><title>Home modified by Aloysius Indrayanto</title><link>https://sourceforge.net/p/ecxx/wiki/Home/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v83
+++ v84
@@ -1,115 +1,235 @@
-&lt;pre style="font-family: monospace,monospace; font-size: 1em; font-weight: bold;"&gt;-                           * ***
-                         *  ****  *
-                        *  *  ****
-                       *  **   **
-                      *  ***         ***    ***     ***    ***
-              ***    **   **        * ***  **** *  * ***  **** *
-             * ***   **   **           *** *****      *** *****
-            *   ***  **   **            ***  **        ***  **
-           **    *** **   **             ***            ***
-           ********  **   **            * ***          * ***
-           *******    **  **           *   ***        *   ***
-           **          ** *      *    *     ***      *     ***
-           ****    *    ***     *    *       *** *  *       *** *
-            *******      *******    *         ***  *         ***
-             *****         ***
-
-                                A C++ Library for AVR and NodeMCU
-           ~ tailored for micro LED displays and lighting effects ~
-&lt;/pre&gt;
-
-&lt;hr/&gt;
-
-eCxx's SVN repository and distribution packages consists of Open Source Software library as well as Open Hardware schematic and PCB designs for AVR and NodeMCU.
-
-The SVN repository and distribution packages also include some Java-based and Python-based utility applications.
-
-[[download_button]]
-
-&lt;hr/&gt;
-
-This library is tested using existing development boards and our customized development boards. The schematic and PCB design of our eCxx development boards are included in the SVN repository and release packages. Some of the eCxx development boards that have been tested are:
-
-+ [ATmega1284P Development Board](https://sourceforge.net/p/ecxx/code/HEAD/tree/trunk/hardware/ATmega1284P_DevBoard_v1.0.2a.png)
-+ [NodeMCU Development Board](https://sourceforge.net/p/ecxx/code/HEAD/tree/trunk/hardware/NodeMCU_DevBoard_v1.0.3b.png)
-
-+ [IO Expander](https://sourceforge.net/p/ecxx/code/HEAD/tree/trunk/hardware/IO_Expander_v1.0.1a.png)
-
-+ [UART LCD Backpack](https://sourceforge.net/p/ecxx/code/HEAD/tree/trunk/hardware/UART_LCD_Backpack_v1.0.0a.png)
-+ [JTAG2UPDI and Serial Bridge](https://sourceforge.net/p/ecxx/code/HEAD/tree/trunk/hardware/JTAG2UPDI_Serial_Bridge_Micro_ProMini_v1.0.1.png)
-
-+ [ESP-01 AVR Uploader](https://sourceforge.net/p/ecxx/code/HEAD/tree/trunk/hardware/ESP01_AVR_Uploader_v1.0.3a.png) \(tested to work with [ESP-LINK 3.0.14](https://github.com/jeelabs/esp-link/releases/tag/V3.0.14) and eCxx's own firmware in both 5V and 3.3V modes\)
-
-*Some features and bug fixes may can only be found in the source code within the SVN repository \(they are not yet included in any released package\).*
-
-# Supported AVR MCUs
-
-
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-&lt;table&gt;&lt;tbody&gt;&lt;tr&gt; &lt;th&gt;Generation                                &lt;/th&gt; &lt;th&gt;MCU Group  &lt;/th&gt; &lt;th colspan="2"&gt;Verified using Real Hardware&lt;/th&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td rowspan="6"&gt;Original                      &lt;/td&gt; &lt;td&gt;ATmega8    &lt;/td&gt; &lt;td&gt;   &lt;/td&gt;                       &lt;td&gt;     &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;                                                     &lt;td&gt;ATmega8A   &lt;/td&gt; &lt;td&gt;Yes&lt;/td&gt;                       &lt;td&gt;★★   &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;                                                     &lt;td&gt;ATmega16   &lt;/td&gt; &lt;td&gt;   &lt;/td&gt;                       &lt;td&gt;     &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;                                                     &lt;td&gt;ATmega32   &lt;/td&gt; &lt;td&gt;   &lt;/td&gt;                       &lt;td&gt;     &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;                                                     &lt;td&gt;ATmega64   &lt;/td&gt; &lt;td&gt;   &lt;/td&gt;                       &lt;td&gt;     &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;                                                     &lt;td&gt;ATmega128  &lt;/td&gt; &lt;td&gt;   &lt;/td&gt;                       &lt;td&gt;     &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td rowspan="4"&gt;Improved (Smaller Package)    &lt;/td&gt; &lt;td&gt;ATmega48P  &lt;/td&gt; &lt;td&gt;   &lt;/td&gt;                       &lt;td&gt;     &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;                                                     &lt;td&gt;ATmega88P  &lt;/td&gt; &lt;td&gt;   &lt;/td&gt;                       &lt;td&gt;     &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;                                                     &lt;td&gt;ATmega168P &lt;/td&gt; &lt;td&gt;   &lt;/td&gt;                       &lt;td&gt;     &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;                                                     &lt;td&gt;ATmega328P &lt;/td&gt; &lt;td&gt;Yes&lt;/td&gt;                       &lt;td&gt;★★★★★&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td rowspan="4"&gt;Improved (Smaller Package)    &lt;/td&gt; &lt;td&gt;ATmega48PB &lt;/td&gt; &lt;td&gt;   &lt;/td&gt;                       &lt;td&gt;     &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;                                                     &lt;td&gt;ATmega88PB &lt;/td&gt; &lt;td&gt;   &lt;/td&gt;                       &lt;td&gt;     &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;                                                     &lt;td&gt;ATmega168PB&lt;/td&gt; &lt;td&gt;   &lt;/td&gt;                       &lt;td&gt;     &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;                                                     &lt;td&gt;ATmega328PB&lt;/td&gt; &lt;td&gt;Yes&lt;/td&gt;                       &lt;td&gt;★    &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td rowspan="4"&gt;Improved (Larger Package)     &lt;/td&gt; &lt;td&gt;ATmega164P &lt;/td&gt; &lt;td&gt;   &lt;/td&gt;                       &lt;td&gt;     &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;                                                     &lt;td&gt;ATmega324P &lt;/td&gt; &lt;td&gt;   &lt;/td&gt;                       &lt;td&gt;     &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;                                                     &lt;td&gt;ATmega644P &lt;/td&gt; &lt;td&gt;   &lt;/td&gt;                       &lt;td&gt;     &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;                                                     &lt;td&gt;ATmega1284P&lt;/td&gt; &lt;td&gt;Yes&lt;/td&gt;                       &lt;td&gt;★★   &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td rowspan="2"&gt;Largest Package               &lt;/td&gt; &lt;td&gt;ATmega1280 &lt;/td&gt; &lt;td&gt;   &lt;/td&gt;                       &lt;td&gt;     &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;                                                     &lt;td&gt;ATmega2560 &lt;/td&gt; &lt;td&gt;Yes&lt;/td&gt;                       &lt;td&gt;★★★★★&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td rowspan="4"&gt;With USB Device Module        &lt;/td&gt; &lt;td&gt;ATmega16U4 &lt;/td&gt; &lt;td&gt;   &lt;/td&gt;                       &lt;td&gt;     &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;                                                     &lt;td&gt;ATmega32U4 &lt;/td&gt; &lt;td&gt;Yes&lt;/td&gt;                       &lt;td&gt;★★★  &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;                                                     &lt;td&gt;AT90USB646 &lt;/td&gt; &lt;td&gt;   &lt;/td&gt;                       &lt;td&gt;     &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;                                                     &lt;td&gt;AT90USB1286&lt;/td&gt; &lt;td&gt;Yes&lt;/td&gt;                       &lt;td&gt;★    &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td rowspan="4"&gt;With Configurable Custom Logic&lt;/td&gt; &lt;td&gt;ATmega808  &lt;/td&gt; &lt;td&gt;   &lt;/td&gt;                       &lt;td&gt;     &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;                                                     &lt;td&gt;ATmega1608 &lt;/td&gt; &lt;td&gt;   &lt;/td&gt;                       &lt;td&gt;     &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;                                                     &lt;td&gt;ATmega3208 &lt;/td&gt; &lt;td&gt;   &lt;/td&gt;                       &lt;td&gt;     &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;                                                     &lt;td&gt;ATmega4808 &lt;/td&gt; &lt;td&gt;Yes&lt;/td&gt;                       &lt;td&gt;★★★  &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td rowspan="4"&gt;With Configurable Custom Logic&lt;/td&gt; &lt;td&gt;ATmega809  &lt;/td&gt; &lt;td&gt;   &lt;/td&gt;                       &lt;td&gt;     &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;                                                     &lt;td&gt;ATmega1609 &lt;/td&gt; &lt;td&gt;   &lt;/td&gt;                       &lt;td&gt;     &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;                                                     &lt;td&gt;ATmega3209 &lt;/td&gt; &lt;td&gt;   &lt;/td&gt;                       &lt;td&gt;     &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;                                                     &lt;td&gt;ATmega4809 &lt;/td&gt; &lt;td&gt;Yes&lt;/td&gt;                       &lt;td&gt;★    &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;&lt;td colspan="4"&gt;
-        Note:
-        &lt;br/&gt;&lt;br/&gt;
-        &lt;ul&gt;
-            &lt;li&gt;The number of black stars (★) indicates how extensive eCxx has been tested on the respective AVR MCUs.&lt;/li&gt;
-            &lt;li&gt;Some of the AVR MCUs may have flash memories that are too small to support some of the test applications.&lt;/li&gt;
-        &lt;/ul&gt;
-    &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
-
-# Supported NodeMCU \(ESP8266\) Boards
-
-All NodeMCU variants with:
-
-+ ESP8266 \(ESP-12E Module\)
-+ CPU frequency 80/160 MHz
-+ Flash size 4 MB
-
-All ESP-01 variants with:
-
-+ CPU frequency 80 MHz
-+ Flash size 1 MB
-
-In the early days of ESP8266 adoption by the community, the development boards were marketed under the name NodeMCU; therefore, the term NodeMCU began to be associated more with the hardware than the firmware. Also, spelling out ESP8266 is a mouthful while spelling out NodeMCU is more comfortable; hence, eCxx prefers the term NodeMCU over ESP8266.
-
-Please note that eCxx will not support WiFi Enterprise because its main design paradigm is to act as a simple WiFi access point from where user-application features can be configured \(in addition, using WiFi Enterprise will also require more resources\).
-
-If a client gets stuck on *"configuring interface"* or *"setting network address"* when connecting to an eCxx access point, simply disconnect and reconnect the client \(rebooting the eCxx access point may also help\).
-
-eCxx supports both the older version \(4.8.2\) and the newer versions \(10.x.x\) of Xtensa LX106 GCC. However, using the older version of GCC also means using the older versions of the BearSSL and lwIP libraries; it might mean more unfixed bugs.
-
-&lt;hr/&gt;
-
-## [Getting Started]
+# Getting Started
+
+&lt;hr/&gt;
+
+AVR and/or NodeMCU build toolkit and SDK are needed to build eCxx. The easiest method is to install an Arduino IDE. For NodeMCU, you will need to install an additional package \(please refer to [Getting Started with NodeMCU ESP8266 on Arduino IDE](https://create.arduino.cc/projecthub/electropeak/getting-started-w-nodemcu-esp8266-on-arduino-ide-28184f) for more details\).
+
+To start building eCxx library and its test applications and firmwares, simply edit the *Makefile.config\[.\*\]* files to reflect your build environment. After that, simply type *make* to see the available targets.
+
+Please refer to [MAKEFILE_CONFIGURATION_VARIABLES](https://sourceforge.net/p/ecxx/code/HEAD/tree/trunk/docs/MAKEFILE_CONFIGURATION_VARIABLES) for some explanation about configuration variables within the makefiles.
+
+Major Namespace Names
+---
+
+* `eCxx` - the primary namespace of eCxx
+* `eCxx::Ext` - classes and functions that use dynamic memory allocation as well as other auxiliary features \(such as color constants, etc.\)
+
+* `eCxx::placeholders` - placeholders for `eCxx::bind&amp;lt;&amp;gt;()`
+* `eCxx::argument_selectors` - argument selectors for `eCxx::OutputFormatter`'s format dispatchers \(specifiers\)
+
+* `eCxx::TZ` - timezone name constants
+* `eCxx::AVR` - platform specific namespace for AVR and AVRX platforms
+* `eCxx::NodeMCU` - platform specific namespace for NodeMCU platforms
+
+Namespace Names for Literal Operators
+---
+
+The literal operators are defined within their own namespaces. Therefore, the C++ using-directives will be needed to bring them to the active scope before using:
+
+~~~c++
+using namespace eCxx::program_string_literals;
+
+using namespace eCxx::string_view_ram_string_literals;
+using namespace eCxx::string_view_program_string_literals;
+
+using namespace eCxx::string_ip_literals;
+using namespace eCxx::string_uuid_literals;
+
+using namespace eCxx::unsigned_string_literals;
+using namespace eCxx::output_formatter_string_literals;
+
+using namespace eCxx::fixed_point_literals;
+using namespace eCxx::decimal_floating_point_literals;
+
+using namespace eCxx::binary_constant_literals;
+using namespace eCxx::hexadecimal_constant_literals;
+~~~
+
+Some of the string literal operators will only be available if the corresponding macros are defined. Please refer to
+[FEATURE_MACROS](https://sourceforge.net/p/ecxx/code/HEAD/tree/trunk/docs/FEATURE_MACROS) for more details.
+
+Troubleshooting Errors Like "make: \*\*\* No rule to make target '&amp;lt;???&amp;gt;.cpp', needed by 'build/&amp;lt;???&amp;gt;.cpp.d'. Stop."
+---
+
+Try if executing this command twice fixes the problem:
+
+~~~bash
+make fdepend -k
+~~~
+
+&lt;hr/&gt;
+
+Using AVR Device Pack \(AVR DFP\) for Newer AVR MCUs
+---
+
+Please download the latest ATmega series device pack from [Microchip Packs Repository](http://packs.download.atmel.com) and extract \(unzip\) it to a base directory named Atmel.ATmega_DFP.x.x.xxx.
+
+The base directory should then be placed inside one of this locations:
+
+~~~bash
+/usr
+/usr/share
+/etc
+/usr/local
+/usr/local/share
+/usr/local/etc
+/opt
+/home/&amp;lt;user_name&amp;gt;
+/home/&amp;lt;user_name&amp;gt;/Arduino
+/home/&amp;lt;user_name&amp;gt;/arduino
+/home/&amp;lt;user_name&amp;gt;/.arduino
+/home/&amp;lt;user_name&amp;gt;/.arduino/packages
+~~~
+
+Troubleshooting Errors Like "/dev/ttyACM0: Device or resource busy"
+---
+
+Due to eCxx uses free shared USB VID/PID pair for CDC devices \(VID=0x16C0 ; PID=0x05E1\) from  [USB IDs for free](https://github.com/obdev/v-usb/blob/master/usbdrv/USB-IDs-for-free.txt), on Linux machines with ModemManager installed, the device may show up as busy for ~15 seconds while modem manager tries to decide if its a modem. To disable this, you can add a custom UDEV rule:
+
+~~~bash
+echo 'ATTRS{idVendor}=="16c0" ATTRS{idProduct}=="05e1", ENV{ID_MM_DEVICE_IGNORE}="1"' &amp;gt;&amp;gt; \
+/etc/udev/rules.d/99-ttyacms.rules
+
+udevadm control --reload-rules
+~~~
+
+Troubleshooting Baudrate Mismatch between the Target MCU and the Arduino Micro in the JTAG2UPDI_Serial_Bridge_Micro_ProMini Board
+---
+
+Upon power-on \(plugged to a host PC's USB port\), the hardware UART of the Arduino Micro will be set to the default baudrate of 57600 bps.
+
+If the serial device has been opened using a different baudrate by the host PC, and then the board is unplugged and plugged back to the host PC, the OS may not know that the baudrate has been reset to 57600 bps. In this case, the serial console may connect with a mismatched baudrate. To fix this, simply start the serial console with a different baudrate, close it, and start it again using the intended baudrate.
+
+&lt;hr/&gt;
+
+ESP8266 GPIO Behavior at Boot
+---
+
+When ESP8266 is booting, some of its GPIOs will output pulses. It may even fail to boot if some of the GPIOs are pulled low or high during the booting phase. For more information, please refer to:
+
++ [ESP8266 GPIO Behaviour at Boot](https://rabbithole.wwwdotorg.org/2017/03/28/esp8266-gpio.html)
++ [ESP8266 Pinout Reference](https://randomnerdtutorials.com/esp8266-pinout-reference-gpios)
+
+This behavior may cause problems to and from the attached peripherals. This is why eCxx's NodeMCU development board has 74LVC541 buffers for those GPIOs. The buffers must be activated manually from within the user code \(as shown in some of the test applications\).
+
+Because the buffers' outputs will be in high impedance when they are inactive, noise may affect the attached peripherals. This problem can be solved by adding pull-up or pull-down resistors for those outputs. However, the eCxx's NodeMCU development board does not have this resistors onboard because it cannot possibly know if the attached peripherals will need to be pulled high or low during the booting phase.
+
+Using Custom Xtensa LX106 GCC
+---
+
+Please download the GCC package matching your host PC's architecture from [ESP8266 Quick Toolchain](https://github.com/earlephilhower/esp-quick-toolchain/releases).
+
+Extract the package and put its main directory to one of this locations:
+
+~~~bash
+/opt
+/usr/local
+/usr/share
+~~~
+
+If using custom Xtensa LX106 GCC with newlib 4.0.0, please set the **USE\_NEWLIB** variable in the file **Makefile.config.nodemcu** \(or **Makefile.shadow.config** to **auto** or **1**\); otherwise, it will fail to build.
+
+Please note that newlib 4.0.0 is binary incompatible with the previous releases because of time_t size change. Therefore, do not mix code compiled using the new library with code compiled using the previous releases.
+
+Troubleshooting Errors Like "/lib64/libstdc++.so.6: version 'GLIBCXX\_3.4.21' not found" when Executing "mklittlefs"
+---
+
+The "mklittlefs" utility requires at least GLIBCXX version 3.4.21 which is included with GCC version
+5.1.0 and later.
+
+In case your system has multiple GCC installations, setting the LD_LIBRARY_PATH environment variable
+would solve the problem; for example:
+
+~~~bash
+export LD_LIBRARY_PATH=/opt/gcc-5.3.0/lib64:$LD_LIBRARY_PATH
+export LD_LIBRARY_PATH=/opt/gcc-7.5.0/lib64:$LD_LIBRARY_PATH
+~~~
+
+In case of 32-bit system, replace "lib64" with "lib".
+
+Espressif AT Firmware for WiFi Modules
+---
+
+The original firmware of ESP-01 \(or other compatible modules\) with 1 MB of flash can backed up using this command \(please adjust the parameter for ESP8266 module with different flash size\):
+
+~~~bash
+esptool.py --port /dev/ttyUSB0 --baud 460800 read_flash 0x000000 0x100000 orig_fw.bin
+~~~
+
+The firmware can later be restored using this command \(please adjust the parameter for ESP8266 module with different flash size\):
+
+~~~bash
+esptool.py --port /dev/ttyUSB0 --baud 460800 write_flash -fs 1MB -ff 40m 0x000000 orig_fw.bin
+~~~
+
+The latest Non-OS firmware \(version 1.7.4, at the time this document was written\) for ESP-01 \(or other compatible modules\) with 1 MB of flash can be downloaded from:
+
++ [AT | Espressif Systems](https://www.espressif.com/en/support/download/at?keys=&amp;amp;field_type_tid[]=799)
++ [ESP8266_NonOS_AT_Bin_V1.7.4.zip](https://www.espressif.com/sites/default/files/ap/ESP8266_NonOS_AT_Bin_V1.7.4.zip)
+
+The Non-OS firmware can then be uploaded using this command:
+
+~~~bash
+esptool.py --port /dev/ttyUSB0 --baud 460800 write_flash -fs 1MB -ff 40m \
+    0x000000 bin/boot_v1.7.bin                   \
+    0x001000 bin/at/512+512/user1.1024.new.2.bin \
+    0x07E000 bin/blank.bin                       \
+    0x081000 bin/at/512+512/user2.1024.new.2.bin \
+    0x0FB000 bin/blank.bin                       \
+    0x0FC000 bin/esp_init_data_default_v08.bin   \
+    0x0FE000 bin/blank.bin
+~~~
+
+The latest RTOS firmware \(version 2.2.0, at the time this document was written\) for ESP-01 \(or other compatible modules\) with 1 MB of flash can be downloaded from:
+
++ [WiFiEspAT](https://github.com/jandrassy/WiFiEspAT)
++ [ESP8266-1MB-tx1rx3-AT_V2.2.zip](https://github.com/jandrassy/UnoWiFiDevEdSerial1/wiki/files/ESP8266-1MB-tx1rx3-AT_V2.2.zip)
+
+The RTOS firmware can then be uploaded using this command:
+
+~~~bash
+esptool.py --port /dev/ttyUSB0 --baud 460800 write_flash -fs 1MB -ff 40m \
+    0x000000 bootloader/bootloader.bin                           \
+    0x008000 partition_table/partition-table.bin                 \
+    0x009000 ota_data_initial.bin                                \
+    0x020000 esp-at.bin                                          \
+    0x018000 at_customize.bin                                    \
+    0x019000 customized_partitions/factory_param_ESP8266_1MB.bin \
+    0x01A000 customized_partitions/client_cert.bin               \
+    0x01B000 customized_partitions/client_key.bin                \
+    0x01C000 customized_partitions/client_ca.bin                 \
+    0x01D000 customized_partitions/mqtt_cert.bin                 \
+    0x01E000 customized_partitions/mqtt_key.bin                  \
+    0x01F000 customized_partitions/mqtt_ca.bin
+~~~
+
+On the other hand, the latest RTOS firmware \(version 2.2.0, at the time this document was written\) for ESP8266 \(or other compatible modules\) with 2 MB of flash can be downloaded from:
+
++ [ESP8266-AT Release v2.2.0.0](https://github.com/espressif/esp-at/releases/tag/v2.2.0.0_esp8266)
++ [ESP8266-IDF-AT_V2.2.0.0.zip](https://github.com/espressif/esp-at/files/6677984/ESP8266-IDF-AT_V2.2.0.0.zip)
++ [AT2_esp8266_factory_param_tx1rx3.bin](https://github.com/jandrassy/WiFiEspAT/raw/master/extras/AT2_esp8266_factory_param_tx1rx3.bin)
+
+
+The RTOS firmware can then be uploaded using this command:
+
+~~~bash
+esptool.py --port /dev/ttyUSB0 --baud 460800 write_flash -fs 2MB -ff 40m \
+    0x000000 bootloader/bootloader.bin                                   \
+    0x008000 partition_table/partition-table.bin                         \
+    0x009000 ota_data_initial.bin                                        \
+    0x010000 esp-at.bin                                                  \
+    0x0F0000 at_customize.bin                                            \
+    0x0F1000 customized_partitions/AT2_esp8266_factory_param_tx1rx3.bin  \
+    0x0F8000 customized_partitions/client_cert.bin                       \
+    0x0FA000 customized_partitions/client_key.bin                        \
+    0x0FC000 customized_partitions/client_ca.bin                         \
+    0x104000 customized_partitions/mqtt_cert.bin                         \
+    0x106000 customized_partitions/mqtt_key.bin                          \
+    0x108000 customized_partitions/mqtt_ca.bin
+~~~
+
+After uploading the default UART baudrate should have been set to 115200 bps.
+
+&lt;hr/&gt;
+
+## [Home]
&amp;lt;/user_name&amp;gt;&amp;lt;/user_name&amp;gt;&amp;lt;/user_name&amp;gt;&amp;lt;/user_name&amp;gt;&amp;lt;/user_name&amp;gt;&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Aloysius Indrayanto</dc:creator><pubDate>Fri, 17 Jun 2022 00:28:00 -0000</pubDate><guid>https://sourceforge.net065393a0f4cb2ca073eb4f5da1a796e3027c6dc3</guid></item><item><title>Home modified by Aloysius Indrayanto</title><link>https://sourceforge.net/p/ecxx/wiki/Home/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v82
+++ v83
@@ -108,6 +108,8 @@

 If a client gets stuck on *"configuring interface"* or *"setting network address"* when connecting to an eCxx access point, simply disconnect and reconnect the client \(rebooting the eCxx access point may also help\).

+eCxx supports both the older version \(4.8.2\) and the newer versions \(10.x.x\) of Xtensa LX106 GCC. However, using the older version of GCC also means using the older versions of the BearSSL and lwIP libraries; it might mean more unfixed bugs.
+
 &lt;hr/&gt;

 ## [Getting Started]
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Aloysius Indrayanto</dc:creator><pubDate>Wed, 15 Jun 2022 00:53:02 -0000</pubDate><guid>https://sourceforge.netd6c6ab837aa305366ef3a49843fe52e96275dd9b</guid></item><item><title>Home modified by Aloysius Indrayanto</title><link>https://sourceforge.net/p/ecxx/wiki/Home/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v81
+++ v82
@@ -104,6 +104,10 @@

 In the early days of ESP8266 adoption by the community, the development boards were marketed under the name NodeMCU; therefore, the term NodeMCU began to be associated more with the hardware than the firmware. Also, spelling out ESP8266 is a mouthful while spelling out NodeMCU is more comfortable; hence, eCxx prefers the term NodeMCU over ESP8266.

+Please note that eCxx will not support WiFi Enterprise because its main design paradigm is to act as a simple WiFi access point from where user-application features can be configured \(in addition, using WiFi Enterprise will also require more resources\).
+
+If a client gets stuck on *"configuring interface"* or *"setting network address"* when connecting to an eCxx access point, simply disconnect and reconnect the client \(rebooting the eCxx access point may also help\).
+
 &lt;hr/&gt;

 ## [Getting Started]
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Aloysius Indrayanto</dc:creator><pubDate>Thu, 09 Jun 2022 01:30:43 -0000</pubDate><guid>https://sourceforge.netd0c07a05de3b063d2d3c9e05186602bffb4a2193</guid></item><item><title>Home modified by Aloysius Indrayanto</title><link>https://sourceforge.net/p/ecxx/wiki/Home/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v80
+++ v81
@@ -66,7 +66,7 @@
                                                          ATmega644P                                  
                                                          ATmega1284P Yes                       ★★    
      Largest Package                ATmega1280                                  
-                                                         ATmega2560  Yes                       ★★★★  
+                                                         ATmega2560  Yes                       ★★★★★ 
      With USB Device Module         ATmega16U4                                  
                                                          ATmega32U4  Yes                       ★★★   
                                                          AT90USB646                                  
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Aloysius Indrayanto</dc:creator><pubDate>Thu, 24 Feb 2022 00:47:28 -0000</pubDate><guid>https://sourceforge.net497aaa28e2926d31b2d7b7366a059b302771731f</guid></item><item><title>Home modified by Aloysius Indrayanto</title><link>https://sourceforge.net/p/ecxx/wiki/Home/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v79
+++ v80
@@ -39,9 +39,9 @@
 + [UART LCD Backpack](https://sourceforge.net/p/ecxx/code/HEAD/tree/trunk/hardware/UART_LCD_Backpack_v1.0.0a.png)
 + [JTAG2UPDI and Serial Bridge](https://sourceforge.net/p/ecxx/code/HEAD/tree/trunk/hardware/JTAG2UPDI_Serial_Bridge_Micro_ProMini_v1.0.1.png)

-+ [ESP-01 AVR Uploader](https://sourceforge.net/p/ecxx/code/HEAD/tree/trunk/hardware/ESP01_AVR_Uploader_v1.0.3a.png) (tested to work with [ESP-LINK 3.0.14](https://github.com/jeelabs/esp-link/releases/tag/V3.0.14) and eCxx's own firmware in both 5V and 3.3V modes)
++ [ESP-01 AVR Uploader](https://sourceforge.net/p/ecxx/code/HEAD/tree/trunk/hardware/ESP01_AVR_Uploader_v1.0.3a.png) \(tested to work with [ESP-LINK 3.0.14](https://github.com/jeelabs/esp-link/releases/tag/V3.0.14) and eCxx's own firmware in both 5V and 3.3V modes\)

-*Some features and bug fixes may can only be found in the source code within the SVN repository (they are not yet included in any released package).*
+*Some features and bug fixes may can only be found in the source code within the SVN repository \(they are not yet included in any released package\).*

 # Supported AVR MCUs

@@ -93,7 +93,7 @@

 All NodeMCU variants with:

-+ ESP8266 (ESP-12E Module)
++ ESP8266 \(ESP-12E Module\)
 + CPU frequency 80/160 MHz
 + Flash size 4 MB

&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Aloysius Indrayanto</dc:creator><pubDate>Thu, 22 Jul 2021 22:36:14 -0000</pubDate><guid>https://sourceforge.net1c47890d6d022d300342294afcc915fbc8cd62a9</guid></item><item><title>Home modified by Aloysius Indrayanto</title><link>https://sourceforge.net/p/ecxx/wiki/Home/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v78
+++ v79
@@ -1,4 +1,4 @@
-&lt;div style="white-space: pre; font-family: monospace,monospace; font-size: 1em; font-weight: bold;"&gt;
+&lt;pre style="font-family: monospace,monospace; font-size: 1em; font-weight: bold;"&gt;                            * ***
                          *  ****  *
                         *  *  ****
@@ -16,8 +16,8 @@
              *****         ***

                                 A C++ Library for AVR and NodeMCU
-          &lt;span style=""&gt;~ tailored for micro LED displays and lighting effects ~&lt;/span&gt;
-&lt;/pre&gt;&lt;/div&gt;
+           ~ tailored for micro LED displays and lighting effects ~
+&lt;/pre&gt;

&lt;hr/&gt;


&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Aloysius Indrayanto</dc:creator><pubDate>Sat, 15 May 2021 23:59:21 -0000</pubDate><guid>https://sourceforge.net6d1558a16c5b53dd9b11a5f1fc15a0790b70c1c7</guid></item><item><title>Home modified by Aloysius Indrayanto</title><link>https://sourceforge.net/p/ecxx/wiki/Home/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v77
+++ v78
@@ -1,4 +1,4 @@
-&lt;pre style="font-family: monospace,monospace; font-size: 1em; font-weight: bold;"&gt;+&lt;div style="white-space: pre; font-family: monospace,monospace; font-size: 1em; font-weight: bold;"&gt;
                            * ***
                          *  ****  *
                         *  *  ****
@@ -16,8 +16,8 @@
              *****         ***

                                 A C++ Library for AVR and NodeMCU
-          ~ tailored for micro LED displays and lighting effects ~
-&lt;/div&gt;&lt;/pre&gt;
+          &lt;span style=""&gt;~ tailored for micro LED displays and lighting effects ~&lt;/span&gt;
+

 &lt;hr/&gt;

@@ -89,7 +89,7 @@
     
 

-# Supported ESP8266 Boards
+# Supported NodeMCU \(ESP8266\) Boards

 All NodeMCU variants with:

@@ -102,6 +102,8 @@
 + CPU frequency 80 MHz
 + Flash size 1 MB

+In the early days of ESP8266 adoption by the community, the development boards were marketed under the name NodeMCU; therefore, the term NodeMCU began to be associated more with the hardware than the firmware. Also, spelling out ESP8266 is a mouthful while spelling out NodeMCU is more comfortable; hence, eCxx prefers the term NodeMCU over ESP8266.
+
 &lt;hr/&gt;

 ## [Getting Started]
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Aloysius Indrayanto</dc:creator><pubDate>Sat, 15 May 2021 23:55:41 -0000</pubDate><guid>https://sourceforge.net2a2592caf9e0b3d742537407f28e8db4d7cc3b67</guid></item></channel></rss>