나는 잠시 동안 Arduino와 엉망이되어 왔으며 초보자에서 중급으로 이동하는 과정에 있습니다. 성능 및 하드웨어 가용성 측면에서 .NET Micro Framework 에 대한 의견이 필요합니다 .
저는 .NET 프로그래머이지만 Processing for Arduino가 거의 제로 마찰이 아니라는 것을 알았습니다 ... C #에 너무 가까워서 원하는 문서가 필요하지 않습니다.
어쨌든 어느 쪽이 더 낫습니까?
나는 잠시 동안 Arduino와 엉망이되어 왔으며 초보자에서 중급으로 이동하는 과정에 있습니다. 성능 및 하드웨어 가용성 측면에서 .NET Micro Framework 에 대한 의견이 필요합니다 .
저는 .NET 프로그래머이지만 Processing for Arduino가 거의 제로 마찰이 아니라는 것을 알았습니다 ... C #에 너무 가까워서 원하는 문서가 필요하지 않습니다.
어쨌든 어느 쪽이 더 낫습니까?
답변:
초급에서 중급으로 이동하려면 C가 필요합니다. 전체 Windows 잠금 토론을 제쳐두고도 C에서 프로그래밍에 능숙해야 양질의 작업을 수행 할 수 있습니다. .NET Micro 또는 C ++와 같은 고급 언어의 마이크로 컨트롤러
임베디드 시스템은 피라미드로 구성되어 있으며 훌륭한 디자이너가 되려면 각 단계 중 적어도 일부를 알아야합니다.
^ 사용자 코드
^^ 운영 체제
^^^ C 언어
^^^^ 조립 언어
^^^ ^^ 마이크로 컨트롤러 아키텍처
^^^^^^ 디지털 디자인
^^^^^^^ 반도체
^^^^^^^^ 기본 전자 공학 (옴의 법칙)
Arduino 프레임 워크는 애호가가 C 언어와 운영 체제 사이의 피라미드에 편리하게 연결되도록합니다.
.NET Micro Framework 질문과 관련하여 정보 는 다음 과 같이 말합니다.
일반적인 .NET Micro Framework 장치에는 외부 메모리 관리 장치 (MMU)가없는 32 비트 프로세서가 있으며 64K의 RAM (Random-Access Memory)을 가질 수 있습니다.
또한이 브로셔는 Windows Mobile , Windows Embedded , CE 6.0 및 .NET Compact Framework와 차별화 되며 Linux, Real-Time, Java 및 사용자 지정 운영 체제와 비교됩니다. 이것은 Arduino / Processing 프레임 워크에서 크게 뛰어납니다.
Arduino에는 1k RAM의 8 비트 프로세서가 있습니다. 8 비트 vs. 32 비트 전력 손실 외에도 나열된 프로세서 대부분의 절반보다 적은 속도로 실행됩니다. 32 비트 프로세서로의 이동을 권장하지는 않지만 중간에서 고급으로 이동하는 것이 좋습니다.
C # 또는 C ++의 몇 줄로 많은 시간과 메모리를 사용하는 것이 매우 쉽습니다. 이는 기가 바이트 RAM을 갖춘 몇 기가 헤르츠에서 실행되는 듀얼 코어 프로세서에서는 중요하지 않지만 임베디드 장치에서 큰 차이를 만들 수 있습니다 . 어셈블리 언어 및 / 또는 C가 좋을 때까지 또는 C # 또는 C ++의 전문가가 될 때까지 임베디드 프로그래밍에 사용하지 않는 것이 좋습니다.
따라서 WinAVR 다운로드를 시작하고 C에서 간단한 LED 깜박임 루틴을 프로그래밍합니다. C가 완전히 혼란 스러우면 PC에서 약간의 기본 코드 ( "Hello World")를 수행 한 다음 마이크로 컨트롤러이지만 반드시 그럴 필요는 없습니다. 다음으로 UART를 통한 통신으로 이동하고 인터럽트 사용을 시작한 다음 C에서 Arduino 프로젝트 중 일부를 다시 실행하십시오. 그런 다음 다른 마이크로 컨트롤러 ( PIC 또는 ARM 등 )가있는 새로운 개발 보드를 찾거나 만드십시오! LCD 화면, 이더넷, SD 카드 또는 원하는 것을 좋아하고 새로운 시스템을 배우십시오. 일단 도착하면 가고 싶은 곳을 더 잘 알게됩니다.
우리는 길을 따라 당신을 도울 수 있습니다!
".NET Micro Framework"에 대한 경험이 없지만 저전력 임베디드 플랫폼에서 가상 머신을 실행하는 것과 관련된 모든 것을 의심합니다. 그것은 나에게 낭비처럼 보인다. 기본 머신 코드로 컴파일되는 전용 플랫폼을 실행하는 것과 동일한 효과를 얻으려면 더 많은 전력 프로세서, 더 많은 메모리, 더 많은 전력 소비가 필요합니다. 가상 머신 (JVM과 유사한)을 실행하는 528MHz 안드로이드 폰이 원래의 머신 코드 용으로 컴파일 된 애플리케이션을 실행하는 이전의 몇 년 전 312MHz Palm Treo보다 느리게 느껴지는 이유는 무엇입니까?
간략히 살펴보면 .NET MF에는 ARM 프로세서가 필요합니다.이 프로세서는 Arduino에 사용되는 8 비트 ATMega 칩보다 성능과 복잡성이 한 단계 위입니다.
내 제안은 Arduino가 원하는 것을 수행하면 그 점을 고수한다는 것입니다. 그렇지 않으면 더 강력한 ATMega 또는 ATXmega 칩 이상을 볼 수 있으며 그 위에는 추가 .NET 변환 계층이 없어도 C / C ++에서 직접 ARM과 작동합니다.
중간으로 이동하려면 Arduino 환경 외부의 플랫폼을 사용해보십시오. Atmel MCU로도 8 비트를 유지하거나 다른 공급 업체에서 다른 곳으로 이동할 수 있습니다. IDE를 사용하고, 코드 C 언어를 작성하고, MCU의 작동 방식을 이해하고, 자신의 부트 로더 코드를 작성하거나, 회로 내 프로그래머를 사용하여 계속 움직이십시오.
그러나 마이크로 컨트롤러를 위해 C #으로 작성하려면 다음을 시도하십시오. http://www.trygtech.com/products/sh7619_evb.php
훨씬 큰 MCU를 사용하며 일반적인 .NET 풋 프린트는 약 512K의 플래시 메모리와 256k의 RAM입니다.
Processing / Arduino에서 가장 큰 문제는 적절한 디버거가 없다는 것입니다. 나는 AVR 용을 가지고 있지만 (a) AVR Studio의 디버거가 느리고 버그가 있거나 (b) Eclipse의 디버깅이 매우 느리고 여전히 버그가 많기 때문에 도움이되지 않습니다. WinAVR에서 시도해 볼 기회는 없었지만 다음은 목록에 있습니다.
물론 Arduino IDE에는 디버거가 없습니다.
간단한 응용 프로그램을 벗어나 유선 및 무선 네트워크 수준에서 관련 작업을 수행해야하는 응용 프로그램을 구축하기 시작하면 매우 실망 스럽습니다. 이것이 주로 .NET MF를 진지하게 고려하는 이유입니다. SDK를 사용하고 있으며 곧 일부 하드웨어가 등장합니다.
Netduino 를 확인하고 싶을 수도 있습니다 . arduino 레이아웃 및 핀과 호환되도록 제작되었으며 .NET Micro Framework를 실행합니다. 따라서 C #으로 코딩하고 Visual Studio 내에서 디버깅 할 수도 있습니다!
지금까지 나는 매우 훌륭하고 다루기 쉽다는 것을 알았습니다. 많은 튜토리얼을 찾지 못했지만 많은 Arduino 자료를 이식 할 수 있다고 생각합니다. 저는 새로운 것이기 때문에 Arduino 튜토리얼에서 포토 레지스터 / 포토 셀 설정 및 코드를 쉽게 이식 할 수있었습니다.
당신은 볼 수 있었다 http://www.hpinfotech.ro/html/cvavr.htm 더 편리의 수준처럼 전문적이 사용했던 아트멜을위한 IDE를 사용하고 일부 CI를 작성하는 쉬운 좋은 매우 좋은 인 당신 Visual Studio와 같은 IDE에서 가져옵니다. 나는 Eclipse를 구입 한 것만 큼 매끄럽지 않은 안드로이드 개발을 위해 약간 혼란 스럽습니다.
Netduino는 재미를 위해 Tricopter 제어 시스템을 구현했습니다. 실시간이 매우 뛰어나고 Visual Studio 2010으로 C #으로 작성되어 안정적으로 작동합니다. 장치의 디버깅은 일반적으로 훌륭합니다. 자동 동기화를 통해 데이터를 동기화합니다. 와이파 이와 나는 항공기에 작은 HTTP 서버가 있습니다.
프로덕션 응용 프로그램 (정밀 측정 장치)에서 .NET Micro Framework를 사용합니다. 잘 작동합니다.
오늘날의 마이크로 프로세서는 'create-see-profile-change-see ...'패러다임을 사용할 수있는 상태에 도달했습니다. 메모리 용량은 현재 매우 크고 저렴하므로 메모리 부족 상태로 쌓이지 않을 것입니다.
그리고 C # 개발자는 원하는 조건에 도달하기위한 적절한 프로파일 링이 코드를 작성하는 동안 코드를 작성하는 동안 (그리고 어쩌면 그렇지 않은) 다른 작업을 수행하는 것보다 더 나은 방법이라고 생각합니다.