The Minimal OpenRISC System on Chip is a System-on-Chip (SoC) implementation with standard IP cores available at OpenCores. This implementation is composed by a standard project, comprehending the standard IP cores necessary for a SoC embedding the OpenRISC implementation or1200.
This document discusses router hacking using open source software like OpenWRT. It provides an overview of OpenWRT, describing its supported hardware platforms and communities. It discusses building OpenWRT packages and images, and supported router platforms such as the Linksys WRT54G, ASUS WL-700gE, Meraki Mini, and LaFonera which are readily available in Taiwan. It warns of risks when modifying router firmware.
This document describes how to configure a router running OpenWrt. It covers getting started, installing and initial configuration. It also provides details on configuring the network and wireless settings in OpenWrt, including IPv4, IPv6 and switch configuration. Advanced configuration topics like hotplug, init scripts and network scripts are also outlined.
The goal of this test plan is to test SPECTRE and MELTDOWN performance impact on Intel CPU. We will run CPU intensive workloads in Virtual Machine(s) running on non-patched and patched ESXi host and observe performance impact.
We will test impact on network, storage and memory performance because these I/O intensive workloads requires CPU caching which is impacted by vulnerabilities remediation.
Qualification of performance is very specific and hard subject. The performance impact varies across different hardware and software configurations. However, performed tests are very well described in this document so the reader can understand all conditions of the test and observed results. The reader can also perform tests on his specific hardware and software configurations.
QNX is a commercial real-time operating system used primarily in embedded systems. It was developed in the 1980s and was acquired by BlackBerry in 2010. QNX uses a microkernel architecture and has been used in vehicles, mobile phones, and other devices. It provides features like distributed processing, multitasking, a file system manager, and an improved graphical user interface. QNX is installed using installation media and guides the user through setting up partitions and copying files to the hard disk.
Defeating x64: Modern Trends of Kernel-Mode RootkitsAlex Matrosov
Versions of Microsoft Windows 64 bits were considered resistant against kernel mode rootkits because integrity checks performed by the system code. However, today there are examples of malware that use methods to bypass the security mechanisms Implemented. This presentation focuses on issues x64 acquitectura security, specifically in the signature policies kernel mode code and the techniques used by modern malware to sauté. We analyze the techniques of penetration of the address space of kernel mode rootkits used by modern in-the-wild: - Win64/Olmarik (TDL4) - Win64/TrojanDownloader.Necurs (rootkit dropper) - NSIS / TrojanClicker.Agent.BJ (rootkit dropper) special attention is given to bootkit Win64/Olmarik (TDL4) for being the most prominent example of a kernel mode rootkit aimed at 64-bit Windows systems. Detail the remarkable features of TDL4 over its predecessor (TDL3/TDL3 +): the development of user mode components and kernel mode rootkit techniques used to bypass the HIPS, hidden and system files as bootkit functionality. Finally, we describe possible approaches to the removal of an infected computer and presents a free forensics tool for the dump file system hidden TDL.
Debugging linux kernel tools and techniquesSatpal Parmar
This document discusses tools and techniques for debugging the Linux kernel, including debuggers like gdb, built-in debugging facilities, system logs, and crash dump analysis tools like LKCD. It outlines common issues like kernel crashes and hangs, and provides an example of analyzing an "oops" crash dump to identify the failing line of code through tools like ksymoops. It also covers generating a full system memory dump using LKCD for thorough crash investigation.
I have collected all the necessary information about various hardware blocks of Nvidia Tegra K1 processor and put them together. It would be helpful for those who are/going to work on it by giving the details in a very concise fashion.
This document discusses router hacking using open source software like OpenWRT. It provides an overview of OpenWRT, describing its supported hardware platforms and communities. It discusses building OpenWRT packages and images, and supported router platforms such as the Linksys WRT54G, ASUS WL-700gE, Meraki Mini, and LaFonera which are readily available in Taiwan. It warns of risks when modifying router firmware.
This document describes how to configure a router running OpenWrt. It covers getting started, installing and initial configuration. It also provides details on configuring the network and wireless settings in OpenWrt, including IPv4, IPv6 and switch configuration. Advanced configuration topics like hotplug, init scripts and network scripts are also outlined.
The goal of this test plan is to test SPECTRE and MELTDOWN performance impact on Intel CPU. We will run CPU intensive workloads in Virtual Machine(s) running on non-patched and patched ESXi host and observe performance impact.
We will test impact on network, storage and memory performance because these I/O intensive workloads requires CPU caching which is impacted by vulnerabilities remediation.
Qualification of performance is very specific and hard subject. The performance impact varies across different hardware and software configurations. However, performed tests are very well described in this document so the reader can understand all conditions of the test and observed results. The reader can also perform tests on his specific hardware and software configurations.
QNX is a commercial real-time operating system used primarily in embedded systems. It was developed in the 1980s and was acquired by BlackBerry in 2010. QNX uses a microkernel architecture and has been used in vehicles, mobile phones, and other devices. It provides features like distributed processing, multitasking, a file system manager, and an improved graphical user interface. QNX is installed using installation media and guides the user through setting up partitions and copying files to the hard disk.
Defeating x64: Modern Trends of Kernel-Mode RootkitsAlex Matrosov
Versions of Microsoft Windows 64 bits were considered resistant against kernel mode rootkits because integrity checks performed by the system code. However, today there are examples of malware that use methods to bypass the security mechanisms Implemented. This presentation focuses on issues x64 acquitectura security, specifically in the signature policies kernel mode code and the techniques used by modern malware to sauté. We analyze the techniques of penetration of the address space of kernel mode rootkits used by modern in-the-wild: - Win64/Olmarik (TDL4) - Win64/TrojanDownloader.Necurs (rootkit dropper) - NSIS / TrojanClicker.Agent.BJ (rootkit dropper) special attention is given to bootkit Win64/Olmarik (TDL4) for being the most prominent example of a kernel mode rootkit aimed at 64-bit Windows systems. Detail the remarkable features of TDL4 over its predecessor (TDL3/TDL3 +): the development of user mode components and kernel mode rootkit techniques used to bypass the HIPS, hidden and system files as bootkit functionality. Finally, we describe possible approaches to the removal of an infected computer and presents a free forensics tool for the dump file system hidden TDL.
Debugging linux kernel tools and techniquesSatpal Parmar
This document discusses tools and techniques for debugging the Linux kernel, including debuggers like gdb, built-in debugging facilities, system logs, and crash dump analysis tools like LKCD. It outlines common issues like kernel crashes and hangs, and provides an example of analyzing an "oops" crash dump to identify the failing line of code through tools like ksymoops. It also covers generating a full system memory dump using LKCD for thorough crash investigation.
I have collected all the necessary information about various hardware blocks of Nvidia Tegra K1 processor and put them together. It would be helpful for those who are/going to work on it by giving the details in a very concise fashion.
The document describes the JA108, a single-chip accelerator that enables faster and more energy-efficient execution of Java bytecode. It has hardware that accelerates most Java bytecode instructions and interfaces with external SRAM and Flash memory. It integrates transparently into systems without requiring changes to software or tools. The JA108 executes bytecode independently while the host processor services interrupts, improving overall system performance for Java applications.
This document provides an overview of various diagnostic tools available for Sun servers, including:
1. SP Diags (stinger) and spdiag Tool for running diagnostics from the Service Processor.
2. SUNvts, PC Check, and HDT for running comprehensive hardware tests and debugging.
3. CSTH, HERD, EDAC, and mcelog for monitoring hardware errors and machine checks.
This presentation is about such well-known vulnerabilities as Meltdown and Spectre and the way they use imperfections of modern processors on an architectural level. In this regard, ARM architecture, which is now a standard in embedded system, is discussed.
The talk was delivered by Andrii Lukin (Senior Software Engineer, Consultant, GlobalLogic) at GlobalLogic Embedded Career Day #2 on February 10, 2018.
More about GlobalLogic Embedded Career Day #2: https://www.globallogic.com/ua/events/globallogic-kyiv-embedded-career-day-2-materials
HKG18-TR14 - Postmortem Debugging with CoresightLinaro
Session ID: HKG18-TR14
Session Name: HKG18-TR14 - Postmortem Debugging with Coresight
Speaker: Leo Yan
Track: Training
★ Session Summary ★
For most cases we can easily debug with kernel's oops dumping info, but sometimes we need to know more information for program execution flow before the issue happens. So we can rely on two tracing methods to reproduce the program execution flow, one method is using software tracing which is kernel's pstore method; another method is to rely on Coresight hardware tracing, this method also can avoid extra workload introduced by tracing itself. Coresight has provided two mechanisms for Postmortem debugging, one method is Coresight CPU debug module so we can extract CPU program counter info, this is quite straightforward to debug CPU lockup issue; Another is Coresight panic kdump, we connect kernel kdump mechanism to extract Coresight tracing data so we can reproduce the last execution flow before panic (even hang issue with some tweaking in kernel). This session wants to go through these topics and demonstrate the debugging tools on 96boards Hikey in 25 minutes session.
---------------------------------------------------
★ Resources ★
Event Page: http://connect.linaro.org/resource/hkg18/hkg18-tr14/
Presentation: http://connect.linaro.org.s3.amazonaws.com/hkg18/presentations/hkg18-tr14.pdf
Video: http://connect.linaro.org.s3.amazonaws.com/hkg18/videos/hkg18-tr14.mp4
---------------------------------------------------
★ Event Details ★
Linaro Connect Hong Kong 2018 (HKG18)
19-23 March 2018
Regal Airport Hotel Hong Kong
---------------------------------------------------
Keyword: Training
'http://www.linaro.org'
'http://connect.linaro.org'
---------------------------------------------------
Follow us on Social Media
https://www.facebook.com/LinaroOrg
https://www.youtube.com/user/linaroorg?sub_confirmation=1
https://www.linkedin.com/company/1026961
The MYC-CZU3EG CPU Module is a powerful MPSoC System-on-Module (SoM) based on Xilinx Zynq UltraScale+ ZU3EG which features a 1.2 GHz quad-core ARM Cortex-A53 64-bit application processor
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
1) Verified boot is the process of assuring users of the integrity of software running on a device by reducing risks from malware and preventing rollbacks to vulnerable past versions. It uses hashing, public key cryptography, and tamper-evident storage.
2) Android Verified Boot 2.0 (AVB) is Google's recommended method for verified boot integration. It uses a signed VBMeta structure containing hashes, hashtrees and rollback indexes to verify the integrity of partitions before booting.
3) AVB supports features like A/B partitions, locked/unlocked device states, and delegates verification authority through chained partitions. It interacts with bootloaders, uses avbtool to generate signatures,
The document provides information on the HPE ProLiant DL20 Gen10 Server, including:
- It is a 1U rack server powered by Intel Xeon E, Pentium, and Core i3 processors, offering flexibility and value.
- Standard features include Intel C242 chipset, up to 64GB memory, 1Gb Ethernet ports, and various storage options.
- It comes in various pre-configured models for entry, performance, and solution workloads.
Fault tolerant platforms for manufacturing applicationsARC Advisory Group
New, low-cost fault-tolerant platforms are now available for Microsoft Windows 2000 environments that could help ensure critical manufacturing information is always available. These systems offer 99.999% availability and use different approaches like fully replicated hardware with duplicate components or separating computing and I/O processing across multiple servers. While cluster solutions provide failover, fault-tolerant solutions ensure failure and recovery is transparent to users with no data or downtime. Manufacturers should consider these platforms for automation systems, production management systems, and other critical applications.
Learn How to Develop Embedded System for ARM @ 2014.12.22 JuluOSDevJian-Hong Pan
This document provides an overview of how to configure GPIO pins on an STM32F4 microcontroller. It begins with the speaker's background and experience with ARM embedded systems. It then discusses the GPIO block of the STM32F4 chip and shows code from an example blinky project that initializes GPIO pins to blink LEDs. The document explains where the GPIO API definitions are located in the STM32F4 header files and library. It provides details on configuring GPIO pins for input or output modes. Finally, it summarizes the key GPIO registers used to configure the pin modes and states.
Squash Those IoT Security Bugs with a Hardened System ProfileSteve Arnold
Although the tools and documentation have been around a long time, the industry as a whole has been woefully slow at taking security engineering seriously (even more so in the embedded world). The current mainline kernel includes several access control systems that reduce the risk of bugs escalating into high-level security compromises, such as the venerable SELinux (which is enabled by default in Android 4.4 and several "enterprise" Linux distributions). This presentation focuses on a complementary set of security mechanisms that work independently from the overlying frameworks: PIE toolchain hardening, PAX kernel hardening, and the PAX userland tools. These technologies work together to demote whole classes of bugs from headline-grabbing remote compromise and/or data theft exploits to "mere" DoS annoyances.
Mateusz 'j00ru' Jurczyk - Windows Kernel Trap Handler and NTVDM Vulnerabiliti...DefconRussia
The document describes vulnerabilities found in the Windows kernel trap handlers and NTVDM subsystem. It provides a case study of vulnerabilities disclosed in MS13-063, including CVE-2013-3196 which allowed a write-what-where condition in the nt!PushInt handler due to improper validation of operands during emulation of 16-bit instructions. The document also covers prior research on NTVDM vulnerabilities and the architecture of legacy software execution in Windows, highlighting the complex kernel interfaces and large attack surface involved in supporting older programs.
Nvidia’s tegra line of processors for mobile devices2 2Sukul Yarraguntla
Nvidia's Tegra line of system on chips (SoCs) uses a heterogeneous multi-processor architecture with purpose-optimized processors to provide high performance for mobile devices while maintaining low power consumption and long battery life. The Tegra architecture includes dual CPU cores, a GPU, and dedicated cores for video/image processing, audio, and more. By selectively powering processors for specific tasks like music, video, or games, Tegra can deliver all-day battery life while supporting high-definition multimedia experiences.
Porting a new architecture (NDS32) to open wrt projectMacpaul Lin
The document discusses porting a new RISC architecture called NDS32 to the OpenWrt project. It provides details about NDS32 such as the CPU cores and benefits. It then explains the framework of OpenWrt's build system and the flexibility it provides. Finally, it outlines the specific porting items needed to support NDS32 in OpenWrt, including changes to definitions, the toolchain, target, and other components.
This document discusses the history and evolution of bootkits from legacy BIOS to UEFI environments. It describes various bootkit techniques used in BIOS and UEFI, including MBR/VBR modification, hidden file systems, and replacing bootloaders. It also covers attacks against secure boot and forensic tools for analyzing firmware like HiddenFsReader and CHIPSEC.
Linux Kernel Platform Development: Challenges and InsightsGlobalLogic Ukraine
This presentation is about the main tasks which Linux kernel platform engineers take care of. The talk includes real-life cases which help understand the role of respective specialists and might be helpful to those who consider such change in their careers.
The talk was delivered by Sam Protsenko (Software Engineer, Consultant, GlobalLogic) at GlobalLogic Embedded Career Day #2 on February 10, 2018.
More about GlobalLogic Embedded Career Day #2: https://www.globallogic.com/ua/events/globallogic-kyiv-embedded-career-day-2-materials
LAS16-111: Easing Access to ARM TrustZone – OP-TEE and Raspberry Pi 3Linaro
LAS16-111: Raspberry Pi3, OP-TEE and JTAG debugging
Speakers:
Date: September 26, 2016
★ Session Description ★
ARM TrustZone is a critical technology for securing IoT devices and systems. But awareness of TrustZone and its benefits lags within the maker community as well as among enterprises. The first step to solving this problem is lowering the cost of access. Sequitur Labs and Linaro have joined forces to address this problem by making a port of OP-TEE available on the Raspberry Pi 3. The presentation covers the value of TrustZone for securing IoT and how customers can learn more through this joint effort.
Embedded systems security remains a challenge for many developers. Awareness of mature, proven technologies such as ARM TrustZone is very low among the Maker community as well as among enterprises. As a result this foundational technology is largely being ignored as a security solution. Sequitur Labs and Linaro have taken an innovative approach combining an Open Source solution – OP-TEE with Raspberry Pi 3. The Raspberry Pi 3 is one of the world’s most popular platforms among device makers. Its value as an educational tool for learning about embedded systems development is proven.
Sequitur Labs have also enabled bare metal debugging via JTag on the Pi 3 enhancing the value of the Pi 3 as an educational tool for embedded systems development.
The presentation will focus on
ARM v8a architecture and instruction set
ARM Trusted Firmware
TrustZone and OP-TEE basics
JTAG and bare metal debugging the Raspberry Pi 3
★ Resources ★
Etherpad: pad.linaro.org/p/las16-111
Presentations & Videos: http://connect.linaro.org/resource/las16/las16-111/
★ Event Details ★
Linaro Connect Las Vegas 2016 – #LAS16
September 26-30, 2016
http://www.linaro.org
http://connect.linaro.org
Tuned is a tool that dynamically tunes Linux system settings for optimal performance based on usage profiles. It was created to allow systems to be tuned for peak performance during high workload times while saving power during idle periods. Tuned includes several predefined profiles that adjust settings for common use cases like high throughput, low latency, or power saving. New in Red Hat Enterprise Linux 7, Tuned is installed by default and will automatically select an initial profile based on system type. It also includes additional tuning capabilities and monitoring plugins for even more dynamic optimization of subsystems.
This document provides an index and overview of topics to be covered in a course on embedded systems. The index lists subjects like computer system components, microprocessors, memory, I/O, and microcontrollers. Diagrams are included to illustrate the basic structure of a computer system and a microprocessor. The document promotes sharing code in a GitHub repository and discusses differences between microcontrollers, microprocessors, and system on a chip (SOC) devices.
The document lists topics for 8th grade research projects including telescopes, Saturn, animation, and a pig project. Students will research and present on one of these science or technology topics. The list provides high-level options for hands-on or multimedia assignments.
The 6th Grade Splashes Spring 2009 newsletter contained information for parents and students. It announced upcoming events like the spring dance and field day. Important dates were provided like when report cards would be distributed and the last day of school before summer break.
The document describes the JA108, a single-chip accelerator that enables faster and more energy-efficient execution of Java bytecode. It has hardware that accelerates most Java bytecode instructions and interfaces with external SRAM and Flash memory. It integrates transparently into systems without requiring changes to software or tools. The JA108 executes bytecode independently while the host processor services interrupts, improving overall system performance for Java applications.
This document provides an overview of various diagnostic tools available for Sun servers, including:
1. SP Diags (stinger) and spdiag Tool for running diagnostics from the Service Processor.
2. SUNvts, PC Check, and HDT for running comprehensive hardware tests and debugging.
3. CSTH, HERD, EDAC, and mcelog for monitoring hardware errors and machine checks.
This presentation is about such well-known vulnerabilities as Meltdown and Spectre and the way they use imperfections of modern processors on an architectural level. In this regard, ARM architecture, which is now a standard in embedded system, is discussed.
The talk was delivered by Andrii Lukin (Senior Software Engineer, Consultant, GlobalLogic) at GlobalLogic Embedded Career Day #2 on February 10, 2018.
More about GlobalLogic Embedded Career Day #2: https://www.globallogic.com/ua/events/globallogic-kyiv-embedded-career-day-2-materials
HKG18-TR14 - Postmortem Debugging with CoresightLinaro
Session ID: HKG18-TR14
Session Name: HKG18-TR14 - Postmortem Debugging with Coresight
Speaker: Leo Yan
Track: Training
★ Session Summary ★
For most cases we can easily debug with kernel's oops dumping info, but sometimes we need to know more information for program execution flow before the issue happens. So we can rely on two tracing methods to reproduce the program execution flow, one method is using software tracing which is kernel's pstore method; another method is to rely on Coresight hardware tracing, this method also can avoid extra workload introduced by tracing itself. Coresight has provided two mechanisms for Postmortem debugging, one method is Coresight CPU debug module so we can extract CPU program counter info, this is quite straightforward to debug CPU lockup issue; Another is Coresight panic kdump, we connect kernel kdump mechanism to extract Coresight tracing data so we can reproduce the last execution flow before panic (even hang issue with some tweaking in kernel). This session wants to go through these topics and demonstrate the debugging tools on 96boards Hikey in 25 minutes session.
---------------------------------------------------
★ Resources ★
Event Page: http://connect.linaro.org/resource/hkg18/hkg18-tr14/
Presentation: http://connect.linaro.org.s3.amazonaws.com/hkg18/presentations/hkg18-tr14.pdf
Video: http://connect.linaro.org.s3.amazonaws.com/hkg18/videos/hkg18-tr14.mp4
---------------------------------------------------
★ Event Details ★
Linaro Connect Hong Kong 2018 (HKG18)
19-23 March 2018
Regal Airport Hotel Hong Kong
---------------------------------------------------
Keyword: Training
'http://www.linaro.org'
'http://connect.linaro.org'
---------------------------------------------------
Follow us on Social Media
https://www.facebook.com/LinaroOrg
https://www.youtube.com/user/linaroorg?sub_confirmation=1
https://www.linkedin.com/company/1026961
The MYC-CZU3EG CPU Module is a powerful MPSoC System-on-Module (SoM) based on Xilinx Zynq UltraScale+ ZU3EG which features a 1.2 GHz quad-core ARM Cortex-A53 64-bit application processor
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
1) Verified boot is the process of assuring users of the integrity of software running on a device by reducing risks from malware and preventing rollbacks to vulnerable past versions. It uses hashing, public key cryptography, and tamper-evident storage.
2) Android Verified Boot 2.0 (AVB) is Google's recommended method for verified boot integration. It uses a signed VBMeta structure containing hashes, hashtrees and rollback indexes to verify the integrity of partitions before booting.
3) AVB supports features like A/B partitions, locked/unlocked device states, and delegates verification authority through chained partitions. It interacts with bootloaders, uses avbtool to generate signatures,
The document provides information on the HPE ProLiant DL20 Gen10 Server, including:
- It is a 1U rack server powered by Intel Xeon E, Pentium, and Core i3 processors, offering flexibility and value.
- Standard features include Intel C242 chipset, up to 64GB memory, 1Gb Ethernet ports, and various storage options.
- It comes in various pre-configured models for entry, performance, and solution workloads.
Fault tolerant platforms for manufacturing applicationsARC Advisory Group
New, low-cost fault-tolerant platforms are now available for Microsoft Windows 2000 environments that could help ensure critical manufacturing information is always available. These systems offer 99.999% availability and use different approaches like fully replicated hardware with duplicate components or separating computing and I/O processing across multiple servers. While cluster solutions provide failover, fault-tolerant solutions ensure failure and recovery is transparent to users with no data or downtime. Manufacturers should consider these platforms for automation systems, production management systems, and other critical applications.
Learn How to Develop Embedded System for ARM @ 2014.12.22 JuluOSDevJian-Hong Pan
This document provides an overview of how to configure GPIO pins on an STM32F4 microcontroller. It begins with the speaker's background and experience with ARM embedded systems. It then discusses the GPIO block of the STM32F4 chip and shows code from an example blinky project that initializes GPIO pins to blink LEDs. The document explains where the GPIO API definitions are located in the STM32F4 header files and library. It provides details on configuring GPIO pins for input or output modes. Finally, it summarizes the key GPIO registers used to configure the pin modes and states.
Squash Those IoT Security Bugs with a Hardened System ProfileSteve Arnold
Although the tools and documentation have been around a long time, the industry as a whole has been woefully slow at taking security engineering seriously (even more so in the embedded world). The current mainline kernel includes several access control systems that reduce the risk of bugs escalating into high-level security compromises, such as the venerable SELinux (which is enabled by default in Android 4.4 and several "enterprise" Linux distributions). This presentation focuses on a complementary set of security mechanisms that work independently from the overlying frameworks: PIE toolchain hardening, PAX kernel hardening, and the PAX userland tools. These technologies work together to demote whole classes of bugs from headline-grabbing remote compromise and/or data theft exploits to "mere" DoS annoyances.
Mateusz 'j00ru' Jurczyk - Windows Kernel Trap Handler and NTVDM Vulnerabiliti...DefconRussia
The document describes vulnerabilities found in the Windows kernel trap handlers and NTVDM subsystem. It provides a case study of vulnerabilities disclosed in MS13-063, including CVE-2013-3196 which allowed a write-what-where condition in the nt!PushInt handler due to improper validation of operands during emulation of 16-bit instructions. The document also covers prior research on NTVDM vulnerabilities and the architecture of legacy software execution in Windows, highlighting the complex kernel interfaces and large attack surface involved in supporting older programs.
Nvidia’s tegra line of processors for mobile devices2 2Sukul Yarraguntla
Nvidia's Tegra line of system on chips (SoCs) uses a heterogeneous multi-processor architecture with purpose-optimized processors to provide high performance for mobile devices while maintaining low power consumption and long battery life. The Tegra architecture includes dual CPU cores, a GPU, and dedicated cores for video/image processing, audio, and more. By selectively powering processors for specific tasks like music, video, or games, Tegra can deliver all-day battery life while supporting high-definition multimedia experiences.
Porting a new architecture (NDS32) to open wrt projectMacpaul Lin
The document discusses porting a new RISC architecture called NDS32 to the OpenWrt project. It provides details about NDS32 such as the CPU cores and benefits. It then explains the framework of OpenWrt's build system and the flexibility it provides. Finally, it outlines the specific porting items needed to support NDS32 in OpenWrt, including changes to definitions, the toolchain, target, and other components.
This document discusses the history and evolution of bootkits from legacy BIOS to UEFI environments. It describes various bootkit techniques used in BIOS and UEFI, including MBR/VBR modification, hidden file systems, and replacing bootloaders. It also covers attacks against secure boot and forensic tools for analyzing firmware like HiddenFsReader and CHIPSEC.
Linux Kernel Platform Development: Challenges and InsightsGlobalLogic Ukraine
This presentation is about the main tasks which Linux kernel platform engineers take care of. The talk includes real-life cases which help understand the role of respective specialists and might be helpful to those who consider such change in their careers.
The talk was delivered by Sam Protsenko (Software Engineer, Consultant, GlobalLogic) at GlobalLogic Embedded Career Day #2 on February 10, 2018.
More about GlobalLogic Embedded Career Day #2: https://www.globallogic.com/ua/events/globallogic-kyiv-embedded-career-day-2-materials
LAS16-111: Easing Access to ARM TrustZone – OP-TEE and Raspberry Pi 3Linaro
LAS16-111: Raspberry Pi3, OP-TEE and JTAG debugging
Speakers:
Date: September 26, 2016
★ Session Description ★
ARM TrustZone is a critical technology for securing IoT devices and systems. But awareness of TrustZone and its benefits lags within the maker community as well as among enterprises. The first step to solving this problem is lowering the cost of access. Sequitur Labs and Linaro have joined forces to address this problem by making a port of OP-TEE available on the Raspberry Pi 3. The presentation covers the value of TrustZone for securing IoT and how customers can learn more through this joint effort.
Embedded systems security remains a challenge for many developers. Awareness of mature, proven technologies such as ARM TrustZone is very low among the Maker community as well as among enterprises. As a result this foundational technology is largely being ignored as a security solution. Sequitur Labs and Linaro have taken an innovative approach combining an Open Source solution – OP-TEE with Raspberry Pi 3. The Raspberry Pi 3 is one of the world’s most popular platforms among device makers. Its value as an educational tool for learning about embedded systems development is proven.
Sequitur Labs have also enabled bare metal debugging via JTag on the Pi 3 enhancing the value of the Pi 3 as an educational tool for embedded systems development.
The presentation will focus on
ARM v8a architecture and instruction set
ARM Trusted Firmware
TrustZone and OP-TEE basics
JTAG and bare metal debugging the Raspberry Pi 3
★ Resources ★
Etherpad: pad.linaro.org/p/las16-111
Presentations & Videos: http://connect.linaro.org/resource/las16/las16-111/
★ Event Details ★
Linaro Connect Las Vegas 2016 – #LAS16
September 26-30, 2016
http://www.linaro.org
http://connect.linaro.org
Tuned is a tool that dynamically tunes Linux system settings for optimal performance based on usage profiles. It was created to allow systems to be tuned for peak performance during high workload times while saving power during idle periods. Tuned includes several predefined profiles that adjust settings for common use cases like high throughput, low latency, or power saving. New in Red Hat Enterprise Linux 7, Tuned is installed by default and will automatically select an initial profile based on system type. It also includes additional tuning capabilities and monitoring plugins for even more dynamic optimization of subsystems.
This document provides an index and overview of topics to be covered in a course on embedded systems. The index lists subjects like computer system components, microprocessors, memory, I/O, and microcontrollers. Diagrams are included to illustrate the basic structure of a computer system and a microprocessor. The document promotes sharing code in a GitHub repository and discusses differences between microcontrollers, microprocessors, and system on a chip (SOC) devices.
The document lists topics for 8th grade research projects including telescopes, Saturn, animation, and a pig project. Students will research and present on one of these science or technology topics. The list provides high-level options for hands-on or multimedia assignments.
The 6th Grade Splashes Spring 2009 newsletter contained information for parents and students. It announced upcoming events like the spring dance and field day. Important dates were provided like when report cards would be distributed and the last day of school before summer break.
Businesses often overlook the value of using social media tools and practices inside an organization. Learn how to use social media within organizations to drive collaboration, build community, foster knowledge sharing, streamline work processes, and empower decision making.
School Bus Drivers Health Plan Ibt Brand3froster007
The document discusses a health plan for newly organized bus drivers being negotiated by the International Brotherhood of Teamsters. Key points include:
- The Teamsters are organizing bus drivers across the country and negotiating health benefits is an important part of this strategy.
- The IBT Voluntary Employee Benefit Trust is willing to assume the risk of covering these newly organized workers under certain conditions to offer the best benefits at a low cost.
- Several plan design options and contribution requirements are presented for negotiators to consider, including monthly composite rates and sample bargaining language.
Manejo de las complicaciones de los trastornos hipertensivosPaul Banderas
El documento describe varias complicaciones graves asociadas a la preeclampsia y el síndrome HELLP, incluyendo hematoma subcapsular hepático, coagulación intravascular diseminada, insuficiencia renal aguda y edema agudo de pulmón. Se definen cada una y se detallan su fisiopatología, clínica, exámenes de laboratorio y manejo.
Acona flow technology blowout and wellkill competenceTrygve Rinde
Acona Flow Technology is a division of the Acona Group that provides flow modeling and simulation services. It has over 380 professionals with expertise in drilling management, petroleum technology, risk management, and flow technology. Acona Flow Technology has a strong presence in Norway and other areas and serves clients in the oil and gas industry with services like well design studies, blowout analysis, relief well planning, and dispersion modeling using state-of-the-art tools and models.
Acona Flow Technology is a Norwegian consultancy with over 430 professionals specializing in flow technology, drilling management, petroleum technology, and risk compliance. They provide independent consulting services to oil companies, engineering firms, and equipment suppliers on topics such as flow modeling, process design, well management, flow assurance, and multiphase flow. They have expertise using computational fluid dynamics software and have experience validating designs and proposing optimizations.
Good, Better Bet Product Management (Seattle Product Camp keynote)Rich Mironov
Talk for Seattle Product Camp (25 Oct 14) on minimally viable product management (just enough to avoid hindering product flow) up through great product managers/leaders/thinkers
SYBSC IT SEM IV EMBEDDED SYSTEMS UNIT I Core of Embedded SystemsArti Parab Academics
The document discusses the core components of embedded systems. It states that embedded systems typically contain a central processing core that can be a microprocessor, microcontroller, digital signal processor (DSP), application-specific integrated circuit (ASIC), or programmable logic device. It also discusses other key components like sensors and actuators that interface with the outside world, communication interfaces, embedded firmware, and additional application-specific circuits.
CodeWarrior, Linux; OrCad and Hyperlynx; QMS Toolsdjerrybellott
This document describes the configuration of a Freescale 8313RDB board with a PowerQuicII 8313 processor running Linux. It includes the configuration file contents which set memory window addresses and DDR controller registers to interface external memory. It also describes using U-Boot to load Linux and the Codewarrior IDE to compile and download programs to the board.
This lab demonstrates how to create an embedded system using Xilinx Platform Studio. The steps are:
1. Use the Base System Builder wizard to generate a PowerPC system with peripherals like timers and GPIO.
2. Understand the generated system files and project structure.
3. Use SDK to compile a simple test application that prints messages and blinks LEDs.
4. Download and run the application on the FPGA board to verify it works.
The document provides an overview of softcore processors, including Xilinx Microblaze, Xilinx Picoblaze, and DUGONG. It discusses what softcore processors are, how they compare to hard cores, and how they typically fit into a design with peripherals connected via buses. Case studies of Microblaze and Picoblaze are presented, focusing on their features, uses, and interfacing. Picoblaze is highlighted as a small but powerful option for control and configuration. DUGONG is presented as a custom softcore designed for interface control and data movement within an FPGA.
This document discusses experiments with the uClinux embedded operating system on MicroBlaze processor-based systems. It provides background on MicroBlaze and describes porting uClinux to development boards using MicroBlaze. The author has gained expertise in uClinux and ported it successfully to additional hardware. Current work involves developing device drivers and implementing a more advanced boot process using U-BOOT to support configurable systems and remote updates. The goal is to produce a full-featured uClinux distribution for MicroBlaze.
FPGA IMPLEMENTATION OF DEBLOCKING FILTER CUSTOM INSTRUCTION HARDWARE ON NIOS-...VLSICS Design
This paper presents a frame work for hardware acceleration for post video processing system implemented on FPGA. The deblocking filter algorithms ported on SOC having Altera NIOS-II soft core processor.SOC designed with the help of SOPC builder .Custom instructions are chosen by identifying the most frequently used tasks in the algorithm and the instruction set of NIOS-II processor has been extended. Deblocking filter new instruction added to the processor that are implemented in hardware and interfaced to the NIOSII processor. New instruction added to the processor to boost the performance of the deblocking filter algorithm. Use of custom instructions the implemented tasks have been accelerated by 5.88%. The benefit of the speed is obtained at the cost of very small hardware resources.
FPGA Implementation of Deblocking Filter Custom Instruction Hardware on NIOS ...VLSICS Design
This document presents an FPGA implementation of a deblocking filter using custom instructions on a Nios II soft processor system on chip (SOC). The deblocking filter algorithm is ported to the SOC to remove blockiness in decoded video. Custom instructions are developed by identifying frequently used tasks in the algorithm and adding them to the Nios II instruction set. This provides up to a 5.88% speed improvement over a software implementation. The custom instructions achieve acceleration with only small additional hardware resources. Simulation results show the custom instructions reduce processing time for a 16x16 block from 306 cycles to 288 cycles compared to a prior architecture.
This document provides information on interfacing circuits and components for use with PICAXE microcontrollers. It begins with an overview of standard interfacing circuits that can be used with most output devices, such as transistor circuits, Darlington driver ICs, relay circuits, and power MOSFET circuits. The document then describes how to interface various output devices like LEDs, lamps, buzzers, motors, stepper motors, servos, displays and more using these standard circuits. It also covers interfacing common input devices like switches, potentiometers, light sensors and temperature sensors. The document concludes with examples of interfacing more advanced components such as LCD displays and serial communication. Code samples and circuit diagrams are provided throughout to illustrate
Real-time audio filter examples with the ezDSP c5505_v2Tom Derks
This document describes real-time audio filtering examples implemented on the eZdsp c5505 digital signal processing module. It discusses the software implementation of various filters including FIR, IIR, and downsampling filters. Code Composer Studio is used to program the module, with optimized DSP library functions used for filtering. The audio input is captured and output in real-time using DMA transfers, while different filters can be dynamically selected using GPIO inputs. The processed audio output can be heard and the frequency spectrum visualized, helping students understand common signal processing operations.
#VirtualDesignMaster 3 Challenge 3 – James Brownvdmchallenge
While things on Mars have been going well, since we now have multiple options for our infrastructure, the fact remains that we are working on the colonization of a foreign planet.
The document provides an introduction to systems approaches and system architecture. It discusses how system architecture has evolved over time to deal with increasing complexity as transistor density has grown exponentially. A system-on-chip architecture combines various processors, memories, and interconnects tailored for a specific application domain. The document then discusses the key components of systems, including different types of processors, memories, and interconnects. It also covers the tradeoffs between hardware and software implementations and different processor architectures used in systems-on-chip.
Rodrigo Almeida - Microkernel development from project to implementationFelipe Prado
This document discusses developing a microkernel from project to implementation. It covers topics like kernel components, designing a kernel project, concepts for developing a microkernel like function pointers and structs, building a device driver controller, and using callbacks. Code examples are provided for initializing hardware and communicating with an LCD. The goal is for participants to have a better understanding of kernels, their advantages, and restrictions.
Project Vault is a secure computing environment developed by Google's ATAP group. It uses a microSD card to provide an encrypted environment that works with any operating system. The project is open source and uses an FPGA-based hardware security module for encryption and decryption. It also uses a custom real-time operating system called microSEL and an OpenRISC 1200 processor. Project Vault aims to provide a portable secure computing solution.
Microcontrollers are small computers contained on a single chip that are used for embedded applications. When selecting a microcontroller, factors to consider include the number of input/output pins needed, required interfaces like PWM, memory requirements for code and data, number of interrupts, required processing speed, cost and power constraints, available analog components, communication protocols, product family and available development tools, timers needed, and environmental conditions. Microcontrollers are commonly used in automotive, medical, consumer, and industrial devices to control automated processes.
SoC vs SoM (System on Chip vs System on Module).pdfaud Scarlet
SOC and SOM both serve the basic purpose of making embedded design procedures easier and smoother for developers.
They are intended to enable developers to work on high-end applications such as AI and IoTs and design and produce embedded systems to meet the stringent design requirements of this day and age.
These requirements include lesser time-to-develop, reduced cost, lower power consumption, lower latency, and high performance.
An SoC is essentially a chip with all the embedded components needed for a specific function, such as processing elements, memory, I/Os, and other peripherals, integrated into that chip.
Low-cost microcontrollers are being used more and more often in embedded applications that previously may have used a microprocessor. Microcontrollers often run a real-time operating system (RTOS) rather than a full operating system like Linux. In this webinar we introduce FreeRTOS, a popular RTOS for microcontrollers that has been ported to 35 microcontroller platforms.
This document provides an outline for a TinyOS tutorial that introduces the TinyOS operating system and development environment. It covers the hardware primer, introduction to TinyOS, installation and configuration, NesC syntax, network communication, sensor data acquisition, debugging techniques, and concludes with an overview of the Agilla mobile agent system. The outline includes 10 sections that will guide students through understanding the TinyOS hardware platforms, programming model, components, interfaces, and building/installing applications.
A System on Chip (SoC) incorporates many system components onto a single microchip, including memory, processors, and peripherals. A Single Board Computer (SBC) is an entire computer built on a single circuit board, containing components like memory, microprocessor, and I/O. While an SoC combines components internally, an SBC uses separate external components connected via a board. SoCs offer benefits like small size and low power but have longer design times, while SBCs are easier to design but larger. The main difference is that an SoC integrates components onto one chip, while an SBC uses a board to connect separate components into a full computer system.
Data Acquisition and Control System for Real Time Applicationsijsrd.com
This paper proposes an Embedded Ethernet which is nothing but a processor that is capable to communicate with the network. This helps in data acquisition and status monitoring with the help of standard LAN. Currently device with processor is widely used in industrial field. The Embedded Ethernet provides web access to distributed measurement/control systems and provides optimization for instrumentation, educational laboratories and home automation. However, a large number of devices don't have the network interface and the data from them cannot be transmitted in network. A design of ARM Processor based Embedded Ethernet interface is presented. In this design, data can be transmitted transparently through Ethernet interface unit to remote end desktop computer. By typing the IP address of LAN on the ARM9 board, the user gets sensor values on the PC screen at remote station. This provides the status of the devices at remote field. The user can also control the devices interfaced to the ARM9 Board by pressing the button displayed on the GUI of the remote Desktop PC.
Introduction of Cybersecurity with OSS at Code Europe 2024Hiroshi SHIBATA
I develop the Ruby programming language, RubyGems, and Bundler, which are package managers for Ruby. Today, I will introduce how to enhance the security of your application using open-source software (OSS) examples from Ruby and RubyGems.
The first topic is CVE (Common Vulnerabilities and Exposures). I have published CVEs many times. But what exactly is a CVE? I'll provide a basic understanding of CVEs and explain how to detect and handle vulnerabilities in OSS.
Next, let's discuss package managers. Package managers play a critical role in the OSS ecosystem. I'll explain how to manage library dependencies in your application.
I'll share insights into how the Ruby and RubyGems core team works to keep our ecosystem safe. By the end of this talk, you'll have a better understanding of how to safeguard your code.
leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...alexjohnson7307
Predictive maintenance is a proactive approach that anticipates equipment failures before they happen. At the forefront of this innovative strategy is Artificial Intelligence (AI), which brings unprecedented precision and efficiency. AI in predictive maintenance is transforming industries by reducing downtime, minimizing costs, and enhancing productivity.
Nunit vs XUnit vs MSTest Differences Between These Unit Testing Frameworks.pdfflufftailshop
When it comes to unit testing in the .NET ecosystem, developers have a wide range of options available. Among the most popular choices are NUnit, XUnit, and MSTest. These unit testing frameworks provide essential tools and features to help ensure the quality and reliability of code. However, understanding the differences between these frameworks is crucial for selecting the most suitable one for your projects.
GraphRAG for Life Science to increase LLM accuracyTomaz Bratanic
GraphRAG for life science domain, where you retriever information from biomedical knowledge graphs using LLMs to increase the accuracy and performance of generated answers
Trusted Execution Environment for Decentralized Process MiningLucaBarbaro3
Presentation of the paper "Trusted Execution Environment for Decentralized Process Mining" given during the CAiSE 2024 Conference in Cyprus on June 7, 2024.
Skybuffer SAM4U tool for SAP license adoptionTatiana Kojar
Manage and optimize your license adoption and consumption with SAM4U, an SAP free customer software asset management tool.
SAM4U, an SAP complimentary software asset management tool for customers, delivers a detailed and well-structured overview of license inventory and usage with a user-friendly interface. We offer a hosted, cost-effective, and performance-optimized SAM4U setup in the Skybuffer Cloud environment. You retain ownership of the system and data, while we manage the ABAP 7.58 infrastructure, ensuring fixed Total Cost of Ownership (TCO) and exceptional services through the SAP Fiori interface.
Monitoring and Managing Anomaly Detection on OpenShift.pdfTosin Akinosho
Monitoring and Managing Anomaly Detection on OpenShift
Overview
Dive into the world of anomaly detection on edge devices with our comprehensive hands-on tutorial. This SlideShare presentation will guide you through the entire process, from data collection and model training to edge deployment and real-time monitoring. Perfect for those looking to implement robust anomaly detection systems on resource-constrained IoT/edge devices.
Key Topics Covered
1. Introduction to Anomaly Detection
- Understand the fundamentals of anomaly detection and its importance in identifying unusual behavior or failures in systems.
2. Understanding Edge (IoT)
- Learn about edge computing and IoT, and how they enable real-time data processing and decision-making at the source.
3. What is ArgoCD?
- Discover ArgoCD, a declarative, GitOps continuous delivery tool for Kubernetes, and its role in deploying applications on edge devices.
4. Deployment Using ArgoCD for Edge Devices
- Step-by-step guide on deploying anomaly detection models on edge devices using ArgoCD.
5. Introduction to Apache Kafka and S3
- Explore Apache Kafka for real-time data streaming and Amazon S3 for scalable storage solutions.
6. Viewing Kafka Messages in the Data Lake
- Learn how to view and analyze Kafka messages stored in a data lake for better insights.
7. What is Prometheus?
- Get to know Prometheus, an open-source monitoring and alerting toolkit, and its application in monitoring edge devices.
8. Monitoring Application Metrics with Prometheus
- Detailed instructions on setting up Prometheus to monitor the performance and health of your anomaly detection system.
9. What is Camel K?
- Introduction to Camel K, a lightweight integration framework built on Apache Camel, designed for Kubernetes.
10. Configuring Camel K Integrations for Data Pipelines
- Learn how to configure Camel K for seamless data pipeline integrations in your anomaly detection workflow.
11. What is a Jupyter Notebook?
- Overview of Jupyter Notebooks, an open-source web application for creating and sharing documents with live code, equations, visualizations, and narrative text.
12. Jupyter Notebooks with Code Examples
- Hands-on examples and code snippets in Jupyter Notebooks to help you implement and test anomaly detection models.
Digital Marketing Trends in 2024 | Guide for Staying AheadWask
https://www.wask.co/ebooks/digital-marketing-trends-in-2024
Feeling lost in the digital marketing whirlwind of 2024? Technology is changing, consumer habits are evolving, and staying ahead of the curve feels like a never-ending pursuit. This e-book is your compass. Dive into actionable insights to handle the complexities of modern marketing. From hyper-personalization to the power of user-generated content, learn how to build long-term relationships with your audience and unlock the secrets to success in the ever-shifting digital landscape.
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.
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc
How does your privacy program stack up against your peers? What challenges are privacy teams tackling and prioritizing in 2024?
In the fifth annual Global Privacy Benchmarks Survey, we asked over 1,800 global privacy professionals and business executives to share their perspectives on the current state of privacy inside and outside of their organizations. This year’s report focused on emerging areas of importance for privacy and compliance professionals, including considerations and implications of Artificial Intelligence (AI) technologies, building brand trust, and different approaches for achieving higher privacy competence scores.
See how organizational priorities and strategic approaches to data security and privacy are evolving around the globe.
This webinar will review:
- The top 10 privacy insights from the fifth annual Global Privacy Benchmarks Survey
- The top challenges for privacy leaders, practitioners, and organizations in 2024
- Key themes to consider in developing and maintaining your privacy program
Have you ever been confused by the myriad of choices offered by AWS for hosting a website or an API?
Lambda, Elastic Beanstalk, Lightsail, Amplify, S3 (and more!) can each host websites + APIs. But which one should we choose?
Which one is cheapest? Which one is fastest? Which one will scale to meet our needs?
Join me in this session as we dive into each AWS hosting service to determine which one is best for your scenario and explain why!
Taking AI to the Next Level in Manufacturing.pdfssuserfac0301
Read Taking AI to the Next Level in Manufacturing to gain insights on AI adoption in the manufacturing industry, such as:
1. How quickly AI is being implemented in manufacturing.
2. Which barriers stand in the way of AI adoption.
3. How data quality and governance form the backbone of AI.
4. Organizational processes and structures that may inhibit effective AI adoption.
6. Ideas and approaches to help build your organization's AI strategy.
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.
5th LF Energy Power Grid Model Meet-up SlidesDanBrown980551
5th Power Grid Model Meet-up
It is with great pleasure that we extend to you an invitation to the 5th Power Grid Model Meet-up, scheduled for 6th June 2024. This event will adopt a hybrid format, allowing participants to join us either through an online Mircosoft Teams session or in person at TU/e located at Den Dolech 2, Eindhoven, Netherlands. The meet-up will be hosted by Eindhoven University of Technology (TU/e), a research university specializing in engineering science & technology.
Power Grid Model
The global energy transition is placing new and unprecedented demands on Distribution System Operators (DSOs). Alongside upgrades to grid capacity, processes such as digitization, capacity optimization, and congestion management are becoming vital for delivering reliable services.
Power Grid Model is an open source project from Linux Foundation Energy and provides a calculation engine that is increasingly essential for DSOs. It offers a standards-based foundation enabling real-time power systems analysis, simulations of electrical power grids, and sophisticated what-if analysis. In addition, it enables in-depth studies and analysis of the electrical power grid’s behavior and performance. This comprehensive model incorporates essential factors such as power generation capacity, electrical losses, voltage levels, power flows, and system stability.
Power Grid Model is currently being applied in a wide variety of use cases, including grid planning, expansion, reliability, and congestion studies. It can also help in analyzing the impact of renewable energy integration, assessing the effects of disturbances or faults, and developing strategies for grid control and optimization.
What to expect
For the upcoming meetup we are organizing, we have an exciting lineup of activities planned:
-Insightful presentations covering two practical applications of the Power Grid Model.
-An update on the latest advancements in Power Grid -Model technology during the first and second quarters of 2024.
-An interactive brainstorming session to discuss and propose new feature requests.
-An opportunity to connect with fellow Power Grid Model enthusiasts and users.
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUpanagenda
Webinar Recording: https://www.panagenda.com/webinars/hcl-notes-und-domino-lizenzkostenreduzierung-in-der-welt-von-dlau/
DLAU und die Lizenzen nach dem CCB- und CCX-Modell sind für viele in der HCL-Community seit letztem Jahr ein heißes Thema. Als Notes- oder Domino-Kunde haben Sie vielleicht mit unerwartet hohen Benutzerzahlen und Lizenzgebühren zu kämpfen. Sie fragen sich vielleicht, wie diese neue Art der Lizenzierung funktioniert und welchen Nutzen sie Ihnen bringt. Vor allem wollen Sie sicherlich Ihr Budget einhalten und Kosten sparen, wo immer möglich. Das verstehen wir und wir möchten Ihnen dabei helfen!
Wir erklären Ihnen, wie Sie häufige Konfigurationsprobleme lösen können, die dazu führen können, dass mehr Benutzer gezählt werden als nötig, und wie Sie überflüssige oder ungenutzte Konten identifizieren und entfernen können, um Geld zu sparen. Es gibt auch einige Ansätze, die zu unnötigen Ausgaben führen können, z. B. wenn ein Personendokument anstelle eines Mail-Ins für geteilte Mailboxen verwendet wird. Wir zeigen Ihnen solche Fälle und deren Lösungen. Und natürlich erklären wir Ihnen das neue Lizenzmodell.
Nehmen Sie an diesem Webinar teil, bei dem HCL-Ambassador Marc Thomas und Gastredner Franz Walder Ihnen diese neue Welt näherbringen. Es vermittelt Ihnen die Tools und das Know-how, um den Überblick zu bewahren. Sie werden in der Lage sein, Ihre Kosten durch eine optimierte Domino-Konfiguration zu reduzieren und auch in Zukunft gering zu halten.
Diese Themen werden behandelt
- Reduzierung der Lizenzkosten durch Auffinden und Beheben von Fehlkonfigurationen und überflüssigen Konten
- Wie funktionieren CCB- und CCX-Lizenzen wirklich?
- Verstehen des DLAU-Tools und wie man es am besten nutzt
- Tipps für häufige Problembereiche, wie z. B. Team-Postfächer, Funktions-/Testbenutzer usw.
- Praxisbeispiele und Best Practices zum sofortigen Umsetzen
1. Minimal OpenRISC
System on Chip
Author: Raul Fajardo
rfajardo@gmail.com
Rev. 1.0
February 1, 2010
2. Open Cores Minimal OpenRISC System on Chip 2/1/2010
Copyright (C) 2010 Raul Fajardo
Permission is granted to copy, distribute and/or modify this document under the terms of
the GNU Free Documentation License, Version 1.2 or any later version published by the
Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no
Back-Cover Texts. A copy of the license should be included with this document. If not,
the license may be obtained from www.gnu.org, or by writing to the Free Software
Foundation.
This document is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
http://www.opencores.org/ Rev 1.0 Page 2 of 22
3. Open Cores Minimal OpenRISC System on Chip 2/1/2010
History
Rev. Date Author Description
1.0 02/01/10 Raul Fajardo First Draft
http://www.opencores.org/ Rev 1.0 Page 3 of 22
4. Open Cores Minimal OpenRISC System on Chip 2/1/2010
Table of Contents
INTRODUCTION..............................................................................................................5
1.1 SYSTEM OVERVIEW..................................................................................................................................5
1.2 SYSTEM FEATURES...................................................................................................................................6
MINSOC ARCHITECTURE...........................................................................................8
2.1 OR1200 OPENRISC IMPLEMENTATION...................................................................................................9
2.2 WISHBONE INTERCONNECT......................................................................................................................10
2.2.1 Configuring the Interconnect.........................................................................................................10
2.2.2 Attaching Modules to the System..................................................................................................12
2.3 START-UP MODULES..............................................................................................................................12
FIRMWARE....................................................................................................................14
3.1 BOOTSTRAPPING: A TINY BOOTLOADER.....................................................................................................14
3.2 COMMUNICATION TO SOC MODULES.......................................................................................................15
3.3 INTERRUPT PROCESSING..........................................................................................................................16
3.3.1 Interrupt Processing on MinSoC....................................................................................................17
SIMULATION.................................................................................................................18
4.1 INITIALIZING MEMORY...........................................................................................................................19
4.2 BUS FUNCTIONAL MODELS......................................................................................................................19
CONCLUSION & FUTURE STEPS.............................................................................21
http://www.opencores.org/ Rev 1.0 Page 4 of 22
5. Open Cores Minimal OpenRISC System on Chip 2/1/2010
1
Introduction
MinSoC consists only of the minimal requirements for an implementation using
the OpenRISC processor. This documentation aims to support its use and applicability as
a base for custom projects. As an open source project every part of it can be uncovered
and analyzed. However, without guidelines and explanation of what is intended with its
design, this task can be very difficult. Therefore, the following document gives an
overview of the project and explains its design goals and major details in order to allow
its user to adapt and extend MinSoC to fit his needs.
1.1 System Overview
The Minimal OpenRISC System on Chip is a system on chip (SoC)
implementation with standard IP cores available at OpenCores. This implementation is
composed by a standard project, comprehending the standard IP cores necessary for a
SoC embedding the OpenRISC implementation OR1200.
This project idea is to offer a SoC, which can be uploaded to every FPGA and be
compatible with every FPGA board, without the requirement of changing its code. In
order to deliver such a project, the project has been based on a standard memory
implementation and the Advanced Debug System, which allows system debug and
software upload with the same cables used for FPGA configuration.
The adaptation of the project to a target board is made in 2 steps maximum. First
the “minsoc_defines.v” file has to be adjusted, generally one has to only uncomment his
FPGA manufacturer and FPGA model definitions. After that a constraint file for your
specific pinout has to be created. There are constraint files for standard boards also, in the
backend directory of the project.
Furthermore the project offers for this same SoC a working testbench and
firmwares. The actual testbench can be run out of the box using Icarus Verilog v. 9.1. The
firmwares are nearly the same of those of orpsocv2. The differences are for now, that the
http://www.opencores.org/ Rev 1.0 Page 5 of 22
6. Open Cores Minimal OpenRISC System on Chip 2/1/2010
known UART "hello world" example now runs with interrupts and a new Ethernet
example has been added to it.
To complete, the size of the standard memory of the implementation can be
adapted to your needs/possibilities by defining its address width inside of the same
minsoc_defines.v file.
An overview about the complete SoC and its external connections is on Figure 1.
Figure 1: Overview of MinSoC: arrows leaving a module signalize a module's wishbone
master interface, arrows pointing to a module signalize a wishbone slave interface.
Double-sided arrows are different connections.
1.2 System Features
• OR1200 OpenRISC implementation
• Resizable on-chip memory
• System frequency selection
• JTAG debug featuring a multitude of cables
• Start-up option to automatically load your firmware on start-up from an external
SPI memory
• UART and Ethernet modules
http://www.opencores.org/ Rev 1.0 Page 6 of 22
7. Open Cores Minimal OpenRISC System on Chip 2/1/2010
• FPGA independent and dependent code (Xilinx & Altera) for memory, clock
adaptation (PLLs and DCMs) and JTAG tap
• System configuration in a single definition file
• Example firmwares using UART and Ethernet
• Testbench included, simulating target software and system
http://www.opencores.org/ Rev 1.0 Page 7 of 22
8. Open Cores Minimal OpenRISC System on Chip 2/1/2010
2
MinSoC Architecture
The SoC is based on a standard memory implementation. This standard memory
implementation, RAM module of Figure 1, consists for now of on-chip RAMs. This
RAM module, the JTAG tap and an included clock divider have both FPGA dependent
and independent implementations. The selection between generic or FPGA dependent
instances can be made through the project definition file, “minsoc_defines.v”.
By selecting the FPGA dependent modules, already implemented hardware on the
FPGA chip will be used instead of logic created ones. This has generally the advantage of
higher speed and smaller size. Specifically for the RAM module, the FPGA dependent
selection is mandatory. A generic implementation imply on the synthesizer using logic
blocks to create memory, however there are mostly not enough logic blocks to support so
much memory. A FPGA dependent JTAG tap allows the upload and debug of software
through the same connection used to configure the FPGA, while the generic one requires
the assignment of extra FPGA pins, which must be then connected to the JTAG cable.
Lastly the included generic clock divider can only divide the clock by even numbers.
FPGA dependent clock adaptation on the other side does not only divide the clock by any
number, but also allows for cleaner clock signals.
The extra modules UART, Ethernet (ETH) and Start-Up (start-up Starter,
or1k_startup and SPI) can be excluded from MinSoC by commenting their definitions on
the file “minsoc_defines.v”, start-up and Ethernet are commented by default.
http://www.opencores.org/ Rev 1.0 Page 8 of 22
9. Open Cores Minimal OpenRISC System on Chip 2/1/2010
2.1 OR1200 OpenRISC Implementation
The OR1200 implementation [OR1200] is the core of the Minimal OpenRISC
System on Chip. The CPU is a 32-bit scalar RISC with Harvard microarchitecture Figure
2. Therefore it has primarily two memory interfaces, an instruction interface and a data
interface. Through the instruction interface the CPU fetches instructions from memory to
be executed, while the data interface stores/loads data on/from memory or sets/retrieves
registers on/from other modules. These are 32-bit wide Wishbone interfaces [HR2002].
Figure 2: OpenRISC 1200 Architecture
Inputs of the Programmable Interrupt Controller interface (PIC) are connected to
interrupt signals from interface controllers of the SoC, specifically UART and Ethernet
controllers. This way software can be programmed to hold on interrupt occurrence,
process interrupt and resume afterwards.
The Debug interface (DEBUG) allows control of software execution for OR1200.
This interface is connected to the Advanced Debug Interface [YN2008], which enables
debug of software using many JTAG cables. Because the Advanced Debug Interface is
also connected to the Wishbone bus, it can upload Software to system memory.
The Power Management interface (POWERM) can be used to sleep the OR1200
and reduce the power consumption but is left unconnected by MinSoC.
http://www.opencores.org/ Rev 1.0 Page 9 of 22
10. Open Cores Minimal OpenRISC System on Chip 2/1/2010
2.2 Wishbone Interconnect
OR1200 the CPU of MinSoC communicates with the world via Wishbone
interfaces following its protocol [HR2002]. The majority of the IP cores in OpenCores
also provides a Wishbone interface, thus being compatible with this CPU. First the CPU
must be connected to memory so it can execute software. Furthermore different extra
modules might be necessary to fulfill a task. General Purpose IO are probably the best
example of a module to be applied to a system. GPIOs are used to inform states by
enabling a LED, to control external modules by software bit-banging, etc. For a computer
style standard text IO, UART modules are generally applied. Using a terminal program
on a computer, text can be sent from the CPU to the computer and vice-versa.
The connection of diverse modules to only two Wishbone interfaces or of two
interfaces to a single module requires an interconnect. An interconnect fulfill two
purposes, routing and arbitrating. A master requires connection to a slave by signalizing
the slave address on the interconnect. Only slave interfaces have addresses on the
interconnect, master interfaces do not respond to transactions, they initiate them. The
interconnect grants the master a connection to the slave module, if the slave connection is
idle and if there is a free bus to forward the connection.
There are two types of wishbone interconnects, shared bus and crossbar switch.
Two OpenCores projects implement each of these; shared bus [J2003] and crossbar
switch [UR2001]. A shared bus interconnect only allows one master to communicate
with one slave at the same time, while a crossbar switch may allow N masters to N
slaves, according to the number of implemented buses.
On MinSoC the implemented interconnect “minsoc_tc_top.v” is an updated
version of the interconnect used on orpsoc project version 1. It is a double shared bus
interconnect, it can comply 8 masters/initiators and 9 slaves/targets. The slave addresses
can be given as parameters upon instantiation. Slave module 0 has its own bus and thus
can be accessed parallely to any other target module. Though, targets 1 to 8 share a bus
and cannot be accessed in parallel.
The modules connected to this interconnect can be seen on Figure 1. The symbol
for the interconnect is the thick arrow labeled Wishbone. Target 0 is the RAM module.
On upcoming versions it will be replaced with optionally wb_conbus [J2003] or
wb_conmax [UR2001].
2.2.1 Configuring the Interconnect
The addresses for the targets on the interconnect can be defined as parameters on
minsoc_tc_top's instantiation. To define an address, its width and value must be given.
They both refer to the highest order bits of the 32-bit address. The default width for all
modules on “minsoc_defines.v” is 8-bits and the address for UART is 0x90 for example.
http://www.opencores.org/ Rev 1.0 Page 10 of 22
11. Open Cores Minimal OpenRISC System on Chip 2/1/2010
This way every access to addresses starting from 0x90000000-0x90FFFFFF are going to
be forwarded to the UART module. Targets 0 and 1 may have any addresses on the
interconnect. Targets 2 to 8's MSB are predefined by the 6th parameter (t28_addr). 0x9 is
the default on MinSoC, thus targets 2 to 8 might have any addresses from 0x90- to 0x9F-
but no other. The reason for this is a check for valid target address on the second bus
arbiter. The arbiter only grants connection to the initiator, if the initiator has the address
to a valid target. Instead of checking all target addresses, it checks only two; the address
of the first target and the MSB address of targets 2-8.
Parameter Target Default Connected
Parameter Used Definition Purpose
Position Number Value Module
Target 0's address
t0_addr_w 1 APP_ADDR_DEC_W 8
width
t0_addr 2 0 APP_ADDR_SRAM 0x00 Target 0's address RAM
Target 1's address
t1_addr_w 3 APP_ADDR_DEC_W 8
width
t1_addr 4 1 APP_ADDR_FLASH 0x04 Target 1's address or1k_startup
Address width of
t28c_addr_w 5 APP_ADDR_DECP_W 4 MSB for targets
2-8
2-8 MSB address of
t28_addr 6 APP_ADDR_PERIP 0x9
MSB targets 2-8
Complete address
width of MSB
t28i_addr_w 7 APP_ADDR_DEC_W 8 Target
2-8
SPI
t2_addr 8 2 APP_ADDR_SPI 0x97 Target 2's address
EEPROM
ETH
t3_addr 9 3 APP_ADDR_ETH 0x92 Target 3's address
Slave
t4_addr 10 4 APP_ADDR_AUDIO 0x9D Target 4's address NC
t5_addr 11 5 APP_ADDR_UART 0x90 Target 5's address UART
t6_addr 12 6 APP_ADDR_PS2 0x94 Target 6's address NC
http://www.opencores.org/ Rev 1.0 Page 11 of 22
12. Open Cores Minimal OpenRISC System on Chip 2/1/2010
t7_addr 13 7 APP_ADDR_RES1 0x9E Target 7's address NC
t8_addr 14 8 APP_ADDR_RES2 0x9F Target 8's address NC
2.2.2 Attaching Modules to the System
To attach a new module to the system the file “minsoc_top.v” has to be edited and
interconnect slots must be available. Most modules are controlled by a CPU and have
thus a slave interface, these modules are connected to a target slot on the interconnect. A
master interface on the other hand can be connected to the an initiator slot. Furthermore
the module's Wishbone interface must be 32-bit wide, so that the module can be directly
connected to the interconnect.
In order to attach the UART module from the uart16550 project [MI2001] to this
system, its Wishbone signals have to be connected to a target slot from the interconnect,
clock and reset to the correspondent system signals and the RX and TX signals forwarded
as SoC outputs. Since the UART module does not comprehend a Wishbone error signal,
the error input from the target slot must be assigned to 0. Please refer to “minsoc_top.v”
lines 942-950 for the interconnect target slot, lines 666-697 for the UART module
instantiation, line 308 for the zero assignment of the error signal and lines 248-265 for the
wire declarations. Notice that the external wires have the same name as the MinSoC
outputs for UART, line 20, implying their connection.
2.3 Start-Up Modules
The modules, start-up Starter, or1k_startup [UM2009] and SPI [S2002]
comprehend the Start-Up circuitry. Its goal is the automatic upload of software from an
external SPI memory to the SoC main memory upon circuit power up. The Start-Up
circuit is triggered by the SoC reset signal. Although FPGA on-chip memory can be
synthesized to contain a software, this solution cannot be applied to external memory.
Depending on FPGA and board different strategies are used to upload a
configuration file deployed on external memory on power-up. After the upload a reset
signal is triggered. This signal triggers then the Start-Up circuitry.
The start-up Starter module is coded directly on the “minsoc_top.v” file, lines
338-378. When triggered by the reset signal, it switches the data input signal from the
OR1200 instruction interface (wb_dat_i) from the interconnect to itself. A tiny program,
lines 365-374, sets the CPU program counter to or1k_startup module address. When the
CPU tries to fetch instructions from or1k_startup, the start-up Starter module switches the
data input signal from the OR1200 instruction interface back to the interconnect.
http://www.opencores.org/ Rev 1.0 Page 12 of 22
13. Open Cores Minimal OpenRISC System on Chip 2/1/2010
The or1k_startup module contains a small program, which controls the SPI
interface to read data from the externally connected SPI EEPROM and write it to the
main memory. The or1k_startup module expects the first 4 bytes of the SPI memory to
inform the size of the program. After the whole program has been written to the main
memory the or1k_startup module sets the CPU program counter to address 0x100, which
is the hardwired software reset for the OR1200. The MinSoC included software creates
hex files, which contains the program size on its first 4 bytes. These hex files can be
written to EEPROMs and are compatible with the start-up circuit.
http://www.opencores.org/ Rev 1.0 Page 13 of 22
14. Open Cores Minimal OpenRISC System on Chip 2/1/2010
3
Firmware
MinSoC contains two firmwares, a “Hello World” application using the UART
interface and an Ethernet interface example, which sends packets received over Ethernet
through UART. Both firmwares handle interrupts. The “Hello World” firmware responds
to character receive over UART by sending back the the next alphabetical character over
the same interface. The Ethernet firmware processes the Ethernet receive interrupt and
respond to it by sending the received packet through UART.
The two projects are Makefile projects, they are based on the MinSoC support
library, which is a slightly modified version of the support library found on the orpsocv2
project [BJ2009]. The support library includes the register definitions for the CPU itself,
register handling macros, CPU initialization code or reset function and interrupt
processing methods. Furthermore the Makefiles use a linker script from this library which
defines memory spaces (reset, interrupt handlers, program, stack, etc) and selects the
code to be attached to them.
Compiling the firmwares by calling “make all” creates for each firmware two
executable files (or32 extensions) and two hex files (hex extensions). Two files contain
the initialization of data and instruction cache and the CPU initialization (project-icdc
names), while the two other comprehend the CPU initialization only (project-nocache
names). If the OR1200 implementation has been synthesized without data and instruction
caches, the latter should be used. The hex files are used to program memories and for the
Testbench (RTL simulation), while the executable file can be used for the OpenRISC
simulator or by the OpenRISC gdb to upload the firmware and control its execution.
3.1 Bootstrapping: a tiny bootloader
The necessity of a bootstrapping your program is generally unclear, because
commonly the operating system takes care of it. Therefore standard “Hello World”
programs are compiled without further care and uploaded to system memory, although it
http://www.opencores.org/ Rev 1.0 Page 14 of 22
15. Open Cores Minimal OpenRISC System on Chip 2/1/2010
will not work. There are essentially three mistakes here; the printf function of “stdio.h” is
not defined for the OpenRISC uClibc, the resulting executable does not have information
about its memory mapping and registers and stack are not initialized. So basically the
CPU will software reset to address 0x100, find some chunks of code and run it maybe
overwriting the very code when filling the stack. On operating systems, all this is solved
upon process creation (e.g. process fork).
The OpenRISC software reset is located at memory address 0x100, so there the
CPU initialization will take place (i.e. registers and stack initialization). Furthermore a
memory space between 0x200 and 0x1000 is reserved for interrupt handling, since the
CPU jumps to those addresses when interrupt occurs. Finally the program main memory
can be declared starting from the end of the interrupt handler address space until the end
of the available memory. The stack is placed on the main memory as well.
Since C does not allow the enforcement of memory address to code, a C assembly
mix is required to do it, which will be then linked together. To create the memory space a
linker script is used so the memory can be actually organized as explained before,
dividing exceptions from code and so on. On MinSoC the memory space is defined on
orp.ld under the “sw/support”. The “reset.S” file contains the initialization of registers
(supervision register and general purpose registers) and stack and attaches the code to the
defined memory spaces. The stack size is defined on the “board.h” file of the support
library under same directory. After the initializations, the CPU jumps to the C main
function, lines 109-111. The C main function is defined then under the target project.
3.2 Communication to SoC Modules
Hardware modules are either controlled by registers or pins. Most IP cores have a
communication interface which allows a CPU access to its registers and thus its
functionality. Different registers can be addressed by the CPU through the
communication interface. Since all modules communicates using the same protocol and
over an interconnect, a register access from the CPU can be made directly through
physical address access from the software.
The address is composed by the module's address and the register address. For
instance, to access the Modem Status register of the UART module through software, a
variable must be assigned to the content of the address 0x90000006. The register Modem
Status is located on address 6 of the UART module, while the UART module is
addressed by the leading address 0x90 on the interconnect.
The header file “support.h” of the support library include 3 macros to access
register of different width; REG8(address), REG16(address), REG32(address) (i.e. “char
tmp = REG8(0x90000006);" ). According to these macros, OR1200 instructions which
affects only the indicated width are asserted. For example, to send a character over
http://www.opencores.org/ Rev 1.0 Page 15 of 22
16. Open Cores Minimal OpenRISC System on Chip 2/1/2010
UART, a write to the Transmitter Holding Register address 0x00 is enough (e.g.
“REG8(0x9000000000) = 'H';”).
For clarity the addresses of the modules on interconnect are defined on “board.h”
file. Also the internal registers of every module are defined by names for later use, their
names imply their functionality. The UART registers are found on “sw/support/uart.h”
and the Ethernet registers on “sw/eth/eth.h”. In MinSoC the register accesses are
implemented then by “REG_W(IF_BASE+REG_ADDR)” (e.g.
“REG8(UART_BASE+UART_TX) = c;” ). Although this allows for clarity, the CPU has
to calculate the resulting address before accessing the register. A macro for the sum of the
defined addresses allows for no performance penalty, but decrease the code clarity.
The way the module registers control the module operation is defined by the
implementation. In order to write a driver for an IP core its documentation and possibly
its source code have to be examined. Their analysis points out how the module
functionality can be controlled through its registers.
3.3 Interrupt Processing
Interrupts are used by firmwares to interrupt normal operation and respond to
other requests. The interrupt mechanism is hardwired on CPUs. Upon interrupt
occurrence the program counter is set immediately to a certain memory address. It has the
advantage not to require the software to poll for occurrence of the event and respond to
the incoming request immediately.
Because the software jumps into a specific memory address upon interrupt, a part
of the code for the interrupt must be placed on that address; the interrupt handler.
Furthermore, to resume the program after interrupt processing, the CPU registers and the
stack have to be set back to the state they had before interrupt occurrence. This way, the
program can continue to process the data it preloaded on registers and stack.
Since C cannot set the memory address for its code, the interrupt handler must be
programmed in assembly. The interrupt handler saves the CPU state by filling up the
stack with the values of the registers; sets the return address to another small function,
which reloads the register values from stack and resumes the interrupt; and finally jumps
the execution to a C interrupt processing function.
A C function can be used then to execute instructions requested by the interrupt
event (e.g. read data on packet reception interrupt). This C function is free to care only
about the real event, since the lower level CPU requisites have been covered by the
interrupt handler. As soon as the C function ends, the CPU executes the register and stack
state reload and resume the interrupt, jumping back to the program exactly where it has
been left.
http://www.opencores.org/ Rev 1.0 Page 16 of 22
17. Open Cores Minimal OpenRISC System on Chip 2/1/2010
External interrupts are connected to the OR1200 through the PIC (Programmable
Interface Controller) interface, all external interrupts are then bundled together to one
internal interrupt; the exception handled on address 0x800. In order to find out which
external interrupt occurred, the status register of PIC can be retrieved. The asserted bits of
the status register indicate which interrupt events occurred. The support library includes a
mechanism to hide this task from the end user, so that external interrupt processing
functions can be programmed regardless also of this requisite.
3.3.1 Interrupt Processing on MinSoC
On MinSoC the interrupt handlers are located under “sw/support/except.S”, two
labels for the register storage and end of exception functions are defined, they are located
on lines 211-275. To understand the CPU instructions used on “except.S” and the task of
the CPU general purpose registers, refer to “OpenRISC 1000 Architecture Manual”; CPU
instructions on pages 34-251, CPU general purpose register usage on pages 333-335.
Regular interrupt processing functions are defined on the top source of the target
firmware (“sw/eth/eth.c”, “sw/uart/uart.c”, lines 11-28). None of them has
implementation, but any code inserted in these functions would be executed upon
interrupt occurrence, since the interrupt handlers call them. However, the CPU will only
process exceptions, if the exception handling of the CPU is active.
The function called by the interrupt handler to process external interrupts is
defined in the support library on “support.c” (hpint_except()). This first function calls
then int_main(), which finally retrieves the status of the PIC and calls registered interrupt
processing functions according to the asserted bits of the status register.
In order to use the external interrupt mechanism, the external interrupt mechanism
has to be initialized by the function “int_init()”, this function also enables the exception
handling of the CPU. Then, interrupt processing functions have to be registered
(“sw/uart/uart.c”, line 98-99). Furthermore external interrupt processing functions are
allowed to have any name.
The bit order of the status register for the PIC is given by the OR1200
“pic_ints_i” input on the RTL project (“minsoc_top.v” line 589). For instance, this signal
is connected to the UART module interrupt signal through its 2 nd bit (“minsoc_top.v” line
683). Then, in order for the external interrupt mechanism to call a given function on the
occurrence of this interrupt, the first variable of the registering function “int_add” has to
accord to the bit position of the correspondent interrupt signal on the “pic_ints_i” input of
OR1200 (e.g. int_add(2,&uart_interrupt);). Through the definition file
“minsoc_defines.v” lines 84-89, the position of the interrupts on the PIC status register
can be easily changed.
http://www.opencores.org/ Rev 1.0 Page 17 of 22
18. Open Cores Minimal OpenRISC System on Chip 2/1/2010
4
Simulation
Simulation is the standard method to verify a hardware design. For Register
Transfer Level design, testbenches are created. Testbenches exercise the design
stimulating its inputs and monitoring its outputs. A testbench can be complex or simple,
depending on the design complexity and abstraction; and on how extensive the target
functionality or feature will be tested. Quality of a test is measured on code coverage,
which points out how extensively all design functionality and features are tested. Due to
the concurrency of hardware, tests might have to check if one feature can still respond,
while the design is busy performing other tasks. In order to narrow the testing down,
engineers design tests based on specification, which mostly includes use cases. Their task
is to inspect if the design behaves correctly, according to its specification.
MinSoC is a base platform for many purposes. Depending on the applied
firmware or included modules, the design will have a different task, which must be
verified by simulation. For this simulation, the project includes the main elements
necessary for every platform, so the user can concentrate on testing his platform only.
The first major task of MinSoC testbench is to bring the target firmware to the
main memory. This way, the simulated design will execute the same target firmware
which will run later on chip. Then, external interfaces must be stimulated by the
testbench, as if they were connected to real external devices. To accomplish this,
implemented bus functional models comprehend send/receive tasks, which can be called
from within the testbench main routine in order to imitate connected devices. Although
the use of these test tools do not enable the test of every corner case of the chip
implementation, they allow a complete functional test of the design. Moreover, the
software being run on the very simulation can be debugged using the same OpenRISC
gdb port and the Advanced Debug System connecting software used for software
debugging on chip.
The included “bench/verilog/minsoc_bench.v” file contains the MinSoC
testbench. The behavior of the test environment or testbench routine is found on lines
141-170. The rest of the file defines the test environment, instantiates the MinSoC and
http://www.opencores.org/ Rev 1.0 Page 18 of 22
19. Open Cores Minimal OpenRISC System on Chip 2/1/2010
initializes the memory with the target firmware, so the testbench routine can be easily
created.
The testbench routine stimulates the system for both example firmwares, UART
“Hello World!” and Ethernet. It sends the character 'A' through UART to test the
interrupt behavior of the “Hello World!” application and sends an Ethernet packet
through Ethernet to test the Ethernet application. UART data sent to the world by the SoC
will be displayed by the simulation on the simulating console, as if it were a terminal
program.
4.1 Initializing Memory
To initialize the SoC memory, a testbench internal memory, a Verilog double
array called “program_mem”, is pre-loaded with the content of a hex file generated by
the firmware Makefile project. This is accomplished by the Verilog command
“$readmemh()”, “minsoc_bench.v” line 96. Then, two different strategies to initialize the
SoC main memory are implemented, the applied one depends on the definitions of
“bench/verilog/minsoc_bench_defines.v”. Either the memory will be initialized previous
to simulation start (INITIALIZE_MEMORY_MODEL) or after simulation start
(START_UP). The latter option models the real circuit behavior using the SoC start-up
circuitry, but takes considerable longer to start executing the firmware. The former option
copies the content of the hex file directly to a memory model and starts the firmware
execution already on simulation start.
Technically, with the START_UP option, the testbench simulates a SPI EEPROM
serially sending the complete firmware content. Though, this is actually initiated by the
SoC and not by the testbench. The SoC (SPI master) asserts read requests on the interface
to acquire the data from the slave, which is then simulated by the testbench.
The INITIALIZE_MEMORY_MODEL option is more convenient, because it is a
lot faster. Besides, the START_UP design is already verified. Therefore, there is no
necessity of further exercising this part of the code. Though, the
INITIALIZE_MEMORY_MODEL option uses a memory model instead of the SoC
implemented memory. This is inevitable, because the memory blocks of the SoC cannot
be accessed by variables, as usual in a loop. The reason for this is the SoC internal
memory blocks being generated by the Verilog “generate” command.
4.2 Bus Functional Models
BFMs model the bus behavior, implementing specified bus tasks, as arbitration or
drive and sample of low-level signal behavior according to the bus protocol. They
provide tasks (Hardware Description Language functions), which permit the control of
http://www.opencores.org/ Rev 1.0 Page 19 of 22
20. Open Cores Minimal OpenRISC System on Chip 2/1/2010
transactions on the respective bus. With these tasks, data can be send/received to/from the
design by the testbench.
On MinSoC, Ethernet functional send and receive tasks are implemented to
exchange information between SoC and testbench (“minsoc_bench.v” lines 338-517). In
this model the incidence of collisions is ignored. Therefore, the model is not appropriated
for simulation of multiple concurrent Ethernet nodes.
The UART BFM consists of only the sending task (“minsoc_bench.v” lines 277-
293), since the reception of data from UART is forwarded to the simulating terminal
output by the “uart_decoder” task (“minsoc_bench.v” lines 297-327).
http://www.opencores.org/ Rev 1.0 Page 20 of 22
21. Open Cores Minimal OpenRISC System on Chip 2/1/2010
5
Conclusion & Future
Steps
An implementation of a system embedding the OpenRISC requires a variety of
external elements covered here. Most importantly, the memory, the debug interface
(firmware upload) and the Wishbone interconnect are included and functional. Using an
already validated system reduces the final bug count, implementation effort and allows
the focus to be set on the final design task. The possibility of extension of the project and
update of existing elements is essential to cover the multitude of tasks required by the
embedded world.
To port most applications to MinSoC, the design of a custom firmware and
inclusion of new modules is sufficient. Though, module updates, port of new
technologies and possibly custom modules are sometimes necessary. To accomplish
these tasks, not only the comprehension of the very tasks and of the MinSoC design and
its interfaces is of big importance, but also the analysis of its source code.
http://www.opencores.org/ Rev 1.0 Page 21 of 22
22. Open Cores Minimal OpenRISC System on Chip 2/1/2010
Bibliography
OR1200: Damjan Lampret, OpenRISC 1200 IP Core Specification, 2001,
http://www.opencores.org/openrisc,or1200
HR2002: Richard Herveille, SoC Interconnection: Wishbone, 2002,
http://www.opencores.org/opencores,wishbone
YN2008: Nathan Yawn, Advanced Debug System, 2008,
http://www.opencores.org/project,adv_debug_sys
J2003: John, WISHBONE Conbus IP Core, 2003,
http://www.opencores.org/project,wb_conbus
UR2001: Rudolf Usselmann, WISHBONE Conmax IP Core, 2001,
http://www.opencores.org/project,wb_conmax
MI2001: Igor Mohor, UART 16550 core, 2001,
http://www.opencores.org/project,uart16550
UM2009: Michael Unnebäck, OR1k Start-up, 2009,
http://www.opencores.org/openrisc,startup
S2002: Simons, SPI controller core, 2002, http://www.opencores.org/project,spi
BJ2009: Julius Baxter, ORPSoC - OpenRISC Reference Platform SoC and Test Suite,
2009, http://www.opencores.org/openrisc,orpsocv2
http://www.opencores.org/ Rev 1.0 Page 22 of 22