Embedded System: V2IP Phone Development

advertisement
Embedded System:
2
V IP Phone
Design & Development
D96921014
郭人豪
Outline






Introduction
Function List
Design
Obstacles, Workaround and Bug Fix
Rule of Thumb
Conclusion
Introduction

What is V2IP Phone?
Voice and Video over IP Phone
 Extend from H.323

Video use H.263, MPEG4 SP, H.264 BP
 Audio use G.711, G.726, G.729, AMR-NB, AMR-WB,
iLBC, etc.


Large LCD screen with Web Surf AP
3.5” ~ 7”
 Browser, Mail Client, Widget, Media player, etc.

Hardware Design of

2
V IP
Phone
3com, Agere
Separated Codec & AP Processor
 Fast but Complex and High close


TI, Broadcom, Qualcomm
Integrated DSP in AP Processor
 Complex Software Designed and Hard to port


Freescale, ADI, Renesas
AP Processor with Multimedia Accelerator
 Relatively Low Cost but limited capabilities

Separated Codec & Processor
Network I/O
LCD
Keypad I/O
TouchPanel
Hook State
LED Control
CAM
Audio I/O
Modem / Codec
AP Processor
Ethernet Switch
Integrated DSP in AP Processor
LCD
Processor Core
CAM
Internal Bus
Human I/O
Network I/O
Audio I/O
DSP
AP Processor w/ Multimedia Accelerator
LCD
ASIC MM
Accelerator
CAM
AP Processor
Human I/O
Network I/O
Audio I/O
2
V IP

Phone Capabilities
Video
Encoder / Decoder
 Multi format support
 Adapted Buffer Control
 Broken Frame Recovery
 PiP, PoP
 Lips sync
 Bitrate, Frame interval, Framerate, etc.

2
V IP

Phone Capabilities
Audio
Encoder / Decoder
 Acoustic Echo Cancellation
 Acoustic Echo Suppression
 Jitter Control
 Voice Activity Detection
 White Noise Generator
 3-way talking, Muxer, etc.

2
V IP

Phone Capabilities
Dialing Tone
EU, US, JP format
 Tone Generator
 Human interactive tone generator

2
V IP

Phone Capabilities
Protocols
SIP protocol (w/ T.120)
 RTP, RTCP streaming protocol
 RTSP streaming control
 SRTP, SRTCP security
 HTTP for firmware update & Web-base UI Control
 DHCP client, 802.1q VLAN 802.1p, 802.1p QoS
 ICMP ping, ARP dup-host detection, etc.

2
V IP

Phone Capabilities
APPs
Phone Book, Contact List
 Calendar
 Web Browser
 Electric White Board, Screen Cap
 XML support for SIP extension

SoftDSP

Idea from Freescale

Using Hardware ASIC for Video Codec
Too complex for embedded system
 Core2Duo Process only 3-5 fps for 1080p AVC


Audio Codec is relatively easy
Using AP Processor to encode / decode audio frame
 Low cost and can upgrade for upcoming audio codec
 Performance is affected by OS and CPU power

Design Requirement




Audio Heartbeat must be called every 10 or 20 ms
Video Heartbeat must be called every 10, 20, or 40 ms
Hook state must be process at once
TouchPanel must be interactive at once but can be executed later


While streaming, Audio must be always clear and no glitch





i.e. play click sound at once and insert event into list
Video is reasonable smooth
Hook state is always first priority
Web surfing or other AP may have performance penalty while streaming
is on
LED display pattern is always real-time
And on and on and on…..
System Design
Main Phone thread
Generate and Monitor
Hook thread
MultiMedia
thread
ToneGen
thread
UI Interactive
thread
SIP thread
LED control
thread
Keypad
Read thread
……
Create Events and Insert
Event Queue
Execute thread
System Design
Main Phone Process
MultiMedia
state
Hook state
SIP state
LED control
state
ToneGen
state
Dispatch
Idle state
Keypad
Read state
Loop Every 10 ms
UI Interactive
state
System Design
UI Code
Phone Middleware
I/O Routine
LED Control
Hook state
Keypad
(Human Interact)
Virtual Functions
for implementation
Callback
functions
Network I/O
Audio / Video I/O
System Design
UI Code
Keypad
Touch Panel
IPC call
Phone Middleware
Callback
functions
I/O Routine
Network I/O
Audio / Video I/O
Hook State
LED Control
Etc.
Comparison of Interrupt / Poll

High Loading


Low CPU power


How to design queue length?
Mutex, thread overhead, program style


