'ST40'에 해당되는 글 2건

  1. 2009.03.20 ST40 MMU (9)
  2. 2009.03.04 Spansion 파산과 NOR flash 삽질기

ST40 MMU

Feeling a little peculiar 2009. 3. 20. 23:04
헉... 작년 크리스마스 이브에 발표했던 거네... 지금 보니까 완전 허접... (그때봤을 때도 무진장 허접했지만..)

사실 이걸 만들고... 계속 블로그에 올린다 올린다 한게 지금까지 뻐땡기고 있다가 (좀더 보완환다는 핑계로) 이걸 올려놔야 계속 생각나겠다 싶어서 올림...

그래도 나름 이때 열심히 봐서 이번에 loader 작업 등등 할때는 좀 편했다는...

Keynote로 작업했는데... 사실 작업이라기보다 그냥... 탬플릿만 가져다 쓴.. -.-


Posted by 강군님

댓글을 달아 주세요

  1. 레이 2009.04.15 16:22  댓글주소  수정/삭제  댓글쓰기

    전 이제 st40 기반인 보드에 로더 작업하고 있습니다..안그래도 MMU 데이터시트로만 볼려고하니 이해가 잘안댔는데..^^좋은 자료 감사합니다....이제 입사 3달차인데;;저도 언능 강군님처럼...잘했으면 좋겠네여;;;

  2. Favicon of https://kangun.tistory.com 강군님 2009.04.15 17:34 신고  댓글주소  수정/삭제  댓글쓰기

    도움이 되었으면 좋겠습니다.. 이거 워낙 자료가 허접해서.. 누구 보여드릴려고 올린게 아니라.. 별 도움이 안되실 것 같습니다.. 혹여나 뭔가 막히시는게 있으면... 메일 주세요 ^^;;

  3. 레이 2009.04.22 21:55  댓글주소  수정/삭제  댓글쓰기

    메일 주소를 몰라서 여기다 질문좀 할게여..

    sh4-linux-gdb 로 부트로더 동작상태까지는 만들었습니다.
    mb442로 컴파일해서 올렸습니다.
    근데 재가 쓰는 칩이 sti7101이어서 MAC칩은 STE100P를 씁니다..
    cmd_net.c mb442.h mb442.c stm-stmac.c 들을 바까서 프롬포트 상에서 ping 을 쳐보니
    STM-MAC: Unable to find a PHY (unknown ID?)
    STM-MAC: Phy not detected
    STM-MAC: entering eth_send()
    TX : 0x87f20200 DA=ff:ff:ff:ff:ff:ff SA=04:00:00:00:bc:c5 Type=0806
    이런식으로 아이디를 디텍했지 못했다고 나옵니다...;;
    이더넷 베이스 주소는 a811 0000 으로 했습니다..29비트 모드이고요.. 어디가 문제인지 ㅜㅜ 못찻겠네여...괜찮으시면..답변좀 부탁드립니다...

    • Favicon of https://kangun.tistory.com 강군님 2009.04.23 08:45 신고  댓글주소  수정/삭제

      STLinux에서 u-boot을 참조하실 수 있습니다. 혹시라도 아직 참조 전이시라면 도움이 될 것 같습니다.

      말씀하신 건, 말 그대로 PHY와 GMAC과의 통신이 되지 않는 상태입니다. MII가 됐던 뭐가 됐던 일단 두 장치간의 interface를 뚫어주어야 하죠.

      STE100P가 MAC칩인가요?? 저는 PHY칩인줄 알았는데요.. 저는 GMAC (ethernet sub-system)에 PHY칩을 달아서 개통했습니다. 그 부분부터 확인해보셔야겠네요 :)

  4. 레이 2009.04.30 17:28  댓글주소  수정/삭제  댓글쓰기

    안녕하세요....좀처럼 해결이 안대서 또 질문하네요...
    현재 sti7101 와 ste101p (phy칩이 였습니다...재가 잘못알았네요) 끼리는 인터페이스 원할이 대고 있습니다.
    현재 메인 클럭은 27MHZ로 쓰고있습니다. 데이터 시트를 보면
    MD0~ MD3이 0일경우
    CKGA_PLL1_CFG 와 CKGA_PLL2_CFG 에는 PLL1과 PLL2에 533MHZ와 400MHZ로 리셋시 셋팅이 되어있습니다. 저희 보드에도 MD0~MD3에는 0이 셋팅되있으나 CKGA_PLL1_CFG와 2에는 각각 30MHZ기준으로 되었을때의 값이 셋팅이 되고있습니다. 그래서 PLL2에는 360MHZ가 나가면서 ste101p의 RXCLK,TXCLK클럭들이 다 360MHZ를 분주해서 나가면서 클럭이 낮아지는 현상이 있습니다.
    그래서 데이터 시트에 클럭 CHANGE시 순서대로 SOC_INIT에 코딩해보왔지만 시스템이 부팅이 안됩니다. init-mb442.S에 클럭을 바까주는 코드가 있는데 그것을 이용하려고 하는데 잘 안대네요...혹시 저와 비슷한 상황이셨거나 아시는 부분이 있으면 간단한 의견 부탁드릴게요.

    아직 초보 개발자이다 보니 질문도 너무 부족하네요 회사에서도 ST는 처음이라서 물어볼 곳이 없습니다..질문이 부족하지만 이해부탁드리겠습니다..ㅜㅜ

  5. 레이 2009.05.01 17:42  댓글주소  수정/삭제  댓글쓰기

    ㅜㅜ 다행이 답변안하셧네요...1주일동안의 삽질이 JTAG과의 인터페이스상에서 CLK을 JTAG이 바꿔주고 있었네요...

  6. 레이 2009.05.11 21:56  댓글주소  수정/삭제  댓글쓰기

    훗..연휴는 잘쉬셧는지 한동안 다른 문제때문에 다른일하다가 다시 이더넷을 잡고있는데 이게 언제까지 안될지 모르겠습니다..어제부터는 하드웨어적으로 분석해보왔는데도 하드웨어는 이상이 없는거같네요... 그러다 OS21의 STMAC 코드를 보게되었는데 인터럽트 쪽을 제어해주는 부분이 있더군요... 혹시 강군님도 인터럽트 쪽 코드를 수정하셨나요?...수정하셧다면 어느부분인지..관련 소스부분은 다 뒤져봣는데 찾을수가 없네요.ㅠㅠ

  7. Favicon of https://kangun.tistory.com 강군님 2009.05.12 09:25 신고  댓글주소  수정/삭제  댓글쓰기

    OS21의 STMAC쪽 코드라면 OS+ 라이브러리를 말씀하시는건가요??

    사용하는 PHY 칩에 따라서 인터럽트 핀이 있고 없는 것이 있습니다.. RTL8201CP같은 경우는 없는 경우에 속합니다. 그래서 link detect등을 감지할 때는 polling을 해야 하므로 ISR은 구현하지 않았습니다.

    STGMAC의 ISR은 직접 작성을 해주셔야 할겁니다. 말씀드린 것처럼 OS+는 써드파티에 제공되는 라이브러리 형식이라... 소스 코드로 찾아볼 수는 없습니다.

    TX쪽 코드는 u-boot의 그것을 참조하시면 쉽게 판단이 가능한데, RX쪽 코드는 그렇지가 않을 겁니다. (u-boot은 polling으로 처리) 저 같은 경우는 ISR을 직접 작성했습니다.. 생소했던 개념들이 많아서 애를 먹었습니다만... u-boot과 STLinux 코드를 참조하시면 구현 가능하리라 생각됩니다. 좋은 하루 보내세요 (--)(__)

