Microsoft MVP성태의 닷넷 이야기
사물인터넷: 2. 넷두이노 - 4.2.0 펌웨어 업데이트 방법 [링크 복사], [링크+제목 복사],
조회: 22951
글쓴 사람
정성태 (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 버전입니다.
정성태

1  2  3  4  5  [6]  7  8  9  10  11  12  13  14  15  ...
NoWriterDateCnt.TitleFile(s)
13492정성태12/19/20232468개발 환경 구성: 699. WSL에 nopCommerce 예제 구성
13491정성태12/19/20232295Linux: 63. 리눅스 - 다중 그룹 또는 사용자를 리소스에 권한 부여
13490정성태12/19/20232439개발 환경 구성: 698. Golang - GLIBC 의존을 없애는 정적 빌드 방법
13489정성태12/19/20232201개발 환경 구성: 697. GoLand에서 ldflags 지정 방법
13488정성태12/18/20232180오류 유형: 884. HTTP 500.0 - 명령행에서 실행한 ASP.NET Core 응용 프로그램을 실행하는 방법
13487정성태12/16/20232477개발 환경 구성: 696. C# - 리눅스용 AOT 빌드를 docker에서 수행 [1]
13486정성태12/15/20232291개발 환경 구성: 695. Nuget config 파일에 값 설정/삭제 방법
13485정성태12/15/20232156오류 유형: 883. dotnet build/restore - error : Root element is missing
13484정성태12/14/20232282개발 환경 구성: 694. Windows 디렉터리 경로를 WSL의 /mnt 포맷으로 구하는 방법
13483정성태12/14/20232401닷넷: 2184. C# - 하나의 resource 파일을 여러 프로그램에서 (AOT 시에도) 사용하는 방법파일 다운로드1
13482정성태12/13/20233103닷넷: 2183. C# - eFriend Expert OCX 예제를 .NET Core/5+ Console App에서 사용하는 방법 [2]파일 다운로드1
13481정성태12/13/20232406개발 환경 구성: 693. msbuild - .NET Core/5+ 프로젝트에서 resgen을 이용한 리소스 파일 생성 방법파일 다운로드1
13480정성태12/12/20232816개발 환경 구성: 692. Windows WSL 2 + Chrome 웹 브라우저 설치
13479정성태12/11/20232455개발 환경 구성: 691. WSL 2 (Ubuntu) + nginx 환경 설정
13477정성태12/8/20232704닷넷: 2182. C# - .NET 7부터 추가된 Int128, UInt128 [1]파일 다운로드1
13476정성태12/8/20232464닷넷: 2181. C# - .NET 8 JsonStringEnumConverter의 AOT를 위한 개선파일 다운로드1
13475정성태12/7/20232521닷넷: 2180. .NET 8 - 함수 포인터에 대한 Reflection 정보 조회파일 다운로드1
13474정성태12/6/20232337개발 환경 구성: 690. 닷넷 코어/5+ 버전의 ilasm/ildasm 실행 파일 구하는 방법 - 두 번째 이야기
13473정성태12/5/20232620닷넷: 2179. C# - 값 형식(Blittable)을 메모리 복사를 이용해 바이트 배열로 직렬화/역직렬화파일 다운로드1
13472정성태12/4/20232284C/C++: 164. Visual C++ - InterlockedCompareExchange128 사용 방법
13471정성태12/4/20232414Copilot - To enable GitHub Copilot, authorize this extension using GitHub's device flow
13470정성태12/2/20232746닷넷: 2178. C# - .NET 8부터 COM Interop에 대한 자동 소스 코드 생성 도입파일 다운로드1
13469정성태12/1/20232545닷넷: 2177. C# - (Interop DLL 없이) CoClass를 이용한 COM 개체 생성 방법파일 다운로드1
13468정성태12/1/20232391닷넷: 2176. C# - .NET Core/5+부터 달라진 RCW(Runtime Callable Wrapper) 대응 방식파일 다운로드1
13467정성태11/30/20232528오류 유형: 882. C# - Unhandled exception. System.Runtime.InteropServices.COMException (0x800080A5)파일 다운로드1
13466정성태11/29/20232688닷넷: 2175. C# - DllImport 메서드의 AOT 지원을 위한 LibraryImport 옵션
1  2  3  4  5  [6]  7  8  9  10  11  12  13  14  15  ...