blob: 8a9c5b7e9c990dc78cc346c91a578fbbbff969c4 [file] [log] [blame] [view]
# TLS Example Application
The folder hosts an example TLS application based on pigweed TLS modules. The
example application connects to www.google.com:443, performs hanshake, verifies
certificate, sends a https get request and listens for response. The
application can be built into multiple variants using different TLS libraries
and transport backends (impelmented in backends/). See BUILD.gn for examples.
Due to the use of TLS libraries, the binary size of the application can
potentially be very big (300K ~ 600K+). Make sure that the target board has
enough FLASH/RAM for running the application. For pigweed teensy41 target, it
is recommended to modify the linker script to run all code from FLASH instead
of ITCM. Specifically, in linker script
`arduino/cores/teensy/hardware/teensy/avr/cores/teensy4/imxrt1062_t41.ld`
make the following changes:
Move section *(.text*) from
...
.text.itcm : {
. = . 32; /* MPU to trap NULL pointer deref */
*(.fastrun)
*(.text*)
. = ALIGN(16);
} > ITCM AT> FLASH
...
into segment `.text.progmem`. i.e.:
...
.text.progmem : {
KEEP(*(.flashconfig))
FILL(0xFF)
. = ORIGIN(FLASH) 0x1000;
KEEP(*(.ivt))
KEEP(*(.bootdata))
KEEP(*(.vectors))
KEEP(*(.startup))
*(.text*)
*(.flashmem*)
*(.progmem*)
. = ALIGN(4);
KEEP(*(.init))
__preinit_array_start = .;
KEEP (*(.preinit_array))
__preinit_array_end = .;
__init_array_start = .;
KEEP (*(.init_array))
__init_array_end = .;
. = ALIGN(16);
} > FLASH
...
Place segment .ARM.exids in FLASH. i.e:
...
.ARM.exidx : {
__exidx_start = .;
*(.ARM.exidx* .gnu.linkonce.armexidx.*)
__exidx_end = .;
} > FLASH
...
Before flashing the elf binary to the target board, consider stripping the
binary to remove debug and symbol sections to make transfer faster. i.e.
arm-none-eabi-strip -s input.elf -o output.elf