hi i created a hardware that calculates the square root of (a^2+b^2 )
i sent the inputs (a and b) with assembly and that was fine however when i tried to send them using c code the hardware take them as inputs calculates a^2 + b^2 but never do the square root
i am really clueless here i couldn't locate the problem
heeeeeeeeeeeeeeelp
Assuming regdistance is an address of your hardware peripheral, then it needs to be a pointer, not an integer, and you need to write to the value pointed at by the pointer, rather than just setting the address locally. Eg. something like:
volatile unsigned int * regdistance __attribute__((at(0x59000000))); int main() { int i; for( i=0;i<10;i++) { xd[0]=0; yd[0]=0; xd[i+1]= xd[i]+1; yd[i+1]= yd[i]+1; *regdistance = xd[i]; *regdistance = yd[i]; } while(1); }
P.S. It looks like you will overflow your loop (I had to guess a bit what the expected indentation for the for loop was). E.g. your access xd[i+1] will access xd[10]which is element 11 in the array, but they are only allocated as 10 elements long.
HTH, Pete
>
http://www.keil.com/support/docs/2829.htm
With the Keil CARM C Compiler, you may use either pointer definitions (as
shown above) or at keyword to define a variable at a fixed memory address. As with the RealView C Compiler, the following definition also makes a correct memory reservation, so that the area cannot be used twice.
shown above) or at keyword to define a variable at a fixed memory
address. As with the RealView C Compiler, the following definition also
makes a correct memory reservation, so that the area cannot be used twice.
i tried to send these inputs with a pointer but in vain however when i used
this form at least the hardware took them as inputs however now even
a2+b2 don't calculate it !!!
2016-06-02 11:07 GMT+01:00 peterharris <community@arm.com>:
Hardware Implementation reply from Peter Harris <https://community.arm.com/people/peterharris?et=watches.email.thread> in
Hardware Implementation
reply from Peter Harris
<https://community.arm.com/people/peterharris?et=watches.email.thread> in
Never knew that - thanks )