라디오 전자 및 전기 공학의 백과사전 ROM 에뮬레이터를 사용하여 마이크로컨트롤러 디버깅 무선 전자 및 전기 공학 백과사전 무선 전자 및 전기 공학 백과사전 / 마이크로 컨트롤러 마이크로프로세서가 포함된 전자 장치의 작동 프로그램을 개발하고 디버깅하는 복잡성이 전체 개발 비용을 결정하는 경우가 많습니다. 메모리와 일부 주변 장치가 통합된 마이크로컨트롤러(MC)에서는 특히 두드러집니다. 디버깅을 크게 용이하게 하는 도구 중 하나는 [1]에 설명된 ROM 에뮬레이터입니다. 제안 된 기사는 작업 기술을 설명합니다. 디버깅 기능은 설명된 방법으로 제한되지 않습니다. 이 과정은 일반적으로 디자인뿐만 아니라 어느 정도 예술입니다. 같은 악기에 대해 모든 사람이 "자신의 음악"을 만듭니다. 우리는 MK 프로그램을 디버깅하기 위한 독창적인 도구와 방법을 공유할 독자들에게 감사할 것입니다. MC 소프트웨어 디버깅 프로세스의 복잡성과 수고로움은 다음 요인에 의해 결정됩니다[2].
전통적인 테스트 장비(예: 오실로스코프)는 MCU 디버깅을 위해 제한된 범위에서만 사용할 수 있습니다. 가장 간단한(동시에 가장 비효율적인) 디버깅 방법은 "시행착오 방법"입니다. 프로그램을 재프로그래밍 가능한 읽기 전용 메모리(EPROM)에 로드하고 실행을 시도하며 프로그램의 오류를 감지 및 수정하고 하드웨어, EPROM 지우기, 프로그램 다시 로드 등 e. EPROM 칩에 데이터를 지우고 쓰는 프로세스는 시간이 오래 걸리며 일정 횟수의 재프로그래밍 주기 후에는 일반적으로 실패합니다. 마이크로 회로를 반복적으로 설치 및 제거하면 EPROM 소켓의 전기 접점의 신뢰성이 떨어집니다. 시스템에 대한 디버깅 정보를 얻을 가능성은 거의 없습니다. 현재 MK는 개인용 컴퓨터를 기반으로 한 크로스 도구로 디버깅하는 경우가 가장 많습니다. 이를 통해 MC 리소스의 방해를 최소화할 수 있습니다. 디버깅할 장치는 그림과 같이 ROM 에뮬레이터와 같은 일부 도구를 통해 컴퓨터에 연결됩니다. 이러한 콤플렉스를 통해 프로그램을 다운로드 및 편집하고 테스트 모듈을 입력하고 시스템에 대한 특정 정보를 얻는 등 아래에서 논의할 수 있습니다. ROM 에뮬레이터가 유일하고 가장 강력한 디버깅 도구는 아니지만 여전히 인기가 있습니다. 그들의 "장수"는 MC 유형과의 독립성 (외부 프로그램 메모리로 작업하는 기능 만 필요함), 실시간 작동, 저렴한 가격 및 광범위한 장비 개발자 및 라디오 아마추어에 대한 접근성으로 설명됩니다. MCS-51 MK 제품군(8031, 8051, 80C31, 80C51. KR1816BE31, KR1816BE51, KR1830BE31, KR1830BE51 등)의 예를 사용하여 ROM 에뮬레이터를 사용하여 프로그램을 디버깅하는 기술을 고려할 것입니다. 디버깅을 시작하려면 시스템 하드웨어 및 MC 자체의 작동 가능성을 확인해야 합니다. 이를 위해 "자유 카운트" 테스트[3]를 사용할 수 있습니다. 이는 MK 포트 라인에서 가능한 모든 코드 조합의 열거로 구성됩니다. 테스트하는 동안 포트 라인은 출력 상태로 설정되므로 먼저 디버깅 중인 장치에 따라 포트 라인이 다른 요소의 출력에 로드되지 않았는지 확인하십시오. 그러한 부하가 있으면 일시적으로 분리하십시오. MCU 프로그램의 전체 주소 공간 내에서 NOP(No Operation) 명령 코드로 ROM 에뮬레이터를 로드합니다. MCS-51의 경우 코드 00H입니다. 이러한 "프로그램"을 실행할 때 MK는 프로그램 메모리의 모든 주소를 순차적으로 통과합니다. 오실로스코프를 사용하여 ALE, PME 및 포트 P0, P2의 신호를 모니터링합니다. 포트 라인의 파형은 주소 및 데이터의 하위 바이트 P0에 대한 멀티플렉싱을 고려하여 이진 카운터의 타이밍 다이어그램과 일치해야 합니다. 다음으로 표 1에 표시된 테스트 프로그램을 ROM 에뮬레이터에 로드하여 포트 P1 및 P00을 확인합니다. 0. 지정된 포트의 라인에 XNUMXH에서 XNUMXFFH까지 일련의 코드를 출력하여 XNUMX비트 이진 카운터를 시뮬레이트합니다. 오실로그램이 필요한 것과 일치하는 경우 포트에서 분리된 부하를 복원하고 MK의 작업 프로그램 디버깅을 진행합니다. 시스템의 소프트웨어와 하드웨어를 동시에 디버깅하고 있으며 오실로스코프를 사용하여 테스트 지점에서 주기적으로 신호를 모니터링하는 것을 잊지 마십시오. 신호 유형과 신호에 대한 아이디어의 불일치는 진지한 반성 및 추가 확인이 필요한 이유입니다. 개발 및 디버깅을 용이하게 하려면 프로그래밍의 모듈식 원칙을 준수해야 합니다. 즉, 기능적 특징에 따라 MK 프로그램을 여러 부분으로 나눕니다. 이렇게 하면 개별 모듈을 쉽게 이동하고 필요한 경우 다른 프로젝트에 적용할 수 있습니다. 전원이 켜지거나 MK가 재설정된 후 제어가 전달되는 모듈을 메인 또는 메인이라고 합니다. 프로그램 진입점으로 제어를 넘기는 것은 반환 주소로 스택을 오염시키지 않기 위해 서브루틴 호출이 아닌 점프 명령이어야 합니다. 예기치 않은 프로그램 결과를 방지하려면 변수를 처음 사용하기 전에 각 변수에 초기 값을 지정해야 합니다. 경우에 따라 주변 장비를 초기화해야 할 수도 있습니다. 초기화 블록은 기본 프로그램 모듈의 시작 부분에 배치됩니다. 디버깅 시작 시 기본 프로그램 모듈의 대략적인 보기가 표에 나와 있습니다. 2. 프로그램에 대한 진입점과 종료 핸들러만 포함합니다. 이러한 출력은 마이크로컨트롤러 시스템에서 거의 사용되지 않지만 비상 상황을 올바르게 종료하려면 제공되어야 합니다. 고려중인 예에서 작업 완료 후 프로그램이 "루프"됩니다. 하드웨어 재설정 신호로 시스템을 다시 시작해야만 이 상태에서 벗어날 수 있습니다. 디버깅하는 동안 다른 프로그램 모듈이 준비되면 기본 모듈에 추가됩니다. 연결 및 디버깅 순서는 중요한 역할을 합니다. 정보 출력 장치(디스플레이, 디지털-아날로그 변환기 등)용 드라이버부터 시작하여 해당 호출을 기본 모듈에 배치해야 합니다. 그런 다음 다른 주변 장치의 드라이버, 데이터 처리 루틴을 디버깅하고 그 후에야 모든 프로그램 모듈의 공동 작동을 확인합니다. 영숫자 디스플레이가 있는 경우 드라이버가 먼저 디버깅되고 나중에 디버깅 정보(예: MK의 내부 데이터 메모리 내용)를 표시하는 데 사용됩니다. 제어 컴퓨터와 디버깅 중인 장치 모두에서 포함된 정보를 읽고 쓸 수 있는 ROM 에뮬레이터를 사용하는 경우 MK는 디버그 데이터를 ROM 에뮬레이터의 여유 메모리 영역에 배치할 수 있으며 제어 컴퓨터는 이를 읽고 디스플레이에 표시합니다. 예를 들어 MCU의 내부 데이터 RAM의 내용을 출력하려면 외부 데이터 메모리 쓰기(WR) 신호 출력을 ROM 에뮬레이터의 쓰기 신호 입력에 연결하고 표 3에 표시된 서브루틴을 사용합니다. 32. 디버깅 중인 장치의 프로그램 메모리 양이 8000KB를 초과하지 않는다고 가정하므로 에뮬레이터 메모리에 배치된 디버그 정보는 주소 0H에서 시작합니다. 레지스터 R1 및 R8000의 내용은 나중에 루프를 구성하기 위해 서브루틴에서 사용되기 때문에 별도로 전송됩니다. 디버깅 정보가 출력된 후 MK 프로그램이 일시 중지되고 807H-XNUMXFH ROM 에뮬레이터의 메모리 셀 내용이 제어 컴퓨터에서 읽고 표시 및 분석됩니다. 마찬가지로 프로그래밍 방식으로 액세스 가능한 모든 MC 레지스터의 내용을 표시할 수 있습니다. 주변 장치 드라이버 디버깅을 시작할 때 MK에서 생성된 제어 신호를 일시적으로 비활성화하여 프로그램 오류로 인한 장치 오류를 방지합니다. 프로세스가 일회성이면 "루프"하고 필요한 경우 오실로스코프 클록 신호를 프로그래밍합니다. 오실로스코프에서 생성된 신호를 모니터링하여 드라이버를 디버그합니다. 제어 신호의 타이밍 다이어그램이 필요한 것과 일치하는지 확인한 후 주변 장치를 연결하고 실제 하드웨어에서 드라이버 디버깅을 계속하십시오. 마지막으로 프로그램 모듈에서 디버깅 요소를 제거하고 최종 형태에서 동작을 확인합니다. 서로 다른 모듈에서 공유 MK 리소스를 사용하면 다른 서브루틴이 추가될 때 디버깅된 프로그램이 작동을 멈춘다는 사실이 자주 발생합니다.따라서 다음 모듈을 디버깅한 후 이전에 디버깅된 모든 드라이버와 서브루틴이 계속 올바르게 작동하는지 확인하십시오. 프로그램에서 인터럽트를 사용하는 경우 반드시 필요한 경우가 아니면 인터럽트를 비활성화하지 마십시오. 디버깅된 모듈은 현재 필요하지 않더라도 프로그램에서 제거하면 안 됩니다. MK가 "정지"되면 다음 오류 현지화 방법이 유용합니다. 순차적으로 증가하는 숫자를 표시하는 프로그램에 제어점을 입력하십시오. "매달린" 후 디스플레이에는 마지막으로 성공적으로 통과한 제어점에 해당하는 번호가 표시됩니다. 이러한 여러 지점이 무한 루프에 걸리면 디스플레이의 숫자가 빠르게 변경됩니다. 주기에 어떤 지점이 있는지 정확히 확인하려면 예를 들어 유휴 주기의 형태로 각 지점을 출력할 때 프로그램 지연을 설정하여 숫자 변경을 인위적으로 늦춰야 합니다. 디버깅 중인 시스템에 내장 디스플레이가 없는 경우 ROM 에뮬레이터의 여유 메모리 영역을 통해 호스트 컴퓨터의 디스플레이에 정보를 표시할 수 있습니다. 모든 장치 드라이버를 디버깅한 후 다른 서브루틴 디버깅을 시작합니다. 그 중 하나라도 데이터를 처리하거나 변환하는 복잡한 알고리즘을 구현하는 경우 하나 이상의 변수 중간 값을 디스플레이에 표시하는 것은 오류 분석에 충분한 정보를 제공하지 못하는 경우가 많습니다.어려움을 극복하기 위해 필요한 양의 디버깅 정보를 ROM 에뮬레이터의 여유 메모리 영역은 어려움을 극복하는 데 도움이 될 것입니다. 모든 프로그램 모듈의 정상적인 작동을 달성하면 함께 디버깅할 수 있습니다. 이 경우 발생하는 어려움은 두 그룹으로 나뉩니다. 첫 번째는 산술 논리 장치, 데이터 메모리, 입출력 포트와 같은 공통 MK 리소스 공유 문제를 포함합니다. 두 번째는 마이크로컨트롤러 장치의 실시간 작동과 관련이 있습니다. 실시간 시스템은 일반적으로 다중 스레드입니다. 여러 프로그램 작업(스레드)이 병렬로 실행되어 서로 상호 작용하고 공통 리소스를 사용합니다. 그러나 매 순간 MC는 구조로 인해 그중 하나만 해결하고 우선 순위를 고려하여 차례로 다른 것으로 전환합니다. 리소스 부족과 데이터 처리 시간 부족으로 인해 작업 간의 충돌이 발생합니다. 따라서 프로그램 모듈에서 사용되는 MK 리소스에 특별한 주의를 기울이고 종종 디버그 정보를 표시하여 상태 변경을 제어합니다. 가능할 때마다 전역 변수의 수를 줄이고 로컬 변수로 바꾸십시오. 스택의 상태를 모니터링합니다. 프로그램의 중요한 부분의 실행 시간을 예측하고 실제로 가능한 다양한 입력 신호 값으로 시스템을 확인하십시오. ROM 에뮬레이터를 사용하면 MK의 내부 메모리에서 작동하도록 설계된 프로그램을 일시적으로 외부 프로그램 메모리에 넣으면 디버그할 수도 있습니다. 이 경우 포트 P0 및 P2는 외부 메모리 서비스에 의해 점유되므로 MK의 나머지 여유 I/O 라인이 충분하지 않은 경우 P0 및 P2는 외부 데이터 메모리 셀로 지정된 I/O 포트로 대체됩니다. 트리거 레지스터를 사용하여 출력 라인 수와 입력 라인 수를 늘리는 표준 구성표에 따라 연결됩니다. 세 가지 출력 상태의 요소입니다. 에뮬레이터를 사용하여 시스템을 디버깅 한 후 디버깅 요소를 제거하고 프로그램을 ROM (또는 MK의 내부 프로그램 메모리)에 쓰고 최종 형태의 장치 작동을 확인하십시오. 문학
저자: G.Vydolob, V.Samoylov, 모스크바(Zelenograd) 다른 기사 보기 섹션 마이크로 컨트롤러. 읽고 쓰기 유용한 이 기사에 대한 의견. 과학 기술의 최신 뉴스, 새로운 전자 제품: 터치 에뮬레이션을 위한 인조 가죽
15.04.2024 펫구구 글로벌 고양이 모래
15.04.2024 배려심 많은 남자의 매력
14.04.2024
다른 흥미로운 소식:
무료 기술 라이브러리의 흥미로운 자료: ▪ 기사 가짜가 린든이라고 불리는 이유는 무엇입니까? 자세한 답변 ▪ 기사 Biogas 생산 기술. 무선 전자 및 전기 공학 백과사전 ▪ 기사 트랜지스터 필드 외국. 무선 전자 및 전기 공학 백과사전 이 페이지의 모든 언어 홈페이지 | 도서관 | 조항 | 사이트 맵 | 사이트 리뷰 www.diagram.com.ua |