การบูตที-เอนจิ้นโดยใช้ยูเอสบี (Booting the T-Engine from USB)
เขียนโดย : Fauzi Abbas (CHiPES, NTU) และ Mohit Sindhwani (TE@Onghu)
Translated by: Peerapong Puapan

ที-เอนจิ้น (T-Engine) มียูเอสบีโฮส (USB Host) ที่นักพัฒนาสามารถเชื่อมต่ออุปกรณ์และและอุปกรณ์รอบนอก (Peripheral) เช่น ตัวเก็บข้อมูลและอุปกรณ์ที่ติดต่อกับมนุษย์ (User Interface) จำพวกเมาส์และคีย์บอร์ด ในบทความนี้เราจะมาพูดถึงวิธีการบูตที-เอนจิ้นโดยใช้ตัวเก็บข้อมูล (Mass Storage) ซึ่งต่อทางยูเอสบี ประโยชน์ของการบูท (Boot) โดยวิธีนี้คือทดแทนการใช้ช่องพีซีการ์ด (PC Card Slot) ทำให้เราสามารถต่ออุปกรณ์อื่นๆเข้ากับใช้ช่องพีซีการ์ดได้ แล้วในบทความต่อๆไปเราจะมาพูดถึงการใช้แลนไร้สาย (Wireless LAN) แบบพีซีเอมซีไอเอการ์ด (PCMCIA Card) บนชุดพัฒนาที-เอนจิ้น
ในบทความนี้ เราจะใช้ชุดพัฒนาที-เอนจิ้นของบริษัท Personal Media Corporation โดยรุ่นที่ใช้คือที-เอนจิ้น SH7727 ถ้าคุณเคยลองทำบนที-เอนจิ้นรุ่นอื่นๆ กรุณาติดต่อเราเพื่อที่จะนำข้อมูลมาเพิ่มในหน้านี้ต่อไป หรือถ้าบทความนี้ยังมีข้อผิดพลาดประการใดขอให้แจ้งมาทางเราเพื่อจะได้แก้ไขให้ถูกต้อง
ขั้นตอนจะคล้ายๆกับการทำการบูทโดยการ์ดคอมแพคแฟลช (Compact Flash Card) ที่ใช้ในช่องพีซีเอมซีไอเอ
การทำงานเบื้องหลัง
เมื่อระบบเริ่มทำงาน ที-มอนิเตอร์ (T-Monitor) จะถูกทำการประมวลผลเป็นโปรแกรมแรกในรอมดิสก์ (ROM Disk) (หน่วยความจำแฟลชภายใน) มันจะทำการกำหนดค่าเริ่มต้นให้กับระบบและไปเริ่มการทำงานของที-เคอร์เนล (T-Kernel) การกระทำทั้งหมดนี้ขึ้นอยู่กับการปรับแต่งค่า มันสามารถตั้งให้บูทเคอร์เนลได้จากหน่วยความจำแฟลช หรือการ์ดคอมแพคแฟลช
Upon starting up, the T-Monitor reads PBOOT from the ROM Disk (rda) and can continue to boot from Compact Flash if a bootable Compact Flash Card is plugged into the PC Card slot. If a bootable CF Card is plugged into the PC Card slot, the system will always continue to boot from the PC Card (irrespective of other settings).
ในระหว่างการเริ่มที-เมอนิเตอร์จะอ่านพีบูทจากรอมดิสก์และสามารถบูทได้จากคอมแพคแฟลชถ้าคอมแพคแฟลชที่บูทได้อยู่ในช่องพีซีการ์ด ถ้ามีคอมแพคแฟลชที่บูทได้เสียบอยู่กับช่องพีซีการ์ด ระบบจะทำการบูทจากพีซีการ์ดเสมอ โดยไม่ขึ้นอยู่กับการตั้งค่าใดๆ
Note from Mohit: Hi, in the above text, I don’t see any mention of PBOOT, rda, CF card – just want to be sure that nothing is missed. Thanks.
ถ้าไม่มีคอมแพคแฟลชที่บูทได้อยู่ในช่องพีซีการ์ด ที-มอนิเตอร์จะทำการอ่านข้อมูลทั้งหมดนี้จากรอมได้แก่ SBOOT, KERNEL.SYS, SYSCONF, DEVCONF, STARTUP.CMD, and chgsys ถึงจุดนี้ที-เคอเนลจะถูกโหลดเรียบร้อยแล้วอีกทั้งยังมีไดร์เวอร์ (Driver) ที่สนับสนุนการทำงานของพอร์ตยูเอสบีด้วย ซึ่งในตอนนี้มันจะอ่านไฟล์จากตัวเก็บข้อมูลแบบยูเอสบี (USB storage) ถ้าหากมีตัวเก็บข้อมูลแบบยูเอสบีที่สามารถบูทได้ต่ออยู่กับพอร์ตยูเอสบี ที่เป็นเช่นนี้ก็เพราะว่าตัวที-มอนิเตอร์เองมันไม่สนับสนุนการใช้งานของตัวเก็บข้อมูลแบบยูเอสบี ซึ่งจะสามารถสนับสนุนได้จากระบบปฏิบัติการขั้นที่สูงกว่ามันขึ้นไป
ถ้าจะพูดกันเชิงเทคนิคแล้วที-เอนจิ้นไม่ได้บูทจากยูเอสบี ที-มอนิเตอร์จะเริ่มการทำงานจากรอมและโหลดที-เคอร์เนลพร้อมทั้งไดร์เวอร์พื้นฐานจากในรอม หลังจากนั้นก็จะไปประมวลผลในตัวเก็บข้อมูลแบบยูเอสบี ไดร์เวอร์อื่นๆทั้งหมดจำเป็นต้องอยู่ในตัวเก็บข้อมูลแบบยูเอสบีด้วย
สำหรับข้อมูลเรื่องขั้นตอนการบูทและการสตาร์ทอัพ (startup) ของที-เอนจิ้น สามารถค้นหาได้จากคู่มือฉบับล่าสุดของ PMC สำหรับข้อมูลอ้างอิงของเราได้มาจากหัวข้อ 2.4 ใน T-Engine/SH7727 Development Kit Manual 1.A0.06 (January 2005).
ขั้นตอน
สำหรับการบูทด้วยยูเอสบีนั้น จะต้องเปลี่ยนดิปสวิทซ์ (DIP switch) อันที่ 3 ให้เป็นสถานะทำงาน (ON) ตามที่คู่มือบอกเอาไว้ คุณสามารถดาวน์โหลดคู่มือล่าสุดได้จากเว็บไซต์ของ PMC
- ต้องแน่ใจก่อนว่าไม่มีการ์ดซีเอฟ (CF card) เสียบอยู่ จากนั้นจึงทำการเปิดที-เอนจิ้นซึ่งจะทำการบูทจากรอม
- เสียบตัวเก็บข้อมูลแบบยูเอสบีเข้ากับที-เอนจิ้น ที-เคอเนลจะทำการตรวจจับโดยอัตโนมัติและทำการโหลดไดร์เวอที่เหมาะสม
- สร้างพาร์ทิชั่น (partition) และเลือกความจุของพาร์ทิชั่น
[/SYS]% hdpart uda
uda [C:977 H:4 S:32 B:125184 (61 MB)]
No System Boot StartCHS End CHS SecNo SecCnt MB
1 00 ------ 00 0: 0: 0 0: 0: 0 0 0 0
2 00 ------ 00 0: 0: 0 0: 0: 0 0 0 0
3 00 ------ 00 0: 0: 0 0: 0: 0 0 0 0
4 00 ------ 00 0: 0: 0 0: 0: 0 0 0 0
** Create/Delete/Boot/Edit/Quit ? c
Create PartNo (1-4) ? 1
Size [MB] (<62MB) ? 32
** Create/Delete/Boot/Edit/Update/Quit ? b
Boot PartNo (1-4) ? 1
** Create/Delete/Boot/Edit/Update/Quit ? u
** uda: Updated Master Boot Block
[/SYS]%
- ทำการฟอร์แมทพาร์ทิชั่นและนำรอมดิสก์มาไว้ในพาร์ทิชั่น
[/SYS]% format -b uda0 TE
Format uda0 [STD] TE
Logical Formatting...
Writing BootCode...
Disk Format Success.
[/SYS]% att uda0 A
uda0 -> A
[/SYS]% cp -b -v -r * /A
copied: SBOOT
copied: KERNEL.SYS
...(snip)...
copied: bin
[/SYS]%
- ปิดและรีสตาร์ทที-เอนจิ้น ครั้งต่อไปที่เปิดมันจะทำการบูทจากยูเอสบี
[/SYS]% exit
<< EXIT cli >>
[IMS]% exit -3
คำสั่งนี้ใช้เพื่อรีสตาร์ทที-เอนจิ้นโดยไม่ต้องกดสวิตช์ SW1
ที-เอนจิ้นจะใช้เวลาไม่นานนักในการบูทจากยูเอสบี
ในขณะที่ใช้ยูเอสบีบูทที-เอนจิ้น มีบางประเด็นที่จะต้องระวังดังต่อไปนี้:
- การเปลี่ยนแปลงค่าของ DEVCONF, SYSCONF, STARTUP.CMD, etc.: เมื่อบูทจากยูเอสบี ไฟล์พวกนี้ไม่ได้อ่านมาจากตัวเก็บข้อมูลแต่อ่านมาจากรอม ถ้าคุณอยากจะแก้ไขไฟล์พวกนี้คุณต้องใช้ที-มอนิเตอร์ในการคัดลอกไฟล์ที่แก้ไขไปไว้ในรอมโดยตรง แล้วเราจะมาพูดถึงเรื่องนี้กันในบทความต่อๆไป
- ตัวสตาร์ทอัพโปรแกรมของคุณเอง: วิธีที่ง่ายที่สุดที่จะแก้ไขตัวสตาร์ทอัพโปรแกรมคือให้แก้ไขไฟล์ที่ชื่อ STARTUP.CLI เนื่องจากที-เอนจิ้นอ่านไฟล์นี้จากยูเอสบี
- ไดร์เวอร์ของอุปกรณ์: ไดร์เวอร์เช่นยูเอสบีโฮสต์ได้ถูกคอมไพล์เข้าไปในเคอร์เนล ส่วนไดร์เวอร์อื่นๆจำเป็นที่จะต้องมีอยู่ในตัวเก็บข้อมูลแบบยุเอสบีเพื่อที่เคอร์เนลจะได้โหลดไปใช้
- หลังจากบูทโดยใช้ยูเอสบี คุณสามารถทำการแมพรอมโดยใช้คำสั่ง att rda A
- คุณสามารถลบ PBOOT, SBOOT, DEVCONF, SYSCONF, STARTUP.CMD, TKERNEL.SYS และ chgsys ออกจากตัวเก็บข้อมูลประเภทยูเอสบีเพราะว่ามันไม่ได้ใช้อ่านเวลาระบบทำงาน