LinuxDriverDevelopmentforEmbeddedProcessors–SecondEdition版本:LearntodevelopLinuxembeddeddriverswithkernel4.9LTSTheflexibilityofLinuxembedded,theavailabilityofpowerful,energyefficientprocessorsdesignedforembeddedcomputingandthelowcostofnewprocessorsareencouragingmanyindustrialcompaniestocomeupwithnewdevelopmentsbasedonembeddedprocessors.Currentengineershaveintheirhandspowerfultoolsfordevelopingapplicationspreviouslyunimagined,buttheyneedtounderstandthecountlessfeaturesthatLinuxofferstoday.ThisbookwillteachyouhowtodevelopdevicedriversforDeviceTreeLinuxembeddedsystems.YouwilllearnhowtowritedifferenttypesofLinuxdrivers,aswellastheappropriateAPIs(ApplicationProgramInterfaces)andmethodstointerfacewithkernelanduserspaces.Thisisabookismeanttobepractical,butalsoprovidesanimportanttheoreticalbase.Morethantwentydriversarewrittenandportedtothreedifferentprocessors.YoucanchoosebetweenNXPi.MX7D,MicrochipSAMA5D2andBroadcomBCM2837processorstodevelopandtestthedrivers,whoseimplementationisdescribedindetailinthepracticallabsectionsofthebook.Beforeyoustartreading,IencourageyoutoacquireanyoftheseprocessorboardswheneveryouhaveaccesstosomeGPIOs,andatleastoneSPIandI2Ccontrollers.OneoftheboardsusedtoimplementthedriversisthefamousRaspberryPI3ModelBboard.Youwilllearnhowtodevelopdrivers,fromthesimplestonesthatdonotinteractwithanyexternalhardware,todriversthatmanagedifferentkindofdevices:accelerometers,DACs,ADCs,RGBLEDs,Multi-DisplayLEDcontrollers,I/Oexpanders,andButtons.YouwillalsodevelopDMAdrivers,driversthatmanageinterrupts,anddriversthatwrite/readontheinternalregistersoftheprocessortocontrolexternaldevices.Toeasythedevelopmentofsomeofthesedrivers,youwillusedifferenttypesofFrameworks:
1