Página 1 de 1

ESP8266 Linker - Configurar todo código no IROM sem ICACHE_F

MensagemEnviado: 27 Jul 2019 19:53
por Rodrigo_P_A
ESP8266 Linker - Configurar todo código no IROM sem ter que inserir o ICACHE_FLASH_ATTR a cada rotina.

Alguém aqui já fez isso? Configurar o linker para que todo código seja colocado por padrao na IROM1 (SPI FLASH) ao invés da RAM, sem ter que colocar ICACHE_FLASH_ATTR a cada rotina, pois isso não é muito legal quando precisa reaproveitar código que já está escrito e que já são usados em outros projetos.

Re: ESP8266 Linker - Configurar todo código no IROM sem ICAC

MensagemEnviado: 27 Jul 2019 23:06
por Rodrigo_P_A
Resolvido.

Configurar para gerar os códigos objeto com extensão, por exemplo:
.c.o para códigos objetos gerados à partir do c
.cpp.o para códigos objectos gerados à partir do c++

Altere a configuração do linker e adicione os *.c.o e *.cpp.o para que sejam alocados na IROM (flash spi)

no meu caso, eu adicionei:

*.c.o(.literal*, .text*)
*.cpp.o(.literal*, .text*)


.irom0.text : ALIGN(4)
{
_irom0_text_start = ABSOLUTE(.);


*.c.o(.literal*, .text*)
*.cpp.o(.literal*, .text*)


*(.irom0.literal .irom.literal .irom.text.literal .irom0.text .irom.text)
_irom0_text_end = ABSOLUTE(.);
} >irom0_0_seg :irom0_0_phdr

Dessa forma agora todo meu código c ou c++ (cpp) já é compilado e colocado na sessão irom sem eu precisar ficar colocando ICACHE_FLASH_ATTR a cada rotina.

Fica a dica.

Re: ESP8266 Linker - Configurar todo código no IROM sem ICAC

MensagemEnviado: 28 Jul 2019 10:03
por tcpipchip
resolveste rápido hein! :)

Re: ESP8266 Linker - Configurar todo código no IROM sem ICAC

MensagemEnviado: 28 Jul 2019 11:08
por Rodrigo_P_A
tcpipchip escreveu:resolveste rápido hein! :)

Obrigado. Resolvi buscando várias informações na internet.

A maioria dos exemplos que eu encontrei, são para compilar com o SDK da EXPRESSIF colocando os fontes no mesmo diretório, ou tendo que alterar o makefile, ou usando arduino (não gosto).

Eu estou usando com o CodeBlocks e mantendo a estrutura de arquivos que eu já tenho e libs e fontes que eu já usava em outros projetos. Acho muito mais flexível, deu um pouco de trabalho, mas ficou muito mais fácil (pelo menos pra mim).