• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
C++ for Marine Streamer Positioning and Navigation - ACCU 2011
 

C++ for Marine Streamer Positioning and Navigation - ACCU 2011

on

  • 2,837 views

The slides from my ACCU 2011 conference presentation.

The slides from my ACCU 2011 conference presentation.

Statistics

Views

Total Views
2,837
Views on SlideShare
2,038
Embed Views
799

Actions

Likes
1
Downloads
39
Comments
0

4 Embeds 799

http://meekrosoft.wordpress.com 795
url_unknown 2
http://translate.googleusercontent.com 1
http://www.slashdocs.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    C++ for Marine Streamer Positioning and Navigation - ACCU 2011 C++ for Marine Streamer Positioning and Navigation - ACCU 2011 Presentation Transcript

    • C++ for Marine StreamerPositioning & Navigation Mike Long Schlumberger Western Geco
    • Our Technologies and Services Schlumberger Information Western Geco Solutions Drilling & MeasurementsData & ConsultingServices Reservoir Management Reservoir CharacterizationIntegratedProject WirelineManagement Reservoir Production Artificial Lift Well Testing Completions Well Services
    • Western Geco : Seismic acquistion You Tube - marine seismic acquisition
    • Deployment Configuration
    • Streamer Navigation & Positioning
    • Western Geco : Technical Challenges Data Volume Tens of thousands of sensors acquiring real time data (+ranging and status) Power Physically long streamers Cost Proprietary hardware systems Custom chip development
    • C++ On a ShoestringBuilding a gcc cross compile toolchainfor the Stellaris LM3S8962 Cortex-M3
    • Topics What is a toolchain and how to choose one? Building your own gcc cross compile toolchain. Stacks & Heaps: Linker Scripts Programming and On-chip debugging The time before "int main()" C++ on a diet Testable Embedded C++
    • What makes up a toolchain?
    • What makes up a toolchain
    • What makes up a toolchain
    • How to choose a toolchain Step 0, surveying the options: Are there any options? Paid or Free? Are you paying for the compiler or for support? Does the compiler require a license? Step 1: what is the lifetime of the product/target? Projects with a limited shelf life dont need to be too concerned about source availability Extended life products will benefit from source availability
    • How to choose a toolchain Given that we make long-lived products, source availability is desirable. So: are there any companies providing toolchains?
    • How to choose a toolchain Given that we make long-lived products, source availability is desirable. So: are there any companies providing toolchains?
    • How to choose a toolchain Given that we make long-lived products, source availability is desirable. So: are there any companies providing toolchains? + Up and running quickly + Tested and supported - Proprietary startup code and libraries - Licence management
    • How to choose a toolchainBuild from source: Some companies provide a "lite" gcc toolchain for free with full source. Some popular targets already have a gcc cross compiler out of the box. If you are really lucky it might even be part of your distribution: #sudo apt-get install gcc-arm-linux-gnueabi qemu-kvm-extras If you are particularly masochistic you can build each component from the sources and independently verify each component and the dependencies (not for the faint of heart). Or you can use a toolchain builder (like crosstool-NG)
    • How to choose a toolchain
    • Crosstool-NG crosstool-NG is a tool to build cross-toolchains Kernel-like menuconfig interface Large number of supported architectures uClibc-, glibc- or eglibc-based toolchain supported Can create toolchains that target linux and bare-metal Supports both soft- and hard- float toolchains Debug facilities (native and cross gdb, gdbserver) Watch out though, the default configuration for cortex- m3 doesnt enable gdb. Remember to adjust the config!
    • Crosstool-NG #install crosstool-ng bzip2 -d crosstool-ng-1.8.1.tar.bz2 tar -xf crosstool-ng-1.8.1.tar cd crosstool-ng-1.8.1/ sudo apt-get install awk sudo apt-get install gawk sudo apt-get install bison sudo apt-get install flex sudo apt-get install automake sudo apt-get install libtool sudo apt-get install libncurses-dev sudo apt-get install zlib1g-dev ./configure make sudo make install mkdir /home/user1/arm-eabi/ cd /home/user1/arm-eabi/ #copy sample file for baremetal build to new directory cp /home/user1/downloads/crosstool-ng-1.8.1/samples/arm-bare_newlib_cortex_m3_nommu- eabi/crosstool.config .config #build the entire toolchain ct-ng build
    • Crosstool-NG Kernel-like menuconfig interface Large number of supported architectures uClibc-, glibc- or eglibc-based toolchain supported Can create toolchains that target linux and bare-metal Supports both soft- and hard- float toolchains Debug facilities (native and cross gdb, gdbserver) Watch out though, the default configuration for cortex- m3 doesnt enable gdb. Remember to adjust the config!
    • Stacks & Heaps: Linker Scripts
    • Stacks & Heaps: Linker ScriptsGcc uses a linker script to decide what goes where, and when:
    • Stacks & Heaps: Linker Scripts
    • Stacks & Heaps: Linker Scripts
    • Stacks & Heaps: Linker Scripts
    • Stacks & Heaps: Linker Scripts
    • From link-time to run-time:Programming and On-chip debugging
    • The time before "int main()"
    • The time before "int main()"
    • The time before "int main()"
    • C++ on a diet
    • C++ on a diet The standard C and C++ runtime has many code and data greedy features. How to shave off some of the bloat? Minimize standard library use? Disable exceptions? Restrict dynamic memory allocation? Custom heap allocator? Disable runtime type identification?
    • C++ on a diet -fno-rtti -fno-exceptions -nostdlib -nostartfiles -Xlinker --no-gc-sections
    • C++ on a diet
    • C++ on a diet
    • C++ on a diet
    • Testable Embedded C++
    • Testable Embedded C++: HIL
    • ConclusionsWhy would anyone do this? Time consuming Difficult to estimate Hard
    • ConclusionsWhy would anyone do this? Why would anyone do this? Time consuming Vendor Independence Difficult to estimate Full source Hard No "magic" Fully configurable Great learning experience
    • http://www.westerngeco.com/http://meekrosoft.wordpress.com/@meekrosoft
    • Credits OpenOCD https://sites.google.com/a/stf12.net/developer-sw-fw/eclipse-demo Choose You: http://www.flickr.com/photos/buzzbishop/3270420690/ Fish Stack: http://www.flickr.com/photos/14903992@N08/4053566319/in/photostream/ Fish Heap http://www.flickr.com/photos/bansal98/2389487868/ Burger http://www.flickr.com/photos/derusha/561781801/ Salad http://www.flickr.com/photos/freddy/39340695/ Go the right way: http://www.flickr.com/photos/elenahneshcuetphotography/4438510791/