ATMEL mXT224 접점식 터치스크린 디버깅 노트

4일간의 데이터 시트를 보고 어제 드디어 코드를 쓰기 시작했다.지금까지 제가 만든 콘덴서에는 ite의, 솔로몬의,focaltech의,eeti의,그리고cypress가 있습니다.솔직히 말하면, 이 물건들을 쓰는 구동력은 이미 익숙해졌지만, 나는 오늘도 감명을 받았다.ATMEL의 콘덴서 스크린이 가장 잘 만들어졌다.드라이버에 대한 인터페이스가 완벽하고 심지어 대상을 향한 사상을 사용했다!atmel의 구동을 하는 것은 정말 일종의 즐거움이다.이때 너는 구동 엔지니어가 되는 즐거움을 체험할 수 있다.
이 일을 인수한 것은 우리 회사가 짝퉁 휴대전화 회사에 의해 겸용되었기 때문이다...합병이라고는 하지만 사실 간통했다고 해도 과언이 아니다.지금 그 휴대전화 회사의 사장이 마음대로 하기 때문이다.한때 회사가 우리에게 준 약속과 복지 대우는 이 짝퉁 회사가 인수한 후 모두 수포로 돌아갔다...이때부터 우리 반의 이 인마들은 마치 청루녀로 전락한 것 같다...생각나는 대로 올라간다...
위에만 올라가면 돼...누가 우리 목숨을 고생시키겠어...하지만 너에게 올라가도 하이라이트가 생기지 않게!온통 그가 너를 괴롭히고 있어...
원래 IC 디자인 회사였는데, 지금은 휴대전화 방안의 난장판을 인수하려고 한다.두 달 후면 시장에 나온다더니 몇 가지 난제에 부딪혀 해결이 안 된다고 하더군요.
지난주에 콘덴서 만들라고 자료를 주셨어요.
핸드폰을 받고 보니 기대!커패시터 스크린 포인트 전체가 편이되어 좌표와 LCD가 맞지 않아 두 손가락이 터치할 때 그 중 한 점의 터치 좌표를 방출할 수 없다.이렇게 뻔한 버그도 해결이 안 됐어!svn의 로그를 보니 4, 5개월 전부터 이 드라이브를 하기 시작한 것 같습니다.겨우 이 정도라니...그들은 아직도 svn을 쓴다.svn으로android 코드 관리!이 사람들이 얼마나 게으른지, git를 배우지 않기 위해 이런 공사를 svn으로 관리하다니...
코드를 보고 네 글자로 형용해 보니 차마 볼 수가 없다!어째서 엉터리 글자인가!이런 사람들로 구성된 회사가 FAE의 지지를 떠나면'죽는다'!!!분명히 지금 이 난장판을 우리에게 맡긴 것은 마블의 지지력이 부족하기 때문이다...(그들은 마블의 방안으로 만들었다)
나는 이미 이 쓰레기 같은 구동을 수리하는 것을 포기했다...
아무래도 형은 드라이버를 적어야 할 것 같은데...
형이 다음 주에 다 쓰면 이 노트를 좀 보완해라!형은 2주 안에 해결해야 돼...스트레스가 많네요...지금 이 구동을 하는 것은 완전히 형이 atmel에 대한 숭배이다!만약 형이 있는 회사가 이렇게 한 걸음 한 걸음 짝퉁 휴대전화 회사로 전환된다면 형은 가능한 한 빨리 출로를 고려해야 한다...nnd
이 터치스크린이 켜질 때마다 교정해야 한다니...정말 쓸데없는 소리야!!!이것은 사장님이 말씀하신 것이다...사장은 그의 그 칼 같은 엔지니어들에게 휘둘렸다...잔인하다.
201202291312:
나는 인터럽트 + 퀴즈 방식으로 포인트 정보를 읽을 계획이기 때문에 인터럽트 스크립트의 상태를 읽어야 한다.자연스럽게 gpioget_value 이 함수.처음부터 끝까지 읽는 값이 0이라는 걸 알게 돼서 답답해요.부득이하게 나는 오실로그래프로 실제 레벨을 재어 보았는데, 모든 것이 옳고, 레벨이 높고 낮음을 발견하였는데, 어떻게 읽으면 틀렸을까?아침 내내 뒤척이다가 결국 gpioget_value의 반환값은 성형 int인데 나는 이 반환값을 u8에 부여했다. 자연히 차단이 발생했기 때문에 항상 0을 얻는다. 이것은 나의 소홀함이다.
그러나 이 함수는 플랫폼 관련이다. 어떤 반환값은 0이 아니면 1이다. 그러면 내가 u8로 반환값을 저장해도 문제가 생기지 않는다. 그러나 어떤 플랫폼에서 이 함수의 반환값은 gpio 관련 레지스터의 값일 수도 있다. 이것은 32자리의 값이다. 이것은 마스크로 다른 무관위를 필터하고value를 표시하는 위치만 남긴다.그래서 이 32위 중 하나가 1일 수도 있고 나머지는 0일 수도 있어요. 만약에 gpioget_value는 32비트의 int 값을 되돌려줍니다. 이 값이 0이거나 0이 아닌 것에 따라 판단하면 됩니다. 만약 저처럼 이 값을 32보다 작은 유형에 부여한다면 십중팔구는 끊어야 합니다.허허.부주의했어
atmel의firmware 정말 좋아요!드라이브에 제공되는 것은 대상을 향한 인터페이스입니다.이렇게 하면 구동 프로그래밍이 비교적 편리해질 뿐만 아니라 구동의 이식성을 크게 높일 수 있다!
또한atmel은 8 바이트의user 데이터를 제공합니다.이렇게 하면 구동은 안에 표지를 써서 구동의 자체 적응 능력을 높일 수 있다.이 관건은 구동 디자이너가 어떻게 사용하고, 어떻게 사용하는지 생각할 수 있느냐에 달려 있다.
터치스크린을 조정할 때 장치가 켜지기만 하면 관련 터치스크린 테스트 응용 프로그램이 자동으로 실행되도록 하는 것이 가장 좋다. 그러면 디버깅 작업을 매우 편리하게 할 수 있다. 왜냐하면 너도 너의 구동이 작동할 수 있을 것이라고 보장할 수 없기 때문이다.다음의 정보는 안드로이드에서 화면을 잠그지 않고 켜는 데 도움을 줄 수 있습니다.
안드로이드 2.3에서 안드로이드의 잠금 화면을 켜는 것을 금지하는 방법:
frameworks/base/policy/src/com/android/internal/policy/impl/KeyguardViewMediator.java
line:192  
external apps(like the phone app) can tell us to disable the keyguard.
private boolean mExternally Enabled = true//false로 변경하면 됩니다.
기본 자동 잠금 시간을 어떻게 설정합니까
base/packages/SettingsProvider/res/values/defaults.xml
ling21:
def_screen_off_타임아웃의 기본 시간은 60000밀리초, 즉 1분입니다. 원하는 것으로 바꾸면 됩니다. 경계를 넘지 않도록 주의하십시오.
다중 에스컬레이션 정보
kernel에서 여러 개의 에스컬레이션에 대한 작업은 그룹별로 이루어집니다.
만나다http://www.kernel.org/doc/Documentation/input/multi-touch-protocol.txt
Protocol Example A
------------------

