Industrial Computer and Automation Solutions in Malaysia

Tuesday, October 26, 2010

Windows Sensors and Location Platform

Windows Sensors and Location Platform

    เพิ่งรู้ว่า Windows 7 มีของเล่นใหม่ ตามชื่อข้างบนเลย ออกชุดพัฒนา driver และ sdk ที่รองรับการเชื่อมต่อและอ่านข้อมูลจาก sensors ต่างๆ อย่างในชุดคิตที่เอามาเปิดตัวนี่ก็เป็นของ Freescale บอร์ดประกอบไปด้วย sensors ต่างๆดังนี้
win7_devkit - Ambient light sensor
 - 3D accelerometer
 - Dual touch strip sensors
ตัวอย่างที่ให้มาด้วย เป็นการตรวจจับความสว่างของสภาพแวดล้อม ถ้ามากก็จะเพิ่มความสว่างของจอขึ้นมา เอารูปชุดคิต และ block diagram ของ api ทั้ง sensor และ location มาให้ดู เอาไว้ผมมีปัจจัยเมื่อไรจะเอาตัวจริงมาลองให้ดูนะ
จากรูป WDK คือ Windows Driver Kit ชื่อเรียกใหม่แทน DDK (จริงๆก็ไม่ใหม่เท่าไรแล้วละ) ใน WDK ยังมี WDF (Windows Driver Foudation) ที่ทำให้เปลี่ยนจากเขียนด้วย C มาเป็นแบบ COM (ซึ่งผู้เชี่ยวชาญทั้งหลายชอบใจกันมาก เชียร์กันจัง) แล้วก็มีเรื่อง user mode driver เข้ามาด้วย จากเดิมที่มีแต่ kernel mode driver เอาไว้ค่อยเขียนถึงเรื่องการเขียน driver อีกที ข้อมูลเยอะนะ แต่เขียนยาก
win7_sensorwin7_location

Windows CE 6.0 R3

Windows CE 6.0 R3

    หายไปหลายวัน นั่งปั่นงานอยู่กับเจ้า xpe (xp embedded) นี่แหละ สิบกว่าชั่วโมงต่อวัน กลัวจะเสร็จไม่ทัน บิลนู่นนี่มารอเต็มไปหมด ฮ่าๆ แหม่ ไอ้เจ้า xpe เนี่ยมันก็เล่นยากอยู่ มีทริก มีสับขาหลอกเยอะเหมือนกัน กว่าจะได้ออกมาส่งให้ลูกค้าได้เนี่ย ยิ่งเจอโปรแกรมมีออปชั่นเยอะๆด้วย โอย… จดโน้ตเอาไว้ เตรียมเขียนเป็นซีรียส์ละ มีคนยุให้เขียนหนังสือขายไปเลย ก็ ได้ค้าบ จะพยายามนะ
    มีข่าวมาบอกเล่ากันด้วย
    ไมโครซอฟต์เพิ่งประกาศปล่อย Windows Embedded รุ่นใหม่ออกมา ก็จะมีเทคโนโลยีที่สำคัญคือ Silverlight 2.0 ครับ ตัวที่ปล่อยออกมานี้เป็นเวอร์ชั่น RTM (ready to manufacturing) ก็จะมี Windows CE 6.0 R3, สายการผลิต Windows Embedded Enterprise และ สายการผลิต Windows Embedded Server โดยยังประกาศว่าจะออก RTM ของ Embedded Standard 2011 ภายในครึ่งปีแรกของปี 2010 ด้วยครับ
 New features in CE 6.0 R3:

Silverlight for Windows EmbeddedThe power of Silverlight brought to Windows Embedded CE to create rich applications and user interfaces
Internet Explorer EmbeddedInternet Explorer with panning and zooming capabilities and a customizable interface to optimize the browsing experience on devices
Flash LiteBrowser plug in to render rich media websites
Touch and GesturePlug-in engine to enable natural input capabilities and gesture animations
Connection ManagerInfrastructure technology to manage multiple network interfaces on the device
Microsoft Office and PDF ViewersApplications to render Microsoft Office Word, PowerPoint, Excel and Adobe PDF content on the device
QQ MessengerDevice side client to connect to popular Instant Messaging service
    จุดเน้นก็อยู่ที่เจ้า Silverlight นี่ละครับ โดยพยายามจะบอกว่า จะทำให้แยกการพัฒนาออกจากกันได้โดยเด็ดขาด ระหว่างนักออกแบบและนักพัฒนา… เอาไว้ปั่นงานเสร็จแล้วจะมาขยายความกันต่อไปนะครับ
    ตอนนี้ขอตัวไปส่งงานก่อน

Image Processing ตอน เริ่มต้น

