Misplaced Pages

MicroPython

Article snapshot taken from Wikipedia with creative commons attribution-sharealike license. Give it a read and then ask your questions in the chat. We can research this topic together.

This is an accepted version of this page

#168831

104-514: MicroPython is a software implementation of a programming language largely compatible with Python 3, written in C , that is optimized to run on a microcontroller . MicroPython consists of a Python compiler to bytecode and a runtime interpreter of that bytecode. The user is presented with an interactive prompt (the REPL ) to execute supported commands immediately. Included are a selection of core Python libraries; MicroPython includes modules which give

208-472: A high-level language implementation of Unix made its porting to different computer platforms easier. Due to an earlier antitrust case forbidding it from entering the computer business, AT&T licensed the operating system's source code as a trade secret to anyone who asked. As a result, Unix grew quickly and became widely adopted by academic institutions and businesses. In 1984, AT&T divested itself of its regional operating companies , and

312-424: A minimalist functionality, while more elaborate window managers such as FVWM , Enlightenment , or Window Maker provide more features such as a built-in taskbar and themes , but are still lightweight when compared to desktop environments. Desktop environments include window managers as part of their standard installations, such as Mutter (GNOME), KWin (KDE), or Xfwm (xfce), although users may choose to use

416-527: A provider and accessed over the Internet . The process of developing software involves several stages. The stages include software design , programming , testing , release , and maintenance . Software quality assurance and security are critical aspects of software development, as bugs and security vulnerabilities can lead to system failures and security breaches. Additionally, legal issues such as software licenses and intellectual property rights play

520-505: A solution stack such as LAMP . The source code of Linux may be used, modified, and distributed commercially or non-commercially by anyone under the terms of its respective licenses, such as the GNU General Public License (GPL). The license means creating novel distributions is permitted by anyone and is easier than it would be for an operating system such as MacOS or Microsoft Windows . The Linux kernel, for example,

624-556: A terminal . Linux -based and macOS systems have terminal emulators that can be used to create a direct connection to a MicroPython device's REPL using a serial USB connection. The REPL assists with the immediate testing of parts of an application as each part of the code can be run and the results visually examined. Once different parts of code are loaded into the REPL, additional REPL features can be used to experiment with that code's functionality. Helpful REPL commands (once connected to

728-509: A vulnerability . Software patches are often released to fix identified vulnerabilities, but those that remain unknown ( zero days ) as well as those that have not been patched are still liable for exploitation. Vulnerabilities vary in their ability to be exploited by malicious actors, and the actual risk is dependent on the nature of the vulnerability as well as the value of the surrounding system. Although some vulnerabilities can only be used for denial of service attacks that compromise

832-520: A web application —had become the primary method that companies deliver applications. Software companies aim to deliver a high-quality product on time and under budget. A challenge is that software development effort estimation is often inaccurate. Software development begins by conceiving the project, evaluating its feasibility, analyzing the business requirements, and making a software design . Most software projects speed up their development by reusing or incorporating existing software, either in

936-457: A change request. Frequently, software is released in an incomplete state when the development team runs out of time or funding. Despite testing and quality assurance , virtually all software contains bugs where the system does not work as intended. Post-release software maintenance is necessary to remediate these bugs when they are found and keep the software working as the environment changes over time. New features are often added after

1040-486: A code's correct and efficient behavior, its reusability and portability , or the ease of modification. It is usually more cost-effective to build quality into the product from the beginning rather than try to add it later in the development process. Higher quality code will reduce lifetime cost to both suppliers and customers as it is more reliable and easier to maintain . Software failures in safety-critical systems can be very serious including death. By some estimates,

1144-466: A competing OS, agrees that "Linux wasn't designed, it evolved", but considers this to be a limitation, proposing that some features, especially those related to security, cannot be evolved into, "this is not a biological system at the end of the day, it's a software system." A Linux-based system is a modular Unix-like operating system, deriving much of its basic design from principles established in Unix during

SECTION 10

#1733084824169

1248-971: A different window manager if preferred. Wayland is a display server protocol intended as a replacement for the X11 protocol; as of 2022 , it has received relatively wide adoption. Unlike X11, Wayland does not need an external window manager and compositing manager. Therefore, a Wayland compositor takes the role of the display server, window manager, and compositing manager. Weston is the reference implementation of Wayland, while GNOME's Mutter and KDE's KWin are being ported to Wayland as standalone display servers. Enlightenment has already been successfully ported since version 19. Additionally, many window managers have been made for Wayland, such as Sway or Hyprland, as well as other graphical utilities such as Waybar or Rofi. Linux currently has two modern kernel-userspace APIs for handling video input devices: V4L2 API for video streams and radio, and DVB API for digital TV reception. Due to

1352-443: A legal regime where liability for software products is significantly curtailed compared to other products. Source code is protected by copyright law that vests the owner with the exclusive right to copy the code. The underlying ideas or algorithms are not protected by copyright law, but are often treated as a trade secret and concealed by such methods as non-disclosure agreements . Software copyright has been recognized since

1456-402: A microcontroller or it can be precompiled elsewhere. MicroPython firmware can be built without the compiler, leaving only the virtual machine which can run the precompiled mpy programs. MicroPython is utilised through firmware being loaded by standard software onto a particular microcontroller into flash memory, communicating using a terminal application loaded onto a computer that emulates

1560-404: A place in server installations such as the popular LAMP application stack. The use of Linux distributions in home and enterprise desktops has been growing. Linux distributions have also become popular in the netbook market, with many devices shipping with customized Linux distributions installed, and Google releasing their own ChromeOS designed for netbooks. Linux's greatest success in

1664-498: A popular CLI shell. The graphical user interface (or GUI) used by most Linux systems is built on top of an implementation of the X Window System . More recently, the Linux community has sought to advance to Wayland as the new display server protocol, in place of X11. Many other open-source software projects contribute to Linux systems. Installed components of a Linux system include the following: The user interface , also known as

1768-557: A quick web search . Most creative professionals have switched to software-based tools such as computer-aided design , 3D modeling , digital image editing , and computer animation . Almost every complex device is controlled by software. Linux Linux ( / ˈ l ɪ n ʊ k s / , LIN -uuks ) is a family of open-source Unix-like operating systems based on the Linux kernel , an operating system kernel first released on September 17, 1991, by Linus Torvalds . Linux

1872-399: A serial console): Although MicroPython fully implements Python language version 3.4 and much of 3.5, it does not implement all language features introduced from 3.5 onwards, though some new syntax from 3.6 and more recent features from later versions, e.g. from 3.8 (assignment expressions) and 3.9. It includes a subset of the standard library. MicroPython has more limited hardware support in

