무엇이 삽입되어 있나요? 임베디드라는 것은 코드를 작성한다는 뜻인가요?
정보기술의 발전과 디지털 제품의 대중화로 인해 컴퓨터 기술, 칩 기술, 소프트웨어 기술을 핵심으로 하는 임베디드 시스템이 현재의 통신, 컴퓨터 분야에서 다시 한 번 뜨거운 관심을 받고 있습니다. , 가전제품 기술(3C) 융합의 추세는 점차 구체화되고 있습니다. 유비쿼터스 네트워크와 유비쿼터스 컴퓨팅(모든 것이 연결되고, 어디서나 컴퓨팅)은 인간을 새로운 정보 사회로 이끌고 있습니다. 1. 임베디드 시스템 임베디드 시스템은 컴퓨터 기술을 기반으로 하는 애플리케이션 중심이며, 소프트웨어와 하드웨어를 맞춤화할 수 있습니다. 기능, 신뢰성, 비용, 용량, 전력 소비 등에 대한 엄격한 요구 사항이 있는 특수 컴퓨터 시스템에 적합합니다. 임베디드 시스템의 가장 대표적인 특징은 사람들의 일상생활과 밀접하게 연관되어 있다는 점이다. MP3, PDA 등의 초소형 디지털 기기부터 대형 정보가전까지 임베디드 기술을 활용한 다양한 전자제품을 일반인이라면 누구나 소유할 수 있을 것이다. 스마트 가전, 차량 탑재 GIS, 다양한 신규 임베디드 디바이스의 비중이 범용 컴퓨터를 훨씬 넘어섰습니다. 미국의 유명한 미래학자 네그로폰테가 1999년 1월 중국을 방문했을 때 임베디드 지능형 도구가 4~5년 안에 PC와 인터넷에 이어 컴퓨터 산업의 가장 위대한 발명품이 될 것이라고 예측한 것도 놀랄 일이 아니다. 1.1 역사 및 현황 임베디드 시스템은 최근에야 대중화되었지만 실제로 임베디드라는 개념은 1970년대 마이크로컨트롤러의 출현부터 오늘날 프로세서와 프로세서의 광범위한 적용과 함께 다양한 임베디드 마이크로프로세서에 이르기까지 오랫동안 존재해 왔습니다. 마이크로컨트롤러, 임베디드 시스템은 거의 30년의 역사를 가지고 있습니다. 임베디드 시스템의 개발 역사를 통틀어 대략 다음과 같은 네 단계를 거쳤습니다. 운영 체제 단계 없음 임베디드 시스템의 초기 적용은 단일 칩 마이크로컴퓨터를 기반으로 하며, 대부분 모니터링 기능이 포함된 프로그래밍 가능한 컨트롤러 형태로 나타납니다. , 서보, 장비 명령 등 이 기능은 일반적으로 항공기 및 미사일과 같은 다양한 유형의 산업 제어 및 무기 및 장비에 사용됩니다. 일반적으로 시스템은 어셈블리 언어를 통해서만 직접 제어할 수 있습니다. , 작업이 완료된 후 메모리가 지워집니다. 이러한 장치는 처음에는 임베디드 애플리케이션 특성을 갖고 있었지만 일부 단일 스레드 프로그램을 실행하는 데 8비트 CPU 칩만 사용하므로 엄밀히 말하면 "시스템" 개념을 논의할 수 없습니다. 이 단계에서 임베디드 시스템의 주요 특징은 상대적으로 단순한 시스템 구조와 기능, 낮은 처리 효율성, 작은 저장 용량, 사용자 인터페이스가 거의 없다는 것입니다. 이러한 종류의 임베디드 시스템은 사용하기 쉽고 가격이 저렴하기 때문에 산업 제어 분야에서 널리 사용되어 왔습니다. 그러나 오늘날의 정보 기기 및 실행 효율성과 저장에 대한 높은 요구 사항을 충족할 수 없습니다. 용량. 간단한 운영 체제 단계 1980년대 마이크로 전자 공학 기술이 발전하면서 IC 제조업체는 마이크로 프로세서, I/O 인터페이스, 직렬 인터페이스, RAM, ROM 및 임베디드 애플리케이션에 필요한 기타 구성 요소를 VLSI에 통합하기 시작했으며 마이크로 컨트롤러를 만들었습니다. I/O용으로 설계되어 임베디드 시스템 분야에서 급부상하게 되었습니다. 동시에 임베디드 시스템 프로그래머는 간단한 "운영 체제"를 기반으로 임베디드 응용 프로그램 소프트웨어를 개발하기 시작하여 개발 주기를 크게 단축하고 개발 효율성을 향상시켰습니다. 이 단계의 임베디드 시스템의 주요 특징은 신뢰성이 높은 저전력 임베디드 CPU(예: Power PC 등)가 대거 등장하고, 다양한 단순 임베디드 운영체제가 급속히 등장하고 발전하기 시작했다는 것입니다. 현재 임베디드 운영 체제는 여전히 상대적으로 단순하지만 이미 어느 정도의 호환성과 확장성을 갖추고 있으며, 커널은 정교하고 효율적이며 주로 시스템 로드를 제어하고 애플리케이션의 작동을 모니터링하는 데 사용됩니다. 실시간 운영체제 단계 1990년대에는 분산 제어, 유연한 제조, 디지털 통신 및 정보 기기에 대한 엄청난 수요에 힘입어 임베디드 시스템이 더욱 급속히 발전했으며, 실시간 신호 처리 알고리즘을 위한 DSP 제품은 고속화 및 고속화를 향해 나아가고 있었습니다. 고성능, 정밀도 및 저전력 소모 방향으로 발전합니다. 하드웨어 실시간 요구 사항이 개선됨에 따라 임베디드 시스템의 소프트웨어 규모도 지속적으로 확장되었으며 실시간 멀티 태스킹 운영 체제(RTOS)가 점차 형성되어 임베디드 시스템의 주류가 되었습니다. 이 단계에서 임베디드 시스템의 주요 특징은 운영 체제의 실시간 성능이 크게 향상되었고, 다양한 유형의 마이크로프로세서에서 실행될 수 있으며, 모듈식 및 확장성이 높다는 것입니다.
이때 임베디드 운영체제는 이미 파일 및 디렉토리 관리, 장치 관리, 멀티태스킹, 네트워크, 그래픽 사용자 인터페이스(GUI) 등의 기능을 갖추고 있으며, 수많은 응용 프로그램 인터페이스(API)를 제공하고 있다. 따라서 응용 소프트웨어 개발이 더욱 간편해집니다. 인터넷 중심 단계 21세기는 분명 인터넷 시대가 될 것이며 다양한 네트워크 환경에 임베디드 시스템을 적용해야 한다는 요구는 점점 더 커지고 있습니다. 현재 대부분의 임베디드 시스템은 여전히 인터넷과 분리되어 있습니다. 인터넷이 더욱 발전하고 인터넷 기술이 정보 기기, 산업 제어 기술 등과 점점 더 긴밀하게 통합됨에 따라 임베디드 장치와 인터넷의 결합이 진정한 의미를 갖습니다. 임베디드 기술의 의미. 정보화 시대와 디지털 시대의 도래는 임베디드 시스템 개발에 큰 기회를 가져왔으며 임베디드 시스템 제조업체에게는 새로운 과제도 제시했습니다. 현재 임베디드 기술과 인터넷 기술의 결합은 임베디드 기술의 급속한 발전을 이끌고 있습니다. 임베디드 시스템의 연구와 응용은 다음과 같은 새로운 중요한 변화를 가져왔습니다. 새로운 마이크로프로세서가 속속 등장하고 있으며, 임베디드 운영 체제 자체는 이식성이 뛰어나고 짧은 시간에 더 많은 마이크로프로세서를 지원할 수 있습니다. 임베디드 시스템 개발은 체계적인 프로젝트가 되었습니다. 개발자는 임베디드 소프트웨어와 하드웨어 시스템 자체를 제공해야 할 뿐만 아니라 강력한 하드웨어 개발 도구와 소프트웨어 지원 패키지도 제공해야 합니다. 범용 컴퓨터에서 사용되는 새로운 기술과 개념은 임베디드 데이터베이스, 모바일 에이전트, 실시간 CORBA 등과 같은 임베디드 시스템에 점차적으로 이식되기 시작했으며 임베디드 소프트웨어 플랫폼은 더욱 향상되었습니다. 다양한 유형의 임베디드 Linux 운영 체제는 오픈 소스 코드, 작은 시스템 커널, 높은 실행 효율성 및 완벽한 네트워크 구조로 인해 현재 정보 기기와 같은 임베디드 시스템의 요구에 매우 적합합니다. Windows CE와 함께 사용할 수 있는 운영체제를 형성했고, Palm OS 등 임베디드 운영체제들이 치열한 경쟁을 펼치고 있는 상황이다. 인터넷 기술이 발전하고 대역폭이 증가하면서 네트워킹과 정보화에 대한 요구가 더욱 중요해졌습니다. 과거에 전화, 휴대폰, 냉장고, 전자레인지 등 단일 기능을 가졌던 기기들은 더 이상 단일 기능을 갖지 않으며 그 구조도 점점 더 중요해졌습니다. 더욱 복잡해지면서 네트워크 상호 연결이 불가피해졌습니다. 시스템 코어를 간소화하고 주요 알고리즘을 최적화하며 전력 소비와 소프트웨어 및 하드웨어 비용을 줄입니다. 보다 친숙한 멀티미디어 인간-컴퓨터 상호 작용 인터페이스를 제공합니다. 1.2 아키텍처 국제전기전자공학회(IEEE)의 정의에 따르면, 임베디드 시스템은 "장비의 작동을 제어, 모니터링 또는 지원하고, 장비, 기계 및 작업장의 작동을 모니터링하거나 지원하는 데 사용되는 장치"입니다. ." 기계 또는 공장). 일반적으로 전체 임베디드 시스템의 아키텍처는 그림 1과 같이 임베디드 프로세서, 임베디드 주변 장치, 임베디드 운영 체제 및 임베디드 애플리케이션 소프트웨어의 네 부분으로 나눌 수 있습니다. 그림 1 임베디드 시스템의 구성 임베디드 프로세서 임베디드 시스템의 핵심은 다양한 유형의 임베디드 프로세서입니다. 임베디드 프로세서와 범용 프로세서의 가장 큰 차이점은 대부분의 임베디드 CPU가 특정 사용자 그룹을 위해 작동한다는 것입니다. 범용 CPU의 보드에서 수행되는 많은 작업을 칩에 통합하여 설계 시 임베디드 시스템의 소형화를 촉진하고 효율성과 신뢰성도 높습니다. 임베디드 프로세서의 아키텍처는 CISC(Complex Instruction Set)에서 RISC(Reduced Instruction Set), Compact RISC로 전환되었으며 비트 수는 4비트, 8비트, 16비트, 32비트에서 점차 발전해 왔습니다. 비트에서 64비트로. 현재 일반적으로 사용되는 임베디드 프로세서는 저가형 임베디드 마이크로컨트롤러 유닛(Micro Controller Unit, MCU), 중저가형 임베디드 마이크로프로세서(Embedded Micro Processor Unit, EMPU), 컴퓨터 분야에서 사용되는 임베디드 DSP로 구분할 수 있다. 통신 프로세서(EDSP) 및 고집적 임베디드 시스템 온 칩(SOC).
현재 거의 모든 반도체 제조업체는 임베디드 프로세서를 생산하고 있으며 점점 더 많은 회사가 독립적인 프로세서 설계 부서를 갖기 시작했습니다. 불완전한 통계에 따르면 전 세계적으로 1,000개 이상의 임베디드 프로세서가 있으며 인기 있는 아키텍처에는 30개 이상의 시리즈가 있습니다. , 그중 ARM, PowerPC, MC 68000, MIPS 등이 가장 널리 사용됩니다. 임베디드 시스템 하드웨어 시스템에서는 중앙 제어 구성 요소(MCU, DSP, EMPU, SOC) 외에도 저장, 통신, 디버깅 및 디스플레이와 같은 보조 기능을 완료하는 데 사용되는 기타 구성 요소도 실제로 임베디드 주변 장치로 간주될 수 있습니다. 현재 일반적으로 사용되는 임베디드 주변기기는 기능에 따라 저장장치, 통신장치, 디스플레이 장치의 세 가지 범주로 나눌 수 있습니다. 다양한 종류의 데이터를 저장하는 데 주로 사용되는 저장 장치에는 정적 휘발성 메모리(RAM, SRAM), 동적 메모리(DRAM), 비휘발성 메모리(ROM, EPROM, EEPROM, FLASH) 세 가지가 있습니다. , FLASH 높은 재기록성, 빠른 저장 속도, 큰 저장 용량, 저렴한 가격 등의 장점으로 임베디드 분야에서 널리 사용되고 있습니다. RS-232 인터페이스(직렬 통신 인터페이스), SPI(직렬 주변 장치 인터페이스), IrDA(적외선 인터페이스), I2C(필드 버스), USB(범용 직렬 버스) 등 현재 존재하는 대부분의 통신 장치는 임베디드 시스템에 직접 사용할 수 있습니다. 인터페이스), 이더넷(Ethernet Interface) 등 임베디드 애플리케이션의 특수성으로 인해 일반적으로 음극선관(CRT), 액정 디스플레이(LCD), 터치 패널과 같은 주변 디스플레이 장치가 사용됩니다. 임베디드 운영체제(Embedded Operating System) 임베디드 시스템을 보다 편리하고 빠르게 개발하기 위해서는 메모리 할당, 인터럽트 처리, 작업 스케줄링 및 기타 기능을 관리하는 소프트웨어 모듈이 필요합니다. 임베디드 운영 체제는 임베디드 애플리케이션을 지원하는 데 사용되는 시스템 소프트웨어로, 일반적으로 하드웨어 관련 기본 드라이버, 시스템 커널, 장치 드라이버 인터페이스, 그래픽 사용자 인터페이스(GUI)가 포함됩니다. . )기다리다. 임베디드 운영체제는 복잡한 시스템 자원을 효과적으로 관리하는 능력, 하드웨어를 추상화하는 능력, 라이브러리 기능, 드라이버, 개발 도구 세트 등을 제공하는 능력 등 일반 운영체제의 기본 특성을 갖고 있다. 그러나 임베디드 운영체제는 범용 운영체제에 비해 시스템 실시간 성능, 하드웨어 의존성, 소프트웨어 견고성, 애플리케이션 특수성 등의 측면에서 더 뚜렷한 특징을 갖고 있다. 임베디드 운영 체제는 애플리케이션 시나리오에 따라 두 가지 범주로 나눌 수 있습니다. 하나는 개인 휴대 정보 단말기(PDA), 휴대폰, 셋톱 박스(STB) 등을 포함하는 소비자 전자 제품을 위한 비실시간 시스템입니다. 다른 하나는 WindRiver Company의 VxWorks, QNX System Software Company의 QNX 등과 같은 제어, 통신, 의료 및 기타 분야를 위한 실시간 운영 체제입니다. 실시간 시스템(Real Time System)은 지정된 또는 정해진 시간 내에 시스템 기능을 완료할 수 있고 동기 또는 비동기 시간 내에 외부 및 내부 이벤트에 신속하게 대응할 수 있는 시스템입니다. 실시간 시스템에서 연산의 정확성은 논리 설계의 정확성에 달려 있을 뿐만 아니라 이러한 연산이 수행되는 시간과도 관련이 있습니다. 타이밍 로직과 타이밍 제어에 편차가 있으면 심각한 결과가 발생합니다. 실시간 시스템은 주로 응답 시간(Response Time), 생존 시간(Survival Time), 처리량(Throughput)이라는 세 가지 성능 지표를 통해 시스템의 실시간 특성을 측정합니다. 응답 시간은 실시간 시스템이 작동하는 시점부터의 시간입니다. 시스템은 결정을 내릴 때 외부 이벤트를 인식합니다. 응답 시간은 데이터의 유효 대기 시간이며, 데이터는 이 기간 동안만 유효합니다. 처리량은 시스템이 주어진 기간 내에 처리할 수 있는 총 이벤트 수입니다. 시간과 처리량은 일반적으로 평균 응답 시간의 역수입니다. 실시간 시스템은 약한 실시간 시스템, 일반 실시간 시스템, 응답 시간 기반의 강력한 실시간 시스템 등 세 가지 유형으로 나눌 수 있습니다. 약한 실시간 시스템 설계의 목적은 각 작업을 가능한 한 빠르게 실행하는 것이지만 작업을 완료해야 하는 기간에 대한 엄격한 제한은 없습니다. 약한 실시간 시스템은 프로그램 실행 결과가 올바른지 여부에 더 중점을 둡니다. 시스템 보안 성능과 같은 다른 측면뿐만 아니라 작업 실행 시간에 대한 요구 사항도 상대적으로 느슨합니다. 일반적으로 응답 시간은 수십 초 이상이 될 수 있습니다.
일반적인 실시간 시스템은 약한 실시간 시스템과 강력한 실시간 시스템 사이의 절충안으로 응답 시간은 몇 초 수준일 수 있으며 소비자 전자 장비에 널리 사용됩니다. 강력한 실시간 시스템에서는 각 작업이 실행 프로세스와 결과의 정확성을 보장할 뿐만 아니라 제한된 시간 내에 작업이 완료되도록 보장해야 하며 응답 시간은 일반적으로 밀리초 또는 마이크로초 정도여야 합니다. 이는 의료 및 보안 애플리케이션에 매우 중요하며 군사 소프트웨어 및 하드웨어 시스템이 중요합니다. 마감일은 작업 마감일에 대한 요구 사항을 나타내는 실시간 시스템의 중요한 개념으로 마감일이 시스템 성능에 미치는 영향에 따라 실시간 시스템은 소프트 실시간 시스템과 하드 실시간 시스템으로 나눌 수 있습니다. . 소프트 실시간은 시스템 응답 시간이 제한되어 있어도 시스템 응답 시간이 요구 사항을 충족할 수 없는 경우 시스템에 치명적인 오류나 충돌을 일으키지 않음을 의미합니다. 하드 실시간은 시스템에 엄격한 제한이 있음을 의미합니다. 응답 시간 시스템 응답 시간이 요구 사항을 충족하지 못하면 시스템에 치명적인 오류나 충돌이 발생합니다. 시간 제한에 도달했는데도 작업이 완료되지 않은 경우 소프트 실시간 시스템에서는 허용될 수 있지만 기껏해야 시스템 성능이 저하될 뿐이지만 그 결과로 인해 하드 실시간 시스템에서는 허용되지 않습니다. 그 예측은 심지어 재앙적일 수도 있습니다. 실제로 사용되는 현재 실시간 시스템에서는 일반적으로 소프트 실시간과 하드 실시간이 공존할 수 있습니다. 일부 이벤트에는 시간 제한 요구 사항이 없지만 다른 이벤트에는 소프트 실시간 시간 제한이 있습니다. 시스템에 중요한 영향을 미치는 것은 시간 제한 요구 사항이 있습니다. 실시간은 어렵습니다. 임베디드 애플리케이션 소프트웨어 임베디드 애플리케이션 소프트웨어는 특정 애플리케이션 분야를 대상으로 하며 사용자의 예상 목표를 달성하기 위해 고정된 하드웨어 플랫폼을 기반으로 하는 컴퓨터 소프트웨어입니다. 사용자 작업에는 시간과 정확성 요구 사항이 있을 수 있으므로 일부 임베디드 애플리케이션 소프트웨어에는 특정 임베디드 운영 체제가 필요합니다. 지원하다. 임베디드 애플리케이션 소프트웨어와 일반 애플리케이션 소프트웨어에는 특정 차이점이 있습니다. 실제 애플리케이션의 요구 사항을 충족하려면 정확성, 보안 및 안정성이 필요할 뿐만 아니라 시스템 리소스 소비를 줄이기 위해 최대한 최적화해야 합니다. 하드웨어 비용을 절감합니다. 1.3 주요 이슈 임베디드 시스템은 첨단 컴퓨터 기술, 반도체 기술, 전자 기술을 특정 산업의 특정 응용 프로그램과 결합한 산물이므로 기술 집약적, 자본 집약적, 고도로 분산되어 있으며 지속적으로 혁신적인 지식 통합 시스템이어야 합니다. 임베디드 시스템의 개발은 경쟁, 기회 및 혁신으로 가득 차 있으며 다음과 같은 주요 문제를 해결해야 합니다. 컴팩트 코어를 갖춘 임베디드 시스템의 응용 분야는 일반적으로 소형 전자 장치이며 시스템 리소스는 상대적으로 제한되어 있습니다. 코어에 대한 요구 사항은 기존 운영 체제에 비해 훨씬 작습니다. 예를 들어 ENEA에서 출시한 OSE 분산 임베디드 시스템의 전체 커널은 5KB에 불과합니다. 애플리케이션 지향 임베디드 시스템은 일반적으로 사용자 지향, 제품 지향, 특정 애플리케이션 지향입니다. 임베디드 시스템의 대부분의 CPU는 특정 사용자 그룹에 맞게 맞춤화된 환경에서 작동합니다. 소프트웨어 및 하드웨어를 설계할 때 효율성이 강조되어야 하고, 중복성이 제거되어야 하며, CPU는 반드시 필요합니다. 사용자의 특정 요구에 맞게 조정될 수 있습니다. 시스템이 올바르게 구성된 경우에만 이상적인 성능을 얻을 수 있습니다. 시스템 단순화: 일반적으로 임베디드 시스템의 시스템 소프트웨어와 애플리케이션 소프트웨어 간에는 뚜렷한 차이가 없으며 기능과 구현이 너무 복잡할 필요도 없습니다. 이는 한편으로는 시스템 비용을 제어하고 다른 한편으로는 시스템 보안을 보장하는 데 도움이 됩니다. . 성능 최적화 임베디드 시스템은 일반적으로 실행 속도와 시스템 성능을 향상시키기 위해 어느 정도의 실시간 보장이 필요합니다. 임베디드 시스템의 소프트웨어는 일반적으로 저장되지 않고 메모리 칩이나 프로세서의 내부 저장 장치에 고정됩니다. 디스크 및 기타 외부 캐리어에. 임베디드 시스템의 컴퓨팅 속도와 저장 용량은 어느 정도 제한되어 있고 대부분의 시스템은 높은 실시간 보장을 요구하므로 소프트웨어 품질(특히 신뢰성)에 대한 요구 사항이 높습니다. 전문적인 개발 임베디드 시스템 자체에는 독립적인 개발 기능이 없으며, 사용자가 직접 2차 개발을 수행할 수 없습니다. 시스템이 완성된 후 사용자가 프로그램 중 하나의 기능을 수정해야 하는 경우 완전한 개발 도구 및 환경 세트를 사용해야 합니다. 임베디드 시스템의 특수 개발 도구 및 환경은 일반적으로 범용 컴퓨터의 소프트웨어 및 하드웨어 장치뿐만 아니라 다양한 로직 분석기, 혼합 신호 오실로스코프 등을 기반으로 합니다.
위로 2. 임베디드 Linux 1991년 등장부터 지금까지 Linux는 불과 10년 만에 가장 강력하고 잘 설계된 운영 체제 중 하나로 발전했으며, 다양한 기존 상용 운영 체제와도 경쟁할 수 있게 되었습니다. 또한 새롭게 떠오르는 임베디드 운영체제 분야에서도 급속한 발전을 이루었습니다. 임베디드 리눅스(Embedded Linux)는 표준 리눅스를 소형화하여 불과 몇 K 또는 M 바이트 용량의 메모리 칩이나 마이크로컨트롤러에 굳힌 뒤 특정 임베디드 애플리케이션에 적합한 특수한 리눅스 운영체제를 말한다. 2.1 장점 임베디드 Linux의 개발 및 연구는 현재 성공적으로 개발된 임베디드 시스템 중 약 절반이 Linux를 사용하는 운영 체제 분야에서 핫스팟입니다. 리눅스가 임베디드 시스템 시장에서 이렇게 눈부신 성과를 거둘 수 있었던 이유는 리눅스 자체의 뛰어난 특성과 떼려야 뗄 수 없다. 광범위한 하드웨어 지원 Linux는 x86, ARM, MIPS, ALPHA, PowerPC 등과 같은 여러 아키텍처를 지원할 수 있습니다. 수십 개의 하드웨어 플랫폼에 성공적으로 이식되었으며 거의 모든 널리 사용되는 CPU에서 실행될 수 있습니다. Linux는 유난히 풍부한 드라이버 리소스를 보유하고 있으며 다양한 주류 하드웨어 장치와 최신 하드웨어 기술을 지원하며 메모리 관리 장치(MMU) 없이 프로세서에서도 실행될 수 있어 임베디드 시스템에서 Linux 적용이 더욱 촉진됩니다. 커널 효율성 및 안정성 리눅스 커널의 효율성과 안정성은 다양한 분야에서 수많은 사실을 통해 검증되었습니다. 리눅스 커널 설계는 매우 정교하며 프로세스 스케줄링, 메모리 관리, 프로세스 간 통신, 가상 파일 시스템 및 네트워크 인터페이스는 고유합니다. 모듈 메커니즘은 사용자 필요에 따라 실시간으로 커널에 특정 모듈을 삽입하거나 제거할 수 있습니다. 이러한 특성을 통해 Linux 시스템 커널을 매우 컴팩트하게 조정할 수 있으며 이는 임베디드 시스템의 요구 사항에 매우 적합합니다. 오픈 소스 코드, 풍부한 소프트웨어 Linux는 사용자에게 최대한의 자유를 제공하는 오픈 소스 무료 운영 체제입니다. 임베디드 시스템은 매우 다양하므로 특정 애플리케이션에 맞게 수정하고 최적화해야 하는 경우가 많습니다. 매우 중요합니다. Linux 소프트웨어 리소스는 매우 풍부합니다. 거의 모든 범용 프로그램을 Linux에서 찾을 수 있으며 그 수는 계속 증가하고 있습니다. Linux에서 임베디드 애플리케이션 소프트웨어를 개발할 때 일반적으로 처음부터 시작할 필요는 없으며, 대신 유사한 무료 소프트웨어를 프로토타입으로 선택하고 이에 대한 2차 개발을 수행할 수 있습니다. 탁월한 개발 도구 임베디드 시스템 개발의 핵심은 완전한 개발 및 디버깅 도구 세트입니다. 전통적인 임베디드 개발 및 디버깅 도구는 ICE(In-Circuit Emulator)입니다. 이는 대상 보드의 마이크로프로세서를 교체하여 대상 프로그램에 대한 완전한 시뮬레이션 환경을 제공하므로 개발자는 프로그램의 작동 상태를 명확하게 이해할 수 있습니다. 타겟 보드는 프로그램 모니터링 및 디버깅을 용이하게 합니다. 온라인 에뮬레이터는 매우 비싸며 매우 낮은 수준의 디버깅에만 적합합니다. 임베디드 Linux를 사용하는 경우 소프트웨어와 하드웨어가 일반 직렬 포트 기능을 지원할 수 있으면 온라인 에뮬레이터 작업을 사용하지 않고도 잘 개발하고 디버그할 수 있습니다. 상당한 양의 개발 비용을 절약합니다. 임베디드 리눅스는 개발자에게 완전한 도구 체인(Tool Chain)을 제공하며, GNU의 gcc를 컴파일러로 사용하고, 디버깅 도구로 gdb, kgdb, xgdb를 사용하여 디버깅의 모든 것을 쉽게 구현할 수 있습니다. 완전한 네트워크 통신 및 파일 관리 메커니즘 Linux는 탄생 이후 인터넷과 분리될 수 없으며 모든 표준 인터넷 네트워크 프로토콜을 지원하며 임베디드 시스템에 쉽게 이식됩니다. 또한 Linux는 ext2, fat16, fat32, romfs 등과 같은 파일 시스템도 지원하므로 임베디드 시스템 애플리케이션 개발을 위한 좋은 기반이 됩니다. 2.2 과제 현재 임베디드 Linux 시스템의 연구 개발 붐이 급속히 확산되고 있으며 임베디드 Linux의 개발 및 응용에 종사하는 일부 전통적인 Linux 회사(예: RedHat, MontaVista 등) 외에도 큰 시장 점유율을 차지하고 있습니다. , IBM, Intel, Motorola 및 기타 유명 기업에서도 임베디드 Linux에 대한 연구를 시작했습니다.
전망은 밝지만 현재로서는 임베디드 Linux의 연구 결과와 시장의 실제 요구 사항 사이에 여전히 격차가 있습니다. 진정으로 성숙한 임베디드 Linux 시스템을 개발하려면 다음과 같은 측면에서 노력해야 합니다. 시스템의 실시간 성능을 향상시킵니다. Linux는 PDA, 휴대폰, 차량용 TV, 셋톱박스, 네트워크 전자레인지 등과 같은 다양한 임베디드 장치에 성공적으로 적용되었지만 매우 엄격한 실시간 요구 사항을 가지고 있습니다. 의료, 항공, 교통, 산업 제어 등의 분야에서는 기존의 리눅스가 범용 운영체제이기 때문에 직접적으로 적용할 수는 없다. POSIX 1003.1b 표준을 따르지만 본질적으로 임베디드 실시간 운영 체제는 아닙니다. 리눅스 커널 스케줄링 전략은 기본적으로 유닉스 시스템의 전략을 그대로 따르며, 이를 임베디드 실시간 환경에 직접 적용하면 커널 스레드 실행 시 인터럽트가 꺼지는 현상, 시분할 스케줄링 전략의 시간 불확실성, 고정밀 타이머의 부족 등. 이러한 이유로 Linux를 기본 운영 체제로 사용하고 실시간 변환을 수행하여 실시간 처리 기능을 갖춘 임베디드 시스템을 구축하는 솔루션이 점차 인기를 얻고 있습니다. 커널 구조 개선 Linux 커널은 전체 커널이 별도의 매우 큰 프로그램으로 구성되어 있어 시스템의 다양한 부분이 직접 통신할 수 있으며 작업 간 전환 시간이 효과적으로 단축되고 시스템 응답 속도가 향상됩니다. 그러나 이는 임베디드 시스템의 작은 저장 용량과 제한된 자원의 특성과 일치하지 않습니다. 임베디드 시스템은 종종 마이크로커널이라는 또 다른 아키텍처를 사용합니다. 즉, 커널 자체는 작업 스케줄링, 메모리 관리, 인터럽트 처리 등과 같은 가장 기본적인 운영 체제 기능 중 일부만 제공하며 파일 시스템과 유사합니다. 네트워크 프로토콜과 네트워크 프로토콜은 사용자 공간에서 실행되며 실제 필요에 따라 선택할 수 있습니다. Microkernel의 실행 효율성은 Monolithic만큼 좋지는 않지만 커널 크기를 크게 줄이고 유지 관리 및 이식을 용이하게 하며 임베디드 시스템의 요구 사항을 더 잘 충족할 수 있습니다. Linux 커널 부분을 Microkernel로 변환하여 Linux가 고성능을 가지면서 동시에 임베디드 시스템의 작은 크기 요구 사항을 충족할 수 있도록 고려할 수 있습니다. 통합 개발 플랫폼 개선 임베디드 Linux 시스템을 위한 통합 개발 플랫폼의 도입은 임베디드 Linux의 추가 개발 및 적용을 위한 본질적인 요구 사항입니다. 전통적으로 임베디드 시스템은 특정 애플리케이션을 지향하며, 소프트웨어와 하드웨어는 긴밀하게 협력해야 합니다. 그러나 임베디드 시스템의 규모가 지속적으로 확대되고 애플리케이션 분야가 지속적으로 확장됨에 따라 임베디드 운영체제의 출현은 불가피해졌습니다. , 이러한 방식으로만 임베디드 시스템이 계층적이고 모듈적인 방향으로 개발될 수 있기 때문입니다. 분명히 임베디드 통합 개발 플랫폼은 위의 개발 추세와 일치합니다. 뛰어난 임베디드 통합 개발 환경은 상대적으로 완전한 시뮬레이션 기능을 제공할 수 있고 임베디드 응용 소프트웨어와 임베디드 하드웨어의 동시 개발을 실현할 수 있으므로 "임베디드" 문제를 제거할 수 있습니다. 전통적인 응용 소프트웨어의 개발은 임베디드 하드웨어의 개발에 의존하며 임베디드 하드웨어의 개발을 기반으로 합니다. 완전한 임베디드 통합 개발 플랫폼에는 일반적으로 컴파일러, 커넥터, 디버거, 트래커, 옵티마이저 및 통합 사용자 인터페이스가 포함됩니다. 현재 Linux는 그래픽 인터페이스를 기반으로 하는 특정 시스템 사용자 정의 플랫폼과 Windows CE와 같은 상용 임베디드 시스템을 연구하고 있습니다. 기존 운영 체제에 비해 여전히 큰 격차가 있으며 전반적인 통합 개발 환경을 개선하고 완벽하게 만들어야 합니다. 위로 3. 주요 기술 임베디드 시스템은 특정 목적을 위해 특별히 개발된 시스템으로, 완성될 것으로 예상되는 기능만 완성하므로 개발 프로세스와 개발 환경이 기존 소프트웨어 개발과 크게 다릅니다. 3.1 개발 프로세스 임베디드 시스템의 응용 개발에 있어서 전체 시스템의 개발 프로세스는 그림 2와 같다. 그림 2 임베디드 시스템 개발 프로세스 오늘날 임베디드 시스템의 개발에는 일반적으로 다양한 마이크로프로세서에 대응하는 하드웨어 플랫폼이 보편적이다 , 고정 및 성숙으로 인해 하드웨어 시스템에서 오류가 발생할 가능성이 크게 줄어듭니다. 또한 임베디드 운영 체제는 기본 하드웨어의 복잡성을 보호하므로 개발자는 운영 체제에서 제공하는 API 기능을 통해 대부분의 작업을 완료할 수 있으므로 개발 프로세스가 크게 단순화되고 시스템 안정성이 향상됩니다.
임베디드 시스템 개발자는 이제 하드웨어 플랫폼을 설계하는 반복적인 프로세스에서 벗어나 특정 요구 사항을 충족하는 데 집중할 수 있습니다. 임베디드 시스템은 일반적으로 리소스가 제한된 시스템이므로 임베디드 시스템의 하드웨어 플랫폼에서 직접 소프트웨어를 작성하는 것은 어렵고 때로는 불가능할 수도 있습니다. 현재 일반적으로 사용되는 솔루션은 먼저 범용 컴퓨터에 프로그램을 작성한 다음 크로스 컴파일하여 대상 플랫폼에서 실행할 수 있는 바이너리 코드 형식을 생성하고 마지막으로 대상 플랫폼의 특정 위치에 다운로드하는 것입니다. 달리기를 위해. 크로스 개발 환경(Cross Development Environment) 지원의 필요성은 임베디드 응용 소프트웨어 개발의 중요한 특징으로, 크로스 개발 환경은 임베디드 응용 소프트웨어를 실행하기 위한 환경과 관련이 있습니다. 임베디드 애플리케이션 소프트웨어의 차이점은 그림 3과 같이 일반적으로 호스트/타겟 모드가 사용된다는 것입니다. 그림 3 교차 개발 환경 호스트(Host)는 직렬 포트나 이더넷 인터페이스를 통해 대상 시스템과 통신하는 범용 컴퓨터(예: PC 또는 워크스테이션)입니다. 호스트는 강력한 운영 체제(예: Windows 및 Linux)뿐만 아니라 다양하고 우수한 개발 도구(예: WindRiver의 Tornado, Microsoft의 Embedded Visual C++ 등)를 포함하여 풍부한 소프트웨어 및 하드웨어 리소스를 보유하고 있습니다. 임베디드 애플리케이션 소프트웨어 개발의 속도와 효율성. Target은 일반적으로 임베디드 응용 소프트웨어 개발 시 임베디드 시스템과 통신하는 호스트를 구별하기 위해 사용됩니다. 이는 임베디드 응용 소프트웨어의 실제 실행 환경일 수도 있고, 실제 실행 환경을 대체할 수 있는 시뮬레이션 시스템일 수도 있습니다. , 그러나 소프트웨어 및 하드웨어 리소스는 일반적으로 제한되어 있습니다. 임베디드 시스템의 교차 개발 환경에는 일반적으로 교차 컴파일러, 교차 디버거 및 시스템 시뮬레이터가 포함됩니다. 교차 컴파일러는 대상 컴퓨터에서 실행될 수 있는 코드를 호스트 컴퓨터에 생성하는 데 사용되는 반면, 교차 디버거 및 시스템 시뮬레이터는 호스트 시스템과 대상 시스템 간의 임베디드 소프트웨어 디버깅을 완료하는 데 사용됩니다. 임베디드 애플리케이션 소프트웨어를 개발하기 위해 호스트/타겟 모드를 사용할 때 먼저 호스트의 풍부한 리소스와 좋은 개발 환경을 사용하여 타겟 머신에서 소프트웨어를 개발, 시뮬레이션 및 디버깅한 다음 생성된 타겟 코드를 시리얼을 통해 크로스 컴파일하십시오. 포트 또는 네트워크로 전송하여 타겟 머신에 로드하고 크로스 디버거를 사용하여 모니터링 프로그램이나 운영 체제의 지원을 받아 분석하고 디버깅합니다. 마지막으로 타겟 머신은 특정 환경에서 호스트 머신과 독립적으로 실행됩니다. 교차 개발 환경 구축은 임베디드 소프트웨어 개발의 첫 번째 단계입니다. 현재 일반적으로 사용되는 교차 개발 환경에는 개방형과 상업용이라는 두 가지 주요 유형이 있습니다. 개방형 교차 개발 환경의 대표적인 대표자는 현재 x86, ARM, MIPS 및 PowerPC와 같은 다중 프로세서를 지원할 수 있는 GNU 도구 체인입니다. 상업용 교차 개발 환경에는 주로 Metrowerks CodeWarrior, ARM 소프트웨어 개발 툴킷, SDS Cross 컴파일러, WindRiver Tornado, Microsoft Embedded Visual C++ 등이 포함됩니다. 3.2 크로스 컴파일 및 링크 임베디드 소프트웨어의 코딩이 완료된 후, 개발 과정은 대부분 인텔의 x86 시리즈 CPU를 사용하는 범용 컴퓨터에서 이루어지기 때문에 이를 컴파일하고 링크하여 실행 가능한 코드를 생성해야 합니다. 대상 환경 대부분의 칩은 ARM, MIPS, PowerPC, DragonBall 및 기타 마이크로프로세서 시리즈로, 잘 확립된 크로스 개발 환경에서 크로스 컴파일 및 링크가 필요합니다. 크로스 컴파일러 및 크로스 링커는 호스트 컴퓨터에서 실행될 수 있고 대상 컴퓨터에서 직접 실행할 수 있는 이진 코드를 생성할 수 있는 컴파일러 및 링커입니다. 예를 들어 ARM 아키텍처 기반 gcc 교차 개발 환경에서 arm-linux-gcc는 교차 컴파일러이고 arm-linux-ld는 교차 링커입니다. 일반적으로 모든 임베디드 마이크로프로세서 아키텍처가 하나의 크로스 컴파일러 및 크로스 링커에만 해당하는 것은 아닙니다. 예를 들어 M68K 아키텍처의 gcc 크로스 개발 환경은 다양한 컴파일러 및 링커에 해당합니다.
COFF 형식의 실행 파일을 사용하는 경우 Linux 커널을 컴파일할 때 m68k-coff-gcc 및 m68k-coff-ld를 사용해야 하고, 애플리케이션을 컴파일할 때 m68k-coff-pic-gcc 및 m68k-를 사용해야 합니다. pic-ld. 임베디드 시스템은 일반적으로 생성되는 최종 실행 코드를 최대한 작게 만들기 위해 연결 과정에서 더 작은 함수 라이브러리를 사용해야 합니다. 따라서 실제 응용 프로그램에서는 일반적으로 특수 처리된 함수 라이브러리를 사용합니다. 임베디드 Linux 시스템의 경우 점점 더 강력해지고 크기가 커지는 C 언어 함수 라이브러리 glibc 및 수학 함수 라이브러리 libm은 더 이상 실제 요구를 충족할 수 없습니다. 따라서 개선된 버전인 uClibc, uClibm 및 newlib 등이 있습니다. . 현재 모든 임베디드 통합 개발 환경은 WindRiver Tornado 및 GNU 툴 체인과 같은 크로스 컴파일 및 크로스 링크를 지원합니다. 크로스 컴파일 및 크로스 링크 후에 작성된 임베디드 소프트웨어는 일반적으로 디버깅용 실행 파일과 크로스 링크 두 가지 유형의 실행 파일을 생성합니다. 치료용 실행 파일. 3.3 크로스 디버깅 임베디드 소프트웨어가 컴파일되고 링크되면 디버깅 단계에 들어갑니다. 디버깅은 임베디드 소프트웨어 개발 프로세스에서 필수적인 부분입니다~