어젠가 그젠가 게시했던 것처럼 현재 일본향 project 진행중이고... loader 쪽에서 작업 중인데... loader하면 먼저 RAM과 ROM을 살려야 될 것이 아닌가.

RAM 설정이야 솔직히 레퍼런스 보드 오면 그 설정을 마음대로 바꾸지 못하므로 (bus clock 등 각종 미미한 설정이 대재앙을 부른다는...) 거의 그냥 가져간다 하더라도 (그렇다 하더라도 DRAM datasheet를 꼼꼼이 따져보는 것은 필수!) ROM은 그렇지 못한 경우가 많다.

더군다나 ST40 같은 이상한 (아무래도 처음 접해보는 것이니까) architecture에서는 더더욱 그렇다.

ST40은 FLASH를 EMI (External Memory Interface)라고 해서... 이미 지정된 address가 있다.  그 영역은 0x00000000 ~ 0x07FFFFFF 로써 128MB를 쓸 수 있는 거다.

그럼 FLASH를 128MB를 쓰려면 그냥 여기다 붙이면 되느냐... 그것도 아니다.  ST40의 이상한 (누차 얘기하지만 처음 접해보는 것이니까... 그래도 이상하다.. -.-) EMI라는 것은, EMI는 5개의 bank로 나눌 수 있고 각 bank는 최소 4MB에서 최대 64MB의 용량을 지정할 수 있다.  각 bank는 chip select에 의해 선택이 되므로, 나같이 128MB를 써야 되는 경우에는 64MB를 bank 2개에다 적용하면 되는 거다.

