diff --git a/.cproject b/.cproject
new file mode 100644
index 0000000..cc7a9f0
--- /dev/null
+++ b/.cproject
@@ -0,0 +1,110 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mingw32-make.exe
+ -f ${ProjDirPath}/Makefile
+ all
+ true
+ true
+ true
+
+
+ mingw32-make.exe
+ -f ${ProjDirPath}/Makefile
+ clean
+ true
+ true
+ true
+
+
+ mingw32-make.exe
+ -f ${ProjDirPath}/Makefile
+ FlashCode
+ true
+ true
+ true
+
+
+ mingw32-make.exe
+ -f ${ProjDirPath}/Makefile
+ clobber
+ true
+ true
+ true
+
+
+ mingw32-make.exe
+ -f ${ProjDirPath}/Makefile
+ FlashClearSetings
+ true
+ true
+ true
+
+
+
+
diff --git a/.project b/.project
new file mode 100644
index 0000000..5ee6433
--- /dev/null
+++ b/.project
@@ -0,0 +1,27 @@
+
+
+ NoWiFi
+
+
+
+
+
+ org.eclipse.cdt.managedbuilder.core.genmakebuilder
+ clean,full,incremental,
+
+
+
+
+ org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder
+ full,incremental,
+
+
+
+
+
+ org.eclipse.cdt.core.cnature
+ org.eclipse.cdt.core.ccnature
+ org.eclipse.cdt.managedbuilder.core.managedBuildNature
+ org.eclipse.cdt.managedbuilder.core.ScannerConfigNature
+
+
diff --git a/.settings/org.eclipse.cdt.codan.core.prefs b/.settings/org.eclipse.cdt.codan.core.prefs
new file mode 100644
index 0000000..77386c2
--- /dev/null
+++ b/.settings/org.eclipse.cdt.codan.core.prefs
@@ -0,0 +1,67 @@
+eclipse.preferences.version=1
+org.eclipse.cdt.codan.checkers.errnoreturn=Warning
+org.eclipse.cdt.codan.checkers.errnoreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},implicit\=>false}
+org.eclipse.cdt.codan.checkers.errreturnvalue=Error
+org.eclipse.cdt.codan.checkers.errreturnvalue.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
+org.eclipse.cdt.codan.checkers.noreturn=Error
+org.eclipse.cdt.codan.checkers.noreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},implicit\=>false}
+org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation=Error
+org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
+org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem=Error
+org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
+org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem=Warning
+org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
+org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem=Error
+org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
+org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem=Warning
+org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},no_break_comment\=>"no break",last_case_param\=>false,empty_case_param\=>false}
+org.eclipse.cdt.codan.internal.checkers.CatchByReference=Warning
+org.eclipse.cdt.codan.internal.checkers.CatchByReference.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},unknown\=>false,exceptions\=>()}
+org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem=Error
+org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
+org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization=Warning
+org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},skip\=>true}
+org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem=Error
+org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
+org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem=Error
+org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
+org.eclipse.cdt.codan.internal.checkers.InvalidArguments=Error
+org.eclipse.cdt.codan.internal.checkers.InvalidArguments.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
+org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem=Error
+org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
+org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem=Error
+org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
+org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem=Error
+org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
+org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem=Error
+org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
+org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker=-Info
+org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},pattern\=>"^[a-z]",macro\=>true,exceptions\=>()}
+org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem=Warning
+org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
+org.eclipse.cdt.codan.internal.checkers.OverloadProblem=Error
+org.eclipse.cdt.codan.internal.checkers.OverloadProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
+org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem=Error
+org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
+org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem=Error
+org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
+org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem=-Warning
+org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
+org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem=-Warning
+org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
+org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem=Warning
+org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},macro\=>true,exceptions\=>()}
+org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem=Warning
+org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},paramNot\=>false}
+org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem=Warning
+org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},else\=>false,afterelse\=>false}
+org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem=Error
+org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
+org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem=Warning
+org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},macro\=>true}
+org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem=Warning
+org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},macro\=>true}
+org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem=Warning
+org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},macro\=>true,exceptions\=>("@(\#)","$Id")}
+org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem=Error
+org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..4f6f5d4
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,22 @@
+Copyright (c) 2015 Algis, aloika, pvvx, ...
+
+Äàííàÿ ëèöåíçèÿ ðàçðåøàåò ëèöàì, ïîëó÷èâøèì êîïèþ äàííîãî ïðîãðàììíîãî
+îáåñïå÷åíèÿ è ñîïóòñòâóþùåé äîêóìåíòàöèè (â äàëüíåéøåì èìåíóåìûìè
+<Ïðîãðàììíîå Îáåñïå÷åíèå>), áåçâîçìåçäíî èñïîëüçîâàòü Ïðîãðàììíîå
+Îáåñïå÷åíèå áåç îãðàíè÷åíèé, âêëþ÷àÿ íåîãðàíè÷åííîå ïðàâî íà
+èñïîëüçîâàíèå, êîïèðîâàíèå, èçìåíåíèå, äîáàâëåíèå, ïóáëèêàöèþ,
+ðàñïðîñòðàíåíèå, ñóáëèöåíçèðîâàíèå è/èëè ïðîäàæó êîïèé Ïðîãðàììíîãî
+Îáåñïå÷åíèÿ, à òàêæå ëèöàì, êîòîðûì ïðåäîñòàâëÿåòñÿ äàííîå Ïðîãðàììíîå
+Îáåñïå÷åíèå, ïðè ñîáëþäåíèè ñëåäóþùèõ óñëîâèé:
+
+Óêàçàííîå âûøå óâåäîìëåíèå îá àâòîðñêîì ïðàâå è äàííûå óñëîâèÿ äîëæíû áûòü
+âêëþ÷åíû âî âñå êîïèè èëè çíà÷èìûå ÷àñòè äàííîãî Ïðîãðàììíîãî Îáåñïå÷åíèÿ.
+
+ÄÀÍÍÎÅ ÏÐÎÃÐÀÌÌÍÎÅ ÎÁÅÑÏÅ×ÅÍÈÅ ÏÐÅÄÎÑÒÀÂËßÅÒÑß <ÊÀÊ ÅÑÒÜ>,
+ÁÅÇ ÊÀÊÈÕ-ËÈÁÎ ÃÀÐÀÍÒÈÉ, ßÂÍÎ ÂÛÐÀÆÅÍÍÛÕ ÈËÈ ÏÎÄÐÀÇÓÌÅÂÀÅÌÛÕ,
+ÂÊËÞ×Àß ÃÀÐÀÍÒÈÈ ÒÎÂÀÐÍÎÉ ÏÐÈÃÎÄÍÎÑÒÈ, ÑÎÎÒÂÅÒÑÒÂÈß ÏÎ ÅÃÎ ÊÎÍÊÐÅÒÍÎÌÓ
+ÍÀÇÍÀ×ÅÍÈÞ È ÎÒÑÓÒÑÒÂÈß ÍÀÐÓØÅÍÈÉ, ÍÎ ÍÅ ÎÃÐÀÍÈ×ÈÂÀßÑÜ ÈÌÈ. ÍÈ Â ÊÀÊÎÌ
+ÑËÓ×ÀÅ ÀÂÒÎÐÛ ÈËÈ ÏÐÀÂÎÎÁËÀÄÀÒÅËÈ ÍÅ ÍÅÑÓÒ ÎÒÂÅÒÑÒÂÅÍÍÎÑÒÈ ÏÎ ÊÀÊÈÌ-ËÈÁÎ
+ÈÑÊÀÌ, ÇÀ ÓÙÅÐÁ ÈËÈ ÏÎ ÈÍÛÌ ÒÐÅÁÎÂÀÍÈßÌ,  ÒÎÌ ×ÈÑËÅ, ÏÐÈ ÄÅÉÑÒÂÈÈ
+ÊÎÍÒÐÀÊÒÀ, ÄÅËÈÊÒÅ ÈËÈ ÈÍÎÉ ÑÈÒÓÀÖÈÈ, ÂÎÇÍÈÊØÈÌ ÈÇ-ÇÀ ÈÑÏÎËÜÇÎÂÀÍÈß
+ÏÐÎÃÐÀÌÌÍÎÃÎ ÎÁÅÑÏÅ×ÅÍÈß ÈËÈ ÈÍÛÕ ÄÅÉÑÒÂÈÉ Ñ ÏÐÎÃÐÀÌÌÍÛÌ ÎÁÅÑÏÅ×ÅÍÈÅÌ.
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..1ff7b80
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,196 @@
+#############################################################
+#
+# Root Level Makefile
+#
+#############################################################
+
+ESPOPTION ?= -p COM6 -b 256000
+
+GENIMAGEOPTION = -ff 80m -fm qio -fs 4m
+
+ADDR_FW1 = 0x00000
+ADDR_FW2 = 0x40000
+
+# Base directory for the compiler
+XTENSA_TOOLS_ROOT ?= c:/Espressif/xtensa-lx106-elf/bin
+#PATH := $(XTENSA_TOOLS_ROOT);$(PATH)
+
+# select which tools to use as compiler, librarian and linker
+CC := $(XTENSA_TOOLS_ROOT)/xtensa-lx106-elf-gcc
+AR := $(XTENSA_TOOLS_ROOT)/xtensa-lx106-elf-ar
+LD := $(XTENSA_TOOLS_ROOT)/xtensa-lx106-elf-gcc
+NM := $(XTENSA_TOOLS_ROOT)/xtensa-lx106-elf-nm
+CPP = $(XTENSA_TOOLS_ROOT)/xtensa-lx106-elf-cpp
+OBJCOPY = $(XTENSA_TOOLS_ROOT)/xtensa-lx106-elf-objcopy
+CCFLAGS += -Os -O2 -Wall -Wno-pointer-sign -mno-target-align -mno-serialize-volatile -foptimize-register-move
+#
+# -Os -O2 -Wall -Wno-pointer-sign -mno-target-align -mno-serialize-volatile -foptimize-register-move
+# -fomit-frame-pointer -fmerge-all-constants
+#
+# https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html
+# https://gcc.gnu.org/onlinedocs/gcc-4.8.2/gcc/Xtensa-Options.html#Xtensa-Options
+#
+
+FIRMWAREDIR := bin
+DEFAULTBIN := ./$(FIRMWAREDIR)/esp_init_data_default.bin
+DEFAULTADDR := 0x7C000
+BLANKBIN := ./$(FIRMWAREDIR)/blank.bin
+BLANKADDR := 0x7E000
+CLREEPBIN := ./$(FIRMWAREDIR)/clear_eep.bin
+CLREEPADDR := 0x79000
+
+SDK_TOOLS ?= c:/Espressif/utils
+#ESPTOOL ?= $(SDK_TOOLS)/esptool
+ESPTOOL ?= C:/Python27/python.exe $(SDK_TOOLS)/esptool.py
+
+CSRCS ?= $(wildcard *.c)
+ASRCs ?= $(wildcard *.s)
+ASRCS ?= $(wildcard *.S)
+SUBDIRS ?= $(patsubst %/,%,$(dir $(wildcard */Makefile)))
+
+ODIR := .output
+OBJODIR := $(ODIR)/$(TARGET)/obj
+
+OBJS := $(CSRCS:%.c=$(OBJODIR)/%.o) \
+ $(ASRCs:%.s=$(OBJODIR)/%.o) \
+ $(ASRCS:%.S=$(OBJODIR)/%.o)
+
+DEPS := $(CSRCS:%.c=$(OBJODIR)/%.d) \
+ $(ASRCs:%.s=$(OBJODIR)/%.d) \
+ $(ASRCS:%.S=$(OBJODIR)/%.d)
+
+LIBODIR := $(ODIR)/$(TARGET)/lib
+OLIBS := $(GEN_LIBS:%=$(LIBODIR)/%)
+
+IMAGEODIR := $(ODIR)/$(TARGET)/image
+OIMAGES := $(GEN_IMAGES:%=$(IMAGEODIR)/%)
+
+BINODIR := $(ODIR)/$(TARGET)/bin
+OBINS := $(GEN_BINS:%=$(BINODIR)/%)
+
+OUTBIN1 := ./$(FIRMWAREDIR)/$(ADDR_FW1).bin
+OUTBIN2 := ./$(FIRMWAREDIR)/$(ADDR_FW2).bin
+
+CCFLAGS += \
+ -Wundef \
+ -Wpointer-arith \
+ -Werror \
+ -Wl,-EL \
+ -fno-inline-functions \
+ -nostdlib \
+ -mlongcalls \
+ -mtext-section-literals
+
+CFLAGS = $(CCFLAGS) $(DEFINES) $(EXTRA_CCFLAGS) $(INCLUDES)
+DFLAGS = $(CCFLAGS) $(DDEFINES) $(EXTRA_CCFLAGS) $(INCLUDES)
+
+define ShortcutRule
+$(1): .subdirs $(2)/$(1)
+endef
+
+define MakeLibrary
+DEP_LIBS_$(1) = $$(foreach lib,$$(filter %.a,$$(COMPONENTS_$(1))),$$(dir $$(lib))$$(LIBODIR)/$$(notdir $$(lib)))
+DEP_OBJS_$(1) = $$(foreach obj,$$(filter %.o,$$(COMPONENTS_$(1))),$$(dir $$(obj))$$(OBJODIR)/$$(notdir $$(obj)))
+$$(LIBODIR)/$(1).a: $$(OBJS) $$(DEP_OBJS_$(1)) $$(DEP_LIBS_$(1)) $$(DEPENDS_$(1))
+ @mkdir -p $$(LIBODIR)
+ $$(if $$(filter %.a,$$?),mkdir -p $$(EXTRACT_DIR)_$(1))
+ $$(if $$(filter %.a,$$?),cd $$(EXTRACT_DIR)_$(1); $$(foreach lib,$$(filter %.a,$$?),$$(AR) xo $$(UP_EXTRACT_DIR)/$$(lib);))
+ $$(AR) ru $$@ $$(filter %.o,$$?) $$(if $$(filter %.a,$$?),$$(EXTRACT_DIR)_$(1)/*.o)
+ $$(if $$(filter %.a,$$?),$$(RM) -r $$(EXTRACT_DIR)_$(1))
+endef
+
+define MakeImage
+DEP_LIBS_$(1) = $$(foreach lib,$$(filter %.a,$$(COMPONENTS_$(1))),$$(dir $$(lib))$$(LIBODIR)/$$(notdir $$(lib)))
+DEP_OBJS_$(1) = $$(foreach obj,$$(filter %.o,$$(COMPONENTS_$(1))),$$(dir $$(obj))$$(OBJODIR)/$$(notdir $$(obj)))
+$$(IMAGEODIR)/$(1).out: $$(OBJS) $$(DEP_OBJS_$(1)) $$(DEP_LIBS_$(1)) $$(DEPENDS_$(1))
+ @mkdir -p $$(IMAGEODIR)
+ $$(CC) $$(LDFLAGS) $$(if $$(LINKFLAGS_$(1)),$$(LINKFLAGS_$(1)),$$(LINKFLAGS_DEFAULT) $$(OBJS) $$(DEP_OBJS_$(1)) $$(DEP_LIBS_$(1))) -o $$@
+endef
+
+$(BINODIR)/%.bin: $(IMAGEODIR)/%.out
+ @mkdir -p ../$(FIRMWAREDIR)
+ @echo "FW ../$(FIRMWAREDIR)/$(ADDR_FW1).bin + ../$(FIRMWAREDIR)/$(ADDR_FW2).bin"
+ $(ESPTOOL) elf2image -o ../$(FIRMWAREDIR)/ $(GENIMAGEOPTION) $<
+ $(XTENSA_TOOLS_ROOT)/xtensa-lx106-elf-size $(OIMAGES)
+
+
+all: .subdirs $(OBJS) $(OLIBS) $(OIMAGES) $(OBINS) $(SPECIAL_MKTARGETS)
+
+clean:
+ $(foreach d, $(SUBDIRS), $(MAKE) -C $(d) clean;)
+ $(RM) -r $(ODIR)/$(TARGET)
+
+clobber: $(SPECIAL_CLOBBER)
+ $(foreach d, $(SUBDIRS), $(MAKE) -C $(d) clobber;)
+ $(RM) -r $(ODIR)
+
+FlashUserFiles: $(USERFBIN)
+ $(ESPTOOL) $(ESPOPTION) write_flash $(GENIMAGEOPTION) $(USERFADDR) $(USERFBIN)
+
+FlashAll: $(OUTBIN1) $(USERFBIN) $(OUTBIN2) $(DEFAULTBIN) $(BLANKBIN) $(CLREEPBIN)
+ $(ESPTOOL) $(ESPOPTION) write_flash $(GENIMAGEOPTION) $(ADDR_FW1) $(OUTBIN1) $(USERFADDR) $(USERFBIN) $(ADDR_FW2) $(OUTBIN2) $(CLREEPADDR) $(CLREEPBIN) $(DEFAULTADDR) $(DEFAULTBIN) $(BLANKADDR) $(BLANKBIN)
+
+FlashClearSetings: $(CLREEPBIN) $(DEFAULTBIN) $(BLANKBIN)
+ $(ESPTOOL) $(ESPOPTION) write_flash $(GENIMAGEOPTION) $(CLREEPADDR) $(CLREEPBIN) $(DEFAULTADDR) $(DEFAULTBIN) $(BLANKADDR) $(BLANKBIN)
+
+FlashCode: $(OUTBIN1) $(OUTBIN2)
+ $(ESPTOOL) $(ESPOPTION) write_flash $(GENIMAGEOPTION) $(ADDR_FW1) $(OUTBIN1) $(ADDR_FW2) $(OUTBIN2)
+
+.subdirs:
+ @set -e; $(foreach d, $(SUBDIRS), $(MAKE) -C $(d);)
+
+ifneq ($(MAKECMDGOALS),clean)
+ifneq ($(MAKECMDGOALS),clobber)
+ifdef DEPS
+sinclude $(DEPS)
+endif
+endif
+endif
+
+$(OBJODIR)/%.o: %.c
+ @mkdir -p $(OBJODIR);
+ $(CC) $(if $(findstring $<,$(DSRCS)),$(DFLAGS),$(CFLAGS)) $(COPTS_$(*F)) -o $@ -c $<
+
+$(OBJODIR)/%.d: %.c
+ @mkdir -p $(OBJODIR);
+ @echo DEPEND: $(CC) -M $(CFLAGS) $<
+ @set -e; rm -f $@; \
+ $(CC) -M $(CFLAGS) $< > $@.$$$$; \
+ sed 's,\($*\.o\)[ :]*,$(OBJODIR)/\1 $@ : ,g' < $@.$$$$ > $@; \
+ rm -f $@.$$$$
+
+$(OBJODIR)/%.o: %.s
+ @mkdir -p $(OBJODIR);
+ $(CC) $(CFLAGS) -o $@ -c $<
+
+$(OBJODIR)/%.d: %.s
+ @mkdir -p $(OBJODIR); \
+ set -e; rm -f $@; \
+ $(CC) -M $(CFLAGS) $< > $@.$$$$; \
+ sed 's,\($*\.o\)[ :]*,$(OBJODIR)/\1 $@ : ,g' < $@.$$$$ > $@; \
+ rm -f $@.$$$$
+
+$(OBJODIR)/%.o: %.S
+ @mkdir -p $(OBJODIR);
+ $(CC) $(CFLAGS) -D__ASSEMBLER__ -o $@ -c $<
+
+$(OBJODIR)/%.d: %.S
+ @mkdir -p $(OBJODIR); \
+ set -e; rm -f $@; \
+ $(CC) -M $(CFLAGS) $< > $@.$$$$; \
+ sed 's,\($*\.o\)[ :]*,$(OBJODIR)/\1 $@ : ,g' < $@.$$$$ > $@; \
+ rm -f $@.$$$$
+
+$(foreach lib,$(GEN_LIBS),$(eval $(call ShortcutRule,$(lib),$(LIBODIR))))
+
+$(foreach image,$(GEN_IMAGES),$(eval $(call ShortcutRule,$(image),$(IMAGEODIR))))
+
+$(foreach bin,$(GEN_BINS),$(eval $(call ShortcutRule,$(bin),$(BINODIR))))
+
+$(foreach lib,$(GEN_LIBS),$(eval $(call MakeLibrary,$(basename $(lib)))))
+
+$(foreach image,$(GEN_IMAGES),$(eval $(call MakeImage,$(basename $(image)))))
+
+INCLUDES := $(INCLUDES) -I $(PDIR)include -I $(PDIR)include/$(TARGET)
+#PDIR := ../$(PDIR)
+#sinclude $(PDIR)Makefile
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..c9549c1
--- /dev/null
+++ b/README.md
@@ -0,0 +1,10 @@
+# esp8266noWiFi
+OpenSDK without WiFi ESP8266
+SDK to work with sensors.
+Startup < 30 ms from reset ESP8266:
+Switch off messages boots blocks in ROM-BIOS - change the second byte in the header 0x00000.bin to 0 (from 0xE9).
+
+http://esp8266.ru/forum/threads/revers-sdk-espressif-i-rom-bios-dlja-sozdanija-otkrytogo-sdk.292/
+
+UDK
+http://esp8266.ru/forum/forums/devkit/
\ No newline at end of file
diff --git a/asm_damp.bat b/asm_damp.bat
new file mode 100644
index 0000000..eef26e0
--- /dev/null
+++ b/asm_damp.bat
@@ -0,0 +1,3 @@
+C:\Espressif\xtensa-lx106-elf\bin\xtensa-lx106-elf-objdump -S .\app\.output\eagle\image\eagle.app.v6.out > eagle.app.v6.asm
+
+
diff --git a/bin/0x00000.bin b/bin/0x00000.bin
new file mode 100644
index 0000000..08b2ec7
Binary files /dev/null and b/bin/0x00000.bin differ
diff --git a/bin/0x40000.bin b/bin/0x40000.bin
new file mode 100644
index 0000000..15184bf
Binary files /dev/null and b/bin/0x40000.bin differ
diff --git a/ld/eagle.app.v6.ld b/ld/eagle.app.v6.ld
new file mode 100644
index 0000000..c96dc6e
--- /dev/null
+++ b/ld/eagle.app.v6.ld
@@ -0,0 +1,160 @@
+/* This linker script generated from xt-genldscripts.tpp for LSP . */
+/* Linker Script for ld -N */
+MEMORY
+{
+ dport0_0_seg : org = 0x3FF00000, len = 0x100
+ dram0_0_seg : org = 0x3FFE8000, len = 0x14000
+ iram1_0_seg : org = 0x40100000, len = 0x8000
+ irom0_0_seg : org = 0x40240000, len = 0x32000
+}
+
+PHDRS
+{
+ dport0_0_phdr PT_LOAD;
+ dram0_0_phdr PT_LOAD;
+ dram0_0_bss_phdr PT_LOAD;
+ iram1_0_phdr PT_LOAD;
+ irom0_0_phdr PT_LOAD;
+}
+
+
+/* Default entry point: */
+ENTRY(call_user_start)
+PROVIDE(_memmap_vecbase_reset = 0x40000000);
+/* Various memory-map dependent cache attribute settings: */
+_memmap_cacheattr_wb_base = 0x00000110;
+_memmap_cacheattr_wt_base = 0x00000110;
+_memmap_cacheattr_bp_base = 0x00000220;
+_memmap_cacheattr_unused_mask = 0xFFFFF00F;
+_memmap_cacheattr_wb_trapnull = 0x2222211F;
+_memmap_cacheattr_wba_trapnull = 0x2222211F;
+_memmap_cacheattr_wbna_trapnull = 0x2222211F;
+_memmap_cacheattr_wt_trapnull = 0x2222211F;
+_memmap_cacheattr_bp_trapnull = 0x2222222F;
+_memmap_cacheattr_wb_strict = 0xFFFFF11F;
+_memmap_cacheattr_wt_strict = 0xFFFFF11F;
+_memmap_cacheattr_bp_strict = 0xFFFFF22F;
+_memmap_cacheattr_wb_allvalid = 0x22222112;
+_memmap_cacheattr_wt_allvalid = 0x22222112;
+_memmap_cacheattr_bp_allvalid = 0x22222222;
+PROVIDE(_memmap_cacheattr_reset = _memmap_cacheattr_wb_trapnull);
+
+SECTIONS
+{
+
+ .dport0.rodata : ALIGN(4)
+ {
+ _dport0_rodata_start = ABSOLUTE(.);
+ *(.dport0.rodata)
+ *(.dport.rodata)
+ _dport0_rodata_end = ABSOLUTE(.);
+ } >dport0_0_seg :dport0_0_phdr
+
+ .dport0.literal : ALIGN(4)
+ {
+ _dport0_literal_start = ABSOLUTE(.);
+ *(.dport0.literal)
+ *(.dport.literal)
+ _dport0_literal_end = ABSOLUTE(.);
+ } >dport0_0_seg :dport0_0_phdr
+
+ .dport0.data : ALIGN(4)
+ {
+ _dport0_data_start = ABSOLUTE(.);
+ *(.dport0.data)
+ *(.dport.data)
+ _dport0_data_end = ABSOLUTE(.);
+ } >dport0_0_seg :dport0_0_phdr
+
+ .data : ALIGN(4)
+ {
+ _data_start = ABSOLUTE(.);
+ *(.data)
+ *(.data.*)
+ *(.gnu.linkonce.d.*)
+ *(.data1)
+ *(.sdata)
+ *(.sdata.*)
+ *(.gnu.linkonce.s.*)
+ *(.sdata2)
+ *(.sdata2.*)
+ *(.gnu.linkonce.s2.*)
+ *(.jcr)
+ _data_end = ABSOLUTE(.);
+ } >dram0_0_seg :dram0_0_phdr
+
+ .rodata : ALIGN(4)
+ {
+ _rodata_start = ABSOLUTE(.);
+ *(.rodata)
+ *(.rodata.*)
+ *(.gnu.linkonce.r.*)
+ *(.rodata1)
+ *(.dynamic)
+ *(.gnu.version_d)
+ . = ALIGN(4); /* this table MUST be 4-byte aligned */
+ _bss_table_start = ABSOLUTE(.);
+/* LONG(_bss_start)
+ LONG(_bss_end) */
+ _bss_table_end = ABSOLUTE(.);
+ _rodata_end = ABSOLUTE(.);
+ } >dram0_0_seg :dram0_0_phdr
+
+ .bss ALIGN(8) (NOLOAD) : ALIGN(4)
+ {
+ . = ALIGN (8);
+ _bss_start = ABSOLUTE(.);
+ *(.dynsbss)
+ *(.sbss)
+ *(.sbss.*)
+ *(.gnu.linkonce.sb.*)
+ *(.scommon)
+ *(.sbss2)
+ *(.sbss2.*)
+ *(.gnu.linkonce.sb2.*)
+ *(.dynbss)
+ *(.bss)
+ *(.bss.*)
+ *(.gnu.linkonce.b.*)
+ *(COMMON)
+ . = ALIGN (8);
+ _bss_end = ABSOLUTE(.);
+ _heap_start = ABSOLUTE(.);
+ } >dram0_0_seg :dram0_0_bss_phdr
+
+ .text : ALIGN(4)
+ {
+ _stext = .;
+ _text_start = ABSOLUTE(.);
+ *(.entry.text)
+ *(.init.literal)
+ *(.init)
+ *(.literal .text .literal.* .text.* .stub .gnu.warning .gnu.linkonce.literal.* .gnu.linkonce.t.*.literal .gnu.linkonce.t.*)
+ *(.fini.literal)
+ *(.fini)
+ *(.gnu.version)
+ _text_end = ABSOLUTE(.);
+ _etext = .;
+ } >iram1_0_seg :iram1_0_phdr
+
+ .lit4 : ALIGN(4)
+ {
+ _lit4_start = ABSOLUTE(.);
+ *(*.lit4)
+ *(.lit4.*)
+ *(.gnu.linkonce.lit4.*)
+ _lit4_end = ABSOLUTE(.);
+ } >iram1_0_seg :iram1_0_phdr
+
+ .irom0.text : ALIGN(4)
+ {
+ _irom0_text_start = ABSOLUTE(.);
+ *(.irom0.literal .irom.literal .irom.text.literal .irom0.text .irom.text)
+ _irom0_text_end = ABSOLUTE(.);
+ } >irom0_0_seg :irom0_0_phdr
+
+}
+
+/* get ROM code address */
+INCLUDE "../ld/eagle.rom.addr.v6.ld"
+
diff --git a/ld/eagle.rom.addr.v6.ld b/ld/eagle.rom.addr.v6.ld
new file mode 100644
index 0000000..86a7781
--- /dev/null
+++ b/ld/eagle.rom.addr.v6.ld
@@ -0,0 +1,381 @@
+PROVIDE ( Cache_Read_Disable = 0x400047f0 );
+PROVIDE ( Cache_Read_Enable = 0x40004678 );
+PROVIDE ( FilePacketSendReqMsgProc = 0x400035a0 );
+PROVIDE ( FlashDwnLdParamCfgMsgProc = 0x4000368c );
+PROVIDE ( FlashDwnLdStartMsgProc = 0x40003538 );
+PROVIDE ( FlashDwnLdStopReqMsgProc = 0x40003658 );
+PROVIDE ( GetUartDevice = 0x40003f4c );
+PROVIDE ( MD5Final = 0x40009900 );
+PROVIDE ( MD5Init = 0x40009818 );
+PROVIDE ( MD5Update = 0x40009834 );
+PROVIDE ( MemDwnLdStartMsgProc = 0x400036c4 );
+PROVIDE ( MemDwnLdStopReqMsgProc = 0x4000377c );
+PROVIDE ( MemPacketSendReqMsgProc = 0x400036f0 );
+PROVIDE ( RcvMsg = 0x40003eac );
+PROVIDE ( SHA1Final = 0x4000b648 );
+PROVIDE ( SHA1Init = 0x4000b584 );
+PROVIDE ( SHA1Transform = 0x4000a364 );
+PROVIDE ( SHA1Update = 0x4000b5a8 );
+PROVIDE ( SPI_read_status = 0x400043c8 );
+PROVIDE ( SPI_write_status = 0x40004400 );
+PROVIDE ( SPI_write_enable = 0x4000443c );
+PROVIDE ( Wait_SPI_Idle = 0x4000448c );
+PROVIDE ( SPIEraseArea = 0x40004b44 );
+PROVIDE ( SPIEraseBlock = 0x400049b4 );
+PROVIDE ( SPIEraseChip = 0x40004984 );
+PROVIDE ( SPIEraseSector = 0x40004a00 );
+PROVIDE ( SPILock = 0x400048a8 );
+PROVIDE ( SPIParamCfg = 0x40004c2c );
+PROVIDE ( SPIRead = 0x40004b1c );
+PROVIDE ( SPIReadModeCnfig = 0x400048ec );
+PROVIDE ( SPIUnlock = 0x40004878 );
+PROVIDE ( SPIWrite = 0x40004a4c );
+PROVIDE ( SelectSpiFunction = 0x40003f58 );
+PROVIDE ( SendMsg = 0x40003cf4 );
+PROVIDE ( UartConnCheck = 0x40003230 );
+PROVIDE ( UartConnectProc = 0x400037a0 );
+PROVIDE ( UartDwnLdProc = 0x40003368 );
+PROVIDE ( UartGetCmdLn = 0x40003ef4 );
+PROVIDE ( UartRegReadProc = 0x4000381c );
+PROVIDE ( UartRegWriteProc = 0x400037ac );
+PROVIDE ( UartRxString = 0x40003c30 );
+PROVIDE ( Uart_Init = 0x40003a14 );
+PROVIDE ( _DebugExceptionVector = 0x40000010 );
+PROVIDE ( _DoubleExceptionVector = 0x40000070 );
+PROVIDE ( _KernelExceptionVector = 0x40000030 );
+PROVIDE ( _NMIExceptionVector = 0x40000020 );
+PROVIDE ( _ResetHandler = 0x400000a4 );
+PROVIDE ( _ResetVector = 0x40000080 );
+PROVIDE ( _UserExceptionVector = 0x40000050 );
+PROVIDE ( __adddf3 = 0x4000c538 );
+PROVIDE ( __addsf3 = 0x4000c180 );
+PROVIDE ( __divdf3 = 0x4000cb94 );
+PROVIDE ( __divdi3 = 0x4000ce60 );
+PROVIDE ( __divsi3 = 0x4000dc88 );
+PROVIDE ( __extendsfdf2 = 0x4000cdfc );
+PROVIDE ( __fixdfsi = 0x4000ccb8 );
+PROVIDE ( __fixunsdfsi = 0x4000cd00 );
+PROVIDE ( __fixunssfsi = 0x4000c4c4 );
+PROVIDE ( __floatsidf = 0x4000e2f0 );
+PROVIDE ( __floatsisf = 0x4000e2ac );
+PROVIDE ( __floatunsidf = 0x4000e2e8 );
+PROVIDE ( __floatunsisf = 0x4000e2a4 );
+PROVIDE ( __muldf3 = 0x4000c8f0 );
+PROVIDE ( __muldi3 = 0x40000650 );
+PROVIDE ( __mulsf3 = 0x4000c3dc );
+PROVIDE ( __subdf3 = 0x4000c688 );
+PROVIDE ( __subsf3 = 0x4000c268 );
+PROVIDE ( __truncdfsf2 = 0x4000cd5c );
+PROVIDE ( __udivdi3 = 0x4000d310 );
+PROVIDE ( __udivsi3 = 0x4000e21c );
+PROVIDE ( __umoddi3 = 0x4000d770 );
+PROVIDE ( __umodsi3 = 0x4000e268 );
+PROVIDE ( __umulsidi3 = 0x4000dcf0 );
+PROVIDE ( _rom_store = 0x4000e388 );
+PROVIDE ( _rom_store_table = 0x4000e328 );
+PROVIDE ( _start = 0x4000042c );
+PROVIDE ( _xtos_alloca_handler = 0x4000dbe0 );
+PROVIDE ( _xtos_c_wrapper_handler = 0x40000598 );
+PROVIDE ( _xtos_cause3_handler = 0x40000590 );
+PROVIDE ( _xtos_ints_off = 0x4000bda4 );
+PROVIDE ( _xtos_ints_on = 0x4000bd84 );
+PROVIDE ( _xtos_l1int_handler = 0x4000048c );
+PROVIDE ( _xtos_p_none = 0x4000dbf8 );
+PROVIDE ( _xtos_restore_intlevel = 0x4000056c );
+PROVIDE ( _xtos_return_from_exc = 0x4000dc54 );
+PROVIDE ( _xtos_set_exception_handler = 0x40000454 );
+PROVIDE ( _xtos_set_interrupt_handler = 0x4000bd70 );
+PROVIDE ( _xtos_set_interrupt_handler_arg = 0x4000bd28 );
+PROVIDE ( _xtos_set_intlevel = 0x4000dbfc );
+PROVIDE ( _xtos_set_min_intlevel = 0x4000dc18 );
+PROVIDE ( _xtos_set_vpri = 0x40000574 );
+PROVIDE ( _xtos_syscall_handler = 0x4000dbe4 );
+PROVIDE ( _xtos_unhandled_exception = 0x4000dc44 );
+PROVIDE ( _xtos_unhandled_interrupt = 0x4000dc3c );
+PROVIDE ( aes_decrypt = 0x400092d4 );
+PROVIDE ( aes_decrypt_deinit = 0x400092e4 );
+PROVIDE ( aes_decrypt_init = 0x40008ea4 );
+PROVIDE ( aes_unwrap = 0x40009410 );
+PROVIDE ( base64_decode = 0x40009648 );
+PROVIDE ( base64_encode = 0x400094fc );
+PROVIDE ( bzero = 0x4000de84 );
+PROVIDE ( cmd_parse = 0x40000814 );
+PROVIDE ( conv_str_decimal = 0x40000b24 );
+PROVIDE ( conv_str_hex = 0x40000cb8 );
+PROVIDE ( convert_para_str = 0x40000a60 );
+PROVIDE ( dtm_get_intr_mask = 0x400026d0 );
+PROVIDE ( dtm_params_init = 0x4000269c );
+PROVIDE ( dtm_set_intr_mask = 0x400026c8 );
+PROVIDE ( dtm_set_params = 0x400026dc );
+PROVIDE ( eprintf = 0x40001d14 );
+PROVIDE ( eprintf_init_buf = 0x40001cb8 );
+PROVIDE ( eprintf_to_host = 0x40001d48 );
+PROVIDE ( est_get_printf_buf_remain_len = 0x40002494 );
+PROVIDE ( est_reset_printf_buf_len = 0x4000249c );
+PROVIDE ( ets_bzero = 0x40002ae8 );
+PROVIDE ( ets_char2xdigit = 0x40002b74 );
+PROVIDE ( ets_delay_us = 0x40002ecc );
+PROVIDE ( ets_enter_sleep = 0x400027b8 );
+PROVIDE ( ets_external_printf = 0x40002578 );
+PROVIDE ( ets_get_cpu_frequency = 0x40002f0c );
+PROVIDE ( ets_getc = 0x40002bcc );
+PROVIDE ( ets_install_external_printf = 0x40002450 );
+PROVIDE ( ets_install_putc1 = 0x4000242c );
+PROVIDE ( ets_install_putc2 = 0x4000248c );
+PROVIDE ( ets_install_uart_printf = 0x40002438 );
+PROVIDE ( ets_intr_lock = 0x40000f74 );
+PROVIDE ( ets_intr_unlock = 0x40000f80 );
+PROVIDE ( ets_isr_attach = 0x40000f88 );
+PROVIDE ( ets_isr_mask = 0x40000f98 );
+PROVIDE ( ets_isr_unmask = 0x40000fa8 );
+PROVIDE ( ets_memcmp = 0x400018d4 );
+PROVIDE ( ets_memcpy = 0x400018b4 );
+PROVIDE ( ets_memmove = 0x400018c4 );
+PROVIDE ( ets_memset = 0x400018a4 );
+PROVIDE ( ets_post = 0x40000e24 );
+PROVIDE ( ets_printf = 0x400024cc );
+PROVIDE ( ets_putc = 0x40002be8 );
+PROVIDE ( ets_rtc_int_register = 0x40002a40 );
+PROVIDE ( ets_run = 0x40000e04 );
+PROVIDE ( ets_set_idle_cb = 0x40000dc0 );
+PROVIDE ( ets_set_user_start = 0x40000fbc );
+PROVIDE ( ets_str2macaddr = 0x40002af8 );
+PROVIDE ( ets_strcmp = 0x40002aa8 );
+PROVIDE ( ets_strcpy = 0x40002a88 );
+PROVIDE ( ets_strlen = 0x40002ac8 );
+PROVIDE ( ets_strncmp = 0x40002ab8 );
+PROVIDE ( ets_strncpy = 0x40002a98 );
+PROVIDE ( ets_strstr = 0x40002ad8 );
+PROVIDE ( ets_task = 0x40000dd0 );
+PROVIDE ( ets_timer_arm = 0x40002cc4 );
+PROVIDE ( ets_timer_disarm = 0x40002d40 );
+PROVIDE ( ets_timer_done = 0x40002d80 );
+PROVIDE ( ets_timer_handler_isr = 0x40002da8 );
+PROVIDE ( ets_timer_init = 0x40002e68 );
+PROVIDE ( ets_timer_setfn = 0x40002c48 );
+PROVIDE ( ets_uart_printf = 0x40002544 );
+PROVIDE ( ets_update_cpu_frequency = 0x40002f04 );
+PROVIDE ( ets_vprintf = 0x40001f00 );
+PROVIDE ( ets_wdt_disable = 0x400030f0 );
+PROVIDE ( ets_wdt_enable = 0x40002fa0 );
+PROVIDE ( ets_wdt_get_mode = 0x40002f34 );
+PROVIDE ( ets_wdt_init = 0x40003170 );
+PROVIDE ( ets_wdt_restore = 0x40003158 );
+PROVIDE ( ets_write_char = 0x40001da0 );
+PROVIDE ( get_first_seg = 0x4000091c );
+PROVIDE ( gpio_init = 0x40004c50 );
+PROVIDE ( gpio_input_get = 0x40004cf0 );
+PROVIDE ( gpio_intr_ack = 0x40004dcc );
+PROVIDE ( gpio_intr_handler_register = 0x40004e28 );
+PROVIDE ( gpio_intr_pending = 0x40004d88 );
+PROVIDE ( gpio_intr_test = 0x40004efc );
+PROVIDE ( gpio_output_set = 0x40004cd0 );
+PROVIDE ( gpio_pin_intr_state_set = 0x40004d90 );
+PROVIDE ( gpio_pin_wakeup_disable = 0x40004ed4 );
+PROVIDE ( gpio_pin_wakeup_enable = 0x40004e90 );
+PROVIDE ( gpio_register_get = 0x40004d5c );
+PROVIDE ( gpio_register_set = 0x40004d04 );
+PROVIDE ( hmac_md5 = 0x4000a2cc );
+PROVIDE ( hmac_md5_vector = 0x4000a160 );
+PROVIDE ( hmac_sha1 = 0x4000ba28 );
+PROVIDE ( hmac_sha1_vector = 0x4000b8b4 );
+PROVIDE ( lldesc_build_chain = 0x40004f40 );
+PROVIDE ( lldesc_num2link = 0x40005050 );
+PROVIDE ( lldesc_set_owner = 0x4000507c );
+PROVIDE ( main = 0x40000fec );
+PROVIDE ( md5_vector = 0x400097ac );
+PROVIDE ( mem_calloc = 0x40001c2c );
+PROVIDE ( mem_free = 0x400019e0 );
+PROVIDE ( mem_init = 0x40001998 );
+PROVIDE ( mem_malloc = 0x40001b40 );
+PROVIDE ( mem_realloc = 0x40001c6c );
+PROVIDE ( mem_trim = 0x40001a14 );
+PROVIDE ( mem_zalloc = 0x40001c58 );
+PROVIDE ( memcmp = 0x4000dea8 );
+PROVIDE ( memcpy = 0x4000df48 );
+PROVIDE ( memmove = 0x4000e04c );
+PROVIDE ( memset = 0x4000e190 );
+PROVIDE ( multofup = 0x400031c0 );
+PROVIDE ( pbkdf2_sha1 = 0x4000b840 );
+PROVIDE ( phy_get_romfuncs = 0x40006b08 );
+PROVIDE ( rand = 0x40000600 );
+PROVIDE ( rc4_skip = 0x4000dd68 );
+PROVIDE ( recv_packet = 0x40003d08 );
+PROVIDE ( remove_head_space = 0x40000a04 );
+PROVIDE ( rijndaelKeySetupDec = 0x40008dd0 );
+PROVIDE ( rijndaelKeySetupEnc = 0x40009300 );
+PROVIDE ( rom_abs_temp = 0x400060c0 );
+PROVIDE ( rom_ana_inf_gating_en = 0x40006b10 );
+PROVIDE ( rom_cal_tos_v50 = 0x40007a28 );
+PROVIDE ( rom_chip_50_set_channel = 0x40006f84 );
+PROVIDE ( rom_chip_v5_disable_cca = 0x400060d0 );
+PROVIDE ( rom_chip_v5_enable_cca = 0x400060ec );
+PROVIDE ( rom_chip_v5_rx_init = 0x4000711c );
+PROVIDE ( rom_chip_v5_sense_backoff = 0x4000610c );
+PROVIDE ( rom_chip_v5_tx_init = 0x4000718c );
+PROVIDE ( rom_dc_iq_est = 0x4000615c );
+PROVIDE ( rom_en_pwdet = 0x400061b8 );
+PROVIDE ( rom_get_bb_atten = 0x40006238 );
+PROVIDE ( rom_get_corr_power = 0x40006260 );
+PROVIDE ( rom_get_fm_sar_dout = 0x400062dc );
+PROVIDE ( rom_get_noisefloor = 0x40006394 );
+PROVIDE ( rom_get_power_db = 0x400063b0 );
+PROVIDE ( rom_i2c_readReg = 0x40007268 );
+PROVIDE ( rom_i2c_readReg_Mask = 0x4000729c );
+PROVIDE ( rom_i2c_writeReg = 0x400072d8 );
+PROVIDE ( rom_i2c_writeReg_Mask = 0x4000730c );
+PROVIDE ( rom_iq_est_disable = 0x40006400 );
+PROVIDE ( rom_iq_est_enable = 0x40006430 );
+PROVIDE ( rom_linear_to_db = 0x40006484 );
+PROVIDE ( rom_mhz2ieee = 0x400065a4 );
+PROVIDE ( rom_pbus_dco___SA2 = 0x40007bf0 );
+PROVIDE ( rom_pbus_debugmode = 0x4000737c );
+PROVIDE ( rom_pbus_enter_debugmode = 0x40007410 );
+PROVIDE ( rom_pbus_exit_debugmode = 0x40007448 );
+PROVIDE ( rom_pbus_force_test = 0x4000747c );
+PROVIDE ( rom_pbus_rd = 0x400074d8 );
+PROVIDE ( rom_pbus_set_rxgain = 0x4000754c );
+PROVIDE ( rom_pbus_set_txgain = 0x40007610 );
+PROVIDE ( rom_pbus_workmode = 0x40007648 );
+PROVIDE ( rom_pbus_xpd_rx_off = 0x40007688 );
+PROVIDE ( rom_pbus_xpd_rx_on = 0x400076cc );
+PROVIDE ( rom_pbus_xpd_tx_off = 0x400076fc );
+PROVIDE ( rom_pbus_xpd_tx_on = 0x40007740 );
+PROVIDE ( rom_pbus_xpd_tx_on__low_gain = 0x400077a0 );
+PROVIDE ( rom_phy_reset_req = 0x40007804 );
+PROVIDE ( rom_restart_cal = 0x4000781c );
+PROVIDE ( rom_rfcal_pwrctrl = 0x40007eb4 );
+PROVIDE ( rom_rfcal_rxiq = 0x4000804c );
+PROVIDE ( rom_rfcal_rxiq_set_reg = 0x40008264 );
+PROVIDE ( rom_rfcal_txcap = 0x40008388 );
+PROVIDE ( rom_rfcal_txiq = 0x40008610 );
+PROVIDE ( rom_rfcal_txiq_cover = 0x400088b8 );
+PROVIDE ( rom_rfcal_txiq_set_reg = 0x40008a70 );
+PROVIDE ( rom_rfpll_reset = 0x40007868 );
+PROVIDE ( rom_rfpll_set_freq = 0x40007968 );
+PROVIDE ( rom_rxiq_cover_mg_mp = 0x40008b6c );
+PROVIDE ( rom_rxiq_get_mis = 0x40006628 );
+PROVIDE ( rom_sar_init = 0x40006738 );
+PROVIDE ( rom_set_ana_inf_tx_scale = 0x4000678c );
+PROVIDE ( rom_set_channel_freq = 0x40006c50 );
+PROVIDE ( rom_set_loopback_gain = 0x400067c8 );
+PROVIDE ( rom_set_noise_floor = 0x40006830 );
+PROVIDE ( rom_set_rxclk_en = 0x40006550 );
+PROVIDE ( rom_set_txbb_atten = 0x40008c6c );
+PROVIDE ( rom_set_txclk_en = 0x4000650c );
+PROVIDE ( rom_set_txiq_cal = 0x40008d34 );
+PROVIDE ( rom_start_noisefloor = 0x40006874 );
+PROVIDE ( rom_start_tx_tone = 0x400068b4 );
+PROVIDE ( rom_stop_tx_tone = 0x4000698c );
+PROVIDE ( rom_tx_mac_disable = 0x40006a98 );
+PROVIDE ( rom_tx_mac_enable = 0x40006ad4 );
+PROVIDE ( rom_txtone_linear_pwr = 0x40006a1c );
+PROVIDE ( rom_write_rfpll_sdm = 0x400078dc );
+PROVIDE ( roundup2 = 0x400031b4 );
+PROVIDE ( rtc_enter_sleep = 0x40002870 );
+PROVIDE ( rtc_get_reset_reason = 0x400025e0 );
+PROVIDE ( rtc_intr_handler = 0x400029ec );
+PROVIDE ( rtc_set_sleep_mode = 0x40002668 );
+PROVIDE ( save_rxbcn_mactime = 0x400027a4 );
+PROVIDE ( save_tsf_us = 0x400027ac );
+PROVIDE ( send_packet = 0x40003c80 );
+PROVIDE ( sha1_prf = 0x4000ba48 );
+PROVIDE ( sha1_vector = 0x4000a2ec );
+PROVIDE ( sip_alloc_to_host_evt = 0x40005180 );
+PROVIDE ( sip_get_ptr = 0x400058a8 );
+PROVIDE ( sip_get_state = 0x40005668 );
+PROVIDE ( sip_init_attach = 0x4000567c );
+PROVIDE ( sip_install_rx_ctrl_cb = 0x4000544c );
+PROVIDE ( sip_install_rx_data_cb = 0x4000545c );
+PROVIDE ( sip_post = 0x400050fc );
+PROVIDE ( sip_post_init = 0x400056c4 );
+PROVIDE ( sip_reclaim_from_host_cmd = 0x4000534c );
+PROVIDE ( sip_reclaim_tx_data_pkt = 0x400052c0 );
+PROVIDE ( sip_send = 0x40005808 );
+PROVIDE ( sip_to_host_chain_append = 0x40005864 );
+PROVIDE ( sip_to_host_evt_send_done = 0x40005234 );
+PROVIDE ( slc_add_credits = 0x400060ac );
+PROVIDE ( slc_enable = 0x40005d90 );
+PROVIDE ( slc_from_host_chain_fetch = 0x40005f24 );
+PROVIDE ( slc_from_host_chain_recycle = 0x40005e94 );
+PROVIDE ( slc_init_attach = 0x40005c50 );
+PROVIDE ( slc_init_credit = 0x4000608c );
+PROVIDE ( slc_pause_from_host = 0x40006014 );
+PROVIDE ( slc_reattach = 0x40005c1c );
+PROVIDE ( slc_resume_from_host = 0x4000603c );
+PROVIDE ( slc_select_tohost_gpio = 0x40005dc0 );
+PROVIDE ( slc_select_tohost_gpio_mode = 0x40005db8 );
+PROVIDE ( slc_send_to_host_chain = 0x40005de4 );
+PROVIDE ( slc_set_host_io_max_window = 0x40006068 );
+PROVIDE ( slc_to_host_chain_recycle = 0x40005f10 );
+PROVIDE ( software_reset = 0x4000264c );
+PROVIDE ( spi_flash_attach = 0x40004644 );
+PROVIDE ( srand = 0x400005f0 );
+PROVIDE ( strcmp = 0x4000bdc8 );
+PROVIDE ( strcpy = 0x4000bec8 );
+PROVIDE ( strlen = 0x4000bf4c );
+PROVIDE ( strncmp = 0x4000bfa8 );
+PROVIDE ( strncpy = 0x4000c0a0 );
+PROVIDE ( strstr = 0x4000e1e0 );
+PROVIDE ( timer_insert = 0x40002c64 );
+PROVIDE ( uartAttach = 0x4000383c );
+PROVIDE ( uart_baudrate_detect = 0x40003924 );
+PROVIDE ( uart_buff_switch = 0x400038a4 );
+PROVIDE ( uart_div_modify = 0x400039d8 );
+PROVIDE ( uart_rx_intr_handler = 0x40003bbc );
+PROVIDE ( uart_rx_one_char = 0x40003b8c );
+PROVIDE ( uart_rx_one_char_block = 0x40003b64 );
+PROVIDE ( uart_rx_readbuff = 0x40003ec8 );
+PROVIDE ( uart_tx_one_char = 0x40003b30 );
+PROVIDE ( wepkey_128 = 0x4000bc40 );
+PROVIDE ( wepkey_64 = 0x4000bb3c );
+PROVIDE ( xthal_bcopy = 0x40000688 );
+PROVIDE ( xthal_copy123 = 0x4000074c );
+PROVIDE ( xthal_get_ccompare = 0x4000dd4c );
+PROVIDE ( xthal_get_ccount = 0x4000dd38 );
+PROVIDE ( xthal_get_interrupt = 0x4000dd58 );
+PROVIDE ( xthal_get_intread = 0x4000dd58 );
+PROVIDE ( xthal_memcpy = 0x400006c4 );
+PROVIDE ( xthal_set_ccompare = 0x4000dd40 );
+PROVIDE ( xthal_set_intclear = 0x4000dd60 );
+PROVIDE ( xthal_spill_registers_into_stack_nw = 0x4000e320 );
+PROVIDE ( xthal_window_spill = 0x4000e324 );
+PROVIDE ( xthal_window_spill_nw = 0x4000e320 );
+
+PROVIDE ( Te0 = 0x3fffccf0 );
+PROVIDE ( UartDev = 0x3fffde10 );
+PROVIDE ( cpu_clk_mhz = 0x3fffc704 );
+PROVIDE ( wdt_info = 0x3fffc708 );
+PROVIDE ( flashchip = 0x3fffc714 );
+
+PROVIDE ( esp_print_exception_regs = 0x40001878 );
+PROVIDE ( esp_dump_regs = 0x400017E0 );
+PROVIDE ( esp_FatalException = 0x40001878 );
+PROVIDE ( esp_exception9 = 0x400017E0 );
+PROVIDE ( SPIFlashCnfig = 0x40004568 );
+PROVIDE ( _putc1 = 0x40001dcc );
+PROVIDE ( _putc2_def = 0x400024A8 );
+PROVIDE ( printf_buf_len = 0x3FFFDD58 );
+PROVIDE ( printf_pbuf = 0x3FFFDD5C );
+PROVIDE ( user_start_proc = 0x3FFFDCD0 );
+
+/* 0x3FFFE360..0x3FFFEA80 ram buf max 1824 bytes */
+PROVIDE ( _sprintf_buf = 0x3FFFE360 ); /* char * _sprintf_buf; - use ets_sprintf */
+PROVIDE ( print_mem_buf = 0x3FFFE364 ); /* os_printf_plus() + ets_sprintf() buf 1820 bytes */
+
+PROVIDE ( dport_ = 0x3ff00000);
+PROVIDE ( io2_regs_ = 0x3ff20000);
+PROVIDE ( uart0_ = 0x60000000);
+PROVIDE ( spi1_ = 0x60000100);
+PROVIDE ( spi0_ = 0x60000200);
+PROVIDE ( gpio_ = 0x60000300);
+PROVIDE ( timer_ = 0x60000600);
+PROVIDE ( rtc_ = 0x60000700);
+PROVIDE ( iomux_ = 0x60000800);
+PROVIDE ( wdt_ = 0x60000900);
+PROVIDE ( sar_ = 0x60000D00);
+PROVIDE ( uart1_ = 0x60000F00);
+PROVIDE ( rtc_ram_ = 0x60001000);
+PROVIDE ( rtc_mem_ = 0x60001100);
+PROVIDE ( io4_regs_ = 0x60009800);
+
diff --git a/lib/libmc.a b/lib/libmc.a
new file mode 100644
index 0000000..9181a80
Binary files /dev/null and b/lib/libmc.a differ
diff --git a/lib/libmc_list_files.txt b/lib/libmc_list_files.txt
new file mode 100644
index 0000000..580bf5d
--- /dev/null
+++ b/lib/libmc_list_files.txt
@@ -0,0 +1 @@
+_atexit.o clibrary_init.o creat.o isatty.o lib_a-__adjust.o lib_a-__atexit.o lib_a-__call_atexit.o lib_a-__dprintf.o lib_a-__exp10.o lib_a-__ten_mu.o lib_a-_Exit.o lib_a-a64l.o lib_a-abort.o lib_a-abs.o lib_a-argz_add.o lib_a-argz_add_sep.o lib_a-argz_append.o lib_a-argz_count.o lib_a-argz_create.o lib_a-argz_create_sep.o lib_a-argz_delete.o lib_a-argz_extract.o lib_a-argz_insert.o lib_a-argz_next.o lib_a-argz_replace.o lib_a-argz_stringify.o lib_a-asctime.o lib_a-asctime_r.o lib_a-asiprintf.o lib_a-asniprintf.o lib_a-asnprintf.o lib_a-asprintf.o lib_a-assert.o lib_a-atexit.o lib_a-atof.o lib_a-atoff.o lib_a-atol.o lib_a-atoll.o lib_a-bcmp.o lib_a-bcopy.o lib_a-bsearch.o lib_a-btowc.o lib_a-buf_findstr.o lib_a-bzero.o lib_a-calloc.o lib_a-callocr.o lib_a-cfreer.o lib_a-clearerr.o lib_a-clock.o lib_a-closer.o lib_a-ctime.o lib_a-ctime_r.o lib_a-cxa_atexit.o lib_a-cxa_finalize.o lib_a-difftime.o lib_a-diprintf.o lib_a-div.o lib_a-dprintf.o lib_a-drand48.o lib_a-dtoa.o lib_a-dtoastub.o lib_a-dummy.o lib_a-ecvtbuf.o lib_a-efgcvt.o lib_a-environ.o lib_a-envlock.o lib_a-envz_add.o lib_a-envz_entry.o lib_a-envz_get.o lib_a-envz_merge.o lib_a-envz_remove.o lib_a-envz_strip.o lib_a-eprintf.o lib_a-erand48.o lib_a-errno.o lib_a-execr.o lib_a-exit.o lib_a-fclose.o lib_a-fcloseall.o lib_a-fcntlr.o lib_a-fdopen.o lib_a-feof.o lib_a-ferror.o lib_a-fflush.o lib_a-ffs.o lib_a-fgetc.o lib_a-fgetpos.o lib_a-fgets.o lib_a-fgetwc.o lib_a-fgetws.o lib_a-fileno.o lib_a-findfp.o lib_a-fini.o lib_a-fiprintf.o lib_a-fiscanf.o lib_a-fix_grouping.o lib_a-flags.o lib_a-fmemopen.o lib_a-fopen.o lib_a-fopencookie.o lib_a-fprintf.o lib_a-fpurge.o lib_a-fputc.o lib_a-fputs.o lib_a-fputwc.o lib_a-fputws.o lib_a-fread.o lib_a-freer.o lib_a-freopen.o lib_a-fscanf.o lib_a-fseek.o lib_a-fseeko.o lib_a-fsetpos.o lib_a-fstatr.o lib_a-ftell.o lib_a-ftello.o lib_a-funopen.o lib_a-fvwrite.o lib_a-fwalk.o lib_a-fwide.o lib_a-fwprintf.o lib_a-fwrite.o lib_a-fwscanf.o lib_a-gdtoa-gethex.o lib_a-gdtoa-hexnan.o lib_a-getc.o lib_a-getc_u.o lib_a-getchar.o lib_a-getchar_u.o lib_a-getdelim.o lib_a-getenv.o lib_a-getenv_r.o lib_a-getline.o lib_a-getopt.o lib_a-getreent.o lib_a-gets.o lib_a-getsubopt.o lib_a-gettimeofdayr.o lib_a-gettzinfo.o lib_a-getw.o lib_a-getwc.o lib_a-getwchar.o lib_a-gmtime.o lib_a-gmtime_r.o lib_a-hash.o lib_a-hash_bigkey.o lib_a-hash_buf.o lib_a-hash_func.o lib_a-hash_log2.o lib_a-hash_page.o lib_a-hcreate.o lib_a-hcreate_r.o lib_a-index.o lib_a-init.o lib_a-iprintf.o lib_a-isalnum.o lib_a-isalpha.o lib_a-isascii.o lib_a-isattyr.o lib_a-isblank.o lib_a-iscanf.o lib_a-iscntrl.o lib_a-isdigit.o lib_a-islower.o lib_a-isprint.o lib_a-ispunct.o lib_a-isspace.o lib_a-isupper.o lib_a-iswalnum.o lib_a-iswalpha.o lib_a-iswblank.o lib_a-iswcntrl.o lib_a-iswctype.o lib_a-iswdigit.o lib_a-iswgraph.o lib_a-iswlower.o lib_a-iswprint.o lib_a-iswpunct.o lib_a-iswspace.o lib_a-iswupper.o lib_a-iswxdigit.o lib_a-isxdigit.o lib_a-jp2uc.o lib_a-jrand48.o lib_a-l64a.o lib_a-labs.o lib_a-lcltime.o lib_a-lcltime_r.o lib_a-lcong48.o lib_a-lctype.o lib_a-ldiv.o lib_a-ldpart.o lib_a-ldtoa.o lib_a-linkr.o lib_a-llabs.o lib_a-lldiv.o lib_a-lmessages.o lib_a-lmonetary.o lib_a-lnumeric.o lib_a-locale.o lib_a-lrand48.o lib_a-lseekr.o lib_a-makebuf.o lib_a-malign.o lib_a-malignr.o lib_a-mallinfor.o lib_a-malloc.o lib_a-mallocr.o lib_a-malloptr.o lib_a-mallstatsr.o lib_a-mblen.o lib_a-mblen_r.o lib_a-mbrlen.o lib_a-mbrtowc.o lib_a-mbsinit.o lib_a-mbsnrtowcs.o lib_a-mbsrtowcs.o lib_a-mbstowcs.o lib_a-mbstowcs_r.o lib_a-mbtowc.o lib_a-mbtowc_r.o lib_a-memccpy.o lib_a-memchr.o lib_a-memcmp.o lib_a-memmem.o lib_a-memmove.o lib_a-mempcpy.o lib_a-memrchr.o lib_a-mkdirr.o lib_a-mktemp.o lib_a-mktime.o lib_a-mktm_r.o lib_a-mlock.o lib_a-mprec.o lib_a-mrand48.o lib_a-msize.o lib_a-msizer.o lib_a-mstats.o lib_a-mtrim.o lib_a-nl_langinfo.o lib_a-nrand48.o lib_a-on_exit.o lib_a-open_memstream.o lib_a-openr.o lib_a-perror.o lib_a-printf.o lib_a-psignal.o lib_a-putc.o lib_a-putc_u.o lib_a-putchar.o lib_a-putchar_u.o lib_a-putenv.o lib_a-putenv_r.o lib_a-puts.o lib_a-putw.o lib_a-putwc.o lib_a-putwchar.o lib_a-pvallocr.o lib_a-qsort.o lib_a-raise.o lib_a-rand_r.o lib_a-rand48.o lib_a-readr.o lib_a-realloc.o lib_a-reallocf.o lib_a-reallocr.o lib_a-reent.o lib_a-refill.o lib_a-remove.o lib_a-rename.o lib_a-renamer.o lib_a-rewind.o lib_a-rget.o lib_a-rindex.o lib_a-s_copysign.o lib_a-s_finite.o lib_a-s_fpclassify.o lib_a-s_frexp.o lib_a-s_infconst.o lib_a-s_isinf.o lib_a-s_isinfd.o lib_a-s_isnan.o lib_a-s_isnand.o lib_a-s_ldexp.o lib_a-s_modf.o lib_a-s_nan.o lib_a-s_scalbn.o lib_a-sb_charsets.o lib_a-sbrkr.o lib_a-scanf.o lib_a-sccl.o lib_a-seed48.o lib_a-setbuf.o lib_a-setbuffer.o lib_a-setenv.o lib_a-setenv_r.o lib_a-setjmp.o lib_a-setlinebuf.o lib_a-setvbuf.o lib_a-sf_copysign.o lib_a-sf_finite.o lib_a-sf_fpclassify.o lib_a-sf_frexp.o lib_a-sf_isinf.o lib_a-sf_isinff.o lib_a-sf_isnan.o lib_a-sf_isnanf.o lib_a-sf_ldexp.o lib_a-sf_modf.o lib_a-sf_nan.o lib_a-sf_scalbn.o lib_a-signal.o lib_a-signalr.o lib_a-signgam.o lib_a-siprintf.o lib_a-siscanf.o lib_a-sniprintf.o lib_a-snprintf.o lib_a-sprintf.o lib_a-srand48.o lib_a-sscanf.o lib_a-statr.o lib_a-stdio.o lib_a-stpcpy.o lib_a-stpncpy.o lib_a-strcasecmp.o lib_a-strcasestr.o lib_a-strcat.o lib_a-strchrnul.o lib_a-strcmp.o lib_a-strcoll.o lib_a-strcpy.o lib_a-strcspn.o lib_a-strdup.o lib_a-strdup_r.o lib_a-strerror.o lib_a-strerror_r.o lib_a-strftime.o lib_a-strlcat.o lib_a-strlcpy.o lib_a-strlwr.o lib_a-strncasecmp.o lib_a-strncat.o lib_a-strncmp.o lib_a-strncpy.o lib_a-strndup.o lib_a-strndup_r.o lib_a-strnlen.o lib_a-strpbrk.o lib_a-strptime.o lib_a-strrchr.o lib_a-strsep.o lib_a-strsignal.o lib_a-strspn.o lib_a-strstr.o lib_a-strtod.o lib_a-strtok.o lib_a-strtok_r.o lib_a-strtold.o lib_a-strtoll.o lib_a-strtoll_r.o lib_a-strtoul.o lib_a-strtoull.o lib_a-strtoull_r.o lib_a-strupr.o lib_a-strxfrm.o lib_a-svfiprintf.o lib_a-svfiscanf.o lib_a-svfiwprintf.o lib_a-svfiwscanf.o lib_a-svfprintf.o lib_a-svfscanf.o lib_a-svfwprintf.o lib_a-svfwscanf.o lib_a-swab.o lib_a-swprintf.o lib_a-swscanf.o lib_a-sysclose.o lib_a-sysexecve.o lib_a-sysfcntl.o lib_a-sysfork.o lib_a-sysfstat.o lib_a-sysgetpid.o lib_a-sysgettod.o lib_a-sysisatty.o lib_a-syskill.o lib_a-syslink.o lib_a-syslseek.o lib_a-sysopen.o lib_a-sysread.o lib_a-syssbrk.o lib_a-sysstat.o lib_a-system.o lib_a-systimes.o lib_a-sysunlink.o lib_a-syswait.o lib_a-syswrite.o lib_a-tdelete.o lib_a-tdestroy.o lib_a-tfind.o lib_a-time.o lib_a-timelocal.o lib_a-timesr.o lib_a-tmpfile.o lib_a-tmpnam.o lib_a-toascii.o lib_a-tolower.o lib_a-toupper.o lib_a-towctrans.o lib_a-towlower.o lib_a-towupper.o lib_a-tsearch.o lib_a-twalk.o lib_a-tzlock.o lib_a-tzset.o lib_a-tzset_r.o lib_a-tzvars.o lib_a-u_strerr.o lib_a-unctrl.o lib_a-ungetc.o lib_a-ungetwc.o lib_a-unlinkr.o lib_a-valloc.o lib_a-vallocr.o lib_a-vasiprintf.o lib_a-vasniprintf.o lib_a-vasnprintf.o lib_a-vasprintf.o lib_a-vdiprintf.o lib_a-vdprintf.o lib_a-vfiprintf.o lib_a-vfiscanf.o lib_a-vfiwprintf.o lib_a-vfiwscanf.o lib_a-vfprintf.o lib_a-vfscanf.o lib_a-vfwprintf.o lib_a-vfwscanf.o lib_a-viprintf.o lib_a-viscanf.o lib_a-vprintf.o lib_a-vscanf.o lib_a-vsiprintf.o lib_a-vsiscanf.o lib_a-vsniprintf.o lib_a-vsnprintf.o lib_a-vsprintf.o lib_a-vsscanf.o lib_a-vswprintf.o lib_a-vswscanf.o lib_a-vwprintf.o lib_a-vwscanf.o lib_a-wbuf.o lib_a-wcpcpy.o lib_a-wcpncpy.o lib_a-wcrtomb.o lib_a-wcscasecmp.o lib_a-wcscat.o lib_a-wcschr.o lib_a-wcscmp.o lib_a-wcscoll.o lib_a-wcscpy.o lib_a-wcscspn.o lib_a-wcsdup.o lib_a-wcsftime.o lib_a-wcslcat.o lib_a-wcslcpy.o lib_a-wcslen.o lib_a-wcsncasecmp.o lib_a-wcsncat.o lib_a-wcsncmp.o lib_a-wcsncpy.o lib_a-wcsnlen.o lib_a-wcsnrtombs.o lib_a-wcspbrk.o lib_a-wcsrchr.o lib_a-wcsrtombs.o lib_a-wcsspn.o lib_a-wcsstr.o lib_a-wcstod.o lib_a-wcstok.o lib_a-wcstol.o lib_a-wcstold.o lib_a-wcstoll.o lib_a-wcstoll_r.o lib_a-wcstombs.o lib_a-wcstombs_r.o lib_a-wcstoul.o lib_a-wcstoull.o lib_a-wcstoull_r.o lib_a-wcswidth.o lib_a-wcsxfrm.o lib_a-wctob.o lib_a-wctomb.o lib_a-wctomb_r.o lib_a-wctrans.o lib_a-wctype.o lib_a-wcwidth.o lib_a-wmemchr.o lib_a-wmemcmp.o lib_a-wmemcpy.o lib_a-wmemmove.o lib_a-wmemset.o lib_a-wprintf.o lib_a-writer.o lib_a-wscanf.o lib_a-wsetup.o lib_a-xpg_strerror_r.o lib_a-atoi.o lib_a-strchr.o lib_a-strtol.o lib_a-impure.o lib_a-ctype_.o
\ No newline at end of file
diff --git a/lib/libmem.a b/lib/libmem.a
new file mode 100644
index 0000000..96bd5ef
Binary files /dev/null and b/lib/libmem.a differ
diff --git a/lib/libmgcc.a b/lib/libmgcc.a
new file mode 100644
index 0000000..9d574c3
Binary files /dev/null and b/lib/libmgcc.a differ
diff --git a/lib/libmgcc_list_files.txt b/lib/libmgcc_list_files.txt
new file mode 100644
index 0000000..7dffa3f
--- /dev/null
+++ b/lib/libmgcc_list_files.txt
@@ -0,0 +1 @@
+__gcc_bcmp.o __main.o _absvdi2.o _absvsi2.o _addvdi3.o _addvsi3.o _ashldi3.o _ashrdi3.o _bswapdi2.o _bswapsi2.o _clear_cache.o _clrsbdi2.o _clrsbsi2.o _clz.o _clzdi2.o _clzsi2.o _cmpdf2.o _cmpdi2.o _cmpsf2.o _ctors.o _ctzdi2.o _ctzsi2.o _divdc3.o _divsc3.o _divsf3.o _divtc3.o _divxc3.o _eprintf.o _ffsdi2.o _ffssi2.o _fixdfdi.o _fixsfdi.o _fixsfsi.o _fixtfdi.o _fixunsdfdi.o _fixunssfdi.o _fixunstfdi.o _fixunsxfdi.o _fixunsxfsi.o _fixxfdi.o _floatdidf.o _floatdisf.o _floatditf.o _floatdixf.o _floatundidf.o _floatundisf.o _floatunditf.o _floatundixf.o _lshrdi3.o _moddi3.o _modsi3.o _muldc3.o _mulsc3.o _mulsi3.o _multc3.o _mulvdi3.o _mulvsi3.o _mulxc3.o _negdf2.o _negdi2.o _negsf2.o _negvdi2.o _negvsi2.o _paritydi2.o _paritysi2.o _popcount_tab.o _popcountdi2.o _popcountsi2.o _powidf2.o _powisf2.o _powitf2.o _powixf2.o _subvdi3.o _subvsi3.o _trampoline.o _ucmpdi2.o _udiv_w_sdiv.o _udivmoddi4.o emutls.o enable-execute-stack.o lib2funcs.o unwind-c.o unwind-dw2.o unwind-dw2-fde.o unwind-sjlj.o
\ No newline at end of file
diff --git a/lib/new_libmc.bat b/lib/new_libmc.bat
new file mode 100644
index 0000000..3e7d6b0
--- /dev/null
+++ b/lib/new_libmc.bat
@@ -0,0 +1,8 @@
+del libmc.a
+md libc
+cd libc
+C:\Espressif\xtensa-lx106-elf\bin\xtensa-lx106-elf-ar x ..\libc.a
+@rem delete: lib_a-rand.o lib_a-strlen.o lib_a-memcpy.o lib_a-memset.o
+C:\Espressif\xtensa-lx106-elf\bin\xtensa-lx106-elf-ar ru ..\libmc.a @..\libmc_list_files.txt
+cd ..
+rd /q /s libc
diff --git a/lib/new_libmem.bat b/lib/new_libmem.bat
new file mode 100644
index 0000000..9f348a3
--- /dev/null
+++ b/lib/new_libmem.bat
@@ -0,0 +1,9 @@
+del libmem.a
+md main.lib
+cd main.lib
+C:\Espressif\xtensa-lx106-elf\bin\xtensa-lx106-elf-ar x ..\libmain.a
+@rem eagle_lib.o ets_timer.o mem_manager.o user_interface.o eagle_lwip_if.o
+@rem del: spi_flash.o app_main.o ets_timer.o eagle_lwip_if.o user_interface.o
+C:\Espressif\xtensa-lx106-elf\bin\xtensa-lx106-elf-ar ru ..\libmem.a mem_manager.o
+cd ..
+rd /q /s main.lib
diff --git a/lib/new_libmgcc.bat b/lib/new_libmgcc.bat
new file mode 100644
index 0000000..283864e
--- /dev/null
+++ b/lib/new_libmgcc.bat
@@ -0,0 +1,11 @@
+del libmgcc.a
+md libgcc
+cd libgcc
+C:\Espressif\xtensa-lx106-elf\bin\xtensa-lx106-elf-ar x ..\libgcc.a
+@rem delete:
+@rem _fixunsdfsi.o _umoddi3.o _umodsi3.o _extendsfdf2.o _fixdfsi.o _divsi3.o _divdf3.o _divdi3.o _fixunssfsi.o
+@rem _floatsidf.o _floatsisf.o _floatunsidf.o _floatunsisf.o _muldf3.o _muldi3.o _mulsf3.o _truncdfsf2.o
+@rem _udivdi3.o _udivsi3.o _umulsidi3.o _addsubdf3.o _addsubsf3.o
+C:\Espressif\xtensa-lx106-elf\bin\xtensa-lx106-elf-ar ru ..\libmgcc.a @..\libmgcc_list_files.txt
+cd ..
+rd /q /s libgcc
diff --git a/lib/o-asm.bat b/lib/o-asm.bat
new file mode 100644
index 0000000..c72ef75
--- /dev/null
+++ b/lib/o-asm.bat
@@ -0,0 +1,8 @@
+for %%a in (*.a) do (
+md %%a.o
+cd %%a.o
+C:\Espressif\xtensa-lx106-elf\bin\xtensa-lx106-elf-ar x ..\%%a
+for %%o in (*.o) do C:\Espressif\xtensa-lx106-elf\bin\xtensa-lx106-elf-objdump -S %%o > %%o.asm
+cd ..
+)
+
diff --git a/mem.txt b/mem.txt
new file mode 100644
index 0000000..31ee59d
--- /dev/null
+++ b/mem.txt
@@ -0,0 +1,10 @@
+ Section| Description| Start (hex)| End (hex)|Used space
+------------------------------------------------------------------------------
+ data| Initialized Data (RAM)| 3FFE8000| 3FFE8000| 0
+ rodata| ReadOnly Data (RAM)| 3FFE8000| 3FFE8004| 4
+ bss| Uninitialized Data (RAM)| 3FFE8008| 3FFE8030| 40
+ text| Cached Code (IRAM)| 40100000| 4010037C| 892
+irom0_text| Uncached Code (SPI)| 40240000| 40240548| 1352
+Total Used RAM : 44
+Free RAM : 81876
+Free IRam : 31894
diff --git a/mem_usage.bat b/mem_usage.bat
new file mode 100644
index 0000000..ccb9312
--- /dev/null
+++ b/mem_usage.bat
@@ -0,0 +1 @@
+C:\Espressif\utils\MemAnalyzer.exe C:\Espressif\xtensa-lx106-elf\bin\xtensa-lx106-elf-objdump.exe .\app\.output\eagle\image\eagle.app.v6.out >>mem.txt