Monthly Archives: December 2016

การศึกษาลินุกซ์เคอร์เนล ด้วย Raspberry Pi: พื้นฐานการทำงานของลินุกซ์ดีไวซ์ไดร์เวอร์ (ตอนที่ 2)

จากตอนที่แล้วที่เราพูดถึง device file โดยเริ่มทำความรู้จักกับ block device และ character device ในตอนนี้ เราก็จะมาทำความเข้าใจถึงคุณสมบัติพิเศษอื่นๆ ของไฟล์ชนิดนี้ หมายเลขหลัก และหมายเลขรอง ของอุปกรณ์ (Device major and minor number) หมายเลขหลัก(major number) และหมายเลขรอง(minor number)ของอุปกรณ์ คือเลขสองชุดที่คั่นด้วยเครื่องหมายคอมม่า ดังที่แสดงในตารางด้านบน ใช้สำหรับเป็นตัวแทนของอุปกรณ์ในฝั่งเคอร์เนลสเปซ เนื่องจากว่าการทำงานกับตัวเลขนั้น โปรแกรมคอมพิวเตอร์จะทำงานได้ง่ายกว่า การทำงานกับตัวอักษร ลองนึกถึงการเขียนโค้ดให้ไล่เช็คกรณีที่ ต้องการหาว่าไดร์เวอร์ตัวไหนต้องมาทำงานให้กับอุปกรณ์นั้น คงจะพอเห็นภาพว่า การค้นหาด้วยตัวเลขมันเหมาะในแง่ของการเขียนโปรแกรมกว่าการค้นหาด้วยตัวอักษรยังไง เรื่องนี้รวมถึงความเร็วในการทำงานของโค้ดด้วย ส่วนในมุมของผู้ใช้ หากต้องมาจดจำว่าอุปกรณ์ใดคือเลขอะไร ก็คงไม่เหมาะเท่าไร เนื่องจากสมองมนุษย์นั้นจดจำตัวอักษรได้ดีกว่าตัวเลข

การศึกษาลินุกซ์เคอร์เนล ด้วย Raspberry Pi: พื้นฐานการทำงานของลินุกซ์ดีไวซ์ไดร์เวอร์ (ตอนที่ 1)

เกริ่นนำนิดหน่อย ตั้งใจจะเขียนเรื่อง การเขียนลินุกซ์ดีไวซ์ไดร์เวอร์ บนบอร์ด ราสเบอรรี่พาย มานานแล้ว แต่พอมาลองเขียนเอาจริงๆ ก็เริ่มรู้สึกว่าถ้าไม่มีการปูพื้นเรื่องที่เกี่ยวข้องให้ก่อน มือใหม่ที่พึ่งเริ่มศึกษาก็คงจะเข้าใจยากแน่ๆ และเรื่องที่จะเขียนนี้ก็คงไม่มีประโยชน์กับมือเก่าที่ได้ศึกษาโดยตรงกับ Textbook หรือ documentation อื่นๆที่มีอยู่แล้วในภาษาอังกฤษ เลยสรุปได้ว่าน่าจะเน้นไปที่เนื้อหาสำหรับมือใหม่ เพื่อที่จะเพิ่มจำนวนนักพัฒนาที่สามารถเข้าใจพื้นฐาน แล้วนำไปต่อยอดกันเองนะครับ

ทดลอง u-boot porting แบบเบื้องต้น บน QEMU mini2440

จากประสบการณ์ในการทำงานด้านการออกแบบระบบสมองกลฝังตัวของแอดมินที่ผ่านมา เราอาจจะเจอกับงานที่มีการเปลี่ยนแปลงไปจากบอร์ดอ้างอิง (Reference design) เนื่องจากเหตุผลเรื่องราคา ความต้องการของลูกค้า อายุของผลิตภัณฑ์ในตลาด แนวโน้มของเทคโนโลยี่ หรือข้อจำกัดเรื่องกฎหมายสิ่งแวดล้อม โดยเฉพาะอุปกรณ์พวกหน่วยความจำต่างๆ เช่น nand flash หรือ SDRAM ซึ่งอาจจะทำให้เฟิร์มแวร์ ของบอร์ดอ้างอิงทำงานไม่ได้บนบอร์ดต้นแบบ ทำให้เราต้องมีการแก้ไขโค้ดต้นฉบับให้สามารถทำงานกับบอร์ดที่ออกแบบมาใหม่ได้ การแก้ไขนี้จะมากน้อยขนาดไหน อยู่ที่โชคของแต่ละคนนะครับ ในบางงานเราอาจจะได้เป็นนักพัฒนากลุ่มแรกในโลกที่ได้ทำงานกับอุปกรณ์นั้น ข้อดีคือ มันท้าทายมาก ข้อเสียคือมันใหม่จนเราไม่สามารถปรึกษาใครได้เลย แม้กระทั่งกับ FAE (Field Application Engineer)