RISC-V Poster Preview

Total Page:16

File Type:pdf, Size:1020Kb

RISC-V Poster Preview RISC-V Poster Preview 7th RISC-V Workshop End-to-end formal ISA verification of RISC-V processors with riscv-formal ● Framework for formally verifying RISC-V processor cores ● Only requires Open Source tools (Yosys, ABC, Yices2, etc.) ● Every core that implements the RVFI trace port is supported (can easily be added to existing cores) ● End-to-end ISA verification is hard. We break the problem down into 100+ small problems that can be proven independently. This yields a tractable formal verification problem. ● Monitor core for tandem verification using same formal spec and RVFI trace port is available. ● Is being used to formally verify real-world processors right now (not vapourware, not just for “academic toy processors”) − https://github.com/cliffordwolf/riscv-formal Results, Status, Future Work ● Found bugs in ● Future Work − RISC-V Rocket − Atomics − PicoRV32 − F/D/Q support − Spike (riscv-isa-sim) − Priv. Spec, CSRs − The prose ISA Spec − Better support for non-free flows − Verification of other ● Currently supports RISC-V formal specs − RV32 / RV64 − More cores − C extension − M extension Power Matters.TM MicroPython Port for RISC-V soft Processor Badal Nilawar © 2015 Microsemi Corporation. 4 MicroPython (RISCV) Software Architecture ▪ Microsemi ported MicroPython on RISCV ▪ Porting activity involves ▪ Startup code ▪ RISCV HAL integration ▪ Tool chain ▪ Driver porting ▪ Features ▪ Machine modules like Pin, mtime ▪ REPL ▪ Advanced Math Library ▪ Soft Float ▪ Features Planned ▪ SPI, I2C, Ethernet ▪ Multi Threading ▪ File system support ▪ Distributing on Github TM © 2015 Microsemi Corporation. Power Matters. 5 Century Gothic Slide Title – 36pt Century Gothic Subhead – 24pt Century Gothic Content Title – 24pt Century Gothic Content Text – 20pt Century Gothic Compare Heading – 18pt Century Gothic Image Caption – 16pt Century Gothic Table Text & Caption Text – 14pt Micriµm The larger text sizes have condensed spacing, between 1.5 and 0.5 pt. Presentation Colors Jean J. Labrosse R:137 G:137 B:137 Founder and Chief Software Architect R:88 G:88 B:88 [email protected] R:244 G:146 B:45 R:17 G:59 B:149 R:12 G:35 B:83 Century Gothic Slide Title – 36pt Century Gothic Subhead – 24pt Leading Embedded RTOS and Century Gothic Content Title – 24pt Century Gothic Content Text – 20pt Stacks Century Gothic Compare Heading – 18pt Tools Century Gothic Image Caption – 16pt RTOS IAR, Keil, GNU, Other Century Gothic Table Text & Caption Text – 14pt µC/OS-II or µC/OS-III The larger text sizes have condensed spacing, between 1.5 and 0.5 pt. µC/Probe Stacks µC/FS Presentation Colors µC/TCP-IP (IPv4 and IPv6) µC/CAN R:137 G:137 B:137 SystemView µC/USB-H and µC/USB-H µC/GUI R:88 G:88 B:88 µC/Modbus R:244 G:146 B:45 Tracealyzer R:17 G:59 B:149 R:12 G:35 B:83 Century Gothic Slide Title – 36pt Century Gothic Subhead – 24pt Century Gothic Content Title – 24pt RTOS (µC/OS-II and µC/OS-III) Century Gothic Content Text – 20pt Century Gothic Compare Heading – 18pt • Professional Grade, Fully Supported Century Gothic Image Caption – 16pt • Ported to over 45 CPU architectures Century Gothic Table Text & Caption Text – 14pt • Certified in numerous verticals: The larger text sizes have condensed – Avionics spacing, between 1.5 and 0.5 pt. – Medical – Industrial – Nuclear Presentation Colors • µC/OS-II on Mars Curiosity Rover R:137 G:137 B:137 • Books by MicriµmPress: R:88 G:88 B:88 – 7 on µC/OS-III – 5 on µC/TCP-IP R:244 G:146 B:45 – 1 on µC/USB-D R:17 G:59 B:149 R:12 G:35 B:83 Century Gothic Slide Title – 36pt Century Gothic Subhead – 24pt Century Gothic Content Title – 24pt µC/OS-II / µC/OS-III and the RISC-V Century Gothic Content Text – 20pt Century Gothic Compare Heading – 18pt • Ported onto the Microsemi Creative Board Century Gothic Image Caption – 16pt – SoftConsole Century Gothic Table Text & Caption Text – 14pt The larger text sizes have condensed spacing, between 1.5 and 0.5 pt. Presentation Colors R:137 G:137 B:137 R:88 G:88 B:88 • Available soon on: – Digilent ARTY Artix-7 FPGA Dev Board with Segger Embedded Studio and R:244 G:146 B:45 J-Link R:17 G:59 B:149 R:12 G:35 B:83 Power Matters.TM Enabling Safe Crypto Using RISC-V Soft Processor Sathish Odiga © 2017 Microsemi Corporation. Company Proprietary 10 Introduction ▪ Microsemi PolarFire® FPGAs represent the industry’s most advanced secure programmable FPGAs. • Built-in Athena's TeraFire® crypto processor supports the CNSA suite and beyond, and includes side-channel analysis resistant countermeasures. ▪ RISC-V soft processor is a perfect complement to the PolarFire FPGAs for building secure and reliable systems. • Open-source RISC-V ISA enables application-specific processor implementations • Unlike competing processors, the RISC-V processors allow inspection of the RTL to build trust on the processor implementation. ▪ Secure boot is the starting point for implementing secure systems • Process of guaranteeing that the boot code and all subsequent codes are authentic is called Secure Boot. • PolarFire FPGAs have built-in security capabilities to support secure boot of soft RISC-V processor TM © 2017 Microsemi Corporation. Company Proprietary Power Matters. 11 Secure Boot RISC-V Processor PolarFire FPGA 1. At power-up, System Controller copies authenticated bootloader reset from sNVM to SRAM. reset MiV_RV32IMA_L1_AHB init_done (RISC-V CPU) AHB_MST_MEM AHB_MST_MMIO 2. Processor executes the bootloader from SRAM. AXI Interconnect Bus 3. Bootloader fetches the application keys from sNVM. AHBL Bus SPI System DDR SRAM Slash Controller Controller 4. Bootloader commands Crypto (Encrypted and Processor for application signed Application) Crypto Processor authentication and decryption. sNVM System Services 5. Bootloader copies the (Trusted Bootloader and Keys) (Protected by SRAM-PUF) authenticated application from SPI Flash to DRAM and DDR executes it. Memory TM © 2017 Microsemi Corporation. Company Proprietary Power Matters. 12 Power Matters.TM RISC-V based Lockstep Processor Implementation Sathish Odiga © 2017 Microsemi Corporation. Company Proprietary 13 Motivation ▪ Increasing levels of automation driving broader adoption of safety-critical systems • Systems must function correctly in order to avoid hazardous situations • Faults must be detected and controlled ▪ Safety-critical systems heavily rely on embedded processors • Need methodologies for fault detection due to random faults in the embedded processor. ▪ Lockstep processor provides real-time diagnostics using an additional slave processor and a comparator. • Two identical processors run in lockstep with address, data and controls compared for consistency. • Temporal and spatial separation of cores increases reliability ▪ Flash FPGAs are attractive in safety-critical applications • Flexibility to implement custom hardware • Built-in security and reliability features TM Power Matters. 14 © 2017 Microsemi Corporation. Company Proprietary Dual-core Lockstep Processor Demo TM © 2017 Microsemi Corporation. Company Proprietary Power Matters. 15 An Engines Extension for RISC-V Eric L. McCorkle Overview of the Extension Provides a mechanism for fast access to specialized functional units and (some) devices without crossing privilege levels ● Allows interaction with engine resources by the regular pipeline ● Can be used for specialized functional units, also devices ● Engines bound to engine handles prior to use ● Engines have states to control resource usage, aid virtualization ● Virtualization through suspend/resume capability ● Security through ownership/access masks History of the Extension ● Originated as an attempt to design a crypto extension ● “Crypto engines” envisioned as special functional units to decouple instructions from specific algorithms ● States and transitions emerged as a way to allow for automation injection of pseudo-ops to “fuzz” side-channels ● Discussions on the isa-dev list led to improvements ● DMA capabilities accounted for (no modification needed) ● At this point, the extension could potentially function as an I/O instruction set Cloud-Based RISC-V SoC design and Co-simulation Mohamed Shalan, American University Cairo (Presented by Sam Steffl, Brown Univ) Mohamed Shalan, Ph.D., Ahmed Agiza, Ahmed ElShafey, Karim Hasebou, Mohamed Gaber, Veronia Bahaa The American University in Cairo Sherief Reda, Ph.D. -- Brown University Presenter: Samuel Steffl – Brown University • • • An online digital design platform with RISC-V at the core. dwarfRV32: A small footprint RV32I CPU SoC Editor: An online rule-based editor using dwarfRV32 Beekeeper: A bus functional model/debugger leveraging the Verilog Procedural Interface DBT-RISE: Addressing the RISC-V VP Challenge Eyck Jentzsch Wolf-Ekkehard Matzke DBT-RISE RISC-V Start SW development even before having RTL or silicon Dynamic Binary Translation - Retargetable ISS Environment VM ARCH ADAPTER GDB SERVER HiFive1 UARTUART GPIO SPI PWM RAM PLIC Available as Open Source system environment/test bench Professional Services on request th Page ▪ 26 7 RISC-V Workshop – Eyck Jentzsch, Wolf-Ekkehard Matzke DBT-RISE Focus on Development driven by real-world • Performance customer requirements • Easy integration • Straightforward generation of • Accuracy ISSs • Adaptability & Extensibility • Convenient VP authoring • Considerable flexibility Applied to RISC-V to foster VP development ➔ Demo: HiFive 1 th Page ▪ 27 7 RISC-V Workshop – Eyck Jentzsch, Wolf-Ekkehard Matzke contact address phones online MINRES Technologies GmbH phone +49-89-67807688 www.minres.com Keltenhof 2 fax +49-89-67807689 github.com/minres/
Recommended publications
  • Micropython for Satlink 3 Documentation Release 1.8.4
    MicroPython for Satlink 3 Documentation Release 1.8.4 Damien P. George, contributors, and Sutron Corporation Jul 28, 2017 CONTENTS 1 Python first time setup & configuration1 1.1 1. Download & Install LinkComm....................................1 1.2 2. Download & Install Python......................................1 1.3 3. Download & Install Pyinstaller....................................3 1.4 4. Download & Install PyCharm.....................................3 1.5 5. Testing out .py to .exe converter....................................5 1.6 6. Python PyQt5 GUI..........................................6 1.7 7. Connect PyCharm into external programs like linkcomm or micropython..............6 1.8 8. Configure PyCharm for program development using LinkComm..................9 1.9 9. Configure PyCharm with SL3 API for auto completion....................... 11 1.10 10. Setting docstring stub in PyCharm.................................. 13 2 MicroPython libraries 15 2.1 Python standard libraries and micro-libraries.............................. 15 2.2 MicroPython-specific libraries...................................... 16 2.3 Libraries specific to the Satlink 3.................................... 19 3 The MicroPython language 39 3.1 Overview of MicroPython Differences from Standard Python..................... 39 3.2 Code examples of how MicroPython differs from Standard Python with work-arounds........ 41 3.3 The MicroPython Interactive Interpreter Mode (aka REPL)....................... 56 3.4 Maximising Python Speed.......................................
    [Show full text]
  • Setting up Your Environment
    APPENDIX A Setting Up Your Environment Choosing the correct tools to work with asyncio is a non-trivial choice, since it can significantly impact the availability and performance of asyncio. In this appendix, we discuss the interpreter and the packaging options that influence your asyncio experience. The Interpreter Depending on the API version of the interpreter, the syntax of declaring coroutines change and the suggestions considering API usage change. (Passing the loop parameter is considered deprecated for APIs newer than 3.6, instantiating your own loop should happen only in rare circumstances in Python 3.7, etc.) Availability Python interpreters adhere to the standard in varying degrees. This is because they are implementations/manifestations of the Python language specification, which is managed by the PSF. At the time of this writing, three relevant interpreters support at least parts of asyncio out of the box: CPython, MicroPython, and PyPy. © Mohamed Mustapha Tahrioui 2019 293 M. M. Tahrioui, asyncio Recipes, https://doi.org/10.1007/978-1-4842-4401-2 APPENDIX A SeTTinG Up YouR EnViROnMenT Since we are ideally interested in a complete or semi-complete implementation of asyncio, our choice is limited to CPython and PyPy. Both of these products have a great community. Since we are ideally using a lot powerful stdlib features, it is inevitable to pose the question of implementation completeness of a given interpreter with respect to the Python specification. The CPython interpreter is the reference implementation of the language specification and hence it adheres to the largest set of features in the language specification. At the point of this writing, CPython was targeting API version 3.7.
    [Show full text]
  • Python Crypto Misuses in the Wild
    Python Crypto Misuses in the Wild Anna-Katharina Wickert Lars Baumgärtner [email protected] [email protected] Technische Universität Darmstadt Technische Universität Darmstadt Darmstadt, Germany Darmstadt, Germany Florian Breitfelder Mira Mezini [email protected] [email protected] Technische Universität Darmstadt Technische Universität Darmstadt Darmstadt, Germany Darmstadt, Germany ABSTRACT 1 INTRODUCTION Background: Previous studies have shown that up to 99.59 % of the Cryptography, hereafter crypto, is widely used nowadays to protect Java apps using crypto APIs misuse the API at least once. However, our data and ensure confidentiality. For example, without crypto, these studies have been conducted on Java and C, while empirical we would not be able to securely use online banking or do online studies for other languages are missing. For example, a controlled shopping. Unfortunately, previous research results show that crypto user study with crypto tasks in Python has shown that 68.5 % of the is often used in an insecure way [3, 4, 7, 9, 11]. One such problem is professional developers write a secure solution for a crypto task. the choice of an insecure parameter, like an insecure block mode, for Aims: To understand if this observation holds for real-world code, crypto primitives like encryption. Many static analysis tools exist we conducted a study of crypto misuses in Python. Method: We to identify these misuses such as CryptoREX [13], CryptoLint [4], developed a static analysis tool that covers common misuses of5 CogniCryptSAST [8], and Cryptoguard [12]. different Python crypto APIs. With this analysis, we analyzed 895 While these tools and the respective in-the-wild studies concen- popular Python projects from GitHub and 51 MicroPython projects trate on Java and C, user studies suggest that the existing Python for embedded devices.
    [Show full text]
  • How Python Is Winning New Friends
    How Python is Winning New Friends Steve Holden CTO, Global Stress Index Limited [email protected] IntroducFons • Programmer since 1967 • Computaonal scienFst by training • Engineer at heart • Python user since Python 1.4 (c. 1995) • Enjoy helping people to learn I’ve WriSen about Python Any Python users out there? Developments in CompuFng SOME HISTORY 1948 Programming Was Hard • No operang system • No libraries • No compilers • No assemblers • The painful process of abstracFon layering began 1977 Easier to Program • Assemblers/compilers available • UNIX starFng to emerge as a common base – Microprogramming handled hardware complexity • Storage flexibly handled by the OS • Networking heading to ubiquity 1984 2015 2016 2017 2020 ? Whatever it is, it will be complex! And so to Python “BUT IT’S [JUST] A SCRIPTING LANGUAGE …” What’s a “ScripFng Language”? • “First they ignore you; then they abuse you; then they crack down on you and then you win.” – not Mahatma Ghandi What’s a “ScripFng Language”? • “First they ignore you; then they abuse you; then they crack down on you and then you win.” – not Mahatma Ghandi • “Ridicule is like repression. Both give place to respect when they fail to produce the intended effect.” – Mahatma Ghandi Note to Purists • Learners do not have complex needs – Simplicity and consistency are important – ExecuFon speed mostly isn’t • Direct hands-on experience enables • Large resources not required – Wide availability and ease of access are criFcal The Programming Audience • Professional soiware engineers • ScienFsts • Lab
    [Show full text]
  • Pdf for a Detailed Explanation, Along with Various Techniques for Debouncing
    MicroPython Documentation Release 1.11 Damien P. George, Paul Sokolovsky, and contributors May 29, 2019 CONTENTS i ii CHAPTER ONE MICROPYTHON LIBRARIES Warning: Important summary of this section • MicroPython implements a subset of Python functionality for each module. • To ease extensibility, MicroPython versions of standard Python modules usually have u (“micro”) prefix. • Any particular MicroPython variant or port may miss any feature/function described in this general docu- mentation (due to resource constraints or other limitations). This chapter describes modules (function and class libraries) which are built into MicroPython. There are a few categories of such modules: • Modules which implement a subset of standard Python functionality and are not intended to be extended by the user. • Modules which implement a subset of Python functionality, with a provision for extension by the user (via Python code). • Modules which implement MicroPython extensions to the Python standard libraries. • Modules specific to a particular MicroPython port and thus not portable. Note about the availability of the modules and their contents: This documentation in general aspires to describe all modules and functions/classes which are implemented in MicroPython project. However, MicroPython is highly configurable, and each port to a particular board/embedded system makes available only a subset of MicroPython libraries. For officially supported ports, there is an effort to either filter out non-applicable items, or mark individual descriptions with “Availability:” clauses describing which ports provide a given feature. With that in mind, please still be warned that some functions/classes in a module (or even the entire module) described in this documentation may be unavailable in a particular build of MicroPython on a particular system.
    [Show full text]
  • Bringing Python to Godot
    Bringing Python to Godot 01/02/2020 Emmanuel Leblond - https://github.com/touilleMan/godot-python Godot ? Open source (MIT) Full featured Linux support ❤❤❤ Demo time ! Godot: dynamic from the ground class Node2D : public Node { godot/node2d.hpp GDCLASS(Node2D, Node); void set_rot(float p_angle); float get_rot() const; ... void _bind_methods() { ClassDB::bind_method(D_METHOD("get_rot"), &Node2D::get_rot); ClassDB::bind_method(D_METHOD("set_rot", "degrees"), &Node2D::set_rot); ... } } Godot: dynamic from the ground class Node2D : public Node { godot/node2d.hpp GDCLASS(Node2D, Node); void set_rot(float p_angle); float get_rot() const; ... void _bind_methods() { ClassDB::bind_method(D_METHOD("get_rot"), &Node2D::get_rot); ClassDB::bind_method(D_METHOD("set_rot", "degrees"), &Node2D::set_rot); ... } } Godot: dynamic from the ground class Node2D : public Node { godot/node2d.hpp GDCLASS(Node2D, Node); void set_rot(float p_angle); float get_rot() const; ... void _bind_methods() { ClassDB::bind_method(D_METHOD("get_rot"), &Node2D::get_rot); ClassDB::bind_method(D_METHOD("set_rot", "degrees"), &Node2D::set_rot); ... } } # C++ static traditional way Node2D *obj = new Node2D(); obj->set_ret(4.2); Godot: dynamic from the ground class Node2D : public Node { godot/node2d.hpp GDCLASS(Node2D, Node); void set_rot(float p_angle); float get_rot() const; ... void _bind_methods() { ClassDB::bind_method(D_METHOD("get_rot"), &Node2D::get_rot); ClassDB::bind_method(D_METHOD("set_rot", "degrees"), &Node2D::set_rot); ... } } # C++ static traditional way # C++ Dynamic
    [Show full text]
  • Micropython Documentation Release 1.10 Damien P. George, Paul
    MicroPython Documentation Release 1.10 Damien P. George, Paul Sokolovsky, and contributors Jan 25, 2019 CONTENTS 1 MicroPython libraries 1 1.1 Python standard libraries and micro-libraries..............................2 1.1.1 Builtin functions and exceptions................................2 1.1.2 array – arrays of numeric data................................5 1.1.3 cmath – mathematical functions for complex numbers....................5 1.1.4 gc – control the garbage collector...............................6 1.1.5 math – mathematical functions................................7 1.1.6 sys – system specific functions................................9 1.1.7 ubinascii – binary/ASCII conversions........................... 11 1.1.8 ucollections – collection and container types...................... 11 1.1.9 uerrno – system error codes................................. 12 1.1.10 uhashlib – hashing algorithms............................... 13 1.1.11 uheapq – heap queue algorithm................................ 14 1.1.12 uio – input/output streams................................... 14 1.1.13 ujson – JSON encoding and decoding............................ 16 1.1.14 uos – basic “operating system” services............................ 16 1.1.15 ure – simple regular expressions............................... 20 1.1.16 uselect – wait for events on a set of streams........................ 22 1.1.17 usocket – socket module................................... 23 1.1.18 ussl – SSL/TLS module................................... 28 1.1.19 ustruct – pack and unpack
    [Show full text]
  • Sistema Basado En Tecnología 5G De Monitorización Psicoacústica Del Paisaje Sonoro En Smart Cities Con Offloading Computacional Dinámico En El Edge
    SISTEMA BASADO EN TECNOLOGÍA 5G DE MONITORIZACIÓN PSICOACÚSTICA DEL PAISAJE SONORO EN SMART CITIES CON OFFLOADING COMPUTACIONAL DINÁMICO EN EL EDGE Jaume Segura-Garcia1, Santiago Felici-Castell1, Jose M. Alcaraz Calero2, Qi Wang2, Jesús López-Ballester1, Rafael Fayos-Jordán1, Juan J. Pérez-Solano1, Miguel Arana-Burgui3 1 Dpt Informàtica, ETSE – Universitat de València {e-mail: [email protected], [email protected], [email protected], [email protected], [email protected]} 2 School of Computing, Engineering and Physical Sciences – University of the West of Scotland 3 INAMAT – Universidad Pública de Navarra, Spain Resumen En las tecnologías de próxima generación, el control de las molestias por ruido ambiental en una Smart City debería ser lo más eficiente posible. Los sistemas IoT sobre tecnologías 5G ofrecen una gran oportunidad para hacer offloading del cómputo en los nodos sensores, ya que proporciona una serie de nuevos conceptos para el cómputo dinámico que las tecnologías anteriores no ofrecían. En este artículo, se ha implementado un sistema IoT completo basado en tecnología 5G para la monitorización psicoacústica utilizando diferentes opciones para descargar el cómputo a diferentes partes del sistema. Esta descarga se ha realizado mediante el desarrollo de diferentes splittings funcionales de los algoritmos de cálculo de las métricas psicoacústicas. Por último, se muestra una comparación del rendimiento entre los diferentes splittings funcionales y su aplicación con un análisis detallado. Palabras clave: 5G LTE-M1, psicoacústica, monitorización del soundscape, splitting funcional, Smart City. Abstract In the next generation technologies, the environmental noise nuisance monitoring in a Smart City should be as much efficient as possible. 5G IoT systems offer a big opportunity to offload the computation from the sensor nodes, since it provides a series of new concepts for dynamic computing that the previous technologies did not offer.
    [Show full text]
  • Release 1.9.2 Damien P. George, Paul Sokolovsky, and Contributors
    MicroPython Documentation Release 1.9.2 Damien P. George, Paul Sokolovsky, and contributors August 23, 2017 CONTENTS 1 Quick reference for the WiPy1 1.1 General board control (including sleep modes).............................1 1.2 Pins and GPIO..............................................1 1.3 Timers..................................................1 1.4 PWM (pulse width modulation).....................................2 1.5 ADC (analog to digital conversion)...................................2 1.6 UART (serial bus)............................................2 1.7 SPI bus..................................................2 1.8 I2C bus..................................................3 1.9 Watchdog timer (WDT).........................................3 1.10 Real time clock (RTC)..........................................3 1.11 SD card..................................................4 1.12 WLAN (WiFi)..............................................4 1.13 Telnet and FTP server..........................................4 1.14 Heart beat LED..............................................4 2 General information about the WiPy7 2.1 No floating point support.........................................7 2.2 Before applying power..........................................7 2.3 WLAN default behaviour........................................7 2.4 Telnet REPL...............................................7 2.5 Local file system and FTP access....................................7 2.6 FileZilla settings.............................................8 2.7 Upgrading
    [Show full text]
  • Building Micropython with KEIL and Programming with Python on I.MX RT1050/1060 Rev
    AN13242 Building Micropython with KEIL and Programming with Python on i.MX RT1050/1060 Rev. 0 — 27 April, 2021 Application Note Contents 1 Introduction 1 Introduction......................................1 This application note introduces the porting of MicroPython, the packaging of 2 Hardware platform...........................1 2.1 i.MX RT1050/60 crossover peripheral functions, and the adaptation of circuit boards, using the example process........................................ 1 of our work on the i.MX RT1050/1060EVK development board. The code are 2.2 i.MX RT1050/60 EVK board........ 1 mainly written in C language, but are presented to the users as Python modules 3 Micropython.....................................2 and types. You can either evaluate and use MicroPython on this development 3.1 Brief introduction to Python board, or use it to port and adapt your new board design. MicroPython’s native Language.....................................2 project management and build environment is based on GCC and Make under 3.2 Brief introduction to Micropython Linux. To facilitate the development habits of most MCU embedded engineers, .....................................................3 the development environment is also ported to Keil MDK5. 4 Building and running Micropython on i.MX RT1050/1060 EVK.................. 3 The readers are expected to have basic experience of development with KEIL 4.1 Downloading source code........... 3 MDK, knowing what is CMSIS-Pack, the concept of target in KEIL and how to 4.2 Opening project with KEIL
    [Show full text]
  • Or How to Avoid Recoding Your (Entire) Application in Another Language Before You Start
    Speeding up Python Or how to avoid recoding your (entire) application in another language Before you Start ● Most Python projects are “fast enough”. This presentation is not for them. ● Profle your code, to identify the slow parts AKA “hot spots”. ● The results can be surprising at times. ● Don’t bother speeding up the rest of your code. Improving your Python ● Look into using a better algorithm or datastructure next. ● EG: Sorting inside a loop is rarely a good idea, and might be better handled with a tree or SortedDict. Add Caching ● Memorize expensive-to-compute (and recompute) values. ● Can be done relatively easily using functools.lru_cache in 3.2+. Parallelise ● Multicore CPU’s have become common. ● Probably use threading or multiprocessing. Threading ● CPython does not thread CPU-bound tasks well. ● CPython can thread I/O-bound tasks well. ● CPython cannot thread a mix of CPU-bound and I/ O-bound well. ● Jython, IronPython and MicroPython can thread arbitrary workloads well. ● Data lives in the same threaded process. This is good for speed, bad for reliability. Multiprocessing ● Works with most Python implementations. ● Is a bit slower than threading when threading is working well. ● Gives looser coupling than threading, so is easier to “get right”. ● Can pass data from one process to another using shared memory. Numba ● If you’re able to isolate your performance issue to a small number of functions or methods (callables), consider using Numba. ● It’s just a decorator – simple. ● It has “object mode” (which doesn’t help much), and “nopython mode” (which can help a lot, but is more restrictive).
    [Show full text]
  • Python Auf Dem Microcontroller
    Python auf dem Microcontroller Python auf dem Microcontroller Alexander Böhm [email protected] Chemnitzer Linux-Tage, 16. März 2019 Alexander Böhm [email protected] Chemnitzer Linux-Tage, 16. März 2019 1 / 26 Microcontroller-Entwicklung im IoT mehr Leistung mehr eingebaute Geräte energieeffizienter ! mehr Möglichkeiten Verschmelzung von Desktop- und Microcontroller-Welt Python auf dem Microcontroller Einführung Motivation Python ist schnell und einfach Alexander Böhm [email protected] Chemnitzer Linux-Tage, 16. März 2019 2 / 26 mehr eingebaute Geräte energieeffizienter ! mehr Möglichkeiten Verschmelzung von Desktop- und Microcontroller-Welt Python auf dem Microcontroller Einführung Motivation Python ist schnell und einfach Microcontroller-Entwicklung im IoT mehr Leistung Alexander Böhm [email protected] Chemnitzer Linux-Tage, 16. März 2019 2 / 26 energieeffizienter ! mehr Möglichkeiten Verschmelzung von Desktop- und Microcontroller-Welt Python auf dem Microcontroller Einführung Motivation Python ist schnell und einfach Microcontroller-Entwicklung im IoT mehr Leistung mehr eingebaute Geräte Alexander Böhm [email protected] Chemnitzer Linux-Tage, 16. März 2019 2 / 26 ! mehr Möglichkeiten Verschmelzung von Desktop- und Microcontroller-Welt Python auf dem Microcontroller Einführung Motivation Python ist schnell und einfach Microcontroller-Entwicklung im IoT mehr Leistung mehr eingebaute Geräte energieeffizienter Alexander Böhm [email protected] Chemnitzer Linux-Tage, 16. März
    [Show full text]