OESF | ELSI | pdaXrom | OpenZaurus | Zaurus Themes | Community Links | Ibiblio

IPB

Welcome Guest ( Log In | Register )

 
Reply to this topicStart new topic
> C1000's Architecture(pxa270)&cross Compiler Env.
tuna
post Jun 7 2007, 12:50 PM
Post #1





Group: Members
Posts: 5
Joined: 31-May 07
Member No.: 16,816



It is my understanding that the c1000 offers the pxa270
that would be armv5tel;

now, from an assembly programming pov:
my main questions are: since the pxa270 is not the pxa250 and i have only been able to find the pxa250 architecture manuals from http://www.arm.com where would i find the architecture manuals for the pxa270
and if there isn't a big difference between pxa250 and pxa270, where/what are the differences? if anyone knows

i'd like to setup a cross-compile environment, so i used qemu(on windows) and emulated armv5tejl(j denotes the native ability to execute java bytecode?) could i also use this to create binaries for armv5tel?
if this is completely uninformed already, then my next obvious question is: how do i go about creating a cross-development environment for specifically armv5tel?

i'm really in the dark, so if someone has some links that could help a programmer
please

thanks : D
Go to the top of the page
 
+Quote Post
Meanie
post Jun 7 2007, 03:51 PM
Post #2





Group: Members
Posts: 2,808
Joined: 21-March 05
From: Sydney, Australia
Member No.: 6,686



QUOTE(tuna @ Jun 8 2007, 06:50 AM)
It is my understanding that the c1000 offers the pxa270
that would be armv5tel;

now, from an assembly programming pov:
my main questions are: since the pxa270 is not the pxa250 and i have only been able to find the pxa250 architecture manuals from http://www.arm.com where would i find the architecture manuals for the pxa270
and if there isn't a big difference between pxa250 and pxa270, where/what are the differences? if anyone knows

i'd like to setup a cross-compile environment, so i used qemu(on windows) and emulated armv5tejl(j denotes the native ability to execute java bytecode?) could i also use this to create binaries for armv5tel?
if this is completely uninformed already, then my next obvious question is: how do i go about creating a cross-development environment for specifically armv5tel?

i'm really in the dark, so if someone has some links that could help a programmer
please

thanks : D
*


not sure about the difference so i might be wrong here, but i believe the newer processors support the xscale and iwmmxt instructions as well which can improve performance significantly.

as for the cross compile tools, use the pdaXrom cross compiler or builder, or even OpenEmbedded.
both allow you to cross compile from x86 linux machines and run the resulting binary on arm/armv5tel platforms

pdaXrom targets armv5tel specifically (and also does armv4) wheras OpenEmbedded is more generic and can target any arm processor (i think, but the builds for Zaurus are arm or armv5te on OpenZaurus. Angstrom is another story...).
Go to the top of the page
 
+Quote Post
Da_Blitz
post Jun 10 2007, 09:48 AM
Post #3





Group: Members
Posts: 1,565
Joined: 7-April 05
From: Sydney, Australia
Member No.: 6,806



internally there is no real diffrence to the processor to an applications programmer who wants to program in asm, it mainly has to do with hardware such as built in usb client and there was an update to the frame buffer (did the pxa250 even have a frame buffer ?)

ethier way it implements the arm architecture so if you dont use iwmmxt instructions then it should just copy to nearly all arm processors. however arm code wont just copy across to the pxa (has to do only with self modifiing code if i remeber correcttly, had to do with the split instruction and data cache which was implemented diffrentlly to a standard arm processor)

as for the armv5tel vs armv5tejl diffrences, just target armv5tel and dont use java byte code and your code will run on both platforms

if you are doing iwmmxt work then i hope you are working on mplayer improments smile.gif or an accelerated X server (please)

i am more than willing to help, i am sure i can point you in some helpful directions, i can be contacted in private if need be or on this fourm but i belive others would benifit from hearing about how to get started

firstlly what resources do you need, an intro to arm asm and iwmmxt? or eabi info.

as for a cross compiler taht can be a tricky one, i recomend the 4.x series and you have 2 options here. bitbake/OE or kegels crosstools. i havent been able to get crosstools to bouild anything new so i would recomend you get OE as perhaps you could add a recipe or two but at least you will have the latest arm patches if you chose to get your code through it as well
Go to the top of the page
 
+Quote Post
tuna
post Jun 14 2007, 12:35 PM
Post #4





Group: Members
Posts: 5
Joined: 31-May 07
Member No.: 16,816



