mirror of
https://github.com/esp8266/Arduino.git
synced 2025-05-28 03:41:25 +03:00
* Update to BearSSL 0.6+ release, add AES_CCM modes Pull in latest BearSSL head (0.6 + minor additions) release and add AES_CCM modes to the encryption options. * Enable the aes_ccm initialization in client/server * Initial attempt * Working code with second stack thunking * Remove #ifdefs in .S file, not needed. * Clean up thunks and remove separate stack flag * Fix PIO assembler errors * Remove #ifdef code changes, ensure same code as PC Remove "#ifdef ESP8266;...;#else;...;#endif" brackets in BearSSL to ensure the host-tested code is the same as the ESP8266-run code. * Move to latest BearSSL w/EC progmem savings * Merge with master * Add br_thunk_* calls to do ref counting, painting Add reference counting br_thunk_add/del_ref() to replace stack handling code in the class. Add in stack painting and max usage calculation. * Add in postmortem stack dump hooks When a crash occurs while in the second stack, dump the BSSL stack and then also the stack that it was called from (either cont or sys). * Update stack dump to match decoder expectations * Move thunk to code core for linkiage The thunk code needs to be visible to the core routines, so move it to the cores/esp8266 directory. Probably need to refactor the stack setup and the bearssl portion to avoid dependency on bearssl libs in cores/esp8266 * Add 2nd stack dump utility routine * Refactor once more, update stack size, add stress Make stack_thunks generic, remove bearssl include inside of cores/esp8266. Allocate the stack on a WiFiServerSecure object creation to avoid fragmentation since we will need to allocate the stack to do any connected work, anyway. A stress test is now included which checks the total BearSSL second stack usage for a variety of TLS handshake and certificate options from badssl.org. * Update to latest to-thunks branch * Add BearSSL device test using stack stress Run a series of SSL connection and transmission tests that stress BearSSL and its stack usage to the device tests. Modify device tests to include a possible SPIFFS generation and upload when a make_spiffs.py file is present in a test directory. * Use bearssl/master branch, not /to-thunks branch Update to use the merged master branch of bearssl. Should have no code changes.
122 lines
4.0 KiB
Makefile
122 lines
4.0 KiB
Makefile
SHELL := /bin/bash
|
|
V ?= 0
|
|
TEST_LIST ?= $(wildcard test_*/*.ino)
|
|
ESP8266_CORE_PATH ?= ../..
|
|
BUILD_DIR ?= $(PWD)/.build
|
|
HARDWARE_DIR ?= $(PWD)/.hardware
|
|
ESPTOOL ?= $(ESP8266_CORE_PATH)/tools/esptool/esptool
|
|
MKSPIFFS ?= $(ESP8266_CORE_PATH)/tools/mkspiffs/mkspiffs
|
|
UPLOAD_PORT ?= $(shell ls /dev/tty* | grep -m 1 -i USB)
|
|
UPLOAD_BAUD ?= 921600
|
|
UPLOAD_BOARD ?= nodemcu
|
|
BS_DIR ?= libraries/BSTest
|
|
DEBUG_LEVEL ?= DebugLevel=None____
|
|
#FQBN ?= esp8266com:esp8266:generic:CpuFrequency=80,FlashFreq=40,FlashMode=dio,UploadSpeed=115200,FlashSize=4M1M,LwIPVariant=v2mss536,ResetMethod=none,Debug=Serial,$(DEBUG_LEVEL)
|
|
FQBN ?= esp8266com:esp8266:generic:xtal=80,FlashFreq=40,FlashMode=dio,baud=115200,eesz=4M1M,ip=lm2,ResetMethod=none,dbg=Serial,$(DEBUG_LEVEL)
|
|
BUILD_TOOL := $(ARDUINO_IDE_PATH)/arduino-builder
|
|
TEST_CONFIG := test_env.cfg
|
|
TEST_REPORT_XML := test_report.xml
|
|
TEST_REPORT_HTML := test_report.html
|
|
|
|
|
|
ifneq ("$(V)","1")
|
|
SILENT = @
|
|
else
|
|
BUILDER_DEBUG_FLAG = -verbose
|
|
RUNNER_DEBUG_FLAG = -d
|
|
UPLOAD_VERBOSE_FLAG = -v
|
|
endif
|
|
|
|
|
|
all: count tests test_report
|
|
|
|
$(TEST_LIST): | virtualenv $(TEST_CONFIG) $(BUILD_DIR) $(HARDWARE_DIR)
|
|
|
|
tests: $(TEST_LIST)
|
|
|
|
$(TEST_LIST): LOCAL_BUILD_DIR=$(BUILD_DIR)/$(notdir $@)
|
|
|
|
$(TEST_LIST):
|
|
@echo Running $(words $(TEST_LIST)) tests
|
|
$(SILENT)mkdir -p $(LOCAL_BUILD_DIR)
|
|
ifneq ("$(NO_BUILD)","1")
|
|
@test -n "$(ARDUINO_IDE_PATH)" || (echo "Please export ARDUINO_IDE_PATH" && exit 1)
|
|
@echo Compiling $(notdir $@)
|
|
$(SILENT)$(BUILD_TOOL) -compile -logger=human \
|
|
-libraries "$(PWD)/libraries" \
|
|
-core-api-version="10608" \
|
|
-warnings=none \
|
|
$(BUILDER_DEBUG_FLAG) \
|
|
-build-path $(LOCAL_BUILD_DIR) \
|
|
-tools $(ARDUINO_IDE_PATH)/tools-builder \
|
|
-hardware $(HARDWARE_DIR)\
|
|
-hardware $(ARDUINO_IDE_PATH)/hardware \
|
|
-fqbn=$(FQBN) \
|
|
$@
|
|
endif
|
|
ifneq ("$(NO_UPLOAD)","1")
|
|
@test -n "$(UPLOAD_PORT)" || (echo "Failed to detect upload port, please export UPLOAD_PORT manually" && exit 1)
|
|
@test -e $(dir $@)/make_spiffs.py && (echo "Generating and uploading SPIFFS" && \
|
|
(cd $(dir $@) && python ./make_spiffs.py) && \
|
|
$(MKSPIFFS) --create $(dir $@)data/ --size 0xFB000 \
|
|
--block 8192 --page 256 $(LOCAL_BUILD_DIR)/spiffs.img && \
|
|
$(ESPTOOL) $(UPLOAD_VERBOSE_FLAG) \
|
|
-cp $(UPLOAD_PORT) \
|
|
-cb $(UPLOAD_BAUD) \
|
|
-cd $(UPLOAD_BOARD) \
|
|
-ca 0x300000 \
|
|
-cf $(LOCAL_BUILD_DIR)/spiffs.img ) || (echo "No SPIFFS to upload")
|
|
@echo Uploading binary
|
|
$(SILENT)$(ESPTOOL) $(UPLOAD_VERBOSE_FLAG) \
|
|
-cp $(UPLOAD_PORT) \
|
|
-cb $(UPLOAD_BAUD) \
|
|
-cd $(UPLOAD_BOARD) \
|
|
-cf $(LOCAL_BUILD_DIR)/$(notdir $@).bin
|
|
endif
|
|
ifneq ("$(NO_RUN)","1")
|
|
@test -n "$(UPLOAD_PORT)" || (echo "Failed to detect upload port, please export UPLOAD_PORT manually" && exit 1)
|
|
@echo Running tests
|
|
$(SILENT)$(ESPTOOL) $(UPLOAD_VERBOSE_FLAG) -cp $(UPLOAD_PORT) -cd $(UPLOAD_BOARD) -cr
|
|
@source $(BS_DIR)/virtualenv/bin/activate && \
|
|
python $(BS_DIR)/runner.py \
|
|
$(RUNNER_DEBUG_FLAG) \
|
|
-p $(UPLOAD_PORT) \
|
|
-n $(basename $(notdir $@)) \
|
|
-o $(LOCAL_BUILD_DIR)/test_result.xml \
|
|
--env-file $(TEST_CONFIG) \
|
|
`test -f $(addsuffix .py, $(basename $@)) && echo "-m $(addsuffix .py, $(basename $@))" || echo ""`
|
|
endif
|
|
|
|
$(TEST_REPORT_XML): $(HARDWARE_DIR) virtualenv
|
|
@$(BS_DIR)/virtualenv/bin/xunitmerge $(shell find $(BUILD_DIR) -name 'test_result.xml' | xargs echo) $(TEST_REPORT_XML)
|
|
|
|
$(TEST_REPORT_HTML): $(TEST_REPORT_XML) | virtualenv
|
|
@$(BS_DIR)/virtualenv/bin/junit2html $< $@
|
|
|
|
test_report: $(TEST_REPORT_HTML)
|
|
@echo "Test report generated in $(TEST_REPORT_HTML)"
|
|
|
|
$(BUILD_DIR):
|
|
mkdir -p $(BUILD_DIR)
|
|
|
|
$(HARDWARE_DIR):
|
|
mkdir -p $(HARDWARE_DIR)/esp8266com
|
|
cd $(HARDWARE_DIR)/esp8266com && ln -s $(realpath $(ESP8266_CORE_PATH)) esp8266
|
|
|
|
virtualenv:
|
|
@make -C $(BS_DIR) virtualenv
|
|
|
|
clean:
|
|
rm -rf $(BUILD_DIR)
|
|
rm -rf $(HARDWARE_DIR)
|
|
rm -f $(TEST_REPORT_HTML) $(TEST_REPORT_XML)
|
|
|
|
$(TEST_CONFIG):
|
|
@echo "****** "
|
|
@echo "****** $(TEST_CONFIG) does not exist"
|
|
@echo "****** Create one from $(TEST_CONFIG).template"
|
|
@echo "****** "
|
|
@false
|
|
|
|
.PHONY: tests all count virtualenv test_report $(TEST_LIST)
|