EzDoum

찾기
처음으로 | 찾기 | 아카이브 | 글 올리기 | 링크 | 자료실 | 통계 | 연락처 | 자유게시판
이지도움 특집
전체보기
네트워크
TI OMAP35x
TI DaVinci
Analog Blackfin
RobotWar2005
임베디드!
캐쉬의 모든것
메모리 할당 알고리즘
CPU 파이프라이닝
자료구조(Tree)
금융

Login
이름

암호

기억하기


사용자 등록

현재 접속중인 등록 사용자는 0명, 익명 사용자는 8명 입니다.
전체 등록 사용자: 751명

마지막 답장
·libcurl + fuse 조합으로 되는게 많네. (1)
·Linux Ftrace에 관해 (3)
·Android MTP ( Media Transfer Protocol ) (1)
·Lighttpd에 인증을 digest 사용시 IE 오동작 문제? (1)
·Dtrace에 관해 (1)

최근글
·OpenSSL and multi-threads (0)
·ARM 환경에서 OpenCL 사용 (0)
·IoT용 WIFI 모듈 비교 ( MCU ) 클래스 (0)
·Glances - 리눅스 여러 가지 항목을 한 화면에서 모니터링 (0)
·plugin 방식의 로그 분석기 (0)

뜨거운 감자
·나는 인터렉티브한 환경에서 역어셈블 한다. (12)
·GNU REGEX (정규표현식) 프로그래밍 강좌 (7)
·SoCRobotWar 2005 - 신입생 기초 교육자료 (7)
·ASP.NET의 데이터 그리드와 사용자 컨트롤 (7)
·DHTML Editing Control (7)

가장 많이 읽은 글
·[Cache] 2-way Set-Associative 방식이란 무엇일까? (2)
·멀티쓰레드(Pthread) 프로그래밍
·Sorting Algorithm Animation (2)
·GNU REGEX (정규표현식) 프로그래밍 강좌 (7)
·SoCRobotWar 2005 - 신입생 기초 교육자료 (7)

임베디드! - 블랙핀 Programmable Flag errata
글쓴이: EzDoum 글쓴날: 2006년 02월 07일 오후 01:01
하드웨어



실리콘 버그에 또 당했다.

사건의 개요는 이렇다. bf-531 재고가 부족하여 bf-532를 대신 사용한 보드가 있었다. bf-531과 bf-532는 내부 메모리 크기만 다르고 핀 배치나 다른 것들은 동일하여 대신 사용해도 문제는 없다. 하지만 실제로 보드를 제작해서 구동을 시켜보니~ I2C가 제대로 동작을 안하는 것이다!!

I2C 프로토콜은 programmable flag 핀 두개를 사용해 클럭과 데이터 신호를 만들어 주변 장치의 설정하는데 주로 사용하는데, clk 핀은 제대로 움직이는데 이상하게 data 핀이 움직이질 않았다. clk핀은 블랙핀에서 출력 핀으로 설정해서 데이터를 이 클럭에 동기를 맞춘다. data 핀은 상황에 따라 입력핀으로 쓰이기도 하고 출력 핀으로 쓰이기도 한다.

가능한 경우의 수를 몇가지 정리해봤다.

1) 보드자체의 문제
아마 기존에 정상적으로 동작하는 보드가 없었으면 유력한 경우중에 하나라고 생각했을텐데, 전에 만들었던 bf-531은 잘 동작하고 이번에 같은 pcb에 새로 만든 bf-532는 모두 안되었기 때문에 이유가 아니라고 결론냈다.

2) 블랙핀 BGA 작업 오류, 주변장치쪽 BGA작업 오류
BGA를 개발용 보드인지라 핫플레이트로 붙였는데 이 과정중에 오류가 볼이 너무 녹아서 다른 핀이랑 붙어버렸을 가능성을 고려해 보았는데, I2C핀을 다른 핀으로 임시로 할당해서 테스트 해보니까 여전히 clk핀은 잘 되는데 data 핀은 움직일 생각을 안했다.