da_blitz, first i'd like to thank you for your help wink.gif
specifically i'm working on a lisp implementation
your advice has made me realize i'll be compiling with iwmmxt optimizations only under armv5tel specific situations such as with mcpu= and mtune=

page 42 of this[registers/register aliases and their use]:
http://ajaydudani.googlepages.com/Programm...ded_Systems.pdf

if you can read a verbose, primitive english, this i've found:
http://translate.google.com/translate?hl=e...l%3Den%26sa%3DG

^ for my needs, it looks like these do well, but i'm looking for something more technically informative; [if not free, and online, then in a bookstore]

as for a cross-compiler env. yes, it's a bit tricky; [i'll give bitbake/oe a shot]
ideally i wanted to use poky with qemu, we'll see. [i'm more interested in what any of you know off-hand about this]

cheers
Go to the top of the page
 
+Quote Post
Da_Blitz
post Jun 16 2007, 04:18 AM
Post #5





Group: Members
Posts: 1,565
Joined: 7-April 05
From: Sydney, Australia
Member No.: 6,806



learn from here: http://www.heyrick.co.uk/assembler/

its not that hard to pick up at all if you already know assembler.

there are a couple of nice things such as optinal execution of every instruction, there is no "test and branch" or "test and jump" instruction instead there is only a jmp instruction. however as i said there is conditinnal exectuion of every asm instruction, you could combind this with a compare with zero instruction and negate it to jump to a specified piece of code if the perivos statment was not zero

another nice thing is the free "shift" you can do with any argument to an asm instruction, there is a barrelel shifter in the alu that gives you the ability to shift to the right or left as part ofan instruction without effecting exectution time, i cant remeber if there is a shift instruction but i belive there is not

to performe a shift you would exectue a mov instruction to move the contents from a to b but incorperate a shift in the instruction

CODE
Shift r1 left arethmatically 3 places and place in r2
mov r2,  [r1 #ASL  3 ]


also note that the destinatoin and source are backwards (ie r1 will end up in r2). not sure why they did this but its not hard to get used to

the Program counter is also a register (r15) so a jump can be porformed as a mov instruction

CODE
mov PC, r1


Pc is an alias for r16 in this case however the important thing to note is that you can calculate a value to do a computed jump, i dont know if x86 programmers do this but i do know PIC micro and atmel programers do for impleminting jump tables and pulling values out of a table

to do that you would have a list of instructions that do somthing like

CODE
mov r1, <value to return>
mov PC, r14  <exectue return from a BL>


to jump to this table you would have some code to calculate the index then jump to it and pull the value returned out of r1, the jump would be a bl instruction (branch with link) which is the analog of branch on a x86, the standard branch dosent save the PC and so exectuets what is commanly refered to as a jmp

anyway the code:

CODE
Note this is only the jump part
bl r1


this jumps to the code pointed by the second register (r1). this is not a useful thing in most cases, its mainly used where computaition is to be avoided (it can eat huge ammounts of memorey, if i remeber correcttly its 8x the table size) but for some things it can give huge speed benifits (as your answers are precaculated

teh main advantage is it executes in a set ammount of time, hence why its used in real time and embedded (and why i know of it) and that it dosent require a powerful cpu to calcutale the answer

another nice thing about this is very short select case statments because of the conditinol execution part eg

CODE
Code as implemented in windows mobile:

cmp 'a'
beq die
cmp 'b'
beq kill_window
cmp 'c'
bne error_msg
cmp 'd'
b lock_up


here we can see the branch instruction mixed with conditinals, eq, ne for example which are branch if equal and branch if not equal, can be mixed with most instructions to do stuff like add if not equal or if greater than x then maxe zero (to cap values)

eg

CODE
cmp #70, r1
moveq r1, #0


which is if r1 = 70 then r1 = 0

anyway the site is much better than i am at explaining it and i am a little rusty, if you need more info cantact me however for the iwmmxt stuff its on the intel website. be careful as the iwmmxt is implemented as coprocessor instructions and conflicts with the floating point unit on other platforms, so i would check to make sure your code is actualy running on a iwmmxt processor (just read the processor detaails from /proc)

hope it helps, still here if you need me

and finally from the site:
Any sufficiently advanced technology is indistinguishable from a rigged demo.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 User(s) are reading this topic (1 Guests and 0 Anonymous Users)
0 Members:

 



RSS Lo-Fi Version Time is now: 22nd August 2014 - 09:35 PM