หลังจากเมื่อก่อนเคย คอมไพล์ gumstix ให้ใช้ squashfs แล้ว ผมก็จะใช้คอนฟิกไพล์เดิม นี้ มาปรับปรุงให้สามารถใช้ I2C Bus นะครับ เนื่องจากมีความจำเป็นต้องใช้งาน ถ้ามีเวลาว่างพอ ก็คงจะมาเขียนรายละเอียดเพิ่มเติมนะครับ สำหรับวันนี้ก็เอาอย่างย่อ ไปก่อนก็แล้วกัน
ผมเก็บ gumstix-buildroot ไว้ที่ โฮมของตัวเองนะครับ สมมติพาธเป็น /home/apc/gumstix-buildroot
# cd /home/apc/gumstix-buildroot/build_arm/linux-2.6.11gum/
# export PATH=$PATH:/home/apc/gumstix-buildroot/build_arm/staging_dir/bin
จากนั้นก็ทำการแก้ไขคอนฟิกไพล์เดิมนะครับ
# vi .config
เพิ่มข้อมูลเข้าไปดังนี้
จากนั้นก็คอนฟิก โดยทำการโหลดเคอร์เนลคอนฟิก ที่อยู่ในไฟล์ .config ครับ
# make ARCH=arm CROSS_COMPILE=arm-linux- oldconfig
ต่อมาก็จะมีคำถามว่า จะให้เข้ากันได้กับอุปกรณ์ไหนบ้าง ก็เลือกเอาตามสบายครับ แล้วแต่อุปกรณ์ที่เรามี จากนั้นก็สั่งสร้างเคอร์เนลอิเมจ
# make ARCH=arm CROSS_COMPILE=arm-linux- uImage
ลองทดสอบดูว่า เคอร์เนล อิเมจ มีการเปลี่ยนแปลงไปหรือไม่
# mkimage -l arch/arm/boot/uImage
จากนั้นก็คอมไพล์เคอร์เนลโมดูลครับ
# make ARCH=arm CROSS_COMPILE=arm-linux- modules
เสร็จแล้วก็ คอมไพล์ root_fs_arm ขึ้นมาใหม่ (ไม่แน่ใจนะ ว่า ถ้าไม่คอมไพล์ root_fs_arm แต่เอาไปแค่โมดูลที่จำเป็น มันจะทำงานได้หรือไม่) เหอๆ แต่ก็คอมไพล์ไว้ก่อนล่ะกัน ปลอดภัยที่สุดแล้ว
# cd ../../
# make
เสร็จแล้ว ก็ทำการนำ root_fs_arm ไปใส่ใน gumxtix เลยครับ ขึ้นตอนเยอะเหมือนกันนะ จะใช้ ckermit หรือ minicom ก็แล้วแต่สะดวกครับ ขนาดของ root_fs_arm ที่ผมได้ จะมีขนาด 3.0 MB นะครับ เพราะคอมไพล์ให้สามารถใช้งาน อื่นๆ เยอะแยะเหมือนกัน พื้นที่ของ gumstix ที่ผมใช้อยู่ จะเป็น 3.8 MB ครับ ก็เหลือพื้นที่ให้ใช้งานอีกพอสมควร และใส่ SD CARD 128 MB เข้าไปหนึ่งตัว เพื่อเก็บโปรแกรม เอาไว้ทดสอบ
ผมเก็บ gumstix-buildroot ไว้ที่ โฮมของตัวเองนะครับ สมมติพาธเป็น /home/apc/gumstix-buildroot
# cd /home/apc/gumstix-buildroot/build_arm/linux-2.6.11gum/
# export PATH=$PATH:/home/apc/gumstix-buildroot/build_arm/staging_dir/bin
จากนั้นก็ทำการแก้ไขคอนฟิกไพล์เดิมนะครับ
# vi .config
เพิ่มข้อมูลเข้าไปดังนี้
| # I2C support # CONFIG_I2C=y CONFIG_I2C_CHARDEV=m # # I2C Algorithms # CONFIG_I2C_ALGOBIT=m CONFIG_I2C_ALGOPCF=m CONFIG_I2C_ALGOPCA=m # # I2C Hardware Bus support # # CONFIG_I2C_ISA is not set # CONFIG_I2C_PARPORT_LIGHT is not set # CONFIG_I2C_STUB is not set # CONFIG_I2C_PCA_ISA is not set CONFIG_I2C_PXA=m |
จากนั้นก็คอนฟิก โดยทำการโหลดเคอร์เนลคอนฟิก ที่อยู่ในไฟล์ .config ครับ
# make ARCH=arm CROSS_COMPILE=arm-linux- oldconfig
ต่อมาก็จะมีคำถามว่า จะให้เข้ากันได้กับอุปกรณ์ไหนบ้าง ก็เลือกเอาตามสบายครับ แล้วแต่อุปกรณ์ที่เรามี จากนั้นก็สั่งสร้างเคอร์เนลอิเมจ
# make ARCH=arm CROSS_COMPILE=arm-linux- uImage
ลองทดสอบดูว่า เคอร์เนล อิเมจ มีการเปลี่ยนแปลงไปหรือไม่
# mkimage -l arch/arm/boot/uImage
| Image Name: Linux-2.6.11gum Created: Fri Oct 7 14:42:42 2005 Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 729704 Bytes = 712.60 kB = 0.70 MB Load Address: 0xA0008000 Entry Point: 0xA0008000 |
จากนั้นก็คอมไพล์เคอร์เนลโมดูลครับ
# make ARCH=arm CROSS_COMPILE=arm-linux- modules
เสร็จแล้วก็ คอมไพล์ root_fs_arm ขึ้นมาใหม่ (ไม่แน่ใจนะ ว่า ถ้าไม่คอมไพล์ root_fs_arm แต่เอาไปแค่โมดูลที่จำเป็น มันจะทำงานได้หรือไม่) เหอๆ แต่ก็คอมไพล์ไว้ก่อนล่ะกัน ปลอดภัยที่สุดแล้ว
# cd ../../
# make
เสร็จแล้ว ก็ทำการนำ root_fs_arm ไปใส่ใน gumxtix เลยครับ ขึ้นตอนเยอะเหมือนกันนะ จะใช้ ckermit หรือ minicom ก็แล้วแต่สะดวกครับ ขนาดของ root_fs_arm ที่ผมได้ จะมีขนาด 3.0 MB นะครับ เพราะคอมไพล์ให้สามารถใช้งาน อื่นๆ เยอะแยะเหมือนกัน พื้นที่ของ gumstix ที่ผมใช้อยู่ จะเป็น 3.8 MB ครับ ก็เหลือพื้นที่ให้ใช้งานอีกพอสมควร และใส่ SD CARD 128 MB เข้าไปหนึ่งตัว เพื่อเก็บโปรแกรม เอาไว้ทดสอบ