도와주세요!!
글 수 15,339
2002.06.23 15:22:05 (*.186.48.184)
6766
안녕하세요...
:: void SA1110_SetAddress( DWORD vAddress )
:: {
:: int loop;
::
:: WSA1110_CELLs[ CTBF_CS0 ] = HIGH;
:: WSA1110_CELLs[ CTBF_CS1 ] = HIGH;
:: WSA1110_CELLs[ CTBF_CS2 ] = HIGH;
:: WSA1110_CELLs[ CTBF_CS3 ] = HIGH;
:: WSA1110_CELLs[ CTBF_CS4 ] = HIGH;
:: WSA1110_CELLs[ CTBF_CS5 ] = HIGH;
::
:: switch( ( vAddress >> 27 ) & 0x7 )
:: {
:: case 0 : WSA1110_CELLs[ CTBF_CS0 ] = LOW; break;
:: case 1 : WSA1110_CELLs[ CTBF_CS1 ] = LOW; break;
:: case 2 : WSA1110_CELLs[ CTBF_CS2 ] = LOW; break;
:: case 3 : WSA1110_CELLs[ CTBF_CS3 ] = LOW; break;
:: case 4 : WSA1110_CELLs[ CTBF_CS4 ] = LOW; break;
:: case 5 : WSA1110_CELLs[ CTBF_CS5 ] = LOW; break;
::
:: }
==>> 이 부분은 FLASH의 칩을 선택하는 코드로써, LOW상태일때 Active가 됩니다.
switch문 위의 코드에서 HIGH로 만들어 초기화한 후 해당 칩을 Active 시킵니다.
vAddress라는 변수는 어드레스 A0~A25까지 설정값입니다...
따라서, 이를 오른쪽을 모두 27번 shift하고, 0x07과 AND 연산을 하라는 의미로
여기서는 case 0 이 선택됩니다..
이것은 저희 FLASH 부분 회로도를 보시면, nCS0에 연결되어 있기 때문입니다.
:: // A0 ~ A25까지의 어드레스에 따라 셀을 설정한다.
:: for( loop = 0; loop < 26; loop++ )
:: {
:: if( vAddress & ( 1 << loop ) ) WSA1110_CELLs[ CTBF_A0 - loop ] = HIGH;
:: else WSA1110_CELLs[ CTBF_A0 - loop ] = LOW;
:: }
::
==>> 이 부분은 말 그대로 A0~A25까지의 어드레스를 설정하는 부분입니다...
이 어드레스는 Flsah 문서를 참고하셔야 합니다..
:: #ifdef DONGBNAG_MCM
:: // 동방보드
:: // GPIO25 HIGH
:: WSA1110_CELLs[CTBF_GPIO25_O_EN] = HIGH;
:: WSA1110_CELLs[CTBF_GPIO25_OUT ] = HIGH;
:: #endif
==>> 이 부분은 전혀 신경 쓸 필요가 없습니다... 이지보드와는 전혀 상관없는 코드입니
다.. 혹시 다른 소스에도 이런 동방관련 코드가 있으시면 무시하셔도 됩니다.
===>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
<<< 참고 >>
현재 님께서 질문하신 부분은 Flash 관련입니다... 이 부분은 Flash에 대하여 조금
의 이해가 있어야 됩니다..
따라서 저희가 제공한 CDROM이나 홈페이지에 올려 놓은 Flash관련 문서를 참고하시기
바랍니다.
<<< [FLASH] Intel Strata Flash 28FxxxJ3A.pdf >>>
만약, jtag에 대하여 공부를 하시기를 원하시면,,, 이 부분은 jtag관련 문서을 이해
하신 다음에 접근하시는 것이 좋을 듯 싶네요...
===>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
그럼 좋은 하루 되세요....
:: void SA1110_SetAddress( DWORD vAddress )
:: {
:: int loop;
::
:: WSA1110_CELLs[ CTBF_CS0 ] = HIGH;
:: WSA1110_CELLs[ CTBF_CS1 ] = HIGH;
:: WSA1110_CELLs[ CTBF_CS2 ] = HIGH;
:: WSA1110_CELLs[ CTBF_CS3 ] = HIGH;
:: WSA1110_CELLs[ CTBF_CS4 ] = HIGH;
:: WSA1110_CELLs[ CTBF_CS5 ] = HIGH;
::
:: switch( ( vAddress >> 27 ) & 0x7 )
:: {
:: case 0 : WSA1110_CELLs[ CTBF_CS0 ] = LOW; break;
:: case 1 : WSA1110_CELLs[ CTBF_CS1 ] = LOW; break;
:: case 2 : WSA1110_CELLs[ CTBF_CS2 ] = LOW; break;
:: case 3 : WSA1110_CELLs[ CTBF_CS3 ] = LOW; break;
:: case 4 : WSA1110_CELLs[ CTBF_CS4 ] = LOW; break;
:: case 5 : WSA1110_CELLs[ CTBF_CS5 ] = LOW; break;
::
:: }
==>> 이 부분은 FLASH의 칩을 선택하는 코드로써, LOW상태일때 Active가 됩니다.
switch문 위의 코드에서 HIGH로 만들어 초기화한 후 해당 칩을 Active 시킵니다.
vAddress라는 변수는 어드레스 A0~A25까지 설정값입니다...
따라서, 이를 오른쪽을 모두 27번 shift하고, 0x07과 AND 연산을 하라는 의미로
여기서는 case 0 이 선택됩니다..
이것은 저희 FLASH 부분 회로도를 보시면, nCS0에 연결되어 있기 때문입니다.
:: // A0 ~ A25까지의 어드레스에 따라 셀을 설정한다.
:: for( loop = 0; loop < 26; loop++ )
:: {
:: if( vAddress & ( 1 << loop ) ) WSA1110_CELLs[ CTBF_A0 - loop ] = HIGH;
:: else WSA1110_CELLs[ CTBF_A0 - loop ] = LOW;
:: }
::
==>> 이 부분은 말 그대로 A0~A25까지의 어드레스를 설정하는 부분입니다...
이 어드레스는 Flsah 문서를 참고하셔야 합니다..
:: #ifdef DONGBNAG_MCM
:: // 동방보드
:: // GPIO25 HIGH
:: WSA1110_CELLs[CTBF_GPIO25_O_EN] = HIGH;
:: WSA1110_CELLs[CTBF_GPIO25_OUT ] = HIGH;
:: #endif
==>> 이 부분은 전혀 신경 쓸 필요가 없습니다... 이지보드와는 전혀 상관없는 코드입니
다.. 혹시 다른 소스에도 이런 동방관련 코드가 있으시면 무시하셔도 됩니다.
===>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
<<< 참고 >>
현재 님께서 질문하신 부분은 Flash 관련입니다... 이 부분은 Flash에 대하여 조금
의 이해가 있어야 됩니다..
따라서 저희가 제공한 CDROM이나 홈페이지에 올려 놓은 Flash관련 문서를 참고하시기
바랍니다.
<<< [FLASH] Intel Strata Flash 28FxxxJ3A.pdf >>>
만약, jtag에 대하여 공부를 하시기를 원하시면,,, 이 부분은 jtag관련 문서을 이해
하신 다음에 접근하시는 것이 좋을 듯 싶네요...
===>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
그럼 좋은 하루 되세요....