기존의 타겟보드에는 2M 용량의 플래시 메모리가 붙어 있었다. 하지만 이번에 HD 를 개발하면서, 2M 용량 제한 때문에, 결국 8M 용량의 플래시 메모리를 사용하게 되었다.
나는 처음에 대수롭게 생각하지 않고는,

  1. 대상 HEX 파일(=arena.hex) : 시작 주소(0x7FE00000)
  2. 설정 파일(=mb382_um.cfg) : 플래시 영역(0x7FE00000 에서 2M)
  3. FLASH_BURNER : mb282.h(플래시 뱅크주소 → 0x7FE00000)

이런 상태에서 플래시에 구웠다. 지금 기억에는 오류없이 R/W 가 되었다. 하지만 문제는 플래시 부팅이 안되는 것이었다.
어떤 보드는 Write 과정에서 에러가 발생했다. 뭔가 문제가 있는 듯 해서, 8M 플래시 메모리의 데이터 시트를 봤다. 2M 플래시보다 훨씬 많은 135 Block 로 구성되어 있었다. 그래서 기존의 2M 플래시에 맞춰져 있던 FLASH_BURNER 프로그램을 아래와 같이 수정했다.

#define NUM_BLOCKS              135                 // 총 블럭수 정의
 
STFLASH_Block_t      BlockData_s[NUM_BLOCKS] =               // 총 135 개의 블럭, 각 블럭당 용량과 위치는 데이터시트를 참조
{ { 0x00010000, STFLASH_MAIN_BLOCK },/* 0 */
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
 
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
 
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
 
 
    { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
 
 
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
 
 
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
 
 
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
 
 
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
 
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
 
   { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
 
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
 
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
 
  { 0x00010000, STFLASH_MAIN_BLOCK }, /* 120 */
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },
  { 0x00010000, STFLASH_MAIN_BLOCK },/*126*/
 
  { 0x00002000,  STFLASH_PARAMETER_BLOCK },/*8k*/
  { 0x00002000,  STFLASH_PARAMETER_BLOCK },/*8k*/
  { 0x00002000,  STFLASH_PARAMETER_BLOCK },/*8k*/
  { 0x00002000,  STFLASH_PARAMETER_BLOCK },/*8k*/
  { 0x00002000,  STFLASH_PARAMETER_BLOCK },/*8k*/
  { 0x00002000,  STFLASH_PARAMETER_BLOCK },/*8k*/
  { 0x00002000,  STFLASH_PARAMETER_BLOCK },/*8k*/
  { 0x00002000,  STFLASH_BOOT_BLOCK } }; /* 16k */  /*34*/

정확히 135 블럭이다. 또한 TOP 방식이기 때문에 데이터시트를 참조해서 설정했다. 그리고 나서,

  1. 설정 파일(=mb382_um.cfg) : 플래시 영역(0x7F800000 에서 8M)
  2. FLASH_BURNER : mb282.h(플래시 뱅크주소 → 0x7F800000)

수정했다. 그리고는 마지막으로

#gmake clean
#gmake
#gmake run

플래시에 구웠다. 결과는 예상대로 잘 동작하였다.

  • computer/digitalarena/8m_플래시_굽기.txt
  • Last modified: 4 years ago
  • by likewind