KR20190075508A - 가상화된 시스템 상에서 임베디드 소프트웨어를 자동으로 생성하는 방법 및 컴퓨팅 시스템 - Google Patents

가상화된 시스템 상에서 임베디드 소프트웨어를 자동으로 생성하는 방법 및 컴퓨팅 시스템 Download PDF

Info

Publication number
KR20190075508A
KR20190075508A KR1020170177147A KR20170177147A KR20190075508A KR 20190075508 A KR20190075508 A KR 20190075508A KR 1020170177147 A KR1020170177147 A KR 1020170177147A KR 20170177147 A KR20170177147 A KR 20170177147A KR 20190075508 A KR20190075508 A KR 20190075508A
Authority
KR
South Korea
Prior art keywords
source code
software
virtual
embedded software
tool
Prior art date
Application number
KR1020170177147A
Other languages
English (en)
Other versions
KR102054980B1 (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 KR1020170177147A priority Critical patent/KR102054980B1/ko
Priority to JP2018066786A priority patent/JP6603746B2/ja
Publication of KR20190075508A publication Critical patent/KR20190075508A/ko
Application granted granted Critical
Publication of KR102054980B1 publication Critical patent/KR102054980B1/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
    • G06F8/38Creation or generation of source code for implementing user interfaces

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

가상화된 시스템 상에서 임베디드 소프트웨어를 자동으로 생성하는 방법이 개시된다. 본 발명의 일 실시예에 따른 방법은 웹 기반으로 접속 가능한 클라우드 개발 환경 상에서 사용자가 소스 코드를 편집할 수 있는 사용자 인터페이스용 툴을 제공하는 단계; 제1 가상 시스템 상에서 상기 사용자 인터페이스용 툴을 이용하여 편집된 상기 소스 코드에 대한 시뮬레이션을 실행하고, 상기 소스 코드에 대한 상기 시뮬레이션 결과를 상기 사용자 인터페이스용 툴을 이용하여 상기 사용자에게 피드백하는 단계; 타겟 보드에서 임베디드 소프트웨어를 동작시키기 위한 운영 체제에 기반하여 미리 생성한 프리빌드 소프트웨어를 제2 가상 시스템 상에서 제공하는 단계; 및 상기 소스 코드를 상기 타겟 보드에 대하여 미리 생성한 상기 프리빌드 소프트웨어와 결합하여 상기 타겟 보드에서 실행할 수 있는 바이너리 결과물을 제2 가상 시스템 상에서 생성하는 단계를 포함한다.

Description

가상화된 시스템 상에서 임베디드 소프트웨어를 자동으로 생성하는 방법 및 컴퓨팅 시스템 {COMPUTING SYSTEM AND METHOD FOR AUTOMATICALLY GENERATING EMBEDDED SOFTWARE ON VIRTUALIZED SYSTEM}
본 발명은 임베디드 소프트웨어 및 임베디드 시스템에 관한 것으로, 구체적으로는 가상화된 시스템 상에서 임베디드 소프트웨어(임베디드 시스템에서 실행되는 소프트웨어)를 자동으로 생성할 수 있는 워크플로우 및 그 워크플로우가 실행되어 임베디드 소프트웨어를 자동으로 생성하는 컴퓨팅 시스템에 관한 것이다.
임베디드 시스템은 마이크로 프로세서 혹은 마이크로 컨트롤러를 내장(embedded)하여 원래 제작자가 지정한 기능만을 수행하는 장치를 의미하여, 일반적으로 보다 큰 시스템의 일부로서 특별한 업무를 수행하기 위한 하드웨어와 소프트웨어를 포함하고 있는 특정한 응용시스템을 말한다.
이러한 임베디드 시스템은 다양한 응용분야, 예를 들면 공장자동화, 가정자동화, 로봇제어, 공정제어를 포함하는 제어분야, 핸드폰, PDA, 스마트폰, LBS 등을 포함하는 단말기기 분야, 프린터, 인터넷 냉장고, 게임기, HDTV 등을 포함하는 정보가전기기 분야, 교환기, 라우터, 홈서버, 홈 게이트웨이 등을 포함하는 네트워크 기기 분야, 자동차의 ECU, 차량용 네비게이션, 차량용 부품 등의 동작의 제어를 포함하는 자동차 분야 등 다양하게 적용되고 있다.
전술한 바와 같은, 임베디드 시스템은 첨단 기술 발전과 함께 하드웨어 사양이 고성능화되어 가고 있다.
한편, 시장 경쟁력 확보를 위해 임베디드 시스템 제품들은 사용자 요구를 반영하여 제작되어야 하고 빠른 시간 안에 출시되어야 하는 데, 제품의 신속한 개발을 위해 임베디드 시스템 개발자는 설계 및 시험 도구를 사용한다.
그러나, 이러한 도구들은 하드웨어 부품의 개발 속도만큼 빠르게 발전하지 못했다. 이러한 속도 차이를 메우기 위해 타겟 시스템의 시뮬레이션 도구들을 사용하는 데, 타겟 플랫폼의 시뮬레이션 즉, 가상 플랫폼은 임베디드 소프트웨어 개발자들이 실물 하드웨어의 개발이 완료되기를 기다릴 필요없이 가상 플랫폼 상에서 그들의 소프트웨어를 분석하고 시험해 볼 수 있게 된다. 이러한 종래 시뮬레이션 시스템으로는 SimOS, SkyEye, QEMU, SID 등이 있다.
한편, 이러한 종래 임베디드 시스템 및 임베디드 시스템에서 실행되는 임베디드 소프트웨어를 개발하는 과정은 도 1과 같이 가상 개발 환경을 구축한 컴퓨팅 시스템 상에서 이루어질 수 있다. 또다른 종래 기술의 임베디드 소프트웨어 개발 과정은 도 2에서 도시하고 있는 것처럼 소프트웨어 개발을 위한 도구들의 집합인 Tool-chain을 타겟 보드에서 실행하기에(S230) 적합한 형태로 시뮬레이션하여(S210) 타겟 보드에서 실행될 수 있는 소스 코드로 빌드하는 과정(S220)을 포함하였다. 그러나 이러한 소스 코드의 빌드 과정(S220)은 Tool-chain의 변경(S210) 때마다 또는 타겟 보드마다 매번 새롭게 실행되어야 했고, 이 과정에서 생성되는 빌드의 결과물은 데이터의 크기가 방대하며 소스 코드의 빌드 과정에 장시간이 소요되어 디버깅이나 수정 시 신속한 대처가 이루어지기 어려운 문제점이 있었다.
한국공개특허 10-2011-0037140호 "임베디드 소프트웨어 가상 개발 환경을 제공하는 시스템" (공개일 2011년 4월 13일)
종래 개발 환경에서는 개발 환경 툴 체인(Tool-chain)을 구축하기 위해서는 개발자 각자가 구축을 위한 노하우를 확보해야 하는 문제점이 있었으며, 타겟 보드 별 임베디드 소프트웨어(바이너리 이미지)를 생성하기 위한 빌드에 평균적으로 수 시간 이상의 긴 시간이 소요되었다.
또한 종래 개발 환경에서는 타겟 보드 각각에 대하여 수십 기가바이트 이상의 하드 디스크 공간이 임베디드 소프트웨어를 생성하기 위하여 필요하였다.
종래 개발 환경에서는 팀 워크(Team work)를 통하여 임베디드 소프트웨어를 개발하는 경우 팀원 간의 빌드 파일 공유를 위하여 시간적-물리적 리소스를 필요로 하였다. 각 팀원의 컴퓨팅 시스템 각각에 개발 환경의 셋팅이 필요하였으며, 타겟 보드 별 빌드 파일들을 공유할 필요가 있었다. 빌드 파일을 공유하는 과정, 즉, 카피하는 데에만도 많은 시간과 용량이 필요하였다. 빌드 파일들을 공유하였더라도 각 컴퓨팅 시스템의 환경에 따라 정상적으로 작동하지 않을 가능성이 존재하였다. 즉, 의도하니 않은 오류로 인한 디버깅에 시간이 소요되었다.
본 발명은 상기의 종래 기술에서 나타난 문제점을 해결하기 위하여 도출된 것으로서, 개발 과정에서 개발자의 컴퓨팅 시스템의 리소스(하드 디스크, 및 메모리의 크기, 및 성능에 대한 의존도를 감소시키고, 타겟 보드 당 최종 결과물인 임베디드 소프트웨어의 빌드 시간을 큰 폭으로 감축하는 것을 목적으로 한다.
또한 본 발명은 클라우드 기반 통합 개발 환경을 제공하고, 브라우저 등 웹 기반의 사용자 인터페이스에서 개발할 수 있도록 구현되는 개발 시스템을 제공하는 것을 목적으로 한다.
또한 본 발명은 타겟 보드 별 결과물인 바이너리 이미지를 생성하고, 클라우드 기반 통합 개발 환경에서 이를 저장하고, 필요 시 개발자가 바이너리 이미지를 다운로드할 수 있는 클라우드 시스템을 제공하는 것을 목적으로 한다.
본 발명은 상기의 목적을 달성하기 위하여 도출된 구성으로서, 본 발명의 일 실시예에 따른 가상화된 시스템 상에서 임베디드 소프트웨어를 자동으로 생성하는 컴퓨팅 시스템은 적어도 하나 이상의 프로세서를 포함한다. 상기 적어도 하나 이상의 프로세서는 단독으로 또는 집합적으로 사용자가 소스 코드를 편집할 수 있는 사용자 인터페이스용 툴을 제공하고, 제1 가상 시스템 상에서 상기 사용자 인터페이스용 툴을 이용하여 편집된 상기 소스 코드에 대한 시뮬레이션을 실행하고, 상기 소스 코드에 대한 상기 시뮬레이션 결과를 상기 사용자 인터페이스용 툴을 이용하여 상기 사용자에게 피드백하고, 타겟 보드에서 임베디드 소프트웨어를 동작시키기 위한 운영 체제에 기반하여 미리 생성한 프리빌드 소프트웨어를 제2 가상 시스템 상에서 제공하고, 상기 소스 코드를 상기 타겟 보드에 대하여 미리 생성한 상기 프리빌드 소프트웨어와 결합하여 상기 타겟 보드에서 실행할 수 있는 바이너리 결과물을 생성한다.
이때 제1 가상 시스템은 사용자가 소스 코드를 시뮬레이션할 수 있도록 구현되는 가상 머신, 가상화된 시스템, 가상 시스템, 또는 가상화 소프트웨어를 의미할 수 있으며, 예를 들어 QEMU IDE 컨테이너의 형태를 빌릴 수 있다.
제2 가상 시스템은 각각의 타겟 보드를 위한 프리빌드 소프트웨어를 생성하기 위하여 구현되는 가상 머신, 가상화된 시스템, 가상 시스템, 또는 가상화 소프트웨어를 의미할 수 있다.
임베디드 소프트웨어는 타겟 보드에 실행하기 위한 최종적인 바이너리 파일의 결과물을 의미하며, 임베디드 소프트웨어가 타겟 보드에서 실행됨으로써 임베디드 시스템이 구현될 수 있다.
본 발명의 컴퓨팅 시스템의 프로세서는 상기 제1 가상 시스템과 상가 제2 가상 시스템을 동일한 호스트 운영 체제 시스템 계층 상에서 실행할 수 있다.
본 발명의 컴퓨팅 시스템의 프로세서는 상기 제2 가상 시스템 상에서 상기 프리빌드 소프트웨어를 생성하는 과정에서 활용된 개발 환경 정보를 상기 제1 가상 시스템 상에서 실행되는 시뮬레이션 과정에 공유할 수 있다.
본 발명의 컴퓨팅 시스템의 프로세서는 상기 제1 가상 시스템 상에서 상기 소스 코드에 대한 상기 시뮬레이션 과정에서 얻어지는 상기 소스 코드에 대한 활용 정보를 상기 제2 가상 시스템 상에서 상기 프리빌드 소프트웨어를 생성하는 과정에 공유할 수 있다.
본 발명의 컴퓨팅 시스템의 프로세서는 웹 기반으로 접속 가능한 클라우드 개발 환경 상에서 상기 사용자가 상기 소스 코드를 편집할 수 있도록 상기 사용자 인터페이스용 툴을 제공할 수 있다.
본 발명의 컴퓨팅 시스템의 프로세서는 상기 소스 코드에 대한 파일 시스템을 생성하고, 상기 클라우드 개발 환경 상에 상기 소스 코드에 대한 파일 시스템을 저장할 수 있다.
본 발명의 컴퓨팅 시스템의 프로세서는 상기 바이너리 결과물에 대한 파일 시스템을 생성하고, 상기 클라우드 개발 환경 상에 상기 바이너리 결과물에 대한 파일 시스템을 저장할 수 있다.
본 발명의 일 실시예에 따른 가상화된 시스템 상에서 임베디드 소프트웨어를 자동으로 생성하는 방법은 웹 기반으로 접속 가능한 클라우드 개발 환경 상에서 사용자가 소스 코드를 편집할 수 있는 사용자 인터페이스용 툴을 제공하는 단계; 제1 가상 시스템 상에서 상기 사용자 인터페이스용 툴을 이용하여 편집된 상기 소스 코드에 대한 시뮬레이션을 실행하고, 상기 소스 코드에 대한 상기 시뮬레이션 결과를 상기 사용자 인터페이스용 툴을 이용하여 상기 사용자에게 피드백하는 단계; 타겟 보드에서 임베디드 소프트웨어를 동작시키기 위한 운영 체제에 기반하여 미리 생성한 프리빌드 소프트웨어를 제2 가상 시스템 상에서 제공하는 단계; 및 상기 소스 코드를 상기 타겟 보드에 대하여 미리 생성한 상기 프리빌드 소프트웨어와 결합하여 상기 타겟 보드에서 실행할 수 있는 바이너리 결과물을 제2 가상 시스템 상에서 생성하는 단계를 포함한다. 본 발명의 가상화된 시스템 상에서 임베디드 소프트웨어를 자동으로 생성하는 방법은 상기 컴퓨팅 시스템의 상기 적어도 하나 이상의 프로세서 단독에 의하여 또는 상기 적어도 하나 이상의 프로세서의 집합으로 이루어진 클라우드 컴퓨팅 기법에 의하여 실행될 수 있다.
본 발명에 따르면, 개발 과정에서 개발자의 컴퓨팅 시스템의 리소스(하드 디스크, 및 메모리의 크기, 및 성능에 대한 의존도를 감소시키고, 타겟 보드 당 최종 결과물인 임베디드 소프트웨어의 빌드 시간을 큰 폭으로 감축할 수 있다.
본 발명에 따르면 클라우드 기반 통합 개발 환경을 제공하고, 브라우저 등 웹 기반의 사용자 인터페이스에서 개발할 수 있도록 구현되는 개발 시스템을 제공할 수 있다.
본 발명에 따르면 타겟 보드 별 결과물인 바이너리 이미지를 생성하고, 클라우드 기반 통합 개발 환경에서 이를 저장하고, 필요 시 개발자가 바이너리 이미지를 다운로드할 수 있는 클라우드 시스템을 제공할 수 있다.
도 1 및 도 2는 종래 기술의 임베디드 소프트웨어 개발 시스템의 개요를 도시하는 도면이다.
도 3은 본 발명의 일 실시예에 따른 가상화된 시스템 상에서 임베디드 소프트웨어를 자동으로 생성하는 클라우드 서비스 시스템 또는 클라우드 컴퓨팅 시스템을 도시하는 도면이다.
도 4는 본 발명의 일 실시예에 따른 가상화된 시스템 상에서 임베디드 소프트웨어를 자동으로 생성하는 클라우드 서비스 시스템 또는 클라우드 컴퓨팅 시스템을 이용한 소프트웨어 개발 프로세스 전반을 도시하는 도면이다.
도 5는 본 발명의 일 실시예에 따른 가상화된 시스템 상에서 임베디드 소프트웨어를 자동으로 생성하는 방법을 도시하는 동작 흐름도이다.
도 6은 본 발명의 일 실시예에 따른 가상화된 시스템 상에서 임베디드 소프트웨어를 자동으로 생성하는 방법을 도시하는 동작 흐름도이다.
상기 목적 외에 본 발명의 다른 목적 및 특징들은 첨부 도면을 참조한 실시예에 대한 설명을 통하여 명백히 드러나게 될 것이다.
본 발명의 바람직한 실시예를 첨부된 도면들을 참조하여 상세히 설명한다. 본 발명을 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명은 생략한다.
일반적으로 사용되는 "소스 코드"는 최종 결과물인 바이너리 결과물을 생성하기 위한 컴파일 과정을 거치기 전의 코드셋을 의미하는데, 수도코드(pseudo-code)에서부터 컴파일 직전 단계의 프로그램 코드까지 매우 넓은 범위를 의미한다. 본 명세서에서 언급되는 "소스 코드"는 특정한 의미로 제한되지 않으며 컴파일 직전 단계의 프로그램 코드만을 의미하는 데에 그치지 않고, 특히 목표 기능과 사양에 대한 체크 포인트만을 포함하는 경우, 즉, 개발자 입장에서 최종 결과물을 생성하기 위한 "소스"에 가까운 코드인 경우까지를 포함하는 개념으로 사용될 것이다.
이하에 도시되는 도 3 및 도 4의 클라우드 서비스 시스템은, 적어도 하나 이상의 서버 컴퓨팅 시스템을 포함하여 구성될 수 있다. 적어도 하나 이상의 서버 컴퓨팅 시스템은 각각 적어도 하나 이상의 프로세서를 포함할 수 있으며, 적어도 하나 이상의 프로세서는 단독으로 또는 집합적으로 본 발명의 특징인 제1 가상 시스템과 제2 가상 시스템을 생성하고 사용자 인터페이스용 툴, 프리빌드 소프트웨어, 및 임베디드 소프트웨어를 생성 및 제공할 수 있다.
이때 제1 가상 시스템은 사용자가 소스 코드를 시뮬레이션할 수 있도록 구현되는 가상 머신, 가상화된 시스템, 가상 시스템, 또는 가상화 소프트웨어를 의미할 수 있으며, 예를 들어 QEMU IDE 컨테이너의 형태를 빌릴 수 있다. 제1 가상 시스템은 클라우드 서비스 시스템 또는 클라우드 컴퓨팅 시스템 내에서 실행되는 시뮬레이터일 수 있으며, 시뮬레이터는 타겟 보드에서의 동작을 미리 시뮬레이션할 수 있는, 타겟 보드를 가상화한 소프트웨어를 의미한다.
제2 가상 시스템은 각각의 타겟 보드를 위한 프리빌드 소프트웨어를 생성하기 위하여 구현되는 가상 머신, 가상화된 시스템, 가상 시스템, 또는 가상화 소프트웨어를 의미할 수 있다.
임베디드 소프트웨어는 타겟 보드에 실행하기 위한 최종적인 바이너리 파일의 결과물을 의미하며, 임베디드 소프트웨어가 타겟 보드에서 실행됨으로써 임베디드 시스템이 구현될 수 있다.
도 3은 본 발명의 일 실시예에 따른 가상화된 시스템 상에서 임베디드 소프트웨어를 자동으로 생성하는 클라우드 서비스 시스템 또는 클라우드 컴퓨팅 시스템을 도시하는 도면이다.
도 3의 시스템(300)은 클라우드 서비스 시스템 또는 클라우드 컴퓨팅 시스템으로 이해될 수 있다. 시스템(300)은 적어도 하나 이상의 프로세서(도시되지 않음)을 포함한다. 적어도 하나 이상의 프로세서는 단독으로 또는 집합적으로 시스템(300) 내에서 이하의 동작을 실행하는 주체가 될 수 있다.
시스템(300)은 사용자가 소스 코드를 편집할 수 있는 사용자 인터페이스용 툴(340)을 제공하고, 제1 가상 시스템(331) 상에서 상기 사용자 인터페이스용 툴(340)을 이용하여 편집된 상기 소스 코드에 대한 시뮬레이션을 실행하고, 상기 소스 코드에 대한 상기 시뮬레이션 결과를 상기 사용자 인터페이스용 툴을 이용하여 상기 사용자에게 피드백할 수 있다.
시스템(300)은 제1 타겟 보드에서 임베디드 소프트웨어를 동작시키기 위한 운영 체제에 기반하여 미리 생성한 제1 프리빌드 소프트웨어를 제2 가상 시스템(332) 상에서 제공하고, 제2 타겟 보드에서 임베디드 소프트웨어를 동작시키기 위한 운영 체제에 기반하여 미리 생성한 제2 프리빌드 소프트웨어를 제3 가상 시스템(333) 상에서 제공할 수 있다.
시스템(300)은 상기 소스 코드를 상기 제1 타겟 보드에 대하여 미리 생성한 상기 제1 프리빌드 소프트웨어와 결합하여 상기 제1 타겟 보드에서 실행할 수 있는 제1 바이너리 결과물을 상기 제2 가상 시스템(332) 상에서 생성할 수 있고, 상기 소스 코드를 상기 제2 타겟 보드에 대하여 미리 생성한 상기 제2 프리빌드 소프트웨어와 결합하여 상기 제2 타겟 보드에서 실행할 수 있는 제2 바이너리 결과물을 상기 제3 가상 시스템(333) 상에서 생성할 수 있다.
사용자는 사용자 인터페이스용 툴(340)을 이용하여 소스코드를 작성하여 어플리케이션을 개발할 수 있다(S311). 이를 위하여 시스템(300)은 사용자 인터페이스용 툴(340)을 또 하나의 가상 시스템으로 구현하여 사용자에게 제공할 수 있다. 사용자 인터페이스용 툴(340)은 사용자의 컴퓨팅 시스템에 표시되어 사용자에게 제공되며 사용자 인터페이스용 툴(340)에서 이루어지는 연산 및 정보 처리는 시스템(300)에서 실행된다. 물론 실시예에 따라서는 사용자가 시스템(300)을 직접 사용하며 어플리케이션을 개발할 수도 있다(S311). 이 때에는 사용자의 컴퓨팅 시스템이 곧 시스템(300)과 일치할 것이다.
사용자 인터페이스용 툴(340)을 경유하여 입력된 사용자의 전송 명령에 의하여, 시스템(300)은 사용자에 의하여 사용자 인터페이스용 툴(340)을 이용하여 개발된 어플리케이션(소스코드)를 타겟 보드용으로 프리빌드된 프리빌드 소프트웨어를 제공할 수 있는 가상 시스템(332, 333)으로 전송 및 공유할 수 있다(S313).
제2 가상 시스템(332)은 제1 타겟 보드용의 제1 임베디드 소프트웨어의 최종 결과물을 생성하고(S314), 제1 임베디드 소프트웨어의 최종 결과물인 제1 바이너리 결과물(제1 바이너리 이미지)을 시스템(300) 내의 제2 파일 시스템(342)으로 전송할 수 있다(S315). 마찬가지로 제3 가상 시스템(333)은 제2 타겟 보드용의 제2 임베디드 소프트웨어의 최종 결과물을 생성하고(S314), 제2 임베디드 소프트웨어의 최종 결과물인 제2 바이너리 결과물(제2 바이너리 이미지)을 시스템(300) 내의 제2 파일 시스템(342)으로 전송할 수 있다(S315). 제2 파일 시스템(342)은 복수의 타겟 보드에 대응하는 임베디드 소프트웨어의 최종 결과물들인 제1 바이너리 결과물 및/또는 제2 바이너리 결과물을 저장할 수 있다.
한편 시스템(300) 상의 제1 파일 시스템(341)은 사용자 인터페이스용 툴(340) 내에서 빌드된 어플리케이션 개발을 위한 소스 코드 앱(App1, App2, ... , ApppN)을 저장할 수 있다. 이때 도 3에 도시되지는 않았으나 사용자 인터페이스용 툴(340)에서 개발된 소스 코드가 제2 가상 시스템(332) 및 제3 가상 시스템(333)에 전송되기 전, 제2 가상 시스템(332) 및 제3 가상 시스템(333) 각각에서 제1 프리빌드 소프트웨어 및 제2 프리빌드 소프트웨어가 프리빌드될 수 있다. 이때 프리빌드 소프트웨어는 타겟 보드에서 동작되는 어플리케이션을 제외하고, 타겟 보드와 연관된 운영 체제 등의 정보를 포함하여 미리 생성되는 유사-바이너리 이미지 형태의 정보를 의미할 수 있다.
이때 제1 프리빌드 소프트웨어는 제2 가상 시스템(332) 상에서 소스 코드와 결합되기 전에 프리빌드되면 충분하므로, 제1 프리빌드 소프트웨어의 프리빌드 과정은 사용자가 사용자 인터페이스용 툴(340)을 이용하여 어플리케이션을 개발하는 동안(S311) 백드라운드에서 병렬적으로 실행될 수도 있고, 사용자가 어플리케이션을 개발하기 전 미리 실행될 수도 있다.
본 발명에 따르면, 예를 들어 제1 타겟 보드를 위한 제1 프리빌드 소프트웨어와 제2 타겟 보드를 위한 제2 프리빌드 소프트웨어가 이미 생성되어 있으므로 사용자는 제1 타겟 보드 및 제2 타겟 보드에 공통적으로 적용될 어플리케이션을 개발하는(S311) 과정에 수 초에서 수 분 정도의 시간을 소요하였다면 제2 가상 시스템(332)과 제3 가상 시스템(333) 각각에서 어플리케이션 소스 코드를 제1 프리빌드 소프트웨어 및 제2 프리빌드 소프트웨어 각각과 결합하여 컴파일함으로써 최종적으로 제1 바이너리 결과물과 제2 바이너리 결과물을 얻는 데까지 걸리는 시간은 컴파일에 걸리는 수 초에서 수 분 정도의 시간으로 충분하다. 이후 각각의 타겟 보드에서 실행할 목표 기능을 수정하기로 하고 어플리케이션을 수정하는 경우에도 어플리케이션 개발에 소요되는 시간 및 최종 결과물의 컴파일 시간만으로 수정된 목표 기능을 충족하는 수정된 최종 결과물을 얻을 수 있다.
종래에는 이러한 목표 기능의 수정 시마다, 목표 기능의 수정 후 새로 타겟 보드 각각에 대한 최종 결과물을 빌드하는 데에 평균적으로 수 시간 이상의 긴 시간이 소요되었으므로 본 발명에 따르면 다수의 타겟 보드에 대해서 동시에 어플리케이션을 개발하여 적용하는 경우에도 임베디드 소프트웨어의 개발 시간을 획기적으로 단축할 수 있다. 또한 본 발명에 따르면 다수의 타겟 보드 각각에 대한 임베디드 소프트웨어 각각의 생성 과정이 병렬적으로 이루어질 수도 있으므로 개발자는 자신의 어플리케이션 개발 과정에서 도출된 최종 결과물을 타겟 보드에서 신속하게 확인해 볼 수 있어 디버깅 시간과 전체 개발 프로세스를 매우 획기적으로 단축할 수 있는 효과가 있다.
시스템(300)은 웹 기반으로 접속 가능한 클라우드 개발 환경 상에서 상기 사용자가 상기 소스 코드를 편집할 수 있도록 상기 사용자 인터페이스용 툴(340)을 제공할 수 있다.
시스템(300)은 소스 코드에 대한 제1 파일 시스템(341)을 생성하고, 상기 클라우드 개발 환경 상에 소스 코드에 대한 제1 파일 시스템(314)을 저장할 수 있다.
시스템(300)은 바이너리 결과물에 대한 제2 파일 시스템(342)을 생성하고, 상기 클라우드 개발 환경 상에 바이너리 결과물에 대한 제2 파일 시스템(342)을 저장할 수 있다.
도 3에서 프리빌드 소프트웨어를 생성하는 두 개의 가상 시스템들(332, 333)이 도시되었으나, 프리빌드 소프트웨어를 생성하는 가상 시스템은 타겟 보드마다 제공될 수 있으므로 가상 시스템의 수는 타겟 보드의 수에 따라 달라질 수 있다. 도 3의 실시예에 의하여 본 발명의 사상이 제한적으로 해석되어서는 아니 된다.
시스템(300) 내의 제1 파일 시스템(341) 및 제2 파일 시스템(342)은 호스트의 파일 시스템을 의미할 수 있다. 모든 컨테이너(가상 시스템)이 동일한 파일 시스템 공간을 공유할 수도 있고, 다른 공간으로 분리하여 소스 코드 및 결과물을 전송할 수도 있다. 도 3에서는 어플리케이션 개발을 위한 소스 코드를 저장하는 제1 파일 시스템(341)과 최종 바이너리 결과물(바이너리 이미지)을 저장하는 제2 파일 시스템(342)이 구분되는 것으로 도시되어 가상 시스템 상에서 생성된 바이너리 결과물들이 제2 파일 시스템(342)으로 전송되는 것으로 도시되었다. 이러한 전송은 논리적으로 설정된 가상의 시스템 상에서 역시 논리적으로 설정된 파일 시스템 상으로의 전송일 뿐, 반드시 물리적으로 정보를 전송하고 수신하는 과정을 동반하는 것은 아님은 당업자라면 자명하게 이해할 것이다.
시스템(300) 내의 제1 가상 시스템(331)은 사용자 인터페이스용 툴(340)과 연동하여 사용자의 개발 과정에서 필요한 소스 코드의 시뮬레이션을 실행한다. 제1 가상 시스템(331)은 사용자 앱 컨테이너, 또는 사용자 인터페이스용 툴(340)이 실행되는 컨테이너일 수 있다. 이때 제1 가상 시스템(331)과 제2 가상 시스템(332)은 동일한 호스트 운영 체제(360)의 계층 상에서 실행된다. 마찬가지로 제1 가상 시스템(331)과 제3 가상 시스템(333)도 동일한 호스트 운영 체제(360)의 계층 상에서 실행된다. 호스트 운영 체제(360)는 복수의 가상 시스템들을 생성하고 관리하기 위하여 컨테이너 엔진(350)을 생성하고 컨테이너 엔진(350) 상에서 복수의 가상 시스템들을 생성 및 관리할 수 있다.
제1 가상 시스템(331)이 제공하는 개발 환경과 제2 가상 시스템(332)(프리빌드 소프트웨어가 제공되고 프리빌드 소프트웨어와 소스 코드가 결합되는 컨테이너)이 동일한 호스트 운영 체제(360) 상에서 실행되기 때문에, 제1 가상 시스템(331)과 제2 가상 시스템(332)이 제공하는 개발 환경이 상당 부분 공유되므로, 사용자가 소스 코드를 수정하더라도 제2 가상 시스템(332)에서 프리빌드 소프트웨어한 코드 셋의 수정 없이 곧바로 컴파일이 가능하다.
시스템(300)은 제2 가상 시스템(332) 상에서 제1 프리빌드 소프트웨어를 생성하는 과정에서 활용된 개발 환경 정보를 제1 가상 시스템(331) 상에서 실행되는 시뮬레이션 과정에 공유할 수 있다.
제2 가상 시스템(332) 상에서 제1 프리빌드 소프트웨어를 생성하는 과정에서 활용된 정보가 제1 가상 시스템(331) 상에서 시뮬레이션 과정에서 그대로 활용 및/또는 공유되어 시뮬레이션 과정을 거친 소스 코드와 제1 프리빌드 소프트웨어의 결합 과정이 용이하며, 소스 코드와 제1 프리빌드 소프트웨어 간의 결합 시 간단한 컴파일 과정만으로도 최종적인 제1 바이너리 결과물(제1 임베디드 소프트웨어)을 생성할 수 있다.
이로 인하여 본 발명은 종래 기술 대비 임베디드 소프트웨어 개발 및 생성에 소요되는 시간을 단축할 수 있다. 종래 기술에서 소스 코드를 타겟 보드에서 실행하기 위한 최종 바이너리 파일로 빌드하는 데에 오랜 시간이 걸렸던 이유는 매번 툴 체인(커스텀화된 기능과 목표 사양 등을 기술하는 디스크립션)과 타겟 보드의 환경 정보, 운영 체제 정보 등을 결합하여 소스 코드 자체를 새롭게 빌드해야 했기 때문이다. 툴 체인은 한편으로는 타겟 보드용 이미지를 빌드하기 위한 개발 도구 및 소프트웨어의 집합을 의미할 수도 있다. 본 발명은 타겟 보드에 적용될 개발 환경, 운영 체제에 관한 주요 정보가 포함된 코드셋을 프리빌드함으로써 프리빌드 소프트웨어라 명명된 형태로 제공하고, 프리빌드 소프트웨어를 생성할 때 사용된 개발 환경 및 운영 체제에 관한 정보를 소스 코드의 시뮬레이션 상에서 활용한다. 소스 코드의 시뮬레이션은 소스 코드의 기능이 사용자가 목표한 사양에 부합하는 지를 체크하는 과정으로 타겟 보드에 완전히 종속적이지는 않으며 논리 기반의 시뮬레이션이기 때문에 빠르게 실행 및 검증될 수 있다. 즉, 프리빌드 소프트웨어를 프리빌드/생성하는 과정에서 사용된 정보를 동일한 운영 체제 상의 제1 가상 시스템(331)(사용자 앱 컨테이너)에서 시뮬레이션 시 미리 체크해 볼 수 있기 때문에 소스 코드와 프리빌드 소프트웨어 간의 결합이 용이하다. 또한 소스 코드의 시뮬레이션 시 부담이 되는 요소는 선택적으로 배제되어 소스 코드의 시뮬레이션 시간/비용이 타겟 보드와의 적합성 검증으로 인하여 증가하는 것을 방지할 수 있다.
이로써 시뮬레이션 및 피드백에 의한 검증을 거친 소스 코드가 프리빌드 소프트웨어와 결합되면 간단한 컴파일 과정에 의하여 바이너리 결과물(임베디드 소프트웨어)을 얻을 수 있다.
시스템(300)은 제1 가상 시스템(331) 상에서 상기 소스 코드에 대한 상기 시뮬레이션 과정에서 얻어지는 상기 소스 코드에 대한 활용 정보를 제2 가상 시스템(332) 상에서 제1 프리빌드 소프트웨어를 생성하는 과정에 공유할 수 있다.
클라우드 서비스 시스템과 연동되는 개발 환경을 제공하는 경우에 클라우드 시스템 내의 프리빌드 소프트웨어의 파일 시스템(예를 들어 바이너리 이미지와 같은 형태로 구현될 수 있다.)과 바이너리 결과물의 파일 시스템이 변경되면 클라우드 전체에서 공유할 수 있도록 업데이트될 수 있다. 이때 클라우드 시스템 내에 분산되어 저장된 파일 시스템 간의 불일치가 체크되고 동일한 소프트웨어 콘텐츠에 대한 모든 파일 시스템이 동기화될 수 있다.
동일 소프트웨어 콘텐츠에 대한 모든 파일 시스템의 동기화와는 별개로, 프리빌드 소프트웨어의 콘텐츠가 업데이트될 수 있다. 일반적으로 상위 계층의 어플리케이션 소프트웨어 및 소스 코드가 변동한다고 해서 어플라이언스와 유사한 역할을 가지는 프리빌드 소프트웨어가 반드시 다시 빌드되어야 하는 것은 아니다. 본 발명의 프리빌드 소프트웨어는 소스 코드의 변동에도 불구하고 소스 코드와 용이하게 결합하여 임베디드 소프트웨어를 생성할 것을 요건으로 한다. 한편으로 실시예에 따라서는 타겟 보드 및 타겟 보드에서 실행되어야 하는 운영 체제에 기반하여 프리빌드 소프트웨어가 업데이트되거나 다시 프리빌드될 수 있다. 이때 프리빌드 소프트웨어는 소스 코드와 타겟 보드 간의 관련성, 타겟 보드에서 소스 코드의 활용 정보, 타겟 보드에서 활용되는 소스 코드의 주요 기능 등에 대한 정보에 기반하여 효율적으로 소스 코드와 결합될 수 있도록 미리 생성되거나 미리 업데이트될 수 있다.
이때 제1 가상 시스템(331) 상에서 소스 코드에 대한 상기 시뮬레이션 과정에서 얻어지는 소스 코드에 대한 활용 정보가 제2 가상 시스템(332) 상에서 상기 프리빌드 소프트웨어를 생성하는 과정에 공유됨으로써 제2 가상 시스템(332)에서 다음 버전의 프리빌드 소프트웨어를 생성할 때 사용자의 목표 기능에 더욱 부합할 수 있는 프리빌드 소프트웨어가 생성될 수 있다. 이러한 공유 또한 제1 가상 시스템(331)과 제2 가상 시스템(332)이 동일한 호스트 운영 체제 상에서 실행되기 때문에 가능하다. 제1 가상 시스템(331)에서 사용자들이 소스 코드를 시뮬레이션하고 검증하는 데에 이용된 정보, 즉, 목적 기능에 대한 요구, 소스 코드의 검증 패턴, 소스 코드를 활용하고자 하는 목적 등 활용 정보 등은 누적되어 프리빌드 소프트웨어의 개선에 이용될 수 있다.
이상의 사항은 제1 타겟 보드를 위한 제1 임베디드 소프트웨어를 생성하는 과정에 대하여 주로 설명되었으나, 다른 타겟 보드, 예를 들어 제2 타겟 보드를 위한 제2 임베디드 소프트웨어를 생성하는 과정에 대해서도 공통적으로 적용될 수 있다. 즉, 제1 가상 시스템(331)과 제3 가상 시스템(333)이 동일한 호스트 운영 체제(460) 상에서 실행되므로 제1 가상 시스템(331)과 제3 가상 시스템(333)의 개발 과정에서의 정보 공유가 가능하며, 이로 인하여 제2 프리빌드 소프트웨어의 프리빌드 과정 및 제2 타겟 보드에 대한 소스 코드의 어플리케이션 시뮬레이션 과정이 개선될 수 있다.
도 4는 본 발명의 일 실시예에 따른 가상화된 시스템 상에서 임베디드 소프트웨어를 자동으로 생성하는 클라우드 서비스 시스템 또는 클라우드 컴퓨팅 시스템을 이용한 소프트웨어 개발 프로세스 전반을 도시하는 도면이다.
도 4의 시스템(400)은 도 3의 시스템(300)과 마찬가지로 클라우드 서비스 시스템 또는 클라우드 컴퓨팅 시스템일 수 있으며, 적어도 하나 이상의 프로세서를 포함할 수 있고, 이하의 시스템(400)의 동작은 시스템(400) 내의 적어도 하나 이상의 프로세서의 단독 또는 집합적 동작에 의하여 실행될 수 있다.
도 3과 도 4에 공통적인 구성요소에 대한 중복되는 설명은 생략한다. 예를 들어 도 4의 제1 파일 시스템(441), 제2 파일 시스템(442)은 도 3의 제1 파일 시스템(331), 제2 파일 시스템(332)와 동일하고, 도 4의 사용자 인터페이스용 툴(440)은 도 3의 사용자 인터페이스용 툴(340)과 동일하다. 도 4의 제1 가상 시스템(431), 제2 가상 시스템(432), 제3 가상 시스템(433), 컨테이너 엔진(450), 및 호스트 운영 체제(460)는 도 3의 제1 가상 시스템(331), 제2 가상 시스템(332), 제3 가상 시스템(333), 컨테이너 엔진(350), 및 호스트 운영 체제(360)와 동일하다.
사용자는 웹 브라우저를 통해서 시스템(400)에 접속할 수 있다(S410). 이때 사용자에게 실제로 시뮬레이션 환경을 제공하는 것은 제1 가상 시스템(431)인데, 제1 가상 시스템(431)은 예를 들어 IDE 컨테이너의 형태로 구현될 수 있다. 이때 제1 가상 시스템(431)의 구현을 위하여 IDE 컨테이너의 형태를 취할 수 있는 것일 뿐, 종래의 IDE 컨테이너에서 제공하지 않는 제2 가상 시스템(432)과의 정보 공유 및 환경 공유 등은 본 발명의 고유한 특징임을 당업자라면 자명하게 이해할 것이다.
또한 도 4의 제1 가상 시스템(431)이 지원하는 시뮬레이터는 공지의 QEMU 시뮬레이터의 형태로 제공될 수 있다. 다만 QEMU 시뮬레이터는 사용자와의 인터페이스와 시뮬레이션을 위한 기본적인 설정에 대한 구성요소로서 본 발명의 구성의 일부로서 포함될 뿐, 본 발명의 제1 가상 시스템(431)이 가지는 고유한 특징 예를 들어 제2 가상 시스템(432)과의 정보 공유 및 환경 공유를 통한 프리빌드 소프트웨어의 성능 개선, 및 소스 코드의 시뮬레이션 과정의 개선은 공지의 QEMU 시뮬레이터만을 이용하였다고 하여 달성할 수 있는 특징이 아님은 당업자에게 자명하게 이해될 것이다.
또한 QEMU 시뮬레이터는 IDE 컨테이너라는 수단을 활용하여 제공될 수 있는데, QEMU 시뮬레이터는 IDE 컨테이너와 반드시 함께 포함되어야 하는 것은 아니며, QEMU 시뮬레이터와 IDE 컨테이너가 논리적으로 분리된 상태로 구현될 수도 있음 역시 당업자에게 자명하게 이해될 것이다. 이러한 실시예에 의하여 본 발명의 사상이 제한적으로 이해되어서는 아니 된다.
사용자는 상기 접속(S410) 후 사용자 인터페이스용 툴(440)을 이용하여 소스 코드를 작성하여 어플리케이션을 개발할 수 있다(S411). 이때 시스템(400)은 사용자 인터페이스용 툴(440) 및 제1 가상 시스템(431)을 생성하고 사용자에게 제공하여 사용자의 어플리케이션 개발 과정(S411)을 지원한다.
시스템(400)은 개발된 어플리케이션(소스코드)를 타겟 보드용으로 프리빌드 된 프리빌드 소프트웨어를 제공할 수 있는 컨테이너들(432, 433)에 전송(공유)할 수 있다(S413a, S413b). 즉, 동일한 소스 코드를 제1 타겟 보드를 위한 제2 가상 시스템(432)에 전송(S413a)할 수 있고, 제2 타겟 보드를 위한 제3 가상 시스템(433)에 전송(S413b)할 수 있다. 제1 타겟 보드는 A사의 제품이고 제2 타겟 보드는 B사의 제품이라면 동일한 소스 코드라 하더라도 타겟 보드의 운영 체제에 따라서 바이너리 결과물은 달라질 수 있음은 당업자에게 자명하게 이해될 것이다.
시스템(400)은 제1 타겟 보드를 위한 제1 바이너리 결과물을 제2 가상 시스템(432) 상에서 생성하고, 제2 파일 시스템(442)으로 제1 바이너리 결과물을 전송할 수 있다(S415a). 마찬가지로 시스템(400)은 제2 타겟 보드를 위한 제2 바이너리 결과물을 제3 가상 시스템(433) 상에서 생성하고, 제2 파일 시스템(442)으로 제2 바이너리 결과물을 전송할 수 있다(S415b).
사용자는 최종적으로 빌드가 완료된 바이너리 결과물을 각각의 다운로드 하여 각각의 타겟보드에서 실행시킬 수 있다(S416a, S416b). 이때 시스템(400)은 제1 바이너리 결과물을 제1 타겟 보드에서 실행할 수 있도록 전송할 수 있고(S416a), 제2 바이너리 결과물을 제2 타겟 보드에서 실행할 수 있도록 전송할 수 있다(S416b). 도 4에서는 단계 S416a와 S416b를 "전송"이라는 표현을 이용하여 기술하였으나, 이는 하나의 실시예에 불과할 뿐, 본 발명의 사상이 이에 국한되어 이해되어서는 안 된다. 도 4에서 단계 S416a와 S416b를 통하여 도시하고자 하는 사항은 다음의 기술 사상의 일부를 반영하여 표현된다. 클라우드 또는 스탠드 얼론 시스템에서 본 발명의 동작이 실행되는 경우 바이너리 결과물은 사용자가 접속한(S410) 컴퓨팅 시스템을 통하여 다운로드되어야 하며, 실행을 위하여 사용자가 접속한(S410) 컴퓨팅 시스템을 통하여 또는 다른 기록 매체(예를 들어, USB 메모리, 포터블 하드 디스크, SSD 드라이브 등)를 통하여 타겟 보드에 이미지 라이팅되는 과정을 필요로 한다.
본 발명에 따르면 타겟 보드 각각에서 실행을 위한 임베디드 소프트웨어의 최종 결과물을 빌드하는 데에 소요되는 시간을 단축할 수 있으므로 사용자는 사용자 인터페이스용 툴(440) 및 제1 가상 시스템(431) 내의 시뮬레이터에서 다양한 툴 체인을 시험해 볼 수 있으며, 이로 인하여 툴 체인을 간편하게 구축할 수 있다.
본 발명에 따르면, 사용자는 클라우드 개발 환경을 이용하는 경우 사용자의 컴퓨팅 시스템의 리소스를 불필요하게 사용하지 않고도 편리하게 어플리케이션을 개발할 수 있다.
본 발명에 따르면, 사용자가 팀 워크에 의하여 임베디드 소프트웨어를 개발하는 경우에도 팀원 간의 빌드 파일을 서로 공유하는 과정에서 파일 복제가 아닌 링크 공유를 이용함으로써 시간 및 리소스를 절약할 수 있다.
본 발명에 따르면, 다수의 팀원이 동일한 클라우드 개발 환경 내에서 개발을 진행하는 경우에 모든 팀원의 개발 환경 구성이 동일할 것이므로 다른 팀원의 모든 빌드 파일들이 서로의 시뮬레이터에서 시뮬레이션 가능하며 서로의 환경에서 실행 가능하다. 또한 팀원 A에 의한 시뮬레이션 및 실행의 결과와 팀원 B에 의한 시뮬레이션 및 실행의 결과가 동일할 것이므로 에러 발생 확률을 감소시키고 디버깅에 투입되는 시간과 리소스를 절약할 수 있다.
도 5는 본 발명의 일 실시예에 따른 가상화된 시스템 상에서 임베디드 소프트웨어를 자동으로 생성하는 방법을 도시하는 동작 흐름도이다. 도 5의 방법은 시스템(300, 400) 내의 적어도 하나 이상의 프로세서에 의하여 단독으로 또는 집합적으로 실행될 수 있다.
시스템(300, 400)은 웹 기반으로 접속 가능한 클라우드 개발 환경 상에서 사용자가 소스 코드를 편집할 수 있는 사용자 인터페이스용 툴(340, 440)을 제공한다(S510).
시스템(300, 400)은 제1 가상 시스템(331, 431) 상에서 상기 사용자 인터페이스용 툴(340, 440)을 이용하여 편집된 상기 소스 코드에 대한 시뮬레이션을 실행하고(S520), 시스템(300, 400)은 상기 소스 코드에 대한 상기 시뮬레이션 결과를 상기 사용자 인터페이스용 툴(340, 440)을 이용하여 상기 사용자에게 피드백한다(S530).
시스템(300, 400)은 타겟 보드에서 임베디드 소프트웨어를 동작시키기 위한 운영 체제에 기반하여 미리 생성한 프리빌드 소프트웨어를 제2 가상 시스템(332, 432) 또는 제3 가상 시스템(333, 433) 상에서 제공할 수 있다(S540).
시스템(300, 400)은 상기 소스 코드를 상기 타겟 보드에 대하여 미리 생성한 프리빌드 소프트웨어와 결합하여 상기 타겟 보드에서 실행할 수 있는 바이너리 결과물을 제2 가상 시스템(332, 432) 또는 제3 가상 시스템(333, 433) 상에서 생성할 수 있다(S550).
도 6은 본 발명의 일 실시예에 따른 가상화된 시스템 상에서 임베디드 소프트웨어를 자동으로 생성하는 방법을 도시하는 동작 흐름도이다. 도 6의 방법은 시스템(300, 400) 내의 적어도 하나 이상의 프로세서에 의하여 단독으로 또는 집합적으로 실행될 수 있다.
도 6에 도시된 단계들 중 단계(S610, S620, S630, S640, 및 S650)는 도 5에 도시된 단계들(S510, S520, S530, S540, 및 S550)과 유사하므로 중복되는 설명은 생략한다.
시스템(300, 400)은 타겟 보드를 위한 프리빌드 소프트웨어를 제2 가상 시스템(331, 431) 또는 제3 가상 시스템(332, 432) 상에서 생성할 수 있다(S612). 이때 사용자 인터페이스용 툴(340, 440)에서 개발된 소스 코드가 제2 가상 시스템(332, 432) 및 제3 가상 시스템(333, 433)에 전송되기 전, 제2 가상 시스템(332, 432) 및 제3 가상 시스템(333, 433) 각각에서 제1 프리빌드 소프트웨어 및 제2 프리빌드 소프트웨어가 프리빌드될 수 있다. 이때 프리빌드 소프트웨어는 타겟 보드에서 동작되는 어플리케이션을 제외하고, 타겟 보드와 연관된 운영 체제 등의 정보를 포함하여 미리 생성되는 유사-바이너리 이미지 형태의 정보를 의미할 수 있음은 앞에서 설명한 바와 같다.
단계(S610)는 시스템(300, 400)에 의하여 웹 기반으로 접속 가능한 클라우드 개발 환경 상에서 상기 사용자가 상기 소스 코드를 편집할 수 있도록 상기 사용자 인터페이스용 툴(340, 440)을 제공하는 방식으로 구현될 수도 있다.
시스템(300, 400)은 소스 코드에 대한 제1 파일 시스템(341, 441)을 생성하고, 상기 클라우드 개발 환경 상에 상기 소스 코드에 대한 제1 파일 시스템(341, 441)을 저장할 수 있다(S660).
시스템(300, 400)은 적어도 하나 이상의 바이너리 결과물에 대한 제2 파일 시스템(342, 442)을 생성하고, 상기 클라우드 개발 환경 상에 상기 적어도 하나 이상의 바이너리 결과물에 대한 제2 파일 시스템(342, 442)을 저장할 수 있다(S670).
도 6에서는 단계(S660)가 각 소스 코드에 대한 바이너리 결과물이 생성되는 단계(S650) 이후에 실행되는 것으로 도시된다. 이때 소스 코드가 제1 파일 시스템(341, 441)의 형태로 저장되는 것은 사용자의 개발 시퀀스가 어느 정도 진행되어 최종 결과물이 얻어진 경우로, 이때에는 단계(S660) 및 단계(S670)이 실질적으로 동시 또는 서로 잇달아 실행될 수 있다.
도 6에는 도시되지 않은 본 발명의 다른 실시예에 따르면 소스 코드에 대한 제1 파일 시스템(341, 441)의 저장은 소스 코드에 대한 시뮬레이션 실행(S620) 및 시뮬레이션 결과를 사용자에게 피드백한(S630) 직후에 이루어질 수도 있다. 즉, 시뮬레이션 과정의 중간 정산 및 검토 시점마다 소스 코드에 대한 백업이 이루어질 수도 있다.
본 발명의 가상화된 시스템 상에서 임베디드 소프트웨어를 자동으로 생성하는 기법은 클라우드 서비스 시스템(300, 400) 상에서 구현되는 것을 전제로 설명되었으나, 본 발명의 사상은 이에 국한하지 않는다. 실시예에 따라서는 스탠드 얼론(stand-alone) 상태의 컴퓨팅 시스템과 그 프로세서에 의해서도 가상화된 시스템을 구현하고 프리빌드 소트웨어 및 임베디드 소프트웨어가 생성될 수 있다.
본 발명의 일 실시예에 따른 임베디드 소프트웨어를 자동으로 생성하는 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
그러나, 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다. 본 발명의 실시예와 도면에 소개된 길이, 높이, 크기, 폭 등은 이해를 돕기 위해 과장된 것일 수 있다.
이상과 같이 본 발명에서는 구체적인 구성 요소 등과 같은 특정 사항들과 한정된 실시예 및 도면에 의해 설명되었으나 이는 본 발명의 보다 전반적인 이해를 돕기 위해서 제공된 것일 뿐, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상적인 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
따라서, 본 발명의 사상은 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등하거나 등가적 변형이 있는 모든 것들은 본 발명 사상의 범주에 속한다고 할 것이다.
300, 400: 클라우드 서비스 시스템 또는 클라우드 컴퓨팅 시스템
331, 431: 제1 가상 시스템
332, 432: 제2 가상 시스템
333, 433: 제3 가상 시스템
340, 440: 사용자 인터페이스용 툴
341, 441: 제1 파일 시스템
342, 442: 제2 파일 시스템
350, 450: 컨테이너 엔진
360, 460: 호스트 운영 체제

Claims (14)

  1. 사용자가 소스 코드를 편집할 수 있는 사용자 인터페이스용 툴을 제공하는 단계;
    제1 가상 시스템 상에서 상기 사용자 인터페이스용 툴을 이용하여 편집된 상기 소스 코드에 대한 시뮬레이션을 실행하고, 상기 소스 코드에 대한 상기 시뮬레이션 결과를 상기 사용자 인터페이스용 툴을 이용하여 상기 사용자에게 피드백하는 단계;
    타겟 보드에서 임베디드 소프트웨어를 동작시키기 위한 운영 체제에 기반하여 미리 생성한 프리빌드 소프트웨어를 제2 가상 시스템 상에서 제공하는 단계; 및
    상기 소스 코드를 상기 타겟 보드에 대하여 미리 생성한 상기 프리빌드 소프트웨어와 결합하여 상기 타겟 보드에서 실행할 수 있는 바이너리 결과물을 생성하는 단계;
    를 포함하는 가상화된 시스템 상에서 임베디드 소프트웨어를 자동으로 생성하는 방법.
  2. 제1항에 있어서,
    상기 제1 가상 시스템과 상기 제2 가상 시스템은 동일한 호스트 운영 체제 시스템 계층 상에서 실행되는 가상화된 시스템 상에서 임베디드 소프트웨어를 자동으로 생성하는 방법.
  3. 제2항에 있어서,
    상기 제2 가상 시스템 상에서 상기 프리빌드 소프트웨어를 생성하는 과정에서 활용된 개발 환경 정보가 상기 제1 가상 시스템 상에서 실행되는 시뮬레이션 과정에 공유되는 가상화된 시스템 상에서 임베디드 소프트웨어를 자동으로 생성하는 방법.
  4. 제2항에 있어서,
    상기 제1 가상 시스템 상에서 상기 소스 코드에 대한 상기 시뮬레이션 과정에서 얻어지는 상기 소스 코드에 대한 활용 정보가 상기 제2 가상 시스템 상에서 상기 프리빌드 소프트웨어를 생성하는 과정에 공유되는 가상화된 시스템 상에서 임베디드 소프트웨어를 자동으로 생성하는 방법.
  5. 제1항에 있어서,
    상기 사용자 인터페이스용 툴을 제공하는 단계는
    웹 기반으로 접속 가능한 클라우드 개발 환경 상에서 상기 사용자가 상기 소스 코드를 편집할 수 있도록 상기 사용자 인터페이스용 툴을 제공하는 가상화된 시스템 상에서 임베디드 소프트웨어를 자동으로 생성하는 방법.
  6. 제5항에 있어서,
    상기 소스 코드에 대한 파일 시스템을 생성하고, 상기 클라우드 개발 환경 상에 상기 소스 코드에 대한 파일 시스템을 저장하는 단계
    를 더 포함하는 가상화된 시스템 상에서 임베디드 소프트웨어를 자동으로 생성하는 방법.
  7. 제5항에 있어서,
    상기 바이너리 결과물에 대한 파일 시스템을 생성하고, 상기 클라우드 개발 환경 상에 상기 바이너리 결과물에 대한 파일 시스템을 저장하는 단계
    를 더 포함하는 가상화된 시스템 상에서 임베디드 소프트웨어를 자동으로 생성하는 방법.
  8. 프로세서;를 포함하는 컴퓨팅 시스템으로서,
    상기 프로세서는
    사용자가 소스 코드를 편집할 수 있는 사용자 인터페이스용 툴을 제공하고,
    제1 가상 시스템 상에서 상기 사용자 인터페이스용 툴을 이용하여 편집된 상기 소스 코드에 대한 시뮬레이션을 실행하고, 상기 소스 코드에 대한 상기 시뮬레이션 결과를 상기 사용자 인터페이스용 툴을 이용하여 상기 사용자에게 피드백하고,
    타겟 보드에서 임베디드 소프트웨어를 동작시키기 위한 운영 체제에 기반하여 미리 생성한 프리빌드 소프트웨어를 제2 가상 시스템 상에서 제공하고,
    상기 소스 코드를 상기 타겟 보드에 대하여 미리 생성한 상기 프리빌드 소프트웨어와 결합하여 상기 타겟 보드에서 실행할 수 있는 바이너리 결과물을 생성하는 가상화된 시스템 상에서 임베디드 소프트웨어를 자동으로 생성하는 컴퓨팅 시스템.
  9. 제8항에 있어서,
    상기 프로세서는 상기 제1 가상 시스템과 상가 제2 가상 시스템을 동일한 호스트 운영 체제 시스템 계층 상에서 실행하는
    가상화된 시스템 상에서 임베디드 소프트웨어를 자동으로 생성하는 컴퓨팅 시스템.
  10. 제9항에 있어서,
    상기 프로세서는 상기 제2 가상 시스템 상에서 상기 프리빌드 소프트웨어를 생성하는 과정에서 활용된 개발 환경 정보를 상기 제1 가상 시스템 상에서 실행되는 시뮬레이션 과정에 공유하는
    가상화된 시스템 상에서 임베디드 소프트웨어를 자동으로 생성하는 컴퓨팅 시스템.
  11. 제9항에 있어서,
    상기 프로세서는 상기 제1 가상 시스템 상에서 상기 소스 코드에 대한 상기 시뮬레이션 과정에서 얻어지는 상기 소스 코드에 대한 활용 정보를 상기 제2 가상 시스템 상에서 상기 프리빌드 소프트웨어를 생성하는 과정에 공유하는
    가상화된 시스템 상에서 임베디드 소프트웨어를 자동으로 생성하는 컴퓨팅 시스템.
  12. 제8항에 있어서,
    상기 프로세서는 웹 기반으로 접속 가능한 클라우드 개발 환경 상에서 상기 사용자가 상기 소스 코드를 편집할 수 있도록 상기 사용자 인터페이스용 툴을 제공하는
    가상화된 시스템 상에서 임베디드 소프트웨어를 자동으로 생성하는 컴퓨팅 시스템.
  13. 제12항에 있어서,
    상기 프로세서는 상기 소스 코드에 대한 파일 시스템을 생성하고, 상기 클라우드 개발 환경 상에 상기 소스 코드에 대한 파일 시스템을 저장하는
    가상화된 시스템 상에서 임베디드 소프트웨어를 자동으로 생성하는 컴퓨팅 시스템.
  14. 제12항에 있어서,
    상기 프로세서는
    상기 바이너리 결과물에 대한 파일 시스템을 생성하고, 상기 클라우드 개발 환경 상에 상기 바이너리 결과물에 대한 파일 시스템을 저장하는
    가상화된 시스템 상에서 임베디드 소프트웨어를 자동으로 생성하는 컴퓨팅 시스템.
KR1020170177147A 2017-12-21 2017-12-21 가상화된 시스템 상에서 임베디드 소프트웨어를 자동으로 생성하는 방법 및 컴퓨팅 시스템 KR102054980B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020170177147A KR102054980B1 (ko) 2017-12-21 2017-12-21 가상화된 시스템 상에서 임베디드 소프트웨어를 자동으로 생성하는 방법 및 컴퓨팅 시스템
JP2018066786A JP6603746B2 (ja) 2017-12-21 2018-03-30 仮想化されたシステム上で組み込みソフトウェアを自動で生成する方法及びコンピューティングシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170177147A KR102054980B1 (ko) 2017-12-21 2017-12-21 가상화된 시스템 상에서 임베디드 소프트웨어를 자동으로 생성하는 방법 및 컴퓨팅 시스템

Publications (2)

Publication Number Publication Date
KR20190075508A true KR20190075508A (ko) 2019-07-01
KR102054980B1 KR102054980B1 (ko) 2019-12-12

Family

ID=67222709

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170177147A KR102054980B1 (ko) 2017-12-21 2017-12-21 가상화된 시스템 상에서 임베디드 소프트웨어를 자동으로 생성하는 방법 및 컴퓨팅 시스템

Country Status (2)

Country Link
JP (1) JP6603746B2 (ko)
KR (1) KR102054980B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102237877B1 (ko) 2019-12-06 2021-04-09 주식회사 오픈드래프트 실시간 협업지원 지능형 소프트웨어 자동 개발 시스템 및 그 방법

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112905185B (zh) * 2021-01-25 2023-10-31 浙江大学 一种基于QEMU的嵌入式Linux内核动态分析平台

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110037140A (ko) 2009-10-06 2011-04-13 선문대학교 산학협력단 임베디드 소프트웨어 가상 개발 환경을 제공하는 시스템
KR20170065965A (ko) * 2015-12-04 2017-06-14 전자부품연구원 가상화 기반의 임베디드 하드웨어 개발 및 검증 프레임워크 구조

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110037140A (ko) 2009-10-06 2011-04-13 선문대학교 산학협력단 임베디드 소프트웨어 가상 개발 환경을 제공하는 시스템
KR20170065965A (ko) * 2015-12-04 2017-06-14 전자부품연구원 가상화 기반의 임베디드 하드웨어 개발 및 검증 프레임워크 구조

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102237877B1 (ko) 2019-12-06 2021-04-09 주식회사 오픈드래프트 실시간 협업지원 지능형 소프트웨어 자동 개발 시스템 및 그 방법

Also Published As

Publication number Publication date
JP2019114223A (ja) 2019-07-11
KR102054980B1 (ko) 2019-12-12
JP6603746B2 (ja) 2019-11-06

Similar Documents

Publication Publication Date Title
EP3518098B1 (en) Cross platform content management and distribution system
US11232015B2 (en) Automated software verification service
US8607208B1 (en) System and methods for object code hot updates
US11093372B2 (en) Systems and methods for automatically parallelizing sequential code
JP7311710B2 (ja) 実行時コンテナ
US20160034276A1 (en) Adaptive interface for cross-platform component generation
Mateo et al. Parallel mutation testing
Pathania Learning Continuous Integration with Jenkins: A Beginner's Guide to Implementing Continuous Integration and Continuous Delivery Using Jenkins 2
CN115629971A (zh) 一种应用的开发系统和开发方法
US8397217B2 (en) Integrating templates into tests
CN109413189B (zh) 一种基于底层转译的电子交易系统
JP6603746B2 (ja) 仮想化されたシステム上で組み込みソフトウェアを自動で生成する方法及びコンピューティングシステム
Devresse et al. Nix based fully automated workflows and ecosystem to guarantee scientific result reproducibility across software environments and systems
Junghanns et al. Building virtual ECUs quickly and economically
Thomas et al. Simulation factory: Taming application configuration and workflow on high-end resources
Park TREDE and VMPOP: Cultivating multi-purpose datasets for digital forensics–A Windows registry corpus as an example
Lukavsky Building Big Data Pipelines with Apache Beam: Use a single programming model for both batch and stream data processing
Liu et al. Enhancement for bitwise identical reproducibility of Earth system modeling on the C-Coupler platform
Reznikov Creating tailored OS images for embedded systems using Buildroot
WO2007144891A1 (en) A method for the distribution of software processes to a plurality of computers
Vasyukov et al. Using Computing Containers and Continuous Integration to Improve Numerical Research Reproducibility
Starkman The Robot Operating System in Transition: Experiments and Tutorials
Jobanputra Cloud Interface for LiveHD
Lebesbye Boreas–Reducing Resource Usage Through Optimized Kubernetes Scheduling
Swann Software for parallel computing: The LAM implementation of MPI

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