ในหัวข้อนี้ขอเกริ่นก่อนว่า เป็นการอับเดทเฟิร์มแวร์ลงไปใหม่โดยผ่านบูทโหลดเดอร์ที่ทำหน้าที่ช่วยจัดการกำหนดค่าและอัดเฟิร์มแวร์ลงไปใหม่ด้วยตัวเอง ไม่ต้องใช้อุปกรณ์แฟลชโปรแกรมให้ยุ่งยาก โดยจะใช้สาย Serial TTL (ความเร็ว 115.2Kbps)เชื่อมต่อเข้ากับ TL-MR3020 เพื่อใช้ควบคุมสั่งงาน และสายแลนต่อตรงไปยังคอมพิวเตอร์(ความเร็ว 100Mbps)เพื่อดึงเฟิร์มแวร์ขนาดใหญ่(3.9MB) ดังนั้นจะเห็นว่าเราใช้พอร์ตซีเรียลความเร็วต่ำเพื่อควบคุมสั่งงานเป็นเทอร์มินอล แล้วดาวน์โหลดตัวเฟิร์มแวร์ผ่านสายแลนที่มีความเร็วสูงได้ ด้วยตัวโปรแกรมบูทโหลดเดอร์ในตัว TL-MR3020 ซึ่งจะขึ้นมาทำงานก่อนทุกครั้งชั่วขณะหนึ่งที่เสียบไฟเข้าไปใหม่ ๆ ดังนั้นการเชื่อมต่อเพื่อลงเฟิร์มแวร์ใหม่หรือจะซ่อมจากสาเหตุเฟิร์มแวร์เสียก็ตาม จะได้ดังภาพ ที่มี USB to Serial TTL ต่อระหว่างคอมพิวเตอร์กับ TL-MR3020 และสายแลนที่ต่อตรง(หรือจะต่อผ่านฮับก็ได้) ระหว่างคอมฯกับเร้าเตอร์
ภาพการต่อโดยรวมทั้งหมด
เตรียมโปรแกรมซอร์ฟแวร์
1.ให้เข้าเว็บ http://aprs.nakhonthai.net/index.php?ind=downloads&op=section_view&idev=4 ดาวน์โหลดไฟล์ TFTPD32,PuTTY และ MR3020 Firmware V.1 มาเก็บไว้ก่อน
2.ทำการแตกไฟล์ tftpd32.400.zip ในตัวอย่างนี้ได้ดาวน์โหลดลงไว้ในไดร์ D:\MR3020 แล้วคลิ๊กขวาเลือก แยกไฟล์ลงที่นี่ (ของ WinRAR) มันจะแตกไฟล์ทั้งหมดลงในไดเร็คทอรี่นี้ จะอยู่ในพาธเดียวกับไฟล์ตัวเฟิร์มแวร์(MR3020_aprs.bin)
เมื่อแตกไฟล์แล้วจะได้ไฟล์เพิ่มมา 3ไฟล์คือ tftpd.chm,tftpd.exe และ tftpd.ini
3.ให้เสียบสายแลนเข้ากับฮับ หรือถ้าต่อสายตรงไปยัง TL-MR3020 ก็ให้เสียบไฟให้ MR3020 เพื่อให้การ์ดแลนในคอมฯทำงาน แล้วจึงตั้งไอพีเป็น 192.168.1.100
4.รันโปรแกรม tftpd ซึ่งเป็นโปรแกรมแชร์ไฟล์บนวินโดว์ให้ลีนุกซ์หรือบูทโหลดเดอร์ผ่านสายแลน โดยการดับเบิ้ลคลิ๊กไฟล์ tftpd32.exe เนื่องจากมันทำหน้าที่แชร์ไฟล์ผ่าน TCP/IP ไฟล์วอลของคอมพิวเตอร์มันจะขึ้นเตือนว่าให้ยอมรับไหม ? แนะนำให้ติ๊กทั้ง Private/Public แล้วกดปุ่ม [Allow access] (ถ้าไม่เปิดหรือยอมรับ ท่านต้องไปกำหนดในวินโดว์ไฟล์วอลเองซึ่งจะยุ่งยากพอสมควร)
5.เมื่อเปิดโปรแกรมขึ้นมาแล้วตรง Current Directory โดยค่าปกติคือพาธที่โปรแกรมอยู่ ให้เลือกพาธไปยังไดเร็คทอรี่ที่เก็บไฟล์เฟิร์มแวร์ MR3020_aprs.bin ในตัวอย่างเราได้เก็บไฟล์ไว้ที่เดียวกันคือ D:\MR3020 จึงไม่ต้องเลือกใหม่ ส่วน Server interface ให้เลือกไอพีที่เราได้ตั้งไว้คือ 192.168.1.100 ถ้าไม่เห็น..ให้ดูไฟที่ขั้วแลนว่ากระพริบติดหรือไม่ ? หรือเช็คว่าการ์ดแลนทำงานหรือยัง ? ก็ทำให้แลนการ์ดทำงาน(ต้องเสียบไฟให้ MR3020 ด้วยถ้าต่อตรง) เมื่อเลือกสองหัวข้อนี้เสร็จแล้ว การแชร์ไฟล์จากไดเร็คทอรี่ D:\MR3020 ด้วยไอพี 192.168.1.100 ก็ทำงานแล้ว
เตรียมการทางด้านฮาร์ดแวร์
1.ในตัวอย่างนี้เราได้ใช้ USB to Serial TTL ซึ่งใช้ชิพ CP2102 หรือท่านอื่นที่ซื้อมาแบบอื่นก็ให้ทำการติดตั้งไดร์เวอร์ของรุ่นนั้นไป ให้สามารถทำงานได้เสียก่อน ซึ่งในแต่ละรุ่นยีห้อนั้นแตกต่างกันออกไป เมื่อพร้อมใช้งานแล้วให้เข้าไปยัง Device Manager (ในคอนโทรลพาเนล) คลิ๊กในหัวข้อ Port(COM&LPT) ในตัวอย่างจะเห็นไดร์เวอร์มันทำงานอยู่ใน COM2 ซึ่งในนี้เราจะเปลี่ยนมัน(ใครจะไม่เปลี่ยนก็ได้ ให้ข้ามไป) เป็นพอร์ต COM1
2.ถ้าต้องการเปลี่ยนพอร์ตใหม่ ให้คลิ๊กขวาเลือก Properties (ถ้าไม่เปลี่ยนพอร์ดใหม่ให้ข้ามหัวข้อต่อไปนี้ไปได้เลย)
3.จะเข้าหน้าต่างคุณสมบัติ เลือกแท็บ Port Settings แล้วคลิ๊กปุ่ม [Advanced...]
4.เมื่อเข้าหน้าต่าง Advanced Settings ให้เลือกตำแหน่งพอร์ตที่ต้องการ ในตัวอย่างเลือก COM1 แล้วกดปุ่ม OK
5.เนื่องจากพอร์ต COM1 มีการใช้งานอยู่มันจึงขึ้นเตือน ก็ยืนยันกดปุ่ม [Yes]
6.จะกลับมาหน้าจอ Device Manager จะเห็นว่ามันเปลี่ยนเป็นพอร์ต COM1 ให้แล้ว... ที่สำคัญตอนนี้ให้จำไว้ว่าท่านได้เสียบ USB ไว้ในช่องไหน ก็ให้กลับมาเสียบช่องเดิม ถ้าเอาไปเสียบช่องอื่นหมายเลขพอร์ตมันก็จะเปลี่ยนไปพอร์ตอื่นอีก ให้ลองถอดแล้วเสียบใหม่ดู จะเห็นว่ามันคงพอร์ตเดิมที่เราตั้งไว้
เตรียมการลงเฟิร์มแวร์ใหม่
1..ให้ใช้ USB to Serial TTL (ไม่ใช่ USB to RS232 ที่ขายตามร้านคอมฯ) ต่อเข้าเร้าเตอร์ MR3020 โดยใช้เพียง 3ขาคือ GND,RX,TX ส่วนขาไฟไม่ต้องต่อเพราะเร้าเตอร์เราจะต่อไฟต่างหากจาก USB Power ที่มันให้มา ถ้าไม่มั่นใจว่าเป็น USB to Serial TTL หรือไม่ ให้ใช้มิเตอร์วัดไฟที่ขา TX/RX ดูว่า ถ้าไฟต่ำกว่า 0V หรือ สูงกว่า 5V จะใช้ไม่ได้มันเป็น RS232 ถ้าเอามาต่อ CPU ของเร้าเตอร์จะพัง ระวังกันด้วยนะครับ
การต่อสาย
GND(USB)->GND(MR3020)
RXD(USB)->RX(MR3020)
TXD(USB)->TX(MR3020)
2.เปิดโปรแกรมเทอร์มินอลในตัวอย่างใช้ PuTTY จากไฟล์ putty.exe พอขึ้นหน้าต่างตั้งค่า ให้เลือกตามลำดับดังนี้
(1)เลือก Session
(2)เลือก Conect type: Serial
(3)ใส่พอร์ต จากตัวอย่างเตรียมไว้ใน COM1
(4)ใส่ความเร็วต้องเป็น 115200
(5)กดเปิดการเชื่อมต่อ (ก่อนกดเปิด ต้องเสียบ USB to Serial TTL เข้ากับคอมพิวเตอร์แล้ว) ถ้าเปิดแล้วยังไม่ขึ้นหน้าจอดำ ๆ ของ PuTTY ให้ถอด USB to Serial TTL แล้วเสียบใหม่ ลองใหม่อีกครั้ง
เมื่อเราเสียบไฟเข้าเร้าเตอร์ MR3020 ก็จะแสดงผลขึ้นประมาณนี้
3.การเข้าสู่เชลล์ของบูทโหลดเดอร์ ตรงนี้ต้องอาศัยมือไว(ใจเร็วนิดหนึ่ง) พอเริ่มเสียบไฟปุ๊บ เห็นตัวอักษรกำลังขึ้น ให้รีบพิมพ์คำว่า tpl (ใช้ตัวพิมพ์เล็กตามนี้เลย) จะเป็นช่วงสั้น ๆ ระหว่างบันทัดแรก U-Boot....## Booting image at ใช้เวลาเพียงไม่กี่วินาทีเท่านั้น...(ย้ำว่าต้องมือไวกันนิดหนึ่ง) ถ้าขึ้น ## Booting image at .... แสดงว่าเลยไปแล้วให้ถอดปลั๊ก USB Power ที่เสียบกับ MR3020 ออกแล้วเสียบเข้าไปใหม่เริ่มพยายามเข้าเชลล์บูทโหลดเดอร์กันใหม่ ถ้าเข้าได้มันจะขึ้นคอมมานด์พร๊อม hornet> ดังภาพประกอบ
4.เมื่อเข้าสู่เชลล์คอมมานด์ของบูทโหลดเดอร์สำเร็จแล้ว คราวนี้เราจะต้องกำหนดไอพีให้เร้าเตอร์ด้วยคำสั่ง setenv ipaddr 192.168.1.123 และกำหนดไอพีที่เราแชร์เฟิร์มแวร์ด้วย tftpd เอาไว้ในขั้นตอนเตรียมซอฟร์แวร์ด้วยคำสั่ง setenv serverip 192.168.1.100
ขยายความ
setenv คือคำสั่งเซ็ตค่าตัวแปร
ipaddr คือตัวแปรไอพีของเร้าเตอร์
serverip คือตัวแปรไอพีของเซิร์ฟเวอร์ที่แชร์ไฟล์มาให้
5.เมื่อเรากำหนดไอพีของเร้าเตอร์และไอพีที่แชร์ไฟล์มาให้แล้ว ให้เราดาวน์โหลดไฟล์เฟิร์มแวร์ใหม่มาเก็บไว้ในแรมก่อน (แรมในเร้าเตอร์มี 32MB) เพื่อความปลอดภัยก่อนอัดลงแฟลชเมมโมรี่ ด้วยคำสั่ง tftpboot 0x80000000 MR3020_aprs.bin ก็จะเห็นมันเชื่อมต่อแล้วเริ่มดาวน์โหลดลงมาที่ตัวเร้าเตอร์แล้ว ซึ่งแน่นอนว่าตัวโปรแกรม tftpd ต้องเปิดทำงานอยู่ตามขั้นตอนเตรียมการและสายแลนต่ออยู่
ขยายความ
tftpboot คือคำสั่งดาวน์โหลดไฟล์ด้วย tftp
0x80000000 คือตำแหน่งหน่วยความจำแรม ในเลขฐาน 16
MR3020_aprs.bin คือชื่อไฟล์เฟิร์มแวร์ที่จะดาวน์โหลดมา
ในหน้าต่าง Tftpd32 นั้น ถ้าคลิ๊กดูในแท็บ Log viewer จะเห็นข้อมูลการดาวน์โหลดไฟล์จากเร้าเตอร์ออกไป ในแท็บ Tftp Server นั้นจะขึ้นมาให้เห็นแว็บเดียวตอนที่กำลังดาวน์โหลดอยู่นะครับ
6.เมื่อดาวน์โหลดเฟิร์มแวร์มายังแรมสำเร็จแล้ว ต่อไปเราก็ทำการลบข้อมูลในแฟลชเมมโมรี่ หรือหน่วยความจำที่เก็บเฟิร์แวร์เก่านั่นเองโดยใช้คำสั่ง erase 0x9f020000 +0x3c0000
ขยายความ
erase คือคำสั่งลบข้อมูลหน่วยความจำ
0x9f020000 คือตำแหน่งหน่วยความจำในแฟลชเมมโมรี่ที่ใช้เก็บเฟิร์มแวร์หรืออิมเมจ ในเลขฐาน 16
+0x3c0000 คือขนาดหน่วยความจำที่ต้องการลบ ในเลขฐาน 16
7.เมื่อลบเฟิร์มแวร์เก่าไปแล้ว ก็คัดลอกเฟิร์มแวร์ใหม่ที่ดาวน์โหลดไว้ในแรม อัดลงไปในแฟลชเมมโมรี่ใหม่ด้วยคำสั่ง cp.b 0x80000000 0x9f020000 0x3c0000
ขยายความ
cp.b คือคำสั่งคัดลอกข้อมูล
0x80000000 คือตำแหน่งหน่วยความจำแรม ที่ได้ดาวน์โหลดเฟิร์มแวร์มาเก็บไว้ ในเลขฐาน 16
0x9f020000 คือตำแหน่งหน่วยความจำในแฟลชเมมโมรี่ที่ใช้เก็บเฟิร์มแวร์หรืออิมเมจ ในเลขฐาน 16
0x3c0000 คือขนาดข้อมูลที่ต้องการคัดลอก ในเลขฐาน 16
8.เมื่ออัดเฟิร์มแวร์ลงไปใหม่แล้วก็เป็นอันเสร็จ แล้วสั่งรีบูทด้วยคำสั่ง bootm 9f020000 หรือจะถอดปลัีกแล้วเสียบใหม่ก็ได้เช่นกัน
ขยายความ
bootm คือคำสั่งบูทระบบไปยังหน่วยความจำ
9f02000 คือตำแหน่งหน่วยความจำในแฟลชเมมโมรี่ที่ใช้เก็บเฟิร์มแวร์หรืออิมเมจ ในเลขฐาน 16
9.ถ้ารอดูไปเรื่อย ๆ มันจะไม่เข้าสู่เชลล์คอมมานด์ของลีนุกซ์ให้นะครับ เพราะเฟิร์มแวร์ MR3020_aprs.bin ตัวนี้เราได้ปิดพอร์ตไปแล้ว เพื่อเอาไปใช้งานกับ nTNC-Module นั่นเอง ดังนั้นจะต้องต่อสายแลน หรือต่อผ่าน WiFi เข้าใช้เชลล์ด้วยไอพี 192.168.1.1 ต่อไป
ทิป..การคัดลอกข้อความจากเว็บบอร์ด(เลือกข้อความแล้วกด Ctl+C) ไปวางในโปรแกรม PuTTY ได้ด้วยการกดปุ่ม [Shift+Insert]