Embedded Open-Source Linux Development

Total Page:16

File Type:pdf, Size:1020Kb

Embedded Open-Source Linux Development Embedded Open-Source Linux Development Overview Going Embedded • Embedded is not Desktop! – To achieve the goals of embedded systems, you can give up many parts of a multipurpose desktop or server-based system • Smaller is better ≠ – Do not include everything – Embedded systems have space constraints – Embedded systems have cost constraints – Every embedded system has unique hardware • Single fixed purpose – Configuration is done by the developer and/or manufacturer Open Source Linux - 2 Dec. 7. 2012 Open-Source Software • Source code is always available! • Designing products with Linux and other open-source software does not mean you have to make your software open source. The use of loadable modules and LGPL libraries protects your intellectual property Open Source Linux - 3 Dec. 7. 2012 Goal • Enhance your experience in the customization of a System on Chip (SoC) design with an embedded operating system – Linux – by using the Xilinx tool capabilities Open Source Linux - 4 Dec. 7. 2012 Linux Distributions • Workstation Distributions – Debian – Ubuntu – Red Hat Linux – Suse – Others • Embedded Distributions – LynuxWorks – Wind River – MontaVista – Others Open Source Linux - 5 Dec. 7. 2012 What is Linux? • Here, “Linux” is the kernel Graphical Application Application X Server (xorg) Command line tools (cp, mv, tar, …) Kernel Interface (System Call) Distribution Linux Kernel Kernel Subsystems Driver Open Source Linux - 6 Dec. 7. 2012 Benefits of Linux • Memory Manager • Filesystem • Networking Support (TCP/IP Stack, ARP, ...) • Protected Memory • Peripheral Support • Application Support • Scalability (from embedded to clusters) Open Source Linux - 7 Dec. 7. 2012 Drawbacks of Linux • Large Resource Requirements – External memory needed • Compulsory Filesystem – A complete filesystem can be an overkill for a small application Open Source Linux - 8 Dec. 7. 2012 Linux System Components ToolchainToolchain HardwareHardware -binutils -gcc DTS -libc cross-compile cp cross- Linux Kernel compile -ARCH-ARCH -CROSS_COMPILE-CROSS_COMPILE cp shellshell RootfsRootfs (cp,(cp, ls, ls, …) …) cp /lib /bin /dev /etc Open Source Linux - 9 Dec. 7. 2012 General HW Design Processor Non-Volatile FPGA Memory (FLASH) Memory (RAM) Network UART … Open Source Linux - 10 Dec. 7. 2012 Evaluation Boards Spartan 3E Starter Kit ML 405 ML 507 Open Source Linux - 11 Dec. 7. 2012 Evaluation Boards Zedboard SP 605 Open Source Linux - 12 Dec. 7. 2012 MicroBlaze 8.20a Processor • At least MicroBlaze 7.20d due to bug fixes MemoryMemory ManagementManagement UnitUnit (MMU)(MMU) D D I I IPLB D-Cache I-Cache - IPLB - DPLB - - DPLB Cache Cache Cache Cache ILMBILMB DLMBDLMB ALU ProgramProgram CounterCounter SpecialSpecial Shift Purpose Purpose BUS BUS BUS BUS Purpose BUS-IF BUS-IF Barrel Shift RegistersRegisters - - - - IF IF Multiplier IF IF Multiplier Divider Branch Target FPU Cache InstructionInstruction AXIAXI DecoderDecoder Instruction Buffer Instruction Buffer RegisterRegister FileFile FSLFSL 3232 xx 32b32b Open Source Linux - 13 Dec. 7. 2012 Virtex-4 FX PowerPC405 • 32-bit RISC CPU, PowerPC Fetch Timers & and • 700+ DMIPS at 450 MHz Decode Debug Logic • 5-stage instruction pipeline I-Cache D-Cache 16KB 16KB • Instruction and Data Caches MMU • Embedded MMU • Execution Unit Execution Unit – Multiply / divide unit 32x32b GPR ALU, MAC – 32 x 32-bit GPR • High-bandwidth direct interface to logic using OCM™ IBM • Timers: PIT, FIT, Watchdog PowerPC™ • Built-in Debug and Trace support 405 RISC CPU Open Source Linux - 14 Dec. 7. 2012 Virtex-5 FXT FPGA PowerPC 440 Processor Processor Block DMADMA PowerPC 440 processor core DMADMA – Industry-standard processor SPLB0 • IBM licensed PowerPCPowerPC – More DMIPS per MHz APU APU MCIMCI Control 440440 Hardened processor interconnect Control CrossbarCrossbar MPLBMPLB – Integrated “MPMC” data movement CPMCPM engine SPLB1SPLB1 – Simpler implementation DMADMA – Reclaim up to 5000 LUTs and 5000 DCRDCR DMADMA flip-flops Enhanced APU – Double-precision floating point unit – Custom hardware acceleration – Eliminate software bottlenecks Open Source Linux - 15 Dec. 7. 2012 SW and HW Flows Combined C/C++C/C++ Assembly Cross-Compiler Source Code VHDL or Verilog SynthesisSynthesis Cross-Compiler System Netlist Assembler Source Code Constraints BuildBuild & & Map Map Assembler Merged & Relocatable Mapped Design Object Code Memory Place & Route LinkerLinker Libraries Map Place & Route Configuration File Machine Code System Bitstream ELF SystemSystem MemoryMemory Combined Image Download Bitstream Open Source Linux - 16 Dec. 7. 2012 ZYNQ-7000 Processing System Open Source Linux - 17 Dec. 7. 2012 Flat device tree • ARM / MicroBlaze / PowerPC use a configuration method known as a device tree • Device tree is used by Open Firmware and Flattened Device Tree (FDT) • A device tree is data structure representing a hierarchical tree that describes the devices in the system • Device tree source DTS is compiled into a device tree blob DTB • The device tree is parsed by the kernel such that system configuration is done at run time rather than compile time Open Source Linux - 18 Dec. 7. 2012 Device tree source example / { compatible = "xlnx,microblaze"; model = "testing"; DDR3_SDRAM: memory@40000000 { device_type = "memory"; reg = < 0x40000000 0x8000000 >; } ; chosen { bootargs = "console=ttyS0 root=/dev/ram"; linux,stdout-path = "/axi@1/serial@84000000"; } ; cpus { microblaze_0: cpu@0 { clock-frequency = <100000000>; compatible = "xlnx,microblaze-8.00.b"; ... } ; } ; AXI_Lite: axi@1 { compatible = "xlnx,axi-interconnect-1.01.a", "simple-bus"; Push_Buttons_4Bit: gpio@81400000 { compatible = "xlnx,axi-gpio-1.01.a", " xlnx,xps-gpio-1.00.a "; reg = < 0x81400000 0x10000 >; xlnx,all-inputs = <0x1>; ... } ; ... } ; } ; Open Source Linux - 19 Dec. 7. 2012 Available Xilinx Drivers • SPI (QSPI, SPI, XPS_SPI) • Ethernet (ll_temac, xps_emaclite, PS Ethernet, axi_ethernet) • Uart (UART 16550, UART Lite) • GPIO (PS GPIO, XPS GPIO) • I2C (xps_iic, PS I2C) • Video Framebuffer (xps-tft, xylon, plb-tft-cntlr-ref, plb-dvi-cntlr-ref) • System ACE (xps-sysace, opb-sysace) • USB Host (xps-usb-host, xusbps-ehci) • HWICAP (opb-hwicap, xps-hwicap) • .. Open Source Linux - 20 Dec. 7. 2012 Environment Components • Binutils • Cross-Compiler Toolchain • C library • Linux kernel ToolchainToolchain HardwareHardware • Root filesystem (rootfs) KernelKernel Rootfs ShellShell Rootfs Environment Open Source Linux - 21 Dec. 7. 2012 GNU Binutils ld – the GNU linker as – the GNU assembler • ar – Create, modify, and extract from archives • nm – List symbols from object files • Objcopy – Copy and translate object files • Objdump – Display information from object files • ranlib – Generate index to archive contents • size – List section sizes and total size • strings – List printable strings from files • strip – Discard symbols • c++filt – Filter to demangle encoded C++ symbols • c++filt – MS-DOS name for c++filt • addr2line – Convert addresses to file and line • nlmconv – Convert object code into an NLM • readelf – Display the contents of ELF format files Open Source Linux - 22 Dec. 7. 2012 Cross-Compiler • Runs on the HOST system and generates binaries for a TARGET system – The HOST system is usually x86 – The TARGET systems are ARM / PowerPC / MicroBlaze processors • Big projects are sometimes hard to cross-compile – Solve the problems or – Use a native compiler on the target system Open Source Linux - 23 Dec. 7. 2012 C Libraries • GNU C library ( glibc ) is extensive • For smaller embedded applications – eglibc (popular choice now) – uClibc – diet libc – Newlib – klibc (very small for initial ram file- Library ~ (def ) pre- system) compiled standard source code Open Source Linux - 24 Dec. 7. 2012 Toolchain – Build Scripts • Building a toolchain by hand can be a real pain – Due to version dependencies • Use scripts instead – Crosstool – Buildroot • Use prebuilt Toolchain is preferred – ARM GNU Tools (wiki.xilinx.com) – MicroBlaze GNU Tools (wiki.xilinx.com) – PowerPC GNU Tools Embedded Linux Development Kit (ELDK - http://www.denx.de) Open Source Linux - 25 Dec. 7. 2012 Acquiring a Linux Kernel • Linux kernel sources – Xilinx Tree ( recommended ) • git.xilinx.com: git clone git.xilinx.com/linux-xlnx.git – Secret Lab Tree (new device tree developments) • git.secretlab.ca: git clone git://git.secretlab.ca/git/linux.git – Mainline Kernel • www.kernel.org – Many more • git.kernel.org Open Source Linux - 26 Dec. 7. 2012 Configuring the Kernel • Define environment for building [linux-xlnx]# export CROSS_COMPILE= <cross-compiler-prefix> • [linux-xlnx]# export ARCH= <architecture> • Copy the hardware device tree into the Linux kernel sources arch/ <architecture> /boot/dts/ • Use predefined configurations (arch/ <arch> /configs/) if available for example, make <board>_defconfig replace <board> with ml403, ml507, sp605, … • Or use minimal configuration make allnoconfig • Interactively configure the kernel by using a menu make menuconfig Open Source Linux - 27 Dec. 7. 2012 Building the Kernel • Invoke the makefile from kernel directory to build the kernel – make (builds the kernel default target) – make modules (builds kernel modules) – make V=1 (builds with verbose messages) – make simpleImage.<dts file name> (builds with device tree included) Open Source Linux - 28 Dec. 7. 2012 Creating a Target RootFS 1. From scratch 1. Create directory structure in the rootfs 2. Create Linux tools (shell, …) and user applications in the rootfs 3. Copy libraries to the rootfs 4. Create device files in the rootfs 5.
Recommended publications
  • Linux and Electronics
    Linux and Electronics Urs Lindegger Linux and Electronics Urs Lindegger Copyright © 2019-11-25 Urs Lindegger Table of Contents 1. Introduction .......................................................................................................... 1 Note ................................................................................................................ 1 2. Printed Circuits ...................................................................................................... 2 Printed Circuit Board design ................................................................................ 2 Kicad ....................................................................................................... 2 Eagle ..................................................................................................... 13 Simulation ...................................................................................................... 13 Spice ..................................................................................................... 13 Digital simulation .................................................................................... 18 Wings 3D ....................................................................................................... 18 User interface .......................................................................................... 19 Modeling ................................................................................................ 19 Making holes in Wings 3D .......................................................................
    [Show full text]
  • Beyond BIOS Developing with the Unified Extensible Firmware Interface
    Digital Edition Digital Editions of selected Intel Press books are in addition to and complement the printed books. Click the icon to access information on other essential books for Developers and IT Professionals Visit our website at www.intel.com/intelpress Beyond BIOS Developing with the Unified Extensible Firmware Interface Second Edition Vincent Zimmer Michael Rothman Suresh Marisetty Copyright © 2010 Intel Corporation. All rights reserved. ISBN 13 978-1-934053-29-4 This publication is designed to provide accurate and authoritative information in regard to the subject matter covered. It is sold with the understanding that the publisher is not engaged in professional services. If professional advice or other expert assistance is required, the services of a competent professional person should be sought. Intel Corporation may have patents or pending patent applications, trademarks, copyrights, or other intellectual property rights that relate to the presented subject matter. The furnishing of documents and other materials and information does not provide any license, express or implied, by estoppel or otherwise, to any such patents, trademarks, copyrights, or other intellectual property rights. Intel may make changes to specifications, product descriptions, and plans at any time, without notice. Fictitious names of companies, products, people, characters, and/or data mentioned herein are not intended to represent any real individual, company, product, or event. Intel products are not intended for use in medical, life saving, life sustaining, critical control or safety systems, or in nuclear facility applications. Intel, the Intel logo, Celeron, Intel Centrino, Intel NetBurst, Intel Xeon, Itanium, Pentium, MMX, and VTune are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States and other countries.
    [Show full text]
  • FUJITSU AI Zinrai Deep Learning System 200M/210H Software License Terms
    FUJITSU AI Zinrai Deep Learning System 200M/210H Software License Terms Copyright 2021 FUJITSU LIMITED P3KD-1962-01EN 1. NVIDIA Product License Terms This product uses the following NVIDIA products. Name Version Tesla Driver for Linux x64 460.73.01 cuDNN 8.2.2 These NVIDIA products can be downloaded from the NVIDIA home page. http://www.nvidia.com/page/home.html Regarding the terms and conditions of the license for Tesla Driver for Linux x64 460.73.01, see "END USER LICENSE AGREEMENTS (EULA)" in the Appendix. Regarding the terms and conditions of the license for cuDNN 8.2.2, see "NVIDIA SOFTWARE LICENSE AGREEMENT" in the Appendix. 2. NGC Software This product contains the open source software ("OSS") as described in this document. The license terms for each OSS are as described below. • PyTorch 1.9.0 From PyTorch: Copyright (c) 2016- Facebook, Inc (Adam Paszke) Copyright (c) 2014- Facebook, Inc (Soumith Chintala) Copyright (c) 2011-2014 Idiap Research Institute (Ronan Collobert) Copyright (c) 2012-2014 Deepmind Technologies (Koray Kavukcuoglu) Copyright (c) 2011-2012 NEC Laboratories America (Koray Kavukcuoglu) Copyright (c) 2011-2013 NYU (Clement Farabet) Copyright (c) 2006-2010 NEC Laboratories America (Ronan Collobert, Leon Bottou, Iain Melvin, Jason Weston) Copyright (c) 2006 Idiap Research Institute (Samy Bengio) Copyright (c) 2001-2004 Idiap Research Institute (Ronan Collobert, Samy Bengio, Johnny Mariethoz) From Caffe2: Copyright (c) 2016-present, Facebook Inc. All rights reserved. All contributions by Facebook: Copyright (c) 2016 Facebook Inc. All contributions by Google: Copyright (c) 2015 Google Inc. All rights reserved. All contributions by Yangqing Jia: Copyright (c) 2015 Yangqing Jia All rights reserved.
    [Show full text]
  • Embedded Linux Systems with the Yocto Project™
    OPEN SOURCE SOFTWARE DEVELOPMENT SERIES Embedded Linux Systems with the Yocto Project" FREE SAMPLE CHAPTER SHARE WITH OTHERS �f, � � � � Embedded Linux Systems with the Yocto ProjectTM This page intentionally left blank Embedded Linux Systems with the Yocto ProjectTM Rudolf J. Streif Boston • Columbus • Indianapolis • New York • San Francisco • Amsterdam • Cape Town Dubai • London • Madrid • Milan • Munich • Paris • Montreal • Toronto • Delhi • Mexico City São Paulo • Sidney • Hong Kong • Seoul • Singapore • Taipei • Tokyo Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in this book, and the publisher was aware of a trademark claim, the designations have been printed with initial capital letters or in all capitals. The author and publisher have taken care in the preparation of this book, but make no expressed or implied warranty of any kind and assume no responsibility for errors or omissions. No liability is assumed for incidental or consequential damages in connection with or arising out of the use of the information or programs contained herein. For information about buying this title in bulk quantities, or for special sales opportunities (which may include electronic versions; custom cover designs; and content particular to your business, training goals, marketing focus, or branding interests), please contact our corporate sales depart- ment at [email protected] or (800) 382-3419. For government sales inquiries, please contact [email protected]. For questions about sales outside the U.S., please contact [email protected]. Visit us on the Web: informit.com Cataloging-in-Publication Data is on file with the Library of Congress.
    [Show full text]
  • Riscv-Software-Stack-Tutorial-Hpca2015
    Software Tools Bootcamp RISC-V ISA Tutorial — HPCA-21 08 February 2015 Albert Ou UC Berkeley [email protected] Preliminaries To follow along, download these slides at http://riscv.org/tutorial-hpca2015.html 2 Preliminaries . Shell commands are prefixed by a “$” prompt. Due to time constraints, we will not be building everything from source in real-time. - Binaries have been prepared for you in the VM image. - Detailed build steps are documented here for completeness but are not necessary if using the VM. Interactive portions of this tutorial are denoted with: $ echo 'Hello world' . Also as a reminder, these slides are marked with an icon in the upper-right corner: 3 Software Stack . Many possible combinations (and growing) . But here we will focus on the most common workflows for RISC-V software development 4 Agenda 1. riscv-tools infrastructure 2. First Steps 3. Spike + Proxy Kernel 4. QEMU + Linux 5. Advanced Cross-Compiling 6. Yocto/OpenEmbedded 5 riscv-tools — Overview “Meta-repository” with Git submodules for every stable component of the RISC-V software toolchain Submodule Contents riscv-fesvr RISC-V Frontend Server riscv-isa-sim Functional ISA simulator (“Spike”) riscv-qemu Higher-performance ISA simulator riscv-gnu-toolchain binutils, gcc, newlib, glibc, Linux UAPI headers riscv-llvm LLVM, riscv-clang submodule riscv-pk RISC-V Proxy Kernel (riscv-linux) Linux/RISC-V kernel port riscv-tests ISA assembly tests, benchmark suite All listed submodules are hosted under the riscv GitHub organization: https://github.com/riscv 6 riscv-tools — Installation . Build riscv-gnu-toolchain (riscv*-*-elf / newlib target), riscv-fesvr, riscv-isa-sim, and riscv-pk: (pre-installed in VM) $ git clone https://github.com/riscv/riscv-tools $ cd riscv-tools $ git submodule update --init --recursive $ export RISCV=<installation path> $ export PATH=${PATH}:${RISCV}/bin $ ./build.sh .
    [Show full text]
  • Operating Systems and Applications for Embedded Systems >>> Toolchains
    >>> Operating Systems And Applications For Embedded Systems >>> Toolchains Name: Mariusz Naumowicz Date: 31 sierpnia 2018 [~]$ _ [1/19] >>> Plan 1. Toolchain Toolchain Main component of GNU toolchain C library Finding a toolchain 2. crosstool-NG crosstool-NG Installing Anatomy of a toolchain Information about cross-compiler Configruation Most interesting features Sysroot Other tools POSIX functions AP [~]$ _ [2/19] >>> Toolchain A toolchain is the set of tools that compiles source code into executables that can run on your target device, and includes a compiler, a linker, and run-time libraries. [1. Toolchain]$ _ [3/19] >>> Main component of GNU toolchain * Binutils: A set of binary utilities including the assembler, and the linker, ld. It is available at http://www.gnu.org/software/binutils/. * GNU Compiler Collection (GCC): These are the compilers for C and other languages which, depending on the version of GCC, include C++, Objective-C, Objective-C++, Java, Fortran, Ada, and Go. They all use a common back-end which produces assembler code which is fed to the GNU assembler. It is available at http://gcc.gnu.org/. * C library: A standardized API based on the POSIX specification which is the principle interface to the operating system kernel from applications. There are several C libraries to consider, see the following section. [1. Toolchain]$ _ [4/19] >>> C library * glibc: Available at http://www.gnu.org/software/libc. It is the standard GNU C library. It is big and, until recently, not very configurable, but it is the most complete implementation of the POSIX API. * eglibc: Available at http://www.eglibc.org/home.
    [Show full text]
  • Linux Journal | February 2016 | Issue
    ™ A LOOK AT KDE’s KStars Astronomy Program Since 1994: The Original Magazine of the Linux Community FEBRUARY 2016 | ISSUE 262 | www.linuxjournal.com + Programming Working with Command How-Tos Arguments in Your Program a Shell Scripts BeagleBone Interview: Katerina Black Barone-Adesi on to Help Brew Beer Developing the Snabb Switch Network Write a Toolkit Short Script to Solve a WATCH: ISSUE Math Puzzle OVERVIEW V LJ262-February2016.indd 1 1/21/16 5:26 PM NEW! Agile Improve Product Business Development Processes with an Enterprise Practical books Author: Ted Schmidt Job Scheduler for the most technical Sponsor: IBM Author: Mike Diehl Sponsor: people on the planet. Skybot Finding Your DIY Way: Mapping Commerce Site Your Network Author: to Improve Reuven M. Lerner Manageability GEEK GUIDES Sponsor: GeoTrust Author: Bill Childers Sponsor: InterMapper Combating Get in the Infrastructure Fast Lane Sprawl with NVMe Author: Author: Bill Childers Mike Diehl Sponsor: Sponsor: Puppet Labs Silicon Mechanics & Intel Download books for free with a Take Control Linux in simple one-time registration. of Growing the Time Redis NoSQL of Malware http://geekguide.linuxjournal.com Server Clusters Author: Author: Federico Kereki Reuven M. Lerner Sponsor: Sponsor: IBM Bit9 + Carbon Black LJ262-February2016.indd 2 1/21/16 5:26 PM NEW! Agile Improve Product Business Development Processes with an Enterprise Practical books Author: Ted Schmidt Job Scheduler for the most technical Sponsor: IBM Author: Mike Diehl Sponsor: people on the planet. Skybot Finding Your DIY Way: Mapping Commerce Site Your Network Author: to Improve Reuven M. Lerner Manageability GEEK GUIDES Sponsor: GeoTrust Author: Bill Childers Sponsor: InterMapper Combating Get in the Infrastructure Fast Lane Sprawl with NVMe Author: Author: Bill Childers Mike Diehl Sponsor: Sponsor: Puppet Labs Silicon Mechanics & Intel Download books for free with a Take Control Linux in simple one-time registration.
    [Show full text]
  • Designing PCI Cards and Drivers for Power Macintosh Computers
    Designing PCI Cards and Drivers for Power Macintosh Computers Revised Edition Revised 3/26/99 Technical Publications © Apple Computer, Inc. 1999 Apple Computer, Inc. Adobe, Acrobat, and PostScript are Even though Apple has reviewed this © 1995, 1996 , 1999 Apple Computer, trademarks of Adobe Systems manual, APPLE MAKES NO Inc. All rights reserved. Incorporated or its subsidiaries and WARRANTY OR REPRESENTATION, EITHER EXPRESS OR IMPLIED, WITH No part of this publication may be may be registered in certain RESPECT TO THIS MANUAL, ITS reproduced, stored in a retrieval jurisdictions. QUALITY, ACCURACY, system, or transmitted, in any form America Online is a service mark of MERCHANTABILITY, OR FITNESS or by any means, mechanical, Quantum Computer Services, Inc. FOR A PARTICULAR PURPOSE. AS A electronic, photocopying, recording, Code Warrior is a trademark of RESULT, THIS MANUAL IS SOLD “AS or otherwise, without prior written Metrowerks. IS,” AND YOU, THE PURCHASER, ARE permission of Apple Computer, Inc., CompuServe is a registered ASSUMING THE ENTIRE RISK AS TO except to make a backup copy of any trademark of CompuServe, Inc. ITS QUALITY AND ACCURACY. documentation provided on Ethernet is a registered trademark of CD-ROM. IN NO EVENT WILL APPLE BE LIABLE Xerox Corporation. The Apple logo is a trademark of FOR DIRECT, INDIRECT, SPECIAL, FrameMaker is a registered Apple Computer, Inc. INCIDENTAL, OR CONSEQUENTIAL trademark of Frame Technology Use of the “keyboard” Apple logo DAMAGES RESULTING FROM ANY Corporation. (Option-Shift-K) for commercial DEFECT OR INACCURACY IN THIS purposes without the prior written Helvetica and Palatino are registered MANUAL, even if advised of the consent of Apple may constitute trademarks of Linotype-Hell AG possibility of such damages.
    [Show full text]
  • Chapter 1. Origins of Mac OS X
    1 Chapter 1. Origins of Mac OS X "Most ideas come from previous ideas." Alan Curtis Kay The Mac OS X operating system represents a rather successful coming together of paradigms, ideologies, and technologies that have often resisted each other in the past. A good example is the cordial relationship that exists between the command-line and graphical interfaces in Mac OS X. The system is a result of the trials and tribulations of Apple and NeXT, as well as their user and developer communities. Mac OS X exemplifies how a capable system can result from the direct or indirect efforts of corporations, academic and research communities, the Open Source and Free Software movements, and, of course, individuals. Apple has been around since 1976, and many accounts of its history have been told. If the story of Apple as a company is fascinating, so is the technical history of Apple's operating systems. In this chapter,[1] we will trace the history of Mac OS X, discussing several technologies whose confluence eventually led to the modern-day Apple operating system. [1] This book's accompanying web site (www.osxbook.com) provides a more detailed technical history of all of Apple's operating systems. 1 2 2 1 1.1. Apple's Quest for the[2] Operating System [2] Whereas the word "the" is used here to designate prominence and desirability, it is an interesting coincidence that "THE" was the name of a multiprogramming system described by Edsger W. Dijkstra in a 1968 paper. It was March 1988. The Macintosh had been around for four years.
    [Show full text]
  • University of Cape Town Declaration
    The copyright of this thesis vests in the author. No quotation from it or information derived from it is to be published without full acknowledgementTown of the source. The thesis is to be used for private study or non- commercial research purposes only. Cape Published by the University ofof Cape Town (UCT) in terms of the non-exclusive license granted to UCT by the author. University Automated Gateware Discovery Using Open Firmware Shanly Rajan Supervisor: Prof. M.R. Inggs Co-supervisor: Dr M. Welz University of Cape Town Declaration I understand the meaning of plagiarism and declare that all work in the dissertation, save for that which is properly acknowledged, is my own. It is being submitted for the degree of Master of Science in Engineering in the University of Cape Town. It has not been submitted before for any degree or examination in any other university. Signature of Author . Cape Town South Africa May 12, 2013 University of Cape Town i Abstract This dissertation describes the design and implementation of a mechanism that automates gateware1 device detection for reconfigurable hardware. The research facilitates the pro- cess of identifying and operating on gateware images by extending the existing infrastruc- ture of probing devices in traditional software by using the chosen technology. An automated gateware detection mechanism was devised in an effort to build a software system with the goal to improve performance and reduce software development time spent on operating gateware pieces by reusing existing device drivers in the framework of the chosen technology. This dissertation first investigates the system design to see how each of the user specifica- tions set for the KAT (Karoo Array Telescope) project in [28] could be achieved in terms of design decisions, toolchain selection and software modifications.
    [Show full text]
  • Compiler Construction
    Compiler Construction Chapter 11 Compiler Construction Compiler Construction 1 A New Compiler • Perhaps a new source language • Perhaps a new target for an existing compiler • Perhaps both Compiler Construction Compiler Construction 2 Source Language • Larger, more complex languages generally require larger, more complex compilers • Is the source language expected to evolve? – E.g., Java 1.0 ! Java 1.1 ! . – A brand new language may undergo considerable change early on – A small working prototype may be in order – Compiler writers must anticipate some amount of change and their design must therefore be flexible – Lexer and parser generators (like Lex and Yacc) are therefore better than hand- coding the lexer and parser when change is inevitable Compiler Construction Compiler Construction 3 Target Language • The nature of the target language and run-time environment influence compiler construction considerably • A new processor and/or its assembler may be buggy Buggy targets make it difficult to debug compilers for that target! • A successful source language will persist over several target generations – E.g., 386 ! 486 ! Pentium ! . – Thus the design of the IR is important – Modularization of machine-specific details is also important Compiler Construction Compiler Construction 4 Compiler Performance Issues • Compiler speed • Generated code quality • Error diagnostics • Portability • Maintainability Compiler Construction Compiler Construction 5 Compiler Speed • Reduce the number of modules • Reduce the number of passes Perhaps generate machine
    [Show full text]
  • Betrfs: a Right-Optimized Write-Optimized File System
    BetrFS: A Right-Optimized Write-Optimized File System William Jannen, Jun Yuan, Yang Zhan, Amogh Akshintala, Stony Brook University; John Esmet, Tokutek Inc.; Yizheng Jiao, Ankur Mittal, Prashant Pandey, and Phaneendra Reddy, Stony Brook University; Leif Walsh, Tokutek Inc.; Michael Bender, Stony Brook University; Martin Farach-Colton, Rutgers University; Rob Johnson, Stony Brook University; Bradley C. Kuszmaul, Massachusetts Institute of Technology; Donald E. Porter, Stony Brook University https://www.usenix.org/conference/fast15/technical-sessions/presentation/jannen This paper is included in the Proceedings of the 13th USENIX Conference on File and Storage Technologies (FAST ’15). February 16–19, 2015 • Santa Clara, CA, USA ISBN 978-1-931971-201 Open access to the Proceedings of the 13th USENIX Conference on File and Storage Technologies is sponsored by USENIX BetrFS: A Right-Optimized Write-Optimized File System William Jannen, Jun Yuan, Yang Zhan, Amogh Akshintala, John Esmet∗, Yizheng Jiao, Ankur Mittal, Prashant Pandey, Phaneendra Reddy, Leif Walsh∗, Michael Bender, Martin Farach-Colton†, Rob Johnson, Bradley C. Kuszmaul‡, and Donald E. Porter Stony Brook University, ∗Tokutek Inc., †Rutgers University, and ‡Massachusetts Institute of Technology Abstract (microwrites). Examples include email delivery, creat- The Bε -tree File System, or BetrFS, (pronounced ing lock files for an editing application, making small “better eff ess”) is the first in-kernel file system to use a updates to a large file, or updating a file’s atime. The un- write-optimized index. Write optimized indexes (WOIs) derlying problem is that many standard data structures in are promising building blocks for storage systems be- the file-system designer’s toolbox optimize for one case cause of their potential to implement both microwrites at the expense of another.
    [Show full text]