2011-02-28 2 views
1

MCB2300 (LPC2378 프로세서 사용) 및 keil uVision4를 사용 중입니다. 내 프로그램에서 malloc() 함수를 사용하여 동적 메모리를 생성합니다. 모든 동적 내용이 힙에 저장되므로 필요한 힙 크기를 할당해야합니다. 시작 파일 (LPC2300.s)의 힙에 대한 기본값은 0x00000800입니다. 내 응용 프로그램에서는 이미지 (bmp 형식)를 읽고 픽셀 값을 행렬에 저장하며 행렬은 입력 이미지의 크기와 관련하여 동적으로 만들어집니다. 시작 파일에서 설정할 수있는 최대 힙 값은 0x000072FF입니다. 이 힙 값에 대해 44 x 33의 이미지를 성공적으로 읽을 수있었습니다. 이 크기를 초과하면 메모리는 할당되지 않습니다. 나는 내 사용 가능한 RAM이 내 코드를 컴파일 한 후이 내 출력 값입니다 32KKeil에서 더 많은 힙을 제공합니다.

이다이어야 100 × 100의 크기로 이미지를 읽을 필요가

프로그램 크기 : 코드 = 30664 RO 데이터 = 1220 RW 데이터 = 132 ZI 데이터 = 37628

추가 힙을 제공하는 방법은 무엇입니까?

LPC2378 용으로 제공된 SD/MMC 카드 또는 외부 메모리 뱅크에 힙 메모리를 저장할 수 있습니까? 이 문제를 해결하는 데 도움을주십시오.

답변

0

보드에 외장형 RAM 칩이있는 경우 힙용으로 사용할 수 있습니다. 그러나 외부 RAM이 없으면 내부 RAM 크기보다 힙 크기를 늘릴 방법이 없습니다.

메모리 장치로 SD/MMC 카드를 사용하기 위해 가상 메모리 드라이버의 변형을 작성할 수 있습니다. 그러나 장치에는 MMU (메모리 관리 장치)가 없으므로 드라이버가 극도로 복잡하고 극도로 느립니다. 그래서 옵션이 아닙니다.

또한 28K의 힙을 사용하여 99x99 RGB24 BMP 이미지를 저장할 수 있습니다. 99 * 99 * 3 = 29403.