2011-05-30 09:21:06     bare metal - how to compile the basiccrt.S properly

Document created by Aaronwu Employee on Oct 16, 2013
Version 1Show Document
  • View in full screen mode

2011-05-30 09:21:06     bare metal - how to compile the basiccrt.S properly

Prasanth Rajagopal (INDIA)

Message: 100939   

 

I have a simple C and ASM mixed project for BF533 on eclipse that just blinks LEDs and triggers for push button interrupt. Now, I just want to see how to add the startup files manually.

 

I just copied the one from here:

 

http://blackfin.uclinux.org/gf/project/toolchain/scmsvn/?action=browse&path=%2Fbranches%2F2010R1%2Fbinutils-2.17%2Flibgloss%2Fbfin%2Fbasiccrt.S&view=log

 

& included the above file as basiccrt.S in my project . I also removed the options, -nostartfiles & -nostdlib.

 

Compilation seems to run in to several errors:

 

../src/basiccrt.S:85: Error: reloc xxx not supported by object file format

 

And it seems to pertain to:

 

P0.L = SPI0_CTL & 0xFFFF;

P0.H = SPI0_CTL >> 16;

 

Now, in searches here, I see that there were mentions of LO() and HI(), but those seem to be removed now.

 

I then comment the above instructions for sanity check, but end up in definition errors:

 

./src/basiccrt.o:../src/basiccrt.S:78: undefined reference to `SYSCFG_VALUE'

./src/basiccrt.o:../src/basiccrt.S:85: undefined reference to `.__operator'

./src/basiccrt.o:../src/basiccrt.S:86: undefined reference to `.__operator'

./src/basiccrt.o:../src/basiccrt.S:89: undefined reference to `.__operator'

./src/basiccrt.o:../src/basiccrt.S:90: undefined reference to `.__operator'

./src/basiccrt.o:../src/basiccrt.S:93: undefined reference to `.__operator'

./src/basiccrt.o:../src/basiccrt.S:94: more undefined references to `.__operator' follow

./src/basiccrt.o:../src/basiccrt.S:132: undefined reference to `IVBh'

./src/basiccrt.o:../src/basiccrt.S:133: undefined reference to `IVBl'

./src/basiccrt.o:../src/basiccrt.S:160: undefined reference to `_coreb_stack_end'

./src/basiccrt.o:../src/basiccrt.S:161: undefined reference to `_coreb_stack_end'

./src/basiccrt.o:../src/basiccrt.S:179: undefined reference to `__bss_start'

./src/basiccrt.o:../src/basiccrt.S:180: undefined reference to `__bss_start'

./src/basiccrt.o:../src/basiccrt.S:185: undefined reference to `_coreb_bss_start'

./src/basiccrt.o:../src/basiccrt.S:186: undefined reference to `_coreb_bss_start'

./src/basiccrt.o:../src/basiccrt.S:187: undefined reference to `_coreb_bss_end'

./src/basiccrt.o:../src/basiccrt.S:188: undefined reference to `_coreb_bss_end'

./src/basiccrt.o:../src/basiccrt.S:201: undefined reference to `memset'

./src/basiccrt.o:../src/basiccrt.S:204: undefined reference to `INTERRUPT_BITS'

./src/basiccrt.o:../src/basiccrt.S:219: undefined reference to `.__operator'

./src/basiccrt.o:../src/basiccrt.S:220: undefined reference to `.__operator'

./src/basiccrt.o:../src/basiccrt.S:237: undefined reference to `__clk_ctrl'

./src/basiccrt.o:../src/basiccrt.S:238: undefined reference to `__clk_ctrl'

./src/basiccrt.o:../src/basiccrt.S:239: undefined reference to `MAX_IN_STARTUP'

./src/basiccrt.o:../src/basiccrt.S:249: undefined reference to `.__operator'

./src/basiccrt.o:../src/basiccrt.S:250: undefined reference to `.__operator'

./src/basiccrt.o:../src/basiccrt.S:257: undefined reference to `SET_CLK_MSEL'

./src/basiccrt.o:../src/basiccrt.S:258: undefined reference to `SET_CLK_DF'

./src/basiccrt.o:../src/basiccrt.S:259: undefined reference to `SET_CLK_LOCK_COUNT'

./src/basiccrt.o:../src/basiccrt.S:263: undefined reference to `SET_CLK_CSEL'