3) bf-532만의 특징
이 사항을 검증하기 위해 데이터북을 다시 읽어 보았다. 데이터북도 보면 bf-531,532,533이 하나의 데이터북으로 되어있다. 단지 내부 메모리 크기만 달랐다. bf-532이지만, bf-531이라고 설정하고 로더 파일이나 컴파일을 해서 돌려도 다른 펌웨어 기능은 문제가 없었다.
4) 펌웨어 상의 문제
이전에 만들었던 bf-531에서는 정상적으로 돌던 코드라 혹시나 하는 마음으로 확인해 본것이다. 펌웨어에서 I2C data핀을 구동하는 원리가, 핀은 2k 저항으로 풀업이 되어 있는 상태이고 블랙핀의 Programmable Flag을 출력으로 설정하고 데이터를 0을 셋팅해서 논리값 0을 만들고 Programmable Flag를 입력핀으로 설정하면 2k풀업에 의해 논리값 1이 만들어 지는 구조이다. 핀을 설정하는 레지스터 값만 넣어주고 읽는 것이라 복잡한 구조도 아니고 이미 검증된 코드가 아닌가.

5) 실리콘 버전의 차이, errata일까??

블랙핀에서 Programmable Flag 동작을 살펴보면,

Programmable Flag가 출력으로 사용하려면 FIO_DIR 레지스터에서 해당하는 비트를 1로 만들면 출력으로 설정되고 FIO_DATA 레지스터 비트에 따라 0,1이 결정된다. 또 Programmable Flag가 입력으로 사용하려면 FIO_DIR 레지스터 비트를 0으로 설정하면 입력 상태가 되고 실제로 값을 읽을려면 FIO_INEN 레지스터의 비트를 1로 설정해야 FIO_DATA 레지스터의 비트값에 반영이 된다.

보통의 경우엔 FIO_INEN 레지스터의 비트가 설정되어 있어도 FIO_DIR레지스터의 비트가 출력으로 설정이 되면 FIO_INEN 레지스터랑 상관없이 값을 출력을 하지만 실리콘 errata에는 rev 0.3인 경우엔 "INEN bit must now be cleared." 이란다 --;; 이전에 만든 rev 0.2의 경우엔 INEN랑 상관없이 동작을 했는데 버전업이 되면서 변경된 사항이란다.

전에도 그랬지만 errata에는 딱 한 줄로 간략하게 내용이 나오는데 이것 때문에 하루 까먹었다.


05000079 Writing FIO_DIR can corrupt a programmable flag's data:

Description:
Writing the FIO_DIR register can corrupt the data of a programmable flag already configured as an output.

Workaround:
When enabling a flag as an output through the FIO_DIR register, set its corresponding input enable (FIO_INEN) bit and keep its corresponding polarity (FIO_POLAR) and edge control (FIO_EDGE) bits cleared.

Note that this workaround should only be applied to revision 0.1. For all other revisions, the FIO_INEN bit must be set to zero for flag pins configured as outputs. To clarify:

rev 0.0 and 0.1 both have this errata. The workaround is to set INEN
rev 0.2 does not have this anomaly, but the Flag output will work irrespective of the INEN setting (it is a don't care).
rev 0.3 does not have this errata either, but the INEN bit must now be cleared. This was necessary as part of a fix to another anomaly("05000142 - Interrupts may be lost when a programmable input flag is configured to be edge sensitive").

Applies to revision(s): ADSP-BF531-0.1


[분류: 하드웨어 인쇄용 페이지 본문 email로 보내기 ]

<  임베디드! - 컬러스페이스 변환 | Multispeaker Setup Guide  >

답장 쓰기
글을 올리시려면 로그인 (사용자 등록) 하셔야 합니다.

검색
Google

분류
·공지 (6)
·인터넷 (87)
·하드웨어 (260)
·C/C++ (65)
·어셈블리 (7)
·리눅스 (136)
·리눅스 커널 (67)
·윈도우즈 (25)
·데이터베이스 (20)
·보안 (16)
·.NET (25)
·그래픽 (13)
·책소개 (42)
·호기심 천국 (80)
·잡담 (111)
·사랑 (3)

전체 본문수: 963
전체 답장수: 525


분류 : 하드웨어
최근글
최근글
가장 많이 읽은 글
·[Cache] 2-way Set-Associative 방식이란 무엇일까? (2)
뜨거운 감자
·SoCRobotWar 2005 - 신입생 기초 교육자료 (7)

EzDoum투표
이지도움 어때요?
이게 뭐야. 다시 안올란다. --;
아이 좋아라~ +_+;
관심없다.
먼가는 있는거 같은데 뭐하는 곳이지?
기타 (자유게시판에 글로 남겨 주세요)
[ 결과 | 투표 ]

랜덤 링크
http://kldp.net


 Home ^ BACK TO TOP ^ EzDoum - 도움이 필요하세요~??
 Powered by KorWeblog 1.5.8 Copyleft © 2001 EzDoum, 관리자: EzDoum