| # 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 |