1976-449: A serial interface. The main uses of MicroPython can be generalised into 3 categories: Implementation of MicroPython can differ depending on the availability of standard and supporting libraries and the microcontroller's flash memory and RAM size. Software Software consists of computer programs that instruct the execution of a computer . Software also includes design documents and specifications. The history of software

2080-481: A significant business around Linux distributions. The free software licenses , on which the various software packages of a distribution built on the Linux kernel are based, explicitly accommodate and encourage commercialization; the relationship between a Linux distribution as a whole and individual vendors may be seen as symbiotic . One common business model of commercial suppliers is charging for support, especially for business users. A number of companies also offer

2184-495: A significant role in the distribution of software products. The first use of the word software is credited to mathematician John Wilder Tukey in 1958. The first programmable computers, which appeared at the end of the 1940s, were programmed in machine language . Machine language is difficult to debug and not portable across different computers. Initially, hardware resources were more expensive than human resources . As programs became complex, programmer productivity became

SECTION 20

#1733084824169

2288-493: A specialized business version of their distribution, which adds proprietary support packages and tools to administer higher numbers of installations or to simplify administrative tasks. Another business model is to give away the software to sell hardware. This used to be the norm in the computer industry, with operating systems such as CP/M , Apple DOS , and versions of the classic Mac OS before 7.6 freely copyable (but not modifiable). As computer hardware standardized throughout

2392-509: A specific version of the software, downloaded, and run on hardware belonging to the purchaser. The rise of the Internet and cloud computing enabled a new model, software as a service (SaaS), in which the provider hosts the software (usually built on top of rented infrastructure or platforms ) and provides the use of the software to customers, often in exchange for a subscription fee . By 2023, SaaS products—which are usually delivered via

2496-415: A system's availability, others allow the attacker to inject and run their own code (called malware ), without the user being aware of it. To thwart cyberattacks, all software in the system must be designed to withstand and recover from external attack. Despite efforts to ensure security, a significant fraction of computers are infected with malware. Programming languages are the format in which software

2600-972: A system's software from one central location. A distribution is largely driven by its developer and user communities. Some vendors develop and fund their distributions on a volunteer basis, Debian being a well-known example. Others maintain a community version of their commercial distributions, as Red Hat does with Fedora , and SUSE does with openSUSE . In many cities and regions, local associations known as Linux User Groups (LUGs) seek to promote their preferred distribution and by extension free software. They hold meetings and provide free demonstrations, training, technical support, and operating system installation to new users. Many Internet communities also provide support to Linux users and developers. Most distributions and free software / open-source projects have IRC chatrooms or newsgroups . Online forums are another means of support, with notable examples being Unix & Linux Stack Exchange , LinuxQuestions.org and

