32 비트 ARM 코어 마이크로 컨트롤러 프로젝트 용 C 프로그램을 작성했습니다. 이 프로젝트는 내가 표시를위한 LCD의 내부 RAM에 적재 텍스트 함수를 작성했습니다 그래서 LCD를 가지고, 기능은 다음과 같습니다함수 호출에 사용 된 코드 메모리 (C ARM-GCC)
/*-------------------------------------------
* Name : LCD_Show_String
* Description : Load a line of text to LCD's RAM
* Argument(s) : row - load to which row in LCD.
* *str - The text
* *font_table - the font table to be used
* *font_descriptor - information of the font table
* align - Align ALIGN_LEFT, ALIGN_CENTER or ALIGN_RIGHT
* print_now - 0: Do not print the text on LCD now
* 1: Print the text on LCD immediately
* mode - PIXEL_ON, PIXEL_OFF or PIXEL_XOR (method to print each pixel)
*
* Return value: Total width of the string printed.
* -----------------------------------------------*/
UINT16_T LCD_Show_String(UINT8_T row, const UINT8_T *str, const UINT8_T *font_table, \
const UINT16_T *font_descriptor, LCD_Align_t align,
UINT8_T print_now, LcdPixelMode mode)
나는이 함수를 호출 할 때 : 나는 각 것을 발견
LCD_Show_String(7, "TEST", small_font_bitmap,
small_font_des, ALIGN_CENTER, 0, PIXEL_ON);
을 나는이 함수를 호출 할 때, 40 바이트의 코드 메모리를 소비했다. 또한 함수에서 매개 변수의 수를 늘리면 필요한 메모리가 더 많아집니다. 예를 들어 원래이 함수에는 13 개의 매개 변수가 있습니다.이 함수를 호출 할 때마다 최대 약 100 바이트가 사용되었습니다.
정상입니까? 왜 그렇게 많은 메모리를 소비 했습니까? 사용 된 메모리를 줄일 수 있습니까?
컴파일러는 ARM GCC 컴파일러입니다.
감사합니다.
MCU에는 어느 정도의 RAM이 있습니까? –
글쎄, 16KB RAM을 가지고 있지만 RAM이 아닌 프로그램 메모리에 대해 이야기하고 있습니다. 그것은 256KB의 메모리를 가지고 있지만 거의 다 사용하고 있습니다. – eepty
'-Os' 모드로 컴파일을 시도 했습니까? –