Arduino / 프로세싱과 .NET Micro Framework? 최고의 언어? 최고의 하드웨어?


10

나는 잠시 동안 Arduino와 엉망이되어 왔으며 초보자에서 중급으로 이동하는 과정에 있습니다. 성능 및 하드웨어 가용성 측면에서 .NET Micro Framework 에 대한 의견이 필요합니다 .

저는 .NET 프로그래머이지만 Processing for Arduino가 거의 제로 마찰이 아니라는 것을 알았습니다 ... C #에 너무 가까워서 원하는 문서가 필요하지 않습니다.

어쨌든 어느 쪽이 더 낫습니까?


이 질문도 참조하십시오 (C ++ 관련) : chiphacker.com/questions/3027/…
Kevin Vermeer

답변:


17

초급에서 중급으로 이동하려면 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 카드 또는 원하는 것을 좋아하고 새로운 시스템을 배우십시오. 일단 도착하면 가고 싶은 곳을 더 잘 알게됩니다.

우리는 길을 따라 당신을 도울 수 있습니다!


6
나는 어셈블러와 C에 대한 지식이 필수적이라는 것에 동의하지 않습니다. 마이크로 컨트롤러의 작동 방식이해하는 것이 중요합니다 . 학습 어셈블러 (c, 덜 그렇다)는 확실히이 이해를위한 하나의 경로이지만 유일한 것은 아닙니다.
코너 울프

4
@ 가짜 이름 : 물론, 그래서 나는 "적어도 각각의 일부"라고 말했다. C에서 어셈블리, 16 진수에 이르는 간단한 프로그램과 각 단계를 이해하면 훨씬 더 나은 프로그래머가 될 것입니다. 나중에 원한다면 마법이 그 일을하도록 할 수 있지만 작업중인 기계의 기능을 이해해야합니다.
Kevin Vermeer

죄송합니다. "일부"를 놓쳤습니다.
코너 울프

7

".NET Micro Framework"에 대한 경험이 없지만 저전력 임베디드 플랫폼에서 가상 머신을 실행하는 것과 관련된 모든 것을 의심합니다. 그것은 나에게 낭비처럼 보인다. 기본 머신 코드로 컴파일되는 전용 플랫폼을 실행하는 것과 동일한 효과를 얻으려면 더 많은 전력 프로세서, 더 많은 메모리, 더 많은 전력 소비가 필요합니다. 가상 머신 (JVM과 유사한)을 실행하는 528MHz 안드로이드 폰이 원래의 머신 코드 용으로 컴파일 된 애플리케이션을 실행하는 이전의 몇 년 전 312MHz Palm Treo보다 느리게 느껴지는 이유는 무엇입니까?

간략히 살펴보면 .NET MF에는 ARM 프로세서가 필요합니다.이 프로세서는 Arduino에 사용되는 8 비트 ATMega 칩보다 성능과 복잡성이 한 단계 위입니다.

내 제안은 Arduino가 원하는 것을 수행하면 그 점을 고수한다는 것입니다. 그렇지 않으면 더 강력한 ATMega 또는 ATXmega 칩 이상을 볼 수 있으며 그 위에는 추가 .NET 변환 계층이 없어도 C / C ++에서 직접 ARM과 작동합니다.


2
나는 진심으로 동의하지만, 그것이 일어나고 있다고 생각하지 않습니다. IL이 배포되면 시스템 별 코드로 변환된다고 생각합니다. 다음은 그 가정을 뒷받침하는 링크입니다. microsoft.com/downloads/… 나는 지금까지 Arduino에 매우 만족합니다 ... 나를 설득 할 수있는 유일한 방법은 tinyclr.com에서 꽤 인상적인 방패 선택을 찾았다는 것입니다. 나는 Arduino를위한 방대한 방패 선택을 보지 못했습니다.
Chris B. Behrens

