Stack กับ Heap คืออะไรกันนะ?

ในการเขียนโค้ดในภาษาใดก็ตาม ไม่ว่าจะเป็น C, Python หรือภาษาอื่น ๆ แทบจะทุกภาษาล้วนจะต้องมีการประกาศตัวแปรชนิดต่าง ๆ เช่น int double หรือพวกตัวแปรที่มีความซับซ้อนมากขึ้นมาอย่าง array หรือ struct รวมถึงการจองพื้นที่ไว้ส่วนหนึ่งเพื่อเอาไว้เก็บค่าบางอย่างเพื่อใช้ในโปรแกรม โดยปกติแล้ว เมื่อประกาศตัวแปร พื้นที่ภายในหน่วยความจำจะถูกจองเอาไว้ใช้สำหรับตัวแปรที่เราประกาศ หรือพื้นที่ที่เราจองไว้ แต่ว่าพื้นที่ภายในหน่วยความจำพวกนี้ถูกจองอยู่ตรงไหนของระบบ แล้วถูกจองด้วยวิธีแบบไหนกันนะ? มาทำความรู้จักส่วนประกอบภายในหน่วยความจำกันเล็กน้อยค่ะ ภายในหนึ่งโปรแกรมจะมีการจองพื้นที่หนึ่ง ๆ ไว้สำหรับใช้งานภายในโปรแกรม โดยพื้นที่ตรงนี้จะมีโครงสร้างตามรูปด้างล่างนี้ค่ะ Process Memory Layout สำหรับภาษา C   รูปนี้จะจำลองตัว Process Memory Layout ที่ใช้กันภายในภาษา C และ C++ ค่ะ ในภาษาอื่นๆ อาจจะแตกต่างกันเล็กน้อย ภายใน Process Memory Layout จะแบ่งออกเป็นสองส่วนหลักๆ คือ Static Memory Layout โดยในส่วนนี้จะใช้ในการเก็บโค้ดที่มีการแปลงเป็น Machine … Read More

ทำความรู้จักกับ VS Code extensions: Todo Tree กัน

โปรแกรมแก้ไขข้อความ หรือเท็กซ์อิดิเตอร์ (Text editor) คือสิ่งที่นักพัฒนาซอฟต์แวร์หลาย ๆ คนใช้เป็นเครื่องมือในการปรับปรุงและพัฒนาโปรแกรม หรือพูดง่าย ๆ ก็คือโปรแกรมที่นักพัฒนาใช้ในการเขียนโปรแกรมนั่นเอง เนื่องด้วยเท็กซ์อิดิเตอร์นั้นมีฟีเจอร์ต่าง ๆ ที่ช่วยให้นักพัฒนาสามารถแก้ไขโปรแกรมได้อย่างมีประสิทธิภาพ แยกสัดส่วนของโปรแกรมที่เขียนขึ้นมาได้อย่างเป็นสัดส่วน มี User Interface (UI) ที่น่าใช้งาน รวมถึงมีฟีเจอร์พื้นฐานช่วยเน้นข้อความเป็นสีต่าง ๆ ทำให้สามารถแยกแยะโค้ดได้อย่างชัดเจนอีกด้วย ในปัจจุบันเท็กซ์อิดิเตอร์มีให้เลือกใช้มากมายหลายแพลตฟอร์ม ตัวอย่างเช่น Eclipse, Atom, Sublime Text, Vim หรือโปรแกรมพื้นฐานอย่าง Notepad++ ก็ตาม แต่มีเท็กซ์อิดิเตอร์หนึ่งที่ไม่มีใครไม่รู้จัก นั่นคือ “Visual Studio Code” หรือ “VS Code” ที่เรารู้จักกันนั่นเอง VS Code นั้นถือเป็นเท็กซ์อิดิเตอร์ที่ถูกพัฒนาขึ้นโดยบริษัทยักษ์ใหญ่อย่าง Microsoft สามารถติดตั้งใช้งานได้ทั้งระบบปฏิบัติการ Windows, Linux รวมถึง macOS ก็ได้เช่นกัน VS Code นั้นเป็นที่นิยมสูงอันดับต้น ๆ … Read More

กว่าจะมาถึงฟังก์ชัน main ต้องทำอะไรบ้างนะ?