2704-402: A user may interact with the application; however, certain extensions of the X Window System are not capable of working over the network. Several X display servers exist, with the reference implementation, X.Org Server , being the most popular. Server distributions might provide a command-line interface for developers and administrators, but provide a custom interface for end-users, designed for

2808-453: A vast body of work and may include both kernel modules and user applications and libraries. Linux vendors and communities combine and distribute the kernel, GNU components, and non-GNU components, with additional package management software in the form of Linux distributions. Many developers of open-source software agree that the Linux kernel was not designed but rather evolved through natural selection . Torvalds considers that although

2912-642: Is a lean and efficient implementation of Python with libraries similar to those in Python. Some standard Python libraries have an equivalent library in MicroPython renamed to distinguish between the two. MicroPython libraries are smaller with less popular features removed or modified to save memory . The three types of libraries in MicroPython: MicroPython is highly customisable and configurable, with language differing between each board ( microcontroller ) and

3016-633: Is based on MicroPython version 1.9.4. In 2017, Microsemi made a MicroPython port for RISC-V (RV32 and RV64) architecture. In April 2019, a version of MicroPython for the Lego Mindstorms EV3 was created. In January 2021, a MicroPython port for the RP2040 (ARM Cortex-M0+, on Raspberry Pi Pico and others) was created. MicroPython has the ability to run Python, allowing users to create simple and easy-to-understand programs. MicroPython supports many standard Python libraries, supporting more than 80% of

3120-402: Is closely tied to the development of digital computers in the mid-20th century. Early programs were written in the machine language specific to the hardware. The introduction of high-level programming languages in 1958 allowed for more human-readable instructions, making software development easier and more portable across different computer architectures . Software in a programming language

3224-562: Is licensed under the GPLv2, with an exception for system calls that allows code that calls the kernel via system calls not to be licensed under the GPL. Because of the dominance of Linux-based Android on smartphones , Linux, including Android, has the largest installed base of all general-purpose operating systems as of May 2022 . Linux is, as of March 2024 , used by around 4 percent of desktop computers . The Chromebook , which runs

MicroPython - Misplaced Pages Continue

3328-414: Is run through a compiler or interpreter to execute on the architecture's hardware. Over time, software has become complex, owing to developments in networking , operating systems , and databases . Software can generally be categorized into two main types: The rise of cloud computing has introduced the new software delivery model Software as a Service (SaaS). In SaaS, applications are hosted by

3432-410: Is simple but important as misused indentation can result in code executing under a wrong condition or an overall error from the interpreter . A colon (:) is the key symbol used to indicate the ending of a condition statement. The indent size is equivalent to one tab or 4 spaces. MicroPython has the ability to perform various mathematical operations using primitive and logical operations. MicroPython

3536-403: Is that the Linux kernel and other components are free and open-source software. Linux is not the only such operating system, although it is by far the most widely used. Some free and open-source software licenses are based on the principle of copyleft , a kind of reciprocity: any work derived from a copyleft piece of software must also be copyleft itself. The most common free software license,

3640-577: Is the Bourne-Again Shell (bash), originally developed for the GNU Project, other shells such as Zsh are also used. Most low-level Linux components, including various parts of the userland , use the CLI exclusively. The CLI is particularly suited for automation of repetitive or delayed tasks and provides very simple inter-process communication . On desktop systems, the most popular user interfaces are

3744-440: Is the official MicroPython microcontroller board which fully supports MicroPython's software features. The pyboard's hardware features include: The pyboard contains an internal drive (filesystem) named /flash which is stored within the board's flash memory, additionally, a microSD card can be inserted into a slot and is accessible through /sd. When booted up, a pyboard must select a filesystem to boot from either /flash or /sd with

3848-887: Is typically packaged as a Linux distribution (distro), which includes the kernel and supporting system software and libraries — many of which are provided by the GNU Project — to create a complete operating system. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses and recommends the name " GNU/Linux " to emphasize the use and importance of GNU software in many distributions, causing some controversy . Thousands of distributions exist, many based directly or indirectly on other distributions; popular Linux distributions include Debian , Fedora Linux , Arch Linux , and Ubuntu , while commercial distributions include Red Hat Enterprise Linux and SUSE Linux Enterprise . Other than

3952-468: Is typically built into the firmware and is highly tailored to the system. This includes routers , automation controls, smart home devices , video game consoles , televisions (Samsung and LG smart TVs ), automobiles (Tesla, Audi, Mercedes-Benz, Hyundai, and Toyota), and spacecraft ( Falcon 9 rocket, Dragon crew capsule, and the Ingenuity Mars helicopter). The Unix operating system