글쎄... 이런걸 다른데서는 많이 해봤겠지만 ST의 FA 분은... 이런건 처음 본다고 하셨다... -.- 우리가 사용하는 ST40 core는 (자세한 모델을 밝힐수는 없지만) 출시된지 한 1년된거 같다.  팀내에서도 별로 써본 사람이 없는 것 같고 회사에는 인맥이 두텁지 않아서 알아볼 길이 없다... -.- 결국 삽질이 시작됐다.

뭐 어쨌든 결과적으로 register 셋팅만 잘 해놓으면 bank가 동작하는 것인데... 각 bank로 chip select가 잘 나가나 오실로스코프로 찍어보는데.. 뭔가 이상했다.

Bank #0 (첫번째 64MB 영역)에 접근할 때는 아무 이상 없는데... Bank #1 (두번째 64MB 영역)에 접근할 때 chip select #0이 뜨는거다...!!

뭘까... H/W 팀을 불러서 같이 봤는데 H/W팀은 말도 안된다고 했다.  이렇게 되면 기본적으로 bank 구성이 안된다고... 그래서 회로도를 이잡듯 뒤졌는데 어떠한 문제사항도 발견할 수 없었다. 

내가 사용한 오실로스코프는 프로브 2개짜리인데... 마침 프로브 한쪽이 이상해서 측정이 안되는 상태였으므로... 동시에 한번 파형을 보자는 H/W팀의 말에 파형을 찍어봤다.


노랑이가 chip select #0, 파랑이가 chip select #1이다.  뭘까... 고민에 고민을 하던 결과.. 결국 나는 또 나의 무지를 한탄할 수 밖에 없었다...

내가 짜놓은 flash test 프로그램은 전체 flash 영역을 erase하는 것이었고... NOR flash의 특성상 erase나 write는... NOR flash base address에 command를 날린 후에 해당 block을 지우는 것으로 되어있는데... 그걸 간과하고 있었던 거다... 아 젠장... 이걸로 한 3~4일은 날려먹은 것 같다. 

사실 이 이전에도 write lock을 풀어주지 않아서... write가 안되는 문제가 있어서 한 2일 까먹었었는데... -.- 참... 처음 접해본 NOR flash에 나름 적응했다고 생각했는데.

어제 spansion이 파산했다네... 아 젠장... 도대체 왜 그럴까 하고 네이버로 검색했다 (뉴스 검색은 네이버가 잘 되는것 같기도 하고).

흠... 그랬더니 경축! 스팬션 파산~ 이라는 뉘앙스의 글들이 경악! 스팬션 파산! 이라는 글보다 더 많은것 아닌가!!! 이거 왜 이러지... 하고 봤더니 젠장할 하이닉스나 삼성전자 등 수혜주(?)에 투자하는 분들의 모임이나 주식투자자들의 모임이었던 것이다...

-_-;;; 그분들은 기뻤겠지만 나는 조만간 재작업할 이 부분이... 못내 슬프다~~~ ㅠㅠ
Posted by 강군님

댓글을 달아 주세요