public:development:arduinoide

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
public:development:arduinoide [2022/06/16 12:51]
jsanchez created
public:development:arduinoide [2024/10/09 08:53] (current)
Line 1: Line 1:
 # ArduinoIDE # ArduinoIDE
  
-{{tag> arduino iot development}}+{{tag> arduino iot development c_programming}}
  
 # ArduinoIDE portable # ArduinoIDE portable
Line 168: Line 168:
  
 - Exit Picocom with `Ctrl+A`, `Ctrl+X`. - Exit Picocom with `Ctrl+A`, `Ctrl+X`.
 +
 +
 +# Meter código C en Arduino
 +
 +Se pueden meter archivos `.c` y sus respectivos `.h` en el mismo directorio que el sketch:
 +
 +Fuente: https://forum.arduino.cc/index.php?topic=45003.0
 +
 +C++, which the Arduino is programmed in, performs name-mangling. C, which your external functions are written in, does not.
 +
 +Name-mangling means that the actual function that gets called is called using a name that is composed of the class name, function name, and argument type names.
 +
 +In order to call a C function from a C++ function, the compiler needs to know that it should use C calling syntax, not C++ calling syntax.
 +
 +In the header file, before any function declarations, add:
 +
 +```
 +#ifdef __cplusplus
 +extern "C" {
 +#endif
 +```
 +
 +
 +After all function declarations, add:
 +
 +```
 +#ifdef __cplusplus
 +}
 +#endif
 +```
 +
 +This will allow the C functions to be called from C++.
 +
 +**IMPORTANT** Make sure that the files that you are compiling appear in the ArduinoIDE as tabs. If not, the compiler does not recognize them. Always rename your `.c` files to `.cpp`.
 +
 +
 +# Code Footprint
 +
 +Reducir el tamaño de los firmwares
 +
 +Por defecto, arduino le pasa al compilador el Flag `-g`, este flat añade a los archivos `.o` varios campos de depuración,
 +que son listados en el `.map` como `.debug_info`, `.debug_range`, etc. Este código incrementa considerablemente el
 +tamaño del firmware.
 +
 +Para eliminar el código de depuración de los archivos objeto, editar el archivo `platform.txt` y quitar la opción
 +`-g` de todos los flags de compilación.
 +
 +
 +- Los flags de compilación se encuentran en el archivo `platform.txt`, son líneas con el nombre `compiler`.
 + 
 +E.g.:
 +
 +```
 +arduino-1.8.0/portable/packages/Arrow/hardware/samd/2.1.0/platform.txt
 +```
 +
 +Luego compilar los firmwares respectivos, abrir el directorio de compilación y utilizar el script:
 +
 +```
 +python3 ~/bin/analyze_map.py coap_eap_integration.ino.map
 +```
 +
 +Los archivos que pertenecen a cada una de las partes del código están listados en el readme de cada firmware.
 +
 +
 +Ejemplo de lo que estamos hablando:
 +
 +
 +```
 +
 +Coap
 +
 +
 +/tmp/arduino_build_288104/sketch/coap_eap_integration.ino.cpp.o    1916  (code : 1724 data : 192)
 +
 +
 +/tmp/arduino_build_288104/sketch/eap-peer.cpp.o     611  (code                : 432  data : 179)
 +/tmp/arduino_build_288104/sketch/eax.cpp.o     787  (code                      : 608  data : 179)
 +/tmp/arduino_build_288104/sketch/eap-psk.cpp.o    1207  (code                   : 995  data : 212)
 +/tmp/arduino_build_288104/sketch/aes.cpp.o    1719  (code                      : 1541 data : 178)
 +/tmp/arduino_build_288104/sketch/cantcoap.cpp.o    4592  (code                : 4413 data : 179)
 +TOTAL                                                                            : 7989      : 927 : 8916
 +
 +/tmp/arduino_build_288104/sketch/at_client.cpp.o     828  (code                : 649  data : 179)
 +/tmp/arduino_build_288104/sketch/bg96.cpp.o    1740  (code                      : 1561 data : 179)
 +TOTAL                                                                            : 2213      : 358 : 2571
 +
 +### PANA
 +
 +
 +/tmp/arduino_build_319025/sketch/panatiki_integration.ino.cpp.o    1392  (code : 1188 data : 204)
 +
 +
 +/tmp/arduino_build_319025/sketch/eap-peer.cpp.o     632  (code                : 449  data : 183)
 +/tmp/arduino_build_319025/sketch/eax.c.o     787  (code                         : 608  data : 179)
 +/tmp/arduino_build_319025/sketch/eap-psk.cpp.o    1203  (code                   : 975  data : 228)
 +/tmp/arduino_build_319025/sketch/aes.c.o    1719  (code                         : 1541 data : 178)
 +/tmp/arduino_build_319025/sketch/state-machine.cpp.o    3245  (code             : 3066 data : 179)
 +TOTAL                                                                            : 6639      : 947 : 7586
 +
 +/tmp/arduino_build_319025/sketch/at_client.cpp.o     828  (code                : 649  data : 179)
 +/tmp/arduino_build_319025/sketch/bg96.cpp.o    1743  (code                      : 1564 data : 179)
 +TOTAL                                                                            : 2213      : 358 : 2571
 +
 +```
 +
 +
  • public/development/arduinoide.1655376687.txt.gz
  • Last modified: 2024/10/09 08:35
  • (external edit)