This page is available in: en th

การบูตที-เอนจิ้นโดยใช้ยูเอสบี (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

  1. ต้องแน่ใจก่อนว่าไม่มีการ์ดซีเอฟ (CF card) เสียบอยู่ จากนั้นจึงทำการเปิดที-เอนจิ้นซึ่งจะทำการบูทจากรอม
  2. เสียบตัวเก็บข้อมูลแบบยูเอสบีเข้ากับที-เอนจิ้น ที-เคอเนลจะทำการตรวจจับโดยอัตโนมัติและทำการโหลดไดร์เวอที่เหมาะสม
  3. สร้างพาร์ทิชั่น (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]%
  1. ทำการฟอร์แมทพาร์ทิชั่นและนำรอมดิสก์มาไว้ในพาร์ทิชั่น

[/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]% 
  1. ปิดและรีสตาร์ทที-เอนจิ้น ครั้งต่อไปที่เปิดมันจะทำการบูทจากยูเอสบี

[/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 ออกจากตัวเก็บข้อมูลประเภทยูเอสบีเพราะว่ามันไม่ได้ใช้อ่านเวลาระบบทำงาน