220 likes | 373 Views
Beyond CRTS. Miranda Technologies Chris Pringle. Agenda. Introduction About Miranda My Role Real Time Systems Crashing Nightmares Software Design in the Real World Software Management People Skills Finding your job!. Introduction. About me 2+2 CRTS Degree Career History RWE NPower
E N D
Beyond CRTS Miranda Technologies Chris Pringle
Agenda • Introduction • About Miranda • My Role • Real Time Systems • Crashing Nightmares • Software Design in the Real World • Software Management • People Skills • Finding your job!
Introduction • About me • 2+2 CRTS Degree • Career History • RWE NPower • Hewlett Packard • Miranda Technologies
About Miranda • Product Ranges • Master Control & Branding • Facility Monitoring & Control • Signal Processing and Distribution • Multi Image Display Processors • Routing Switchers • Playout Servers • Production and Post-Production Interfaces
My role at Miranda • Presmaster Control System • Configuration tools • Router driver • Imagestore / Intuition • Kernel & Drivers • Audio • Clip Playback • R&D Responsibilities • Configuration Management System • R&D Servers • R&D Racks
Real Time Systems • What are they? • Hard real time • Operation depends on correctness and time constraints • Soft real time • As above, but some toleration of lateness
Real Time Linux/Windows? • What constitutes a Real Time O/S? • Deterministic response times • Low interrupt latency • Preemptible kernel • Scheduler (FIFO) • And more… (Priority inversion resolution, deadlock detection etc.)
Real Time Linux/Windows? • Are Linux and Windows Real Time? • Can they be made Real Time? • MontaVista Linux • FSMLabs RTLinux • Windows CE • VXWorks • BUT – they none of them guarantee determinism! • Remember – If you’re in R&D – the ‘R’ is important!!!
Crashing nightmares! • What do you do when? • System runs okay for 99.9% of the time • System hangs after 3 weeks • No log entries • Imagestore 300 Nightmare • Simple CPU change • Intuition Nightmare
Fault finding • Look for the source • Is it in kernel or user space? Is it hardware? • List the possibilities – no matter how improbable! • Think about what may be aggravating the problem • Try and make the problem worse • Get pointers/help • Use your colleagues! • Internet
Fault Finding • Reproduce it • Kernel/JTAG debugger • Logic analyser / FPGA scope tools • Isolate the problem in software • If necessary, isolate the problem in hardware • Learn when it’s time to change your approach
What was it? • Imagestore 300: • outb(0x80, 0x80); • outb(0x30, 0x30); • Intuition • We’ll never know!
Programming Real Time Systems • Make effective use of drivers/interrupts • Top and bottom halves • FIFO Scheduler • Don’t poll or sleep! Use interrupts! • CPU vs I/O bound • Get your priorities sorted! • Process affinity • Plan and experiment • Hardware Settings • Wrongly set BIOS settings can RUIN your performance!
Software Development in the Real World • Build on your skills – Research! • Learn when to compromise • The most elegant solution isn’t always the right one • Accept you’re sometimes wrong!
Software Management • Configuration Management • Issue Tracking • The dreaded “D” word! • Project Plan & Resources • Code Reviews
People Skills • Dealing with? • Product Development • Senior Managers • Support • Peers • Your immediate manager/supervisor
Dealing with People • Management • Be respectful, but fight your corner • Cover your back side! • A good programmer is a team player! • Learning to deal with awkward people • Accept it when you’re wrong! • Don’t make recommendations to management if you’re not sure!
Communication • Team Meetings • Code Reviews • Email / Documentation • Log book!
Finding your job! • Know what you want • The Interview • 2 way process • Don’t lie/blag – it’s transparent! • Be honest and upfront with your skill set • Sell yourself – but don’t be arrogant! • Look for ways to enhance your skills • Look for a challenge!
Chris PringleSoftware EngineerMiranda Technologies Ltd.chris.pringle@miranda.com