Image Processing ตอน เริ่มต้น

ว่าจะเขียนรีวิว video capture card สองรุ่น คือ adlink RTV-24 ซึ่งทาง WJ technology ได้ให้ยืมมาลองเล่น กับ ของเพื่อนป้อมแห่ง maxmega ซึ่งมาเป็นชุด กับ บอร์ด mini-itx ของ via รุ่น VB8001 ซึ่งมีสล็อต mini-pci อยู่บนบอร์ดจึงจับคู่กับ capture card ของ yuan รุ่น sc290 มา ทั้งสองตัวต่างมีจุดเด่นต่างกัน โดย เจ้า RTV-24 นั้นให้เอาท์พุตได้ 4 channel เต็มขนาด D1(PAL/NTSC) เฟรมเรท 25/30 ต่อ channel ส่วนของ yuan รุ่นนี้มาเล็กหน่อย เน้นที่การบันทึกและเข้ารหัสแบบ H.264 ได้พร้อมๆกันถึง 4 channel ไม่ต้องเปลืองแรง CPU ส่วนการแสดงผลแบบ analog นั้นทำได้ที่ขนาด CIF ต่อ channel โดยสามารถดูได้พร้อมๆกันทั้งสี่แชนแนล ซึ่งก็เพียงพอกับการใช้มอนิเตอร์ ก็คงเหมาะกับเอาไปทำเครื่อง DVR นั่นเอง
ก็พูดให้ฟัง เกริ่นกันคร่าวๆ เดี๋ยวจะไม่ได้เริ่มเขียนสักทีหากทิ้งให้เนิ่นนานไปจน เค้าขอคืนฮาร์ดแวร์ไปหมด ฮา
แต่จะรีวิวทั้งที ก็ให้มันดูมีน้ำมีเนื้อขึ้นมาหน่อยดีกว่า ไม่ใช่แค่เอาภาพขึ้นมาดูกันเฉยๆ ไหนๆก็ซื้อการ์ดจอรุ่นใหญ่มาแล้ว เอาสองเรื่องมาจับรวมเป็นเรื่องเดียวซะเลย ฮา ก็กะว่าจะเอาภาพวิดิโอที่ได้มาผ่านอัลกอริทึมบางตัว เช่น deinterlacing หรือ พวก filter ต่างๆ โดยจะลองเปรียบเทียบว่าการใช้ cpu ประมวลผล กับการใช้ gpu (ชิปประมวลผลกราฟิก) อันไหนให้ผลเป็นอย่างไร กันบ้าง อะไรประมาณนี้
เริ่มที่ฮาร์ดแวร์ก่อนละกัน
Adlink RTV-24 PCIe
ตัวนี้ละครับ หน้าตาดีสมเป็น industrial grade (และราคาด้วย อิอิ) ที่น่าสนใจและทำให้ผมชอบก็คือ คู่มือที่มากับการ์ด ชัดเจนละเอียดครบถ้วนรวมทั้งด้าน programming บนวินโดวส์และลินุกส์ ผิดกับของ Euresys ที่ไม่มีมาให้เลย ให้ไปดาวน์โหลดกันเอาเอง(อันนี้อ้างอิงจากแพคเกจที่ได้รับมาทดลองจาก WJ Technology นะครับ ก็ขอขอบคุณมา ณ ที่นี้ด้วย) ขอพูดถึงบนลินุกส์อย่างเดียวละกันครับเพราะเชื่อว่าโปรดักส์ระดับนี้แต่ละตัวออกมาเพื่อรองรับบนวินโดวส์ได้ดีไม่ต่างกัน
การลงและคอนฟิก driver ทำได้ง่ายดาย การเขียนโปรแกรมรองรับ Video for Linux ทำให้ใช้งานได้หลากหลาย ซึ่งตรงนี้ขอเปรียบเทียบกับ Euresys รุ่นเทียบเคียงกัน คือ Tetra ที่มี interface แบบ PCI 64 bit ไม่ต้องตกใจครับ มันก็ใส่ใน slot PCI 32 bit ได้เช่นกัน ตอนแรกผมก็งงอยู่เหมือนกัน แต่ที่ไม่ค่อยเข้าใจคือ euresys พยายามไม่ support V4L แต่ให้ใช้ driver และ API ที่ทางทำ Euresys ทำขึ้น น่าจะเป็นเพราะเพื่อให้เข้ากันได้กับ library ต่างๆ ที่ทาง Euresys ทำขึ้นมาจำหน่ายด้วย อันนี้เดาเอานะครับ แต่อย่างไรก็ดี Tetra รุ่นนี้ก็ support V4L ครับ เราสามารถหาข้อมูลมาคอนฟิกมันได้ และใช้ได้เหมือนๆกับของ Adlink ละครับ
VIA VB8001Yuan SC290
ชุดต่อมาก็คือ VB8001 จับคู่มากับ Yuan SC290 คู่นี้ต้องพึ่งเพื่อนป้อมกับทาง VIA และ Yuan เยอะหน่อยกว่าจะใช้งานเพื่อทดสอบได้ ก็ขอขอบคุณทาง ป้อม ณ Maxmega เช่นกันครับ
การ์ด capture ตัวนี้สามารถ preview และบันทึกในรูปแบบ H.264 ได้ 4 แชนแนลพร้อมๆกัน ทั้งภาพและเสียง ไม่เลวเลยทีเดียวในราคาระดับนี้ สามารถจับคู่กับ บอร์ดตัวนี้ได้ดีพอสมควร การ preview รองรับ V4L ข้อสังเกตคงมีเพียง ในการบันทึกนั้นอาจจะต้องเขียนโปรแกรมบ้างไม่สามารถใช้โปรแกรมทั่วไปได้เนื่องจาก data frame ที่ได้มี custom header เพิ่มเข้ามา 4 ไบต์ ต้องตัดออกก่อนบันทึก เพื่อให้สามารถ playback ได้จากโปรแกรมทั่วไป ซึ่งผมว่าไม่น่าทำนะ ถ้าเน้นระดับล่าง คือ ราคาประหยัดก็น่าที่จะทำให้ใช้งานกับโปรแกรมทั่วไปได้โดยง่าย เพื่อลูกค้าทั่วไปได้ใช้งานสะดวกๆ อย่างไรก็ดี โปรแกรมตัวอย่างที่ทำมาให้ ก็สามารถใช้งานได้ดีในระดับหนึ่งอยู่แล้วนะครับ ข้อสังเกต จากการทดสอบก็คือ ทำไมไฟล์ที่ได้มีขนาดใหญ่จัง ผมนึกว่าเป็น H.264 แล้วจะเล็กกว่านี้ ด้วยขนาดของภาพที่ half D1 จากตามเสป็คบอกว่าได้ถึง D1 แต่โปรแกรมตัวอย่างทำได้แค่นั้น ก็อาจจะต้องปรึกษากับทาง Yuan กันดูต่อไป แต่โดยรวมก็โอเคดีทีเดียวครับ
จบในส่วนของฮาร์ดแวร์ เฮ้อ เหนื่อยอีกแล้ว ไว้ต่อคราวหน้าครับ อิอิ
*** อัพเดตกันหน่อยครับ ก็ทำได้แล้วนะครับ สำหรับ yaun ปรากฏว่า เป็นเพราะตัว source code ของโปรแกรมตัวอย่างนั่นเองครับ พอสอบถามทางผู้ผลิตก็ได้รับข้อมูลมาแก้ไขเรียบร้อย ไม่มีปัญหาแล้ว อีกอย่างหนึ่งก็คือ

