
18
CHAPTER 1. THE SYST EM
Listing 1.2: Makefile for simpleprog (Listing 1.1)
# The na me o f t h e p rog ram we w ant t o c o m pi l e
PROGRAM = s i m p l e p r o g
# The d i r e c t o r y c o n t a i n i n g t h e o pen r i s c s u p p o r t d i r
LIBDIR = . . / l i b
INCLUDEDIR = . . / i n c l u d e
CFLAGS += −I $ ( INCLUDEDIR) −Wal l −W s t r i c t−p r o t o t y p e s
CFLAGS += −Werr or−i m p l i c i t −f u n c t i o n −d e c l a r a t i o n
CFLAGS += −Os −g −fno−b u i l t i n −f o mi t−fram e−p o i n t e r − n o s t d l i b
# T o o l c h a i n c o n f i g u r a t i o n
AS = o r3 2−u c l i n u x−as
CC = or 32−uc l i n u x−gc c
LD = or 32−uc l i n u x−l d
DUMP = or32−u c l i n u x−objdump −S −D −EB
COPY = or32−u c l i n u x−obj c o p y
SIM = or 32−uclinux−sim
# F la g s t o LD, n ee d t o i n c l u d e a l i n k s c r i p t h e r e
LDFLAGS = −Tram . l d
OBJFILES=$ (PROGRAM) . o
HEXFILE=$ (PROGRAM ) . hex
SIMPROGRAM=$ (PROGRAM) sim
a l l : $ (PROGRAM) $ ( HEXFILE) $ (SIMPROGRAM)
# The m i n im a l s u p p o r t l i b c o n t a i n i n g p r i n t f / s l e e p / e t c
o p e n r i s c l i b : $ ( LIBDIR ) / o p e n r i s c l i b . a $ ( LI BDIR ) / c r t . o $ ( LIBDIR ) / r e s e t . o
# Commands t o make t h e ope n r i s c s u p p o r t l i b
$ ( LIBDIR ) / o p e n r i s c l i b . a :
cd $ ( LIBDIR ) && $ (MAKE)
$ ( LIBDIR ) / c r t . o :
cd $ ( LIBDIR ) && $ (MAKE)
$ ( LIBDIR ) / r e s e t . o :
cd $ ( LIBDIR ) && $ (MAKE)
. S . o :
$ (CC) $ ( CFLAGS) −c $<
. c . o :
$ (CC) −c $ (CFLAGS) −o $@ $<
# L i nk t h e pr ogr am t o g e t h e r w i t h t h e s u p p o r t l i b
# ( And c r e a t e a t e x t f i l e w i t h t h e d i s a s s e m b l e d c o n t e n t s o f t h e p rogr am )
$ (PROGRAM) : $ ( OBJFILES ) ram . l d o p e n r i s c l i b
$ (LD) − B s t a t i c $ ( LIBDIR ) / c r t . o $ ( OBJFILES ) $ ( LIBDIR ) / o p e n r i s c l i b . a \
$ (LDFLAGS) −o $ (PROGRAM)
$ (DUMP) $ (PROGRAM) > $ (PROGRAM ) . t x t
# C r ea t e an i n t e l h ex dump o f t h e pr ogra m
$ ( HEXFILE ) : $ (PROGRAM)
$ (COPY) −O i h e x $ (PROGRAM) $ ( HEXFILE )
# C r ea t e a b i n a r y we c an s i m u l a t e w i t h t h e o p e n r i s c s i m u l a t o r
$ (SIMPROGRAM ) : $ ( PROGRAM) ram . l d o p e n r i s c l i b
$ (LD) − B s t a t i c $ ( LIBDIR ) / r e s e t . o $ (PROGRAM) $ ( LDFLAGS) −o $ (SIMPROGRAM)
$ (DUMP) $ (SIMPROGRAM) > $ (SIMPROGRAM ) . t x t
# Run t h e s i m u l a t o r on t h e prog ram
sim : $ (SIMPROGRAM)
$ ( SIM ) − i −f sim . c f g $ (SIMPROGRAM)
c l e a n :
rm −f ∗ . o ∗~ sim . p r o f i l e $ (PROGRAM) $ (SIMPROGRAM) $ ( HEXFILE ) ∗ . t x t u a r t 0 . t x u a r t 0 . r x
We place all the segments of simpleprog at the address 0x2000 with the link
script shown in Listing 1.3.
Commenti su questo manuale