태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

안녕하세요. 말다리 입니다. 오래간만에 블로그에 글을 올립니다.

 

이번 주제는 TMS320F28377D 라는 TI사의  MCU(DSP) chip 입니다. 이 칩(chip)은 최대 200MHz까지 동작 가능한  Dual-Core 타입의 고-성능 MCU 입니다. 이와 더불어 IEEE-754 Single Precision Floating-point 데이터를 하드웨어적으로 고속 처리할 수 있는 Floating-point Unit(FPU), CPU와 독립적으로 각종 제어 및 수치처리 연산을 수행할 수 있는 Control Law Accelerator(CLA), 나눗셈이나 제곱근 연산, 삼각함수 등의 수학연산 처리를 고속화하는 Trigonometric Math Unit(TMU), 등을 내장하여 이전 세대의 28x 계열과는 비교할 수 없을 정도로 놀라운 연산능력을 가지고 있습니다. 이 뿐만아니라 강력하고 다양한 주변회로를 가지고 있는 MCU 계의 하이-엔드 칩이라고 할수 있습니다.

 

이렇게 강력한 MCU(DSP)인 TMS320F28377D 대해서 연재하면서 조금씩 공부해 보고자 합니다. 예제가 필요한 부분은 직접 예제도 제작해서 공유해 보도록 하겠습니다. 먼저 오늘 첫번째 다룰 부분은 TMS320F28377D의 리셋 회로 입니다.

 

먼저 아래 그림은 TMS320F28377D 이전 세대 MCU인 TMS320F28335의 리셋 소스에 대한 간략하게 도시한 것입니다.

 

 

 

 

그림에서 볼 수 있는 것 처럼 TMS320F28335의 경우 리셋 소스가 /XRS 핀과 Watchdog 타이머 2가지 밖에는 없습니다. 아주 단순합니다. 하지만, 차세대 MCU인 TMS320F28377D의 경우에는 다음과 같이 바꿨습니다.

 

 

 

 

/XRS 핀과 Watchdog 타이머 외에도 리셋소스가 다양하게 추가된 것을 볼 수 있습니다. 즉, 좀 더 다양한 조건에서 칩을 리셋 시킬 수 있다는 얘기 입니다. 이외에도 TMS320F28377D의 경우 RESC라는 Reset Cause Register를 가지고 있어서 지난 리셋의 원인이 무엇인지 확인이 가능해졌습니다. 사용자는 칩에 의도치 않은 리셋이 걸릴 때 해당 레지스터 값을 확인해서 어떠한 원인으로 리셋이 걸리는 지 추정이 가능해진 것 입니다. 이런 기능은 기존 28x MCU(DSP)에는 없었던 개선된 기능입니다.

 

 

위 그림은 리셋 소스에 대해서 간략하게 도시간 그림이지만, 좀더 자세하게 표로 정리하면 다음과 같습니다.

 

 

 

세로축의 왼쪽 첫번째 열이 TMS320F28377D 이 가진 모든 리셋 소스 입니다. Dual-Core 이다보니 CPU1과 CPU2 별로 각각의 리셋 소스가 있는 것도 볼 수 있습니다. CPU1이나 CPU2가 명기돼 있지 않은 것은 공통 리셋 소스라고 보면 됩니다. 그리고 상단 가로축 첫번째 행이 각 리셋 신호가 발생했을 시에 CPU core, Peripheral(주변회로), JTAG 회로, IO 핀 상태, /XRS 핀 출력의 리셋 여부를 표기하기 위해서 구분되어 있습니다.

 

각 리셋 소스에 따라서 Yes 로 표시된 것은 해당 리셋신호에서 해당 회로가 리셋 된다는 의미이고, No 로 표시된 것은 기존 상태 그대로 남는다는 의미 입니다. 단, /XRS Output 이 Yes라는 것은 해당 리셋 상태에서 /XRS 핀이 Low 신호가 출력된다는 의미입니다. 그 외 Hi-Z 는 하이 임피던스로 마치 단선된 것 처럼 된다는 의미입니다. Isolated는 절연된다는 것인데, 여기서의 절연이 어떻게 절연되는지는 아직 잘 모르겠군요.. 이부분은 나중에 차차 찾아 보겠습니다.

 

일단 하니씩 좀더 자세히 살펴보겠습니다.

 

 