เรียน เล่น ใช้ Windows CE

เรียน เล่น ใช้ Windows CE

ตั้งชื่อเหมือนหนังสือที่เคยอ่านสมัยเด็กๆ(รึป่าว) ก็ตั้งใจว่าจะลองเล่นกับเจ้า A81 หรือ W1060 นั่นแหละ ให้คุ้มซะหน่อย ก็ได้อะไรมาเพิ่มก็จะมาเล่าให้ฟังไปเรื่อยๆ
หลังจากลงเครื่องไม้เครื่องมือในการพัฒนาบนวินโดวส์กันไป ก็ลงมือสำรวจลองเล่นดู ก็เลยรู้ว่าลืมลงซอฟแวร์ที่สำคัญไปตัวหนึ่งนั่นก็คือ ActiveSync ก็ไปหามาจัดการลงเรียบร้อย สำรวจดูว่าลงโปรแกรมอะไรไปบ้างตอนลง CE ไปเจออยู่ตัวหนึ่งน่าสนใจ บอกก่อนว่า ยังดีนะที่ WITS เค้ายอมให้ SDK ออกมากับ CE ตัวใหม่ ไม่งั้นคงทำอะไรลำบากกว่านี้ และจาก tool ตัวนั้นกับ SDK ตัวนี้ (อิอิ) ก็เลยได้รู้ว่า พอมีทางที่จะทำอะไรๆได้อยู่นะ มากกว่าแค่จะทำให้มันอ่านเขียนไทยได้
เจ้า tool ตัวนั้นก็คือ Micrsoft Remote Tool Framework ทำให้เราสามารถเอา system info ออกมาดูได้ดังรูปข้างล่าง รวมถึง driver ต่างๆที่มีลงไว้ (อาจจะใช้หรือไม่ใช้ทุกตัว ตอนนี้ยังไม่รู้) และทำให้เห็นว่าอิมเมจของ CE ที่ลงใช้อยู่นี้มันทำโดยใช้ BSP ของบอร์ดพัฒนาของ TI เป็นพื้นฐาน ซึ่งผมก็ได้มาแล้วเหมือนกัน (แปลว่าเราก็ทำได้เหมือนกัน..มั้ง ฮี่ๆ)

