KR102427978B1 - Avr 기반 아두이노 호환 보드를 위한 통합 프로그래머 및 기능 자동 설정 방법 - Google Patents

Avr 기반 아두이노 호환 보드를 위한 통합 프로그래머 및 기능 자동 설정 방법 Download PDF

Info

Publication number
KR102427978B1
KR102427978B1 KR1020200182362A KR20200182362A KR102427978B1 KR 102427978 B1 KR102427978 B1 KR 102427978B1 KR 1020200182362 A KR1020200182362 A KR 1020200182362A KR 20200182362 A KR20200182362 A KR 20200182362A KR 102427978 B1 KR102427978 B1 KR 102427978B1
Authority
KR
South Korea
Prior art keywords
upload
avr
programmer
serial
unit
Prior art date
Application number
KR1020200182362A
Other languages
English (en)
Other versions
KR20220091132A (ko
Inventor
류대우
민문기
Original Assignee
주식회사 뉴티씨 (Newtc)
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 뉴티씨 (Newtc) filed Critical 주식회사 뉴티씨 (Newtc)
Priority to KR1020200182362A priority Critical patent/KR102427978B1/ko
Publication of KR20220091132A publication Critical patent/KR20220091132A/ko
Application granted granted Critical
Publication of KR102427978B1 publication Critical patent/KR102427978B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7839Architectures of general purpose stored program computers comprising a single central processing unit with memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4416Network booting; Remote initial program loading [RIPL]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0042Universal serial bus [USB]

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Abstract

AVR 기반 아두이노 호환 보드를 위한 통합 프로그래머 및 기능 자동 설정 방법이 개시된다. 본 발명의 일 측면에 따르면, AVR 기반 아두이노 호환 보드에 탑재되는 통합 프로그래머로서, ISP 방식 업로드를 수행하는 ISP 업로드부; 시리얼 방식 업로드를 수행하는 시리얼 업로드부; 및 시리얼 통신을 수행하는 시리얼 통신부를 포함하는 AVR 기반 아두이노 호환 보드를 위한 통합 프로그래머가 제공된다.

Description

AVR 기반 아두이노 호환 보드를 위한 통합 프로그래머 및 기능 자동 설정 방법{Unified programmer for AVR-based arduino compatible boards and automatic function setting method}
본 발명은 AVR 기반 아두이노 호환 보드를 위한 통합 프로그래머(unified programmer) 및 기능 자동 설정 방법에 관한 것이다.
아두이노는 예술가, 디자이너 등의 사용자가 쉽고 간단하게 상호작용이 가능한 전자 장치를 만들 수 있도록 하자는 목적으로 시작된 마이크로컨트롤러 플랫폼의 하나이다. 2005년 발표된 이후 아두이노는 쉽고 간단한 사용법으로 다양한 분야의 자발적인 참여를 통해 독자적인 생태계 구축에 성공하였으며, 오픈 소스 프로젝트 중 가장 영향력 있는 프로젝트의 하나로 자리 잡고 있다.
아두이노는 8비트의 AVR 시리즈 마이크로컨트롤러를 사용한 보드가 처음 출시되었고, 높은 연산 능력과 다양한 무선 연결의 필요성이 증가함에 따라 32비트의 ARM Cortex-M 시리즈 마이크로컨트롤러를 사용한 보드도 출시되었다. 그 중 8비트 AVR 시리즈 마이크로컨트롤러를 사용한 아두이노 보드는 쉽고 간단한 보드라는 아두이노의 철학과 일치하는 보드로, 초등학교, 중학교, 고등학교는 물론 대학에서도 하드웨어와 소프트웨어를 위한 기초 교육 도구로 널리 사용되고 있다.
아두이노를 포함하여 마이크로컨트롤러 보드의 경우 교차 개발 환경에서 마이크로컨트롤러를 위한 프로그램 또는 펌웨어(firmware)를 개발한다. 교차 개발을 위해서는 개발 시스템에서 동작하면서 목적 시스템을 위한 기계어 파일을 생성할 수 있는 교차 컴파일러가 필요하다. 또한, 만들어진 기계어 파일을 개발 시스템에서 목적 시스템으로 옮겨 설치하기 위해 프로그래머(programmer) 또는 업로더(uploader)를 사용한다. AVR 시리즈 마이크로컨트롤러를 사용하는 8비트 아두이노 보드는 교차 컴파일러로 자유 소프트웨어의 하나인 GCC(GNU Complier Collection)를 사용한다.
AVR 시리즈 마이크로컨트롤러를 위한 프로그래머는 전용 하드웨어 장치가 사용된다. 디버깅까지 가능한 JTAG(Joint Test Action Group) 역시 사용할 수 있지만, SPI(Serial Peripheral Interface)를 사용하는 ISP(In System Programming) 방식이 주로 사용된다. 하지만 아두이노에서는 UART(Universal Asynchronous Receiver/Transmitter)를 사용한 시리얼 방식을 기본으로 하고 있으며, 이를 위해 전용 마이크로컨트롤러를 보드에 내장하고 있다.
UART 시리얼 인터페이스를 사용하면 컴퓨터와의 시리얼 통신을 위해 대부분의 마이크로컨트롤러 보드에 포함되어 있는 하드웨어를 사용할 수 있어 추가 하드웨어가 필요하지 않은 것이 장점이다.
하지만, 마이크로컨트롤러의 프로그래밍 메모리 일부가 부트로더를 위해 사용되고, 초기 구동 속도가 느린 점 등의 단점이 있다. 또한, 시리얼 방식 업로더로는 부트로더를 구울 수 없는 점 등 시리얼 방식은 ISP 방식을 완전히 대체할 수 없으므로 아두이노 환경에서도 ISP 방식 프로그래머를 완전히 배제할 수는 없다.
도 1은 기존의 아두이노 보드의 구성 및 개발 시스템과의 연결을 나타낸 도면이다.
대부분의 아두이노 보드에는 시리얼 방식 업로드를 위한 전용 칩(USB to Serial)이 내장되어 있지만, ISP 방식을 지원하기 위한 하드웨어는 포함하고 있지 않다. 따라서, ISP 방식 업로드를 위해 별도의 전용 장치(USBISP)를 사용해야 하며, 시리얼 방식과 ISP 방식 전환을 위해 설정을 변경해야 하는 불편함이 있다.
한국등록특허 제10-0872893호 (2008.12.02. 등록) - 마이크로 컨트롤러 실습용 트레이닝 키트
본 발명은 서로 다른 통신 인터페이스를 사용하는 시리얼 방식과 ISP 방식 업로드 기능을 하나의 전용 칩과 펌웨어만을 사용하여 구현한 AVR 기반 아두이노 호환 보드를 위한 통합 프로그래머 및 기능 자동 설정 방법을 제공하기 위한 것이다.
본 발명은 AVR 시리즈 마이크로컨트롤러에서 흔히 사용되는 업로드 방식을 모두 지원하면서 USB-UART 변환 기능까지도 지원하며 이 모든 기능을 하나의 칩으로 구현하여 기능면에서뿐만 아니라 가격면에서도 아두이노를 포함하여 다른 보드와 비교했을 때 장점을 가지는 AVR 기반 아두이노 호환 보드를 위한 통합 프로그래머 및 기능 자동 설정 방법을 제공하기 위한 것이다.
본 발명의 이외의 목적들은 하기의 설명을 통해 쉽게 이해될 수 있을 것이다.
본 발명의 일 측면에 따르면, AVR 기반 아두이노 호환 보드에 탑재되는 통합 프로그래머로서, ISP 방식 업로드를 수행하는 ISP 업로드부; 시리얼 방식 업로드를 수행하는 시리얼 업로드부; 및 시리얼 통신을 수행하는 시리얼 통신부를 포함하는 AVR 기반 아두이노 호환 보드를 위한 통합 프로그래머가 제공된다.
개발 시스템에서 목적 시스템으로 전달되는 데이터가 USB 데이터인지 확인하는 데이터 종류 확인부; USB 데이터인 경우 리셋 신호를 감지하는 신호 감지부; 상기 리셋 신호가 감지된 경우 상기 데이터의 초기 정보를 확인하는 초기 정보 확인부; 상기 리셋 신호가 감지되지 않을 경우 상기 시리얼 통신부를 활성화시키고 UART 인터페이스를 연결하는 인터페이스 연결부를 더 포함할 수 있다.
상기 인터페이스 연결부는 상기 초기 정보가 ISP인 경우 상기 ISP 업로드부를 활성화시키고 SPI 인터페이스를 연결할 수 있다.
또는 상기 인터페이스 연결부는 상기 초기 정보가 UART인 경우 상기 시리얼 업로드부를 활성화시키고 UART 인터페이스를 연결할 수 있다.
한편 본 발명의 다른 측면에 따르면, AVR 기반 아두이노 호환 보드에 탑재된 통합 프로그래머에 의해 수행되는 기능 자동 설정 방법으로서, 개발 시스템에서 목적 시스템으로 전달되는 데이터가 USB 데이터인지 확인하는 단계; USB 데이터인 경우 리셋 신호의 감지 여부를 확인하는 단계; 상기 리셋 신호가 감지된 경우, 상기 데이터의 초기 정보를 확인하는 단계; 및 상기 초기 정보가 ISP인 경우 SPI 인터페이스를 연결하여 ISP 방식 업로드를 지원하고, 상기 초기 정보가 UART인 경우 UART 인터페이스를 연결하여 시리얼 방식 업로드를 지원하는 단계를 포함하는 AVR 기반 아두이노 호환 보드를 위한 통합 프로그래머 기능 자동 설정 방법이 제공된다.
상기 리셋 신호가 감지되지 않은 경우, UART 인터페이스를 연결하고 시리얼 통신 기능을 지원할 수 있다.
전술한 것 외의 다른 측면, 특징, 이점이 이하의 도면, 특허청구범위 및 발명의 상세한 설명으로부터 명확해질 것이다.
본 발명의 실시예에 따르면, 서로 다른 통신 인터페이스를 사용하는 시리얼 방식과 ISP 방식 업로드 기능을 하나의 전용 칩과 펌웨어만을 사용하여 구현할 수 있는 효과가 있다.
또한, AVR 시리즈 마이크로컨트롤러에서 흔히 사용되는 업로드 방식을 모두 지원하면서 USB-UART 변환 기능까지도 지원하며 이 모든 기능을 하나의 칩으로 구현하여 기능면에서뿐만 아니라 가격면에서도 아두이노를 포함하여 다른 보드와 비교했을 때 장점을 가질 수 있다.
도 1은 기존의 아두이노 보드의 구성 및 개발 시스템과의 연결을 나타낸 도면,
도 2는 프로그램 업로드 프로세스를 나타낸 도면,
도 3은 본 발명의 일 실시예에 따른 통합 프로그래머의 구성 블록도,
도 4는 본 발명의 일 실시예에 따른 통합 프로그래머 기능 자동 설정 방법의 순서도(데이터 흐름도),
도 5 및 도 6은 본 발명의 일 실시예에 따른 통합 프로그래머를 ATmega128 마이크로컨트롤러를 사용한 보드에 적용한 예시도,
도 7은 부트로드 굽기와 프로그램 업로드 결과를 나타낸 화면.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세하게 설명하고자 한다. 그러나 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.
제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다.
본 명세서에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
또한, 각 도면을 참조하여 설명하는 실시예의 구성 요소가 해당 실시예에만 제한적으로 적용되는 것은 아니며, 본 발명의 기술적 사상이 유지되는 범위 내에서 다른 실시예에 포함되도록 구현될 수 있으며, 또한 별도의 설명이 생략될지라도 복수의 실시예가 통합된 하나의 실시예로 다시 구현될 수도 있음은 당연하다.
또한, 첨부 도면을 참조하여 설명함에 있어, 도면 부호에 관계없이 동일한 구성 요소는 동일하거나 관련된 참조부호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다. 본 발명을 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.
또한, 명세서에 기재된 "…부", "…유닛", "…모듈", "…기" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어나 소프트웨어 또는 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다.
도 2는 프로그램 업로드 프로세스를 나타낸 도면이다.
마이크로컨트롤러를 위한 프로그램은 흔히 펌웨어라고 칭한다. 펌웨어는 프로그래밍 언어를 사용하여 작성한다는 점에서 소프트웨어에 속한다. 하지만, 전통적으로 하드웨어를 사용하여 구현하는 기능을 대신하고, 설치된 펌웨어의 교체가 빈번하지 않다는 점에서 하드웨어의 특징도 가지고 있다.
개발 시스템(Development System)에서 만들어진 프로그램은 마이크로컨트롤러의 프로그램 메모리(Program Memory)에 옮겨 설치한 후 실행될 수 있으며, 이 과정에서 프로그래머 또는 업로더가 필요하다.
AVR 시리즈 마이크로컨트롤러에서 전통적으로 사용하는 업로드 방식은 ISP 방식으로 SPI 인터페이스를 통해 프로그램 메모리에 직접 프로그램을 설치하는 방식이다(도 1의 (a) 참조).
반면 아두이노에서는 UART 인터페이스를 사용하는 시리얼 방식 업로드를 기본으로 한다. 시리얼 방식 업로드를 위해서는 전용 하드웨어 이외에 부트로더가 필요하다. 시리얼 방식에서 UART 인터페이스를 통해 전달된 프로그램은 부트로더를 거쳐 프로그램 메모리에 설치된다(도 1의 (b) 참조).
시리얼 방식 업로드의 경우 별도의 부트로더가 필요하고, 부트로더 설치를 위해 프로그램 메모리의 이부를 소비하며, 마이크로컨트롤러 부팅 과정에서 부트로더가 먼저 실행되어 구동 지연이 발생하는 등의 단점이 있다.
하지만, 시리얼 방식 업로드에 사용하는 하드웨어는 개발 시스템의 USB 인터페이스와 마이크로컨트롤러의 UART 인터페이스 사이 상호 변환 기능을 기본으로 하는 아두이노 보드를 포함하여 많은 마이크로컨트롤러가 USB-UART 변환 하드웨어를 포함하고 있으므로 추가 하드웨어 없이 펌웨어 추가만으로 프로그램 업로드에 사용할 수 있는 장점이 있다.
또한, 프로그램 업로드에 사용하지 않을 때에는 개발 시스템과의 시리얼 통신을 위해 사용할 수 있다.
프로그램 업로드와 시리얼 통신은 동시에 사용되지 않으므로, 하나의 하드웨어를 두 가지 목적으로 사용할 수 있다. 도 1은 ISP 방식과 시리얼 방식 업로드 과정을 비교하여 나타낸 것이로, 표 1은 두 가지 업로드 방식을 비교한 것이다.
ISP Serial
Interface SPI UART
Hardware ISP programmer USB-UART converter
Using bootloader Х
Bootloader burning Х
Main purpose in Arduino Bootloader burning Program upload
부트로더를 굽기 위해서는 ISP 방식을 사용해야 한다. ISP 방식을 사용하면 프로그램 메노리 전부를 사용자 프로그램을 위한 공간으로 사용할 수 있으며, 프로그램이 손상되었을 때 한 종류의 프로그램 설치만으로 복구가 가능한 점 등의 장점이 있다. 따라서, 아두이노에서 시리얼 방식을 기본으로 하지만, ISP 방식 역시 빼놓을 수 없다.
본 발명의 실시예에서는 하드웨어 추가 없이 시리얼 방식과 ISP 방식을 모두 사용할 수 있는 통합 프로그래머를 제공하기로 한다.
본 발명의 일 실시예에 따른 통합 프로그래머(100)는 AVR 시리즈 마이크로컨트롤러 중 USB 기능이 없는 마이크로컨트롤러를 사용한 아두이노 보드를 대상으로 한다.
대상 보드는 시리얼 방식과 ISP 방식 업로드를 위해 별도의 하드웨어를 사용하고 있으므로, 통합 프로그래머(100)는 이를 하나의 전용 칩과 펌웨어를 통해 이용할 수 있도록 한다.
아두이노의 시리얼 방식 업로드에 사용되는 전용 장치가 개발 시스템과의 시리얼 통신에도 사용될 수 있는 것은 통합 프로그래머(100) 역시 마찬가지이다.
즉, 통합 프로그래머(100)는 ISP 방식 업로드, 시리얼 방식 업로드, 및 시리얼 통신의 3가지 기능을 하나의 전용 장치를 통해 구현할 수 있다. 부트로더를 굽는 기능은 ISP 방식 업로드 기능에 포함되므로, 별도의 기능으로 정의하지 않았다.
ISP upload Serial upload Serial comm.
Target System Interface USB
uC Interface SPI UART UART
Using RESET Х
Additional function Bootloader burning - -
표 2는 통합 프로그래머(100)에서 지원하는 3가지 기능을 비교한 것이다. 2가지 업로드 방법은 리셋 신호를 사용한다는 점에서 시리얼 통신 기능과 구별된다.
또한, 각각의 업로드 방법은 사용하는 인터페이스의 차이에 따라 개발 시템에서 보내는 초기 정보에서 차이가 있으므로 구별이 가능하다.
도 3은 본 발명의 일 실시예에 따른 통합 프로그래머의 구성 블록도이고, 도 4는 본 발명의 일 실시예에 따른 통합 프로그래머 기능 자동 설정 방법의 순서도(데이터 흐름도)이다.
본 실시예에 따른 통합 프로그래머(100)는 목적 시스템인 마이크로컨트롤러 보드에 탑재되며, 데이터 종류 확인부(110), 신호 감지부(120), 초기 정보 확인부(130), 인터페이스 연결부(140), ISP 업로드부(150), 시리얼 업로드부(160), 시리얼 통신부(170)를 포함할 수 있다.
통합 프로그래머(100)에 사용된 펌웨어에서 개발 시스템의 신호에 따라 마이크로컨트롤러의 각 인터페이스로 연결하고 데이터를 전달한다. 아두이노에서 개발 시스템으로 데이터를 보내는 경우는 UART 인터페이스를 통한 시리얼 통신이 유일하므로 별도로 나타내지 않았다.
도 3 및 도 4를 참조하면, 우선 데이터 종류 확인부(110)에서는 개발 시스템에서 보내는 데이터가 USB 데이터인지 확인한다(단계 S200).
USB 데이터인 경우, 신호 감지부(120)에서는 리셋 신호의 감지 여부를 확인한다(단계 S210). 업로드의 경우에는 리셋 신호를 사용하고 있는 바, 리셋 신호가 감지되지 않으면 시리얼 통신으로 판단하고, 단계 S250으로 진행하여 인터페이스 연결부(140)는 목적 시스템에 UART 인터페이스로 연결한 후 시리얼 통신부(170)에 의한 시리얼 통신 기능을 지원한다.
리셋 신호가 감지된 경우에는 2가지 업로드 방법을 구별해야 하므로, 초기 정보 확인부(130)는 인터페이스 헤더를 확인한다(단계 S220).
ISP인 경우에는 인터페이스 연결부(140)는 목적 시스템에 SPI 인터페이스로 연결한 후 ISP 업로드부(150)에 의한 ISP 업로드 방식을 지원한다(단계 S230).
UART인 경우에는 인터페이스 연결부(140)는 목적 시스템에 UART 인터페이스로 연결한 후 시리얼 업로드부(160)에 의한 시리얼 업로드 방식을 지원한다(단계 S240).
본 실시예에서는 컴퓨터와 USB 인터페이스를 통해 연결되며 프로그램을 업로드할 때 업로드 방식에 따라 다르게 보내지는 초기 데이터에 따라 마이크로컨트롤러의 UART 또는 SPI 인터페이스로 연결하고 프로그램을 업로드한다.
또한, 프로그램 업로드에 사용되지 않는 경우 통합 프로그래머(100)는 USB와 UART 인터페이스 변환 기능을 수행할 수 있으므로, 추가 하드웨어 없이 컴퓨터(개발 시스템)와 마이크로컨트롤러(목적 시스템) 사이의 시리얼 통신 역시 가능하게 해준다.
전술한 통합 프로그래머 기능 자동 설정 방법은, 컴퓨터에 의해 실행되는 애플리케이션이나 프로그램 모듈과 같은 컴퓨터에 의해 실행가능한 명령어를 포함하는 기록매체의 형태로도 구현될 수 있다. 컴퓨터 판독 가능 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 가용 매체일 수 있고, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체를 모두 포함한다. 또한, 컴퓨터 판독 가능 매체는 컴퓨터 저장 매체를 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독 가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 모두 포함한다.
전술한 통합 프로그래머 기능 자동 설정 방법은, 단말기에 기본적으로 설치된 애플리케이션(이는 단말기에 기본적으로 탑재된 플랫폼이나 운영체제 등에 포함된 프로그램을 포함할 수 있음)에 의해 실행될 수 있고, 사용자가 애플리케이션 스토어 서버, 애플리케이션 또는 해당 서비스와 관련된 웹 서버 등의 애플리케이션 제공 서버를 통해 마스터 단말기에 직접 설치한 애플리케이션(즉, 프로그램)에 의해 실행될 수도 있다. 이러한 의미에서, 전술한 통합 프로그래머 기능 자동 설정 방법은 단말기에 기본적으로 설치되거나 사용자에 의해 직접 설치된 애플리케이션(즉, 프로그램)으로 구현되고 단말기 등의 컴퓨터로 읽을 수 있는 기록매체에 기록될 수 있다.
본 실시예에 따른 통합 프로그래머는 마이크로컨트롤러의 펌웨어에서 도 4의 순서도에 따라 자동으로 기능을 구별하여 처리하므로, 별도의 기능 전환을 위한 부품은 필요하지 않고, 대상 마이크로컨트롤러 보드와 개발 시스템은 USB 케이블만 연결하면 된다.
도 5 및 도 6은 본 발명의 일 실시예에 따른 통합 프로그래머를 ATmega128 마이크로컨트롤러를 사용한 보드에 적용한 예시도이다.
도 5는 AVR 모듈 형태로 만든 경우이고, 도 6은 아두이노 모듈 형태로 만든 경우이다. 각 보드는 프로그램 업로드와 시리얼 통신을 위한 통합 포트(unified port)를 가지고 있다.
ATmega128은 공식 아두이노 보드에 사용되는 마이크로컨트롤러는 아니지만, MegaCore 프로젝트를 통해 아두이노 호환 보드로 사용할 수 있다. 보드 매니저를 통해 ATmega128을 위한 MegaCore 파일을 설치하고, 통합 프로그래머를 stk500v2 프로토콜을 사용하는 ISP 방식 업로더로 아두이노에 표 3과 같이 등록하면 통합 프로그래머를 사용하기 위한 준비가 완료된다.
UP.name=Unified Programmer
UP.communication=serial
UP.protocol=stk500v2
UP.program.protocol=stk500v2
UP.program.tool=avrdude
UP.program.extra_params=-P{serial.port}
통합 프로그래머를 사용한 보드를 컴퓨터에 연결하면 일반(generic) USB-시리얼 변환장치로 인식되어 시리얼 포트로 나타난다. 인식된 시리얼 포트는 시리얼 방식 업로드, ISP 방식 업로드, 시리얼 통신의 3가지 동작에서 모두 사용하는 포트가 된다.
기존 아두이노 환경에서는 원하는 동작에 따라 포트를 포함하여 설정의 변경이 필요했지만, 본 실시예에 따른 통합 프로그래머를 사용하는 경우 기능에 따라 설정을 변경할 필요가 없는 장점이 있다.
통합 프로그래머를 사용한 아두이노 호환 ATmega128 보드의 아두이노 환경 설정은 표 4와 같다.
Menu Select Explanation
Tool→Board ATmega128 from MegaCore
Tool→Port COM*
(Unified port)
computer dependent
Tool→Programmer Unified Programmer from Table 3
이후 사용 방법은 아두이노 보드의 사용과 차이가 없다. 도 7은 부트로드 굽기와 프로그램 업로드 결과를 나타낸 화면이다. 각각의 과정에서 사용하는 명령은 아두이노 보드의 경우와 같다.
본 실시예에 따른 통합 프로그래머는 저렴하고 간단하면서도 다양한 기능을 사용할 수 있는 보드를 제작할 수 있게 해준다. 통합 프로그래머는 아두이노 환경은 물론 전통적인 AVR 환경에서도 사용할 수 있으므로, 아두이노 호환을 넘어 이종 플랫폼 간의 융합 및 한국형 오픈 소스 플랫픔으로 아두이노의 대안이 될 수 있을 것이다.
기존에 AVR 시리즈 마이크로컨트롤러를 사용하는 아두이노에서는 시리얼 방식과 ISP 방식의 업로드가 흔히 사용된다. 아두이노에서는 시리얼 방식을 기본으로 하지만 ISP 방식으로만 가능한 작업이 있어 두 가지 방법이 모두 사용되고 있다. 따라서, 아두이노에서는 2개의 전용 업로드 장치가 필요하며, 서로 다른 설정으로 사용해야 하는 불편함이 있다.
본 명세서에서는 두 가지 업로드 방식을 하나의 전용 마이크로컨트롤러와 펌웨어를 통해 구현하는 방법을 제안하고 이를 ATmega128을 사용한 아두이노 호환 보드로 구현하여 통합 프로그래머의 동작을 확인하였다. 통합 프로그래머를 사용함으로써 하나의 통합 포트를 통해 설정 변경 없이 필요한 모든 작업을 수행할 수 있으며, 전용 장치를 위한 비용을 절감할 수 있는 등 여러 가지 장점을 확인할 수 있었다.
본 실시예에서 업로드 과정에서 시리얼 통신으로 데이터가 나오지 않도록 하기 위해, 본 출원인이 출원하여 등록된 한국등록특허 제10-1468572호에 개시된 데이터 구분 입출력 회로를 사용하여 다운로드하는 동안 쓰레기 데이터가 시리얼로 출력되지 않게 할 수 있다.
상기에서는 본 발명의 실시예를 참조하여 설명하였지만, 해당 기술 분야에서 통상의 지식을 가진 자라면 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.
100: 통합 프로그래머 110: 데이터 종류 확인부
120: 신호 감지부 130: 초기 정보 확인부
140: 인터페이스 연결부 150: ISP 업로드부
160: 시리얼 업로드부 170: 시리얼 통신부

Claims (6)

  1. AVR 기반 아두이노 호환 보드에 탑재되는 통합 프로그래머로서,
    ISP 방식 업로드를 수행하는 ISP 업로드부;
    시리얼 방식 업로드를 수행하는 시리얼 업로드부; 및
    시리얼 통신을 수행하는 시리얼 통신부를 포함하되,
    개발 시스템에서 목적 시스템으로 전달되는 데이터가 USB 데이터인지 확인하는 데이터 종류 확인부;
    USB 데이터인 경우 리셋 신호를 감지하는 신호 감지부;
    상기 리셋 신호가 감지된 경우 상기 데이터의 초기 정보를 확인하는 초기 정보 확인부;
    상기 리셋 신호가 감지되지 않을 경우 상기 시리얼 통신부를 활성화시키고 UART 인터페이스를 연결하는 인터페이스 연결부를 더 포함하는 AVR 기반 아두이노 호환 보드를 위한 통합 프로그래머.
  2. 삭제
  3. 제1항에 있어서,
    상기 인터페이스 연결부는 상기 초기 정보가 ISP인 경우 상기 ISP 업로드부를 활성화시키고 SPI 인터페이스를 연결하는 것을 특징으로 하는 AVR 기반 아두이노 호환 보드를 위한 통합 프로그래머.
  4. 제1항에 있어서,
    상기 인터페이스 연결부는 상기 초기 정보가 UART인 경우 상기 시리얼 업로드부를 활성화시키고 UART 인터페이스를 연결하는 것을 특징으로 하는 AVR 기반 아두이노 호환 보드를 위한 통합 프로그래머.
  5. AVR 기반 아두이노 호환 보드에 탑재된 통합 프로그래머에 의해 수행되는 기능 자동 설정 방법으로서,
    개발 시스템에서 목적 시스템으로 전달되는 데이터가 USB 데이터인지 확인하는 단계;
    USB 데이터인 경우 리셋 신호의 감지 여부를 확인하는 단계;
    상기 리셋 신호가 감지된 경우, 상기 데이터의 초기 정보를 확인하는 단계; 및
    상기 초기 정보가 ISP인 경우 SPI 인터페이스를 연결하여 ISP 방식 업로드를 지원하고, 상기 초기 정보가 UART인 경우 UART 인터페이스를 연결하여 시리얼 방식 업로드를 지원하는 단계를 포함하는 AVR 기반 아두이노 호환 보드를 위한 통합 프로그래머 기능 자동 설정 방법.
  6. 제5항에 있어서,
    상기 리셋 신호가 감지되지 않은 경우, UART 인터페이스를 연결하고 시리얼 통신 기능을 지원하는 것을 특징으로 하는 AVR 기반 아두이노 호환 보드를 위한 통합 프로그래머 기능 자동 설정 방법.
KR1020200182362A 2020-12-23 2020-12-23 Avr 기반 아두이노 호환 보드를 위한 통합 프로그래머 및 기능 자동 설정 방법 KR102427978B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020200182362A KR102427978B1 (ko) 2020-12-23 2020-12-23 Avr 기반 아두이노 호환 보드를 위한 통합 프로그래머 및 기능 자동 설정 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200182362A KR102427978B1 (ko) 2020-12-23 2020-12-23 Avr 기반 아두이노 호환 보드를 위한 통합 프로그래머 및 기능 자동 설정 방법

Publications (2)

Publication Number Publication Date
KR20220091132A KR20220091132A (ko) 2022-06-30
KR102427978B1 true KR102427978B1 (ko) 2022-08-02

Family

ID=82215443

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200182362A KR102427978B1 (ko) 2020-12-23 2020-12-23 Avr 기반 아두이노 호환 보드를 위한 통합 프로그래머 및 기능 자동 설정 방법

Country Status (1)

Country Link
KR (1) KR102427978B1 (ko)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100872893B1 (ko) 2008-02-04 2008-12-10 장정우 마이크로 컨트롤러 실습용 트레이닝 키트
KR20170002569U (ko) * 2016-01-07 2017-07-17 (주)헬로소프트 실습 프로그램이 내장된 아두이노 교육 키트
KR101915687B1 (ko) * 2016-10-31 2018-11-06 주식회사 엑스봇 다양한 교육용 소프트웨어와 임베디드 보드와의 연동을 위한 유무선 인터페이스 방법
US10573598B2 (en) * 2017-09-28 2020-02-25 Xilinx, Inc. Integration of a programmable device and a processing system in an integrated circuit package

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
대구국비지원학원: 사물인터넷 - 아두이노의 이해. 2018.10.05.

Also Published As

Publication number Publication date
KR20220091132A (ko) 2022-06-30

Similar Documents

Publication Publication Date Title
CN107171833B (zh) 一种通过bmc实现服务器bmc和bios批量升级方法
US7099818B1 (en) System and method for automatically matching components in a debugging system
CN102880498B (zh) 在安卓系统的装置上虚拟sd卡的方法
US6012103A (en) Bus interface system and method
CN202956753U (zh) 一种嵌入式系统中闪存芯片的编程装置及系统
CN110597523A (zh) 板卡固件烧录方法、装置、系统及板卡、终端设备
JP2000066997A (ja) コンピュ―タ周辺装置用ユニバ―サルシリアルバスノ―ド
CN106201563A (zh) 启动参数的配置方法和装置、主板启动的方法和装置
CN109783340B (zh) SoC的测试代码烧写方法、IP测试方法及装置
CN1983230A (zh) 串行周边接口装置
CN103514018A (zh) 基于stm32f4控制器的程序远程下载的实现方法
CN113110859A (zh) 一种嵌入式终端远程在线开发系统
CN105760289A (zh) 一种嵌入式系统的调试方法及装置
Ramon Intel Galileo and Intel Galileo Gen 2: API Features and Arduino Projects for Linux Programmers
CN116541032B (zh) 数据烧录方法、装置、设备及计算机存储介质
WO2007056343A2 (en) Networked linux machine and windows software development system
KR102427978B1 (ko) Avr 기반 아두이노 호환 보드를 위한 통합 프로그래머 및 기능 자동 설정 방법
CN115454749A (zh) 一种通用型烧录机的烧录、测试系统
CN101788946B (zh) Cpld上连接有e2prom设备的固件烧结方法及装置
CN107864152B (zh) 一种采用vba快速完成智慧建筑多协议适配工程模板的方法
WO2020118719A1 (zh) 无人飞行器的固件升级方法、固件升级装置、控制装置、无人飞行器及介质
WO2024113904A1 (zh) 一种兼容多项目设备树的方法、系统、设备和存储介质
CN110888656B (zh) 一种多功能烧写器及烧写方法
CN117032886A (zh) 一种前端验证的编译仿真方法、装置及电子设备
CN101789265B (zh) 一种对PowerPC系统FLASH快速编程的方法

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant