hi i start a new try. i am looking for a solution that uVision4 accept to put Variables(Parameters) of c-Code in to Asssembler Registers.
A reference to the "C166 User's Guide - Reference ASM" helped my not because this(my) problem isnot treated!
------------------------------------------------------------------------------------
_inline int vf_control( int offset, int slew, int anglespeed) { int retvalue; #pragma asm ( @w1=offset, @w2=slew, @w3=anglespeed, @4,@5 ) mov MCW,#0600H mov @5,ZEROS CoMUL @w2,@w3 CoSHL #8 CoADD @5, @w1 CoSTORE @4,MAS #pragma endasm (retvalue = @4 ) return retvalue; }
In the Tasking help is the following explanation.
EXTEND2
Enables support for the CX16x / SUPER-10 architecture,including support for the MAC co-processor.
i don't no why uVision donot like it.
you need to understand that the Tasking and Keil implementation of the 166-tools is completely different: Tasking - EXTEND2 --> Keil - MODV2; uVision will never accept EXTEND2.
The next problem will be with all those @SET(...), @_CALL(...) etc. macros used in the assembly language file. This needs to be converted to use the Keil macro format. Also 'LDAT' needs to be converted.
I would suggest to use c:\keil\c166\lib\Start_v3.a66 as a reference for porting, this is the standard startup file used by uVision when creating a XExxx application.
A small problem ;-) i hope so...
CoSTORE [@w4],MAS
transform to
CoSTORE [rw4],MAS
don't work, Keil uVision4 don't know this syntax "rw4" for a word regiester.
_inline int inv_park_trans(int i_d,int i_q,int phi,int *o_b) { int retvalue; # pragma asm(@w1 = i_d,@w2 = i_q,@w3 = phi, @w4 = o_b , @5, @7, @9, @8) mov @7,MCW mov MCW,#0600h shr @w3,#6 shl @w3,#1 EXTS #SEG (_sincostab),#2 mov @9,[@w3 + #SOF(_sincostab+512)] mov @8,[@w3 + #SOF(_sincostab)] CoMUL @w1,@9 CoMAC- @w2,@8 CoASHR #2 CoSTORE @5,MAS CoMUL @w1,@8 CoMAC @w2,@9 CoASHR #2 CoSTORE [@w4],MAS mov MCW,@7 #pragma endasm(retvalue = @5 ) return retvalue; }
I found the solution, its ok. @w4 = o_b
What is the problem now? Its typical c-code. The same in other files.
#ifndef _SUBROUTINES_FOC_H_ #define _SUBROUTINES_FOC_H_
Subroutines_FOC.H(646): warning: last line of file ends without a newline #endif // #endif _SUBROUTINES_FOC_H_
Controls_FOC.H(170): warning: last line of file ends without a newline Scheduler.H(489): warning: last line of file ends without a newline t end of source: internal error: assertion failed: copy_from_source_to_asm_func_buffer: bad lexical escape (D:\edg\src\lexical.c, line 6205)
What is the problem now?
It's exactly what it says:
warning: last line of file ends without a newline
How hard can that be to understand?
just an enter in all last lines of the c-code it did it!