Here is what a minimal event sequence for a two-contact touch would look
like for a type A device:

   ABS_MT_POSITION_X x[0]
   ABS_MT_POSITION_Y y[0]
   SYN_MT_REPORT
   ABS_MT_POSITION_X x[1]
   ABS_MT_POSITION_Y y[1]
   SYN_MT_REPORT
   SYN_REPORT

The sequence after moving one of the contacts looks exactly the same; the
raw data for all present contacts are sent between every synchronization
with SYN_REPORT.

Here is the sequence after lifting the first contact:

   ABS_MT_POSITION_X x[1]
   ABS_MT_POSITION_Y y[1]
   SYN_MT_REPORT
   SYN_REPORT

And here is the sequence after lifting the second contact:

   SYN_MT_REPORT
   SYN_REPORT

If the driver reports one of BTN_TOUCH or ABS_PRESSURE in addition to the
ABS_MT events, the last SYN_MT_REPORT event may be omitted. Otherwise, the
last SYN_REPORT will be dropped by the input core, resulting in no
zero-contact event reaching userland.

따라서 터치스크린 하드웨어도 한 조 한 조에 따라 데이터를 생성한다. 즉, 모든 패키지는 이번에 검출된 모든 점을 포함하기 때문에 위에서 언급한sync 방법을 쉽게 사용할 수 있다.패키지의 각 점 뒤에 syn 추가mt_리포트, 그리고 이 패키지의 모든 점 리포트를 완료한 후driver에syn 추가리포트는 이번 신문의 종결을 표시합니다.
그러나 이atmel의firmware는 우리가 기대했던 것처럼 보고서를 그룹으로 나누지 않았다.하나씩 하나씩 보내는 거야.그래서kernel의 여러 가지 상부 보고 요구를 실현하려면 논리 전략으로 실현하는 것을 구동해야 한다...이것은 정말 좀 불편하다.
하지만, 나는 이미 방법을 생각해 놓았다.검증되면 쓰세요.
위에서 언급한 진정한 다중 보고 방식을 통해 두 개의 점을 보고한 후에 그 중 하나가 풀리면 이 점이 여전히 화면에 표시되는 것을 발견할 수 있다.그리고 다음 리포트가 끝난 후에만 사라집니다.해결 방법은 그 중 하나에서 방출된 사건 리포트를 한 번 더 리포트하면 된다.이렇게 해서 실현되었다. 지난번에 n개의 점을 보고했고, 이번에는 n-1개의 점을 보고했다.
201203120138
비극적이다. 그들이 양산을 앞두고 무슨 이유인지 모르지만 이 스크린의 구동을 바꿨다. 바꾼 후에 여러 개의 터치가 모두 효력을 잃고 단지 한 개의 단점만 남았다.하지만 이런 것도 서버에 제출됐다.나는 이 짝퉁 회사에 대해 갈수록 의심이 간다.일주일 전에 내가 다시 쓴 드라이브는 이미 완성되었다. 그들이 곧 생산을 해야 한다는 것을 감안하여 나는 코드를 제출하지 않았다. 왜냐하면 드라이브를 교체한 후에 상세한 긴 주기 테스트를 해야만 드라이브에 잠재적인 문제가 있는지 확인할 수 있기 때문이다.그러나 나는 10여 일 남았을 때 그들이 드라이브를 바꿨고 아무런 테스트도 하지 않은 것처럼 센터 서버에 발표될 줄은 도무지 생각하지 못했다.이것은 어쩌면 미스터리일지도 몰라...근데 형이랑은 상관없어...
다행히 나는 어제 그 새로운 구동이 일으킨 여러 가지 실효 문제를 해결했다.솔직히 그 버그는 저급이야...
개인적으로 좋은 드라이버는 데이터 시트를 연구하는 데 일주일이 걸리고 코드를 쓰는 데 일주일이 걸린다고 생각한다.해냈어.근데 힘들어.이런 회사를 위해 이런 일을 하다.정말 가치가 없다.

좋은 웹페이지 즐겨찾기