문제

나는 내가 D에 대해 읽은 것을 많이 좋아한다.

  • 통합 문서 (내 직업이 훨씬 쉬워 질 것입니다.)
  • 언어에 내장 된 테스트 기능.
  • 언어의 디버그 코드 지원.
  • 전달 선언. (나는 항상 같은 기능을 두 번 선언하는 것이 바보라고 생각했습니다.)
  • 전처리기를 대체 할 수있는 기능이 내장되어 있습니다.
  • 모듈
  • typedef는 별명 대신 적절한 유형 검사에 사용됩니다.
  • 중첩 된 기능. (기침 파스칼기침)
  • 내 및 출력 매개 변수. (얼마나 분명한가!)
  • 낮은 레벨 프로그래밍을 지원합니다 - 내장 시스템, 오 그래!

하지만:

  • D는 OS를 실행하지 않을 임베디드 시스템을 지원할 수 있습니까?
  • 16 개의 비트 프로세서를 지원하지 않는다는 명백한 확신이 그러한 기계에서 실행되는 임베디드 애플리케이션에서 전적으로 확신합니까? 때로는 문제를 해결하기 위해 망치가 필요하지 않습니다.
  • 쓰레기 수집은 Windows 또는 Linux에서 훌륭하지만 불행히도 내장 된 응용 프로그램은 언젠가 명시 적 메모리 관리를 수행해야합니다.
  • 배열 경계 확인, 당신은 그것을 좋아하고, 당신은 그것을 싫어합니다. 디자인 보증에는 적합하지만 성능 문제에는 허용되지는 않습니다.
  • 멀티 스레딩 지원을 위해 OS를 실행하지 않고 임베디드 시스템에 영향을 미칩니다. 우리는 인터럽트를 좋아하지 않는 고객이 있습니다. 훨씬 적은 OS/멀티 스레딩.
  • 임베디드 시스템을위한 D- 라이트가 있습니까?

따라서 기본적으로 몇 메가 바이트 (때로는 Magabyte보다 작음)가있는 임베디드 시스템에 적합하며 OS를 실행하지 않고 Compile Time (요구 사항에 따라 최대 메모리 사용량을 알고 있어야합니다.)은 32 비트보다 작은 것입니다. 프로세서?

나는 일부 기능에 관심이 있지만 데스크탑 응용 프로그램 개발자를 대상으로 한 인상을받습니다.

구체적으로 16 비트 구현에 부적합하게 만드는 것은 무엇입니까? (16 비트 아키텍처가 플래시 메모리 또는 RAM에서 런타임을 유지하기에 충분한 양의 메모리를 해결할 수 있다고 가정합니다.) 32 비트 값은 16 비트보다 느리고 라이브러리 코드를 사용하여 더 많은 작업이 필요하지만 여전히 계산할 수 있습니다.

도움이 되었습니까?

해결책

이 질문에 대한 짧은 대답은 "아니오"라고 말해야합니다.

  • 기계가 16 비트 인 경우 D에 맞는 데 큰 문제가 발생합니다. 명시 적으로 설계되지 않았습니다.
  • D는 그 자체로 가벼운 언어가 아니며 일반적으로 앱에 연결되어있는 많은 런타임 유형 정보를 생성하며 TypeSafe variadics (따라서 표준 형식의 기능은 탱고 또는 Phobos)에도 필요합니다. 이는 가장 작은 응용 프로그램조차도 놀랍게도 크기가 크기 때문에 RAM이 낮은 시스템에서 D를 실격시킬 수 있음을 의미합니다. 또한 공유 LIB (이러한 문제 중 일부를 완화시킬 수 있음)로 런타임을 가진 D는 거의 테스트되지 않았습니다.
  • 모든 현재 D 라이브러리에는 아래의 C 표준 라이브러리가 필요하므로 일반적으로 OS가 필요하므로 D 사용에 대해서도 작동합니다. 그러나 D에는 실험적인 커널이 존재하므로 불가능하지는 않습니다. 오늘날까지도 도서관이 없을 것입니다.

나는 개인적으로 당신이 성공하는 것을보고 싶습니다. 그러나 그것이 쉬운 일이 될 것임을 의심합니다.

다른 팁

가장 먼저 읽었습니다 Larsivi의 대답. 그는 D 런타임에 작업했으며 자신이 무슨 말을하는지 알고 있습니다.