./src/basiccrt.o:../src/basiccrt.S:264: undefined reference to `SET_CLK_SSEL'

./src/basiccrt.o:../src/basiccrt.S:282: undefined reference to `__cplb_ctrl'

./src/basiccrt.o:../src/basiccrt.S:283: undefined reference to `__cplb_ctrl'

./src/basiccrt.o:../src/basiccrt.S:284: undefined reference to `CPLB_ENABLE_ANY_CPLBS'

./src/basiccrt.o:../src/basiccrt.S:290: undefined reference to `_cplb_hdr'

./src/basiccrt.o:../src/basiccrt.S:291: undefined reference to `_cplb_hdr'

./src/basiccrt.o:../src/basiccrt.S:292: undefined reference to `IVBh'

./src/basiccrt.o:../src/basiccrt.S:293: undefined reference to `IVBl'

./src/basiccrt.o:../src/basiccrt.S:297: undefined reference to `_cplb_init'

./src/basiccrt.o:../src/basiccrt.S:327: undefined reference to `UNASSIGNED_VAL'

./src/basiccrt.o:../src/basiccrt.S:328: undefined reference to `UNASSIGNED_VAL'

./src/basiccrt.o:../src/basiccrt.S:353: undefined reference to `monstartup'

./src/basiccrt.o:../src/basiccrt.S:357: undefined reference to `_init'

./src/basiccrt.o:../src/basiccrt.S:359: undefined reference to `_fini'

./src/basiccrt.o:../src/basiccrt.S:360: undefined reference to `_fini'

./src/basiccrt.o:../src/basiccrt.S:361: undefined reference to `atexit'

./src/basiccrt.o:../src/basiccrt.S:367: undefined reference to `_getargv'

./src/basiccrt.o:../src/basiccrt.S:368: undefined reference to `_Argv'

./src/basiccrt.o:../src/basiccrt.S:369: undefined reference to `_Argv'

./src/basiccrt.o:../src/basiccrt.S:385: undefined reference to `coreb_main'

./src/basiccrt.o:../src/basiccrt.S:392: undefined reference to `exit'

./src/basiccrt.o:../src/basiccrt.S:436: undefined reference to `.__operator'

./src/basiccrt.o:../src/basiccrt.S:437: undefined reference to `.__operator'

./src/basiccrt.o:../src/basiccrt.S:465: undefined reference to `.__operator'

./src/basiccrt.o:../src/basiccrt.S:466: undefined reference to `.__operator'

./src/basiccrt.o:../src/basiccrt.S:481: undefined reference to `.__operator'

./src/basiccrt.o:../src/basiccrt.S:482: more undefined references to `.__operator' follow

 

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

 

So,

 

If I were to pull in the complete startup file(s) and put that in to my project. what all do I need to do & what is the correct way? Am I taking it from an incorrect path? Are there more header files and sources files required (crt0.S crtbegin.S).

 

Thanks

QuoteReplyEditDelete

 

 

2011-05-30 13:01:42     Re: bare metal - how to compile the basiccrt.S properly

Mike Frysinger (UNITED STATES)

Message: 100945   

 

just delete all the stuff you dont actually need

QuoteReplyEditDelete

 

 

2011-05-31 08:33:23     Re: bare metal - how to compile the basiccrt.S properly

Prasanth Rajagopal (INDIA)

Message: 100955   

 

Okay, I was curious how the object files were built and if I could do exactly the same. Now, I just removed most of stuffs, except the SP/FP assigment and the call to function main. This got built and execution was proper. Now one of the important things the CRT does is to do the supervisor-user mode changes.

 

So I included the below from PRM

 

///////////////from PRM/////////////////////////////////////

P0.L = lo(EVT15) ; /* Point to IVG15 in Event Vector Table */

P0.H = hi(EVT15) ;

P1.L = lo(START) ; /* Point to start of User code */

P1.H = hi(START) ;

[P0] = P1 ; /* Place the address of START in IVG15 of EVT */

P0.L = lo(IMASK) ;

R0 = [P0] ;

R1.L = lo(EVT_IVG15) ;

R0 = R0 | R1 ;

[P0] = R0 ; /* Set (enable) IVG15 bit in IMASK register */

RAISE 15 ; /* Invoke IVG15 interrupt */

P0.L = lo(WAIT_HERE) ;

P0.H = hi(WAIT_HERE) ;

RETI = P0 ; /* RETI loaded with return address */

RTI ; /* Return from Reset Event */

WAIT_HERE : /* Wait here till IVG15 interrupt is serviced */

JUMP WAIT_HERE ;

START: /* IVG15 vectors here */

/* Enables interrupts and saves return address to stack */

[--SP] = RETI ;

///////////////from PRM/////////////////////////////////////

 

This again failed with:

 

make all

'Building file: ../src/basiccrt.S'

'Invoking: Blackfin ELF Assembler'

bfin-elf-as -gstabs -am -o"src/basiccrt.o" "../src/basiccrt.S"

../src/basiccrt.S: Assembler messages:

../src/basiccrt.S:59: Error: syntax error. Input text was lo.

../src/basiccrt.S:59: Error:

../src/basiccrt.S:60: Error: syntax error. Input text was hi.

../src/basiccrt.S:60: Error:

../src/basiccrt.S:61: Error: syntax error. Input text was lo.

../src/basiccrt.S:61: Error:

../src/basiccrt.S:62: Error: syntax error. Input text was hi.

../src/basiccrt.S:62: Error:

../src/basiccrt.S:64: Error: syntax error. Input text was lo.

../src/basiccrt.S:64: Error:

../src/basiccrt.S:66: Error: syntax error. Input text was lo.

../src/basiccrt.S:66: Error:

../src/basiccrt.S:70: Error: syntax error. Input text was lo.

../src/basiccrt.S:70: Error:

../src/basiccrt.S:71: Error: syntax error. Input text was hi.

../src/basiccrt.S:71: Error:

make: *** [src/basiccrt.o] Error 1

 

I included

 

defBF532.h:#define lo(con32) ((con32) & 0xFFFF)

defBF532.h:#define hi(con32) (((con32) >> 16) & 0xFFFF)

 

 

And played with .macro as well. but error persisted.

 

Then I modified like this, to just perform the operation in Code itself,

 

///////////////from PRM/////////////////////////////////////

P0.L = (EVT15 & 0xFFFF) ; /* Point to IVG15 in Event Vector Table */

P0.H = ((EVT15 >> 16) & 0xFFFF) ;

P1.L = (START & 0XFFFF) ; /* Point to start of User code */

P1.H = ((START >> 16) & OXFFFF) ;

[P0] = P1 ; /* Place the address of START in IVG15 of EVT */

P0.L = (IMASK & 0xFFFF) ;

R0 = [P0] ;

R1.L = (EVT_IVG15 & 0xFFFF) ;

R0 = R0 | R1 ;

[P0] = R0 ; /* Set (enable) IVG15 bit in IMASK register */

RAISE 15 ; /* Invoke IVG15 interrupt */

P0.L = (WAIT_HERE & 0XFFFF) ;

P0.H = ((WAIT_HERE >> 16) & 0XFFFF) ;

RETI = P0 ; /* RETI loaded with return address */

RTI ; /* Return from Reset Event */

WAIT_HERE : /* Wait here till IVG15 interrupt is serviced */

JUMP WAIT_HERE ;

START: /* IVG15 vectors here */

/* Enables interrupts and saves return address to stack */

[--SP] = RETI ;

///////////////from PRM/////////////////////////////////////

 

 

But now the error is:

 

../src/basiccrt.S: Assembler messages:

../src/basiccrt.S:59: Error: reloc 582 not supported by object file format

../src/basiccrt.S:59: Error: reloc 583 not supported by object file format

../src/basiccrt.S:59: Error: reloc 591 not supported by object file format

../src/basiccrt.S:60: Error: reloc 582 not supported by object file format

../src/basiccrt.S:60: Error: reloc 583 not supported by object file format

../src/basiccrt.S:60: Error: reloc 590 not supported by object file format

../src/basiccrt.S:60: Error: reloc 583 not supported by object file format

../src/basiccrt.S:60: Error: reloc 591 not supported by object file format

../src/basiccrt.S:61: Error: reloc 582 not supported by object file format

../src/basiccrt.S:61: Error: reloc 583 not supported by object file format

../src/basiccrt.S:61: Error: reloc 591 not supported by object file format

../src/basiccrt.S:62: Error: reloc 582 not supported by object file format

../src/basiccrt.S:62: Error: reloc 583 not supported by object file format

../src/basiccrt.S:62: Error: reloc 590 not supported by object file format

../src/basiccrt.S:62: Error: reloc 582 not supported by object file format

../src/basiccrt.S:62: Error: reloc 591 not supported by object file format

../src/basiccrt.S:64: Error: reloc 582 not supported by object file format

../src/basiccrt.S:64: Error: reloc 583 not supported by object file format

../src/basiccrt.S:64: Error: reloc 591 not supported by object file format

../src/basiccrt.S:66: Error: reloc 582 not supported by object file format

../src/basiccrt.S:66: Error: reloc 583 not supported by object file format

../src/basiccrt.S:66: Error: reloc 591 not supported by object file format

../src/basiccrt.S:70: Error: reloc 582 not supported by object file format

../src/basiccrt.S:70: Error: reloc 583 not supported by object file format

../src/basiccrt.S:70: Error: reloc 591 not supported by object file format

../src/basiccrt.S:71: Error: reloc 582 not supported by object file format

../src/basiccrt.S:71: Error: reloc 583 not supported by object file format

../src/basiccrt.S:71: Error: reloc 590 not supported by object file format

../src/basiccrt.S:71: Error: reloc 583 not supported by object file format

../src/basiccrt.S:71: Error: reloc 591 not supported by object file format

make: *** [src/basiccrt.o] Error 1

 

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

 

Any idea how to resolve this?

 

Thanks

QuoteReplyEditDelete

 

 

2011-05-31 08:40:36     Re: bare metal - how to compile the basiccrt.S properly

Mike Frysinger (UNITED STATES)

Message: 100957   

 

you probably didnt include the header that defines all those MMRs

QuoteReplyEditDelete

 

 

2011-05-31 08:49:16     Re: bare metal - how to compile the basiccrt.S properly

Prasanth Rajagopal (INDIA)

Message: 100958   

 

This was in the default basiccrt.S file:

 

#include <sys/platform.h>

#include <cplb.h>

#include <sys/anomaly_macros_rtl.h>

 

I only included this one extra (as I would normally do with VDSP, and I guess all MMRs should be included with that)

 

#include

 

 

 

<defBF533.h>

 

I have attached the CRT code.

 

basiccrt.S

QuoteReplyEditDelete

 

 

2011-05-31 09:02:01     Re: bare metal - how to compile the basiccrt.S properly

Mike Frysinger (UNITED STATES)

Message: 100959   

 

using HI/LO with symbol names is incorrect.  so dont do that.

QuoteReplyEditDelete

 

 

2011-05-31 09:14:22     Re: bare metal - how to compile the basiccrt.S properly

Prasanth Rajagopal (INDIA)

Message: 100960   

 

But as you see, the reloc error could not be fixed even if I remove the LO & HI completely

 

///////////////from PRM/////////////////////////////////////

P0.L = (EVT15 & 0xFFFF) ; /* Point to IVG15 in Event Vector Table */

P0.H = ((EVT15 >> 16) & 0xFFFF) ;

P1.L = (START & 0XFFFF) ; /* Point to start of User code */

P1.H = ((START >> 16) & OXFFFF) ;

[P0] = P1 ; /* Place the address of START in IVG15 of EVT */

P0.L = (IMASK & 0xFFFF) ;

R0 = [P0] ;

R1.L = (EVT_IVG15 & 0xFFFF) ;

R0 = R0 | R1 ;

[P0] = R0 ; /* Set (enable) IVG15 bit in IMASK register */

RAISE 15 ; /* Invoke IVG15 interrupt */

P0.L = (WAIT_HERE & 0XFFFF) ;

P0.H = ((WAIT_HERE >> 16) & 0XFFFF) ;

RETI = P0 ; /* RETI loaded with return address */

RTI ; /* Return from Reset Event */

WAIT_HERE : /* Wait here till IVG15 interrupt is serviced */

JUMP WAIT_HERE ;

START: /* IVG15 vectors here */

/* Enables interrupts and saves return address to stack */

[--SP] = RETI ;

///////////////from PRM/////////////////////////////////////

 

 

But now the error is:

 

../src/basiccrt.S: Assembler messages:

../src/basiccrt.S:59: Error: reloc 582 not supported by object file format

../src/basiccrt.S:59: Error: reloc 583 not supported by object file format

../src/basiccrt.S:59: Error: reloc 591 not supported by object file format

../src/basiccrt.S:60: Error: reloc 582 not supported by object file format

../src/basiccrt.S:60: Error: reloc 583 not supported by object file format

../src/basiccrt.S:60: Error: reloc 590 not supported by object file format

../src/basiccrt.S:60: Error: reloc 583 not supported by object file format

../src/basiccrt.S:60: Error: reloc 591 not supported by object file format

../src/basiccrt.S:61: Error: reloc 582 not supported by object file format

../src/basiccrt.S:61: Error: reloc 583 not supported by object file format

../src/basiccrt.S:61: Error: reloc 591 not supported by object file format

../src/basiccrt.S:62: Error: reloc 582 not supported by object file format

../src/basiccrt.S:62: Error: reloc 583 not supported by object file format

../src/basiccrt.S:62: Error: reloc 590 not supported by object file format

../src/basiccrt.S:62: Error: reloc 582 not supported by object file format

../src/basiccrt.S:62: Error: reloc 591 not supported by object file format

../src/basiccrt.S:64: Error: reloc 582 not supported by object file format

../src/basiccrt.S:64: Error: reloc 583 not supported by object file format

../src/basiccrt.S:64: Error: reloc 591 not supported by object file format

../src/basiccrt.S:66: Error: reloc 582 not supported by object file format

../src/basiccrt.S:66: Error: reloc 583 not supported by object file format

../src/basiccrt.S:66: Error: reloc 591 not supported by object file format

../src/basiccrt.S:70: Error: reloc 582 not supported by object file format

../src/basiccrt.S:70: Error: reloc 583 not supported by object file format

../src/basiccrt.S:70: Error: reloc 591 not supported by object file format

../src/basiccrt.S:71: Error: reloc 582 not supported by object file format

../src/basiccrt.S:71: Error: reloc 583 not supported by object file format

../src/basiccrt.S:71: Error: reloc 590 not supported by object file format

../src/basiccrt.S:71: Error: reloc 583 not supported by object file format

../src/basiccrt.S:71: Error: reloc 591 not supported by object file format

make: *** [src/basiccrt.o] Error 1

QuoteReplyEditDelete

 

 

2011-05-31 09:23:00     Re: bare metal - how to compile the basiccrt.S properly

Mike Frysinger (UNITED STATES)

Message: 100961   

 

you didnt remove things.  like i said, this is wrong:

P1.L = (START & 0XFFFF)

 

you cannot do any operations like that on symbols, so dont.  simply look at how the existing crt code is loading up symbols.  it is not the same as how MMRs are loaded.

QuoteReplyEditDelete

 

 

2011-05-31 12:06:34     Re: bare metal - how to compile the basiccrt.S properly

Prasanth Rajagopal (INDIA)

Message: 100963   

 

In eclipse, the toolchains operate, it appears that the pre processor *.S is parsed  by assembler, instead of compiler & some of these files are locked for different releases.

 

http://www.eclipse.org/forums/index.php?t=msg&&th=75409&goto=235575

 

So I think *.s is never given there (which I believe can be added), but *.S is a locked assembler source file and therefore parsed by assembler.

 

I read the following:  Preprocessing - The *as* internal preprocessor: It does not do macro processing, include file handling, or anything else you may get from your C compiler's preprocessor.

 

To check the above point, I took the symbols part as you said (I got confused with LO() and P0.L!), and then ran the following file basiccrt.S through Compiler and Assembler:

 

///////////////from PRM/////////////////////////////////////

  P0.L = (EVT15 & 0xFFFF) ; /* Point to IVG15 in Event Vector Table */

  P0.H = ((EVT15 >> 16) & 0xFFFF) ;

  P1.L = START; /* Point to start of User code */

  P1.H = START;

  [P0] = P1 ; /* Place the address of START in IVG15 of EVT */

  P0.L = (IMASK & 0xFFFF) ;

  R0 = [P0] ;

  R1.L = (EVT_IVG15 & 0xFFFF) ;

  R0 = R0 | R1 ;

  [P0] = R0 ; /* Set (enable) IVG15 bit in IMASK register */

  RAISE 15 ; /* Invoke IVG15 interrupt */

  P0.L = WAIT_HERE ;

  P0.H = WAIT_HERE ;

  RETI = P0 ; /* RETI loaded with return address */

  RTI ; /* Return from Reset Event */

  WAIT_HERE : /* Wait here till IVG15 interrupt is serviced */

  JUMP WAIT_HERE ;

  START: /* IVG15 vectors here */

  /* Enables interrupts and saves return address to stack */

  [--SP] = RETI ;

  ///////////////from PRM/////////////////////////////////////

 

The Compilation worked properly but assembler failed as below:

 

C:\Program Files\Analog Devices\GNU Toolchain\2010R1\elf\bin>bfin-elf-as.exe basiccrt.S -o basiccrt.o

basiccrt.S: Assembler messages:

basiccrt.S:60: Error: reloc 582 not supported by object file format

basiccrt.S:60: Error: reloc 583 not supported by object file format

basiccrt.S:60: Error: reloc 591 not supported by object file format

basiccrt.S:61: Error: reloc 582 not supported by object file format

basiccrt.S:61: Error: reloc 583 not supported by object file format

basiccrt.S:61: Error: reloc 590 not supported by object file format

basiccrt.S:61: Error: reloc 583 not supported by object file format

basiccrt.S:61: Error: reloc 591 not supported by object file format

basiccrt.S:65: Error: reloc 582 not supported by object file format

basiccrt.S:65: Error: reloc 583 not supported by object file format

basiccrt.S:65: Error: reloc 591 not supported by object file format

basiccrt.S:67: Error: reloc 582 not supported by object file format

basiccrt.S:67: Error: reloc 583 not supported by object file format

basiccrt.S:67: Error: reloc 591 not supported by object file format

QuoteReplyEditDelete

 

 

2011-05-31 12:10:46     Re: bare metal - how to compile the basiccrt.S properly

Mike Frysinger (UNITED STATES)

Message: 100964   

 

.s files go directly to the assembler.  .S files should go through the preprocessor first and then to the assembler.

QuoteReplyEditDelete

 

 

2011-05-31 12:16:27     Re: bare metal - how to compile the basiccrt.S properly

Prasanth Rajagopal (INDIA)

Message: 100965   

 

So in eclipse compilation, do you think it is going through the *gas* internal pre processor which doesnt support MACROs, instead of the *gcc* pre processor?

 

I referred to the below link about the pre processor in assembler:

 

http://tigcc.ticalc.org/doc/gnuasm.html#SEC26

QuoteReplyEditDelete

 

 

2011-05-31 12:22:15     Re: bare metal - how to compile the basiccrt.S properly

Mike Frysinger (UNITED STATES)

Message: 100966   

 

i dont know what eclipse is doing.  it has to go through cpp for it to work.  there is no separate gas pre processor by definition of it being internal.  it is always run through that.

 

using the compiler driver (gcc) will do the right thing ... it'll preprocess it before sending it to the assembler for compilation.

QuoteReplyEditDelete

 

 

2011-06-01 09:31:46     Re: bare metal - how to compile the basiccrt.S properly

Prasanth Rajagopal (INDIA)

Message: 100971   

 

I had posted this in the gcc-help, and someone told me to change the tool to compiler from assembler as a workaround for eclipse. It does seem to work for me:

 

"You can either switch it (compilation of assembler files) for the individual file, or if you have several .S files in your project, do it for the whole project.Open the properties for the file or project, select "C/C++ Build", then "Settings", "GCC Assembler", and simply change "as" to "gcc".  Easy as that :-)."

 

So in failing case the make file was::

 

# Each subdirectory must supply rules for building sources it contributes

src/%.o: ../src/%.S

@echo 'Building file: $<'

@echo 'Invoking: Blackfin ELF Assembler'

bfin-elf-as  -o"$@" "$<"

@echo 'Finished building: $<'

@echo '

 

And with workaround:

 

# Each subdirectory must supply rules for building sources it contributes

src/basiccrt.o: ../src/basiccrt.S

@echo 'Building file: $<'

@echo 'Invoking: Blackfin ELF Assembler'

bfin-elf-gcc -O0 -g3 -g -ggdb -Wall -c -fmessage-length=0 -v -mcpu=bf533-any -o"$@" "$<"

@echo 'Finished building: $<'

@echo ' '

 

 

Thanks

Attachments

Outcomes