4056-415: Is used on a wide variety of devices including PCs, workstations , mainframes and embedded systems . Linux is the predominant operating system for servers and is also used on all of the world's 500 fastest supercomputers . When combined with Android , which is Linux-based and designed for smartphones , they have the largest installed base of all general-purpose operating systems . The Linux kernel

4160-434: Is used with fewer syntactical machinations in order to prioritise readability. MicroPython adopts Python's code block style, with code specific to a particular function , condition or loop being indented. This differs from most other languages which typically use symbols or keywords to delimit blocks. This assists with the readability of MicroPython code as the visual structure mirrors the semantic structure. This key feature

4264-443: Is well documented and user-friendly. MicroPython allows interactions between microcontroller hardware and applications to be simple, allowing access to a range of functionality while working in a resource constrained environment, with a strong level of responsiveness. The two types of boards used to run MicroPython: To move a program onto a MicroPython board, create a file and copy it onto the microcontroller in order to execute. With

MicroPython - Misplaced Pages Continue

4368-453: Is written. Since the 1950s, thousands of different programming languages have been invented; some have been in use for decades, while others have fallen into disuse. Some definitions classify machine code —the exact instructions directly implemented by the hardware—and assembly language —a more human-readable alternative to machine code whose statements can be translated one-to-one into machine code—as programming languages. Programs written in

4472-421: The Free Software Foundation and wrote the GNU General Public License (GNU GPL) in 1989. By the early 1990s, many of the programs required in an operating system (such as libraries, compilers , text editors , a command-line shell , and a windowing system ) were completed, although low-level elements such as device drivers , daemons , and the kernel , called GNU Hurd , were stalled and incomplete. Minix

4576-736: The GNU toolchain , which includes the GNU Compiler Collection (GCC) and the GNU Build System . Amongst others, GCC provides compilers for Ada , C , C++ , Go and Fortran . Many programming languages have a cross-platform reference implementation that supports Linux, for example PHP , Perl , Ruby , Python , Java , Go , Rust and Haskell . First released in 2003, the LLVM project provides an alternative cross-platform open-source compiler for many languages. Proprietary compilers for Linux include

4680-470: The GUI shells , packaged together with extensive Desktop environments , such as KDE Plasma , GNOME , MATE , Cinnamon , LXDE , Pantheon , and Xfce , though a variety of additional user interfaces exist. Most popular user interfaces are based on the X Window System, often simply called "X". It provides network transparency and permits a graphical application running on one system to be displayed on another where

4784-438: The high-level programming languages used to create software share a few main characteristics: knowledge of machine code is not necessary to write them, they can be ported to other computer systems, and they are more concise and human-readable than machine code. They must be both human-readable and capable of being translated into unambiguous instructions for computer hardware. The invention of high-level programming languages

4888-476: The shell , is either a command-line interface (CLI), a graphical user interface (GUI), or controls attached to the associated hardware, which is common for embedded systems. For desktop systems, the default user interface is usually graphical, although the CLI is commonly available through terminal emulator windows or on a separate virtual console . CLI shells are text-based user interfaces, which use text for both input and output. The dominant shell used in Linux

4992-399: The 1970s and 1980s. Such a system uses a monolithic kernel , the Linux kernel, which handles process control, networking, access to the peripherals , and file systems . Device drivers are either integrated directly with the kernel or added as modules that are loaded while the system is running. The GNU userland is a key part of most systems based on the Linux kernel, with Android being

5096-451: The 1980s, it became more difficult for hardware manufacturers to profit from this tactic, as the OS would run on any manufacturer's computer that shared the same architecture. Most programming languages support Linux either directly or through third-party community based ports . The original development tools used for building both Linux applications and operating system programs are found within

5200-663: The GNU General Public License (GPL), is a form of copyleft and is used for the Linux kernel and many of the components from the GNU Project. Linux-based distributions are intended by developers for interoperability with other operating systems and established computing standards. Linux systems adhere to POSIX, SUS , LSB , ISO , and ANSI standards where possible, although to date only one Linux distribution has been POSIX.1 certified, Linux-FT. Free software projects, although developed through collaboration , are often produced independently of each other. The fact that

5304-457: The LEDs have reached the mode wanted by the user, they can let go of the user switch and the board will boot in the specific mode. the boot modes are: Hello world program: Importing + turning on a LED: Reading a file + loop: MicroPython includes a cross compiler which generates MicroPython bytecode (file extension .mpy ). The Python code can be compiled into the bytecode either directly on

SECTION 50

#1733084824169

5408-460: The Linux kernel, key components that make up a distribution may include a display server (windowing system) , a package manager , a bootloader and the Bash shell . Linux is one of the most prominent examples of free and open-source software collaboration. While originally developed for x86 based personal computers , it has since been ported to more platforms than any other operating system, and

5512-647: The Linux kernel-based ChromeOS , dominates the US K–12 education market and represents nearly 20 percent of sub-$ 300 notebook sales in the US. Linux is the leading operating system on servers (over 96.4% of the top one million web servers' operating systems are Linux), leads other big iron systems such as mainframe computers , and is used on all of the world's 500 fastest supercomputers (as of November 2017 , having gradually displaced all competitors). Linux also runs on embedded systems , i.e., devices whose operating system

5616-605: The Linux kernel. On July 3, 1991, to implement Unix system calls , Linus Torvalds attempted unsuccessfully to obtain a digital copy of the POSIX standards documentation with a request to the comp.os.minix newsgroup . After not finding the POSIX documentation, Torvalds initially resorted to determining system calls from SunOS documentation owned by the university for use in operating its Sun Microsystems server. He also learned some system calls from Tanenbaum's Minix text. Torvalds began

5720-490: The ability of the existing libraries and firmware. In MicroPython, files ending with .py take preference over other library aliases which allows users to extend the use and implementation of the existing libraries. As MicroPython's implementation and popularity continues to grow, more boards have the ability to run MicroPython. Many developers are building processor specific versions that can be downloaded onto different microcontrollers. Installing MicroPython on microcontrollers

5824-425: The availability of libraries may differ. Some functions and classes in a module or the entire module may be unavailable or altered. When developers begin to create a new application, standard MicroPython libraries and drivers may not meet the requirements, with insufficient operations or calculations. Similar to Python, there is the possibility of extending MicroPython's functionality with custom libraries which extend

5928-415: The beginning, it was rather casually hacked on by huge numbers of volunteers coordinating only through the Internet. Quality was maintained not by rigid standards or autocracy but by the naively simple strategy of releasing every week and getting feedback from hundreds of users within days, creating a sort of rapid Darwinian selection on the mutations introduced by developers." Bryan Cantrill , an engineer of

6032-399: The bottleneck. The introduction of high-level programming languages in 1958 hid the details of the hardware and expressed the underlying algorithms into the code . Early languages include Fortran , Lisp , and COBOL . There are two main types of software: Software can also be categorized by how it is deployed . Traditional applications are purchased with a perpetual license for

6136-447: The complexity and diversity of different devices, and due to the large number of formats and standards handled by those APIs, this infrastructure needs to evolve to better fit other devices. Also, a good userspace device library is the key to the success of having userspace applications to be able to work with all formats supported by those devices. The primary difference between Linux and many other popular contemporary operating systems

6240-498: The consumer market is perhaps the mobile device market, with Android being the dominant operating system on smartphones and very popular on tablets and, more recently, on wearables . Linux gaming is also on the rise with Valve showing its support for Linux and rolling out SteamOS , its own gaming-oriented Linux distribution, which was later implemented in their Steam Deck platform. Linux distributions have also gained popularity with various local and national governments, such as

6344-404: The correctness of code, while user acceptance testing helps to ensure that the product meets customer expectations. There are a variety of software development methodologies , which vary from completing all steps in order to concurrent and iterative models. Software development is driven by requirements taken from prospective users, as opposed to maintenance, which is driven by events such as

SECTION 60

#1733084824169

6448-400: The cost of poor quality software can be as high as 20 to 40 percent of sales. Despite developers' goal of delivering a product that works entirely as intended, virtually all software contains bugs. The rise of the Internet also greatly increased the need for computer security as it enabled malicious actors to conduct cyberattacks remotely. If a bug creates a security risk, it is called

6552-419: The cost of products. Unlike copyrights, patents generally only apply in the jurisdiction where they were issued. Engineer Capers Jones writes that "computers and software are making profound changes to every aspect of human life: education, work, warfare, entertainment, medicine, law, and everything else". It has become ubiquitous in everyday life in developed countries . In many cases, software augments

6656-469: The current directory being set to either /flash or /sd. By default, if an SD card is inserted, /sd will be used, if not, /flash is used. If needed, the use of the SD card for the booting process can be avoided by creating an empty file called /flash/SKIPSD which will remain on the board and exist when the pyboard is booted up and will skip the SD card for the booting process. When the pyboard is powered up normally or

6760-464: The design of Unix served as a scaffolding, "Linux grew with a lot of mutations – and because the mutations were less than random, they were faster and more directed than alpha-particles in DNA ." Eric S. Raymond considers Linux's revolutionary aspects to be social, not technical: before Linux, complex software was designed carefully by small groups, but "Linux evolved in a completely different way. From nearly

6864-502: The development of 386BSD , from which NetBSD , OpenBSD and FreeBSD descended, predated that of Linux. Linus Torvalds has stated on separate occasions that if the GNU kernel or 386BSD had been available at the time (1991), he probably would not have created Linux. While attending the University of Helsinki in the fall of 1990, Torvalds enrolled in a Unix course. The course used a MicroVAX minicomputer running Ultrix , and one of

6968-527: The development of the Linux kernel on Minix and applications written for Minix were also used on Linux. Later, Linux matured and further Linux kernel development took place on Linux systems. GNU applications also replaced all Minix components, because it was advantageous to use the freely available code from the GNU Project with the fledgling operating system; code licensed under the GNU GPL can be reused in other computer programs as long as they also are released under

7072-476: The development of the components of the system and free software. An analysis of the Linux kernel in 2017 showed that well over 85% of the code was developed by programmers who are being paid for their work, leaving about 8.2% to unpaid developers and 4.1% unclassified. Some of the major corporations that provide contributions include Intel , Samsung , Google , AMD , Oracle , and Facebook . Several corporations, notably Red Hat, Canonical , and SUSE have built

7176-513: The features of Python's most used libraries. MicroPython was designed specifically to support the typical performance gap between microcontrollers and Python. Python code is able to directly access and interact with hardware, with increased hardware possibilities that are not available using a normal Python application that is run on an operating system . MicroPython's utilisation of hardware abstraction layer (HAL) technology allows developed code to be portable among different microcontrollers within

7280-546: The federal government of Brazil . Linus Torvalds is the lead maintainer for the Linux kernel and guides its development, while Greg Kroah-Hartman is the lead maintainer for the stable branch. Zoë Kooyman is the executive director of the Free Software Foundation, which in turn supports the GNU components. Finally, individuals and corporations develop third-party non-GNU components. These third-party components comprise

7384-416: The first version of the Linux kernel on the Internet . Like GNU and 386BSD, Linux did not have any Unix code and therefore avoided any current legal issues . Desktop Linux distributions include a windowing system such as X11 or Wayland and a desktop environment such as GNOME , KDE Plasma or Xfce . Distributions intended for servers may not have a graphical user interface at all or include

7488-438: The form of commercial off-the-shelf (COTS) or open-source software . Software quality assurance is typically a combination of manual code review by other engineers and automated software testing . Due to time constraints, testing cannot cover all aspects of the software's intended functionality, so developers often focus on the most critical functionality. Formal methods are used in some safety-critical systems to prove

7592-439: The functionality of existing technologies such as household appliances and elevators . Software also spawned entirely new technologies such as the Internet , video games , mobile phones , and GPS . New methods of communication, including email , forums , blogs , microblogging , wikis , and social media , were enabled by the Internet. Massive amounts of knowledge exceeding any paper-based library are now available with

7696-419: The hardware connected to a device, such as a computer , the board's flash drive will appear on the device allowing files to be moved to the flash drive. There will be two existing python files, boot.py and main.py that are typically not modified, main.py may be modified if you wish to run the program every time the microcontroller is booted , otherwise, programs will be run using the REPL console. The pyboard

7800-747: The mainline. In 2016, a version of MicroPython for the BBC Micro Bit was created as part of the Python Software Foundation 's contribution to the Micro Bit partnership with the BBC. In July 2017, MicroPython was forked to create CircuitPython , a version of MicroPython with emphasis on education and ease of use. MicroPython and CircuitPython support somewhat different sets of hardware (e.g. CircuitPython supports Atmel SAM D21 and D51 boards, but dropped support for ESP8266). As of version 4.0, CircuitPython

7904-418: The meantime MicroPython has been developed to support a number of ARM based architectures. The ports supported in the mainline are ARM Cortex-M (many STM32 boards, RP2040 boards, TI CC3200/WiPy, Teensy boards, Nordic nRF series, SAMD21 and SAMD51), ESP8266 , ESP32 , 16-bit PIC, Unix, Windows, Zephyr, and JavaScript. Also, there are many forks for a variety of systems and hardware platforms not supported in

8008-428: The microcontroller market than other popular platforms, like Arduino with a smaller number of microcontroller choices that support the language. MicroPython does not include an integrated development environment (IDE) or specific editor unlike other platforms. MicroPython's syntax is adopted from Python, due to its clear and easy-to-understand style and power. Unlike most other programming languages less punctuation

8112-597: The mid-1970s and is vested in the company that makes the software, not the employees or contractors who wrote it. The use of most software is governed by an agreement ( software license ) between the copyright holder and the user. Proprietary software is usually sold under a restrictive license that limits copying and reuse (often enforced with tools such as digital rights management (DRM)). Open-source licenses , in contrast, allow free use and redistribution of software with few conditions. Most open-source licenses used for software require that modifications be released under

8216-516: The mid-1990s in the supercomputing community, where organizations such as NASA started to replace their increasingly expensive machines with clusters of inexpensive commodity computers running Linux. Commercial use began when Dell and IBM , followed by Hewlett-Packard , started offering Linux support to escape Microsoft 's monopoly in the desktop operating system market. Today, Linux systems are used throughout computing, from embedded systems to virtually all supercomputers , and have secured

8320-441: The notable exception. The GNU C library , an implementation of the C standard library , works as a wrapper for the system calls of the Linux kernel necessary to the kernel-userspace interface, the toolchain is a broad collection of programming tools vital to Linux development (including the compilers used to build the Linux kernel itself), and the coreutils implement many basic Unix tools . The GNU Project also develops Bash ,

8424-501: The operating system to their specific needs. Distributions are maintained by individuals, loose-knit teams, volunteer organizations, and commercial entities. A distribution is responsible for the default configuration of the installed Linux kernel, general system security, and more generally integration of the different software packages into a coherent whole. Distributions typically use a package manager such as apt , yum , zypper , pacman or portage to install, remove, and update all of

8528-472: The operating system) can take this saved file and execute it as a process on the computer hardware. Some programming languages use an interpreter instead of a compiler. An interpreter converts the program into machine code at run time , which makes them 10 to 100 times slower than compiled programming languages. Software is often released with the knowledge that it is incomplete or contains bugs. Purchasers knowingly buy it in this state, which has led to

