KR100935683B1 - 디바이스 드라이버 소스코드 자동생성 장치 - Google Patents

디바이스 드라이버 소스코드 자동생성 장치 Download PDF

Info

Publication number
KR100935683B1
KR100935683B1 KR1020070132674A KR20070132674A KR100935683B1 KR 100935683 B1 KR100935683 B1 KR 100935683B1 KR 1020070132674 A KR1020070132674 A KR 1020070132674A KR 20070132674 A KR20070132674 A KR 20070132674A KR 100935683 B1 KR100935683 B1 KR 100935683B1
Authority
KR
South Korea
Prior art keywords
information
editing
page
driver
source code
Prior art date
Application number
KR1020070132674A
Other languages
English (en)
Other versions
KR20090065200A (ko
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 KR1020070132674A priority Critical patent/KR100935683B1/ko
Publication of KR20090065200A publication Critical patent/KR20090065200A/ko
Application granted granted Critical
Publication of KR100935683B1 publication Critical patent/KR100935683B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • 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/4411Configuring for operating with peripheral devices; Loading of device drivers
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage

Landscapes

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

Abstract

본 발명은 디바이스 드라이버 프로그램을 명세언어를 통해 기술하고, 소스코드를 자동생성하는 장치에 관한 것이다. 본 발명의 특징은 디바이스가 적용가능한 도메인을 분석하여 자세한 디바이스 드라이버 작성 코드가 자동생성 될 수 있는 장치 및 그 방법을 제공하고 개발자가 디바이스 드라이버를 작성하는데 있어서, 자동 생성된 코드에 기반하여 최소한의 노력으로 디바이스 드라이버를 작성할 수 있도록 도와준다.
디바이스, 드라이버, 명세언어, 코드 자동생성

Description

디바이스 드라이버 소스코드 자동생성 장치{Apparatus for generating device driver specification based source code}
본 발명은 디바이스 소스코드 자동생성 장치에 관한 것으로서, 더욱 상세하게는 디바이스를 제어하기 위한 디바이스 드라이버의 소스코드를 자동으로 생성하는 장치에 관한 것이다.
본 발명은 정보통신부의 IT성장동력기술개발사업의 일환으로 수행한 연구로부터 도출된 것이다. 과제관리번호: 2006-S-038-02, 과제명: 모바일 컨버전스 컴퓨팅을 위한 단말적응형 임베디드 운영체제 기술개발(Development of Device-Adaptive Embedded Operating System for Mobile Convergence Computing).
최근 들어 유비쿼터스 컴퓨팅 사회를 구현하기 위해 임베디드 시스템으로 대표되는 많은 디지털 기기들 간의 컨버전스(convergence) 혹은 기존의 아날로그 기기와의 컨버전스가 빈번해지면서, 임베디드 소프트웨어의 효율적인 개발 방법, 특히 하드웨어와 맞닿아 있는 저수준(low-level)의 소프트웨어인 디바이스 드라이버(device driver)를 개발하는 체계적이고 효율적인 방법에 대한 중요성이 증대되고 있다. 디바이스 드라이버는 하드웨어와 운영체제 및 응용 프로그램 사이의 연결 고리 역할을 하는 핵심 구성 요소로서, 응용 프로그램이 하드웨어에서 제공하는 기능을 사용할 수 있도록 제어 및 상호동작을 위한 일관된 인터페이스를 제공하는 소프트웨어이다. 따라서, 디바이스 드라이버 개발은 운영체제와 하드웨어 플랫폼에 밀접하게 관련되어 있다. 또한, 디바이스 드라이버는 그 구현이 복잡하고 어려워 개발자가 쉽게 오류를 범하기 쉬운 소프트웨어로 운영체제 시스템 오류의 상당부분을 차지한다. 마이크로소프트(Microsoft)사에서 발표한 보고서에 따르면, 윈도우 XP에서 발생하는 오류 중 상당수가 디바이스 드라이버의 오류로 인해 발생했다고 한다. 이러한 특성으로 디바이스 드라이버를 개발하는 개발자는 운영체제에서 제공하는 인터페이스나 자료구조, 디바이스의 특성 등을 숙지해야 하며 잘못된 연산은 시스템에 심각한 영향을 미치게 되므로 디바이스 드라이버 개발에 많은 노력이 필요하다. 그리고, 디바이스 드라이버 개발은 시스템 개발 시간의 병목현상을 유발하는 주된 요인으로 지적되고 있다.
본 발명은 상기와 같은 문제점을 해결하기 위한 것으로서, 드라이버 도메인을 분석하여 하드웨어 플랫폼에 의존적인 특성이나 운영체제에서 제공되는 라이브러리의 세부사항(운영체제의 시스템 콜, 함수 호출 순서나 기본적인 절차)에 대하여 잘 알지 못해도 사용자가 빠르고 쉽게 실행 가능한 형태의 코드로 디바이스 드라이버를 개발할 수 있는 장치를 제공한다.
본 발명의 디바이스 드라이버 소스코드 자동생성 장치는 디바이스 드라이버 명세언어로 기술된 디바이스 드라이버 명세가 저장되는 드라이버 명세 저장부; 디바이스 드라이버 명세를 편집할 수 있는 명세 편집부; 및 디바이스 드라이버 명세를 소스 코드로 번역하는 명세 번역부를 포함하되, 디바이스 드라이버 명세언어는 드라이버 기본 정보, 디바이스 정보, 파일 오퍼레이션 정보, 및 버스 관련 오퍼레이션 정보를 포함하여 드라이버 명세를 기술할 수 있는 구조를 갖는 것을 특징으로 한다.
특히, 드라이버 기본 정보는, 디바이스 드라이버가 사용될 플랫폼의 아키텍처 정보, 적재될 커널의 정보, 및 라이센스 정보 중 적어도 하나 이상의 정보를 포함하는 것이 바람직하다.
또한, 디바이스 정보는, 디바이스의 이름, 디바이스 타입, 메이저/마이너 번호, 및 벤더/프로덕트 ID 정보 중 적어도 하나 이상의 정보를 포함하는 것이 바람 직하다.
또한, 파일 오퍼레이션 정보는, 디바이스 파일 오퍼레이션에 관한 정보를 저장하는 부분으로 운영체제에서 사용하는 인터페이스와 밀접한 연관이 있는 함수의 이름 및 입출력 정보 중 적어도 하나 이상의 정보를 포함하는 것이 바람직하다.
또한, 버스 관련 오퍼레이션 정보는, 버스 오퍼레이션에 관한 정보를 저장하는 부분으로 각 버스의 고유 기능의 코드를 생성하는 정보를 포함하는 것이 바람직하다.
또한, 명세편집부는, 디바이스 정보를 편집하는 오버뷰 페이지; 파일 오퍼레이션 정보를 편집하는 파일 오퍼레이션 페이지; 버스 관련 오퍼레이션 정보를 편집하는 버스 오퍼레이션 페이지; 비동기적 처리 정보를 편집하는 비동기적 처리 페이지; 커널 모듈 파라미터 정보를 편집하는 어드밴스드 페이지; 및 드라이버 명세를 직접 편집할 수 있는 XML 페이지를 포함하는 것이 바람직하다.
또한, 오버뷰 페이지는, 디바이스 이름, 각종 ID, 및 디바이스/버스 타입을 명세하는 일반섹션; 디바이스 타입에 따라 추가 입력되어야 하는 정보를 명세하는 디바이스 타입섹션; 및 명세편집부에서 편집되는 모든 정보의 목차와 그것들의 하이퍼링크를 가지고 있는 컨텐트섹션을 포함하는 것이 바람직하다.
또한, 파일 오퍼레이션 페이지는, 디바이스 파일을 위한 이름 및 각 오퍼레이션 선택사항을 포함하는 파일오퍼레이션 섹션; 및 ioctl의 명령어와 명령어의 아규먼트를 편집할 수 있는 Ioctl섹션을 포함하는 것이 바람직하다.
또한, 버스 오퍼레이션 페이지는, USB를 위해서 URB, usbclass 구조체, 및 전송 파이프 정보를 편집하고, PCI를 위해서 전력 관리사항을 편집하고, PCMCIA를 위해서 전력 관리, 카드/물리적 리셋, 소켓 타입에 관한 정보를 편집하는 버스 섹션을 포함하는 것이 바람직하다.
또한, 비동기적 처리 페이지는, 인터럽트 처리정보를 위한 인터럽트섹션; 각종 지연가능한 비동기처리를 수행하는 지연기능섹션; 및 커널 타이머 정보 편집을 위한 커널타이머섹션을 포함하는 것이 바람직하다.
또한, 어드밴스드 페이지는 커널 모듈 파라미터 정보를 편집가능한 모듈파라미터섹션을 포함하는 것이 바람직하다.
본 발명에 따르면 다음과 같은 효과가 있다.
첫째, 본 발명에 의해 정의된 명세언어를 통해 디바이스 드라이버를 도메인별로 분석하여 다양한 드라이버에 대해 소스코드를 자동생성할 수 있게 된다.
둘째, 본 발명에 의해 개발자가 디바이스 드라이버에 필요한 인터페이스를 상관하지 않고 드라이버의 작동방법(프로그램 구조)에만 집중할 수 있도록 하여 생산성을 향상시킬 수 있다.
셋째, 디바이스 드라이버 개발에서 소스코드 자동생성을 통하여 휴대용 정보기기나 타임 투 마켓(Time-to-market)이 중요한 산업에서 사용되는 소프트웨어 개발의 시간과 비용을 절약할 수가 있다.
본 발명을 첨부된 도면을 참조하면 상세히 설명하면 다음과 같다. 여기서, 반복되는 설명, 본 발명의 요지를 불필요하게 흐릴 수 있는 공지 기능, 및 구성에 대한 상세한 설명은 생략한다. 본 발명의 실시형태는 당 업계에서 평균적인 지식을 가진 자에게 본 발명을 보다 완전하게 설명하기 위해서 제공되는 것이다. 따라서, 도면에서의 요소들의 형상 및 크기 등은 보다 명확한 설명을 위해 과장될 수 있다.
도 1은 본 발명의 일실시예에 따른 디바이스 드라이버 소스코드 자동생성 장치를 설명하기 위한 블럭도이다.
본 발명에 따른 디바이스 드라이버 소스코드 자동생성 장치는 드라이버 명세 저장부(20), 명세 편집부(30), 및 명세 번역부(50)를 포함한다.
도 1을 참조하면, 먼저, 드라이버 명세 저장부(20)에는 디바이스 드라이버 명세(이하, '드라이버 명세')가 저장된다. 드라이버 명세는 디바이스 드라이버 명세언어(이하, '명세언어')의 규칙에 따라서 작성된다. 드라이버 명세는 DTD(Document type definition)나 XML 스키마(Schema) 구조에 따라 기술된 XML(extensible markup language)형식의 문서이며, 드라이버 마법사(10)에 의해 자동생성이 가능하다. 또한, 드라이버 명세는 명세 역변환기를 통해 기존소스로부터 명세추출이 가능하다. 또한, 드라이버 명세는 수작업으로 텍스트 편집기를 이용하여 기술이 가능하다. 다음의 표 1은 본 발명의 명세언어 규칙에 따른 XML DTD를 기반의 드라이버 명세를 보여준다.
<? xml version ="1.0" encoding =" UTF -8"?> <! ELEMENT device - driver ( basic , device , bus , file - operations , advanced )> <! ELEMENT basic ( cpu , version , author , license )> ... <! ELEMENT device ( name , device - type , vendor - id , product - id , major , minor )> ... <! ELEMENT device - type ( dummy | char | block | network | input | sound - oss | sound - alsa | video - fb | video - v4l | serial | mmc | primitive )> ... <! ELEMENT bus ( nobus | platform | pci | usb | pcmcia )> ... <! ELEMENT file - operations ( prefix , function *)> ... <! ELEMENT advanced ( module - param ?, interrupt *, kernel - timer *, shared -workqueue*, tasklet *, kernel - thread *)> ...
이렇게 생성된 드라이버 명세는 명세 편집부(30)를 이용하여 편집(추가/수정/삭제)이 가능하다.
드라이버 명세에 대한 작성이 완료된 후에는 명세 번역부(50)를 거쳐 디바이스 드라이버의 소스코드가 자동생성된다. 명세 번역부(50)는 드라이버 명세를 소스코드로 변환하거나 소스코드로부터 드라이버 명세를 추출하며, 이를 위해 명세 변환기(미도시) 및 명세 역변환기(도시생략)를 포함한다. 보다 자세히 설명하면, 명세 번역부(50)는 드라이버 명세에 맞게 작성된 XML 파일 이름과 생성될 소스코드 파일의 이름을 입력받아 명세언어에 맞게 작성되었는지 확인 후 명세파일에 기반하여 소스 코드로 번역을 시도한다. 개발자는 실행 명령 입력부(40)에 구비된 메뉴 아이템, 툴바 버튼, 실행 버튼 등을 통해 원하는 시기에 드라이버 명세를 디바이스 드라이버 소스코드로 생성할 수가 있다. 즉, 실행 명령 입력부(40)를 통해 소스 코드 번역을 위한 실행명령을 입력받으면 명세 번역부(50)가 동작하게 되고, 드라이버 명세 파일이 입력으로, 디바이스 드라이버 소스코드 파일이 출력으로 하여, 번역이 배치 프로세스(Batch Process) 형태로 처리된다. 명세 번역부(50)에서 번역이 종료되면 디바이스 드라이버 소스코드가 생성되고, 이렇게 생성된 소스코드는 최종적으로 소스코드 저장부(60)에 저장된다. 이때, 명세 번역부(50)는 입력되는 드라이버 명세를 기반으로 Header, Device data structure, Declarations, Functions, Init, Exit, Epilogue 코드를 생성한다. 따라서, 개발자가 디바이스 드라이버에 필요한 인터페이스를 상관하지 않고, 작동방법에만 집중할 수 있도록 하여 생산성을 향상시킬 수 있게 된다.
이하에서는, 본 발명에서 정의되는 명세언어의 구조(Structure)를 설명하기로 한다.
본 발명에서 정의되는 명세언어는, (1)드라이버 기본정보(Basic), (2)디바이스 정보(Device), (3)파일 오퍼레이션 정보(File-operations), (4)버스 관련 오퍼레이션 정보(Bus), 및 (5)추가 기능 정보(Advanced)를 포함하여 드라이버 명세를 기술할 모델을 만든다.
(1)드라이버 기본정보(Basic) - 디바이스 드라이버 개발에 가장 기본적으로 사용되는 정보를 저장하는 부분으로 드라이버가 사용될 플랫폼의 아키텍처(CPU)정보, 적재될 커널(Kernel)의 정보, 라이센스 등의 정보를 포함하고 있다. 자세한 내용은 다음의 표 2와 같다.
XML Tag 설명
Basic 드라이버 기본 정보
Author 저자정보
Licence 라이센스 종류
CPU CPU 종류
Linux-version 리눅스 버전
(2)디바이스 정보(Device) - 디바이스 드라이버 개발에 가장 기본적으로 사용되는 정보를 저장하는 부분으로 디바이스(장치)의 이름, 디바이스 타입(Char, Block, Network, Dummy, Input, Touch, Keypad, Sound-OSS, Sound-ALSA, Video-FB, Video-V4L, Serial 등), 메이저/마이너 번호, 벤더/프로덕트 ID 등의 정보를 포함하고 있다. 벤더/프로덕트 ID를 알고 있다면 커널에 구애받지 않는 보다 완전한 코드생성이 가능하다. 자세한 내용은 다음의 표 3과 같다.
XML Tag 설명
Device 디바이스 드라이버 기본정보
Name 디바이스 이름
Device-type 디바이스 타입
Dummy 더미 디바이스
Char 문자 디바이스
Block 블록 디바이스
Hardsect-size 총 크기
Network 네트워크 디바이스
Network-type 유선/무선
Domain Specific Type Input 입력 디바이스
Touch 터치 디바이스
Keypad 키패드 디바이스
Sound-oss OSS 사운드 디바이스
Sound-oss-type dsp/midi/mixer
Sound-alsa ALSA 사운드 디바이스
Sound-alsa-type Pcm/midi
Video-fb 프레임버퍼 디바이스
Video-v4l V4L 디바이스
Storage Storage 디바이스
SD/MMC SD/MMC 디바이스
CF CF 디바이스
SCSI SCSI 디바이스
Serial Serial 디바이스
Primitive Primitive 디바이스
Vendor-id 업체 인식번호
Product-id 상품 인식번호
Major 주번호
Minor 부번호
(3)파일 오퍼레이션 정보(File Operations) - 디바이스 파일 오퍼레이션에 관한 정보를 저장하는 부분으로 운영체제에서 사용하는 인터페이스와 밀접한 연관이 있는 부분으로 함수의 이름이나 입출력 정보를 포함한다. 자세한 내용은 다음의 표 4와 같다.
XML Tag 설명
File-operations 디바이스 파일 오퍼레이션
Prefix 디바이스 파일 자료 구조를 위한 이름
Function* 파일 오퍼레이션
Name 파일 오퍼레이션 이름
Command* Ioctl 명령
Name Ioctl 명령 이름
Input/output* Ioctl 명령의인자(argument)
Name 인자 변수 이름
Type 인자 변수 타입
(4)버스 오퍼레이션 정보(Bus Operations) - 플랫폼(Platform), USB, PCI, PCMCIA, NoBUS 등과 같은 버스 오퍼레이션에 관한 정보를 저장하는 부분으로 파워 컨트롤, IRQ정보, 전송타입 등 각 버스의 고유 기능의 코드를 생성할 수 있다. 자세한 내용은 다음의 표 5와 같다.
XML Tag 설명
Bus-operations 버스 오퍼레이션
Nobus 분류되지 않은 버스 타입
Platform 플랫폼 버스
Power-control 전력관리 옵션을 사용하는지 여부
Shutdown Shutdown 옵션을 사용하는지 여부
PCI PCI 버스
Pci-power-control 전력관리 옵션을 사용하는지 여부
Pci-interrupt Pci 인터럽트를 사용하는지 여부
Master PCI 마스터 장치인지 여부
Pcmcia* PCMCIA
Power-mng 전력관리 옵션을 사용하는지 여부
Reset 리셋
Card 카드 리셋
Physical 물리적 리셋
Io-setup I/O 설정
Numports1 I/O 포트 번호
Attributes1 I/O 속성
Ioaddrlines I/O 주소 번지
Irq-setup 인터럽트 요청 설정
Attributes 인터럽트 요청 속성
Info1 추가 정보
Socket-config 통신용 소켓 설정
Vcc Virtual channel connection
Int-type memory, memory-io,or cardbus
Usb USB
Urb USB Request Block을 사용할지 여부
Transfer-type 네가지 파이프 전송 타입
Name 파이프 전송 타입
In 입력 전송
Out 출력 전송
usbclass USB Class 자료구조를 사용할지 여부
Name USB Class의 이름
Minor-base Minor base 번호
(5)부가정보(Advanced) - 기본정보와 파일/버스 오퍼레이션 이외의 모든 명세는 부가정보에서 명세된다. 커널 모듈 파라미터, 인터럽트 핸들링, 커널 타이머, 공유 워크큐, 태스클릿 등에 관한 정보를 포함한다. 자세한 내용은 다음의 표 6과 같다.
XML Tag 설명
Advanced 부가적인 명세
Module-param* 커널 모듈 파라미터 처리
Param* 파라미터
Name 파라미터 이름
Type 파라미터 타입
Num 파라미터 개수
Perm 파리미터 권한
Default 파라미터 기본값
Interrupt* 인터럽트
Interrupt-name 인터럽트 이름
Request-free-location 등록/해제 위치
Interrupt-prevention 인터럽트 핸들러 처리중 다른 인터럽트 처리를 금지할지 여부
Number 인터럽트 번호
Fast 빠른 인터럽트인지 여부
Shared 공유 인터럽트인지 여부
Random 난수 인터럽트인지 여부
Delayed-work* 인터럽트 핸들링 후 처리할 지연가능한 태스크 (tasklet,shared-workqueue or kernel-thread)
Kernel-timer* 커널 타이머
Name 이름
Time-step 타이머 시간
Periodic 반복적인지 여부
Tasklet* 태스클릿
Tasklet-name 태스클릿-이름
Shared-workque ue* 공유 워크큐
Shared-workqueue-name 공유 워크큐 이름
Kernel- thread 커널 쓰레드
Kthread-name 커널 쓰레드 이름
이하에서는 본 발명에 적용되는 명세편집부(30)의 구성을 설명하기로 한다. 도 2는 명세 편집부(30)의 구성을 설명하기 위해 도시한 도면이다.
명세편집부(30)는 오버뷰 페이지(Overview Page, 100), 파일 오퍼레이션 페이지(File Operation Page, 110), 버스 오퍼레이션 페이지(Bus Operation Page, 120), 비동기적 처리 페이지(Asynchronous Process Page, 130), 어드밴스드 페이지(Advanced Page, 140), 및 XML 페이지(150)를 포함한다. 상기한 바와 같은 구성에 의해, 명세편집부(30)는 드라이버 명세에서 명세 가능한 부분을 나타내므로 개발자가 원하는 방향으로 구성할 수 있다.
한편, 명세편집부(30)는 상기한 각 페이지로 명세 가능한 부분을 나타내 것에 국한되는 것은 않으며, 이외에 다이어그램 등을 통해서도 명세 가능한 부분을 나타낼 수 있음은 물론이다. 이는 명세편집부(30)에 이미 디바이스 드라이버 모델이 정의되어 있어 있기 때문에 가능하다.
오버뷰 페이지(Overview Page, 100)는 주로 XML로 작성된 드라이버 명세의 디바이스 정보(Device)를 편집하는 페이지이다. 오버뷰 페이지(100)는 디바이스 이름, 각종 ID, 디바이스/버스 타입 등을 명세하는 일반섹션(GeneralSection, 102), 디바이스 타입에 따라 추가 입력되어야 하는 정보를 명세하는 디바이스타입섹션(DeviceTypeSection, 104), 및 명세편집기에서 편집되는 모든 정보의 목차와 그들의 하이퍼링크를 가지고 있는 컨텐트섹션(ContentSection, 106)을 포함한다.
파일 오퍼레이션 페이지(File Operation Page, 110)는 디바이스 파일에 접근하는 오퍼레이션에 관한 정보를 편집하는 페이지이다. 파일 오퍼레이션 페이지(110)는 디바이스 파일을 위한 이름, 각 오퍼레이션 선택사항을 포함하는 파일오퍼레이션-섹션(FileOperation-Section, 112)과 ioctl의 명령어와 명령어의 아규먼트(Argument)를 편집할 수 있는 Ioctl섹션(IoctlSection, 114)을 포함한다.
버스 오퍼레이션 페이지(Bus Operation Page, 120)는 버스관련 정보를 편집하는 페이지이다. 버스 오퍼레이션 페이지(120)는 USB를 위해서는 URB(USB Request Block), usbclass 구조체, 전송 파이프 정보 등을, PCI를 위해서는 전력 관리사항을, PCMCIA를 위해서는 전력 관리, 카드/물리적 리셋, 소켓 타입(Memory, Memory I/O, or Cardbus) 등에 관한 정보를 편집할 수 있는 버스 섹션(Bus Section, 122)을 포함한다.
비동기적 처리 페이지(Asynchronous Process Page, 130)는 비동기적 처리 정보를 편집하는 페이지이다. 비동기적 처리 페이지(130)는 인터럽트 처리정보를 위한 인터럽트섹션(InterruptSection, 132), 각종 지연가능한 비동기처리를 다루는 지연기능섹션(DeferrableFunctions-Section, 134), 커널 타이머 정보 편집을 위한 커널타이머섹션(KernelTimerSection, 136)을 포함한다. 지연기능섹션(134)은 각종 지연가능한 비동기처리를 다루기 위해 태스클릿섹션(TaskletSection, 134a), 공유워크큐섹션(SharedWorkqueueSection, 134b), 및 커널쓰레드섹션(KernelThreadSection, 134c)을 포함한다.
어드밴스드 페이지(Advanced Page, 140)는 커널 모듈 파라미터 정보를 편집가능한 모듈파라미터섹션(ModuleParamterSection, 142)을 포함한다.
XML 페이지(150) 전술한 다른 페이지와 달리, XML을 위한 XML에디터(152)로 구성되어 있다. XML Tag을 위한 간단한 포맷팅(Format)과 구문별 색지원(Syntax Coloring)이 가능하다.
상술한 바와 같은 본 발명에 따르면 명세언어를 통해 스펙을 정의하고 이렇게 정의된 드라이버 모델을 통해 디바이스의 특징들을 알아내고 자세한 코드를 생성할 수 있게 할 수 있게 된다.
또한, 본 발명에 따르면 가능한 모든 도메인을 분석하는 기법을 사용하여 명세언어로 작성 가능한 드라이버를 정의하였다. 현재 정의된 도메인은 기본 드라이버 타입인 Dummy, Char, Block, Network과 도메인 분석을 통해 정의한 Input, Sound, Video, Storage, Serial, Primitive 등이 있다. 상기한 도메인 타입들은 대분류에 속하며 확장이 가능하고, 버스 타입에 구애받지 않는다.
한편, 본 특허를 통해 생성될 수 있는 디바이스의 종류(수)는 [디바이스 타입] * [버스타입] 이며 파일 오퍼레이션 정의, 버스 오퍼레이션 정의, 커널 API 사용(비동기적 처리 등), 어드밴스드 정의 등을 통해 코드를 생성할 수 있고, 사용자가 원하는 때에 코드를 삽입할 수도 있는 구조를 가지고 있다. 따라서, 자세한 명세를 통해 완전한 코드를 생성할 수 있는 구조를 가지고 있으며, 고려하지 못한 사항에 대해서는 어드밴스드 정의를 통해 확장이 가능하다.
이상 본 발명의 바람직한 실시예에 대하여 도시하고 설명하였지만, 본 발명은 상술한 특정의 실시예에 한정되지 아니하며, 청구범위에서 청구하는 본 명의 요지를 벗어남이 없이 당해 발명이 속하는 기술분야에서 통상의 지식을 가진자에 의해 다양한 변형실시가 가능한 것은 물론이고, 이러한 변형 실시예들은 본 발명의 기술적 사상이나 전망으로부터 개별적으로 이해되어져서는 안될 것이다.
도 1은 본 발명의 일실시예에 따른 디바이스 드라이버 소스코드 자동생성 장치를 설명하기 위한 블럭도이다.
도 2는 본 발명에 적용되는 명세편집부의 구성을 설명하기 위해 도시한 도면이다.
<도면의 주요 부분에 대한 부호의 설명>
10 : 드라이버 마법사 20 : 드라이버 명세 저장부
30 : 명세 편집부 40 : 실행 명령 입력부
50 : 명세 번역부 60 : 소스코드 저장부

Claims (11)

  1. 드라이버 기본 정보, 디바이스 정보, 파일 오퍼레이션 정보, 및 버스 관련 오퍼레이션 정보를 포함하는 디바이스 드라이버 명세언어로 기술된 디바이스 드라이버 명세가 저장되는 드라이버 명세 저장부;
    상기 디바이스 드라이버 명세를 편집할 수 있는 명세 편집부; 및
    상기 디바이스 드라이버 명세를 소스 코드로 번역하는 명세 번역부를 포함하는 것을 특징으로 하는 디바이스 드라이버 소스코드 자동생성 장치.
  2. 청구항 1에 있어서,
    상기 드라이버 기본 정보는,
    디바이스 드라이버가 사용될 플랫폼의 아키텍처 정보, 적재될 커널의 정보, 및 라이센스 정보 중 적어도 하나 이상의 정보를 포함하는 것을 특징으로 하는 디바이스 드라이버 소스코드 자동생성 장치.
  3. 청구항 1에 있어서,
    상기 디바이스 정보는,
    디바이스의 이름, 디바이스 타입, 메이저/마이너 번호, 및 벤더/프로덕트 ID 정보 중 적어도 하나 이상의 정보를 포함하는 것을 특징으로 하는 디바이스 드라이버 소스코드 자동생성 장치.
  4. 청구항 1에 있어서,
    상기 파일 오퍼레이션 정보는,
    디바이스 파일 오퍼레이션에 관한 정보를 저장하는 부분으로 운영체제에서 사용하는 인터페이스와 밀접한 연관이 있는 함수의 이름 및 입출력 정보 중 적어도 하나 이상의 정보를 포함하는 것을 특징으로 하는 디바이스 드라이버 소스코드 자동생성 장치.
  5. 청구항 1에 있어서,
    상기 버스 관련 오퍼레이션 정보는,
    버스 오퍼레이션에 관한 정보를 저장하는 부분으로 각 버스의 고유 기능의 코드를 생성하는 정보를 포함하는 것을 특징으로 하는 디바이스 드라이버 소스코드 자동생성 장치.
  6. 청구항 1에 있어서,
    상기 명세편집부는,
    디바이스 정보를 편집하는 오버뷰 페이지;
    파일 오퍼레이션 정보를 편집하는 파일 오퍼레이션 페이지;
    버스 관련 오퍼레이션 정보를 편집하는 버스 오퍼레이션 페이지;
    비동기적 처리 정보를 편집하는 비동기적 처리 페이지;
    커널 모듈 파라미터 정보를 편집하는 어드밴스드 페이지; 및
    상기 드라이버 명세를 직접 편집할 수 있는 XML 페이지를 포함하는 것을 특징으로 하는 디바이스 드라이버 소스코드 자동생성 장치.
  7. 청구항 6에 있어서,
    상기 오버뷰 페이지는,
    디바이스 이름, 각종 ID, 및 디바이스/버스 타입을 명세하는 일반섹션;
    디바이스 타입에 따라 추가 입력되어야 하는 정보를 명세하는 디바이스 타입섹션; 및
    상기 명세편집부에서 편집되는 모든 정보의 목차와 그것들의 하이퍼링크를 가지고 있는 컨텐트섹션을 포함하는 것을 특징으로 하는 디바이스 드라이버 소스코드 자동생성 장치.
  8. 청구항 6에 있어서,
    상기 파일 오퍼레이션 페이지는,
    디바이스 파일을 위한 이름 및 각 오퍼레이션 선택사항을 포함하는 파일오퍼레이션 섹션; 및
    ioctl의 명령어와 명령어의 아규먼트를 편집할 수 있는 Ioctl섹션을 포함하는 것을 특징으로 하는 디바이스 드라이버 소스코드 자동생성 장치.
  9. 청구항 6에 있어서,
    상기 버스 오퍼레이션 페이지는,
    USB를 위해서 URB, usbclass 구조체, 및 전송 파이프 정보를 편집하고, PCI를 위해서 전력 관리사항을 편집하고, PCMCIA를 위해서 전력 관리, 카드/물리적 리셋, 소켓 타입에 관한 정보를 편집하는 버스 섹션을 포함하는 것을 특징으로 하는 디바이스 드라이버 소스코드 자동생성 장치.
  10. 청구항 6에 있어서,
    상기 비동기적 처리 페이지는,
    인터럽트 처리정보를 위한 인터럽트섹션;
    각종 지연가능한 비동기처리를 수행하는 지연기능섹션; 및
    커널 타이머 정보 편집을 위한 커널타이머섹션을 포함하는 것을 특징으로 하는 디바이스 드라이버 소스코드 자동생성 장치.
  11. 청구항 6에 있어서,
    상기 어드밴스드 페이지는 커널 모듈 파라미터 정보를 편집가능한 모듈파라미터섹션을 포함하는 것을 특징으로 하는 디바이스 드라이버 소스코드 자동생성 장 치.
KR1020070132674A 2007-12-17 2007-12-17 디바이스 드라이버 소스코드 자동생성 장치 KR100935683B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020070132674A KR100935683B1 (ko) 2007-12-17 2007-12-17 디바이스 드라이버 소스코드 자동생성 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020070132674A KR100935683B1 (ko) 2007-12-17 2007-12-17 디바이스 드라이버 소스코드 자동생성 장치

Publications (2)

Publication Number Publication Date
KR20090065200A KR20090065200A (ko) 2009-06-22
KR100935683B1 true KR100935683B1 (ko) 2010-01-08

Family

ID=40993614

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070132674A KR100935683B1 (ko) 2007-12-17 2007-12-17 디바이스 드라이버 소스코드 자동생성 장치

Country Status (1)

Country Link
KR (1) KR100935683B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210045618A (ko) 2019-10-17 2021-04-27 대우조선해양 주식회사 신뢰성시험을 위한 코드 재 생성 플랫폼 및 이를 이용한 코드 재 생성 방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030037007A1 (en) * 1999-04-19 2003-02-20 Pitney Bowes Inc. Postage metering system having multiple postage meter configuration capability
JP2007079906A (ja) * 2005-09-14 2007-03-29 Hitachi Software Eng Co Ltd ソースコード生成装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030037007A1 (en) * 1999-04-19 2003-02-20 Pitney Bowes Inc. Postage metering system having multiple postage meter configuration capability
JP2007079906A (ja) * 2005-09-14 2007-03-29 Hitachi Software Eng Co Ltd ソースコード生成装置

Also Published As

Publication number Publication date
KR20090065200A (ko) 2009-06-22

Similar Documents

Publication Publication Date Title
US6857124B1 (en) Method and system for hypermedia browser API simulation to enable use of browser plug-ins and applets as embedded widgets in script-language-based interactive programs
RU2409844C2 (ru) Основанная на разметке расширяемость для интерфейсов пользователя
US7814157B2 (en) Hypermedia browser API simulation to enable use of browser plug-ins and applets as embedded widgets in script-language-based interactive programs
CA2451164A1 (en) Customizable components
WO2005086027A1 (en) Method, data processing device, computer program product and arrangement for processing electronic data
US9817811B2 (en) Web server system, dictionary system, dictionary call method, screen control display method, and demonstration application generation method
US7865481B2 (en) Changing documents to include changes made to schemas
US20060130048A1 (en) Shared schema for software user interface designers and developers
CN108829467B (zh) 第三方平台对接实现方法、装置、设备及存储介质
JPH11110194A (ja) 外部ライブラリ関数との結合方法ならびに同方法がプログラムされ記録される記録媒体
CN111068328A (zh) 游戏广告配置表格的生成方法、终端设备及介质
CN110109671B (zh) 一种webpack标签尺寸样式转换方法及装置
Madieu Linux Device Drivers Development: Develop Customized Drivers for Embedded Linux
CN113703862A (zh) 基于配置的接口调用方法、装置、设备及存储介质
CN112463662A (zh) 一种用户态控制i2c设备的方法与终端
US9021424B2 (en) Multi-document editor with code inlining
KR20120030522A (ko) 인쇄 장치 내에 런?타임 프로그래밍 코드를 도입하기 위한 시스템 및 방법
US20080163168A1 (en) Javascript pre-processing framework
CN114048415A (zh) 表单生成方法及装置、电子设备和计算机可读存储介质
Taylor et al. Software architecture
KR100935683B1 (ko) 디바이스 드라이버 소스코드 자동생성 장치
US9383972B2 (en) Methods and arrangements for processing and presentation of information
CN108399068B (zh) 函数程序持久化的方法、电子设备及存储介质
US20070220436A1 (en) Data templates in user interface elements
US20080306994A1 (en) Method and System for Processing User-Defined Object Based on Object Storage

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20121129

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20131128

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee