Reply
Thread Tools
Posts: 124 | Thanked: 52 times | Joined on May 2010 @ Sweden
#1
Is it easy to get started coding assembler for the N900?

is there anything that needs to be taken in consideration when coding assembler for Maemo5 (...full hardware access? backgroundtasks? other conflicts?)

which tools is most suited for assembler (developer environments, etc)?
 
Posts: 726 | Thanked: 345 times | Joined on Apr 2010 @ Sweden
#2
I'd say that it's just as easy to use assembler on the N900 as on any stationary computer. Read up on ARM assembler and off you go, nothing special at all.

Out of curiosity, what would you want to create that's not possible in C? C with some inline assembler is a nice mix in my experience. Modern compilers are very good at optimization if this is the issue.
 

The Following User Says Thank You to Joorin For This Useful Post:
RolePlayGame's Avatar
Posts: 106 | Thanked: 51 times | Joined on Jun 2010 @ Amazonia (Spain)
#3
Originally Posted by Joorin View Post
I'd say that it's just as easy to use assembler on the N900 as on any stationary computer. Read up on ARM assembler and off you go, nothing special at all.

Out of curiosity, what would you want to create that's not possible in C? C with some inline assembler is a nice mix in my experience. Modern compilers are very good at optimization if this is the issue.
Totally agree, assembler "good old times" stopped years ago.
But I think he wants direct access to hardware internals-acceleration, am I wrong?
The language is not the problem. The drivers are the problem.
__________________

...
Coming soon
...
 

The Following User Says Thank You to RolePlayGame For This Useful Post:
Posts: 96 | Thanked: 55 times | Joined on Apr 2010 @ İstanbul - Turkey
#4
I might be wrong but I think you can't access NEON features with C compilers and you need to use assembly for them. It provides great acceleration in matrix/vector calculations.
 

The Following User Says Thank You to Optln For This Useful Post:
Posts: 726 | Thanked: 345 times | Joined on Apr 2010 @ Sweden
#5
Originally Posted by Optln View Post
I might be wrong but I think you can't access NEON features with C compilers and you need to use assembly for them. It provides great acceleration in matrix/vector calculations.
So, inline assembler in a C program then.

And, I might be wrong but, the compiler generates assembler that is assembled into object code so arguing that the compiler can't do something comes across as a bit off target.
 

The Following User Says Thank You to Joorin For This Useful Post:
Posts: 124 | Thanked: 52 times | Joined on May 2010 @ Sweden
#6
im very inexperienced.

ive only coded a little asm on x86, and a little computer each student had to build at school 10 years ago (based on Z80+RAM chips if i remember correctly) - that was supposed to control a matrix printer.

...anyway...

yes, i was meaning everything in general, incl. hardware internals acceleration.

there are only 2 reasons i want to use assembler.

1. Speed - i rather sacrifice compatibility in exchange for speed when coding for the N900 - why i needed to know if the OS makes some restrictions thats good to be aware of.

2. Reverse Engineering - if i get much more experienced, i want to take a look at the PowerVR driver (and some other drivers) to see if theres a reason that VSync dont work as it should on the N900. by comparing the N900 SGX driver to other phones SGX driver with the same chipset (Palm Pre, Motorola Droid, Iphone 3GS, etc) there may be some way to hack the driver to get better a better framebuffer in RAM, and activating VSync ...for that i will need alot of experience and find the Code that handles transfers to the framebuffer - and somehow force vsync, instead of realtime rendering.

also reverse-engineering can be good to optimize the most hogging parts of the kernel and system background tasks.

EDIT: PS. with reverse engineering i will probably need a disassembler to be able to understand the machine code, but i guess such already exists


but i need to get started somewhere and i know its a far way to go if i want to get that good... i remember the author of ZSNES (fastest snes emu for x86) developed it as a asm project (and some c and c++) while learning assembler at the university.

Last edited by S0urcerr0r; 2010-06-13 at 00:28.
 
Posts: 726 | Thanked: 345 times | Joined on Apr 2010 @ Sweden
#7
Originally Posted by S0urcerr0r View Post
im very inexperienced.

ive only coded a little asm on x86, and a little computer each student had to build at school 10 years ago (based on Z80+RAM chips if i remember correctly) - that was supposed to control a matrix printer.
I've also spent some time writing assembler for a Z80 processor. 1.2MHz and 16KByte of memory felt blazing at the time.

1. Speed - i rather sacrifice compatibility in exchange for speed when coding for the N900 - why i needed to know if the OS makes some restrictions thats good to be aware of.
Unless you're planning to do extensive mathematical computations, you'll have trouble hand coding anything that's faster than what the compiler can generate with somewhat sane levels of optimization. Modern compilers are very good at this and the N900 is not like the Z80 with very limited resources where you need to tweak everything.

2. Reverse Engineering - if i get much more experienced, i want to take a look at the PowerVR driver (and some other drivers) to see if theres a reason that VSync dont work as it should on the N900. by comparing the N900 SGX driver to other phones SGX driver with the same chipset (Palm Pre, Motorola Droid, Iphone 3GS, etc) there may be some way to hack the driver to get better a better framebuffer in RAM, and activating VSync ...for that i will need alot of experience and find the Code that handles transfers to the framebuffer - and somehow force vsync, instead of realtime rendering.
There has been statements made from NOKIA about Vsync and it pretty much was summed up in "It won't happen.". If you were to find a way to make it happen, that'd be awesome.

What would there be to do to get "a better framebuffer in RAM"?