1
프로그래머와의 노력의 균형은 데스크톱 PC가 5 년 또는 10 년 전에 사용한 컴퓨터만큼 프로그램을 부팅하고 시작하는 데 시간이 오래 걸리는 이유이기도합니다.
케빈 베르메르

@Chris-문제는 머신 코드를 실행하지 않는다는 것이 아니라 여러 추상화를 통해 실행한다는 것입니다. 추상화, 객체, 일반 라이브러리, 모듈성 등은 모두 프로그래밍을 단순화한다는 점에서 우수하지만 시간과 공간이 필요합니다.
케빈 베르메르

네,하지만 추상화 계층은 개발 머신에만 존재한다고 생각합니다. 물론 이것은 내가 필요한 정보 일뿐입니다.
Chris B. Behrens

2
@Chris-추상화는 기계어 코드까지 전파됩니다. 결국, 머신은로드, 저장, 추가, 조건 분기 등의 주소에 대한 작업을 수행합니다. 어셈블리는 머신 코드를 일대일로 변환하고 C는 비교적 밀접하게 매핑됩니다. 그러나 프로세서의 명령어 세트에 try / catch 명령어가 없기 때문에 고급 언어에는 많은 작업이 필요합니다. 예외 처리기를 구현하는 데 필요한 기계어 코드는 간단하지 않습니다.
케빈 베르메르

4

중간으로 이동하려면 Arduino 환경 외부의 플랫폼을 사용해보십시오. Atmel MCU로도 8 비트를 유지하거나 다른 공급 업체에서 다른 곳으로 이동할 수 있습니다. IDE를 사용하고, 코드 C 언어를 작성하고, MCU의 작동 방식을 이해하고, 자신의 부트 로더 코드를 작성하거나, 회로 내 프로그래머를 사용하여 계속 움직이십시오.

그러나 마이크로 컨트롤러를 위해 C #으로 작성하려면 다음을 시도하십시오. http://www.trygtech.com/products/sh7619_evb.php

훨씬 큰 MCU를 사용하며 일반적인 .NET 풋 프린트는 약 512K의 플래시 메모리와 256k의 RAM입니다.


2
이 시스템은 .NET Micro 프레임 워크를 사용합니다. 크리스가 의견을 구한 것은 바로 그런 종류의 시스템입니다.
케빈 베르메르

4

방금 Netduino 를 보았습니다 . 시스템 사양이나 세부 사항에 대해서는 잘 모르지만 .NET Micro를 사용하는 것으로 보이므로 적어도 해당 프레임 워크를 사용해 보는 것이 좋습니다.


3

Processing / Arduino에서 가장 큰 문제는 적절한 디버거가 없다는 것입니다. 나는 AVR 용을 가지고 있지만 (a) AVR Studio의 디버거가 느리고 버그가 있거나 (b) Eclipse의 디버깅이 매우 느리고 여전히 버그가 많기 때문에 도움이되지 않습니다. WinAVR에서 시도해 볼 기회는 없었지만 다음은 목록에 있습니다.

물론 Arduino IDE에는 디버거가 없습니다.

간단한 응용 프로그램을 벗어나 유선 및 무선 네트워크 수준에서 관련 작업을 수행해야하는 응용 프로그램을 구축하기 시작하면 매우 실망 스럽습니다. 이것이 주로 .NET MF를 진지하게 고려하는 이유입니다. SDK를 사용하고 있으며 곧 일부 하드웨어가 등장합니다.


죄송합니다 ... 집중력이 떨어집니다! 난 사용 ;-) 일식과 WinAVR 환경의 toochain을

1
나는 고백 할 것이다 ... 어느 시스템에서나 핀 13 외에 디버거가있을 것이라는 것은 결코 일어나지 않았다. Netduino를 다시 한번 살펴보아야한다.
Chris B. Behrens

