Electoday 2025

ไมโครคอนโทรลเลอร์ => ARM Processors => Topic started by: TaoTao on February 12, 2018, 07:10:42 PM

Title: code executed from RAM/FLASH แตกต่างกันอย่างไรอ่ะครับ
Post by: TaoTao on February 12, 2018, 07:10:42 PM
>>DataSheet(STM8L052C6) หน้านึง มันบอกการกินกระแส

code executed from RAM    (1MHz, HSE) = 0.20 mA
code executed from FLASH (1MHz, HSE) = 0.52 mA

>>เลยสงสัยว่า โคดแบบไหน มัน exexcuted จาก FLASH หรือครับ ?
เพราะ ปกติที่รู้ เมื่อ ON MCU.. มันก็โหลด Code ลงสู่ RAM ไม่ใช่หรือครับ

ขอบคุณล่วงหน้าครับ  :o
Title: Re: code executed from RAM/FLASH แตกต่างกันอย่างไรอ่ะครับ
Post by: dec on February 13, 2018, 09:15:46 PM
MCU ส่วนใหญ่จะ execute บน Flash ครับ

ส่วนตัวที่ execute บน RAM จะเป็นพวก Microprocessor (พวก Embedded Linux) ครับ

การ execute บน RAM จะมีข้อดีมากกว่า แต่ RAM มันแพงครับ
และก็ยุ่งยากตรงต้องมาโหลดโปรแกรมขึ้น RAM ก่อน เพราะ RAM
ไม่สามารถเก็บข้อมูลไว้ได้เมื่อไม่มีไฟเลี้ยง ส่วนใหญ่โปรแกรมใน
MCU ที่มีการ execute บน RAM จะเป็นโปรแกรมเฉพาะทาง เช่น
โปรแกรมที่ต้องการความเร็วในการ execute สูง ๆ หรือไม่ก็พวก
bootloader ที่ต้องทำการลบ Flash และโปรแกรมใหม่ทั้งหมด
ขณะที่ทำการลงโปรแกรมใหม่อยู่ โปรแกรม bootloader
จึ่งต้องหลบไปอยู่ใน RAM แทน ไม่งั้นจะโดนลบไปด้วย

MCU ส่วนใหญ่เลยเลือก execute บน Flash แทน เพราะราคาถูกกว่า
แล้วก็โปรแกรมใน MCU มักไม่มีการเปลี่ยนแปลงอะไรอยู่แล้ว
ไม่เหมือน Embedded Linux ที่โปรแกรมอาจมีการโหลดเข้า
โหลดออกตลอดเวลา