Microsoft MVP성태의 닷넷 이야기
사물인터넷: 2. 넷두이노 - 4.2.0 펌웨어 업데이트 방법 [링크 복사], [링크+제목 복사],
조회: 29783
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
(연관된 글이 3개 있습니다.)

넷두이노 - 4.2.0 펌웨어 업데이트 방법


넷두이노를 연결하고, "C:\Program Files (x86)\Microsoft .NET Micro Framework\v4.1\Tools\mfdeploy.exe" 파일을 실행합니다. Device 란에 "USB"를 선택하고, 우측에 넷두이노 플러스 장치를 선택한 다음 "Target" / "Device Capabilities (Ctrl+Shift+C)" 메뉴를 선택하면 다음과 같은 식으로 넷두이노 정보가 출력됩니다.

HalSystemInfo.halVersion:               4.1.2821.0
HalSystemInfo.halVendorInfo:            Netduino Plus by Secret Labs LLC
HalSystemInfo.oemCode:                  34
HalSystemInfo.modelCode:                177
HalSystemInfo.skuCode:                  4097
HalSystemInfo.moduleSerialNumber:       00000000000000000000000000000000
HalSystemInfo.systemSerialNumber:       0000000000000000
ClrInfo.clrVersion:                     4.1.2821.0
ClrInfo.clrVendorInfo:                  Netduino Plus by Secret Labs LLC
ClrInfo.targetFrameworkVersion:         4.1.2821.0
SolutionReleaseInfo.solutionVersion:    4.1.0.6
SolutionReleaseInfo.solutionVendorInfo: Netduino Plus by Secret Labs LLC
SoftwareVersion.BuildDate:              Feb 14 2011
SoftwareVersion.CompilerVersion:        400902
FloatingPoint:                          True
SourceLevelDebugging:                   True
ThreadCreateEx:                         True
LCD.Width:                              0
LCD.Height:                             0
LCD.BitsPerPixel:                       0
AppDomains:                             True
ExceptionFilters:                       True
IncrementalDeployment:                  True
SoftReboot:                             True
Profiling:                              False
ProfilingAllocations:                   False
ProfilingCalls:                         False
IsUnknown:                              False

이 중에서, SolutionReleaseInfo.solutionVersion 란에 해당하는 값이 현재 넷두이노 기기에 설치된 펌웨어 버전입니다. (제 경우에는 4.1.0.6이라는 것이죠. ^^)

이 글에서는 펌웨어를 4.2로 업데이트 하는 방법을 설명할 텐데요. 사실 방법은 다음의 비디오에서 잘 설명해 주고 있습니다.

Netduino Firmware Upgrade Tutorial 
; http://www.youtube.com/watch?feature=player_embedded&v=RkjAmrXIRuo

글로는 다음의 포럼에 잘 정리되어 있습니다.

Netduino Firmware v4.2.0
; http://forums.netduino.com/index.php?showtopic=5115

검색해 보니 한글로 된 자료는 없는 것 같아서 이번 기회에 제가 한번 써봤습니다. ^^




우선, 지난번 글에서 설치했던 "Netduino SDK v4.1"과 ".NET Micro Framework SDK v4.1"을 제어판의 "프로그램 추가/삭제"를 이용해 제거합니다.

그리고 나서 다시 넷두이노 다운로드 사이트를 방문하여 ".NET Micro Framework SDK v4.2"와 "Netduino SDK v4.2.1.0"을 다운로드 받습니다.

tools and documentation
; http://netduino.com/downloads/

.NET Micro Framework SDK v4.2 
; http://www.netduino.com/downloads/MicroFrameworkSDK_NETMF42_QFE2.msi

Netduino SDK v4.2.1.0 (32-bit) - http://www.netduino.com/downloads/netduinosdk_32bit_NETMF42.exe
Netduino SDK v4.2.1.0 (64-bit) - http://www.netduino.com/downloads/netduinosdk_64bit_NETMF42.exe

설치를 완료한 다음, 4.2 버전의 펌웨어를 다운로드 받습니다. (netduino.com에 회원가입이 필요합니다.)

Netduino_Firmware_4.2.0.0.zip (349.27K) 
; http://forums.netduino.com/index.php?app=core&module=attach&section=attach&attach_id=2058

