오실로스코프좀 봐주세요..

choissi의 이미지

오실로스코프좀 봐주세요..

플래쉬 메모리가 정상 동작을 하는지 확인하고 싶어서
address pin을 체크 하는 프로그램을 돌렸습니다.

#define sysAddress(offset) (*(volatile BYTE *)(system_base + offset))

while(1)
{
data = SysAddress(0x0001 << Flash_addr_shift);
}

이렇게 해두고 버튼 인터럽트 핸들러에서 Flash_addr_shift
요넘을 하나씩 증가 하도록 해놓고 어드레스 핀을 찍어봤는데..

사진39 033s.jpg는 그 핀이 선택 됐을(1) 때이고
사진39 034r.jpg는 그 핀이 0일때 입니다.
이게 맞는 현상인지 모르겠습니다.

또 어떤 어드레스 핀은.. 1일때는 사진39 033s.jpg같은 형태를
띄지만 0일때는 스코프가 움직이질 않더군요.

File attachments: 
첨부파일 크기
Image icon 사진39 034r.jpg67.97 KB
Image icon 사진39 033s.jpg67.29 KB
Image icon SNAG-0090.jpg57.57 KB
bugiii의 이미지

일반적으로 어드레스 라인은 출력이 여러군데 사용되니까, 정확한 칩의 셀렉트 핀과 같이 봐야 합니다. 여기서는 플레스 메모리의 CS / RD 핀의 신호를 같이 봐야 의미가 있을 것 같습니다. 해당 플레시가 메인 메모리, 다른 I/O 와 같은 어드레스 라인을 사용하는 것 같습니다. 코드를 읽어 올 때도 어드레스는 뜰테니까 구분하려면 칩셀렉트 하는 신호들과 같이 보시면 좋습니다.

아마 오실로가 디지털 같은데 CS / RD 와 해당 어드레스 핀을 조합해서 논리적으로 표현한 다음에서 이상 유무를 판단하시는 것이 어떨까요?

choissi의 이미지

네 그 부분은 인지를 하고 있습니다.
Address는 다른 부품과도 공유를 할것이라고 보고
while(1) 로 무한 루프를 돌렸습니다. 그랬더니 어느정도
스코프에 모양을 드러냈습니다.

그런데 1일때랑 0일때 몇몇 핀들은 다른 양상을 띄는지 모르겠습니다.
1일때는 공통적으로 모양이 나오는데 0일때는 달랐습니다.

Quote:

아마 오실로가 디지털 같은데 CS / RD 와 해당 어드레스 핀을 조합해서 논리적으로 표현한 다음에서 이상 유무를 판단하시는 것이 어떨까요?

이것이 무슨 의미인지 모르겠습니다.

제가 지금 테스트 하고 있는 cpu가 analogdevice의 blackfin 이란 processor인데 flash가 비동기메모리뱅크2번에 맵핑(0x20100000~0x201FFFFF)되어서 chip enable이라던지 read enable, write enable은 cpu에서 자동으로 내주는거 같습니다.

울랄라~ 호기심 천국~!!
http://www.ezdoum.com

bugiii의 이미지

제일 좋은 것은 로직 아날라이저가 있으면 여러 신호를 동시에 논리 레벨로 보고 신호를 분석할 수 있을텐데요. (각 신호의 논리 연산을 수행해서 그 결과를 볼 수 있습니다.)

지금은 오실로스코프만 있다고 가정하겠습니다. 아마 오실로 스코프에 채널이 여러개 있지요? CS / RD 핀을 각각 다른 채널로 어드레스도 다른 채널로 각각 입력하면 화면에 각 채널 신호가 같이 나올 겁니다.

이 때, CS / RD 가 동시에 active 한 상태에서의 어드레스 라인 신호만을 유효한 것으로 보고 검사해보시는 것이 맞다고 말씀드린 것입니다. (메모리에 매핑된 플레쉬 메모리이므로, CPU 가 어드레스 라인과 cs/rd/wr 신호를 만들어 내는 것은 맞습니다.)

채널이 없는 오실로라면... 무효... -_-;