Error resilience or high performance
Resource starvation, implementation fault
Timing

How to make sure it runs on-time?
Comparison of Combine / Separated
UI

Overhead
Need IPC to communicate
 Need CPU to process, waste of already critical CPU
load


Complexity
Need to define internal protocol for communicate
 OS support, performance


Why choose two-tier design?
Results

Code size


Footprint size


2.5MB vs. 8MB (plus C++ lib)
5.5MB vs. 20MB
Client test

500K bulk dial test passed
Audio Problem

DELAY!!!!

Linux 2.4 use OSS audio driver
2.6 starting support ALSA audio driver
 ALSA provide low/zero latency delay


TIA-810A require phone to have 100ms delay from
end to end


Mic → audio driver → audio encoder → packetized →
network → muxer → audio decoder → speaker
How to minimize the delay?
Audio Problem

WHERE IS THE CPU POWER???


VAD use little CPU, so does white noise, most audio codec
except G.726.
AES use moderate CPU but still survive


Not in 4-way talking or above
PEOPLE DON’T WANT AES!!!
AEC is much much more complicated
 According to a pre-Bell Lab engineer, there are two design in
embedded system, 16ms of 1024ms or 64ms of 128ms
 The complexity grows exponentially with detect range


How about a phone without Speaker?
Video Problem

Video Input chip not compatible with AP
Processor
PAL in okay to transform to CIF
 Big problem in NTSC to CIF



640x240 to 352x288 but no upscale (240 → 288 upscale)
The ghostly Preview Windows

Sometimes, the hardware design is just can’t match
the software requirement

Open the preview window 1x1, configure the PrP, close
the window, call UI to flush the bitmap
LED Problem

Use AP Processor’s GPIO port and CPU clock
to emulate LED on/off period
Not accurate
 Actually, totally waste of CPU and out of sync in
such a short period
 You can’t throw the CPU in the LED routing, there
are Audio and Video are waiting for you.


So, how about throw away the LED indicator
and use LCD only?
Extension Board Problem

Custom Chip for ext. board signaling and LED flashing



I2C interface, which is buggy and affect the audio chip
control
Custom protocol, which is also buggy and need to bug on
bug
No-one-can-understand spec, which is told by their senior
through phone and personal guide



The packet with no payload after each command
Time interval between commands
Write-read and read-write-read period
LCD Problem

Are you kidding? LCD problem?


Yes, and it’s really a painful experience
CPU spec is for reference only (the pirate code?)
Demo board comes with QVGA panel
 CPU spec support up to VGA panel
 But not VGA video with PIP!

Amplifier Problem

Not embedded system related but is funny
The gain value write in Audio chip manual is not the
actually measured value on board
 The auto-gain or pre-gain function on chip has the
same name but different implementation with the
one in customer requirement
 Hardware design and power management

Protocol Problem

The SDP in SIP is a RFC standard
But not in the engineer’s mind of the ATA box
designer
 Yes, the compatibility problem


But this time, there are no reference, no guide, no
document, no source code.
System Problem

In Linux 2.4 you have no clock_gettime() but
gettimeofday()




Which is extremely vulnerable while NTP settimeofday()
Embedded system often omit the external RTC clock for cost
issue
How can I do?
The invincible watchdog in embedded system

Phone crash, UI crash, power lost, in-experience user
manipulation, maintenance, Server crash, etc.
Resource Problem

Flash is used widely in embedded system
Read lightningly fast, write damnly slow
 Block all other routine while writing to flash
 Buggy interface in Kernel


Multiple write will crash, use fwrite instead


Fwrite can’t measure time
Configuration lost, Bad bits in flash, etc.
Rule of Thumb

Customer don’t know what they want, just push the
product and ads to them!


Embedded system is customized and extendable


Likewise in sales. Make sure you do not admit every function
what they just think of while stay in toilet.
But they are NOT everything. Think before agree the
requirement from customer
Don’t argue with engineers

Try to help them workaround the bug or negotiate with
customer to have another way
Conclusion



Choosing RIGHT BSP will shorter the development quite a lot
Think about what you’re designing before you design
There are always a workaround there, just you may not find it


Choosing the RIGHT HARDWARE is the same important as
good code-syntax writing


We are developing embedded system! Throw away the compatibility!
Boys, this is not the well-known x86 system
Please always keep in mind that the CPU performance is limited
while coding on embedded system

The RAM is limited too, don’t memcpy() on every stuff!
Thank you

Please have some feedback.
Download