ซึ่งขั้นตอนนี้ผมถือได้ว่า เปรียบเหมือนกับเราทำการรัน tap.exe เพื่อให้ได้ข้อมูลของ PC (.pmq file) ที่เราจะทำ Windows Embedded คราวก่อน อันนี้ก็เซฟเก็บมาไว้ได้เช่นกันครับ และถ้าเอามาใช้ได้เลยเหมือนกันก็คงดี หรือมันอาจจะมีวิธีที่ตรงๆทำก็ได้ โปรดติดตามตอนต่อไป ฮา (เล่นไป เขียนไป เลยนะเนี่ย อิอิ)

Tutorial 3 : FBA และ Windows Logon

Tutorial 3 : FBA และ Windows Logon

    มาถึงตอนสุดท้ายของการเริ่มต้นใช้งานและรู้จักกับ Windows Embedded Studio 2009 แล้ว ขั้นตอนหลังจากก๊อปปี้ทุกอย่างที่ build ได้ไปไว้ที่ไดรว์ c: แล้วนั้นคือการรีเซ็ตครับ และเราจะไม่บูทเข้า winpe แล้ว บูทเข้ามาที่ c: เลยก็จะเป็นหน้าจอดังข้างล่าง เรียกว่า FBA (First Boot Agent) ขั้นตอนนี้จะกินเวลาหน่อย เนื่องจากเป็นการเซ็ต configuration ต่างๆ รวมถึง registry ด้วย อาจมีการรีบูทใหม่อีกครั้ง ทั้งนี้ก็แล้วแต่ component แต่ละตัวที่เราได้ใส่เข้าไป เราจะกล่าวถึง FBA ในคราวต่อๆไป เพราะมันจะมีความสำคัญมากเมื่อเราทำการสร้าง component ของเราเอง
 fba
    หลังจาก FBA ทำงานเสร็จแล้ว ก็พร้อมใช้งานแล้วละ จากที่เห็นดังรูป เป็นเพราะผมเลือก component สำหรับ logon เป็น Windows Logon ถ้า login เข้าไปก็จะเจอกับ shell ที่เป็น explorer (เพราะผมเลือกให้มันเป็นงั้น อีกน่ะแหละ) ลองใช้ shell ตัวอื่นๆดูได้นะครับ ส่วนอันนี้สังเกตได้ว่าจะมี taskbar น่ะครับ ที่ไม่เอารูปมาลงเพราะ ไม่มีอะไร เปลืองแบนด์วิธเปล่าๆ ทีนี้ก็เป็นอันจบขั้น introduction ละครับ ฮ่าๆ เอ่อ ลืมไปเลย ว่าเราจะลงบน mini-itx ให้ดูนี่นา งั้นเอาเป็นว่า เดี๋ยวลงเสร็จเอามาให้ดูอีกทีละครับ พร้อมกับตอนใหม่ไปเลย
login

Virtual PC 2007 กับ Windows PE

Virtual PC 2007 กับ Windows PE

    ใน tutorial คราวก่อน มั่วไปว่าแผ่น install xpe นั้นมี win pe อยู่แล้ว ซึ่งก็จริงครับ อ่าว แต่ที่ผมมั่วคือ ผมกะจะเขียน series นี้ด้วย Windows Embedded Studio 2009 ซึ่งแผ่น install ซึ่งเป็น DVD นั้นมันไม่มี win pe มาให้ด้วยครับ แป่ว ไมโครซอฟต์ก็เลยทำให้เรื่องมันยุ่งยากขึ้นกว่าเดิมโดย ท่านสามารถสร้าง win pe ขึ้นมาได้ด้วยการใช้ Windows AIK ครับ สามารถดาวน์โหลดมาลงได้หากท่านใช้วินโดวส์มีลิขสิทธิ์ถูกต้องนะครับ
    อีกอันหนึ่งที่ต้องเอามาเขียนคือ บังเอิญว่าผมต้องทดสอบการลงและรันโปรแกรม antivirus บน xpe ด้วย ซึ่งผมต้องแน่ใจว่ารันแล้วไม่มีปัญหา ซึ่งชีวิตจริงมันไม่เคยที่จะทำครั้งเดียวแล้วผ่าน ก็เลยคิดถึง virtual pc ขึ้นมาว่า เออ น่าจะเอามาใช้ในการทดสอบนี้ได้และเหมาะสม เพราะมันไม่เกี่ยวข้องกับ hardware หรือ driver ใดๆ เมื่อคิดได้ดังนั้นแล้ว เราก็จะทำการสร้าง xpe สำหรับ virtual pc กันละ โดยมีขั้นตอนคร่าวๆดังนี้
