KR20210079601A - 펌웨어를 업데이트하는 터치 시스템 및 방법 - Google Patents

펌웨어를 업데이트하는 터치 시스템 및 방법 Download PDF

Info

Publication number
KR20210079601A
KR20210079601A KR1020190171570A KR20190171570A KR20210079601A KR 20210079601 A KR20210079601 A KR 20210079601A KR 1020190171570 A KR1020190171570 A KR 1020190171570A KR 20190171570 A KR20190171570 A KR 20190171570A KR 20210079601 A KR20210079601 A KR 20210079601A
Authority
KR
South Korea
Prior art keywords
data
firmware
memory
touch
update
Prior art date
Application number
KR1020190171570A
Other languages
English (en)
Inventor
조재현
Original Assignee
주식회사 실리콘웍스
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 주식회사 실리콘웍스 filed Critical 주식회사 실리콘웍스
Priority to KR1020190171570A priority Critical patent/KR20210079601A/ko
Priority to US17/115,374 priority patent/US20210191709A1/en
Priority to CN202011478271.XA priority patent/CN113010035A/zh
Publication of KR20210079601A publication Critical patent/KR20210079601A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/041Digitisers, e.g. for touch screens or touch pads, characterised by the transducing means
    • G06F3/0412Digitisers structurally integrated in a display
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/041Digitisers, e.g. for touch screens or touch pads, characterised by the transducing means
    • G06F3/0416Control or interface arrangements specially adapted for digitisers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/041Digitisers, e.g. for touch screens or touch pads, characterised by the transducing means
    • G06F3/0416Control or interface arrangements specially adapted for digitisers
    • G06F3/04164Connections between sensors and controllers, e.g. routing lines between electrodes and connection pads
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/654Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Human Computer Interaction (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Stored Programmes (AREA)

Abstract

본 실시예는 펌웨어를 업데이트하는 터치 시스템 및 방법에 관한 것으로서, 더욱 상세하게는 펌웨어의 업데이트 데이터의 바디 데이터를 저장 및 유효성을 검증한 후에 헤더 데이터를 저장 및 유효성을 검증하여 펌웨어의 업데이트시에 발생할 수 있는 오류를 해소하는 터치 시스템 및 방법에 관한 것이다.

Description

펌웨어를 업데이트하는 터치 시스템 및 방법{TOUCH SYSTEM AND METHOD FOR UPDATING FIRMWARE}
본 실시예는 펌웨어를 업데이트하는 터치 시스템 및 방법에 관한 것이다.
일반적으로 디지털 카메라, 스마트 폰 등과 같이 다양한 임베디드 시스템(embedded system), 특히 터치 기능을 포함한 디지털기기들은 제어부(중앙처리장치; CPU)와 메모리부 및 메모리부에 펌웨어(firmware)라 불리는 시스템 운영 프로그램을 내장하고 있다.
이러한 장치들은 터치 기능의 확장과 문제 해결을 위해 펌웨어를 외부에서 업데이트할 수 있도록 하고 있다.
또한 일반 사용자에 의한 디지털 기기의 펌웨어 업데이트는 기기의 문제를 사용자 스스로 해결하도록 함으로써 생산 업체의 유지 보수비용을 줄일 수 있는 장점이 있다.
그러나 펌웨어는 시스템 운영에 직접적인 영향을 미치는 프로그램이기 때문에 업데이트하는 과정은 상당한 주의를 요하게 되며, 만약 실수나 사고로 인해 업데이트를 마치지 못했을 경우 기기가 동작되지 않는 심각한 문제가 발생된다.
이러한 배경에서, 본 실시예의 목적은, 일 측면에서, 펌웨어의 업데이트 시에 발생하는 펌웨어의 오류를 해소하는 기술을 제공하는 것이다.
전술한 목적을 달성하기 위하여, 일 실시예는, 프로세서; 상기 프로세서의 구동을 위한 제 1 펌웨어 및 제 2 펌웨어를 서로 다른 저장 영역에 저장하는 제 1 메모리; 및 상기 프로세서에 의해 상기 제 1 펌웨어가 업로드되는 제 2 메모리를 포함하고, 상기 제 1 펌웨어는 상기 제 2 메모리에 업로드된 상태에서 상기 프로세서에 의해 실행된 후에 호스트로부터 상기 제 1 펌웨어의 업데이트 데이터를 수신하고, 상기 업데이트 데이터의 바디 데이터를 상기 제 1 메모리에 저장한 후에 상기 업데이트 데이터의 헤더 데이터를 상기 제 1 메모리에 저장하는 터치 시스템을 제공한다.
터치 시스템은 전자 장치에 구비된 터치 패널의 센서 전극으로 구동신호를 공급하고, 상기 구동신호에 대한 상기 센서 전극의 반응 신호를 수신하여 터치데이터를 생성하는 터치 구동부를 더 포함하고, 상기 프로세서에 의해 실행된 상기 제 1 펌웨어는 상기 터치데이터로부터 상기 터치 패널에 대한 터치 좌표를 계산한 후에 상기 터치 좌표를 상기 호스트에 제공할 수 있다.
제 1 펌웨어는 상기 바디 데이터를 상기 제 1 메모리에 저장한 후에 상기 바디 데이터의 유효성을 검증하고, 상기 바디 데이터의 유효성이 입증되면 상기 헤더 데이터를 상기 제 1 메모리에 저장할 수 있다.
제 1 펌웨어는 상기 헤더 데이터를 상기 제 1 메모리에 저장한 후에 상기 헤더 데이터의 유효성을 검증하고, 상기 헤더 데이터의 유효성이 입증되면, 상기 제 1 펌웨어의 업데이트를 완료할 수 있다.
제 1 펌웨어는 상기 바디 데이터를 복수의 데이터 블록으로 분할하여 상기 제 1 메모리에 순차적으로 저장하되, 하나의 데이터 블록이 상기 제 1 메모리에 저장될 때마다 상기 하나의 데이터 블록의 유효성을 검증하고, 상기 복수의 데이터 블록 모두의 유효성이 입증되면, 상기 헤더 데이터를 상기 제 1 메모리에 저장할 수 있다.
터치 시스템은 프로세서와 상기 제 1 메모리 간의 통신 경로를 제공하는 제 1 통신 인터페이스 및 상기 프로세서와 상기 호스트 간의 통신 경로를 제공하는 제 2 통신 인터페이스를 포함하는 통신 인터페이스부를 더 포함할 수 있다.
제 1 펌웨어는 상기 업데이트 데이터를 상기 제 2 메모리에 임시 저장하고, 상기 제 1 메모리에서 상기 헤더 데이터가 저장될 메모리 구간에 대한 어드레스 범위인 제 1 어드레스 내지 제 N(N은 자연수) 어드레스를 공백 구간으로 설정한 후에 상기 제 1 메모리의 제 N+1 어드레스에서부터 상기 바디 데이터를 저장할 수 있다.
제 2 펌웨어는 상기 제 1 펌웨어의 오류가 발생했을 때에 상기 프로세서에 의해 상기 제 2 메모리에 업로드되어 실행될 수 있다.
제 2 펌웨어는 상기 호스트로부터 상기 제 1 펌웨어의 업데이트 데이터를 수신하고, 상기 업데이트 데이터의 바디 데이터를 상기 제 1 메모리에 저장한 후에 상기 업데이트 데이터의 헤더 데이터를 상기 제 1 메모리에 저장하되, 상기 바디 데이터가 저장된 메모리 구간의 전단에 존재하는 공백 구간에 상기 헤더 데이터를 저장할 수 있다.
제 1 메모리에서 상기 제 1 펌웨어의 저장 영역과 상기 제 2 펌웨어의 저장 영역 사이에 일정 메모리 구간에 해당하는 공백 영역이 존재할 수 있다.
제 1 펌웨어는 상기 제 1 메모리에서 상기 바디 데이터가 저장된 메모리 구간의 전단에 존재하는 공백 구간에 상기 헤더 데이터를 저장할 수 있다.
다른 실시예는, 전자 장치에 구비된 터치 시스템에서 펌웨어를 업데이트하는 방법에 있어서, 상기 전자 장치의 호스트로부터 상기 펌웨어의 업데이트 데이터를 수신하는 데이터 수신 단계; 상기 전자 장치의 제 2 메모리에 상기 업데이트 데이터를 임시 저장하는 데이터 임시 저장 단계; 상기 전자 장치의 제 1 메모리에 상기 업데이트 데이터의 바디 데이터를 저장하고, 상기 바디 데이터의 유효성을 검증하는 바디 데이터 저장 단계; 및 상기 바디 데이터의 유효성이 입증되면, 상기 제 1 메모리에 상기 업데이트 데이터의 헤더 데이터를 저장하는 헤더 데이터 저장 단계를 포함하는 펌웨어를 업데이트하는 방법을 제공한다.
헤더 데이터 저장 단계에서 상기 터치 시스템은 상기 제 1 메모리에서 상기 바디 데이터가 저장된 구간의 전단에 존재하는 공백 구간에 상기 헤더 데이터를 저장할 수 있다.
바디 데이터 저장 단계는 상기 제 2 메모리에 임시 저장된 바디 데이터를 복수의 데이터 블록으로 분할하는 단계; 상기 복수의 데이터 블록을 상기 제 1 메모리에 순차적으로 저장하되, 하나의 데이터 블록이 상기 제 1 메모리에 저장될 때마다 상기 하나의 데이터 블록의 유효성을 검증하는 단계; 및 상기 복수의 데이터 블록 모두의 유효성을 입증하는 단계를 포함할 수 있다.
터치 시스템은 상기 전자 장치에 구비된 터치 패널의 센서 전극으로 구동신호를 공급하고, 상기 구동신호에 대한 상기 센서 전극의 반응 신호를 수신하여 터치 데이터를 생성하는 터치 구동부 및 상기 펌웨어의 실행을 통해 상기 터치 구동부로부터 상기 터치데이터를 수신하고 상기 터치데이터로부터 상기 터치 패널에 대한 터치 좌표를 계산하는 터치 장치를 포함할 수 있다.
바디 데이터 저장 단계에서 페리티 검사, 순환 중복 검사(CRC: Cyclical Redundancy Check) 및 체크섬 중 하나 이상을 이용하여 상기 바디 데이터의 유효성을 검증할 수 있다.
이상에서 설명한 바와 같이 본 실시예에 의하면, 펌웨어의 업데이트시에 발생할 수 있는 오류를 해소하기 위해 업데이트 데이터의 바디 데이터를 저장 및 유효성을 검증한 후에 헤더 데이터를 저장 및 유효성을 검증하여 펌웨어의 업데이트를 정상적으로 완료할 수 있다.
도 1은 일 실시예에 따른 터치 시스템의 구성도이다.
도 2는 일 실시예에 따른 제 1 메모리의 데이터 저장 영역을 예시적으로 나타낸 도면이다.
도 3 내지 도 5는 일 실시예에 따른 펌웨어의 업데이트 과정을 설명하기 위한 도면이다.
도 6은 일 실시예에 따른 터치 시스템에서 펌웨어를 업데이트하는 과정을 나타낸 순서도이다.
이하, 본 발명의 일부 실시예들을 예시적인 도면을 통해 상세하게 설명한다. 각 도면의 구성요소들에 참조부호를 부가함에 있어서, 동일한 구성요소들에 대해서는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 부호를 가지도록 하고 있음에 유의해야 한다. 또한, 본 발명을 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명은 생략한다.
또한, 본 발명의 구성 요소를 설명하는 데 있어서, 제 1, 제 2, A, B, (a), (b) 등의 용어를 사용할 수 있다. 이러한 용어는 그 구성 요소를 다른 구성 요소와 구별하기 위한 것일 뿐, 그 용어에 의해 해당 구성 요소의 본질이나 차례 또는 순서 등이 한정되지 않는다. 어떤 구성 요소가 다른 구성요소에 "연결", "결합" 또는 "접속"된다고 기재된 경우, 그 구성 요소는 그 다른 구성요소에 직접적으로 연결되거나 또는 접속될 수 있지만, 각 구성 요소 사이에 또 다른 구성 요소가 "연결", "결합" 또는 "접속"될 수도 있다고 이해되어야 할 것이다.
도 1은 일 실시예에 따른 터치 시스템의 구성도이다.
도 1을 참조하면, 일 실시예에 따른 터치 시스템(100)은 전자 장치의 터치 패널(10)과 호스트(20)에 연동하는 터치 구동부(110), 터치 MCU(Micro Controller Unit, 120) 및 제 1 메모리(130)를 포함할 수 있다. 여기서, 호스트(20)는 전자 장치의 메인 제어부일 수 있다. 예를 들어, 전자 장치가 이동통신 단말기인 경우, 호스트(20)는 이동통신 단말기의 애플리케이션 프로세서일 수 있고, 전자 장치가 모니터 또는 TV(Television)일 경우, 호스트(20)는 모니터 또는 TV의 멀티 코어 프로세서일 수 있다.
한편, 터치 패널(10)은 디스플레이 패널(미도시)의 상부 편광판 상에 접합되거나, 상부 편광판과 상부 기판 사이에 형성될 수 있다. 또한, 터치 패널(110)이 인셀타입으로 형성되는 경우, 디스플레이 패널(미도시) 내에서 픽셀 어레이와 함께 하부기판에 형성될 수도 있다.
이러한, 터치 패널(10)은 구동 전극들과 수신 전극들로 구성된 센서 전극들을 포함할 수 있다.
터치 구동부(110)는 터치 패널(10)의 센서 전극들로 구동신호를 공급한다.
그리고, 터치 구동부(110)는 센서 전극들로부터 반응신호를 수신하고, 반응신호에 따른 터치데이터를 출력할 수 있다.
터치 패널(10)의 일 부분에 사용자의 신체 또는 터치펜 등과 같은 오브젝트가 접근 혹은 접촉하는 경우, 터치 패널(10)의 일 부분에 해당하는 반응신호와 다른 부분의 반응신호의 크기 차이가 커질 수 있고, 이를 통해 터치 구동부(110)는 오브젝트가 터치 패널(10)의 일부분에 접근 혹은 접촉한 것에 대한 터치데이터를 생성할 수 있다.
터치 MCU(120), 즉 터치 장치는 터치 구동부(110)에서 생성한 터치데이터를 이용하여 터치 패널(10)에 대한 터치 좌표를 계산할 수 있다.
그리고 터치 MCU(120)는 터치 좌표를 전자 장치의 호스트(20)로 전송할 수 있다.
이러한 터치 MCU(120)는 프로세서(122), 제 2 메모리(124), 통신 인터페이스부(126)를 포함할 수 있다. 여기서, 통신 인터페이스부(126)는 프로세서(122)와 제 1 메모리(130) 간의 통신 경로를 제공하는 제 1 통신 인터페이스(126a) 및 프로세서(122)와 호스트(20) 간의 통신 경로를 제공하는 제 2 통신 인터페이스(126b)를 포함할 수 있다. 그리고 제 2 메모리(124)는 RAM(Random Access Memory)과 같은 휘발성 메모리일 수 있다.
프로세서(122)는 제 3 통신 인터페이스(미도시)를 통해 터치 구동부(110)로부터 터치데이터를 수신할 수 있고, 후술할 제 1 메모리(130)에 저장된 제 1 펌웨어를 제 2 메모리(124)에 업로드하여 실행할 수 있다.
이를 통해 터치 MCU(120)는 터치데이터로부터 터치 패널(10)에 대한 터치 좌표를 계산하고, 이를 호스트(20)에 전송하여 전자 장치에서 터치 좌표를 통한 이벤트를 발생할 수 있도록 한다.
다시 말해서, 제 1 펌웨어는 터치데이터로부터 터치 패널(10)에 대한 터치 좌표를 계산하는 제 1 알고리즘을 포함할 수 있다.
한편, 제 1 펌웨어는 자신의 업데이트를 관리하기 위한 제 2 알고리즘을 더 포함할 수 있다.
구체적으로 프로세서(122)에 의해 실행된 제 1 펌웨어는 호스트(20)로부터 제 1 펌웨어의 업데이트 데이터를 수신할 수 있다. 여기서, 제 1 펌웨어는 제 2 메모리(124)에 업데이트 데이터를 임시 저장할 수 있다.
그리고 제 1 펌웨어는 업데이트 데이터의 바디 데이터를 도 2와 같은 제 1 메모리(130)의 제 1 펌웨어 저장 영역(220)에 바디 데이터를 먼저 저장한 후에 업데이트 데이터의 헤더 데이터를 저장할 수 있다. 여기서, 제 1 펌웨어는 바디 데이터가 저장된 메모리 구간의 전단에 존재하는 공백 구간에 헤더 데이터를 저장할 수 있다. 이에 대한 자세한 설명은 도 3 내지 도 5에서 하도록 한다.
종래에는 업데이트 데이터의 헤더 데이터를 제 1 메모리(130)에 먼저 저장한 후에 헤더 데이터의 유효성만을 검증하고, 헤더 데이터의 유효성이 입증되면 바디 데이터에 대해서는 유효성을 검증하지 않고 제 1 메모리(130)에 저장하였기 때문에 펌웨어의 업데이트시에 바디 데이터에서 오류가 발생하면, 펌웨어의 업데이트가 정상적으로 완료되지 않았다.
일 실시예에서는 이를 해결하기 위해, 바디 데이터를 제 1 메모리(130)에 먼저 저장한 후에 헤더 데이터를 저장하는 것이다. 여기서, 제 1 메모리(130)는 플래시 메모리와 같은 비휘발성 메모리일 수 있다.
일 실시예에서, 제 2 메모리(124)에 업로드되어 실행중인 제 1 펌웨어는 바디 데이터를 제 1 메모리(130)의 제 1 펌웨어 저장 영역(220)에 저장한 후에 바디 데이터의 유효성을 검증하고, 바디 데이터의 유효성이 입증되면 헤더 데이터를 제 1 펌웨어 저장 영역(220)에 저장할 수 있다. 여기서, 제 1 펌웨어는 바디 데이터를 제 1 펌웨어 저장 영역(220)에 저장하기 전에 제 1 펌웨어 저장 영역(220)에 저장되어 있는 기존의 제 1 펌웨어를 삭제할 수 있다.
제 1 펌웨어가 바디 데이터를 제 1 메모리(130)에 저장할 때, 제 1 펌웨어는 바디 데이터를 복수의 데이터 블록으로 분할하여 제 1 메모리(130)의 제 1 펌웨어 저장 영역(220)에 순차적으로 저장하되, 하나의 데이터 블록이 제 1 메모리(130)에 저장될 때마나 하나의 데이터 블록의 유효성을 검증할 수 있다.
위와 같은 방식을 통해 복수의 데이터 블록 모두의 유효성이 입증되면, 제 1 펌웨어는 헤더 데이터를 제 1 메모리(130)의 제 1 펌웨어 저장 영역(220)에 저장할 수 있다.
이후, 제 1 펌웨어는 헤더 데이터의 유효성을 검증하고, 헤더 데이터의 유효성이 입증되면, 제 1 펌웨어의 업데이트를 완료할 수 있다. 여기서, 제 1 펌웨어는 프로세서(122)에 의해 제 2 메모리(124)로 업로드되어 실행중이기 때문에 제 1 메모리(130)에 저장된 기존의 제 1 펌웨어를 업데이트할 수 있다.
일 실시예에서 제 1 펌웨어는 페리티 검사, 순환 중복 검사(CRC: Cyclical Redundancy Check) 및 체크섬 중 하나 이상을 이용하여 바디 데이터의 유효성을 검증하거나 헤더 데이터의 유효성을 검증할 수 있다.
일 실시예에서 제 1 펌웨어가 업데이트 데이터를 도 2와 같은 제 1 메모리(130)의 제 1 펌웨어 저장 영역(220)에 저장할 때에 도 3과 같이 제 1 메모리(130)의 제 1 펌웨어 저장 영역(220)에서 헤더 데이터가 저장될 메모리 구간에 대한 어드레스 범위인 제 1 어드레스 내지 제 N 어드레스를 공백 구간으로 설정한 후에 제 2 메모리(124)에 임시 저장된 바디 데이터를 제 1 펌웨어 저장 영역(220)의 제 N+1 어드레스에서부터 저장할 수 있다.
그리고 바디 데이터의 유효성이 입증되면, 제 1 펌웨어는 도 4와 같이 제 2 메모리(124)에 임시 저장된 헤더 데이터를 제 1 펌웨어 저장 영역(220)의 공백 구간에 저장할 수 있다.
이후, 제 1 펌웨어는 헤더 데이터의 유효성 검증을 통해 유효성이 입증되면, 도 5와 같이 제 1 펌웨어의 업데이트를 완료할 수 있다.
이상에서 설명한 바와 같이 일 실시예에서는 펌웨어의 업데이트시에 발생할 수 있는 오류를 해소하기 위해 업데이트 데이터의 바디 데이터를 저장 및 유효성을 검증한 후에 헤더 데이터를 저장 및 유효성을 검증하여 펌웨어의 업데이트를 정상적으로 완료할 수 있다.
한편, 일 실시예에서는 제 1 메모리(130)에 제 1 펌웨어와 별개인 제 2 펌웨어를 추가로 저장하여, 제 1 펌웨어의 빈번한 실행 등으로 인해 제 1 펌웨어에 오류가 발생했을 때에 프로세서(122)가 제 2 펌웨어를 실행하여 오류가 발생한 제 1 펌웨어를 정상적인 제 1 펌웨어로 업데이트할 수 있도록 한다.
구체적으로, 일 실시예에서 제 1 메모리(130)는 도 2와 같이 제 1 펌웨어 저장 영역(220)에 제 1 펌웨어를 저장하고, 제 2 펌웨어 저장 영역(240)에 제 2 펌웨어를 저장할 수 있다.
여기서, 부트로더 저장 영역(210)에 저장되는 부트로더는 터치 시스템(100)을 포함한 전자 장치에 전원이 입력됐을 때에 프로세서(122)가 제 1 펌웨어 영역(122)에 저장된 제 1 펌웨어를 제 2 메모리(124)에 업로드하여 실행하도록 한다.
그리고, 부트로더는 제 1 펌웨어에 오류가 발생했을 때에 프로세서(122)가 제 2 펌웨어 영역(240)에 저장된 제 2 펌웨어를 제 2 메모리(124)에 업로드하여 실행하도록 한다.
제 1 펌웨어 저장 영역(220)에 저장되는 제 1 펌웨어는 평상시에 프로세서(122)의 구동을 위한 펌웨어일 수 있다. 다시 말해서, 제 1 펌웨어는 터치데이터로부터 터치 패널(10)에 대한 터치 좌표를 계산하는 제 1 알고리즘을 포함할 수 있고, 자신의 업데이트를 관리하기 위한 제 2 알고리즘을 더 포함할 수 있다.
여기서, 제 1 펌웨어 저장 영역(220)은 읽기(Read)와 쓰기(Write)가 가능한 메모리 영역일 수 있다.
제 2 펌웨어 저장 영역(240)에 저장되는 제 2 펌웨어는 제 1 펌웨어의 오류가 발생했을 때에 프로세서(122)에 의해 제 2 메모리(124)에 업로드되고, 프로세서(122)에 의해 실행되어 호스트(20)로부터 제 1 펌웨어의 업데이트 데이터를 수신할 수 있다. 여기서, 제 2 펌웨어 저장 영역(240)은 읽기(Read)만 가능한 메모리 영역일 수 있다.
제 2 펌웨어는 제 1 메모리(130)의 제 1 펌웨어 저장 영역(220)에 업데이트 데이터의 바디 데이터를 저장한 후에 업데이트 데이터의 헤더 데이터를 제 1 펌웨어 저장 영역(220)에 저장하되, 바디 데이터가 저장된 메모리 구간의 전단에 존재하는 공백 구간에 헤더 데이터를 저장할 수 있다.
다시 말해서, 제 2 펌웨어는 제 1 펌웨어의 업데이트를 관리하기 위한 제 3 알고리즘을 포함할 수 있다. 또한 제 2 펌웨어는 터치데이터로부터 터치 패널(10)에 대한 터치 좌표를 계산하는 제 1 알고리즘을 더 포함할 수도 있다.
여기서, 제 2 펌웨어도 제 1 펌웨어와 마찬가지로 바디 데이터를 제 1 메모리(130)의 제 1 펌웨어 저장 영역(220)에 저장한 후에 바디 데이터의 유효성을 검증하고, 바디 데이터의 유효성이 입증되면 헤더 데이터를 제 1 펌웨어 저장 영역(220)에 저장할 수 있다. 여기서, 제 2 펌웨어는 바디 데이터를 제 1 펌웨어 저장 영역(220)에 저장하기 전에 제 1 펌웨어 저장 영역(220)에 저장되어 있는 기존의 제 1 펌웨어를 삭제할 수 있다.
바디 데이터를 제 1 펌웨어 저장 영역(220)에 저장할 때, 제 2 펌웨어는 바디 데이터를 복수의 데이터 블록으로 분할하여 제 1 메모리(130)의 제 1 펌웨어 저장 영역(220)에 순차적으로 저장하되, 하나의 데이터 블록이 제 1 메모리(130)에 저장될 때마다 하나의 데이터 블록의 유효성을 검증할 수 있다.
위와 같은 방식을 통해 복수의 데이터 블록 모두의 유효성이 입증되면, 제 2 펌웨어는 헤더 데이터를 제 1 메모리(130)의 제 1 펌웨어 저장 영역(220)에 저장할 수 있다.
이후, 제 2 펌웨어는 헤더 데이터의 유효성을 검증하고, 헤더 데이터의 유효성이 입증되면, 제 1 펌웨어의 업데이트를 완료할 수 있다.
일 실시예에서 제 2 펌웨어가 업데이트 데이터를 도 2와 같은 제 1 메모리(130)의 제 1 펌웨어 저장 영역(220)에 저장할 때에 도 3과 같이 제 1 메모리(130)의 제 1 펌웨어 저장 영역(220)에서 헤더 데이터가 저장될 메모리 구간에 대한 어드레스 범위인 제 1 어드레스 내지 제 N 어드레스를 공백 구간으로 설정한 후에 제 1 펌웨어 저장 영역(220)의 제 N+1 어드레스에서부터 바디 데이터를 먼저 저장할 수 있다.
그리고 바디 데이터의 유효성이 입증되면, 제 2 펌웨어는 도 4와 같이 제 1 펌웨어 저장 영역(220)의 공백 구간에 헤더 데이터를 저장할 수 있다.
위와 같이 일 실시예에서는 평상시에 프로세서(122)의 구동을 위한 제 1 펌웨어와 제 1 펌웨어의 오류가 발생했을 때에 프로세서(122)의 구동을 위한 제 2 펌웨어를 제 1 메모리(130)에 각각 저장하여 제 1 펌웨어에 오류가 발생한 경우에도 제 2 펌웨어를 통해 제 1 펌웨어를 업데이트할 수 있도록 한다.
여기서, 제 1 펌웨어의 업데이트 시에 제 1 펌웨어의 데이터 크기가 기존에 비해 증가하면, 제 1 펌웨어의 업데이트 데이터가 제 1 펌웨어 저장 영역(220)을 초과하여 저장될 수 있기 때문에 제 1 메모리(130)에서 제 1 펌웨어 저장 영역(220)과 제 2 펌웨어 저장 영역(240) 사이에 일정 메모리 구간에 해당하는 공백 영역(230)이 존재할 수 있다. 다시 말해서, 제 1 메모리(130)의 메모리 구간을 할당할 때에 제 1 펌웨어 저장 영역(220)와 제 2 펌웨어 저장 영역(240) 사이에 공백 영역(230)을 할당할 수 있다.
이하에서는 터치 시스템(100)에서 펌웨어를 업데이트하는 과정에 대해 설명하도록 한다.
도 6은 일 실시예에 따른 터치 시스템에서 펌웨어를 업데이트하는 과정을 나타낸 순서도이다.
도 6을 참조하면, 터치 MCU(120)의 프로세서(122)에 의해 제 1 메모리(130)에서 제 2 메모리(124)로 업로드되어 실행된 제 1 펌웨어는 호스트(20)로부터 제 1 펌웨어의 업데이트 데이터를 수신할 수 있다(S610). 여기서, 호스트(20)는 전자 장치에 구비된 유무선 통신 모듈을 통해 외부 서버로부터 제 1 펌웨어의 업데이트 데이터를 수신하거나, 전자 장치에 접속한 외장 메모리(예를 들어, USB 메모리 등)로부터 제 1 펌웨어의 업데이트 데이터를 수신하여 터치 시스템(100) 측으로 전송할 수 있다.
제 1 펌웨어는 RAM(Random Access Memory)과 같은 제 2 메모리(124)에 업데이트 데이터를 임시 저장할 수 있다(S620).
그리고 제 1 펌웨어는 업데이트 데이터의 바디 데이터를 제 1 메모리(130)의 제 1 펌웨어 저장 영역(220)에 저장하고, 바디 데이터의 유효성을 검증할 수 있다(S630). 여기서, 제 1 펌웨어는 제 2 메모리(124)에 임시 저장된 바디 데이터를 복수의 데이터 블록으로 분할할 수 있고, 복수의 데이터 블록을 제 1 메모리(130)의 제 1 펌웨어 저장 영역(220)에 순차적으로 저장할 수 있다. 그리고 하나의 데이터 블록이 제 1 메모리(130)에 저장될 때마다 하나의 데이터 블록의 유효성을 검증할 수 있다. 이를 통해 복수의 데이터 블록 모두의 유효성을 검증 및 입증할 수 있다.
상기 단계 S630 이전에 제 1 펌웨어는 제 1 펌웨어 저장 영역(220)에 저장되어 있는 기존의 제 1 펌웨어를 삭제할 수 있다.
상기 단계 S630 이전에 제 1 펌웨어는 도 3과 같이 제 1 메모리(130)의 제 1 펌웨어 저장 영역(220)에서 헤더 데이터가 저장될 메모리 구간에 대한 어드레스 범위인 제 1 어드레스 내지 제 N 어드레스를 공백 구간으로 설정한 후에 제 2 메모리(124)에 임시 저장된 바디 데이터를 제 1 펌웨어 저장 영역(220)의 제 N+1 어드레스에서부터 저장할 수 있다.
한편, 바디 데이터의 유효성이 입증되면, 제 1 펌웨어는 헤더 데이터를 제 1 펌웨어 저장 영역(220)에 저장하고, 헤더 데이터의 유효성을 검증할 수 있다(S640, S650). 상기 단계 S640에서 바디 데이터의 유효성이 입증되지 않으면, 제 1 펌웨어는 제 1 펌웨어 저장 영역(220)에 저장한 바디 데이터를 삭제한 후에 제 2 메모리(124)에 임시 저장된 바디 데이터를 제 1 펌웨어 저장 영역(220)에 다시 저장하고, 유효성도 다시 검증할 수 있다.
헤더 데이터의 유효성이 입증되면, 제 1 펌웨어느 제 1 펌웨어의 업데이트를 완료할 수 있다(S660). 상기 단계 S650에서 헤더 데이터의 유효성이 입증되지 않으면, 제 1 펌웨어는 제 1 펌웨어 저장 영역(220)에 저장한 헤더 데이터를 삭제한 후에 제 2 메모리(124)에 임시 저장된 헤더 데이터를 제 1 펌웨어 저장 영역(220)에 다시 저장하고, 유효성도 다시 검증할 수 있다.
일 실시예에서 제 1 펌웨어는 페리티 검사, 순환 중복 검사(CRC: Cyclical Redundancy Check) 및 체크섬 중 하나 이상을 이용하여 바디 데이터의 유효성을 검증하거나 헤더 데이터의 유효성을 검증할 수 있다.

Claims (16)

  1. 프로세서;
    상기 프로세서의 구동을 위한 제 1 펌웨어 및 제 2 펌웨어를 서로 다른 저장 영역에 저장하는 제 1 메모리; 및
    상기 프로세서에 의해 상기 제 1 펌웨어가 업로드되는 제 2 메모리를 포함하고,
    상기 제 1 펌웨어는 상기 제 2 메모리에 업로드된 상태에서 상기 프로세서에 의해 실행된 후에 호스트로부터 상기 제 1 펌웨어의 업데이트 데이터를 수신하고, 상기 업데이트 데이터의 바디 데이터를 상기 제 1 메모리에 저장한 후에 상기 업데이트 데이터의 헤더 데이터를 상기 제 1 메모리에 저장하는
    터치 시스템.
  2. 제 1 항에 있어서, 상기 터치 시스템은
    전자 장치에 구비된 터치 패널의 센서 전극으로 구동신호를 공급하고, 상기 구동신호에 대한 상기 센서 전극의 반응 신호를 수신하여 터치데이터를 생성하는 터치 구동부
    를 더 포함하고,
    상기 프로세서에 의해 실행된 상기 제 1 펌웨어는 상기 터치데이터로부터 상기 터치 패널에 대한 터치 좌표를 계산한 후에 상기 터치 좌표를 상기 호스트에 제공하는 터치 시스템.
  3. 제 1 항에 있어서,
    상기 제 1 펌웨어는 상기 바디 데이터를 상기 제 1 메모리에 저장한 후에 상기 바디 데이터의 유효성을 검증하고, 상기 바디 데이터의 유효성이 입증되면 상기 헤더 데이터를 상기 제 1 메모리에 저장하는 터치 시스템.
  4. 제 3 항에 있어서,
    상기 제 1 펌웨어는 상기 헤더 데이터를 상기 제 1 메모리에 저장한 후에 상기 헤더 데이터의 유효성을 검증하고, 상기 헤더 데이터의 유효성이 입증되면, 상기 제 1 펌웨어의 업데이트를 완료하는 터치 시스템.
  5. 제 1 항에 있어서,
    상기 제 1 펌웨어는 상기 바디 데이터를 복수의 데이터 블록으로 분할하여 상기 제 1 메모리에 순차적으로 저장하되, 하나의 데이터 블록이 상기 제 1 메모리에 저장될 때마다 상기 하나의 데이터 블록의 유효성을 검증하고, 상기 복수의 데이터 블록 모두의 유효성이 입증되면, 상기 헤더 데이터를 상기 제 1 메모리에 저장하는 터치 시스템.
  6. 제 1 항에 있어서,
    상기 프로세서와 상기 제 1 메모리 간의 통신 경로를 제공하는 제 1 통신 인터페이스 및 상기 프로세서와 상기 호스트 간의 통신 경로를 제공하는 제 2 통신 인터페이스를 포함하는 통신 인터페이스부
    를 더 포함하는 터치 시스템.
  7. 제 1 항에 있어서,
    상기 제 1 펌웨어는 상기 업데이트 데이터를 상기 제 2 메모리에 임시 저장하고, 상기 제 1 메모리에서 상기 헤더 데이터가 저장될 메모리 구간에 대한 어드레스 범위인 제 1 어드레스 내지 제 N(N은 자연수) 어드레스를 공백 구간으로 설정한 후에 상기 제 1 메모리의 제 N+1 어드레스에서부터 상기 바디 데이터를 저장하는 터치 시스템.
  8. 제 1 항에 있어서,
    상기 제 2 펌웨어는 상기 제 1 펌웨어의 오류가 발생했을 때에 상기 프로세서에 의해 상기 제 2 메모리에 업로드되어 실행되는 터치 시스템.
  9. 제 8 항에 있어서,
    상기 제 2 펌웨어는 상기 호스트로부터 상기 제 1 펌웨어의 업데이트 데이터를 수신하고, 상기 업데이트 데이터의 바디 데이터를 상기 제 1 메모리에 저장한 후에 상기 업데이트 데이터의 헤더 데이터를 상기 제 1 메모리에 저장하되, 상기 바디 데이터가 저장된 메모리 구간의 전단에 존재하는 공백 구간에 상기 헤더 데이터를 저장하는 터치 시스템.
  10. 제 1 항에 있어서,
    상기 제 1 메모리에서 상기 제 1 펌웨어의 저장 영역과 상기 제 2 펌웨어의 저장 영역 사이에 일정 메모리 구간에 해당하는 공백 영역이 존재하는 터치 시스템.
  11. 제 1 항에 있어서,
    상기 제 1 펌웨어는 상기 제 1 메모리에서 상기 바디 데이터가 저장된 메모리 구간의 전단에 존재하는 공백 구간에 상기 헤더 데이터를 저장하는 터치 시스템.
  12. 전자 장치에 구비된 터치 시스템에서 펌웨어를 업데이트하는 방법에 있어서,
    상기 전자 장치의 호스트로부터 상기 펌웨어의 업데이트 데이터를 수신하는 데이터 수신 단계;
    상기 전자 장치의 제 2 메모리에 상기 업데이트 데이터를 임시 저장하는 데이터 임시 저장 단계;
    상기 전자 장치의 제 1 메모리에 상기 업데이트 데이터의 바디 데이터를 저장하고, 상기 바디 데이터의 유효성을 검증하는 바디 데이터 저장 단계; 및
    상기 바디 데이터의 유효성이 입증되면, 상기 제 1 메모리에 상기 업데이트 데이터의 헤더 데이터를 저장하는 헤더 데이터 저장 단계
    를 포함하는 펌웨어를 업데이트하는 방법.
  13. 제 12 항에 있어서, 상기 헤더 데이터 저장 단계에서
    상기 터치 시스템은 상기 제 1 메모리에서 상기 바디 데이터가 저장된 구간의 전단에 존재하는 공백 구간에 상기 헤더 데이터를 저장하는 펌웨어를 업데이트하는 방법.
  14. 제 12 항에 있어서, 상기 바디 데이터 저장 단계는
    상기 제 2 메모리에 임시 저장된 바디 데이터를 복수의 데이터 블록으로 분할하는 단계;
    상기 복수의 데이터 블록을 상기 제 1 메모리에 순차적으로 저장하되, 하나의 데이터 블록이 상기 제 1 메모리에 저장될 때마다 상기 하나의 데이터 블록의 유효성을 검증하는 단계; 및
    상기 복수의 데이터 블록 모두의 유효성을 입증하는 단계
    를 포함하는 펌웨어를 업데이트하는 방법.
  15. 제 12 항에 있어서,
    상기 터치 시스템은 상기 전자 장치에 구비된 터치 패널의 센서 전극으로 구동신호를 공급하고, 상기 구동신호에 대한 상기 센서 전극의 반응 신호를 수신하여 터치 데이터를 생성하는 터치 구동부 및 상기 펌웨어의 실행을 통해 상기 터치 구동부로부터 상기 터치데이터를 수신하고 상기 터치데이터로부터 상기 터치 패널에 대한 터치 좌표를 계산하는 터치 장치를 포함하는 펌웨어를 업데이트하는 방법.
  16. 제 12 항에 있어서, 상기 바디 데이터 저장 단계에서
    페리티 검사, 순환 중복 검사(CRC: Cyclical Redundancy Check) 및 체크섬 중 하나 이상을 이용하여 상기 바디 데이터의 유효성을 검증하는 펌웨어를 업데이트하는 방법.
KR1020190171570A 2019-12-20 2019-12-20 펌웨어를 업데이트하는 터치 시스템 및 방법 KR20210079601A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020190171570A KR20210079601A (ko) 2019-12-20 2019-12-20 펌웨어를 업데이트하는 터치 시스템 및 방법
US17/115,374 US20210191709A1 (en) 2019-12-20 2020-12-08 Touch system and method for updating firmware
CN202011478271.XA CN113010035A (zh) 2019-12-20 2020-12-15 触摸系统和用于更新固件的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190171570A KR20210079601A (ko) 2019-12-20 2019-12-20 펌웨어를 업데이트하는 터치 시스템 및 방법

Publications (1)

Publication Number Publication Date
KR20210079601A true KR20210079601A (ko) 2021-06-30

Family

ID=76383343

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190171570A KR20210079601A (ko) 2019-12-20 2019-12-20 펌웨어를 업데이트하는 터치 시스템 및 방법

Country Status (3)

Country Link
US (1) US20210191709A1 (ko)
KR (1) KR20210079601A (ko)
CN (1) CN113010035A (ko)

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7069452B1 (en) * 2000-07-12 2006-06-27 International Business Machines Corporation Methods, systems and computer program products for secure firmware updates
US20020138225A1 (en) * 2001-01-25 2002-09-26 Wong Isaac H. Automatic configuration of delay parameters for memory controllers of slave processors
US7100011B2 (en) * 2002-03-01 2006-08-29 Arris International, Inc. Method and system for reducing storage requirements for program code in a communication device
US7089547B2 (en) * 2002-09-13 2006-08-08 International Business Machines Corporation Firmware updating
ATE466334T1 (de) * 2004-02-27 2010-05-15 Ericsson Telefon Ab L M Programmieren eines flash-speichers
US7457945B2 (en) * 2004-03-23 2008-11-25 Dell Products L.P. System and method for providing a secure firmware update to a device in a computer system
US8429643B2 (en) * 2007-09-05 2013-04-23 Microsoft Corporation Secure upgrade of firmware update in constrained memory
CN104281527A (zh) * 2013-07-02 2015-01-14 英业达科技有限公司 计算机系统及其操作方法
TWI595361B (zh) * 2013-12-13 2017-08-11 祥碩科技股份有限公司 電子裝置與其載入程式碼之方法
US10007508B2 (en) * 2014-09-09 2018-06-26 Toshiba Memory Corporation Memory system having firmware and controller
JP6595822B2 (ja) * 2015-07-07 2019-10-23 キヤノン株式会社 情報処理装置及びその制御方法
KR102494241B1 (ko) * 2016-08-18 2023-02-03 에스케이하이닉스 주식회사 메모리 시스템 및 그의 동작 방법
WO2020003970A1 (ja) * 2018-06-25 2020-01-02 株式会社ワコム タッチic及び外部プロセッサを含むシステムで実行される方法
US10430181B1 (en) * 2018-08-20 2019-10-01 Quanta Computer Inc. Retrieving updated firmware code
TWI765188B (zh) * 2019-11-07 2022-05-21 廣達電腦股份有限公司 觸控顯示面板及其自動韌體燒錄方法
KR20210079822A (ko) * 2019-12-20 2021-06-30 주식회사 실리콘웍스 펌웨어를 선택적으로 운용하는 터치 시스템 및 방법

Also Published As

Publication number Publication date
US20210191709A1 (en) 2021-06-24
CN113010035A (zh) 2021-06-22

Similar Documents

Publication Publication Date Title
KR102298661B1 (ko) 저장 장치 및 그것의 초기화 방법
US8006165B2 (en) Memory controller and semiconductor memory device
CN107133122B (zh) 存储器控制方法
US8671330B2 (en) Storage device, electronic device, and data error correction method
KR20120064462A (ko) 메모리 컨트롤러, 이의 오류정정 방법, 및 이를 포함하는 메모리 시스템
CN107665722B (zh) 存储装置、包括存储装置的系统以及操作存储装置的方法
US8990535B2 (en) Method for operating memory controller, and memory system including the same
EP3133604A1 (en) Method and device for fail-safe erase of flash memory
CN109800187B (zh) 被配置为更新现场可编程门阵列的存储设备及其操作方法
CN110069426B (zh) 存储器控制器及具有存储器控制器的存储器系统
US20080046778A1 (en) Memory controller and semiconductor memory device
CN109388345B (zh) 存储器的数据读取方法、显示装置及计算机可读存储介质
US20200065187A1 (en) Data access method, memory control circuit unit and memory storage device
CN107861832B (zh) 数据验证方法、装置及可读存储介质
CN104679672A (zh) 数据储存装置以及快闪存储器控制方法
CN114253570A (zh) 控制器、存储设备及存储设备的固件更新方法
US20240118762A1 (en) Touch system and method for selectively operating firmware
US11281402B2 (en) Memory management method, memory storage device and memory control circuit unit
TW201732834A (zh) 解碼方法、記憶體控制電路單元及記憶體儲存裝置
KR100606052B1 (ko) 이동통신 단말기의 오류 데이터 복구 시스템 및 방법
KR20210079601A (ko) 펌웨어를 업데이트하는 터치 시스템 및 방법
US20150012688A1 (en) Computer system and operating method thereof
CN114090028A (zh) 系统升级方法、电子设备及存储介质
KR20210114718A (ko) 리드 동작을 수행하는 메모리 시스템 및 메모리 시스템의 동작방법
KR20220049230A (ko) 메모리 시스템에서 비휘발성 메모리 장치 내 오류를 확인하는 장치 및 방법

Legal Events

Date Code Title Description
E902 Notification of reason for refusal