[p900] weekly status :-)

  • From: Michel <p900-dev@xxxxxxxxxx>
  • To: p900@xxxxxxxxxxxxx
  • Date: Sat, 6 Mar 2004 08:46:53 +0000

hi guys,

I've spent some time over the week working on symbian. I now have my 
"TuneHelper" sequencer playing-ish music on the phone. playing-ish because it 
seems Beatnik (the audio API) has some issues I haven't sorted out yet...
However the complicated part of the app (the sequencer) works like a charm!

Anyway, stuff I discovered:
+ realloc() is buggy! it works, but doesn't accept NULL as first parameter, as 
the POSIX version does. Buyer beware! :-)

+ threads/mutex/semaphore
All that works splendidly, I managed to convert my pthread wrapper to a 
symbian-thread-wrapper in very short order. One thing to remember is that 
each thread can have it's own address space ("Heap") but you can also create 
it sharing the main process one (which makes porting easier).

+ Alignment problems
So, in the mass of code I ported, I was bound to have at least one alignment 
problem. it came up as an optimisation I had which did like this:
*((unsigned long*)dst) = *((unsigned long*)src)
thats suposed to be much faster than doing a loop for only 4 bytes. However, 
THAT crashes on ARM. Don't do it :-)

+ Debugging
I had to sort out a way to debug on the device, so it fell back onto the good 
ol printf. However since the P900 has no concole, it launches a SEPARATE app 
that display what you printf().
HOWEVER that app has no interface and is fullscreen, and it is VERY hard to 
exit from it : you have to use the internet and/or camera button to launch 
another app, then click back the application you debug. it's very annoying.
What I did was install "SMAN" which came up handy sinc eit can reconfigure the 
"internet" button to launch itself, and it has a file manager/task manager 
and all : VERY handy tool!

Next problem with printf debugging is that the "STDOUT" process quits if your 
thread crahses, so you don't have time to see at which line it stopped!
For that I had to install an exception handler with a mask of 0xffffffff in 
the crashing thread, and do a Sleep(1) there. the thred WON'T quit, but 
you'll have time to read the STDOUT output, then quit the whole app with 
SMAN.

Now for THE macro, to use and abuse to find where you crash:
#define TRACE(w) printf("%s %d\n", #w, __LINE__);

+ Tools
So far the tools are OK, however I have problems with the .AIF and .MBM 
generation, it seems tit calls the perl copy() with wrong arguments and it 
makes the build fail, I need to trace it to see what is happening exactly. 
yuck.

Michel

-- 
Linux yawn 2.6.3 #71 Sat Feb 21 13:25:49 GMT 2004 i686

Other related posts:

  • » [p900] weekly status :-)