8632-604: The physical world may also be part of the requirements for a software patent to be held valid. Software patents have been historically controversial . Before the 1998 case State Street Bank & Trust Co. v. Signature Financial Group, Inc. , software patents were generally not recognized in the United States. In that case, the Supreme Court decided that business processes could be patented. Patent applications are complex and costly, and lawsuits involving patents can drive up

8736-630: The programmer access to low-level hardware. MicroPython does have an inline assembler , which lets the code run at full speed, but it is not portable across different microcontrollers. The source code for the project is available on GitHub under the MIT License . MicroPython was originally created by the Australian programmer Damien George, after a successful Kickstarter -backed campaign in 2013. The original Kickstarter campaign released MicroPython with an STM32F4 -powered development board "pyboard". In

8840-408: The release. Over time, the level of maintenance becomes increasingly restricted before being cut off entirely when the product is withdrawn from the market. As software ages , it becomes known as legacy software and can remain in use for decades, even if there is no one left who knows how to fix it. Over the lifetime of the product, software maintenance is estimated to comprise 75 percent or more of

8944-455: The required texts was Operating Systems: Design and Implementation by Andrew S. Tanenbaum . This textbook included a copy of Tanenbaum's Minix operating system. It was with this course that Torvalds first became exposed to Unix. In 1991, he became curious about operating systems. Frustrated by the licensing of Minix, which at the time limited it to educational use only, he began to work on his operating system kernel, which eventually became

