Menguji perisian Clang LLVM yang kita bina

Mari kita cuba perisian yang telah kita bina dalam siri yang lepas. Kita gunakan contoh aplikasi untuk AVR yang mudah yaitu “ledblink”. Sila muat turun di sini.

#ifndef __AVR_ATmega328P__
#define __AVR_ATmega328P__
#endif

#ifndef F_CPU
# define F_CPU 16000000UL
#endif

#include <avr/io.h>
#include <util/delay.h>
int main(void)
{
    DDRC |= 1 << PINC5; //define the pin as output
    while (1)
    {
        _delay_ms(1000);     //execute delay 1s
        PORTC ^= 1 << PINC5; // toggle the outout pin
    }
    return 0;
}

Dengan “Makefile”,

laksana arahan “make” untuk menyusun aplikasi “ledblink” yang telah ditetapkan untuk mengunakan Clang. Berikut adalah hasilnya,

Clang mengadu bahawa tidak terdapat pemasangan “standard library” untuk penyusun ini seperti yang telah dinyata dalamblog yang lepas. Tidak seperti AVR-GCC, Clang tidak dapat mencari “libc” (walaupun kita telah memasangnya di dalam cakera kita). Walau bagaimanapun ini adalah hanya “warning”, proses menyusun di teruskan kerana ia bukan “error”.

Seperti yang kita dapat lihat di atas, Clang/LLVM dapat menyusun (compile) dan “link” ke dalam bentuk binari yang kita perlukan (ledblink.hex).

Mari kita periksa apakah Clang telah melakukan link dengan betul. Makefile di atas juga telah ditetapkan untuk menjana file .map untuk kita periksa.

Kita dapati tidak terdapat kod “main” di dalamnya. Dapat kita simpulkan bahawa Clang tidak dapat melakukan proses “link”.

Baiklah, kita pasti bahawa AVR-GCC dan library libc boleh melakukan proses “linking” dalam Windows. Apa yang kita perlukan ialah kita mengunakan AVR-GCC untuk proces “linking”. Kita boleh lakukan ini dengan menukarnya di dalam Makefile.

Mari kita uji lagi,

Proses “linking” telah lengkap. Sekarang tibalah masa yang mengujakan, memuat naik ke peranti AVR kita.

Saya mengunakan avrdudess,

Peranti AVR atmega328p di atas papan litar buatan sendiri. Maklumat tentang gambarajah skematik dan papan litar ada di sini. Papan litar Arduino juga boleh digunakan dengan sedikit pengubahan kod “ledblink.c”.

Tinggalkan Jawapan

Masukkan butiran anda dibawah atau klik ikon untuk log masuk akaun:

WordPress.com Logo

Anda sedang menulis komen melalui akaun WordPress.com anda. Log Out /  Tukar )

Google photo

Anda sedang menulis komen melalui akaun Google anda. Log Out /  Tukar )

Twitter picture

Anda sedang menulis komen melalui akaun Twitter anda. Log Out /  Tukar )

Facebook photo

Anda sedang menulis komen melalui akaun Facebook anda. Log Out /  Tukar )

Connecting to %s

Create your website at WordPress.com
Get started
%d bloggers like this: