a life in engineering miranda technologies chris pringle
TRANSCRIPT
A life in EngineeringA life in Engineering
Miranda TechnologiesMiranda Technologies
Chris PringleChris Pringle
AgendaAgenda
IntroductionIntroductionAbout MirandaAbout MirandaMy RoleMy RoleReal Time SystemsReal Time SystemsCrashing NightmaresCrashing NightmaresSoftware Design in the Real WorldSoftware Design in the Real WorldSoftware ManagementSoftware ManagementPeople SkillsPeople SkillsFinding your job!Finding your job!
IntroductionIntroduction
About meAbout me
2+2 CRTS Degree2+2 CRTS Degree
Career HistoryCareer History RWE NPowerRWE NPower Hewlett PackardHewlett Packard Miranda TechnologiesMiranda Technologies
About MirandaAbout Miranda
Product RangesProduct Ranges Master Control & BrandingMaster Control & Branding Facility Monitoring & ControlFacility Monitoring & Control Signal Processing and DistributionSignal Processing and Distribution Multi Image Display ProcessorsMulti Image Display Processors Routing SwitchersRouting Switchers Playout ServersPlayout Servers Production and Post-Production InterfacesProduction and Post-Production Interfaces
My role at MirandaMy role at Miranda
Presmaster Control SystemPresmaster Control System Configuration toolsConfiguration tools Router driverRouter driver
Imagestore / IntuitionImagestore / Intuition Kernel & DriversKernel & Drivers AudioAudio Clip PlaybackClip Playback IS750 Hardware Bring-upIS750 Hardware Bring-up New designNew design
R&D ResponsibilitiesR&D Responsibilities Configuration Management SystemConfiguration Management System R&D ServersR&D Servers R&D RacksR&D Racks
Real Time SystemsReal Time Systems
What are they?What are they? Hard real timeHard real time
Operation depends on correctness and time Operation depends on correctness and time constraintsconstraints
Soft real timeSoft real timeAs above, but some toleration of latenessAs above, but some toleration of lateness
Real Time Linux/Windows?Real Time Linux/Windows?
What constitutes a Real Time O/S?What constitutes a Real Time O/S? Deterministic response timesDeterministic response times Low interrupt latencyLow interrupt latency Preemptible kernelPreemptible kernel Scheduler (FIFO)Scheduler (FIFO) And more… (Priority inversion resolution, And more… (Priority inversion resolution,
deadlock detection etc.)deadlock detection etc.)
Real Time Linux/Windows?Real Time Linux/Windows?
Are Linux and Windows Real Time?Are Linux and Windows Real Time?
Can they be made Real Time?Can they be made Real Time? MontaVista LinuxMontaVista Linux FSMLabs RTLinuxFSMLabs RTLinux Windows CEWindows CE VXWorksVXWorks
BUT – they none of them guarantee determinismBUT – they none of them guarantee determinism
Remember – If you’re in R&D – the ‘R’ is Remember – If you’re in R&D – the ‘R’ is important!!!important!!!
IS750 / Presmaster DemoIS750 / Presmaster Demo
Crashing nightmaresCrashing nightmares
What do you do when?What do you do when? System runs okay for 99.9% of the timeSystem runs okay for 99.9% of the time System hangs after 3 weeksSystem hangs after 3 weeks No log entriesNo log entries
Imagestore 300 NightmareImagestore 300 Nightmare Simple CPU changeSimple CPU change
Fault findingFault finding
Look for the sourceLook for the source Is it in kernel or user space? Is it firmware or Is it in kernel or user space? Is it firmware or
hardware?hardware? List the possibilities – no matter how improbable!List the possibilities – no matter how improbable! Think about what may be aggravating the problemThink about what may be aggravating the problem Try and make the problem worseTry and make the problem worse Is there more than one problem?Is there more than one problem?
Get pointers/helpGet pointers/help Use your colleagues!Use your colleagues! InternetInternet
Fault FindingFault Finding
Reproduce itReproduce it Kernel/JTAG debuggerKernel/JTAG debugger Logic analyser / FPGA scope toolsLogic analyser / FPGA scope tools
Isolate the problem in softwareIsolate the problem in software
If necessary, isolate the problem in If necessary, isolate the problem in hardwarehardware
Learn when it’s time to change your Learn when it’s time to change your approachapproach
What was it?What was it?
Imagestore 300:Imagestore 300: outb(0x80, 0x80); outb(0x80, 0x80); outb(0x30, 0x30); outb(0x30, 0x30); Incorrectly configured south bridge (BIOS Incorrectly configured south bridge (BIOS
bug)bug)
Programming Real Time SystemsProgramming Real Time Systems
Make effective use of drivers/interruptsMake effective use of drivers/interrupts Top and bottom halvesTop and bottom halves
FIFO SchedulerFIFO Scheduler Don’t poll or sleep; Use interruptsDon’t poll or sleep; Use interrupts
CPU vs I/O boundCPU vs I/O bound Get your priorities sortedGet your priorities sorted
Process affinityProcess affinity Plan and experimentPlan and experiment
Hardware SettingsHardware Settings Wrongly set BIOS settings can RUIN your Wrongly set BIOS settings can RUIN your
performance!performance!
Software Development in the Real Software Development in the Real WorldWorld
Build on your skills – Research!Build on your skills – Research!
Learn when to compromiseLearn when to compromise
The most elegant solution isn’t always the The most elegant solution isn’t always the right oneright one
Accept you’re sometimes wrong!Accept you’re sometimes wrong!
Software ManagementSoftware Management
Configuration ManagementConfiguration Management
Issue TrackingIssue Tracking
The dreaded “D” word!The dreaded “D” word!
Project Plan & ResourcesProject Plan & Resources
Code ReviewsCode Reviews
People SkillsPeople Skills
Dealing with?Dealing with? Product Development / SalesProduct Development / Sales Senior ManagersSenior Managers SupportSupport PeersPeers Your immediate manager/supervisorYour immediate manager/supervisor External vendors/suppliersExternal vendors/suppliers
Dealing with PeopleDealing with People
ManagementManagement Be respectful, but fight your cornerBe respectful, but fight your corner Cover yourselfCover yourself A good programmer is a team playerA good programmer is a team player Learning to deal with awkward peopleLearning to deal with awkward people Accept it when you’re wrong!Accept it when you’re wrong!
Don’t make recommendations to Don’t make recommendations to management if you’re not sure!management if you’re not sure!
CommunicationCommunication
Team MeetingsTeam Meetings
Code ReviewsCode Reviews
Email / DocumentationEmail / Documentation
Log book!Log book!
What would happen if someone in your What would happen if someone in your team left?team left?
Finding your job!Finding your job!
Know what you wantKnow what you want
Produce a good CVProduce a good CV
The InterviewThe Interview 2 way process2 way process Don’t lie/blag – for the most part it’s transparent!Don’t lie/blag – for the most part it’s transparent! Be honest and upfront with your skill setBe honest and upfront with your skill set Sell yourself – but don’t be arrogantSell yourself – but don’t be arrogant
Look for ways to enhance your skillsLook for ways to enhance your skills
Look for a challenge!Look for a challenge!
A job with MirandaA job with Miranda
Miranda is recruiting!Miranda is recruiting! Software engineers for embedded systemsSoftware engineers for embedded systems Software engineers for desktop toolsSoftware engineers for desktop tools Hardware/Firmware engineersHardware/Firmware engineers QA/RnD Test engineersQA/RnD Test engineers
Send your CVSend your CV
Q&AQ&A
Chris PringleChris PringleSoftware EngineerSoftware Engineer
Embedded Systems GroupEmbedded Systems GroupMiranda Technologies Ltd.Miranda Technologies [email protected]@miranda.com