diskpart
แสดงคำสั่งใน diskpart
1. บูทด้วย win pe
2. ใช้ diskpart.exe ทำการสร้าง partition ใหม่ ขึ้นมา
3. ออกจาก diskpart แล้วก็ทำการฟอร์แมท drive ที่เพิ่งสร้างขึ้นมาด้วยคำสั่ง
     FORMAT C: /FS:NTFS /q
4. รัน tap.exe โดยให้เก็บ output file ไว้บน drive ที่แชร์เอาไว้
รันคำสั่ง tap.exe
รันคำสั่ง tap.exe
output file เก็บไว้ในแชร์ไดรว์
output file เก็บไว้ในแชร์ไดรว์

เราก็จะได้ไฟล์ .pmq เพื่อเอาไว้สำหรับไปทำ image ของ xpe แล้วเอามาก๊อปปี้ลง (virtual) hdd ที่เราเพิ่งสร้างพาร์ติชั่นขึ้นมากันต่อไปครับ

Tutorial 2 : Target Design

Tutorial 2 : Target Design

    รวบยอดการ build image ขั้นเบื้องต้นมาไว้ที่นี่เลย…
    ปล. ควรใช้ IE 8 ดูนะครับ (สำหรับผู้ที่ใช้ IE) ตัวหนังสือในภาพจะพอดูได้
    มาว่ากันต่อ ขั้นต่อไป ก็คือ การเก็บข้อมูลไฟล์ .pmq ที่ได้มาลง database เอ๊ะ ผมบอกหรือยังว่า เราต้องมี SQL server ด้วยถ้าจะใช้ xpe ใช้ตัว express ก็ได้ครับ
เริ่มด้วย เปิด Component Designer ขึ้นมา import ไฟล์ devices.pmq และในขั้นตอนนี้ให้ทำการเลือก prototype ให้เป็นแบบ selector เพื่อที่เราจะได้สามารถทำการเลือก component ต่างๆได้ใน Target Designer ดังรูปข้างล่างที่เห็นเป็นรายการ check box ขวามือน่ะครับ
import sld file
import sld file
เสร็จแล้วก็เปิด Component Database Manager ขึ้นมา import  ไฟล์ .sld นั้นเข้าไป
import to database
import to database
เมื่อทำดังนี้แล้วเราก็จะเห็นมันในโปรแกรม Target Designer เมื่อทำการ new configuration ขึ้นมา ดังรูป จากนั้นก็ลากมันไปไว้ใน config window (ช่องกลาง) ต่อมาก็เลือก component อื่นๆใส่เข้าไป ตามใจชอบ ในที่นี้ขอใช้ design template ที่มีไว้ให้แล้วตัวหนึ่งคือ Kiosk/Gaming Console
target designer
target designer
ทำการ check dependency โดยการเลือกที่เมนูหรือกด F5 ก็ได้ component อื่นๆที่เกี่ยวข้องต้องใช้จะถูก load เข้ามาอีกเพียบ เราสามารถดูจำนวน component ปัจจุบันได้ที่ status bar ข้างล่าง ปรกติถ้าเราเล่นง่ายๆยังงี้จะมี error ออกมาให้เราต้องแก้ไข ก็ไม่มีอะไรมาก มันคือการต้องเลือก component ที่จำเป็นใส่เข้าไปเพิ่มเติม เช่น ACPI, shell, log on และ ภาษา ก็เลือกใส่เข้าไปโดยการคลิกขวาที่ error นั้นแล้วเลือก Action จะมี list ของ component ที่เกี่ยวข้องขึ้นมาให้เราเลือก แล้วทำการเช็คอีกที เมื่อผ่านแล้วก็ทำการ build ได้แล้วครับ
check_depends
check dependency
ถึงขั้นนี้แล้ว เราก็จะได้ไฟล์มาอยู่ในโฟลเดอร์ที่เรากำหนดให้มัน build ไปไว้ จำนวนหนึ่ง รวมถึง boot.ini ด้วย สิ่งที่ต้องทำต่อไปก็คือการก็อปปี้ไว้ใส่ในไดรว์ที่เตรียมไว้ เสร็จแล้วก็ทำการบูท จะเกิดอะไรขึ้นหลังจากนั้น ค่อยมาต่อกัน ตอนหน้าครับ

Tutorial 1 : Target Analysis