Power-On Reset (POR)

POR 회로는 칩에 전원이 인가되고 안정된 상태에 이르기까지 칩을 계속 리셋 상태로 묶어두는 회로입니다. 이것을 통해서 GPIO 핀들의 글리치(Glitch)를 억제하고, 칩이 깨끗하게 시동 될 수 있게 됩니다. POR 회로가 없는 칩의 경우는 별도의 POR 소자를 사용하는 경우도 있지만, 우리의 TMS320F28377D는 자체적으로 가지고 있습니다.

 

TMS320F28377D에서 POR이 발생하면 표에서 보이는 것 처럼, 칩의 모든 회로는 리셋상태가 되고, IO핀은 Hi-Z 상태가 되며, /XRS 핀은 Low 신호를 출력하게 됩니다. 이때 /XRS 핀의 출력 신호는 TMS320F28377D가 사용된 시스템의 다른 IC(소자)들을 리셋 시키기 위해서 사용될 수 있고, 대부분의 경우에서 충분한 리셋 시간을 제공합니다. 하지만 일부 어플리케이션의 경우에는 더욱 긴 리셋 시간이 필요한 경우가 있는데, 이러한 경우에는 적절한 리셋 지속 시간을 제공하도록 외부 회로가 필요할 수 있습니다.  

 

 

External Reset (/XRS)

실제 리셋 핀(/XRS)에 외부에서 입력되는 신호로 발생하는 리셋을 말합니다. /XRS 핀은 앞서 POR의 경우 처럼 주변의 다른 소자들을 리셋하기 위하기 위한 용도로 출력 핀으로써도 사용될 수 있습니다만, 입력 핀으로써 외부 신호를 입력 받아 칩을 리셋 할 수 있습니다. /XRS 핀에 신호 입력을 통한 리셋은 위 표에서 보이는 것 처럼, 칩 전체를 리셋합니다.

 

 

Debugger Reset (/SYSRS)

/SYSRS은 TI의 MCU(DSP) 개발 소프트웨어인 CCS(Code Composer Studio)를 사용해서 디버거에서 발생시키는 리셋을 말합니다. 간단하게 CCS 메뉴상에서 사용자가 Reset 메뉴을 선택했을 때 발생하는 리셋이라고 보면 됩니다. 이러한 기능을 통해서 사용자는 개발 도중에 칩에서 디버거를 분리하거나, 시스템 레벨의 설정에 방해를 주지 않고 아주 간편하게 칩을 리셋 시킬 수 있습니다.

 

TMS320F28377D에서 /SYSRS는 CPU1과 CPU2 각각 별도로 수행할 수 있습니다. 위 표를 보면 CPU1에 발생하는 /SYSRS의 경우 JTAG debug logic Reset과 /XRS 출력을 제외한 모든 회로가 리셋되는데 반해서 CPU2에서 발생한 /SYSRS의 경우에는 자기자신의 CPU2 Core와 CPU2 Peripheral 만 리셋된다는 것을 알 수 있습니다. 사용자는 항상 이러한 부분에 신경써야 합니다.

 

 

Watchdog Reset (WDRS)

와치독 리셋은 칩이 가지고 있는 와치독 타이머가 풀카운팅 됐을 때 발생하는 리셋입니다. 즉, 와치독 회로를 사용할 때에는 와치독 카운터가 풀카운팅이 되지 않도록 일정 주기(와치독 카운터가 풀카운팅 되는데 걸리시는 시간보다 짧은 시간)마다 와치독 카운터를 "0"으로 클리어 해주는 코드가 사용자의 프로그램 상에 포함되어 있어야 합니다. 이렇게 되면, 사용자 프로그램이 정상작동 할 때에는 와치독 카운터가 풀카운팅 되지 않음으로 리셋이 발생하지 않지만, 사용자 프로그램이 오동작 하는 경우에는 와치독 카운터를 정상적으로 클리어되지 못하므로 칩이 리셋되고 사용자 프로그램이 자동으로 처음부터 다시 동작하게 됩니다.

 

TMS320F28377D는 이러한 Watchdog 회로를 CPU1와 CPU2에 각각 개별적으로 가지고 있습니다. CPU1에서 발생한 Watchdog Reset 은 앞서 POR과 같은 레벨로 칩 전체를 리셋시키지만, CPU2에서 발생한 Watchdog Reset은 CPU2./SYSRS과 마찬가지로 자기자신의 CPU2 Core와 CPU2 Peripheral 만 리셋 됩니다.

 

 