9048-487: The reset button is pressed then the pyboard is booted in a standard mode, meaning that the boot.py file is executed, then the USB configured and finally the python program will run. There is an ability to override the standard boot sequence through holding down the user switch whilst the board is in the booting process and then pressing reset as you continue to hold the user switch. The pyboard's LEDs will flick between modes and once

9152-473: The same family or platform and on devices that support and can download MicroPython. Programs are often developed and tested on high-performance microcontrollers and distributed with the final application used on lower-performance microcontrollers. MicroPython offers functionality, once new code has been written, to create a frozen module and use it as a library which can be a part of developed firmware . This feature assists with avoiding repetitive downloading of

9256-424: The same license, which can create complications when open-source software is reused in proprietary projects. Patents give an inventor an exclusive, time-limited license for a novel product or process. Ideas about what software could accomplish are not protected by law and concrete implementations are instead covered by copyright law . In some countries, a requirement for the claimed invention to have an effect on

9360-412: The same or a compatible license. Torvalds initiated a switch from his original license, which prohibited commercial redistribution, to the GNU GPL. Developers worked to integrate GNU components with the Linux kernel, creating a fully functional and free operating system. Linus Torvalds had wanted to call his invention " Freax ", a portmanteau of "free", "freak", and "x" (as an allusion to Unix). During

9464-412: The same, already error-free, tested code into a MicroPython environment. This type of module will be saved to a microcontroller's modules directory for compiling and uploading to the microcontroller where the library will be available using Python's import command to be used repeatedly. The read–eval–print loop (REPL) allows a developer to enter individual lines of code and have them run immediately on

