The document provides an overview of Das U-Boot, a universal boot loader used to load operating systems and applications into memory on embedded systems. It discusses U-Boot's features such as its command line interface, ability to load images from different sources, and support for various architectures and boards. It also covers compiling and configuring U-Boot, as well as its basic command set and image support capabilities.
Bootstrap process of u boot (NDS32 RISC CPU)Macpaul Lin
The bootstrap procedure of the u-boot bootloader involves:
1. Relocating the binary from flash/ROM to DRAM without adjustments through memory remapping.
2. Performing a general relocation of the binary in DRAM which involves adjusting addresses.
3. Initializing hardware and memory before jumping to the main initialization code.
This course gets you started with writing device drivers in Linux by providing real time hardware exposure. Equip you with real-time tools, debugging techniques and industry usage in a hands-on manner. Dedicated hardware by Emertxe's device driver learning kit. Special focus on character and USB device drivers.
XPDDS17: Shared Virtual Memory Virtualization Implementation on Xen - Yi Liu,...The Linux Foundation
This document discusses vSVM design on the Xen hypervisor. It proposes exposing SVM extensions in hardware like PASID, ATS and PRQ through virtual IOMMU capabilities in Xen. This would allow guest VMs to utilize shared virtual addressing between CPU and devices. The design would involve shadow extended context entries pointing to guest PASID tables and queuing invalidation of translation caches between host and guest. Currently Xen supports device assignment but not full IOMMU functionality or SVM extensions for shared virtual addressing across VMs.
The document provides an overview of the initialization phase of the Linux kernel. It discusses how the kernel enables paging to transition from physical to virtual memory addresses. It then describes the various initialization functions that are called by start_kernel to initialize kernel features and architecture-specific code. Some key initialization tasks discussed include creating an identity page table, clearing BSS, and reserving BIOS memory.
The document discusses ioremap and mmap functions in Linux for mapping physical addresses into the virtual address space. Ioremap is used when physical addresses are larger than the virtual address space size. It maps physical addresses to virtual addresses that can be accessed by the CPU. Mmap allows a process to map pages of a file into virtual memory. It is useful for reducing memory copies and improving performance of file read/write operations. The document outlines the functions, flags, and flows of ioremap, mmap, and implementing a custom mmap file operation for direct physical memory mapping.
The U-Boot is an "Universal Bootloader" ("Das U-Boot") is a monitor program that is under GPL. This production quality boot-loader is used as default boot loader by several board vendors. It is easily portable and easy to port and to debug by supporting PPC, ARM, MIPS, x86,m68k, NIOS, Microblaze architectures. Here is a presentation that introduces U-Boot.
The document provides an overview of Das U-Boot, a universal boot loader used to load operating systems and applications into memory on embedded systems. It discusses U-Boot's features such as its command line interface, ability to load images from different sources, and support for various architectures and boards. It also covers compiling and configuring U-Boot, as well as its basic command set and image support capabilities.
Bootstrap process of u boot (NDS32 RISC CPU)Macpaul Lin
The bootstrap procedure of the u-boot bootloader involves:
1. Relocating the binary from flash/ROM to DRAM without adjustments through memory remapping.
2. Performing a general relocation of the binary in DRAM which involves adjusting addresses.
3. Initializing hardware and memory before jumping to the main initialization code.
This course gets you started with writing device drivers in Linux by providing real time hardware exposure. Equip you with real-time tools, debugging techniques and industry usage in a hands-on manner. Dedicated hardware by Emertxe's device driver learning kit. Special focus on character and USB device drivers.
XPDDS17: Shared Virtual Memory Virtualization Implementation on Xen - Yi Liu,...The Linux Foundation
This document discusses vSVM design on the Xen hypervisor. It proposes exposing SVM extensions in hardware like PASID, ATS and PRQ through virtual IOMMU capabilities in Xen. This would allow guest VMs to utilize shared virtual addressing between CPU and devices. The design would involve shadow extended context entries pointing to guest PASID tables and queuing invalidation of translation caches between host and guest. Currently Xen supports device assignment but not full IOMMU functionality or SVM extensions for shared virtual addressing across VMs.
The document provides an overview of the initialization phase of the Linux kernel. It discusses how the kernel enables paging to transition from physical to virtual memory addresses. It then describes the various initialization functions that are called by start_kernel to initialize kernel features and architecture-specific code. Some key initialization tasks discussed include creating an identity page table, clearing BSS, and reserving BIOS memory.
The document discusses ioremap and mmap functions in Linux for mapping physical addresses into the virtual address space. Ioremap is used when physical addresses are larger than the virtual address space size. It maps physical addresses to virtual addresses that can be accessed by the CPU. Mmap allows a process to map pages of a file into virtual memory. It is useful for reducing memory copies and improving performance of file read/write operations. The document outlines the functions, flags, and flows of ioremap, mmap, and implementing a custom mmap file operation for direct physical memory mapping.
The U-Boot is an "Universal Bootloader" ("Das U-Boot") is a monitor program that is under GPL. This production quality boot-loader is used as default boot loader by several board vendors. It is easily portable and easy to port and to debug by supporting PPC, ARM, MIPS, x86,m68k, NIOS, Microblaze architectures. Here is a presentation that introduces U-Boot.
U-Boot is an open source bootloader used widely in embedded systems. It initializes hardware and loads the operating system kernel. The document provides an overview of U-Boot from the user and developer perspectives, including its features, build process, file structure, and boot sequence. It also discusses modernizing efforts like adopting the driver model, device tree, and Kbuild configuration system to improve compatibility and support new platforms.
Linux Kernel and Driver Development TrainingStephan Cadene
This document provides information about a Linux Kernel and Driver Development training from Free Electrons. It begins with an overview of the course and hardware that will be used. It then discusses Free Electrons as a company and their online resources. The document also provides generic course information and guidelines for participation and the practical labs.
The document provides an introduction to the Yocto Project, including what it is, its main components, and workflow. It describes the Yocto Project as being comprised of Poky (the build system), tools, and upstreams. Poky contains BitBake (the build engine) and metadata (task configurations and definitions). It outlines the main components, including sub-projects, and compares the Yocto Project to OpenEmbedded. Finally, it summarizes the Yocto Project workflow, which involves configuring the build using recipes and layers then building packages, images, and cross-development toolchains.
This document provides an overview and agenda for a presentation on Yocto, an open source project for embedded Linux development. It discusses Yocto components, layers, recipes, classes, and the build system. It also outlines how Yocto can be used by both system developers and application developers.
Have a quick overview of most of the embedded linux components and their details. How ti build Embedded Linux Hardware & Software, and developing Embedded Products
QEMU is a free and open-source hypervisor that performs hardware virtualization by emulating CPUs through dynamic binary translation and providing device models. This allows it to run unmodified guest operating systems. It can be used to create virtual machines similarly to VMWare, VirtualBox, KVM, and Xen. QEMU also supports emulating different CPU architectures and can save and restore the state of a virtual machine.
QEMU is an open source machine emulator and virtualizer that can emulate various CPU architectures like x86, PowerPC, ARM, MIPS and SPARC. This document discusses extending QEMU to add support for a new I2C accelerometer hardware and simulating it in QEMU. It describes registering a new device type in QEMU to represent the accelerometer, implementing read/write callbacks to emulate the device behavior, and testing it works with a simple application both in QEMU and on a real Raspberry Pi board.
SFO15-TR9: PSCI, ACPI (and UEFI to boot)
Speaker: Bill Fletcher
Date: September 24, 2015
★ Session Description ★
An introductory session of a system-level overview at Power State Coordination
- Focus on ARMv8
- Goes top-down from ACPI
- A demo based on the current code in qemu
- The specifications are very dynamic - what’s onging for ACPI and PSCI
★ Resources ★
Video: https://www.youtube.com/watch?v=vXzPdpaZVto
Presentation: http://www.slideshare.net/linaroorg/sfo15tr9-psci-acpi-and-uefi-to-boot
Etherpad: pad.linaro.org/p/sfo15-tr9
Pathable: https://sfo15.pathable.com/meetings/303087
★ Event Details ★
Linaro Connect San Francisco 2015 - #SFO15
September 21-25, 2015
Hyatt Regency Hotel
http://www.linaro.org
http://connect.linaro.org
Linux Kernel Booting Process (1) - For NLKBshimosawa
Describes the bootstrapping part in Linux and some related technologies.
This is the part one of the slides, and the succeeding slides will contain the errata for this slide.
The document discusses the bootloaders for the BeagleBone Black system. It describes the memory organization and booting process, including the roles of the X-Loader and U-Boot bootloaders. The X-Loader is described as the first stage bootloader that is derived from U-Boot and runs in internal SRAM. It loads the second stage U-Boot bootloader. U-Boot is then described as the universal bootloader that can be ported to different boards with minimal changes and is responsible for loading the Linux kernel from external DDR memory.
The document provides an overview of the initialization process in the Linux kernel from start_kernel to rest_init. It lists the functions called during this process organized by category including functions for initialization of multiprocessor support (SMP), memory management (MM), scheduling, timers, interrupts, and architecture specific setup. The setup_arch section focuses on x86 architecture specific initialization functions such as reserving memory regions, parsing boot parameters, initializing memory mapping and MTRRs.
Embitude's Linux SPI Drivers Training Slides. Contains the details of AM335X specific low level programming, SPI components such as SPI Master Driver, SPI Client Driver, Device Tree for SPI
This document discusses bootloaders for embedded systems. It defines a bootloader as the first code executed after a system powers on or resets that is responsible for loading the operating system kernel. The document then describes the tasks of a bootloader like initializing hardware, loading binaries from storage, and providing a shell. It outlines the booting process differences between desktops and embedded systems. Finally, it focuses on the universal bootloader U-Boot, describing its directory structure, configuration, building process, and commands.
The document summarizes Linux synchronization mechanisms including semaphores and mutexes. It discusses:
1. Semaphores can be used to solve producer-consumer problems and are implemented using a count and wait list.
2. Mutexes enforce serialization on shared memory and have fast, mid, and slow paths for lock and unlock. The mid path uses optimistic spinning and OSQs.
3. Only the lock owner can unlock a mutex, and mutexes transition to the slow path if the owner is preempted, a spinner is preempted, or the owner sleeps.
A bootloader loads an operating system after hardware tests. It begins by initializing hardware and loading the BIOS. The BIOS then loads the master boot record from the disk, which loads secondary bootloaders. These load the operating system by accessing memory in both real and protected modes. The boot process involves loading kernel files and an initial ramdisk to start processes and mount the full filesystem.
The document discusses Linux device trees and how they are used to describe hardware configurations. Some key points:
- A device tree is a data structure that describes hardware connections and configurations. It allows the same kernel to support different hardware.
- Device trees contain nodes that represent devices, with properties like compatible strings to identify drivers. They describe things like memory maps, interrupts, and bus attachments.
- The kernel uses the device tree passed by the bootloader to identify and initialize hardware. Drivers match based on compatible properties.
- Device tree files with .dts extension can be compiled to binary blobs (.dtb) and overlays (.dtbo) used at boot time to describe hardware.
The document discusses USB drivers and provides an overview of USB host and gadget subsystems in Linux. It describes USB host and gadget device driver types, registration processes, data structures used, and key functions for interacting with USB controllers, the USB core, and endpoints. The document outlines views of the USB host and gadget subsystems and how drivers interface with lower-level USB controller drivers and higher-level user applications through the USB core.
This document discusses Linux kernel debugging. It provides an overview of debugging techniques including collecting system information, handling failures, and using printk(), KGDB, and debuggers. Key points covered are the components of a debugger, how KGDB can be used with gdb to debug interactively, analyzing crash data, and some debugging tricks and print functions.
Part 02 Linux Kernel Module ProgrammingTushar B Kute
Presentation on "Linux Kernel Module Programming".
Presented at Army Institute of Technology, Pune for FDP on "Basics of Linux Kernel Programming". by Tushar B Kute (http://tusharkute.com).
This slide provides a basic understanding of hypervisor support in ARM v8 and above processors. And these slides (intent to) give some guidelines to automotive engineers to compare and choose right solution!
The document discusses building an embedded Linux system on a Samsung 2410 platform. It covers basic concepts like cross-development environments, developing on a host machine to target embedded devices. It also covers configuring and building the Linux kernel, creating a root filesystem with BusyBox utilities, setting up the boot process, and developing device drivers. The goal is to provide guidance on creating a custom embedded Linux system targeting specific hardware.
The document discusses the Linux booting procedure. It describes how when a computer is turned on, the BIOS loads the MBR which contains the bootloader. The bootloader then loads the Linux kernel and initrd. The kernel mounts the root filesystem and executes init to start essential processes and reach the default runlevel. Popular init systems include SystemV, Upstart, and Systemd which boot Linux in different ways. The document also provides an overview of the Linux filesystem structure and organization of important directories.
U-Boot is an open source bootloader used widely in embedded systems. It initializes hardware and loads the operating system kernel. The document provides an overview of U-Boot from the user and developer perspectives, including its features, build process, file structure, and boot sequence. It also discusses modernizing efforts like adopting the driver model, device tree, and Kbuild configuration system to improve compatibility and support new platforms.
Linux Kernel and Driver Development TrainingStephan Cadene
This document provides information about a Linux Kernel and Driver Development training from Free Electrons. It begins with an overview of the course and hardware that will be used. It then discusses Free Electrons as a company and their online resources. The document also provides generic course information and guidelines for participation and the practical labs.
The document provides an introduction to the Yocto Project, including what it is, its main components, and workflow. It describes the Yocto Project as being comprised of Poky (the build system), tools, and upstreams. Poky contains BitBake (the build engine) and metadata (task configurations and definitions). It outlines the main components, including sub-projects, and compares the Yocto Project to OpenEmbedded. Finally, it summarizes the Yocto Project workflow, which involves configuring the build using recipes and layers then building packages, images, and cross-development toolchains.
This document provides an overview and agenda for a presentation on Yocto, an open source project for embedded Linux development. It discusses Yocto components, layers, recipes, classes, and the build system. It also outlines how Yocto can be used by both system developers and application developers.
Have a quick overview of most of the embedded linux components and their details. How ti build Embedded Linux Hardware & Software, and developing Embedded Products
QEMU is a free and open-source hypervisor that performs hardware virtualization by emulating CPUs through dynamic binary translation and providing device models. This allows it to run unmodified guest operating systems. It can be used to create virtual machines similarly to VMWare, VirtualBox, KVM, and Xen. QEMU also supports emulating different CPU architectures and can save and restore the state of a virtual machine.
QEMU is an open source machine emulator and virtualizer that can emulate various CPU architectures like x86, PowerPC, ARM, MIPS and SPARC. This document discusses extending QEMU to add support for a new I2C accelerometer hardware and simulating it in QEMU. It describes registering a new device type in QEMU to represent the accelerometer, implementing read/write callbacks to emulate the device behavior, and testing it works with a simple application both in QEMU and on a real Raspberry Pi board.
SFO15-TR9: PSCI, ACPI (and UEFI to boot)
Speaker: Bill Fletcher
Date: September 24, 2015
★ Session Description ★
An introductory session of a system-level overview at Power State Coordination
- Focus on ARMv8
- Goes top-down from ACPI
- A demo based on the current code in qemu
- The specifications are very dynamic - what’s onging for ACPI and PSCI
★ Resources ★
Video: https://www.youtube.com/watch?v=vXzPdpaZVto
Presentation: http://www.slideshare.net/linaroorg/sfo15tr9-psci-acpi-and-uefi-to-boot
Etherpad: pad.linaro.org/p/sfo15-tr9
Pathable: https://sfo15.pathable.com/meetings/303087
★ Event Details ★
Linaro Connect San Francisco 2015 - #SFO15
September 21-25, 2015
Hyatt Regency Hotel
http://www.linaro.org
http://connect.linaro.org
Linux Kernel Booting Process (1) - For NLKBshimosawa
Describes the bootstrapping part in Linux and some related technologies.
This is the part one of the slides, and the succeeding slides will contain the errata for this slide.
The document discusses the bootloaders for the BeagleBone Black system. It describes the memory organization and booting process, including the roles of the X-Loader and U-Boot bootloaders. The X-Loader is described as the first stage bootloader that is derived from U-Boot and runs in internal SRAM. It loads the second stage U-Boot bootloader. U-Boot is then described as the universal bootloader that can be ported to different boards with minimal changes and is responsible for loading the Linux kernel from external DDR memory.
The document provides an overview of the initialization process in the Linux kernel from start_kernel to rest_init. It lists the functions called during this process organized by category including functions for initialization of multiprocessor support (SMP), memory management (MM), scheduling, timers, interrupts, and architecture specific setup. The setup_arch section focuses on x86 architecture specific initialization functions such as reserving memory regions, parsing boot parameters, initializing memory mapping and MTRRs.
Embitude's Linux SPI Drivers Training Slides. Contains the details of AM335X specific low level programming, SPI components such as SPI Master Driver, SPI Client Driver, Device Tree for SPI
This document discusses bootloaders for embedded systems. It defines a bootloader as the first code executed after a system powers on or resets that is responsible for loading the operating system kernel. The document then describes the tasks of a bootloader like initializing hardware, loading binaries from storage, and providing a shell. It outlines the booting process differences between desktops and embedded systems. Finally, it focuses on the universal bootloader U-Boot, describing its directory structure, configuration, building process, and commands.
The document summarizes Linux synchronization mechanisms including semaphores and mutexes. It discusses:
1. Semaphores can be used to solve producer-consumer problems and are implemented using a count and wait list.
2. Mutexes enforce serialization on shared memory and have fast, mid, and slow paths for lock and unlock. The mid path uses optimistic spinning and OSQs.
3. Only the lock owner can unlock a mutex, and mutexes transition to the slow path if the owner is preempted, a spinner is preempted, or the owner sleeps.
A bootloader loads an operating system after hardware tests. It begins by initializing hardware and loading the BIOS. The BIOS then loads the master boot record from the disk, which loads secondary bootloaders. These load the operating system by accessing memory in both real and protected modes. The boot process involves loading kernel files and an initial ramdisk to start processes and mount the full filesystem.
The document discusses Linux device trees and how they are used to describe hardware configurations. Some key points:
- A device tree is a data structure that describes hardware connections and configurations. It allows the same kernel to support different hardware.
- Device trees contain nodes that represent devices, with properties like compatible strings to identify drivers. They describe things like memory maps, interrupts, and bus attachments.
- The kernel uses the device tree passed by the bootloader to identify and initialize hardware. Drivers match based on compatible properties.
- Device tree files with .dts extension can be compiled to binary blobs (.dtb) and overlays (.dtbo) used at boot time to describe hardware.
The document discusses USB drivers and provides an overview of USB host and gadget subsystems in Linux. It describes USB host and gadget device driver types, registration processes, data structures used, and key functions for interacting with USB controllers, the USB core, and endpoints. The document outlines views of the USB host and gadget subsystems and how drivers interface with lower-level USB controller drivers and higher-level user applications through the USB core.
This document discusses Linux kernel debugging. It provides an overview of debugging techniques including collecting system information, handling failures, and using printk(), KGDB, and debuggers. Key points covered are the components of a debugger, how KGDB can be used with gdb to debug interactively, analyzing crash data, and some debugging tricks and print functions.
Part 02 Linux Kernel Module ProgrammingTushar B Kute
Presentation on "Linux Kernel Module Programming".
Presented at Army Institute of Technology, Pune for FDP on "Basics of Linux Kernel Programming". by Tushar B Kute (http://tusharkute.com).
This slide provides a basic understanding of hypervisor support in ARM v8 and above processors. And these slides (intent to) give some guidelines to automotive engineers to compare and choose right solution!
The document discusses building an embedded Linux system on a Samsung 2410 platform. It covers basic concepts like cross-development environments, developing on a host machine to target embedded devices. It also covers configuring and building the Linux kernel, creating a root filesystem with BusyBox utilities, setting up the boot process, and developing device drivers. The goal is to provide guidance on creating a custom embedded Linux system targeting specific hardware.
The document discusses the Linux booting procedure. It describes how when a computer is turned on, the BIOS loads the MBR which contains the bootloader. The bootloader then loads the Linux kernel and initrd. The kernel mounts the root filesystem and executes init to start essential processes and reach the default runlevel. Popular init systems include SystemV, Upstart, and Systemd which boot Linux in different ways. The document also provides an overview of the Linux filesystem structure and organization of important directories.
Linus Torvalds created Linux in 1991 as a hobby. It was inspired by MINIX and initially resembled it, using the same file system layout. Torvalds ported tools like Bash and GCC to Linux. In 1992, he posted to a newsgroup asking for feedback to improve his new operating system. This helped launch Linux development. Linux later combined with the GNU operating system and tools to become a full fledged open source alternative to proprietary operating systems.
Running Applications on the NetBSD Rump Kernel by Justin Cormack eurobsdcon
Abstract
The NetBSD rump kernel has been developed for some years now, allowing NetBSD kernel drivers to be used unmodified in many environments, for example as userspace code. However it is only since last year that it has become possible to easily run unmodified applications on the rump kernel, initially with the rump kernel on Xen port, and then with the rumprun tools to run them in userspace on Linux, FreeBSD and NetBSD. This talk will look at how this is achieved, and look at use cases, including kernel driver development, and lightweight process virtualization.
Speaker bio
Justin Cormack has been a Unix user, developer and sysadmin since the early 1990s. He is based in London and works on open source cloud applications, Lua, and the NetBSD rump kernel project. He has been a NetBSD developer since early 2014.
The document discusses porting the Linux kernel to run on the Encore Simputer, an ARM-based handheld device. It describes building the kernel from source, adding support for the Simputer's hardware including memory, display and peripherals. Finally, it mentions porting the 2.6 test kernel to the Simputer and thanks the audience.
First Steps Developing Embedded Applications using Heterogeneous Multi-core P...Toradex
Read our blog for the latest on demystifying the development of embedded systems using Heterogeneous Multicore Processing architecture powered SoCs! This might provide you with the jump start you need for your development. https://www.toradex.com/blog/first-steps-developing-embedded-applications-using-heterogeneous-multicore-processors
Debian is an open source operating system that can run on ARM architecture devices. It supports 32-bit and 64-bit ARM ports including armel, armhf, and arm64. Debian can be used on devices like Raspberry Pi, BeagleBone Black, and Cubieboard which are based on ARM processors like Cortex-A8 and Cortex-A9. These single-board computers officially support Debian distributions like Raspbian, Debian on BeagleBone, and Cubian which provide pre-compiled Debian packages optimized for the hardware.
The document discusses the Linux booting process. It begins with the BIOS loading the master boot record (MBR) from the hard disk. The MBR then loads the boot loader like GRUB or LILO. The boot loader loads the Linux kernel into memory and passes control to it. The kernel initializes hardware and loads drivers. It then launches the init process which starts essential system processes and moves the system to the default runlevel based on the /etc/inittab file.
This document provides an overview of the Linux kernel, including its history, structure, build process, installation, updating, and customization. It discusses getting the kernel source code, configuring and building the kernel, installing modules and the kernel, applying updates via patches, and determining the correct driver for PCI devices by matching the vendor and device IDs. The key steps are to find the PCI IDs, search for the IDs in kernel headers to identify the driver, search the kernel makefiles and configuration to enable that driver for compilation.
The document discusses cross-compiling native packages for Android using autotools or cmake. It describes downloading and configuring the Android NDK, which provides cross-compilation tools for ARM, x86, and MIPS architectures. It then gives steps to cross-compile the expat library as an example, including downloading the sources, extracting them, and configuring/building using the autotools system. Key points covered include limitations of the Bionic C library used on Android and associations between Android API levels and supported architectures.
This document describes how to install Oracle 10g RAC on Linux using NFS for shared storage. Key steps include:
1. Installing Oracle Enterprise Linux on two nodes and configuring networking and prerequisites.
2. Setting up NFS shares on one node for shared file systems and disks.
3. Installing the Oracle Clusterware software and configuring the two-node cluster.
This document discusses moving NEON optimizations to 64-bit ARM architectures. Some key points:
- NEON is an ARM instruction set extension that allows single-instruction multiple data (SIMD) processing. It has more registers and capabilities in AArch64, including double precision floating point.
- Migrating NEON code to AArch64 usually only requires minor changes to assembly code due to compatibility in C/intrinsics code and clearer register mappings. Existing NEON documentation still applies.
- Open source libraries and compilers support NEON optimizations, providing performance boosts such as 3-4x faster video codecs. The Android NDK fully supports 64-bit development.
- Examples show optimized
This document provides an overview of embedded Linux. It defines embedded Linux as porting the Linux kernel to run on a specific CPU and board that will be placed in an embedded device. It discusses common embedded Linux distributions and components like bootloaders, kernels, and file systems. It also outlines the process for building an embedded Linux system, developing applications for it using common free tools, and emulating or testing on real hardware.
Arm device tree and linux device driversHoucheng Lin
This document discusses how the Linux kernel supports different ARM boards using a common source code base. It describes how device tree is used to describe hardware in a board-agnostic way. The kernel initializes machine-specific code via the device tree and initializes drivers by matching compatible strings. This allows a single kernel binary to support multiple boards by abstracting low-level hardware details into the device tree rather than the kernel source. The document also contrasts the ARM approach to the x86 approach, where BIOS abstraction and standardized buses allow one kernel to support most x86 hardware.
Kernel Recipes 2013 - ARM support in the Linux kernelAnne Nicolas
Over the past two years, the support of the platforms based on ARM processor in the Linux kernel has evolved considerably. Between the use of the Device Tree, moving drivers in many features like clock management or multiplexing of pines, the platform mechanism, the changes have been numerous.
Through the experience of the speaker about the addition to the core support for ARM Marvell Armada 370/XP processors, this intervention will provide an overview of these changes in order to better understand the new organization of the code for ARM architecture in the kernel.
This talk is intended to be useful both for developers who want to add support for a new ARM processor in the kernel, but also to those wishing to understand the ARM code for porting Linux to a new card, or just the curious one.
Developing Applications for Beagle Bone Black, Raspberry Pi and SoC Single Bo...ryancox
This document discusses using Go to build applications for ARM-based single board computers like Raspberry Pi and BeagleBone. It provides an overview of the ARM architecture and popular boards, as well as how Go's toolchain supports cross-compilation to ARM. Libraries like embd for interacting with hardware are introduced. Examples of IoT projects built on these boards running Go code are also mentioned.
The document discusses how to configure, compile, and install a custom Linux kernel, including downloading the source code, configuring options such as file systems and drivers, compiling and installing the kernel, and enabling features like SMP and SELinux support. Instructions are provided for both manual and DEB package installation of the custom kernel. Key steps involve obtaining the source, running make menuconfig to configure options, compiling with make, and installing the new kernel and initrd files.
OMAP stands for Open Multimedia Applications Platform. The document discusses the OMAP5912 processor, which has an ARM and DSP integrated into a single chip. It provides requirements and steps for setting up a development environment for the OMAP5912, including using a bootloader, compiling a kernel, and creating a root filesystem. The root filesystem is then used to port applications to the OMAP5912 either temporarily via mounting or permanently by fusing to flash memory.
Steps to Build Kernel and Root Filesystem for OMAP5912sbmguys
OMAP stands for Open Multimedia Applications Platform. The document discusses the OMAP5912 processor, which has an ARM and DSP integrated into a single chip. It provides requirements and steps for setting up a development environment for the OMAP5912, including using a bootloader, compiling a kernel, and creating a root filesystem. The root filesystem is then used to port applications to the OMAP5912 either temporarily via mounting or permanently by fusing to flash memory.
IBM experts Girish and Chandu presented about A2O Core implementation on FPGA as part of JNTU A 2 DAYS Workshop . They covered the features of A2O core , how this core can be infused in FPGA
Similar to Embedded Linux/ Debian with ARM64 Platform (20)
Industry Insights Common Pitfalls and Key Considerations in Using Software Bi...SZ Lin
Modern regulations and cybersecurity standards globally now require a Software Bill of Materials (SBOM) with specific details. As a result, many companies are adopting SBOMs. Yet, compliance isn't merely technical. It involves process, inter-departmental, and supply chain communication challenges. This session explores these SBOM challenges and provides insights for effective use. Many perceive the SBOM simply as an inventory, neglecting its significance in software management, component tracking, vulnerability assessments, and compliance assurance. While automation streamlines processes, an over-reliance can miss software intricacies; thus, manual reviews remain indispensable. Assuming an SBOM alone ensures a secure software supply chain is a misconception. Though pivotal in risk identification, SBOMs form just a facet of an overarching security strategy, demanding consistent updates to counteract emerging threats. By sidestepping common missteps and adopting best practices, SBOMs can evolve from simple documentation to indispensable tools for software governance and safeguarding.
Select, manage, and backport the long term stable kernelsSZ Lin
The document discusses selecting and managing Linux kernel versions, including mainline, stable, and long-term kernels. It notes mainline kernels are released every 2-3 months with new features, while stable kernels receive only bug and security fixes. Long-term kernels provide long-term support with backported fixes for older releases. The document recommends using a release version over rolling versions for stability and outlines practices for monitoring kernels and addressing regressions.
Manage kernel vulnerabilities in the software development lifecycleSZ Lin
This document discusses managing kernel vulnerabilities in the software development lifecycle. It covers choosing proper Linux kernel versions from trusted sources, maintaining kernels through upstream first methodology, hardening configurations, automated testing, vulnerability scanning, and community collaboration on security issues. The goal is to minimize risks and costs by addressing vulnerabilities early through a defined process.
OpenChain, the ISO standard, defines effective open source compliance. This slide deck aims to let people get familiar with OpenChain specification from scratch.
OpenChain - The Industry Standard for Open Source ComplianceSZ Lin
OpenChain is a legal compliance process and standard for the implementation of open source software in the enterprise supply chain. It enables the upstream and downstream of the software supply to follow and share the open source compliance obligations accordingly; moreover, it can also help the enterprises to collaborate with the open source communities positively.
Design, Build,and Maintain the Embedded Linux PlatformSZ Lin
Using open source software to build an embedded Linux platform from scratch.
Building an embedded Linux platform is like a puzzle; placing the suitable software components in the right positions will constitute an optimal platform. However, selecting suitable components is difficult since it depends on different application scenarios. The essential components of an embedded Linux platform include the bootloader, Linux kernel, toolchain, root filesystem; it also needs the tools for image generation, upgrades, and testing. There are abundant resources in the Linux ecosystem with these components and tools; however, selecting the suitable modules and tools is still a key challenge for system designers.
[ELCE] Activities of super long term support kernel workgroup in civil infras...SZ Lin
The document summarizes the activities of the Super Long Term Support Kernel Workgroup in the Civil Infrastructure Platform Project. It discusses the workgroup's maintenance of Linux kernels for over 10 years, including applying real-time patches and maintaining the kernels as the CIP-RT version. Key tasks include participating in the Linux LTS review process, releasing CIP SLTS kernels, tracking CVEs and failed patches for the CIP kernels. The workgroup aims to provide industrial-grade, sustainable and secure kernels for critical infrastructure projects.
Using open source software to build an industrial grade embedded linux platfo...SZ Lin
Building an embedded Linux platform is like a puzzle; placing the suitable software components in the right positions will constitute an optimal platform. However, selecting suitable components is difficult since it depends on different application scenarios. The essential components of an embedded Linux platform include the bootloader, Linux kernel, toolchain, root filesystem; it also needs the tools for image generation, upgrades, and testing. There are abundant resources in the Linux ecosystem with these components and tools; however, selecting the suitable modules and tools is still a key challenge for system designers.
Take a step forward from user to maintainer or developer in open source secur...SZ Lin
There are a variety of high-quality open source security-related tools available in penetration testing tools, forensics tools, hardening tools, fuzz tools, and network monitoring tools. These tools could be used freely; however, we might face some issues while using it. Therefore, it is essential to have the ability to maintain or develop these tools. In this slide, SZ Lin introduces Security Tools Packaging Team in Debian; this team aims to maintain collaboratively many security tools and merge back tools packaged by security-oriented Debian derivatives (e.g., Kali). Also, SZ shares the experience in discussing and collaborating with open source maintainers and developers in open source security-related tools.
It's a pivotal challenge to update the software in embedded systems due to many restrictions such as unreliable network and power supply, limited bandwidth, harsh environment, etc. This slide aims to provide the background knowledge and the open source tool to achieve the software update in embedded systems.
Introduction to Civil Infrastructure PlatformSZ Lin
CIP is target to establish an open source base layer of industrial grade software to enable the use and implementation of software. This slide will introduce the current status and road map in CIP
Long-term Maintenance Model of Embedded Industrial Linux DistributionSZ Lin
To introduce a robust, secure and reliable platform for the industrial environments is a key challenge; moreover, the platform needs to survive for a long time (more than 10+ years). There are many good solutions aiming to meet these requirements, such as LTSI (Long Term Support Initiative) and CIP (Civil Infrastructure Platform). However, it still needs a high amount of maintenance and development costs in handling SoC/ hardware board in-house patch, non-upstream driver and keep source code consistent with different SoC and platform afterwards.
In this presentation, SZ Lin will introduce how to operate long-term maintenance model of embedded industrial Linux distribution. In addition, he will also address the building, deploying and testing architecture and workflow for producing a robust, secure and reliable platform.
Building, deploying and testing an industrial linux platform @ Open source su...SZ Lin
To introduce a robust, secure and reliable platform for the industrial environments is a key challenge. Therefore, running with the industrial-grade Linux distribution to fulfill the requirements mentioned above is imperative. The Linux distribution includes the Linux kernel and user space. Based on this testing design, the distribution will be built, deployed and tested in the device under automatic test by using continuous integration development practice to withstand the harsh industrial environments. In this presentation, SZ Lin will introduce how the industrial-grade Linux distribution is built, deployed and tested without human intervention, and review the test scope in both Linux kernel and user space. In addition, he will also address the design architecture of 24/7 long-term automated testing in all device under test with each release of new update.
Cellular technology with Embedded Linux - COSCUP 2016SZ Lin
This document provides steps and information for building your own Internet of Things (IoT) device using cellular technology. It discusses selecting a cellular module, enabling the device driver and utilities, and understanding cellular network generations and protocols like AT commands, QMI and MBIM. The document also addresses frequently asked questions about establishing connections and troubleshooting issues. Overall it serves as a guide for getting hands-on experience developing cellular-connected IoT devices.
This document discusses open source licenses. It begins by introducing open source/free software and different types of intellectual property like copyrights and patents. It then explains key open source licenses like the GPL, LGPL, Apache, MIT and their different permissions and conditions. Popular open source licenses used on GitHub are also shown. The document provides answers to common questions about open source licensing and references for further information.
This document discusses methods for reducing Linux boot times, focusing on hardware architecture, the boot process, kernel optimizations, and the init system. It recommends using faster storage like SSDs, optimizing bootloaders like GRUB, improving kernel decompression with LZ4, disabling unnecessary processes, and switching to systemd for network configuration to reduce boot times to as little as 2 seconds.
How to Get CNIC Information System with Paksim Ga.pptxdanishmna97
Pakdata Cf is a groundbreaking system designed to streamline and facilitate access to CNIC information. This innovative platform leverages advanced technology to provide users with efficient and secure access to their CNIC details.
Sudheer Mechineni, Head of Application Frameworks, Standard Chartered Bank
Discover how Standard Chartered Bank harnessed the power of Neo4j to transform complex data access challenges into a dynamic, scalable graph database solution. This keynote will cover their journey from initial adoption to deploying a fully automated, enterprise-grade causal cluster, highlighting key strategies for modelling organisational changes and ensuring robust disaster recovery. Learn how these innovations have not only enhanced Standard Chartered Bank’s data infrastructure but also positioned them as pioneers in the banking sector’s adoption of graph technology.
In the rapidly evolving landscape of technologies, XML continues to play a vital role in structuring, storing, and transporting data across diverse systems. The recent advancements in artificial intelligence (AI) present new methodologies for enhancing XML development workflows, introducing efficiency, automation, and intelligent capabilities. This presentation will outline the scope and perspective of utilizing AI in XML development. The potential benefits and the possible pitfalls will be highlighted, providing a balanced view of the subject.
We will explore the capabilities of AI in understanding XML markup languages and autonomously creating structured XML content. Additionally, we will examine the capacity of AI to enrich plain text with appropriate XML markup. Practical examples and methodological guidelines will be provided to elucidate how AI can be effectively prompted to interpret and generate accurate XML markup.
Further emphasis will be placed on the role of AI in developing XSLT, or schemas such as XSD and Schematron. We will address the techniques and strategies adopted to create prompts for generating code, explaining code, or refactoring the code, and the results achieved.
The discussion will extend to how AI can be used to transform XML content. In particular, the focus will be on the use of AI XPath extension functions in XSLT, Schematron, Schematron Quick Fixes, or for XML content refactoring.
The presentation aims to deliver a comprehensive overview of AI usage in XML development, providing attendees with the necessary knowledge to make informed decisions. Whether you’re at the early stages of adopting AI or considering integrating it in advanced XML development, this presentation will cover all levels of expertise.
By highlighting the potential advantages and challenges of integrating AI with XML development tools and languages, the presentation seeks to inspire thoughtful conversation around the future of XML development. We’ll not only delve into the technical aspects of AI-powered XML development but also discuss practical implications and possible future directions.
Removing Uninteresting Bytes in Software FuzzingAftab Hussain
Imagine a world where software fuzzing, the process of mutating bytes in test seeds to uncover hidden and erroneous program behaviors, becomes faster and more effective. A lot depends on the initial seeds, which can significantly dictate the trajectory of a fuzzing campaign, particularly in terms of how long it takes to uncover interesting behaviour in your code. We introduce DIAR, a technique designed to speedup fuzzing campaigns by pinpointing and eliminating those uninteresting bytes in the seeds. Picture this: instead of wasting valuable resources on meaningless mutations in large, bloated seeds, DIAR removes the unnecessary bytes, streamlining the entire process.
In this work, we equipped AFL, a popular fuzzer, with DIAR and examined two critical Linux libraries -- Libxml's xmllint, a tool for parsing xml documents, and Binutil's readelf, an essential debugging and security analysis command-line tool used to display detailed information about ELF (Executable and Linkable Format). Our preliminary results show that AFL+DIAR does not only discover new paths more quickly but also achieves higher coverage overall. This work thus showcases how starting with lean and optimized seeds can lead to faster, more comprehensive fuzzing campaigns -- and DIAR helps you find such seeds.
- These are slides of the talk given at IEEE International Conference on Software Testing Verification and Validation Workshop, ICSTW 2022.
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Speck&Tech
ABSTRACT: A prima vista, un mattoncino Lego e la backdoor XZ potrebbero avere in comune il fatto di essere entrambi blocchi di costruzione, o dipendenze di progetti creativi e software. La realtà è che un mattoncino Lego e il caso della backdoor XZ hanno molto di più di tutto ciò in comune.
Partecipate alla presentazione per immergervi in una storia di interoperabilità, standard e formati aperti, per poi discutere del ruolo importante che i contributori hanno in una comunità open source sostenibile.
BIO: Sostenitrice del software libero e dei formati standard e aperti. È stata un membro attivo dei progetti Fedora e openSUSE e ha co-fondato l'Associazione LibreItalia dove è stata coinvolta in diversi eventi, migrazioni e formazione relativi a LibreOffice. In precedenza ha lavorato a migrazioni e corsi di formazione su LibreOffice per diverse amministrazioni pubbliche e privati. Da gennaio 2020 lavora in SUSE come Software Release Engineer per Uyuni e SUSE Manager e quando non segue la sua passione per i computer e per Geeko coltiva la sua curiosità per l'astronomia (da cui deriva il suo nickname deneb_alpha).
Best 20 SEO Techniques To Improve Website Visibility In SERPPixlogix Infotech
Boost your website's visibility with proven SEO techniques! Our latest blog dives into essential strategies to enhance your online presence, increase traffic, and rank higher on search engines. From keyword optimization to quality content creation, learn how to make your site stand out in the crowded digital landscape. Discover actionable tips and expert insights to elevate your SEO game.
Dr. Sean Tan, Head of Data Science, Changi Airport Group
Discover how Changi Airport Group (CAG) leverages graph technologies and generative AI to revolutionize their search capabilities. This session delves into the unique search needs of CAG’s diverse passengers and customers, showcasing how graph data structures enhance the accuracy and relevance of AI-generated search results, mitigating the risk of “hallucinations” and improving the overall customer journey.
HCL Notes and Domino License Cost Reduction in the World of DLAUpanagenda
Webinar Recording: https://www.panagenda.com/webinars/hcl-notes-and-domino-license-cost-reduction-in-the-world-of-dlau/
The introduction of DLAU and the CCB & CCX licensing model caused quite a stir in the HCL community. As a Notes and Domino customer, you may have faced challenges with unexpected user counts and license costs. You probably have questions on how this new licensing approach works and how to benefit from it. Most importantly, you likely have budget constraints and want to save money where possible. Don’t worry, we can help with all of this!
We’ll show you how to fix common misconfigurations that cause higher-than-expected user counts, and how to identify accounts which you can deactivate to save money. There are also frequent patterns that can cause unnecessary cost, like using a person document instead of a mail-in for shared mailboxes. We’ll provide examples and solutions for those as well. And naturally we’ll explain the new licensing model.
Join HCL Ambassador Marc Thomas in this webinar with a special guest appearance from Franz Walder. It will give you the tools and know-how to stay on top of what is going on with Domino licensing. You will be able lower your cost through an optimized configuration and keep it low going forward.
These topics will be covered
- Reducing license cost by finding and fixing misconfigurations and superfluous accounts
- How do CCB and CCX licenses really work?
- Understanding the DLAU tool and how to best utilize it
- Tips for common problem areas, like team mailboxes, functional/test users, etc
- Practical examples and best practices to implement right away
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...SOFTTECHHUB
The choice of an operating system plays a pivotal role in shaping our computing experience. For decades, Microsoft's Windows has dominated the market, offering a familiar and widely adopted platform for personal and professional use. However, as technological advancements continue to push the boundaries of innovation, alternative operating systems have emerged, challenging the status quo and offering users a fresh perspective on computing.
One such alternative that has garnered significant attention and acclaim is Nitrux Linux 3.5.0, a sleek, powerful, and user-friendly Linux distribution that promises to redefine the way we interact with our devices. With its focus on performance, security, and customization, Nitrux Linux presents a compelling case for those seeking to break free from the constraints of proprietary software and embrace the freedom and flexibility of open-source computing.
AI 101: An Introduction to the Basics and Impact of Artificial IntelligenceIndexBug
Imagine a world where machines not only perform tasks but also learn, adapt, and make decisions. This is the promise of Artificial Intelligence (AI), a technology that's not just enhancing our lives but revolutionizing entire industries.
Building Production Ready Search Pipelines with Spark and MilvusZilliz
Spark is the widely used ETL tool for processing, indexing and ingesting data to serving stack for search. Milvus is the production-ready open-source vector database. In this talk we will show how to use Spark to process unstructured data to extract vector representations, and push the vectors to Milvus vector database for search serving.
Pushing the limits of ePRTC: 100ns holdover for 100 daysAdtran
At WSTS 2024, Alon Stern explored the topic of parametric holdover and explained how recent research findings can be implemented in real-world PNT networks to achieve 100 nanoseconds of accuracy for up to 100 days.
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slackshyamraj55
Discover the seamless integration of RPA (Robotic Process Automation), COMPOSER, and APM with AWS IDP enhanced with Slack notifications. Explore how these technologies converge to streamline workflows, optimize performance, and ensure secure access, all while leveraging the power of AWS IDP and real-time communication via Slack notifications.
1. Embedded Linux/ Debian
with ARM64 Platform
Harder Better Faster Stronger
SZ LIN
szlin@debian.org
1
Date: 2016/11/17
2. 2
SZLIN (林上智)
➔ Debian Developer
➔ Industrial Grade Linux Distribution
➔ Blog: https://szlin.me
About Me
3. 3
Trends
That’s really what ARM has to look at when
defining a new architecture. That is the nature of
our business, we need to look a long way forward,
and plan.
Why ARMv8 instead of using ARMv7+ LPAE [11]
5. 5
ARMv7 -> ARMv8 [2]
32-bit ARMv7-A
compatibility
Cryptography support
Dual Instruction set
architecture
Improved support for
virtualization
6. 6
AArch32 (compat) Support [8]
Support ARMv7 Linux EABI for compat tasks
• Different set of system calls (unistd32.h)
• Compat user structures
• No SWP instruction, no unaligned LDM/STM
access
Supports both ARM and Thumb-2 32-bit user
tasks
Supports 32-bit ptrace
Address space limited to 4GB
Emulated vectors page
• ARM Linux EABI expects helper routines in the
vectors page accessible by user tasks
8. 8
ARMv8-A Designed for Efficiency [2]
Enhancement Why it Matters
64-bit architecture Efficient access to large datasets
Increased number and size of general
purpose registers
Gains in performance and code
efficiency
Double the number and size of NEON
registers
Enhanced capacity of multimedia
engine
Cryptography support Over 10x software encryption
performance New security models for
consumer and enterprise
9. 9
ARMv8-A Family [3]
Core Instruction cycle DMIPS/MHz
Processor
Architecture
big.LITTLE role
Cortex-A32 In-order execution 2.0 ~ 2.1 32 Unknown
Cortex-A35 In-order execution 1.78 64 little
Cortex-A53
In-order execution 2.24 64
little
Cortex-A57 Out-of-order
execution
4.6 64
big
Cortex-A72 Out-of-order
execution
4.72 64
big
Cortex-A73 Out-of-order
execution
4.8 64 big
10. 10
The ARM Registers Comparison [4]
AArch32 AArch64 Remarks
32-bit General purpose registers r0 - r14 w0 - w30
aliased to lower half of each
64-bit register in AArch64
64-bit General purpose registers - x0 - x30
Program counter r15 aka. pc PC
not directly accessible in
AArch64
Zero register -
x31 / w31 aka. xzr /
wzr
in most instructions, except
as a base register for address
generation
Stack pointer r13 SP
encoded as x31 on address
generation
Procedure call link register r14 x30
11. 11
ARMv7
name
AArch64/ARMv8
name
Remarks
Monitor mode EL3
highest exception level,
mostly for firmware
HYP mode EL2
exception level for
hypervisors like Xen (or
parts of KVM)
SVC mode EL1
the Linux kernel is
running in this
USR mode EL0 for unprivileged userland
The ARM Execution Mode [4][8]
12. 12
Memory Layout [15]
AARCH64
It allows up to 4 levels of translation
tables with a 4KB page size and up to
3 levels with a 64KB page size.
13. 13
Memory Layout [9][15]
32 bit address space:
• 4GB of virtual addresses
• 1MPages
• Each entry is 4 bytes (a 32 bit physical
address)
• Page size : 4kb
14. 14
Memory Layout [14][15]
AArch64 Linux uses either 3 levels or 4 levels of
translation tables with the 4KB page
configuration, allowing 39-bit (512GB) or 48-
bit (256TB) virtual addresses, respectively, for
both user and kernel.
64 bit address space
• 16 exabytes(1018) of virtual address space
• 4PetaPages (1015)
• Entry is 8 bytes
• Page size : 4kb/ 64kb
16. 16
Memory Layout [14]
With 64KB pages, only 2 levels of translation
tables, allowing 42-bit (4TB) virtual address,
are used but the memory layout is the same.
17. 17
The ARM64 with Linux Kernel [5]
First patch in Kernel 3.7
Without real hardware
First ARM64 SoC supported in Kernel 3.11
2013/6
Second ARM64 SoC supported in Kernel 3.18
2014/12
Different assembly code/ ABI between ARM32/64
AArch64 is the name for the 64-bit ARM architecture
18. 18
The ARM64 with Linux Kernel [5]
Device tree
arch/arm64/boot/dts/<vendor>/
Compressed Kernel
arch/arm64/boot/Image.gz
No more “arch/arm64/mach-<soc>” [7]
No more C files, all SoC features should be handled by drivers
Or it can go “drivers/soc” if it cannot fit an existing drivers
No more uImage [7]
Incompatible with multiplatform kernels
Switch to bootz command in bootloader
19. 19
The ARM64 with Debian [6]
First release in Debian 8
AARCH64 Toolchain in Debian
Package: crossbuild-essential-arm64
aarch64-linux-gnu-gcc
Build ARM64 Debian root filesytem via debootstrap
24. 24
Build Kernel 4.1…with Error
root@szlin:/home/szlin/work/Kernel/moxa_linux/ls1043a# make -j30
CHK include/config/kernel.release
CHK include/generated/uapi/linux/version.h
HOSTCC scripts/kallsyms
CC scripts/mod/empty.o
CC scripts/mod/devicetable-offsets.s
MKELF scripts/mod/elfconfig.h
HOSTCC scripts/mod/modpost.o
HOSTCC scripts/mod/sumversion.o
In file included from include/linux/compiler.h:54:0,
from include/uapi/linux/stddef.h:1,
from include/linux/stddef.h:4,
from ./include/uapi/linux/posix_types.h:4,
from include/uapi/linux/types.h:13,
from include/linux/types.h:5,
from include/linux/mod_devicetable.h:11,
from scripts/mod/devicetable-offsets.c:2:
include/linux/compiler-gcc.h:121:30: fatal error: linux/compiler-gcc6.h: No such file or directory
#include gcc_header(__GNUC__)
^
26. 26
Build Kernel 4.1 – LZ4 is not existed in ARM 64
LZ4 is existed in ARM Kernel 4.1
But not in ARM 64… it needs patch !
27. 27
Build uImage – Failed in ARM64 [17]
> Bringing in uImage as a target on ARM might have
been a mistake, since
> now people want to bring in new targets for whate
ver boot format they
> happen to want. So it's a good idea to keep arm64 f
rom going down the
> same path and stick to the native, raw, formats.
mkimage -A arm64 -O linux -T kernel -C gzip -a 0x80080000 -e 0x80080000 -
n 4.1.0-ltsi-rt+ -d arch/arm64/boot/Image.gz uImage
No, there should be no uImage target on
arm64. Newer u-boots can
already boot an ARM zImage (through the
bootz command), and should be
enhanced as needed to boot a vmlinux if
needed.
However, we can still make uImage manually
30. 30
Pre-download pure root filesystem
1. Build pure Debian root filesystem via “debootstrap” command
debootstrap --arch=arm64 --foreign --keyring /usr/share/keyrings/debian-archive-keyring.gpg --
exclude=debfoster jessie *DIRECTORY*
Note:“man debootstrap” to get further information
2. Download ARM64 “sudo” package
https://packages.debian.org/jessie/sudo
3. Put “sudo” package into *DIRECTORY*/var/cache/apt/archives/
DEMO: https://github.com/szlin/Pure_Debian_aarch64.git
51. 51
ARM 64 Programming [16]
Structure padding
1. For ARM32
int a : 4
long b: 4
int c: 4
Total = 12 bytes
2. For ARM64
int a : 4
long b: 8
int c: 4
Total = 20 bytes
52. 52
ARM 64 Programming [16]
Structure padding
1. For ARM64
int a : 4
long b: 8
int c: 4
Total = 20 bytes
For double-word aligned, it needs to introduce four
bytes of padding between the end of the first ”int” and
the ”long”