หลาย ๆ ท่านที่กำลังเขียนโปรแกรมหรือเคยเรียนเขียนโปรแกรมมาอาจจะรู้จักกันดีกับฟังก์ชันที่ชื่อว่า main ซึ่งในภาษา C นั้น ฟังก์ชัน main มักจะถูกบอกกล่าวว่าเป็นจุดเริ่มต้นของการทำงานโปรแกรม จริง ๆ แล้วในเชิงลึกนั้น โปรแกรมนั้นไม่ได้เริ่มจาก ฟังก์ชัน main แต่จะเริ่มจากสิ่งที่เรียกว่า startup routine ซึ่งเจ้าสิ่งนี้แหละเป็นส่วนสำคัญต่อการทำให้โปรแกรมทำงานครับ ทั้งนี้ผู้เขียนได้นำบทความที่น่าสนใจของเรื่องนี้จากต่างประเทศ มาแปลให้ผู้ที่สนใจได้อ่านกันครับ สงสัยจริง ๆ ก่อนฟังก์ชัน main มีอะไร? การเขียนโปรแกรมโดยใช้ภาษา C บน Windows หรือ Linux/UNIX จะเขียนโปรแกรมตั้งแต่ในฟังก์ชัน main เป็นต้นไป อย่างไรก็ตาม ดังที่กล่าวขั้นต้นโปรแกรมไม่ได้เริ่มต้นด้วยฟังก์ชัน main ก่อนหน้าฟังก์ชัน main นั้นจะมีสิ่งที่เรียกว่า startup routine อยู่ครับ ในเชิงงาน embedded หรือ งานที่เกี่ยวข้องกับบอร์ด microcontroller จำเป็นต้องทำความเข้าใจ startup routine เพื่อให้โปรแกรมทำงาน อีกทั้งในบางครั้งการดีบักโปรแกรมโดยที่ไม่รู้ว่า … Read More

Logic Voltage Level and Fan-out

Logic Voltage Level การออกแบบวงจรนั้นจะต้องคำนึงถึง Logic Voltage Level เพื่อให้สัญญาณที่สื่อสารกันของแต่ละ IC ไม่ผิดพลาด โดยจะแบ่งชนิด Input และ Output ดังนี้ TTL และ CMOS ปกติแล้วเราจะมองสัญญาณเป็น 2 สถานะคือ สถานะ High (1) และสถานะ Low (0) ตัวอย่างเช่นสัญญาณ UART ในรูปด้านล่าง สมมติว่าวงจรนี้ใช้แรงดัน 5V ถ้าสัญญาณมีแรงดัน 5V จะเป็นสถานะ High และถ้าแรงดันเป็น 0V จะเป็นสถานะ Low ก่อนไปหัวข้อถัดไป อยากแนะนำให้รู้จักคำศัพท์ต่อไปนี้เสียก่อน Voltage Input High (VIH) : ช่วงแรงดันที่ IC คอนเฟิร์มว่าเป็นสถานะ High Voltage Input Low (VIL) … Read More

Tera Term การใช้งานเบื้องต้น และ Setting 5 ข้อ เพื่อป้องกันความผิดพลาดระหว่าง Debug

ประวัติความเป็นมาของ Tera Term Tera term หรือที่เรียกกันสั้นๆว่า TT พัฒนาโดยคุณ Takashi Teranishi ในปี 1994 หลังจากนั้นได้เผยแพร่ให้เป็น freeware และ ได้รับรางวัล Online software grand prize 97 ในปี 1997 ที่จัดโดย Madonomori  คุณ Takashi หยุดพัฒนา Tera Term เวอร์ชั่น 2.3 ในปี 1998 ในขณะนั้นสามารถใช้ได้กับ Windows95 และ Windows NT เท่านั้น  ตั้งแต่ปี 2004  องค์กรนักพัฒนา Tera Term Project เป็นได้เข้ามาพัฒนาต่อ ซึ่งทำให้ Tera Term สามารถรองรับ UTF-8 และ ฟังก์ชั่นการเชื่อมต่อ SSH … Read More

ทำความรู้จักกับ RISC-V

