2011-11-27 9 views
2

MCB1700 평가 보드와 함께 작업합니다. (320 x 240) TF LCD 디스플레이가 있습니다. IDE : Keil uvision4 4.03q. 내 작업은 PC에서 MCB1700으로 그림을 다운로드하여 LCD
에 표시하고 USB 스틱 (보드에 연결)에서 다운로드하는 것입니다. 320 * 240 * 2 = 153600 바이트의 메모리가 필요합니다. MCB1700은 64KB SRAM과 512KB의 온칩 플래시 메모리 만 있습니다. 분명히, 나는 그림을 플래시 메모리에 저장해야한다.MCB1700 평가 보드의 온칩 메모리에 이미지 저장

필자는 포인터를 메모리 주소에 직접 바인딩해야한다고 생각합니다.

/* Base addresses                */ 
#define LPC_FLASH_BASE  (0x00000000UL)   //beginning address of on-chip Flash 
#define LPC_IMAGE_ADDR   (LPC_FLASH_BASE + 0x10000) 
#define ImagePtr    ((unsigned short  *) LPC_IMAGE_ADDR  ) 

//read-write operations 
ImagePtr[0] = 0x0124;   //First pixel 
… 
ImagePtr[320*240] = 0xFA37;  //Last pixel 
unsigned short A = ImagePtr[0]; 

맞습니까? Target의 옵션으로 인해 의문의 여지가 있습니다. enter image description here

플래시 메모리의 영역은 읽기 전용 IROM1과 같이 정의됩니다. 플래시에서 데이터를 읽을 수 있다는 것을 의미하며 쓰기 작업을 수행하기 위해 IROM 및 IRAM 필드의 메모리 영역을 변경해야합니까? 같은 방법으로 예를 들면 : enter image description here

+0

다음을 명심하십시오 : 이미지를 플래시에 독립적으로 다운로드해야합니까, 아니면 일반 펌웨어의 일부가 될 수 있습니까? –

+0

예, 일반 펌웨어의 일부입니다. –

답변

1

당신은 플래시에서 이미지를 배치 할 위치를 컴파일러/링커가 결정하도록 더 잘 할 수 있습니다

static const unsigned short Image[320*240] = { <image data> } ; 

는 ROM1 메모리에 배열로 Image을 배치합니다.

플래시 메모리에 직접 쓸 수는 없으며 일반적으로 읽기 전용이며 쓰기 작업은 단어 지향이지만 이전에 지워지지 않고 지우기가 페이지 또는 섹터 지향 인 경우 단어를 쓸 수 없습니다. 복잡한 예제 코드를 관리 할 수 ​​있습니다.

위의 제 제안에서 나는 초기화 프로그램을 포함 시켰습니다. 이제 수동으로 320 * 240 요소를 초기화하는 것은 분명히 비현실적이지만 이미지 파일에서 직접 필요한 초기 코드를 생성하는 PC 기반 도구를 작성하는 것은 간단합니다.

이미지가 정적 일 수없는 경우 이미지의 플래시 부분을 예약 한 다음 플래시 메모리를 쓰는 코드를 작성하고 필요한 경우 예를 들어 직렬 포트 또는 USB에서 다운로드 한 데이터의 페이지를 지울 수 있습니다. 이 경우 플래시 메모리는 페이지 정렬되어야하며 플래시 페이지의 정수배로 구성되어야합니다.

유연성을 위해 대상 대화 상자 설정에 의존하지 말고 사용자 정의 스 캐터 파일을 만든 다음 armcc 확장자 __attribute__ 한정자를 사용하여 사용자 정의 섹션을 만들어 이미지 메모리를 할당 할 수 있습니다.

+0

답변 해 주셔서 감사합니다! :) –