p.s. 아참 채널에 트리거가 잡혀있는지요? 보통 어드레스 라인에 풀업이나 다운 시켜놓았으면... 평상시 레벨이 정해져 있을 것이고 엣지 트리거가 동작하면 결과가 다르게 나올 수도 있을 것 같습니다. 채널의 캡쳐 순간을 다른 신호의 엣지로 선택할 수도 있을 겁니다. 만약 cs/rd 두개가 active 한 상태의 신호를 따로 얻으실 수 있다면 어드레스 라인은 그냥 흐르게 하고 나머지 채널의 엣지로 보시면 참 좋을텐데요....

choissi의 이미지

제가 사용하는 오실로스코프가 tektronix tds210 이란 모델입니다. 채널이 1,2번이 있기는 한데 지금은 채널1번만 연결되어 있습니다.

bugiii님께서 글을 중에서 두가지 궁금한 점이 있습니다
1) 채널에 트리거가 잡혀 있다는 것이 무엇인지 궁금합니다.
2)

Quote:
cs/rd 두개가 active 한 상태의 신호를 따로 얻으실 수 있다면 어드레스 라인은 그냥 흐르게 하고 나머지 채널의 엣지로 보시면 참 좋을텐데요....

이게 무슨 뜻인지 이해가 안됩니다.

제가 오실로스코프와 보드만 받아서 아직 오실로스코프의 동작을
정확히는 모릅니다. 다만 그라운드에 접지하고 핀으로 찍고 autoset이란
기능을 사용해서 보는 정도입니다. 좀 자세한 설명해주시면 감사하겠습니다.

울랄라~ 호기심 천국~!!
http://www.ezdoum.com

choissi의 이미지

전체적으로 하고 싶은 것은
flash에 command를 날려보고 싶은데
이게 잘 안되는거 같아서 지금 하드웨어적인 구성을 점검중입니다. 플래쉬메모리는 sst39vf160입니다.

울랄라~ 호기심 천국~!!
http://www.ezdoum.com

bugiii의 이미지

플레쉬 롬에 뭔가 써야 하는데... 영역 지우고 다시 쓰기 커맨드 같은 것이 안먹는다는 말씀 같습니다.

일단 읽는 것은 왠만하면 읽히니까요. 플래쉬 롬이 소켓에 꼽혀 있다면 다른 곳에서 특정한 데이터로 라이트를 하고 다시 보드에 꼽은 다음 읽기 테스트부터 하시는 것이 좋겠습니다. (읽기는 일단 되는 것인가요?)

그리고, 메모리 매핑이기 때문에 CPU 쪽에서 특정 메모리 접근할 때에 억세스 타임을 조절할 수 있는지와 플래쉬 메모리의 억세스 타이밍을 알아보시고 조절하셔야 할 것입니다. 플레쉬는 일반 램보다 좀 느리기 때문에 어드레스 라인 신호와 cs/rd 같은 것이 조건에 맞아야 제대로 데이터를 쓰고 읽을 수 있을 겁니다.

아.. 그리고 비동기 메모리 뱅크라는 것은 무엇인가요? 보통 I/O 용의 메모리 부분은 캐쉬도 끄고 타이밍도 느리게 해서 사용하는게 일반적인데요. 그런 부분도 한번 알아보시면 좋겠습니다.

아 그 엣지 트리거는 오실로스코프로 계속 보다보면 어떤 특정한 순간을 포착하고 싶을 때가 있는데요. 신호가 로 레벨에서 업 레벨로 뛸 때의 엣지인지 아니면 반대의 경우인지 아니면 두 경우 모두다 인지 같은 것을 설정해서 그 순간부터의 신호를 잡기 위해서 있습니다.

auto 로 한다면 오실로가 적당히 보여주기 때문에 애매한 순간이 좀 있거든요. 확실하게 하려면 엣지로 순간을 포착하는 것이 좋을 때가 많습니다.

만약 엣지 스탑 기능이 있다면 이것을 특정 채널에 두고 다른 채널도 그 순간에 스톱 시킬 수 있다면 제어 신호와 어드레스 라인의 순간을 포착할 수 있다는 말씀입니다. 설사 어드레스 라인이 0 이더라도 제어 신호는 active 하게 될 때가 있거든요.

아마 그 cpu 에서 뱅크에 해당하는 cs 가 있을 겁니다. 그 신호하고 원하는 어드레스 라인 하나를 동시에 다른 채널로 입력받아서 엣지 설정하시고 보시면 좋겠습니다.