หากพูดถึงสถาปัตยกรรมคอมพิวเตอร์ที่เป็นที่รู้จักในปัจจุบันหลายๆคนอาจจะนึกถึงสถาปัตยกรรม x86 จาก Intel และ AMD ในอุปกรณ์จำพวก Desktop PC/Server หรือสถาปัตยกรรม ARM ที่ให้ผู้ผลิตต่างๆซื้อ License เพื่อไปผลิตและปรับแต่งเองในอุปกรณ์จำพวก Smart phone หรือ Microcontroller แต่ในตอนนี้กำลังมีอีกสถาปัตยกรรมที่กำลังได้รับความสนใจเพิ่มขึ้นมานั่นก็คือสถาปัตยกรรมที่มีชื่อว่า RISC-V RISC-V คืออะไร RISC-V (ออกเสียงว่า risk five) เป็นสถาปัตยกรรมคอมพิวเตอร์แบบ RISC ที่ถูกวิจัยและพัฒนาขึ้นที่ University of California, Berkeley ในปี 2010 โดยชื่อ RISC-V สื่อมาจากว่าเป็นงานวิจัยที่เกี่ยวกับสถาปัตยกรรม RISC รุ่นที่ 5 ของศาสตราจารย์ David Patterson หนึ่งในผู้ร่วมออกแบบ RISC-V  และในปี 2015 ก็ได้จัดตั้ง RISC-V Foundation ขึ้นมาเพื่อดูแล และจัดการแนวทางเกี่ยวกับการพัฒนาตัว RISC-V ต่อไป … Read More

INTRODUCTION TO 10BASE-T1S