NMI Watchdog Reset (/NMIWDRS)

NMI란 non-maskable interrupt의 약자로 사용자가 설정을 통해서 막거나 비활성화 시킬 수 없는 인터럽트를 말합니다. 이러한 NMI는 주로 칩자체의 하드웨어 적인 오류가 검출됐을 때 발생하게 됩니다. 여기에 이어서 NMI Watchdog Reset은 NMI가 발생했을때 사용자가 지정한 시간내에 NMI를 발생시킨 오류에 대응하지 않을 경우에 발생하는 리셋 입니다.

 

TMS320F28377D에서는 NMI Watchdog Reset 회로도 CPU1과 CPU2에 각각 개별적으로 가지고 있습니다. CPU1에서 발생한 NMI Watchdog Reset 앞서 POR과 같은 레벨로 칩 전체를 리셋시키지만, CPU2에서 발생한 Watchdog Reset은  자기자신의 CPU2 Core와 CPU2 Peripheral 만 리셋합니다. 하지만, CPU2의 NMI Watchdog Reset이 발생하면 CPU1의 NMI를 트리거 하기 때문에 CPU1 도 CPU2의  NMI 발생을 자동적으로 알고 조치를 취할 수 있습니다.

 

 

DCSM Safe Code Copy Reset (/SCCRESET)

TMS320F28377D는 플래시 메모리의 특정 영역에 대한 읽기 접근을 차단할 수 있는 DCSM(dual-zone code security module)라는 보안회로를 가지고 있습니다. 따라서, DCSM이 활성화 되었을 경우 보안 메모리 영역에 안전하기 접근하기 위해서는 규정된 방법을 따라야 합니다. 하지만, 잘못된 방식으로 접근할 경우에 DCSM회로는 리셋을 발생시킵니다. 이러한 보안 리셋은 CPU1와 CPU2에 각각 개별적으로 발생수 있고, 각각 CPU1./SYSRS와 CPU2./SYSRS 유사한 레벨로 칩을 리셋 시키지만, 잠재적인 공격자에 대한 접근을 거부하기 위해서 JTAG Debug Logie 또한 리셋 시킵니다.

 

 

Hibernate Reset (/HIBRESET)

Hibernate는 칩 레벨의 초 저-전력 모드 혹은 최대 절전 모드입니다. 칩이 Hibernate 상태에서 깨어날때 수반되는 특별한 리셋이 Hibernate 리셋입니다. Hibernate 리셋은 POR과 유사하지만, I/O 핀들이 절연(isolated)된다는 것과 /XRS 신호가 출력되지 않는다는 것이 다릅니다. I/O 핀 절연은 Boot ROM 플로우의 일부분으로 사용자가 소프트웨어적으로는 설정할 수 없습니다. Hibernate 모드에 대해서는 이후에 좀더 자세히 다뤄 보도록 하겠습니다.

 

 

Hardware BIST Reset (/HWBISTRS)

TMS320F28377D의 각각의 CPU는 CPU의 기능을 테스트 할 수 있는 HWBIST(Hardware Built-In Self Test) 모듈을 자체 내장하고 있습니다. 해당 기능는 CPU를 테스트 한 후 원래의 작업 상태로 돌아가기 위해서 리셋을 발생시킵니다. 이러한 리셋(/HWBISTRS)은 오직 CPU 만을 리셋시키고 주변회로(Peripheral)들이나 시스템 제어는 이전에 설정된 상태를 유지합니다. HWBIST 기능은 특별한 boot ROM 플로우의 일부분으로 보통 일반적인 사용자는 직접적으로 사용하지 않습니다.

 

 

Test Reset (/TRST)

JTAG 로직은 전용 핀으로 제어되는 자기자신만의 리셋(/TRST)를 가지고 있습니다. 이러한 리셋은 사용가가 디바이스에 디버거를 연결하지 않는 경우에 활성화 됩니다.

 

 

여기까지 TMS320F28377D의 리셋 회로들에 대해서 간단하게 살펴 봤습니다.

 

 

 

저작자 표시
신고
Posted by 말다리

댓글을 달아 주세요

티스토리 툴바