그럼, 밤샘하시면서 같이 보자구요... -_-;

choissi의 이미지

bugiii님 너무 너무 감사합니다.

일딴 플래시램으로 신호가 나가는 것을 확인을 하고
보드에 땜질을 했습니다 그래서 임의의 값을 미리 넣는것은
좀 어렵구요..

플래쉬가 초기 상태이면 읽으면 0xffff라고 하더군요.
그래서 읽어보면 0xffff가 나오긴 하는데 주소를 루프 돌면서
찍어보면 0xffff가 아닌 구간도 나와서 chip erase를 해볼려고한것이죠
하지만 chip erase를 위해서는 특정 주소에 특정 값을 순서에 맞게
flash로 전달을 해야하는데 그게 제대로 안되더라구요..

그래서 우선 flash vender id와 device id를 얻어 보는것을
할려고 하는데 그것도 특정 address에 특정 값을 write해야 하는데
동작을 안해서 이것 저것 해보는 중입니다.
이것 저것 해보는거 중에 하드웨어적으로 구성이 맞는지 확인하는것중에
하나가 어드레스핀으로 제대로 값이 나가는지 확인할려고 한것이죠.,.

cs/rd는 cpu가 내보내는거라 cpu 메뉴얼을 보니까
flash가 표준이 있나보더라구요.. 그걸 준수하는거 같고
언급하신 클럭 타이밍에 관한거는 보드 설계하신 분이 여유있게
맞춰 주셨습니다. (cpu에 제어 레지스터에 그 타이밍 지정하는
부분이 있었습니다.)

그리고 비동기 메모리 뱅크는 첨부한 그림을 보시면 감 잡으실것 같네요.

댓글 첨부 파일: 
첨부파일 크기
Image icon 0바이트

울랄라~ 호기심 천국~!!
http://www.ezdoum.com

wooix의 이미지

Quote:

인용:

아마 오실로가 디지털 같은데 CS / RD 와 해당 어드레스 핀을 조합해서 논리적으로 표현한 다음에서 이상 유무를 판단하시는 것이 어떨까요?

이것이 무슨 의미인지 모르겠습니다.

제가 지금 테스트 하고 있는 cpu가 analogdevice의 blackfin 이란 processor인데 flash가 비동기메모리뱅크2번에 맵핑(0x20100000~0x201FFFFF)되어서 chip enable이라던지 read enable, write enable은 cpu에서 자동으로 내주는거 같습니다

위에서 말씀하신것 처럼 chip enable, r/w enable과 같은 신호에 트리거를 잡아서 체크 하심이 좋을듯 하네요.

트리거는 윗분이 말씀하셨듯이 위상변이가 일어나는 순간을 감지하는 것입니다.

특정 command를 flash에 날리려면 cpu는 write enable과 chip enable을 동시에 날립니다. 이걸 이용하는거죠..

scope가 prove 4개 짜리라면 두개를 AND로 트리거 걸면 쉽지만 지금 같은경우 2 prove이므로 1번째 prove는 write enable에 트리거를 거시고 보고자 하는 bit line의 데이터를 2번째 prove로 확인 하시면 될겁니다.

이렇게 두게 되면 write enable 신호가 생성될때 2번째 prove를 통해 정확한 위치를 잡을 수가 있을겁니다.

그리고 auto 로 특정 위치를 잡기는 힘들기 때문에 (chip enable이나 write enable은 자주 사용되기 때문에 계속적으로 화면이 바뀔겁니다.)

tektronix scope이면 trigger 버튼쪽에 보시면 normal과 auto라는 두개의 버튼이 있을건데 normal로 해주시면 필요한 부분에서 멈추는 것을 확인 할 수 있을겁니다.

디버깅을 위해서라면 serial memory 사용하시면 한방에 끝나겠는데 ^^

평온하다~

bugiii의 이미지

정말 혹시나 해서 그러는데요... CPU 에서 나오는 어드레스 라인을 몇개의 IC 들이 사용하고 있나요?
어드레스 라인을 풀업 혹은 버퍼링해서 설계한 것인지요? 핀아웃에 걸리는 경우도 가끔 있어서 그러는데요. 한번 확인 부탁드립니다.