9568-441: The software licenses explicitly permit redistribution, however, provides a basis for larger-scale projects that collect the software produced by stand-alone projects and make it available all at once in the form of a Linux distribution. Many Linux distributions manage a remote collection of system software and application software packages available for download and installation through a network connection. This allows users to adapt

9672-569: The start of his work on the system, some of the project's makefiles included the name "Freax" for about half a year. Initially, Torvalds considered the name "Linux" but dismissed it as too egotistical. To facilitate development, the files were uploaded to the FTP server ( ftp.funet.fi ) of FUNET in September 1991. Ari Lemmke, Torvalds' coworker at the Helsinki University of Technology (HUT) who

9776-431: The total development cost. Completing a software project involves various forms of expertise, not just in software programmers but also testing, documentation writing, project management , graphic design , user experience , user support, marketing , and fundraising. Software quality is defined as meeting the stated requirements as well as customer expectations. Quality is an overarching term that can refer to

9880-471: The use case of the system. This custom interface is accessed through a client that resides on another system, not necessarily Linux-based. Several types of window managers exist for X11, including tiling , dynamic , stacking , and compositing . Window managers provide means to control the placement and appearance of individual application windows, and interact with the X Window System. Simpler X window managers such as dwm , ratpoison , or i3wm provide

9984-559: The various distribution-specific support and community forums, such as ones for Ubuntu , Fedora, Arch Linux , Gentoo , etc. Linux distributions host mailing lists ; commonly there will be a specific topic such as usage or development for a given list. There are several technology websites with a Linux focus. Print magazines on Linux often bundle cover disks that carry software or even complete Linux distributions. Although Linux distributions are generally available without charge, several large corporations sell, support, and contribute to

10088-429: The word "Linux" should be pronounced, he included an audio guide with the kernel source code. However, in this recording, he pronounces Linux as /ˈlinʊks/ ( LEEN -uuks ) with a short but close front unrounded vowel , instead of a near-close near-front unrounded vowel as in his newsgroup post. The adoption of Linux in production environments, rather than being used only by hobbyists, started to take off first in

10192-445: Was conceived and implemented in 1969, at AT&T 's Bell Labs , in the United States by Ken Thompson , Dennis Ritchie , Douglas McIlroy , and Joe Ossanna . First released in 1971, Unix was written entirely in assembly language , as was common practice at the time. In 1973, in a key pioneering approach, it was rewritten in the C programming language by Dennis Ritchie (except for some hardware and I/O routines). The availability of

10296-494: Was created by Andrew S. Tanenbaum , a computer science professor, and released in 1987 as a minimal Unix-like operating system targeted at students and others who wanted to learn operating system principles. Although the complete source code of Minix was freely available, the licensing terms prevented it from being free software until the licensing changed in April 2000. Although not released until 1992, due to legal complications ,

10400-510: Was designed by Linus Torvalds , following the lack of a working kernel for GNU , a Unix -compatible operating system made entirely of free software that had been undergoing development since 1983 by Richard Stallman . While a separate working Unix-compatible system called Minix was later released, its license was not entirely free at the time. The first entirely free Unix for personal computers, 386BSD , did not appear until 1992, by which time Torvalds had already built and publicly released

10504-459: Was later originally developed, it represented the first successful commercial attempt at distributing a primarily single-user microcomputer that ran a Unix operating system. With Unix increasingly "locked in" as a proprietary product, the GNU Project , started in 1983 by Richard Stallman , had the goal of creating a "complete Unix-compatible software system" composed entirely of free software . Work began in 1984. Later, in 1985, Stallman started

10608-510: Was one of the volunteer administrators for the FTP server at the time, did not think that "Freax" was a good name, so he named the project "Linux" on the server without consulting Torvalds. Later, however, Torvalds consented to "Linux". According to a newsgroup post by Torvalds, the word "Linux" should be pronounced ( / ˈ l ɪ n ʊ k s / LIN -uuks ) with a short 'i' as in 'print' and 'u' as in 'put'. To further demonstrate how

10712-518: Was released from its obligation not to enter the computer business; freed of that obligation, Bell Labs began selling Unix as a proprietary product, where users were not legally allowed to modify it. Onyx Systems began selling early microcomputer-based Unix workstations in 1980. Later, Sun Microsystems , founded as a spin-off of a student project at Stanford University , also began selling Unix-based desktop workstations in 1982. While Sun workstations did not use commodity PC hardware, for which Linux

10816-401: Was simultaneous with the compilers needed to translate them automatically into machine code. Most programs do not contain all the resources needed to run them and rely on external libraries . Part of the compiler's function is to link these files in such a way that the program can be executed by the hardware. Once compiled, the program can be saved as an object file and the loader (part of

#168831