เรื่องของ Memory ที่ใช้ใน ARM9 S3C2440 FriendlyArm article

เรื่องของ Memory ที่ใช้ใน ARM9 S3C2440 FriendlyArm

บทความนี้ประเดิมบทความแรกในหมวด support ลูกค้า ในส่วนของ review ด้วย FriendlyARM ครับ หลาย ๆ ท่านที่ซื้อสินค้าบอร์ด FriendlyARM ไป จะรู้ว่าตอนนี้ NAND Flash มีให้เลือกหลายรุ่นมาก ๆ ตั้งแต่ 64 MB , 128 MB , 256 MB , 1 GB และ NOR FLASH อยู่ที่ 2 MB ส่วน SDRAM อยู่ที่ 64 MB


งงกันบ้างมั๊ยครับว่า ทำไมต้องมี Memory หลายชนิดมากมาย ….  NAND , NOR , SDRAM มันเกี่ยวกันยังงัย ….. เวลาเราเขียนโปรแกรม Application ไป RUN บนบอร์ด มันไปเก็บที่ตรงไหน……. แล้ว OS มันเก็บที่ Memory ส่วนไหน มึน ๆ ๆ

ThaiEasyElec.com จะขออธิบายง่าย ๆ ให้เข้าใจดังนี้ครับ มันจะลงลึกไปถึงเรื่องของ สถาปัตยกรรมคอมพิวเตอร์  เล็กน้อยครับ อ่านเข้าใจง่าย ไม่ปวดหัว ตามนี้ครับ

เปรียบเทียบกันก่อน เรื่อง Memory ของคอมพิวเตอร์ทั่วไป กับ บอร์ด ARM9 จะมีความคล้ายคลึงกันคือ จะแบ่งเป็น ROM กับ RAM


ในบอร์ด ARM9 S3C2440 เราจะมี Memory ประกอบด้วย 

1) RAM คือ ชนิดหน่วยความจำแบบชั่วคราว เมื่อเวลาไฟดับแล้ว ข้อมูลหายหมด แต่หน่วยความจำชนิดนี้ จะมีความเร็วในการอ่านเขียนข้อมูลสูง ซึ่งเหมาะที่จะใช้สื่อสารกับ CPU ต่าง ๆ ได้  ยกตัวอย่างเช่น SDRAM , DDR2 RAM ด้วยเหตุนี้ RAM จึงใช้ในการเก็บโปรแกรมและข้อมูลระหว่างการประมวลผลกับ CPU

– SDRAM คือ RAM ที่เป็น Memory ความเร็วสูง (ไฟดับแล้วข้อมูลหาย) ซึ่งต่อเข้ากับ CPU โดยตรง

2) ROM คือ ชนิดหน่วยความจำแบบถาวร เก็บข้อมูลได้โดยถ้าไฟดับ ยังคงสามารถเก็บข้อมูลได้อยู่เหมือนเดิม แต่ความเร็วจะต่ำกว่า RAM ซึ่งไม่เหมาะจะคุยกับ CPU โดยตรง เนื่องจาก CPU มีความเร็วในการทำงานสูงมาก เช่น NAND Flash , NOR Flash , Hard Disk , SDCARD , Thumb Drive 

– NAND Flash จะเปรียบเสมือน Hard Disk ครับ ซึ่งจะเก็บ OS  , File ต่าง ๆ , Bootloader , โปรแกรมต่าง ๆ อยู่ในนี้ และ SDCARD , Thumb Drive เป็นพวก NAND Flash ครับ
– NOR Flash จะเป็นหน่วยความจำที่ใช้เก็บพวก Bios 

การโหลด OS ขึ้นมามีกระบวนการที่เกิดขึ้นแบบนี้ครับ