그리고, 좀 삽질이긴 해도 눈 질끈 감고, 보드에서 플래쉬 떼어내는 것이... -_-; 원하는 데이터 만든 다음 (잘 만드셔야 합니다... 단순 반복은 제대로 읽었는지 확신할 수 없으니까요) 그걸로 라이트하고 다시 땜질해서 보드에 붙힌다음 읽는 것이 제대로 되는지 확인하는 것이 첫번째 같은데요... 가장 확실한 방법...

그런데, 그 비동기라는 것이 참 마음에 걸리는데요. 그렇게 해서 동작하는 다른 보드가 있었나요? 일반 I/O 용으로 그곳에 매핑해서 사용하는데 문제가 없었는지 궁금합니다. 쓰기 동작과 읽기 동작시 대기를 하지 않거나 엉뚱한 값을 읽어 올 수도 있고, 바이트 단위 조작이 바이트 단위가 아닌 cpu 워드 단위 동작이 될 가능성도 배제할 수 없을텐데요...

흠.... 왜 안될까요...

p.s. msn 추가했습니다. 오늘 밤새실때 심심하시면 허용해주세요... -_-;

p.s. 왠만하면 개발용은 플래쉬 롬 소켓을 이용하는 것이 좋다고 봅니다. 보드 제작하시는 분한테 억지를 써서라도 관철하심이...

owlet의 이미지

일단 오실로스코프 사용법부터 배우실것을 권해드립니다.
그리고 address는 항상 cs와 함께 찍어보세요.
cs없이 address만 보고는 아무것도 알수 없습니다.

vender id와 device id도 읽히지 않는다면 플레시에서 rd, wr, cs신호가
플레시쪽에서 움직이는지 부터 확인하시고, 문제가 없다면 위 프로그램을
돌린 상태에서 cs에 트리거를 맞추시고 address를 하나씩 찍어보세요.
그 다음에 data도 하나씩 체크해보시구요.
확인을 하실때는 반드시 플래시의 다리쪽에서 직접 확인해보세요.

모두 문제가 없다면 IO타이밍을 최대한으로 늦춰보세요.

여기까지 확인해도 문제가 없다면 플래시자체를 확인해보거나
플래시 컨트롤 플로우를 다시한번 확인해봐야 할듯합니다.

p.s. 윗분 ps에 대한 답글입니다만.. 제가 하드웨어 담당자라면 억지를 써도
플래시를 소켓으로 달아주지는 않을것 같습니다. 그게 별거 아닌게 쫌 비싸거든요.. -_-

bugiii의 이미지

owlet 님의 ps 에 대한 답글입니다.

개발용이니까 꼭 필요하다고 생각합니다. 양산용이야 당연히 1원이라도 아껴야 하지만 개발 시간을 따진다면 돈으로 환산할 수 없죠...

p.s. 헉 딴분을 msn 에 등록했다니.. 아웅... 원래 정보가 없군요... 심심하시면 저를 등록하세요...

owlet의 이미지

대부분 ICE를 사용하거나 패러럴포트를 이용한 jtag을 이용해서 해결할수 있습니다.
소켓을 사용하는것이 그다지 개발시간을 줄이는데 도움이 되리라고는 생각되지않네요..
소켓박았던 자리에 플래시 바로 붙여서 보드한번 더 떠야하기때문에 오히려 시간을 지연시킬듯 하네요..

bugiii의 이미지

owlet wrote:
대부분 ICE를 사용하거나 패러럴포트를 이용한 jtag을 이용해서 해결할수 있습니다.
소켓을 사용하는것이 그다지 개발시간을 줄이는데 도움이 되리라고는 생각되지않네요..
소켓박았던 자리에 플래시 바로 붙여서 보드한번 더 떠야하기때문에 오히려 시간을 지연시킬듯 하네요..

네, 소프트웨어 디버깅이라면 그렇게 하면 편하다고 생각합니다. 지금 하시는 것도 아마 그런 종류로 다운로딩하고 바로 실행하는 환경 아닐까요? 프로그램 담는 플레쉬라면 지금처럼 테스트조차 못하겠죠. H/W 적인 문제인지를 알아보려면 로직으로 찍든지 제대로 읽히는지를 알아봐야 하는 것이라고 생각해서 드린 말씀입니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.