Details

Exploring BeagleBone


Exploring BeagleBone

Tools and Techniques for Building with Embedded Linux
2. Aufl.

von: Derek Molloy

25,99 €

Verlag: Wiley
Format: PDF
Veröffentl.: 17.12.2018
ISBN/EAN: 9781119533153
Sprache: englisch
Anzahl Seiten: 800

DRM-geschütztes eBook, Sie benötigen z.B. Adobe Digital Editions und eine Adobe ID zum Lesen.

Beschreibungen

<p><b>In-depth instruction and practical techniques for building with the BeagleBone embedded Linux platform</b></p> <p><i>Exploring BeagleBone</i> is a hands-on guide to bringing gadgets, gizmos, and robots to life using the popular BeagleBone embedded Linux platform. Comprehensive content and deep detail provide more than just a BeagleBone instruction manual-you'll also learn the underlying engineering techniques that will allow you to create your own projects. The book begins with a foundational primer on essential skills, and then gradually moves into communication, control, and advanced applications using C/C++, allowing you to learn at your own pace. In addition, the book's companion website features instructional videos, source code, discussion forums, and more, to ensure that you have everything you need.</p> <p>The BeagleBone's small size, high performance, low cost, and extreme adaptability have made it a favorite development platform, and the Linux software base allows for complex yet flexible functionality. The BeagleBone has applications in smart buildings, robot control, environmental sensing, to name a few; and, expansion boards and peripherals dramatically increase the possibilities. <i>Exploring BeagleBone</i> provides a reader-friendly  guide to the device, including a crash course in computer engineering. While following step by step, you can:</p> <ul> <li>Get up to speed on embedded Linux, electronics, and programming</li> <li>Master interfacing electronic circuits, buses and modules, with practical examples</li> <li>Explore the Internet-connected BeagleBone and the BeagleBone with a display</li> <li>Apply the BeagleBone to sensing applications, including video and sound</li> <li>Explore the BeagleBone's Programmable Real-Time Controllers</li> <li>Updated to cover the latest Beagle boards, Linux kernel versions, and Linux software releases.</li> <li>Includes new content on Linux kernel development, the Linux Remote Processor Framework, CAN bus, IoT frameworks, and much more!</li> </ul> <p>Hands-on learning helps ensure that your new skills stay with you, allowing you to design with electronics, modules, or peripherals even beyond the BeagleBone. Insightful guidance and online peer support help you transition from beginner to expert as you master the techniques presented in <i>Exploring BeagleBone</i>, the practical handbook for the popular computing platform.</p>
<p>Introduction xxix</p> <p><b>Part I Beagle Board Basics 1</b></p> <p><b>Chapter 1 The Beagle Hardware Platform 3</b></p> <p>Introduction to the Boards 3</p> <p>Who Should Use the Beagle Platform 6</p> <p>When to Use Beagle Boards 7</p> <p>When Should You Not Use the Beagle Boards 7</p> <p>BeagleBone Documentation 8</p> <p>The Beagle Hardware 10</p> <p>BeagleBone Versions 10</p> <p>The Beagle Hardware 12</p> <p>Beagle Accessories 19</p> <p>Highly Recommended Accessories 19</p> <p>Headers for the PocketBeagle 20</p> <p>Micro-SD Card (for Booting or Flashing eMMCs) 20</p> <p>External 5V Power Supply (for Peripherals) 22</p> <p>Ethernet Cable (for Wired BBB Network Connection) 22</p> <p>HDMI Cable (for Connection to Monitors/Televisions) 22</p> <p>USB to Serial UART TTL 3.3 (for Finding Problems) 23</p> <p>Optional Accessories 24</p> <p>USB Hub (to Connect Several USB Devices to a USB Host) 25</p> <p>Micro-HDMI to VGA Adapters (for VGA Video and Sound) 25</p> <p>Wi-Fi Adapters (for Wireless Networking) 25</p> <p>USB Webcam (for Capturing Images and Streaming Video) 25</p> <p>USB Keyboard and Mouse (for General-Purpose Computing) 26</p> <p>Capes 26</p> <p>How to Destroy Your Board! 27</p> <p>Summary 29</p> <p>Support 29</p> <p><b>Chapter 2 Beagle Software 31</b></p> <p>Linux on the Beagle Boards 32</p> <p>Linux Distributions for Beagle Boards 32</p> <p>Create a Linux Micro-SD Card Image 33</p> <p>Communicating with the Boards 34</p> <p>Installing Drivers 34</p> <p>Wired Network Connections 35</p> <p>Internet-over-USB (All Boards) 36</p> <p>Regular Ethernet (BBB and BeagleBoard Only) 39</p> <p>Ethernet Crossover Cable (BBB and BeagleBoard Only) 40</p> <p>Communicating with Your Board 42</p> <p>Serial Connection over USB 42</p> <p>Serial Connection with the USB-to-TTL 3.3 V Cable 43</p> <p>Connecting Through Secure Shell 44</p> <p>Secure Shell Connections Using Putty 45</p> <p>Chrome Apps: Secure Shell Client 45</p> <p>Transferring Files Using Putty/psftp over SSH 46</p> <p>Controlling the Beagle Board 48</p> <p>Basic Linux Commands 48</p> <p>First Steps 49</p> <p>Basic File System Commands 50</p> <p>Environment Variables 52</p> <p>Basic File Editing 53</p> <p>What Time Is It? 54</p> <p>Package Management 56</p> <p>Beagle-Specific Commands 58</p> <p>Expand the File System on an SD Card 59</p> <p>Update the Kernel 60</p> <p>Interacting with the On-Board LEDs 61</p> <p>Shutdown 63</p> <p>Node.js, Cloud9, and BoneScript 64</p> <p>Introduction to Node.js 64</p> <p>Introduction to the Cloud9 IDE 66</p> <p>Introduction to BoneScript 67</p> <p>Summary 69</p> <p>Further Reading 69</p> <p><b>Chapter 3 Exploring Embedded Linux Systems 71</b></p> <p>Introducing Embedded Linux 72</p> <p>Advantages and Disadvantages of Embedded Linux 73</p> <p>Is Linux Open Source and Free? 74</p> <p>Booting the Beagle Boards 74</p> <p>Bootloaders 74</p> <p>Kernel Space and User Space 83</p> <p>The systemd System and Service Manager 85</p> <p>Managing Linux Systems 90</p> <p>The Superuser 90</p> <p>System Administration 92</p> <p>The Linux File System 92</p> <p>Links to Files and Directories 94</p> <p>Users and Groups 95</p> <p>File System Permissions 98</p> <p>The Linux Root Directory 102</p> <p>Commands for File Systems 103</p> <p>The Reliability of SD Card/eMMC File Systems 111</p> <p>Linux Commands 113</p> <p>Output and Input Redirection (>, >>, and <) 113</p> <p>Pipes (| and tee) 114</p> <p>Filter Commands (from sort to xargs) 115</p> <p>echo and cat 117</p> <p>diff 118</p> <p>tar 119</p> <p>md5sum 120</p> <p>Linux Processes 121</p> <p>How to Control Linux Processes 121</p> <p>Foreground and Background Processes 122</p> <p>Other Linux Topics 124</p> <p>Using Git for Version Control 124</p> <p>A Practice-Based Introduction 126</p> <p>Cloning a Repository (git clone) 126</p> <p>Getting the Status (git status) 128</p> <p>Adding to the Staging Area (git add) 128</p> <p>Committing to the Local Repository (git commit) 129</p> <p>Pushing to the Remote Repository (git push) 129</p> <p>Git Branching 130</p> <p>Creating a Branch (git branch) 130</p> <p>Merging a Branch (git merge) 132</p> <p>Deleting a Branch (git branch -d) 132</p> <p>Common Git Commands 133</p> <p>Desktop Virtualization 134</p> <p>Code for This Book 135</p> <p>Summary 136</p> <p>Further Reading 136</p> <p>Bibliography 137</p> <p><b>Chapter 4 Interfacing Electronics 139</b></p> <p>Analyzing Your Circuits 140</p> <p>Digital Multimeter 140</p> <p>Oscilloscopes 141</p> <p>Basic Circuit Principles 143</p> <p>Voltage, Current, Resistance, and Ohm’s Law 143</p> <p>Voltage Division 145</p> <p>Current Division 146</p> <p>Implementing Circuits on a Breadboard 147</p> <p>Digital Multimeters and Breadboards 149</p> <p>Example Circuit: Voltage Regulation 150</p> <p>Discrete Components 152</p> <p>Diodes 152</p> <p>Light-Emitting Diodes 153</p> <p>Smoothing and Decoupling Capacitors 156</p> <p>Transistors 158</p> <p>Transistors as Switches 159</p> <p>Field Effect Transistors as Switches 162</p> <p>Optocouplers/Optoisolators 164</p> <p>Switches and Buttons 166</p> <p>Hysteresis 168</p> <p>Logic Gates 169</p> <p>Floating Inputs 173</p> <p>Pull-Up and Pull-Down Resistors 173</p> <p>Open-Collector and Open-Drain Outputs 174</p> <p>Interconnecting Gates 175</p> <p>Analog-to-Digital Conversion 177</p> <p>Sampling Rate 177</p> <p>Quantization 178</p> <p>Operational Amplifi ers 178</p> <p>Ideal Operational Amplifiers 178</p> <p>Negative Feedback and Voltage Follower 181</p> <p>Positive Feedback 181</p> <p>Concluding Advice 182</p> <p>Summary 182</p> <p>Further Reading 183</p> <p><b>Chapter 5 Practical Beagle Board Programming 185</b></p> <p>Introduction 186</p> <p>Performance of Different Languages 186</p> <p>Setting the CPU Frequency 190</p> <p>Scripting Languages 192</p> <p>Scripting Language Options 192</p> <p>Bash 193</p> <p>Lua 196</p> <p>Perl 197</p> <p>Python 198</p> <p>Dynamically Compiled Languages 201</p> <p>JavaScript and Node.js on the Beagle boards 201</p> <p>Java on the Beagle Boards 203</p> <p>C and C++ on the Beagle Boards 207</p> <p>C and C++ Language Overview 210</p> <p>Compiling and Linking 211</p> <p>Writing the Shortest C/C++ Program 213</p> <p>Static and Dynamic Compilation 215</p> <p>Variables and Operators in C/C++ 215</p> <p>Pointers in C/C++ 219</p> <p>C-Style Strings 221</p> <p>LED Flashing Application in C 223</p> <p>The C of C++ 224</p> <p>First Example and Strings in C++ 225</p> <p>Passing by Value, Pointer, and Reference 226</p> <p>Flashing the LEDs Using C++ (non-OO) 227</p> <p>Writing a Multicall Binary 228</p> <p>Overview of Object-Oriented Programming 229</p> <p>Classes and Objects 229</p> <p>Encapsulation 230</p> <p>Inheritance 231</p> <p>Object-Oriented LED Flashing Code 233</p> <p>Interfacing to the Linux OS 236</p> <p>Glibc and Syscall 237</p> <p>Improving the Performance of Python 239</p> <p>Cython 239</p> <p>Boost.Python 242</p> <p>Summary 244</p> <p>Further Reading 244</p> <p>Bibliography 244</p> <p><b>Part II Interfacing, Controlling, and Communicating 245     </b></p> <p><b>Chapter 6 Interfacing to the Beagle Board Input/Outputs 247</b></p> <p>General-Purpose Input/Outputs 248</p> <p>Introduction to GPIO Interfacing 248</p> <p>GPIO Digital Output 250</p> <p>GPIO Digital Input 255</p> <p>GPIO Confi guration 257</p> <p>Internal Pull-Up and Pull-Down Resistors 258</p> <p>GPIO Pin Configuration Settings 258</p> <p>Interfacing to Powered DC Circuits 265</p> <p>C++ Control of GPIOs 267</p> <p>The Linux Device Tree 271</p> <p>Flattened Device Tree on the Beagle Boards 272</p> <p>Modifying a Board Device Tree 276</p> <p>Boot Confi guration Files 278</p> <p>Analog Inputs and Outputs 280</p> <p>Analog Inputs 280</p> <p>Enabling the Analog Inputs 280</p> <p>Analog Input Application—A Simple Light Meter 282</p> <p>Analog Outputs (PWM) 285</p> <p>Output Application—Controlling a Servo Motor 289</p> <p>BoneScript 290</p> <p>Digital Read and Write 290</p> <p>Analog Read 292</p> <p>Analog Write (PWM) 293</p> <p>GPIO Performance 294</p> <p>Advanced GPIO Topics 295</p> <p>More C++ Programming 295</p> <p>Callback Functions 295</p> <p>POSIX Threads 297</p> <p>Linux poll (sys/poll.h) 298</p> <p>Enhanced GPIO Class 299</p> <p>Using GPIOs without Using sudo 302</p> <p>Root Permissions with setuid 304</p> <p>Summary 306</p> <p>Further Reading 306</p> <p><b>Chapter 7 Cross-Compilation, Eclipse, and Building Linux 307</b></p> <p>Setting Up a Cross-Compilation Toolchain 308</p> <p>Cross-Compiling Under Debian 309</p> <p>Testing the Toolchain 311</p> <p>Emulating the armhf Architecture 312</p> <p>Cross-Compilation with Third-Party Libraries (Multiarch) 314</p> <p>Cross-Compilation Using Eclipse 315</p> <p>Installing Eclipse on Desktop Linux 315</p> <p>Confi guring Eclipse for Cross-Compilation 316</p> <p>Remote System Explorer 318</p> <p>Integrating GitHub into Eclipse 322</p> <p>Remote Debugging 322</p> <p>Automatic Documentation (Doxygen) 328</p> <p>Adding Doxygen Editor Support in Eclipse 330</p> <p>Cross-Building Linux 330</p> <p>Downloading the Kernel Source 331</p> <p>Building the Linux Kernel 332</p> <p>Building a Poky Linux Distribution (Advanced) 335</p> <p>Summary 340</p> <p><b>Chapter 8 Interfacing to the Beagle Board Buses 341</b></p> <p>Introduction to Bus Communication 342</p> <p>I2C 343</p> <p>I2C Hardware 343</p> <p>I2C on the Beagle Boards 344</p> <p>I2C Devices on the Beagle Boards 345</p> <p>An I2C Test Circuit 346</p> <p>A Real-Time Clock 346</p> <p>The ADXL345 Accelerometer 347</p> <p>Wiring the Test Circuit 348</p> <p>Using Linux I2C-Tools 348</p> <p>i2cdetect 348</p> <p>i2cdump 349</p> <p>i2cget 353</p> <p>i2cset 354</p> <p>I2C Communication in C 356</p> <p>Wrapping I2C Devices with C++ Classes 358</p> <p>SPI 360</p> <p>SPI Hardware 361</p> <p>SPI on the Beagle Boards 363</p> <p>Testing an SPI Bus 363</p> <p>A First SPI Application (74HC595) 365</p> <p>Wiring the 74HC595 Circuit 366</p> <p>SPI Communication Using C 367</p> <p>Bidirectional SPI Communication in C/C++ 370</p> <p>The ADXL345 SPI Interface 370</p> <p>Connecting the ADXL345 to the Beagle Boards 372</p> <p>Wrapping SPI Devices with C++ Classes 373</p> <p>Three-Wire SPI Communication 375</p> <p>Multiple SPI Slave Devices 376</p> <p>UART 377</p> <p>The Beagle Board UART 378</p> <p>UART Examples in C 380</p> <p>Beagle Board Serial Client 381</p> <p>LED Serial Server 383</p> <p>UART Applications: GPS 386</p> <p>CAN Bus 388</p> <p>Beagle Board CAN Bus 389</p> <p>SocketCAN 390</p> <p>A CAN Bus Test Circuit 392</p> <p>Linux CAN-utils 393</p> <p>A SocketCAN C Example 394</p> <p>Logic-Level Translation 396</p> <p>Summary 398</p> <p>Further Reading 399</p> <p><b>Chapter 9 Interacting with the Physical Environment 401</b></p> <p>Interfacing to Actuators 402</p> <p>DC Motors 403</p> <p>Driving Small DC Motors (up to 1.5 A) 406</p> <p>Controlling a DC Motor Using sysfs 407</p> <p>Driving Larger DC Motors (Greater Than 1.5 A) 409</p> <p>Controlling a DC Motor Using C++ 411</p> <p>Stepper Motors 412</p> <p>The EasyDriver Stepper Motor Driver 413</p> <p>A Beagle Board Stepper Motor Driver Circuit 414</p> <p>Controlling a Stepper Motor Using C++ 415</p> <p>Relays 417</p> <p>Interfacing to Analog Sensors 418</p> <p>Protecting the ADC Inputs 420</p> <p>Diode Clamping 421</p> <p>Op-Amp Clamping 422</p> <p>Analog Sensor Signal Conditioning 427</p> <p>Scaling Using Voltage Division 427</p> <p>Signal Offsetting and Scaling 428</p> <p>Analog Interfacing Examples 431</p> <p>Infrared Distance Sensing 431</p> <p>ADXL335 Conditioning Example 436</p> <p>Interfacing to Local Displays 438</p> <p>MAX7219 Display Modules 438</p> <p>Character LCD Modules 441</p> <p>Building C/C++ Libraries 445</p> <p>Makefi les 446</p> <p>CMake 447</p> <p>A Hello World Example 448</p> <p>Building a C/C++ Library 449</p> <p>Using a Shared (.so) or Static (.a) Library 452</p> <p>Summary 453</p> <p>Further Reading 454</p> <p><b>Chapter 10 Real-Time Interfacing Using External Slave Processors 455</b></p> <p>Real-Time Beagle Board 456</p> <p>Real-Time Kernels 456</p> <p>Real-Time Hardware Solutions 458</p> <p>Extended GPIO Availability 458</p> <p>The MCP23017 and the I2C Bus 460</p> <p>Controlling the GPIO LED Circuit 461</p> <p>Reading the GPIO Button State 462</p> <p>An Interrupt Configuration Example (Advanced) 463</p> <p>The MCP23S17 and the SPI Bus 464</p> <p>A C++ Class for the MCP23x17 Devices 465</p> <p>Adding External UARTs 468</p> <p>The Arduino 471</p> <p>An Arduino Serial Slave 474</p> <p>A UART Echo Test Example 475</p> <p>UART Command Control of an Arduino 478</p> <p>An Arduino I2C Slave 481</p> <p>An I2C Test Circuit 481</p> <p>I2C Register Echo Example 482</p> <p>I2C Temperature Sensor Example 484</p> <p>I2C Temperature Sensor with a Warning LED 486</p> <p>Arduino Slave Communication Using C/C++ 488</p> <p>An I2C Ultrasonic Sensor Application 490</p> <p>Summary 493</p> <p>Further Reading 493</p> <p><b>Part III Advanced Beagle Board Systems 495</b></p> <p><b>Chapter 11 The Internet of Things 497</b></p> <p>The Internet of Things 498</p> <p>A Beagle Board IoT Sensor 499</p> <p>The Beagle Board as a Sensor Web Server 501</p> <p>Installing and Configuring a Web Server 502</p> <p>Configuring the Apache Web Server 503</p> <p>Creating Web Pages and Web Scripts 503</p> <p>PHP on the Beagle Board 506</p> <p>GNU Cgicc Applications (Advanced) 508</p> <p>Replacing Bone101 with Apache 511</p> <p>A C/C++ Web Client 512</p> <p>Network Communications Primer 513</p> <p>A C/C++ Web Client 514</p> <p>Secure Communication Using Open SSL 516</p> <p>A Beagle Board as a “Thing” 518</p> <p>Thing Speak 518</p> <p>The Linux Cron Scheduler 521</p> <p>System crontab 521</p> <p>User crontab 523</p> <p>Sending E-mail from the Beagle Board 524</p> <p>If This Then That 526</p> <p>IoT Frameworks 528</p> <p>MQ Telemetry Transport 529</p> <p>MQTT Server/Broker 531</p> <p>MQTT Publisher/Subscriber on a Beagle Board 533</p> <p>The mqtt-spy Debug Tool 534</p> <p>Writing MQTT Code 535</p> <p>A Paho MQTT Publisher Example 535</p> <p>A Paho MQTT Subscriber Example 537</p> <p>Adafuit IO 539</p> <p>Configuring the Adafruit IO Account 540</p> <p>Connecting to Adafruit IO with MQTT 542</p> <p>An MQTT Node.js Publish Example 543</p> <p>The C++ Client/Server 545</p> <p>IoT Device Management 548</p> <p>Remote Monitoring of a Beagle Board 548</p> <p>Beagle Board Watchdog Timers 549</p> <p>Static IP Addresses 551</p> <p>Power over Ethernet 551</p> <p>PoE Power Extraction Modules (Advanced Topic) 553</p> <p>Summary 554</p> <p><b>Chapter 12 Wireless Communication and Control 555</b></p> <p>Introduction to Wireless Communications 556</p> <p>Bluetooth Communications 557</p> <p>Installing a Bluetooth Adapter 558</p> <p>Checking the LKM 559</p> <p>Configuring a Bluetooth Adapter 560</p> <p>Making the Beagle Board Discoverable 561</p> <p>Android App Development with Bluetooth 563</p> <p>Wi-Fi Communications 564</p> <p>Installing a Wi-Fi Adapter 564</p> <p>The NodeMCU Wi-Fi Slave Processor 568</p> <p>Flashing with the Latest Firmware 569</p> <p>Connecting the NodeMCU to Wi-Fi 570</p> <p>Programming the NodeMCU 571</p> <p>The NodeMCU Web Server Interface 574</p> <p>JSON 575</p> <p>The NodeMCU and MQTT 577</p> <p>ZigBee Communications 579</p> <p>Introduction to XBee Devices 579</p> <p>AT versus API Mode 581</p> <p>XBee Confi guration 582</p> <p>XCTU 582</p> <p>Configuring an XBee Network Using XCTU 583</p> <p>An XBee AT Mode Example 584</p> <p>Setting Up the Arduino XBee Device (XBeeA) 584</p> <p>Setting Up the PocketBeagle XBee Device (XBeePB) 586</p> <p>An XBee API Mode Example 589</p> <p>Setting Up the PocketBeagle XBee Device (XBee1) 589</p> <p>Setting Up the Stand-Alone XBee Device (XBee2) 589</p> <p>XBee API Mode and Node.js 590</p> <p>XBee and C/C++ 592</p> <p>Near Field Communication 593</p> <p>Summary 596</p> <p><b>Chapter 13 Beagle Board with a Rich User Interface 599</b></p> <p>Rich UI Beagle Board Architectures 600</p> <p>Beagle Boards as General-Purpose Computers 601</p> <p>Connecting a Bluetooth Input Peripheral 603</p> <p>BeagleBone with a LCD Touchscreen Cape 604</p> <p>Virtual Network Computing 605</p> <p>VNC Using VNC Viewer 605</p> <p>VNC with Xming and PuTTY 606</p> <p>VNC with a Linux Desktop Computer 607</p> <p>Fat-Client Applications 608</p> <p>Rich UI Application Development 608</p> <p>Introduction to GTK+ on the Beagle Boards 609</p> <p>The “Hello World” GTK+ Application 609</p> <p>The Event-Driven Programming Model 610</p> <p>The GTK+ Temperature Application 611</p> <p>Introduction to Qt for the Beagle Board 612</p> <p>Installing Qt Development Tools 613</p> <p>The “Hello World” Qt Application 613</p> <p>Qt Primer 615</p> <p>Qt Concepts 615                                                                                                   </p> <p>The QObject Class 617</p> <p>Signals and Slots 617</p> <p>Qt Development Tools 618</p> <p>A First Qt Creator Example 620</p> <p>A Qt Temperature Sensor GUI Application 621</p> <p>Remote UI Application Development 625</p> <p>Fat-Client Qt GUI Application 626</p> <p>Multithreaded Server Applications 629</p> <p>A Multithreaded Temperature Service 632</p> <p>Parsing Stream Data 634</p> <p>The Fat Client as a Server 635</p> <p>Parsing Stream Data with XML 638</p> <p>The Beagle Board Client Application 639</p> <p>Summary 641</p> <p>Further Reading 641</p> <p><b>Chapter 14 Images, Video, and Audio 643</b></p> <p>Capturing Images and Video 644</p> <p>USB Webcams 644</p> <p>Video4Linux2 (V4L2) 646</p> <p>Image Capture Utility 647</p> <p>Video4Linux2 Utilities 648</p> <p>Writing Video4Linux2 Programs 650</p> <p>Streaming Video 652</p> <p>Image Processing and Computer Vision 654</p> <p>Image Processing with Open CV 654</p> <p>Computer Vision with Open CV 656</p> <p>Boost 659</p> <p>BeagleBone Audio 660</p> <p>Core Audio Software Tools 661</p> <p>Audio Devices for the Beagle Boards 661</p> <p>HDMI and USB Audio Playback Devices 661</p> <p>Internet Radio Playback 664</p> <p>Recording Audio 664</p> <p>Audio Network Streaming 666</p> <p>Bluetooth A2DP Audio 666</p> <p>Text-to-Speech 669</p> <p>Summary 670</p> <p>Further Reading 670</p> <p><b>Chapter 15 Real-Time Interfacing with the PRU-ICSS 673</b></p> <p>The PRU-ICSS 674</p> <p>The PRU-ICSS Architecture 674</p> <p>The Remote Processor Framework 675</p> <p>Important Documents 676</p> <p>Development Tools for the PRU-ICSS 676</p> <p>The PRU Code Generation Tools 677</p> <p>The PRU Debugger 677</p> <p>Using the AM335x PRU-ICSS 679</p> <p>Setting Up the Board for Remoteproc 679</p> <p>Testing Remoteproc under Linux 680</p> <p>A First PRU Example 683</p> <p>PRU-ICSS Enhanced GPIOs 683</p> <p>A First PRU Program 686</p> <p>A First PRU Program in C 686</p> <p>A First PRU Program in Assembly 688</p> <p>The PRU-ICSS in Detail 691</p> <p>Registers 691</p> <p>Local and Global Memory 692</p> <p>PRU Assembly Instruction Set 696</p> <p>PRU-ICSS Applications 698</p> <p>PRU-ICSS Performance Tests 698</p> <p>Utilizing Regular Linux GPIOs 702</p> <p>A PRU PWM Generator 704</p> <p>A PRU Sine Wave Generator 708</p> <p>An Ultrasonic Sensor Application 709</p> <p>Summary 714</p> <p>Further Reading 714</p> <p><b>Chapter 16 Embedded Kernel Programming 717</b></p> <p>Introduction 718</p> <p>Why Write Kernel Modules? 718</p> <p>Loadable Kernel Module Basics 719</p> <p>A First LKM Example 720</p> <p>The LKM Make file 722</p> <p>Building the LKM on a Beagle Board 723</p> <p>Testing the First LKM Example 724</p> <p>Testing the LKM Parameter 726</p> <p>An Embedded LKM Example 727</p> <p>Interrupt Service Routines 729</p> <p>Performance 733</p> <p>Enhanced Button GPIO Driver LKM 733</p> <p>The object Interface 734</p> <p>Enhanced LED GPIO Driver LKM 741</p> <p>Kernel Threads 742</p> <p>Conclusions 744</p> <p>Summary 744</p> <p>Index 745</p>
<p><b>Dr. Derek Molloy</b> is an Associate Professor in the School of Electronic Engineering at Dublin City University, Ireland. Derek produces a popular YouTube series on the BeagleBone platform and a wide variety of embedded Linux topics. His videos and personal blog have introduced millions of people to the BeagleBone, embedded Linux, and digital electronics.
<p>"What I've learned on this topic has taken me a decade of self-study culling through books and release notes and various platforms. Here, you've demystified it all in the span of a single (large) volume."</br> <b>—Brian DeLacey,</b> founder of the IoT Festival <p>"This wonderful book is at the nexus of so many of the skills that are vital to today's computer scientists, electrical engineers, and innovators of all stripes as they turn their ideas into transformative creations."</br> <b> —Prof Ray Simar,</b> Professor in the Practice of Digital Signal Processing Architecture, Rice University, Texas <p>"Derek Molloy's, Exploring BeagleBone, is THE book to go to if you are interested in learning about embedded Linux programming and how to use it to exploit the powerful capabilities of the BeagleBone single board computer."</br> <b> —Prof. Burford Furman,</b> San José State University, California <p><b>GIVE LIFE TO YOUR CREATIONS WITH THE VERSATILE, LINUX-POWERED BEAGLE BOARDS</b> <p>Whatever applications you can dream up, Beagle boards can help you build them. This hands-on guide teaches you the essential Beagle board skills and underlying engineering principles. It then takes you into interfacing, communication, and control so that you can create your own projects. Finally, you'll explore using Beagle boards for advanced applications such as building Internet-of-Things systems and real-time interfacing. With hands-on examples and outstanding guidance, this book will give you the in-depth knowledge to do great things with your Beagle board. <ul> <li>Features a detailed review of the Linux, electronics, and programming skills required to master the Beagle boards</li> <li>Thoroughly examines interfacing a Beagle board to almost any type of circuit or device</li> <li>Demonstrates advanced Beagle board applications such as network communications; rich user interfaces; images, video, and audio; and real-time interfacing using the board's PRU-ICSS</li> <li>Teaches transferrable essential skills to help you design with electronics, modules, or peripherals that can be used even beyond the Beagle board</li> <li>Updated to cover the latest Beagle boards, Linux kernel versions, and Linux software releases.</li> <li>Includes new content on Linux kernel development, the Linux Remote Processor Framework, CAN bus, IoT frameworks, and much more!</li> </ul> <p>Visit the companion website at <b>www.exploringbeaglebone.com</b> for source code, instructional videos, online peer discussions, and more!

Diese Produkte könnten Sie auch interessieren:

Chemie in Lebensmitteln
Chemie in Lebensmitteln
von: Johannes Friedrich Diehl
PDF ebook
61,99 €
Lebensmittelführer
Lebensmittelführer
von: Günter Vollmer, Gunter Josst, Dieter Schenker, Wolfgang Sturm, Norbert Vreden
PDF ebook
16,99 €
Lebensmittelführer
Lebensmittelführer
von: Günter Vollmer, Gunter Josst, Dieter Schenker, Wolfgang Sturm, Norbert Vreden
PDF ebook
16,99 €