Hola, utilizo la tarjeta ** al Thinker esp32**
Estoy intentando compilar un programa en el assembler del ULP y no consigo el programa objeto, ni desde el mismo IDE ni compilando fuera, me saltan errores como si no conociera según que códigos.
Cuando uso las MACRO, si que funcionan pero como en todas partes dicen que son obsoletas, pues quiero intentar hacer correr el procesador de bajo consumo con el assembler compilado.
Primero creando una nueva pestaña en el IDE " Sketch_ULP.S " la procesa pero me da una serie de errores de codigo, los mismos que si ese fichero lo compilo fuera con el programa xtensa-esp32-elf-as.exe
Os paso el codigo del Sketch_ULP.S
.global entry
entry:
move r3, r0
ld r0, r3, 0
add r0, r1, 1
st r0, r3, 0
HALT
WAKE
En la serie de errores sale como si hubiera códigos que no conoce. El "add" si que lo reconoce, este como ejemplo no lo reconoce.
"C:\Arduino_CAM\Button_Test_ULP\Sketch_ULP.S:5: Error: unknown opcode or format name 'move' "
Y el codigo del Sketch.ino
// Programa para pruebas del ULP
//
#include "driver/rtc_io.h"
#include "esp_sleep.h"
#include "esp32/ulp.h"
#include "EEPROM.h"
//
// EEPROM.write(0,valor) // Escritura EEPROM
// EEPROM.read(0) // Lecturas EEPROM
//
//__attribute__((aligned(4))) static uint32_t ulp_data[10] ; // Reserva memmoria????
extern "C" {
// #include "ulp_miprograma.h" // este es el programa compilado desde el
extern const uint8_t ulp_main_bin_start ;
extern const uint8_t ulp_main_bin_end ;
}
void setup() {
Serial.begin(115200) ;
const ulp_insn_t program[] = {
// aqui iban las Macro I_MOVE........
};
size_t load_addr = 0;
size_t size = sizeof(program)/sizeof(ulp_insn_t);
ulp_process_macros_and_load (load_addr, program, &size ) ;
ulp_run (load_addr) ;
}
void loop() {
Delay (1000);
}
Diria que el **xtensa-esp32-elf-as.exe** no reconoce todos los neumonics del procesador ULP. ¿ puede que para Arduino haya otros?
Alguien me puede ayudar como compilar y cargar en el ULP.
Gracias por anticipado