압축을 해제하면 다음과 같은 구조로 파일이 생성됩니다.

TinyBooterDecompressor.bin (파일)
\tinyclr.hex\              (폴더)
             ER_CONFIG     (파일)
             ER_FLASH      (파일)

그다음, "Atmel SAM-BA In-system Programmer" 프로그램을 다운로드 받습니다. (회원 가입을 하거나 Guest 권한으로 임시 다운로드가 가능합니다.)

Atmel SAM-BA In-system Programmer
; http://www.atmel.com/tools/ATMELSAM-BAIN-SYSTEMPROGRAMMER.aspx

SAM-BA 2.12 for Windows (XP, Vista, Seven editions)
; http://www.atmel.com/System/BaseForm.aspx?target=tcm:26-42282

SAM-BA 2.12 Patch 2a (Windows XP, Vista, Seven editions)
; http://www.atmel.com/System/BaseForm.aspx?target=tcm:26-44859

SAM-BA는 다운로드 후 설치를 완료합니다. 이것으로 다운로드 및 설치 준비 작업이 모두 완료됩니다.




그럼, 펌웨어 업그레이드 작업을 해볼까요?

이를 위해 넷두이노 리셋작업을 먼저 해야 합니다. 넷두이노를 USB 케이블로 컴퓨터에 연결한 상태에서 점퍼 와이어 같은 걸로 3V3 Power와 "gold ERASE pad"를 건드려 줍니다. 3V3 Power는 아래의 그림에서 하단에 나오는 단자이고, "ERASE pad" 영역은 상단에 0번 단자 바로 아래에 있는 황금색의 조그만 영역입니다.

netduino_firm_update_1.gif

위의 2가지 접촉점을 연결해 주면 넷두이노가 리셋되는데, 외관상으로는 별다른 이펙트가 없으므로 단지 건드려 주기만 하면 됩니다. 그다음 USB 연결을 해제하고 다시 연결합니다. 그럼, 넷두이노 플러스 보드의 경우 PWR, LED, ACT에 불빛이 계속 켜져 있게 되고, 윈도우의 장치 관리자에는 "Ports" 영역에 "GPS Camera Detect(COM3)"으로 인식됩니다. (COM3 번호는 상황에 따라 다를 수 있습니다.)

이전에 설치해 두었던 SAM-BA 2.12 프로그램을 실행시키면 COM3에 연결된 넷두이노는 인식하지만 보드 종류는 알 수 없어서 "no_board"로 선택되어 있습니다.

netduino_firm_update_2.png

보드 종류는 넷두이노의 중앙 칩을 자세하게 들여다 보면 확인할 수 있습니다.

netduino_firm_update_3.png

제 넷두이노 플러스 보드도 위의 이미지와 종류가 같았기에 at91sam7x512-ek를 선택한 다음 "Connect" 버튼을 누릅니다. 정상적인 경우 아래와 같은 창이 뜹니다.

netduino_firm_update_4.png

여기서 크게 2가지 작업을 해주어야 합니다.

첫번째로, "Scripts" 그룹 상자의 항목을 "Boot from Flash(GPNVM2)"로 선택하고 "Execute" 버튼을 눌러 줍니다. 그럼 하단 박스에는 다음과 같은 식의 상태 메시지가 출력됩니다.

FLASH::ScriptGPNMV 4
-I- GPNVM2 set
(sam-ba_2.12) 1 % 

1%라고 되어 있지만 모두 끝난 것이므로 더 기다릴 것이 없습니다. 이어서 "Enable Flash access"를 선택하고 다시 "Execute" 버튼을 누르면 다음의 상태 메시지가 출력됩니다.

FLASH::Init
-I- Loading applet applet-flash-at91sam7x512.bin at address 0x202000
-I- Memory Size : 0x80000 bytes
-I- Buffer address : 0x202B44
-I- Buffer size: 0x1D300 bytes
-I- Applet initialization done
(sam-ba_2.12) 1 % 

두번째로, "Download / Upload File" 그룹 상자의 "Send File Name"으로 이전에 다운로드 받아 두었던 TinyBooterDecompressor.bin 파일을 선택한 후 "Send File" 버튼을 눌러 줍니다. 그럼, 다음의 메시지가 출력된 후에,

