![](/zbxe/layouts/mr_layouts_1st/images/default/blank.gif)
도와주세요!!
void PXA255_SetAddress( DWORD vAddress )
{
int loop;
// Chip Select 상태를 설정한다...
WPXA255_CELLs[ CTBF_nCS0_CTRL ] = HIGH;
WPXA255_CELLs[ CTBF_nWE_nOE_CTRL ] = HIGH;
WPXA255_CELLs[ CTBF_ADDR_CTRL ] = HIGH;
WPXA255_CELLs[ CTBF_RDnWR_CTRL ] = HIGH;
==>>이부분에서 모두 HIGH를 줍니다.
WPXA255_CELLs[ CTBF_CS0 ] = HIGH;
WPXA255_CELLs[ CTBF_CS1 ] = HIGH;
WPXA255_CELLs[ CTBF_CS2 ] = HIGH;
WPXA255_CELLs[ CTBF_CS3 ] = HIGH;
WPXA255_CELLs[ CTBF_CS4 ] = HIGH;
WPXA255_CELLs[ CTBF_CS5 ] = HIGH;
==>>칩셀렉트는 nCS이므로 LOW에서 활성화되기때문에 선택된 메모리에 해당하는 것을 LOW로 활성화 해줍니다.
if( vAddress < 0x04000000) WPXA255_CELLs[ CTBF_CS0 ] = LOW;
if((vAddress >= 0x04000000) && (vAddress < 0x08000000)) WPXA255_CELLs[ CTBF_CS1 ] = LOW;
if((vAddress >= 0x08000000) && (vAddress < 0x0C000000)) WPXA255_CELLs[ CTBF_CS2 ] = LOW;
if((vAddress >= 0x0C000000) && (vAddress < 0x10000000)) WPXA255_CELLs[ CTBF_CS3 ] = LOW;
if((vAddress >= 0x10000000) && (vAddress < 0x14000000)) WPXA255_CELLs[ CTBF_CS4 ] = LOW;
if((vAddress >= 0x14000000) && (vAddress < 0x18000000)) WPXA255_CELLs[ CTBF_CS5 ] = LOW;
==>>그런데 여기서 주소를 왜 0~25까지만 쓰는지 이해가 잘 되지 않습니다.
==>>메모리 컨틀롤러에서 MA는 0~25만 쓴다고 나와는 있는데 왜 그렇게 사용하는지는 잘모르겠네요^^
==>>조언부탁드립니다.
// A0 ~ A25까지의 어드레스에 따라 셀을 설정한다.
for( loop = 0; loop < 26; loop++ )
{
if( vAddress & ( 1 << loop ) ) WPXA255_CELLs[ CTBF_A0 - loop ] = HIGH;
else WPXA255_CELLs[ CTBF_A0 - loop ] = LOW;
}
외부 주소가 26비트로 0~25까지 쓰이네요 데이터 라인은 32비트 인데 왜 주소는 0~25까지만 쓰이는가요?
나머지 6비트는 다른 일을 하는건가요? 아님 원래 그렇게 설계되어 있는건가요?
아시는분 조언부탁드립니다