สำหรับ OS ที่เป็น WIN CE เมื่อท่านเปิดเครื่องขึ้นมา จะพบว่า WIN CE Image จะถูกเก็บไว้ใน NAND Flash (ROM ) ซึ่งแยกการเก็บเป็นส่วน ๆ คือส่วนที่เป็น Nboot และ CE Image หลังจากนั้น ระบบจะเอาโปรแกรมที่เก็บอยู่ใน ROM มาไว้ที่ RAM (ซึ่งก็คือ SDRAM) แล้วทำงาน 

ส่วน OS ที่เป็น Linux ก็จะมีหลักการเหมือนกัน คือถูกเก็บไว้ใน NAND Flash (ROM) แยกเป็น Boot Loader หรือ Supervivi ของบอร์ด FriendlyARM , Kernel และ File System หลังจากนั้น ระบบจะเอาโปรแกรมที่เก็บอยู่ใน ROM มาไว้ที่ RAM (ซึ่งก็คือ SDRAM) แล้วทำงาน 

คำถาม
– ถ้าเราเขียน Application เพื่อ RUN บนบอร์ด ARM9 แล้ว NAND Flash ต้องเยอะ ๆ หรือเปล่า
  ANS : ไม่จำเป็นครับ ท่านสามารถเก็บไฟล์ใน SD Card , Thumb Drive แล้วเรียก RUN ขึ้นมาได้ หรือท่านจะเก็บใน NAND Flash (เปรียบเสมือน Hard Disk) ก็ได้ครับ ซึ่งถ้าท่านเลือกอย่างหลังสุด ก็จะต้องพิจารณาเรื่องขนาดของ NAND Flash แล้วหล่ะ

– RUN Video หรือ ไฟล์ภาพ ไฟล์เพลง ต้องเลือก NAND Flash ความจุเยอะ ๆ หรือเปล่า
ANS: เวลาเล่นไฟล์เพลง ไฟล์ Video ระบบจะนำเพลงที่คุณเก็บใน NAND Flash มาไว้ใน SDRAM ที่โปรแกรมจองไว้แล้วจึงเล่นไฟล์ เมื่อจบเพลง ข้อมูลเพลงเก่าใน SDRAM จะถูกแทนที่ด้วยเพลงใหม่  กรณีถ้าไฟล์ของท่านเก็บใน SD Card หรือ Thumb Drive ตัว CHIP S3C2440 จะอ่านไฟล์จาก SD Card หรือ Thumb Drive ไปที่ SDRAM เช่นกัน ดังนั้น ความจุ NAND Flash นี้เป็นเพียง พื้นที่ที่ใช้ในการเก็บข้อมูลเท่านั้น ให้มอง NAND Flash เหมือนว่าเป็น Hard Disk ของเครื่องคอมพิวเตอร์ก็ได้ครับ

เสริมในเรื่องนี้เพิ่มเติมครับ สำหรับเรื่องเล่น Video นี้ SDRAM จะถูกจองพื้นที่เรียกว่า Buffer (ในบอร์ด ARM9 จะมีขนาด 64 MB ทุกรุ่นของ FriendlyARM ) ซึ่งปกติแล้ว SDRAM เวลาโหลด OS มาแล้ว จะถูกกันเนื้อที่ประมาณ 32 MB (สำหรับ WIN CE) ซึ่งจะเหลือ พื้นที่ใช้สอยอีก 32 MB การที่เหลือพื้นที่เท่านี้ จะทำให้เวลา CPU ARM9 S3C2440 ใช้ทำงานต่าง ๆ ถูกจำกัดมากขึ้นครับ และ Video ที่จะเล่น มันจะต้องจองพื้นที่ใน SDRAM ในลักษณะ Buffer (เพื่อให้การเล่น ลื่นไหล ไม่มีสะดุด) ถ้า Video มีความละเอียดสูง ก็จะทำให้ต้องใช้พื้นที่เก็บมากขึ้น เพราะความละเอียด ทำให้ต้องใช้ข้อมูลมาก จึงมีปัญหาขึ้นมา เช่น ภาพกระตุก เนื่องจาก Buffer ไม่พอเก็บครับ

