Archive for the 'DSP' Category

Porting pjsip to embedded Linux on Blackfin DSP

Over the next few posts, I will do a walkthrough on porting pjsip to embedded Linux (specifically uClinux) on the Blackfin Digital Signal Processing (DSP) processors from Analog Devices. Along the way, I hope to give a few insight into programming embedded systems in general.

Blackfin (r) Logo

Why Blackfin Processors?

  • Popular. It can run uClinux as an embedded operating system.
    • uClinux ™ Logo
    • There is already the Linphone Blackfin port, so I know SIP and media works.
    • Recently Global IP Solutions (GIPS) has ported and optimized its VoiceEngine Embedded software to Blackfin processors as well.
  • Well documented. The Blackfin on uClinux site has tons of free software and documentation. Most importantly GCC toolchain (compiler, linkers, debuggers) is available and supported.
  • Somewhat exotic. Although probably not as exotic as pure DSP processors such as the TMS320 series from Texas Instruments, but still it is an embedded systems processor. In contrast processors based on x86 are more like small PCs, therefore expensive in terms of cost and power usage.
  • Affordable development board readily available. Relatively speaking, of course.
    • I was able to buy the BF537 STAMP and audio card for a total of £276 from Digi-Key, that includes shipping (to UK), customs, and taxes. I will detail what you need exactly in another post.
    • Here’s a tip if ordering from the UK: Don’t choose the Global Express Mail option. Although it saves about £20, it takes way too long (almost 2 weeks) and the ParcelForce handling here, well… can be improved.

Initial Approach

For this exercise, I have chosen Windows as my development machine. Although using Linux is more straight forward, I am using this porting effort as an excuse to try out new stuff like coLinux. Other than that , I will try to stick as much as possible to the suggested tools.

What next?

I will describe in more detail about getting the goods and preparing your development PC. After that we should be well on our way to start development.

If you have any thoughts on how this should be structured, or any other additional information you’d like to see covered, just leave a comment and I can try to fit it in.