also reverse-engineering can be good to optimize the most hogging parts of the kernel and system background tasks.
As far as I know, the kernel is open source, including patches for using the hardware in the N900. So, no need to reverse engineer anything. What would you want to make better in the kernel?

EDIT: PS. with reverse engineering i will probably need a disassembler to be able to understand the machine code, but i guess such already exists
Yes, there are disassemblers for ARM code.

but i need to get started somewhere and i know its a far way to go if i want to get that good... i remember the author of ZSNES (fastest snes emu for x86) developed it as a asm project (and some c and c++) while learning assembler at the university.
Happy hacking!
 

The Following 2 Users Say Thank You to Joorin For This Useful Post:
Posts: 193 | Thanked: 92 times | Joined on May 2010 @ galveston, tx
#8
Another possible project would be to use the C6400 DSP. This DSP was top of the line a few years ago (2003), and still boasts substantial processing power to run various codecs.

www.ll.mit.edu/HPEC/agendas/proc03/powerpoints/orofino.ppt
 

The Following User Says Thank You to noipv4 For This Useful Post:
Posts: 193 | Thanked: 92 times | Joined on May 2010 @ galveston, tx
#9
To view this mail in a browser, copy
http://links.mkt2223.com/servlet/Mai...cyS0&mt=1&rt=0
into your browser.


T E X A S I N S T R U M E N T S
--------------------------------------------------------------------------

TI MAKES DSP PROGRAMMING EASY FOR ARM DEVELOPERS

C6EZFlo, C6EZRun and C6EZAccel software development tools ease DSP
programming

The free C6EZFlo, C6EZRun and C6EZAccel software development tools
simplify and accelerate DSP programming on a variety of DSPs and
DSP + ARM SoCs.
http://links.mkt2223.com/ctt?kn=41&m...cyS0&mt=1&rt=0
http://links.mkt2223.com/ctt?kn=26&m...cyS0&mt=1&rt=0
http://links.mkt2223.com/ctt?kn=43&m...cyS0&mt=1&rt=0

C6EZFlo allows developers to:
- Drag and drop connection I/O blocks to peripherals on the DSP without
needing to know DSP code, architecture or drivers
- Generate clean, optimized C code that?s easy to read, modify and
expand
http://links.mkt2223.com/ctt?kn=41&m...cyS0&mt=1&rt=0

C6EZRun enables developers to:
- Easily run ARM code on a DSP without learning DSP architecture or
changing ARM code
- Quickly partition the code between the DSP and the ARM core to
improve overall performance
- Utilize a familiar development environment to Linux(R) programmers
with a GNU Compiler Collection (GCC)-like interface, simplifying
the development experience
http://links.mkt2223.com/ctt?kn=26&m...cyS0&mt=1&rt=0

C6EZAccel allows developers to:
- Access a framework to over 130 optimized DSP kernels
- Add product differentiation without writing DSP code or learning
DSP architecture
- Leverage the DSP to run ready-to-use algorithms, enabling efficient
use of the SoC and avoiding processor upgrades
http://links.mkt2223.com/ctt?kn=43&m...cyS0&mt=1&rt=0

The tools are ideal for adding intensive digital signal processing
functionality such as:
- Digital room correction capabilities to an audio system
- People-counting capabilities to a video system
- Power measurement and analysis to a power metering system

C6EZFlo supports TI's C6000(TM) DSPs as well as DSP-based DaVinci(TM)
digital media processors. C6EZRun and C6EZAccel support Integra(TM)
DSP + ARM processors, DaVinci(TM) digital media processors and OMAP(TM)
processors.
http://links.mkt2223.com/ctt?kn=45&m...cyS0&mt=1&rt=0
http://links.mkt2223.com/ctt?kn=62&m...cyS0&mt=1&rt=0
http://links.mkt2223.com/ctt?kn=20&m...cyS0&mt=1&rt=0
http://links.mkt2223.com/ctt?kn=62&m...cyS0&mt=1&rt=0
http://links.mkt2223.com/ctt?kn=52&m...cyS0&mt=1&rt=0

C6EZRun and C6EZAccel are also available as a part of the free EZ
software development kit (EZ SDK), now supporting the C6A816x Integra
DSP + ARM processors.
http://links.mkt2223.com/ctt?kn=60&m...cyS0&mt=1&rt=0

Download the free C6EZFlo, C6EZRun and C6EZAccel software development
tools today!
http://links.mkt2223.com/ctt?kn=41&m...cyS0&mt=1&rt=0
http://links.mkt2223.com/ctt?kn=26&m...cyS0&mt=1&rt=0
http://links.mkt2223.com/ctt?kn=43&m...cyS0&mt=1&rt=0

--------------------------------------------------------------------------

The right processor. The right software. The rightresources.

--------------------------------------------------------------------------

To ensure delivery to your inbox, please add tiprime@dlep14.itg.ti.com
to your address book or safe sender list.

(C)Copyright 2011 Texas Instruments Incorporated, 12500 TI Blvd, Dallas, TX 75243. Read TI's
Privacy Policy:
http://links.mkt2223.com/ctt?kn=115&...jMxMjcyS0&rt=0

Last edited by noipv4; 2011-02-08 at 22:32.
 

The Following User Says Thank You to noipv4 For This Useful Post:
Posts: 323 | Thanked: 116 times | Joined on Jul 2010
#10
"TI MAKES DSP PROGRAMMING EASY FOR ARM DEVELOPERS"

And what about THUMBEE?
 
Reply


 
Forum Jump


All times are GMT. The time now is 14:59.