나는 단지 추가하고 싶었다 : 약간 당신이 요청한 것에 대해 이미 가능합니다. 그것은 당신을 끝까지 얻지 못하고, 그리스도는 여기에서 1 마일만큼 좋지만 여전히 참고로 : Fyi :

쓰레기 수집은 Windoze 또는 Linux에서 훌륭하지만 불행히도 내장 된 앱은 언젠가 설명 메모리 관리를 수행해야합니다.

쓰레기 수집을 끄질 수 있습니다. 다양한 실험이 있습니다. 참조 std.gc 특히 모듈 std.gc.disable. 또한 메모리를 할당 할 필요가 없습니다. new: 당신이 사용할 수있는 malloc 그리고 free. 배열도 할당 할 수 있습니다. 슬라이스를 사용하여 할당 된 메모리 주변에 D 배열을 부착하면됩니다.

배열 경계 확인, 당신은 그것을 좋아하고, 당신은 그것을 싫어합니다. 디자인 보증에는 적합하지만 성능 문제에는 허용되지는 않습니다.

그만큼 배열에 대한 사양 구체적으로 컴파일러는 바운드를 확인할 수 있도록해야합니다. 껐다 ( "구현 노트"참조). gdc 제공 -fno-bounds-check, 그리고, 그리고 dmd 사용 -release 비활성화해야합니다.

멀티 스레딩 지원을 위해 OS를 실행하지 않고 임베디드 시스템에 영향을 미칩니다. 우리는 인터럽트를 좋아하지 않는 고객이 있습니다. 훨씬 적은 OS/멀티 스레딩.

이것은 명확하지 않지만 대부분의 C 런타임이 멀티 스레딩을 끄는 것을 허용한다는 점을 감안할 때 D 런타임 그것을 비활성화합니다. 내가 당신에게 말할 수는 없지만 지금은 쉬운 지에 대한 것인지 여부입니다.

이 질문에 대한 답은 구식입니다.

D는 OS를 실행하지 않을 임베디드 시스템을 지원할 수 있습니까?

D가 될 수 있습니다 ARM Linux를 위해 크로스 컴파일 그리고 팔 피질 M. 일부 프로젝트는 Cortex-M 아키텍처를위한 라이브러리를 만드는 것을 목표로합니다 STM32에 대한 미니 리브와 마찬가지로 아니면 이거 STM32에 일반 라이브러리를 사용하는 프로젝트. (ARM Cortex-M에서 D에서 자신의 미니멀리즘 OS를 구현할 수 있습니다.)

16 개의 비트 프로세서를 지원하지 않는다는 명백한 확신이 그러한 기계에서 실행되는 임베디드 애플리케이션에서 전적으로 확신합니까? 때로는 문제를 해결하기 위해 망치가 필요하지 않습니다.

아니요, 위의 답변을 참조하십시오 ... (그러나 나는 Cortex-M보다 "작은"아키텍처가 가까운 시일 내에 지원 될 것으로 기대하지 않을 것입니다.)

쓰레기 수집은 Windows 또는 Linux에서 훌륭하지만 불행히도 내장 된 응용 프로그램은 언젠가 명시 적 메모리 관리를 수행해야합니다.

당신은 쓸 수 있습니다 쓰레기 수집 무료 코드. (D 재단은 "GC 무료 준수"표준 라이브러리 Phobos를 목표로하는 것으로 보이지만 이는 진행중인 작업입니다.)

배열 경계 확인, 당신은 그것을 좋아하고, 당신은 그것을 싫어합니다. 디자인 보증에는 적합하지만 성능 문제에는 허용되지는 않습니다.

(당신이 말했듯이 이것은 당신의 "개인 취향"과 디자인 결정에 따라 다릅니다. 그러나 나는 D 컴파일러 개발자와 D의 디자인 목표의 배경으로 인해 바운드 점검에 대한 수용 가능한 성능 오버 헤드를 가정합니다.)

멀티 스레딩 지원을 위해 OS를 실행하지 않고 임베디드 시스템에 영향을 미칩니다. 우리는 인터럽트를 좋아하지 않는 고객이 있습니다. 훨씬 적은 OS/멀티 스레딩.

(질문은 무엇입니까? D의 언어 기능을 사용하여 Mutlithreading을 구현할 수 있습니다. 이 질문에서 설명한 것처럼. BTW : 인터럽트를 사용하려면 이것을 고려하십시오 피질 M3의 "Hello World"프로젝트.)

임베디드 시스템을위한 D- 라이트가 있습니까?

그만큼 d 임베디드 도메인의 대상.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top