send_file {Flash} "D:/.../Netduino_Firmware_4.2.0.0/TinyBooterDecompressor.bin" 0x100000 0
-I- Send File D:/.../Netduino_Firmware_4.2.0.0/TinyBooterDecompressor.bin at address 0x100000
 first_sector 0 last_sector 2 
-I-     Writing: 0xA0F4 bytes at 0x0 (buffer addr : 0x202B44)
-I-     0xA0F4 bytes written by applet
(sam-ba_2.12) 1 % 

"Do you want to lock involved lock region(s) (0 to 2)?"라는 질문창이 뜨는데 여기서 "No" 버튼을 눌러서 계속해 줍니다. 파일 전송은 빠르게 끝나고 메시지 창에는 다음의 글이 나옵니다.

Do not lock 
(sam-ba_2.12) 1 % 

SAM-BA 프로그램을 종료하고 넷두이노와 컴퓨터를 연결한 USB를 끊고 다시 연결합니다. 장치 관리자에서 확인해 보면, "Ports" 영역의 "GPS Camera Detect(COM3)" 항목이 없어지고 예전처럼 "Universal Serial Bus controllers" 영역에 "Netduino" 항목이 생긴 것을 확인할 수 있습니다.

다음으로 "C:\Program Files (x86)\Microsoft .NET Micro Framework\v4.2\Tools\mfdeploy.exe" 프로그램을 실행하고 "Device"를 "USB"로 맞춘 후 연결된 넷두이노를 선택한 다음 "Ping" 버튼을 누릅니다. 그럼 다음과 같아 v4.2.0.0 문자열을 확인할 수 있습니다.

netduino_firm_update_5.png

이제, 펌웨어를 업데이트 할 텐데요. mfdeploy.exe 프로그램에서 "Image File" 우측의 "Browse..." 버튼을 눌러 이전에 다운로드 받았던 ER_CONFIG, ER_FLASH 2개의 파일을 선택하고 "Deploy" 버튼을 눌러 줍니다.

netduino_firm_update_6.png

정상적으로 완료되면 상태 창에 다음과 같은 메시지를 확인할 수 있습니다.

Chk signature 
Signature PASS

다시 넷두이노의 USB 연결을 해제하고 연결해 줍니다.

끝!!!




잘 되었는지 확인해 볼까요? ^^

이전의 글에서,

.NET Micro Framework - 넷두이노 플러스
; https://www.sysnet.pe.kr/2/0/1392

넷두이노 보드의 스위치 값이 거꾸로 반환되어서 다음과 같이 프로그램을 했었는데요.

public static void Main()
{
    OutputPort led = new OutputPort(Pins.ONBOARD_LED, false);
    InputPort sw1 = new InputPort(Pins.ONBOARD_SW1, false, Port.ResistorMode.Disabled);
    bool switchState = false;

    while (true)
    {
        switchState = sw1.Read();
        led.Write(!switchState);
    }
}

LED에 쓰는 코드를 이제 원래 예상했던 대로 변경시켜 줍니다.

led.Write(switchState);

그다음, 이 때의 프로젝트가 ".NET Micro Framework 4.1" 기준으로 만들어진 것이기 때문에 프로젝트 속성 창에서 "4.2" 버전으로 맞춰준 후 빌드하고 실행합니다.

netduino_firm_update_7.png

이제부터는 보드의 스위치를 누를 때만 LED에 불빛이 들어오는 것을 확인할 수 있습니다. ^^




[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]

[연관 글]






[최초 등록일: ]
[최종 수정일: 7/5/2021]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 



2013-06-08 02시21분
넷두이노 포럼에 회원가입이 안된다고 펌웨어 파일을 요청하셨네요. ^^ 그래서 이 글에 첨부해 두었습니다. 4.2.0.0 버전입니다.
정성태

