본문 바로가기
Study/ESP8266(WIFI),ESP32(BLE,WIFI)

arduino에서 nodeMCU(ESP8266)의 freeRAM 값 얻어오기

by Answer Choi 2016. 1. 7.
반응형

skthingplug를 이용하기 위해 GMMP 라이브러리를 보면 Arduino용으로 freeRAM 값을 얻어오는


코드를 보면 아래와 같다.


1
2
3
4
5
6
7
8
9
10
int freeRam () {
  // __brkval is the address of the top of the heap
  // if memory has been allocated.
  // If __brkval is zero then it means malloc has not used any memory yet, so
  // we look at the address of __heap_start.
  extern int __heap_start;
  extern int *__brkval; // address of the top of heap
  int stack_top;
  return (int)&stack_top - ((int)__brkval == 0 ? (int)&__heap_start : (int)__brkval);
}
cs


하지만 이 코드를 nodeMCU(ESP8266)에서 사용하면 에러를 발생시킨다.


Community를 찾아보니 해결 방법이 있습니다.


https://github.com/esp8266/Arduino/issues/81


"User_interface.h"에 가보면 ESP8266 라이브러리에도 freeRAM 값을 가져오는 코드가 있네요.


아래와 같이 코드를 변경해 줍니다.


1
2
3
4
5
6
7
8
9
10
11
12
uint32_t freeRam () {
  // __brkval is the address of the top of the heap
  // if memory has been allocated.
  // If __brkval is zero then it means malloc has not used any memory yet, so
  // we look at the address of __heap_start.
  //extern int __heap_start;
  //extern int *__brkval; // address of the top of heap
 // int stack_top;
  //return (int)&stack_top - ((int)__brkval == 0 ? (int)&__heap_start : (int)__brkval);
  uint32_t free = system_get_free_heap_size();
  return free;
}
cs


물론 GMMP_Util.h 에서도 변경해 줘야합니다.


그리고 GMMP_Util.cpp 위쪽에 아래 코드를 추가합니다.


1
2
3
extern "C" {
#include "user_interface.h"
}
cs







반응형

인기글