네; 작은 ATMegas에서 DebugWire를 사용하고 큰 칩 (1280 이상)에서 JTAG를 사용하여 위에서 언급 한 두 가지 환경을 통해 Arduino 앱의 칩 내 확대를 수행 할 수 있습니다. 그래도이 작업을하려면 하드웨어가 있어야하고 저에게는 50 달러 정도의 드래곤이 좋은 구매였습니다

그러나 내가 언급했듯이 두 옵션 모두 최고의 경험에서 평균적인 것처럼 보였습니다. 내가 온 netduino와 디버깅 비교를 기대하고 있습니다.

1
이것에 대한 업데이트-며칠 전에 netduino 플러스를 받았으며 놀고있었습니다. Arduino의 현재 상태와 비교할 때 즉시 사용 가능한 경험이 놀랍습니다. 멋진 것은 필요하지 않습니다-비주얼 스튜디오 (무료 '익스프레스'버전을 사용할 수 있음)와 USB 케이블 만 있으면 곧바로 온보드 디버깅을 시작할 수 있습니다. 모든 지능적인 것들이 IDE에서 작동하며, 다른 플랫폼에서 많은 c / c ++ 작업을 수행했지만 .NET을 사용하면 buildnig 임베디드 코드를 범죄 적으로 쉽게 만들 수 있습니다. ;-)

2

Netduino 를 확인하고 싶을 수도 있습니다 . arduino 레이아웃 및 핀과 호환되도록 제작되었으며 .NET Micro Framework를 실행합니다. 따라서 C #으로 코딩하고 Visual Studio 내에서 디버깅 할 수도 있습니다!

지금까지 나는 매우 훌륭하고 다루기 쉽다는 것을 알았습니다. 많은 튜토리얼을 찾지 못했지만 많은 Arduino 자료를 이식 할 수 있다고 생각합니다. 저는 새로운 것이기 때문에 Arduino 튜토리얼에서 포토 레지스터 / 포토 셀 설정 및 코드를 쉽게 이식 할 수있었습니다.


1

여러 오픈 소스 프로젝트 중 하나를 통해 STM32 (ARM M3)에서 Arduino 스타일 C 개발을 고려할 수 있습니다. LeafLabsxduino 에는 작동하는 하드웨어와 Arduino 기반 툴체인이 있습니다. 일반 Atmega 칩보다 32 비트 마이크로 컨트롤러가 필요할 때 Leaflabs Maple 보드를 사용하고 있습니다


1

당신은 볼 수 있었다 http://www.hpinfotech.ro/html/cvavr.htm 더 편리의 수준처럼 전문적이 사용했던 아트멜을위한 IDE를 사용하고 일부 CI를 작성하는 쉬운 좋은 매우 좋은 인 당신 Visual Studio와 같은 IDE에서 가져옵니다. 나는 Eclipse를 구입 한 것만 큼 매끄럽지 않은 안드로이드 개발을 위해 약간 혼란 스럽습니다.

Netduino는 재미를 위해 Tricopter 제어 시스템을 구현했습니다. 실시간이 매우 뛰어나고 Visual Studio 2010으로 C #으로 작성되어 안정적으로 작동합니다. 장치의 디버깅은 일반적으로 훌륭합니다. 자동 동기화를 통해 데이터를 동기화합니다. 와이파 이와 나는 항공기에 작은 HTTP 서버가 있습니다.


0

프로덕션 응용 프로그램 (정밀 측정 장치)에서 .NET Micro Framework를 사용합니다. 잘 작동합니다.

오늘날의 마이크로 프로세서는 'create-see-profile-change-see ...'패러다임을 사용할 수있는 상태에 도달했습니다. 메모리 용량은 현재 매우 크고 저렴하므로 메모리 부족 상태로 쌓이지 않을 것입니다.

그리고 C # 개발자는 원하는 조건에 도달하기위한 적절한 프로파일 링이 코드를 작성하는 동안 코드를 작성하는 동안 (그리고 어쩌면 그렇지 않은) 다른 작업을 수행하는 것보다 더 나은 방법이라고 생각합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.