Cochlear Implant Systems todays challenges in embedded firmware - PDF document
Cochlear Implant Systems todays challenges in embedded firmware design December 7, 2009 Ren Roos Cochlear Implant Systems? Cochlear and CTC Cochlear Implant Systems for hearing impaired people First Cochlear implant, 1978,
Cochlear Implant Systems today’s challenges in embedded firmware design December 7, 2009 René Roos
Cochlear Implant Systems?
Cochlear and CTC • Cochlear Implant Systems for hearing impaired people • First Cochlear implant, 1978, Melbourne Hospital • First commercial, DSP-based processor: SPrint (1998) • Current system: Nucleus 5 (2009) • CTC: Cochlear’s R&D outside Australia
Cochlear Implant System
Complexity
Flexibility CI Hybrid (CI + acoustic) CI Bone Anchored
Product diversity deaf 1 1 3 3 Cochlear implants 0 0 DACS 1 1 2 2 0 0 1 1 1 1 0 0 1 1 0 0 Hybrid total hearing loss profound 0 0 9 9 0 0 8 8 0 0 severe 7 7 BAHA 0 0 mod. severe 0 0 6 6 0 0 6 6 HA 5 5 0 0 5 5 0 0 moderate 0 0 4 4 ) 0 0 4 4 L H mild B 3 3 0 0 d 0 0 3 3 ( p S a N G 2 2 0 0 2 2 H 0 0 e n . L o . B ( 0 0 1 1 d 0 0 1 1 r B i A H L ) 0 0 0 0
Importance of firmware • Manage system complexity – Easy recipient ‘fitting’ – Programmable – Adjustable – Field upgrades – Hear Now. And Always • Support product diversity & derivatives – Platform development � �������������� ��������� ���������������� � ������������������������ ���������������������
Cochlear’s Champ • Custom IC • 4 Parallel DSPs • uC • 180 Mops • Extremely low power consumption (few mW)
Hardware integration • Limited amount of hardware releases • ASIC Prototyping – Modelsim – FPGA • Product Prototyping
Software integration • Firmware Integration – uC – DSP • Software Integration – Device drivers – Clinical software – User devices
Sound processing research • Simulink • xPC Target
Quality • Peer review – Product code – Unit / System tests • Coding guidelines – MISRA-C • Documentation • Verification & validation – Regression testing – Automation • Code analyser tools – Static – Dynamic
Looking into static code analysis (example) Synchronous Asynchronous int x, y, a[5] = {1, 2, 3, 4, 5}; int x, y, a[5] = {1, 2, 3, 4, 5}; typedef void (*EventHandler)(void); void f1(void); EventHandler handler; void f2(void); void scheduler(void) void f1(void) { { while (handler) x = 10; { f2(); handler(); } } } void f2(void) { void f1(void); y = a[x]; void f2(void); } void f1(void) int main() { { x = 10; f1(); handler = f2; return y; } } void f2(void) { y = a[x]; handler = 0; } int main() { handler = f1; scheduler(); return y; }
Regulatory • Strict and clear procedures • IEC 62304 – Segregation of software items – How to manage potential software failures – SOUP
Holy grail in supporting developments • Looking for the perfect static analysis tool • Formal code verification? • Quantification of software risks?
Recommend
More recommend
Explore More Topics
Stay informed with curated content and fresh updates.