Tutorial 1 : Target Analysis

   [รูปอาจจะมาช้า เอา draft มาให้ลองอ่านกัน เผื่อจะมี comment อะไรก็ยินดีครับ]
    ลองเขียนขึ้นมา ไม่รู้ว่าจะได้แค่ไหนนะ แต่จะลองดู ลงเครื่องใหม่ และ Windows Embedded Standard 2009 เรียบร้อย ส่วน target device นั้นเอาเป็นใช้เจ้าตัวนี้ละกัน เก่าเก็บไปหน่อย แต่น่าจะเห็นภาพมากกว่าใช้พวก vmware หรือ virtual pc นะครับ ว่ามั้ย
PICT0042
VIA mini-itx epia M10000
    ก่อนที่จะเริ่มเนี่ย ทำความเข้าใจกันก่อนดีกว่าว่าเรากำลังจะทำอะไรนะครับ เราไม่ได้จะลงวินโดวส์เพื่อใช้งานปรกตินะครับ ดังนั้นสิ่งแรกที่ควรคิดก่อนทำก็คือ เราจะใช้งานมันเป็นอะไร อันนี้ก็แล้วแต่ท่าน แต่จะยกตัวอย่างให้เห็นภาพนะครับ ก็อย่าง ตู้เอทีเอ็ม งัยครับ หลายๆธนาคาร ตู้เอทีเอ็มยังใช้ Windows NT อยู่เลย ไม่รู้ว่าเป็นรุ่น embedded หรือเปล่า เพราะเวลามันเดี้ยงทำงานไม่ปรกติทีไร เห็น message box โชว์หราทุกที บางทีก็เห็น NT desktop กันจะจะ เก็บดอกเบี้ยเราไปก็เยอะ น่าจะลงทุนหน่อย ฮ่าๆ หรืออีกตัวอย่างหนึ่งก็ระบบ POS ที่เห็นพนักงานแต่ละร้าน เช่น Dunkin, KFC ยืนเอานิ้วจิ้มๆหน้าจออยู่ เครื่องที่ใช้งานแบบนี้ คงไม่มีใครอยากให้มีพนักงานไปปิดโปรแกรมแล้วเปิดเน็ตแช็ตหรือเล่น hi5, twitter ยามว่างหรอกมังครับ นั่นก็แปลว่า เจ้าเครื่องเนี้ยก็ควรจะมีโปรแกรมและคอมโพเน้นท์อะไรๆให้น้อยที่สุด เหลืออยู่เท่าที่จำเป็นแต่เพียงพอกับการทำงานเท่านั้น สิ่งที่เราจะได้ตามมาก็คือ ขนาดของระบบก็จะลดลงมา และความเร็วในการบูท การทำงานก็จะดีขึ้น ความปลอดภัยก็น่าจะมีมากขึ้นด้วย
    แต่อีกสิ่งหนึ่งที่สำคัญ ก็คือการออกแบบระบบ ที่ต้องออกแบบมาให้พึ่งพาสภาพแวดล้อมของวินโดวส์ให้น้อยที่สุด อย่างเช่น เวลาจะอัพเดตโปรแกรมหรือเก็บ log ไม่ใช่ว่าจะต้องไปเปิด explorer เพื่อรันตัว setup หรือ ต้องใช้โปรแกรมอื่นก๊อปปี้ไฟล์หรือเปิด log ไฟล์ดู อย่างนั้นก็ไม่ใช่ละครับ เพราะตัวอย่างที่จะทำให้ดูต่อไป จะไม่มี explorer ไม่มี taskbar ไม่มี control panel ใดๆทั้งสิ้น ถ้าโปรแกรมท่านไม่ทำเอง ก็ไม่มีใครทำให้แล้วละครับ
    โอเค น่าจะเข้าใจไปในทิศทางเดียวกันมากขึ้นแล้วก็มา เริ่มกันเลย
Step 1 : Windows PE  และ tap
     มาดู hardware spec. กันก่อน
CPU1GHz VIA C3/EDEN
(Nehemiah core)
Form factorMini-ITX
ChipsetVIA ProSavage CLE266
North bridgeVIA VT8623
South bridgeVIA VT8235
InterconnectV-Link (266MB/s)
PCI slots1 32-bit/33MHz
AGP slotsNone
AMR/CNR slotsNone
Memory1 184-pin DIMM socketsMaximum of 1GB of DDR266/200 SDRAM 
Storage I/OFloppy disk2 channels ATA/133 
Serial ATANone
RAIDNone
Legacy ports1 PS/2 keyboard, 1
PS/2 mouse, Serial and Parallel ports
USB2 USB 2.0/1.1 ports2 additional USB 2.0/1.1 ports via PCI expansion header 
Firewire2 IEEE 1394 Firewire
ports via PCI expansion header
AudioVIA 6-channel “Vinyl
Audio” (VT8235/VT1616 codec)analog front, rear, and center outputshared mic and line-in inputs
digital S/PDIF output

