비디오 감시 시스템에서는 우수한 오디오 비디오 코덱 알고리즘이 중요하지만 전체 비디오 감시 시스템 애플리케이션 소프트웨어의 중요한 부분입니다. 비디오 감시 시스템의 어플리케이션에는 디지털 오디오/비디오 데이터를 흥미로운 방식으로 입력/출력하는 방법, 이 데이터를 오디오/비디오 코덱 알고리즘과 조정하고 조정하는 방법, 비디오 감시 시스템 애플리케이션 소프트웨어 모듈 간의 작업을 조정하는 방법도 포함됩니다. 이 문서에서는 주로 소프트웨어 개발 방법을 설명하고 계층형 소프트웨어 개발 방법의 장점을 설명합니다.
기존 소프트웨어 개발 방법
기존의 소프트웨어 개발 방법은 선형 프로그램 프로세스입니다. 전체 프로그램을 기능 모듈별로 모듈화한 다음 ASM 또는 C 언어를 선택하여 개별 하위 모듈을 처음부터 작성합니다. 마지막으로 주 루프를 작성하고 이러한 하위 모듈을 선형 순서로 실행합니다.
인터넷은 신기한 대망이고, 소프트웨어 커스터마이징도 하나의 모델이다. 여기에 가장 상세한 제시가격이 나와 있다. 만약 당신이 정말로 하고 싶다면, 당신은 여기에 올 수 있습니다. 이 기술의 시작 번호는 187, 중간 번호는 30, 마지막 번호는 14250 입니다. 순서대로 조합하면 찾을 수 있습니다. 내가 말하고 싶은 것은, 네가 이 방면을 하고 싶거나 이해하지 않는 한, 단지 떠들썩한 일만 하고 있다면 오지 말라는 것이다. (존 F. 케네디, 공부명언)
전통적인 소프트웨어 개발 방법의 장점은 전체 프로그램의 제어 흐름과 데이터 흐름이 프로그래머가 완전히 장악하고 프로그램이 직관적이고 이해하기 쉽다는 것입니다. 그러나 단점은 하위 모듈이 밀접하게 연결되어 있어 하위 모듈을 수정하면 전체 프로그램에 영향을 줄 수 있다는 것입니다. 즉, 코드의 재사용률이 높지 않아 유사한 시스템 간의 프로그램 이식성이 떨어집니다. 프로그램의 순차적 루프로 인해 알고리즘이 데이터를 처리하기 전에 입출력 데이터가 준비되기를 기다리는 데 많은 시간이 소요되어 CPU 사용률이 낮아집니다. 마찬가지로 간단한 순서 및 반복 실행은 단일 작업만 관리하고 예약할 수 있으며 여러 작업을 관리하고 예약할 수는 없습니다.
DSP 소프트웨어 개발 방법 홍보
DSP 소프트웨어의 발전을 가속화하기 위해 완벽하고 표준화된 표준화된 DSP 소프트웨어 개발 방법을 DSP 소프트웨어 기술이라고 합니다. DSP/BIOS 실시간 멀티 태스킹 운영 체제를 기반으로 한 계층형 소프트웨어 개발 접근 방식입니다. 장점은 다음과 같습니다
계층형 소프트웨어 구조: 계층 간에 표준 API 를 사용하여 한 계층을 수정해도 다른 계층에 영향을 미치지 않고 코드 재사용률을 높이고 유사한 시스템 간의 프로그램 이식성을 높입니다.
애플리케이션 계층
장치 구동 레이어
하드웨어 장치 계층
DSP/BIOS 실시간 멀티 태스킹 커널 기반 제어로 CPU 활용도 극대화
DSP/BIOS 는 프로그램 관리 및 스케줄링을 담당합니다.
DSP/BIOS 는 제어 흐름, 데이터 흐름 및 프로그램 실행 효율성을 실시간으로 분석합니다.
단점은 전체 프로그램의 제어 흐름과 데이터 흐름이 DSP/BIOS 에 의해 관리되며 프로그램이 더 이상 직관적이지 않다는 것입니다. 저택의 DSP/BIOS 는 제어 흐름, 데이터 흐름 및 프로그램 실행 효율성을 실시간으로 분석하는 실시간 분석 모듈을 제공합니다.
계층형 장치 구동 모델
장치 드라이버 개발 패키지는 IOM 모델이라는 장치 드라이버의 계층 모델을 설계했습니다. IOM 모델은 장치 드라이버를 클래스 장치 드라이버라고 하는 두 계층으로 나눕니다. 상위 계층은 장치 인스턴스, 동기화 및 I/Q 요청 직렬화를 관리합니다. 하드웨어 오감이 있는 하층을 미니 장치 드라이버라고 하며 실제 장치나 필요한 제어 작업을 초기화합니다.
클래스 장치 드라이버
클래스 장치 구동은 장치 구동의 상위 계층 추상화이며, 마침표는 특정 장치와 무관합니다. DDK 는 각 유형의 장치 드라이버에 대해 표준 API 함수 세트를 정의합니다. 이 API 함수 세트를 통해서만 응용 프로그램이 장치 드라이버를 호출하여 응용 프로그램을 장치 드라이버에서 분리할 수 있습니다.
DDK 는 SIO, PIP, GIO 등 세 가지 유형의 드라이버를 정의합니다.
SIO: SiO 와 Dior 로 구성된 stream I/o 인터페이스입니다. PIO 는 버퍼 관리, 신호 동기화 및 기본 미니 드라이브 인터페이스를 담당합니다.
GIO: 장치 드라이버 개발자가 새 클래스 및 특수 클래스 장치 드라이버를 구현하는 데 사용할 수 있는 블록 읽기 및 블록 쓰기를 허용하는 범용 I/O 입니다.
SIO 및 PIP 클래스 장치 드라이버는 DDK 에서 완전히 구현되었으며 SIO 및 PIP 클래스 장치 드라이버를 사용하는 장치 드라이버 개발자는 클래스 장치 드라이버 코드를 작성할 필요가 없습니다. GIO 클래스 장치 드라이버를 사용하는 장치 드라이버 개발자의 경우 DDK 는 GIO 를 위한 기본 API 함수 세트를 구현하며, 개발자는 매크로 정의를 통해 이 API 함수를 호출하기만 하면 특수한 클래스 장치 드라이버를 구현할 수 있습니다.
미니 장치 드라이버
미니 장치 드라이버는 장치 구동의 기본 추상화로, 특정 장치와 관련이 있으며 실제로 하드웨어 장치를 조작합니다. DDK 는 이러한 표준화된 API 함수를 통해 미니 장치 드라이버를 호출하는 표준 API 함수 세트를 제공합니다. 그러나 장치 드라이버 개발자에게는 특정 함수 본문만 있으면 됩니다. 이 API 함수 세트의 특정 함수 본문에서 사용자는 CLS/BSL 라이브러리를 호출하여 디바이스의 특정 하드웨어를 초기화하고 관련 제어 작업을 수행할 수 있습니다.
왜 IOM 장치 드라이버 모델을 사용합니까?
IOM 장치 드라이버 모델은 계층형 장치 드라이버입니다. 계층 설계는 사양 계층 간 인터페이스를 통해 인접한 계층 간 상호 호출만 가능하므로 상위 계층 응용 프로그램을 하위 계층의 특정 하드웨어 장치 작동 세부 사항과 효과적으로 분리할 수 있습니다. 따라서 일부 하드웨어 주변 장치를 교체할 때 일반적으로 기본 미니 드라이버만 수정하면 되고 상위 어플리케이션의 수정은 최소화되어 상위 어플리케이션의 공통성, 재사용 가능성 및 이식성이 향상됩니다.
IOM 모델의 장치 드라이버에는 무엇이 포함되어 있습니까?
프로그램 장치는 데이터 입/출력을 완료하는 데 사용되는 전체 데이터 링크이며, 경우에 따라 단일 주변 장치를 오디오 입/출력 장치와 같은 장치라고 부를 수도 있습니다. DSP 칩 제조업체인 McBSPIICDMA 인터럽트 칩 외부 코덱 및 기타 칩 내부/외부 주변 장치로 구성됩니다. 이러한 데이터 링크에서는 단일 슬라이스 내부/외부 주변 장치가 데이터의 실제 입/출력을 완료할 수 없으므로 장치라고 부를 수 없습니다. 그렇다면 기계실은 어떻게 해당 데이터 입력/출력을 완성합니까?
먼저 장치를 구성하는 주변 장치를 초기화하고 작동 모드를 설정해야 주변 장치가 제대로 작동합니다. 또한 주변 장치의 일부 기능은 주변 장치가 작동할 때 동적으로 조정되어야 합니다. 예를 들어 A/D 변환기의 샘플링 속도는 응용 프로그램 동적 조정이 필요할 수 있습니다. UART 장치의 전송 속도는 응용 프로그램에 의해 동적으로 조정되어야 할 수 있습니다. 인터럽트, DMA/EDMA 채널 등 주변 장치에 해당하는 것도 필요에 따라 응용프로그램에서 동적으로 수정할 수 있습니다. 따라서 장치 드라이버에는 장치 초기화 기능 및 일부 관련 설정 기능이 있어야 합니다.
둘째, 읽기/쓰기, 즉 주변 장치의 가장 기본적인 입/출력 기능을 완성해야 합니다. 응용 프로그램은 일반적으로 데이터를 대량으로 처리하는 반면 주변 장치는 종종 하나의 입/출력 데이터이며 둘 사이에 캐싱을 위한 버퍼가 필요합니다. 장치 드라이버의 입/출력 기능은 주변 장치의 시간 읽기 및 쓰기 작업을 완료하고, 데이터를 버퍼에 저장/읽고, 응용 프로그램이 버퍼를 사용할 수 있을 때 그에 따라 처리합니다. 버퍼가 응용 프로그램과 장치 드라이버 간에 앞뒤로 전환되는 것을 알 수 있습니다. 애플리케이션마다 서로 다른 버퍼가 필요하며, 데이터 덮어쓰기를 방지하기 위해 여러 버퍼가 전환될 수 있습니다. 버퍼 크기, 버퍼 수 및 버퍼 관리 여부는 애플리케이션 요구 사항에 따라 유연하게 조정할 수 있습니다. 주변 장치의 읽기 및 쓰기 작업은 언제든지 수행할 수 있는 것이 아니며, 특정 조건을 충족해야 하며, 일반적으로 인터럽트 신호 또는 로고 신호로 사용됩니다. 또한 입/출력의 효율성을 높이기 위해 DMA/EDMA 공동 작업이 자주 필요하며, 종종 구동을 중단하고 DMA/EDMA 를 연관시킵니다.
마지막으로, 드라이버 입/출력 데이터는 응용 프로그램에서 처리해야 하며, 응용 프로그램은 데이터가 준비된 경우에만 버퍼를 읽고 쓸 수 있으므로 드라이버와 응용 프로그램 동기화 문제가 있습니다. 일반적으로 동기화에는 두 가지 방법이 있습니다. 하나는 차단이고 다른 하나는 콜백 함수가 있는 비차단입니다. 두 가지 동기화 방법이 실제로 "차단" 모드에 해당할 때 소프트웨어 인터럽트 스레드를 선택합니다.
라벨
IOM 모델을 사용하여 기본 장치 드라이버를 개발하는 것은 기존 소프트웨어 개발보다 복잡하며 전체 프로그램의 제어 흐름과 데이터 흐름은 직관적이지 않고 이해하기 어렵습니다. 하지만 이런 소프트웨어 개발 방법을 익히면 다음 프로젝트에서 개발된 프로그램의 상속성과 이식성을 충분히 발휘할 수 있어 향후 소프트웨어 개발에 더 적은 노력을 기울일 수 있습니다. 오늘날 시장 경쟁은 갈수록 치열해지고 있다. 제한된 시간 내에 프로젝트를 완료하고 고객의 요구를 충족시키는 방법, 기업 의사결정권자가 직면해야 할 현실이 됩니다. Anychat 은 개발 시간을 절약하고 프로젝트 개발 주기를 단축할 수 있습니다. 개발 비용을 절약하고 인적 자원 투자를 줄입니다. 기업의 전반적인 경쟁력을 향상시키는 자체 개발 플랫폼; 제품 교차 플랫폼, 널리 사용; 풍부한 API 인터페이스를 통해 타사 서비스와의 통합이 용이합니다. Prosupport 는 안정적이고 신뢰할 수 있는 성능을 제공합니다.