บทความที่ผ่านมาเราได้พูดถึงมาตราฐาน 10BASE-T1L (https://ndrsolution.com/2022/05/20/introductio-to-10base-t1l/) ซึ่งจุดเด่นในเรื่องของระยะทางในการสื่อสาร มาวันนี้เรามารู้จักมาตราฐานอีกนึงตัวกันครับ นั้นก็คือ 10BASE-T1S  10BASE-T1S โดยปกติ Ethernet นั้นถ้าเราจะเชื่อมต่อกับอุปกรณ์ลูกข่ายอื่นๆ นั้นจำเป็นต้องมี hub หรือ switch เพื่อใช้เป็นตัวกลางในการเชื่อมต่อ ทั้งนี้ 10BASE-T1L (ที่กล่าวในบทความที่แล้ว) ก็เหมือนกัน ยังจำเป็นต้องใช้ hub หรือ switch ในการเชื่อมต่อ แต่ในกรณีของ 10BASE-T1S นั้นจะพิเศษขึ้นมาอีกหน่อยคือ สามารถต่อสายถึงกันโดยตรงได้เลย นั้นหมายความว่าการใช้งาน 10BASE-T1S นั้น ไม่จำเป็นต้องใช้ hub หรือ switch (ดูได้จากรูปด้านล่าง) เราจึงสามารถนำ 10BASE-T1S มาประยุกต์ใช้งานในระบบที่มีอยู่ได้แทบจะทันที ดังนั้นข้อดีที่เห็นได้ชัดเจนเลยก็คือ กรณีระบบที่ใช้ CAN หรือ RS-485 นั้นถ้าเราต้องการให้ระบบสามารถเชื่อมต่อกับ Ethernet ได้ จำเป็นต้องมีตัวแปลง protocol  ให้เข้ากับ Ethernet ก่อน(ดังรูปด้านล่าง) แต่ในสำหรับ 10BASE-T1S … Read More

รู้จัก Teardrops ในการออกแบบ PCB จะช่วยให้คุณไม่ต้องเสียน้ำตาในภายหลัง

“ก่อนที่จะส่งไฟล์ไปโรงงานผลิต PCB อย่าลืมเพิ่ม Teardrops ลงไปที่บอร์ดนะ” หัวหน้าทีมมักจะเตือนในตอนที่ผมเป็นนักออกแบบ PCB น้องใหม่อยู่บ่อยๆ  ณ ขณะนั้น ผมคิดในใจว่า เอ๊ะ! “Teardrops คืออะไร?” “ทำไมต้องเพิ่ม Teardrops?” ด้วยความสงสัย ผมก็เลยทำการสำรวจหาข้อมูลจากการค้นหาโดย Google เพื่อทำความเข้าใจเพิ่มเติม เนื่องจากตอนนั้นมีเนื้อหาบนอินเทอร์เน็ตไม่มากนัก และต้องท่องโลกอินเตอร์เน็ตไปเรื่อย ๆ ก่อนจึงจะรู้ว่า Teardrops คืออะไร หากคุณยังใหม่กับสิ่งนี้เช่นเดียวกับผมตอนนั้น หวังว่ามันจะเป็นประโยชน์กับคุณเช่นเดียวกันนะครับ Teardrops คืออะไร Teardrops เป็นทองแดงพิเศษที่เพิ่มเข้ามา โดยมีลักษณะรูปร่างหลากหลายชนิด ได้แก่ แบบ Line or Filleting, แบบ Curved และแบบ Snowman ขึ้นอยู่กับซอฟต์แวร์ออกแบบ PCB ที่สามารถสร้าง Teardrops แต่ละชนิดได้ แสดงในรูปที่ 1 รูปที่ 1 แสดงชนิดของ Teardrops Teardrops ทำหน้าที่เพิ่มการเชื่อมต่อให้ … Read More

SoC คืออะไร ต่างจากหน่วยประมวลผลแบบอื่นอย่างไรกันนะ

Photo by Pixabay บางคนอาจจะไม่เคยได้ยินคำว่า SoC หรือ System on Chip หรือใครที่อยู่ในวงการสมาร์ทโฟนก็อาจจะเคยได้ยินกันมาบ้างว่า ชิปบนสมาร์ทโฟนหรือแท็บเล็ตนั้นล้วนแต่เป็นชิปแบบ SoC แล้ว SoC มันคืออะไรกันแน่นะ วันนี้จึงจะมาสรุปข้อมูลพื้นฐานเกี่ยวกับ SoC กันค่ะ SoC คืออะไร ต่างจากหน่วยประมวลผลแบบอื่นอย่างไรกันนะ SoC ย่อมาจากคำว่า System on Chip ซึ่งเมื่อแปลตรงตัวในภาษาไทยก็คือ “ระบบที่อยู่บนชิป” นั่นก็คือ การออกแบบชิปโดยนำวงจรและส่วนประกอบอิเล็กทรอนิกส์ต่างๆ ที่เป็นส่วนประกอบบนคอมพิวเตอร์หลายๆ ตัวรวมถึงไมโครคอนโทรลเลอร์หรือไมโครโพรเซสเซอร์ไปไว้ในบนชิปเพียงตัวเดียว ภาพแสดงถึงส่วนประกอบที่ถูกรวมอยู่ภายใน SoCPhoto by appcodelabs จุดเริ่มต้นของ SoC เทคโนโลยีชิป SoC นั้นได้ถูกประดิษฐ์สำเร็จครั้งแรกในนาฬิกาดิจิตอลในปี 1974 ซึ่งสำหรับตัว SoC ที่อยู่บนนาฬิกาดิจิตอลเรือนนี้ได้รวมแผงวงจร LCD สำหรับหน้าจอนาฬิกา วงจรจับเวลา กับชิป Intel 5810 CMOS เข้าเป็นชิปเดียวกันจากจุดเริ่มต้นตรงนี้นำไปสู่การพัฒนาชิป SoC เครื่องคิดเลขอิเล็กทรอนิกส์ … Read More

Basic Thermal Resistance

หลังจากที่บอร์ด PCB ได้ถูกออกแบบและผลิตออกมา บางครั้งอาจพบว่าเมื่อนำมาทดสอบการใช้งานกลับเกิดความผิดปกติอย่างเช่น อุปกรณ์หยุดทำงานหลังจ่ายไฟได้ซักระยะ โดยในความผิดปกติหลากหลายสาเหตุนั้น ความร้อนเป็นหนึ่งในปัจจัยที่ส่งผลต่ออุปกรณ์อิเล็กทรอนิกส์อย่างเห็นได้ชัดอีกทั้งมีผลต่อความสามารถในการทำงานของอุปกรณ์รวมถึงความปลอดภัยต่อการใช้งานอุปกรณ์นั้นอีกด้วย ดังนั้นการออกแบบโดยคำนึงถึงความร้อนในระบบเป็นอีกหนึ่งวิธีที่จะช่วยลดการเกิดข้อผิดพลาดของอุปกรณ์ได้ Thermal Resistance คืออะไร Thermal Resistance หมายถึงความสามารถในการต้านทานการถ่ายเทความร้อน โดยค่าความต้านทานนี้หาได้จากการนำค่าความแตกต่างของอุณหภูมิ 2 จุด หารด้วย ปริมาณความร้อนที่ไหลผ่านในขณะนั้น กล่าวได้ว่ายิ่ง Thermal Resistance มีค่ามาก ความร้อนยิ่งไหลผ่านได้ยากและทำให้ความร้อนคงสะสมอยู่ในระบบ Thermal Resistance (Rth) =  Temperature Difference (∆T) /  Heat Flow (P) [°𝐶/𝑊] ซึ่ง R เป็นสัญลักษณ์ตัวแทนของค่าความต้านทานทางไฟฟ้า ส่วน Thermal Resistance จะใช้สัญลักษณ์เป็น θ (theta) จะมีหน่วยเป็น K/W หรือ °C/W โดย 0 K = -273.15°Ca Heat … Read More