VideoIntegrated CastleRock
graphics with MPEG-2 decoderVGA and S-Video outputs 
Ethernet10/100 Fast Ethernet
via VT6103 PHY
BIOSAward
Bus speedsNone
Bus dividersDRAM: 100 or 133MHz
VoltagesDRAM: default,
2.6-2.8V in 1V increments
MonitoringVoltage, fan status,
and temperature monitoring
 ที่มา : techreport.com (ขี้เกียจพิมพ์เอง)
    ขั้นตอนแรกคือการ ไปเอาข้อมูลมาว่า ตัว target device นั้น ก็คือตัวที่เราจะรัน xpe นั่นแหละ ในที่นี้ก็คือเจ้าบอร์ดข้างบนที่เห็นนั่น เสป็คมันประกอบด้วยอะไรบ้าง เพื่อที่เราจะได้ลงคอมโพเน้นท์ที่เป็นไดรเวอร์ต่างๆที่จำเป็นได้งายขึ้น โดยการบูทมันด้วย Windows PE โดยใช้แผ่นที่ใช้ลง xpe นั้น ตัวมันเองจะเป็นแผ่น Windows PE ด้วย สามารถบูทและรันวินโดวส์จากแผ่นได้เลย ขั้นตอนต่อมาเมื่อบูทได้แล้ว ก็ต้องรันโปรแกรมตัวหนึ่งที่ชื่อว่า Target Analyzer (tap.exe - มีอยู่ในแผ่นนั้นด้วย) มันจะทำการเก็บข้อมูลมาให้เราเป็นไฟล์ชื่อ devices.pmq
    วิธีการหนึ่งที่สามารถเขียนและนำไฟล์นี้ออกมาได้ ก็คือ  map network drive ครับ ก็ลองไปทำกันดู บอกหมด ก็ไม่สนุกสิครับ เอาเป็นว่า ท่านใดรู้แล้วก็ comment ส่งมาให้ท่านอื่นๆได้ทราบด้วยนะครับ

Windows XP Embedded SP 2 # comments

นั่งลองเล่นอยู่สองสามวันแล้ว มีประเด็น อยู่เหมือนกัน
1. ทำไมไม่ทำให้เรื่องการเปลี่ยน splash screen ตอนบูทเป็นเรื่องง่ายกว่านี้ เดี๋ยวต้องลองใน 2009 ดูว่าปรับรุงขึ้นหรือยัง
2. เวลาทำ FBA (First Boot Agent) ถ้าไม่ผ่าน พี่ก็รีบูทอยู่นั่นแหละ ไม่ยอมบอกว่ามัน error ที่ถูกต้องคือ ไปเปิด log มันดูซะว่า เกิด error อะไรขึ้น
3. เวลาอัพเดต custom component ถ้า repository หรือไฟล์ไม่ได้เปลี่ยนแปลงอะไร ก็อย่าลืมเอา check box ที่บอกว่า copy to root อะไรเนี่ยแหละ ตอน import sld ลงใน component daatabase ออกด้วย มันจะได้ไม่เกิด error แล้วก็ตรวจสอบ version, revision ด้วยละ
4. อ้อ อีกเรื่อง minlogon, winlogon เนี่ย น่าจะทำให้มัน แยกจากกันโดยเด็ดขาดได้ดีกว่านี้นะ พอเช็ค dependency ทีไร error ตรงนี้ทุกที แล้วเช็คนี่มันนานซะด้วย
น่าสนใจจริงๆ ว่าตัวใหม่ Windows Embedded 2011 เนี่ย จะเป็นยังงัย เดี๋ยวค่อยลองไปทีละเวอร์ชั่น ละกัน