โดยสรุปก็คือ ขนาดของ RAM ควรจะมากหรือน้อยขึ้นอยู่กับเราว่าจะ run โปรแกรมกี่โปรแกรมพร้อม ๆ กัน ส่วนขนาดของ ROM จะขึ้นกับว่าจะใช้พื้นที่เก็บข้อมูลมากน้อยเพียงใด 

NAND VS NOR 
ROM แบ่งเป็น 2 ประเภทใหญ่ คือ

NOR – Read เร็ว Write ช้า ทำ XIP ได้ (execute in place หมายถึง run program ที่ ตัวมันเองได้เลย) 
NAND – Read ช้า Write เร็ว ทำ XIP ไม่ได้ 

ทั้งคู่มีข้อแตกต่างที่สำคัญ คือ NOR มันสามารถทำ execute in place (XIP) ได้  โดยปกติ ระบบจะ RUN โปรแกรม ดึงจาก ROM ไปไว้ใน RAM แล้วจึงจะทำงาน ถ้าเป็น NOR ROM แล้ว มันสามารถ run program ที่ ตัวมันเองได้เลย ไม่จำเป็นต้องเอาไปทำงานใน RAM (จึงทำให้ลดขนาดของ RAM ลงได้) อย่างไรก็ตาม NOR ROM นี้ไม่สามารถ XIP ได้กับ รูปภาพ หรือ เสียง 

เนื่องมาจากว่า NAND write เร็ว ส่วน NOR read เร็ว เครื่องโดยส่วนมากจึงจะประกอบไปด้วย NOR 64M และ NAND 64M เมื่อ NOR มัน XIP โปรแกรมได้ RAM จึงจำเป็นเพียงแค่ 64M หรือ ต่ำกว่าคือ 32M (เพื่อประหยัดพลังงาน) 

(ขอขอบคุณ ข้อมูลจาก http://www.smart-mobile.com)

ในรูปด้านล่าง จะขอเน้นภาพของ Memory ที่ต่อเข้ากับ CPU ครับ คือ RAM นี้จะถือว่าเป็น Primary Strorage  , ส่วนพวก ROM เป็น Secondary Storage ครับ ซึ่งมีการเชื่อมต่อตามรูปที่ชี้สีแดงครับ

ในเรื่องของความจุ NAND FLASH ถ้าใครยังสงสัยว่า บอร์ดที่ท่านมีอยู่เป็นรุ่นขนาด NAND FLASH เท่าไหร่ ทาง ThaiEasyElec ขอจำแนกให้ท่านดูตามนี้ครับ

ดูรหัสของ Part Number IC SAMSUNG ครับ

Code F12 = 64 MB

Code F1G = 128 MB

Code F2G = 256 MB , Code F8G = 1 GB

   หวังว่าท่านจะมีความเข้าใจเรื่อง Memory มากขึ้นครับ ซึ่งในเนื้อหาส่วนนี้ เรามีอธิบายเพิ่มเติม เช่น เรื่องของ Kernel และ  Cross Compile หรือ ตัวอย่างการพัฒนา Application ในคอร์สอบรม ARM9 ของเรา หากท่านใดสนใจบอร์ด ARM9 แต่ไม่แน่ใจว่าจะเริ่มต้นอย่างไร เรามีคอร์ส Beginning ARM9 แนะนำ 2 คอร์สคือ

Course ” Beginning Embedded Linux using ARM9 S3C2440 (WORKSHOP)”
Course “Beginning ARM9 S3C2440 using WIN CE 6.0 (WORKSHOP)”

ThaiEasyElec หวังว่า บทความ Review นี้จะมีประโยชน์ ช่วยให้ท่านเข้าใจภาพรวมในการใช้งานบอร์ด ARM9 มากขึ้นนะครับ และเราจะมี Review สินค้าอื่น ๆ มาเพิ่มเติมเรื่อย ๆ โปรดติดตามชมครับ