본문 바로가기

IT관련/s3c6410

s3c6410을 이용한 binary cdma 연동 #2

















s3c6410을 이용한 binary CDMA 관련 첫 글을 쓰고 그동안 바쁜관계로...이어 쓴다는것이 몇개월만에..다시 쓰게 되네요
이번 글에서는 LINUX에서 binary cdma 드라이버를 구성하는 방안에 대해서 다루도록 하겠습니다.

Koinonia칩을 구동하려면 상당히 귀찮은 작업이 필요합니다. 이전 글에서도 언급했듯이...유저 친밀도가 거의 0에 가까운 칩이라.. 드라이버 구현하는 분들 입장에서는 귀찮음과 짜증이 모락 모락 마구 마구 피어나는 그런 구성이죠

우선 칩을 구동을 시키려면 메모리에 펌웨어를 다운로드 시켜야합니다.

여기서 1차적인 의문이 생깁니다. (왜? 해야하는거지?)
일반적인 network asic의 경우는 스스로 동작을 하는데..얘는 펌웨어를 밀어서 다운로딩을 시켜줘야 합니다.

아주 긍정적인 사고로 생각해서 말하면.. 드라이버를 구현하는 engineer가 입맛에 맞게 펌웨어를 수정하여 올릴 수 있다...
라고 생각을 할 수도 있지만.....
살짝 불순한 의도로 본다면..안정적인 펌웨어가 없다는 뜻이 될 수 도 있고,
조금 더 비꼬아 말하면....칩제조사에서 기술이전을 목적으로 칩을 판매하고 있다는 얘기를 할 수 도 있겠습니다. (칩을 사더라도 안에 Koinonia가 구동될수 있게끔 구성하려면 펌웨어가 어떻게 돌아가는지 구조를 이해하여야하며, 해당 내용을 칩구매자가 구현해야합니다. 이를 구현하기 위해서는 KETI에서 주는 라이브러리가 필요한데....그 라이브러리를  받으려면 기술이전 fee를 내고 기술이전을 받아야 한다는 아주 어처구니 없는 상황이 있는것이죠....)

자세한 내용을 다루면 뭔가 위반 될 수도 있을것 같아서, 살짝 단편적으로 initial 하는 과정을 다루면

1) 리셋을 푼다
2) 코이노니아를 halt 시킨다.
3) 문제의 펌웨어를 밀어 넣는다.
4) 소프트웨어 리셋을 건다.
5) 리셋이 풀리면서 펌웨어가 동작한다.

요로코롬 펌웨어가 올라가면 얘랑 OS(LINUX)랑 통신할 수 있도록 드라이버를 구성해줘야합니다.
character based 드라이버만 다뤄보신 분들은 어렵다고 느낄수 도 있는데...네트웍 드라이버라고 해서 별다른 어려울것은 없고...
그냥 linux 2.6 버전에 들어 있는 isa-skeleton.c를 참고해서 구성하면 됩니다

이전글에서 언급했듯이..6410의 어드레스 라인에 제한이 있기 때문에..어드레스 라인이 구현하는데 있어서 가장 큰 문제인데요...
실제 구현에서도 상당히 짜증이 밀려 옵니다.

주로 사용하는 address range가 
0x10000~0x20000

0x3f00000 ~
0x3f80000 ~
입니다.

gpio를 이용해서 0x8000이 넘어가는 부분 부터는 직접 계산해서 수동적으로 GPIO를 컨트롤해서 어드레싱을 해야하죠
아주 짜증이 물씬납니다. -_-;차기 버전을 만든다고 하는데 차기버전 제작시에는 좀더 생각을 하고 만들었으면 좋겠습니다.

더 자세히 쓰고는 싶지만... 문제가 될것 같아 적당히 쓰는걸로 마무리하겠습니다.

'IT관련 > s3c6410' 카테고리의 다른 글

s3c6410을 이용한 binary cdma 연동  (0) 2011.04.08