Windows Embedded

    เปลี่ยนบรรยากาศจาก text mode มาเป็น GUI บ้าง กับยักษ์ใหญ่ ผมว่าถ้าใครไม่คุ้นเคยกับ embedded มาก่อน การเริ่มต้นกับชุด Windows Embedded Studio ก็ดีนะครับ เพราะว่าขั้นตอนการทำงานนั้นคล้ายกันหมดแหละ ไม่ว่าจะแพลตฟอร์มไหน อยู่ที่เครื่องมือเครื่องไม้นั้นมันเลิศแค่ไหน มีตังค์อ๊ะป่าว ไรประมาณนั้น ก็ไม่ต้องไปเอาไปเปรียบเทียบกับ Linux ละกัน
    สำหรับ Windows Embedded Studio 2009 ก็พัฒนาต่อมาจาก Windows XP Embedded service pack 2 นั่นเอง โดยเจ้านี้ก็จะเป็น Windows XP service pack 3 ถามว่า แล้วงี้มันต่างจาก XP ที่ใช้บน เครื่อง desktop ยังงัย คำตอบคือ ไม่ต่าง ครับ ที่แตกต่างคือการติดตั้งและคอนฟิกมัน เพื่อให้เหมาะสมกับงานนั้นๆโดยเฉพาะ ไม่ว่าจะเป็นทางด้านฮาร์ดแวร์หรือการใช้งาน
    อาจจะมีคำถามต่อไปว่า อ้าว ถ้าไม่ต่าง ทำไมต้องซื้อมาใช้ด้วยละ คำตอบก็คือ มันเหมาะกับการใช้งานเฉพาะทางครับ โดยการที่เอาเครื่อง PC ธรรมดาๆเนี่ยแหละไปใช้ โดยหลายเหตุผลที่เราต้องการคอนฟิกมันเพื่อให้มันทำงานที่เราต้องการโดยเฉพาะอย่างเดียว ยกตัวอย่าง เช่น เครื่อง ATM, ตู้ kiosk ไม่ว่าจะเพื่อการโฆษณาหรือความบันเทิง, ตู้เกมหยอดเหรียญ เป็นต้น จะเห็นว่า ตัวอย่างที่ยกมาเหล่านี้ ล้วนไม่จำเป็นต้องใช้ cpu หรือ mcu ที่มันตัวเล็กกว่า กินไฟน้อยกว่า หรือต้องไปใช้พวก SBC (single board computer) เพราะว่ากันจริงๆแล้ว ผลิตภัณฑ์ที่ออกมาตอนนี้มันก็แทบจะทับซ้อนกันนิดๆแล้ว ลองมองดู พวก atom, via nano กับ beagle board สิครับ เพราะฉะนั้น มันก็อยู่ที่เรานั่นแหละ เลือกใช้ได้เหมาะสมกับตัวเองหรือเปล่า อันนี้คงมีองค์ประกอบหลายอย่างเข้ามาเกี่ยวข้อง ลองดูจากรูปข้างล่างนี้เอา
MSEmbedded
Microsoft Embedded Technology
    ที่ผมเล่นอยู่ตอนนี้เป็นตัวเก่าคือ XPE sp2 ก็ขอใช้ตัวนี้แนะนำละกัน อ้อ เดี๋ยวจะงงกันสำหรับผู้ที่ยังไม่ทราบ ไมโครซอฟต์ เค้าวางตัวสินค้าเอาไว้หลายระดับนะครับ ตอนนี้ไม่ขอพูดถึงตระกูล CE และ Windows Mobile สารพัดเวอร์ชั่นเหล่านั้น เพราะยังไม่ได้ลองเป็นจริงเป็นจัง ถ้าจะได้ลองก็คงด้วยเจ้า mini2440 นั่นเอง (เอาให้คุ้ม) กลับมาที่ XPE sp2 ต่อ ขั้นตอนการพัฒนาระบบก็จะแบ่งได้ดังนี้ ดูรูปไปด้วย เข้าใจง่ายดีครับ
XPE development cycle
XPE development cycle
1. Target analysis (tap) ก็เป็นการตรวจสอบและเก็บข้อมูลว่าอุปกรณ์ที่ต้องการจะลง XPE นั้นจะใช้ driver อะไรบ้าง
2. ได้ข้อมูลแล้วก็เอามาปรับแต่งหรือเพิ่มเติม driver ที่ไม่สามารถ tap เอามาได้ โดยใช้ component designer
3. จัดเก็บลง database หมายความว่าคุณต้องมี SQL server
4. ด้วย Target Designer คุณสามารถออกแบบว่าอุปกรณ์ของคุณจะทำงานลักษณะไหน อาจจะใช้ template ที่มาให้แล้วเป็นพื้นฐาน เช่น Game Console/Kiosk หรือ POS แล้วปรับแต่งอีกที หรือจะออกแบบเองใหม่ทั้งหมดก็ได้ โดยการลาก component มาใส่
5. เสร็จแล้วก็ build image ออกมา
6. เอาไป install โดยการ copy ครับ !
เท่าที่ลองใช้ดูก็ไม่ยากเย็นอะไรกับการใช้งานพิ้นฐานทำตามตัวอย่างในเอกสารที่มีมาให้ แต่ขั้นแอดวานซ์ก็ต้องนั่งศึกษาเหมือนกัน เช่นการลง driver การ์ดจอตัวใหม่ๆที่เราต้องการเอง
เท่านี้ก่อนละกัน พอหอมปากหอมคอ