การพัฒนาเฟิร์มแวร์สำหรับไมโครคอนโทรลเลอร์

จาก Theory Wiki
รุ่นแก้ไขเมื่อ 15:25, 14 สิงหาคม 2552 โดย Chaiporn (คุย | มีส่วนร่วม) (หน้าที่ถูกสร้างด้วย 'วิกินี้อธิบายถึงขั้นตอนและตัวอย่างการพัฒนาเฟิร…')
(ต่าง) ←รุ่นแก้ไขก่อนหน้า | รุ่นแก้ไขล่าสุด (ต่าง) | รุ่นแก้ไขถัดไป→ (ต่าง)
ไปยังการนำทาง ไปยังการค้นหา

วิกินี้อธิบายถึงขั้นตอนและตัวอย่างการพัฒนาเฟิร์มแวร์ลงบนบอร์ดไมโครคอนโทรลเลอร์ที่เราได้ประกอบขึ้นมา โดยเนื้อหาครอบคลุมเฉพาะสภาพแวดล้อมการพัฒนาโปรแกรมบนลินุกซ์เท่านั้น

ติดตั้งซอฟท์แวร์ที่เกี่ยวข้อง

  • Cross compiler สำหรับไมโครคอนโทรลเลอร์ตระกูล AVR รวมถึงไลบรารีที่เกี่ยวข้อง
sudo apt-get install avr-gcc avr-libc
  • AVR toolchain
sudo apt-get install binutils-avr
  • avr-dude สำหรับโหลดไบท์โค้ดลงบนแฟลชของไมโครคอนโทรลเลอร์ผ่านพอร์ต USB
sudo apt-get install avrdude

โปรแกรมตัวอย่าง

ทดลองพิมพ์โปรแกรมตัวอย่างต่อไปนี้ และบันทึกไว้ในชื่อ first.c

#define F_CPU 16000000UL // บอกไลบรารีว่า MCU ทำงานที่ 16MHz
#include <avr/io.h>
#include <util/delay.h>

int main(void)
{
    PORTD = 0b00000000;  // กำหนดลอจิกขา PD7..0 เป็น 0
    DDRD  = 0b00001000;  // กำหนดให้ขา PD3 ทำหน้าที่เอาท์พุท

    while (1)
    {
        PORTD = 0b00001000;  // ส่งลอจิก 1 ไปที่ขา PD3
        _delay_ms(1000);
        PORTD = 0b00001000;  // ส่งลอจิก 0 ไปที่ขา PD3
        _delay_ms(1000);
    }

    return 0;
}

คอมไพล์โปรแกรม

avr-gcc -mmcu=atmega168 -o led.elf led.c

ผลลัพธ์ที่ได้จะอยู่ในรูปของไฟล์ฟอร์แมต ELF (Excutable and Linkable Format)

avr-objcopy -j .text -O ihex led.elf led.hex
avrdude -p atmega168 -c usbasp -u -U flash:w:led.hex