... 91  92  93  94  95  96  97  98  99  100  101  102  [103]  104  105  ...
NoWriterDateCnt.TitleFile(s)
11357정성태11/15/201726965개발 환경 구성: 336. 윈도우 10 Bash 쉘에서 C++ 컴파일하는 방법
11356정성태11/15/201728568사물인터넷: 8. Raspberry Pi Zero(OTG)를 다른 컴퓨터에 연결해 가상 마우스 + 키보드로 쓰는 방법 [4]
11355정성태11/15/201724447사물인터넷: 7. Raspberry Pi Zero(OTG)를 다른 컴퓨터에 연결해 가상 마우스로 쓰는 방법 [2]파일 다운로드2
11354정성태11/14/201728616사물인터넷: 6. Raspberry Pi Zero(OTG)를 다른 컴퓨터에 연결해 가상 키보드로 쓰는 방법 [8]
11353정성태11/14/201725803사물인터넷: 5. Raspberry Pi Zero(OTG)를 다른 컴퓨터에 연결해 가상 이더넷 카드로 쓰는 방법 [1]
11352정성태11/14/201721819사물인터넷: 4. Samba를 이용해 윈도우와 Raspberry Pi간의 파일 교환 [1]
11351정성태11/7/201725122.NET Framework: 698. C# 컴파일러 대신 직접 구현하는 비동기(async/await) 코드 [6]파일 다운로드1
11350정성태11/1/201721100디버깅 기술: 108. windbg 분석 사례 - Redis 서버로의 호출을 기다리면서 hang 현상 발생
11349정성태10/31/201721503디버깅 기술: 107. windbg - x64 SOS 확장의 !clrstack 명령어가 출력하는 Child SP 값의 의미 [1]파일 다운로드1
11348정성태10/31/201718003디버깅 기술: 106. windbg - x64 역어셈블 코드에서 닷넷 메서드 호출의 인자를 확인하는 방법
11347정성태10/28/201721592오류 유형: 424. Visual Studio - "클래스 다이어그램 보기" 시 "작업을 완료할 수 없습니다. 해당 인터페이스를 지원하지 않습니다." 오류 발생
11346정성태10/25/201718139오류 유형: 423. Windows Server 2003 - The client-side extension could not remove user policy settings for 'Default Domain Policy {...}' (0x8007000d)
11338정성태10/25/201716637.NET Framework: 697. windbg - SOS DumpMT의 "BaseSize", "ComponentSize" 값에 대한 의미파일 다운로드1
11337정성태10/24/201718766.NET Framework: 696. windbg - SOS DumpClass/DumpMT의 "Vtable Slots", "Total Method Slots", "Slots in VTable" 값에 대한 의미파일 다운로드1
11336정성태10/20/201719487.NET Framework: 695. windbg - .NET string의 x86/x64 메모리 할당 구조
11335정성태10/18/201718502.NET Framework: 694. 닷넷 - <Module> 클래스의 용도
11334정성태10/18/201719565디버깅 기술: 105. windbg - k 명령어와 !clrstack을 조합한 호출 스택을 얻는 방법
11333정성태10/17/201718752오류 유형: 422. 윈도우 업데이트 - Code 9C48 Windows update encountered an unknown error.
11332정성태10/17/201719716디버깅 기술: 104. .NET Profiler + 디버거 연결 + .NET Exceptions = cpu high
11331정성태10/16/201718083디버깅 기술: 103. windbg - .NET 4.0 이상의 환경에서 모든 DLL에 대한 심벌 파일을 로드하는 파이썬 스크립트
11330정성태10/16/201717320디버깅 기술: 102. windbg - .NET 4.0 이상의 환경에서 DLL의 심벌 파일 로드 방법 [1]
11329정성태10/15/201721427.NET Framework: 693. C# - 오피스 엑셀 97-2003 .xls 파일에 대해 32비트/64비트 상관없이 접근 방법파일 다운로드1
11328정성태10/15/201724352.NET Framework: 692. C# - 하나의 바이너리로 환경에 맞게 32비트/64비트 EXE를 실행하는 방법파일 다운로드1
11327정성태10/15/201718160.NET Framework: 691. AssemblyName을 .csproj에서 바꾼 경우 빌드 오류 발생하는 문제파일 다운로드1
11326정성태10/15/201718453.NET Framework: 690. coreclr 소스코드로 알아보는 .NET 4.0의 모듈 로딩 함수 [1]
11325정성태10/14/201719271.NET Framework: 689. CLR 4.0 환경에서 DLL 모듈의 로드 주소(Base address) 알아내는 방법
... 91  92  93  94  95  96  97  98  99  100  101  102  [103]  104  105  ...