0% found this document useful (0 votes)
21 views

Chapter 2

Uploaded by

Ayano Boresa
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
21 views

Chapter 2

Uploaded by

Ayano Boresa
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 58

CHAPTER-2

EMBEDDED SYSTEM ARCHITECTURE


Bensa Daye Campus Compiled by: Kassawmar M.

Learning objectives:
• To know about hardware architecture of embedded system
• Understand the ARM Cortex M0+ Hardware Overview
• Arm Cortex-M0+ Ports and Interrupts
• Explain about serial and parallel communication
• Explain ATmega32 microcontroller Architecture
• Describe Assembly language Programming with
ATmega32 Instruction Set.
• Discuss about Interface peripherals, and Timers
1
EMBEDDED SYSEM HARDWARE

2
ARCHITECTURE OF AN EMBEDDED SYSTEM

• Typical Embedded System mainly has two parts i.e embedded


hardware and embedded software.
• Embedded hardware are based around microprocessor and
microcontrollers, also include memory, bus, Input/Output,
Controller.
• Embedded software includes embedded operating systems, different
applications and device drivers.
• Basically there are two types of hardware architecture used in
embedded systems. i.e., Havard architecture and Von Neumann
architecture.
• Architecture of the Embedded System includes Sensor, Analog to
Digital Converter, Memory, Processor, Digital to Analog Converter,
and Actuators etc.
3
Hardware architectures for embedded systems…

 The two types of architecture used in ES and General purpose Computers


are:-
Von Neumann Architecture
• First proposed by a computer scientist John von Neumann.
• Instructions and data both are stored in the same memory and share a common
bus exists for both instruction and data,
• This means the CPU cannot do both things together (fetch or read the instruction
and data operation (read/write data)) simultaneously.
• Used in personal computers and small computers.
• It supports simple hardware.
• It allows the use of a single,
sequential memory.

4
Hardware architectures for embedded systems…

Advantages of Von Neumann Architecture:


• Simplicity in design and implementation due to a unified
memory system.
• Lower cost compared to Harvard architecture due to the use of
a single memory system.

Disadvantages of Von Neumann Architecture:


• Limited bandwidth for instruction and data access, as they
share the same bus.
• Potential performance degradation when simultaneous access
to instructions and data is required.

5
Hardware architectures for embedded systems…

Harvard Architecture
 First named after the Harvard Mark I computer.
 It emphasizes the separation of instructions and data memory.
 It has separate physical and data buses for instructions and data,
 Which allows simultaneous access to both instruction and data
memory.
 This feature can result in faster and more efficient execution of
instructions, especially for applications with time-critical tasks, such
as real-time systems.
 It is commonly found in microcontrollers and digital signal
processors that require high performance and deterministic behavior.
 It was basically developed to overcome the bottleneck of Von
Neumann Architecture. 6
Hardware architectures for embedded systems…

 Instructions and data are stored in two separate memory modules


and two independent buses are used communication paths between
the CPU and memory

7
Hardware architectures for embedded systems…

Advantages of Harvard Architecture:


• Simultaneous access to instruction and data memory, enabling
faster execution.
• Well-suited for real-time systems due to its deterministic
behavior.
• Increased performance in applications that require frequent
access to data and instructions.

Disadvantages of Harvard Architecture:


• Increased complexity in the design and implementation of the
memory subsystem.
• Higher cost due to the need for separate instruction and data
memory. 8
ARM Cortex M0+ Hardware Overview

• known as Advanced RISC Machine (ARM), originally known as Acorn RISC


Machine. (RISC- stands Reduced Instruction Set Computer)
• a family of RISC-based microprocessors and microcontrollers designed by ARM
Inc., Cambridge, England.
• ARM chips are high-speed processors that are known for their small size and low
power requirements.
• They are widely used in PDAs(Personal Digital Assistants) and other handheld
devices, including games and phones as well as a large variety of consumer
products.
• The Cortex portfolio is split broadly into three main categories:
o Cortex-A -- application processor cores for a performance-intensive systems, dedicated
to Linux and Android devices.
o Cortex-R – high-performance cores for real-time applications such as hard disk
controllers (or solid state drive controllers), networking equipment and printers in the
enterprise segment, consumer devices such as media players, and also automotive
applications such as airbags, braking systems and engine management.
o Cortex-M – microcontroller cores for a wide range of lower-cost embedded applications
– Families: includes M0, M0+, M3 & M4, M7 9
ARM Cortex M0+ Hardware Overview (Cont’d…)

• ARM Cortex-M0+ processor is the most


energy efficient ARM processor available.
• It designed to enable the developers to
create cost-sensitive and power-constrained
solutions for a broad range of devices
• It has the smallest footprint and lowest
power requirements
• Suitable for a wide variety of applications,
including sensors and wearables.
• It is almost 100% compatible with Cortex-M0
instruction set
• The minimal code density of Cortex-M0+
significantly reduces memory requirements
and allow developers to achieve 32-bit
performance at 16 and 8-bit price points. 10
ARM Cortex-M0+ (Cont’d…)

• The ARM Cortex-M is a group of 32-bit RISC ARM processor cores


licensed by Arm Holdings.
• These cores are optimized for low-cost and energy-efficient integrated
circuits, which have been embedded in tens of billions of consumer
devices.

• ARM based Microcontrollers (MCU) contain a 32-bit wide data bus.


• An ARM MCU is developed by ARM Holdings that contains an ARM
processor core developed based on Advanced RISC Machine (ARM)
architecture with32-bit RISC (reduced instruction set computer) instruction
set in it. 11
ARM Cortex-M0+ (Cont’d…)

32-bit
• ARM processor is one of a family of CPU based
Year Core
on the RISC architecture developed by advanced
2004 Cortex-M3
RISC machine(ARM).
2007 Cortex-M1
• ARM processor are extensively used in consumer
electronic devices. Such as smart phone, tablet, 2009 Cortex-M0

multimedia players. 2010 Cortex-M4


2012 Cortex-M0+
2014 Cortex-M7
2016 Cortex-M23
2016 Cortex-M33
Cortex
2018
-
M35P
ARM Cortex-M0 and Cortex-M3 microcontroller ICs 2020 Cortex-M55

12
Microprocessor(µP)

• The processor used in embedded systems can be micro-controllers,


microprocessors, and digital signal processor
• ES processors(µP) are the heart of the system which takes input and
produces output after processing the data.
• Based on instruction Microprocessor (µP) do three things:
o Mathematical and logical operation using its ALU
o Move data from one memory location to another
o Make decision and jump to a new set of instruction based on
those decisions

13
Microprocessor (Cont’d)

• Based on hardware characteristics there are two types of microprocessors


1. Complex Instruction RISC CISC
It’s aim is to make hardware simpler by using It’s aim is to complete a task in as few lines of assembly as
Set Computer (CISC) simple instructions that can be executed within possible which is achieved by building processor hardware that
2. Reduced Instruction one clock cycle. is capable of understanding and executing a series of operations.

Set Computer (RISC) More line of code, more RAM is needed to Because the length of the code is relatively short, very little
store the assembly level instructions RAM is required to store instructions.

Focus on software Focus on hardware, The emphasis is put on building complex


instructions directly into the hardware.
Fixed sized instructions Variable sized instructions
more number of registers Requires less number of registers
Code size is large Code size is small
An instruction executed in a single clock cycle Instruction takes more than one clock cycle

An instruction fit in one word Instructions are larger than the size of one word
Pipelining of instructions is possible, Pipelining is not possible.
considering single clock cycle.
E.g. For multiplication operation a RISC E.g. for multiplication operation a CISC processor would come
processor divides the instruction into three prepared with a specific instruction which can loads the two
separate commands as: values in to registers, multiply operands in execution unit and
LOAD A, 2:3 then store the product in register with one instruction.
LOAD B, 5:2 MULT 2:3, 5:2
PROD A, B Note: 2:3 and 5:2 are Memory locations 14
STORE 2:3, A
Microcontroller(µC)

Microcontroller concept came in 1970.Motorola is


the first company who launched microcontroller
and more than 200 company making it at present
time. And more than 100,000 variety of
microcontroller is available in the market.

15
Microcontroller …..(Cont’d)

• A microcontroller is a type of single integrated circuit containing a


processor core, memory, and programmable input/output
peripherals.

• Program memory is included on chip, as well as a typically small


amount of RAM.

• Microcontrollers are designed for embedded applications, in


contrast to the microprocessors commonly used in personal
computers or other general purpose applications.

16
Structure of Microcontroller

17
Microcontrollers versus Microprocessors

18
Microcontrollers versus Microprocessors.

19
Arm Cortex-M0+ Ports

• Implements a dedicated optional single-cycle I/O port for high-


speed, single-cycle access to peripherals, such as general-purpose-
I/O (GPIO).

• Single-cycle I/O and peripheral access improve reaction time to


external events

• The single-cycle I/O port provides single-cycle loads and stores to


tightly-coupled peripherals

• The single-cycle I/O port is memory mapped and supports all the
load and store instructions described in Memory access instructions.
20
PORT….

A port are used:


1. To receive the bytes from external peripheral(s) [or device(s) or
processor(s) or controllers] for reading them later using instructions
executed on the processor or

2. To send the bytes to external peripheral or device or processor


using instructions executed on processor
o Connects to the processor using address decoder and system buses
o Port-Register addresses for programming the port functions or modes,
reading port status and for writing or reading bytes.

• Port in embedded: PORT is used to set the output value. • If the pin is
set as output, then a PORT value of 1 will set voltage at that pin to 5V.
If PORT value is 0, then voltage is set to 0.
21
PORT….contd

• Parallel Port input- single bit :


• Parallel Port Output- single bit:
• Parallel Port Input- multi-bit Read about this type of ports
• Parallel Port Output- multi-bit
• Parallel Port Input-Output

Ports and pins?


• A pin is a physical connection for a single net. In schematics and HDLs
(Hardware Description Languages), pin and terminal are used
interchangeably to represent the point where the connection to a network
is made.
• A port is a group of pins representing a standard interface. In the physical
world, a port is usually more than one pin.

22
Registers

• Registers are small amounts of high-speed memory contained within the


CPU.
• It is used to quickly accept, store, and transfer data and instructions that
are being used immediately by the CPU.
• Some of the most common registers used in a basic computer are:
o Program counter (PC): Holds address of the next instruction to be read
after current instruction
o Memory address register (MAR):holds address for current instruction to
be fetched from memory
o Memory data register (MDR): holds the contents found at the address
held in the MAR
o Current instruction register (CIR): holds the instruction currently being
executed or decoded.
o Accumulator (ACC): short-term, intermediate result storage of arithmetic
and logic data.
23
Register

24
Register

• Register are temporary data storage within processor architecture as


shown in fig.
• ARM processor has sixteen number of general purpose register,R0-
R15 and a current program status register(CPSR) defined for user
mode of operation.

• Each of these register is of 32-bits.Out of these register R13,R14


and R15 have special purpose.
o R13: Used as the stack pointer that holds the address of the top of the
stack in the current processor mode.
o R14: Used as the link register that save the content of program
counter on control transfer due to the occurrence of exceptions or
using the branch instructions in the program.
25
Register....contd

o R15: Used as the program counter that points to the next instructions
to be executed.
 In ARM state, all instructions are of 32-bits(four bytes).

User mode register set 26


Register....contd

Generally, ARM processor have the


following 32-bit register categories:
1. General-purpose registers (GPR):
R0-R12 are general-purpose registers
for data operations.
• Low registers (R0-R7) can be accessed by
any instructions
• High registers (R8-R12) can’t be
accessed by a thumb instruction (16 bit
instruction)

2. Stack Pointer: (SP) is register R13.


• stores the memory address of the last
data element added to the stack, or some
times the first available address in stack.
27
Register....contd

3. Link Register (LR), r14. It stores the


return information for subroutines/sub
functions, function calls, and exceptions.
On reset, the LR value is Unknown.
4. Program Counter (PC), r15. It stores
the memory address of the next instruction
to be executed.
5. Program Status Register(PSR)
combines:
• Application Program Status Register
(APSR).
• Interrupt Program Status Register (IPSR).
• Execution Program Status Register (EPSR).
• Special-purpose Program Status Registers,
(xPSR). 28
GPIO

• GPIO (General Purpose Input/Outputs) is a module capable of receiving


and transmitting signals.

• They work with digital signals but can be mixed to use the pins with
other peripheral functions (ADC, SSI, UART, etc).
• A GPIO port handles both incoming and outgoing digital signals.

• As an input port, it can be used to communicate to the CPU the ON/OFF


signals received from switches, or the digital readings received from
sensors.

• The GPIO peripheral provides dedicated general-purpose pins that can be


configured as either inputs or outputs.
• When configured as an output, you can write to an internal register to
control the state driven on the output pin. 29
GPIO….contd

Peripheral: GPIO
30
ADC and DAC

ADC and DAC:


• Analog-to-digital converter (ADC) takes an analog wave as an
input and converts this wave to a digitally represented output form
(Fig. A).

• A digital-to-analog converter (DAC) essentially does the reverse,


converting a digital representation into an analog form (Fig. B).

• The Digital to Analogue Converser (DAC) is a device that converts


a binary representation of a number to an actual analogue voltage
on an external pin.

31
ADC and DAC….contd

Fig: A- Schematic shows basic ADC functionality

Fig: B- Schematic shows basic DAC functionality

32
Communication in Embedded Systems

• Communication is exchange of information over a medium following


common set of rules.
• In embedded systems, communication means the exchange of data
between two microcontrollers in the form of bits.
• This exchange of data bits in microcontroller is done by some set of
defined rules known as communication protocols.
• There are two data transmission types:
o Parallel Communication
o Serial Communication
33
Parallel Communication

• In parallel communication, all the bits of data (usually


8 bit ) are transmitted simultaneously on separate
communication lines.
• Fast method of transferring data, but it is expensive,
requires multiple wires
• Digital pulses may not traverse at the same speed in
all wires
• Can’t used for long transmission due to different
transfer speed because of different wire resistance
level, this is called skew problem
• Cross talk can happen between wires
• In order to transmit n bit, n wires or lines are used.
• Example: Communication of CPU registers to the
memory or vice versa through the data bus.
34
Serial Communication

• In serial communication the data bits are transmitted serially one by one i.e.
bit by bit on single communication line
• It requires only one communication line rather than n lines to transmit data
from sender to receiver.
• Thus all the bits of data are transmitted on single lines in serial fashion.
• Used for Long distance transmission.
• One huge advantage of having fewer wires/pins in a serial cable is the
significant reduction in the size, the complexity of the connectors, and the
associated costs.
• smartphones designers benefit from the development of connectors/ports that
are small, durable, and still provide adequate performance.

35
Modes of Data Transfer in Serial Communication

• Serial communication uses two methods:


o Asynchronous
o Synchronous

36
Modes of Data Transfer in Serial Communication(cont’d…)

Synchronous
• The clocks of the sender and receiver are unified, sending and receiving units are
enabled with same clock signal
• A common clock is shared by the transmitter and receiver to achieve synchronization
while data transmission.
• The master is designed to supply the data at a time when the slave is definitely ready
for it.
• Data is sent in frames or blocks.
• In synchronous transmission, the whole block of data bits is transferred at once, instead
of one character at a time like asynchronous
• Used when large amounts of data needs to be transferred from one location to the other.
• a method of sending large amounts of data.

37
Modes of Data Transfer in Serial Communication(cont’d…)

Synchronous
• The following instances of data transmission would be
considered synchronous:
o Transfer of large text files.
o Chatrooms.
o Video conferencing.
o Telephone conversation

38
Modes of Data Transfer in Serial Communication(cont’d…)

Asynchronous Transmission
• Also known as start/stop transmission
• Sends data from the sender to the receiver using the flow control method
• Data is synchronized between sender and the receiver without the use of a clock.
• Sends one character or 8 bits at a time, In total, 10 bits are transmitted, with a
start bit preceding the character, and a stop bit following it.
• In this method, before the transmission process begins, each character sends the
start bit. After sending the character, it also sends the stop bit. With the character
bits and start and stop bits, the total number of bits is 10 bits.

39
Modes of Data Transfer in Serial Communication(cont’d…)

Asynchronous Transmission
• In asynchronous transmission the receiver is
largely unaware of when data will arrive.
• There is no need to synchronize the
transmitter and receiver.
• Simple to implement.
• Overall slower transmission rate.
• Extra data is required in the form of start
and stop bits, increasing the overall size of
the transmitted data.
• There are many examples of asynchronous
transmission occurring all around us. These
include:
o Emails
o Forums
o Radios 40
Modes of Data Transfer in Serial Communication(cont’d…)

• Data Transmission: In data transmission


if the data can be transmitted and
received, it is a duplex transmission.
o Simplex: Data is transmitted in only one
direction i.e. from TX to RX only one
TX and one RX only, example
Keyboard and monitor
o Half duplex: Data is transmitted in two
directions but only one way at a time i.e.
two TX's, two RX’s and one line,
example Walkie-Talkie
o Full duplex: Data is transmitted both
ways at the same time i.e. two TX's, two
RX’s and two lines
example Telephone
41
ES Communication Protocols

A Protocol is a set of rules agreed by both the sender and receiver on


• How the data is packed
• How many bits constitute a character
• When the data begins and ends

Parallel communication
Serial Communication protocol
protocol

• Industry Standard • UART(universal asynchronous


Architecure (ISA), receiver transmitter)
• Advanced Technology • I2C(inter integrated circuit), and
Attachment (ATA),
• Small Computer System
• SPI(serial peripheral interface),
Interface (SCSI), • Ethernet
• Peripheral Component • RS232, USB, 1-Wire, and SATA
Interconnect/Interface bus • ….
(PCI)
• IEEE-488 (GPIB)
42
Reading Assignment about the above ES Protocols
Introduction to Atmel AVR

• Is microcontroller manufactured by Atmel.


• It belongs to Atmel’s AVR series RISC microcontroller
family.
• AVR stand for Advanced Virtual RISC OR Alf and Vegard RISC (the name
of AVR designers)
• AVR are generally classified into four broad groups,
o Mega (powerful, widely used, more instruction set )
e.g. ATmega8, ATmega32, ATmega128
o Tiny: e.g. ATtiny13, ATtiny25
o Special purpose: AT90PWM216,AT90USB1287
o Classic: e.g. AT90S2313, AT90S4433
• Some mostly used AVR microcontrollers are:-
o ATmega8 microcontroller
ATmega128
o ATmega16 microcontroller
o ATmega32 microcontroller (most common )
Atmel group
• AVR families are almost100 % incompatible Flash =128K
43
ATmega32 MICROCONTROLLER ARCHITECTURE

• ATmega32 is a low power CMOS (Complementary Metal-Oxide-Semiconductor)


8-bit microcontroller based on the AVR enhanced RISC architecture.
• Due to RISC, AVR can execute 1 million instructions per second if cycle
frequency is 1MHz.
• Key Features: 32 x 8 general working purpose registers. (32 general-
purpose registers with 8 bit)
• By executing powerful instructions in a single clock cycle, the ATmega32
achieves throughputs approaching 1 MIPS(Million Instructions Per
Second) per MHz allowing the system designer to optimize power
consumption versus processing speed.

44
ATmega32 Microcontroller Pin Diagram

PDIP- stands Plastic Dual Inline Package, and it is a type of packaging used for IC 45
ATmega32 Microcontroller Pin Diagram….contd

46
ATmega32 Microcontroller Pin Diagram….contd

47
ATmega32 Microcontroller Pin Descriptions

• Port A (PA7-PA0): Port A serves as analog inputs for A/D


converter. It also acts as an 8-bit bidirectional I/O port if the A/D
converter is not used internally.
• Port B (PB7-PB0) and Port D (PD7-PD0): These ports are 8-bit
bidirectional I/O ports.
o Their output buffers have symmetrical drive characteristics with
high source and sink capability.
o As inputs, these are pulled low if the pull-up resistors are used.
o It also provides various special functional features of the ATmega32.
• Port C (PC7-PC0): Port C is an 8-bit bidirectional I/O port.
o If the Joint Test Action Group (JTAG) interface is enabled, the
pull-up resistors on pins PC2 (TCK), PC3 (TMS), and PC5 (TDI)
will be activated.
48
ATmega32 Microcontroller Pin Descriptions….contd

• Vcc: Digital voltage supply


• GND: Ground
• RESET: It is a RESET pin which is utilized to set the
microcontroller ATmega32 to its primary value. During the
beginning of an application the RESET pin is to be set elevated
for two machine rotations.
• XTAL1: It is an input for the inverting oscillator amplifier and
input to an internal clock operating circuit.
• XTAL2: It is an output from an inverting oscillator amplifier.
• AVcc: It is a supply voltage pin for A/D converter and Port A. It
must be connected with Vcc.
• AREF: AREF is an analog signal reference pin for the
analog to digital converter.
49
ATmega32 Microcontroller Pin Descriptions….contd

Interrupt Pins
• ATmega32 has three external hardware
interrupts on pins PD2, PD3, and PB2 which
are referred to as INT0, INT1, and INT2
respectively.
• ATmega controller gets interrupted in whatever
task it is doing and jumps to perform the
interrupt service routine.
• E.g. system temperature beyond limit can be an
interrupt
Analog to Digital Channel:
• There is a total of 8 analogs to digital channels
that can be used as ADC.
• are only in port A (ADC0-ADC7)

50
ATmega32 Microcontroller Pin Descriptions….contd

Timer Module Pins: three timers


• Timer0 and Timer1 can only operate with the
external pulse,
• Timer1 only operate within the
microcontroller. (T0-PB0, T1-PB1, TOSC1-
PC6, TOSC2-PC7)
Comparator Pins:
• Used to compare an analog input signals
• It has two pins
o AN0 (non-inverted) – PB2
o AN1 (inverted) – PB3

51
ATmega32 Microcontroller Pin Descriptions….contd

JTAG Programmer Pins:


• used to debug or to test the microcontrollers.
All JTAG pins are TDI – GPIO27, TDO –
GPIO26, TMS – GPIO25, TCK – GPIO24
• Reset: used to reset the device by external
devices and buttons. The reset pin in
ATMega32 is: RESET’ – GPIO9
Power Input pin
• Every device requires power to operate.
ATMega32 has three power pin. One is for
power input and the others for ground. All
power pins are: VCC – GPIO10, GND –
GPIO11, GPIO31
ICP (Input capture) pin :
• used to capture time and frequency of input
signal. ICP1 – GPIO20
52
ATMega32 Programmer Model: Memory
• Has three separate on-chip memories for data and program storage (Harvard
Architecture )
1. 2KB SRAM
• used to store data( volatile; data lost on power off)
• Fast read and write
• Native data size is 8 bits (1 byte), Each byte has a unique 16-bit address (0x60-
0x85F)
2. 1KB (1024 byte) EEPROM(Electrically Erasable Programmable Read-Only Memory)
• used to store Semi Permanent data (content retained after power loss but can be
erased
• Fast read; slow write
• separate data space in which single bytes can be read and written.
3. 32KB Flash program memory
• used to store program code
• Memory contents retained when power is off (non-volatile)
• Fast to read; slow to write
• Can only write entire “blocks” of memory at a time
• organized in 16-bit words (16KWords) b/c instruction are either 2/4 byte long
53
Assembly language Programming with ATmega32
Instruction Set

• AVR has the following classes of Instruction:


o Data Transfer Instructions
o Arithmetic and Logic instructions
o Branch Instructions Reading Assignment
o Bit and Bit-Test Instructions
o MCU control Instructions

54
ATmega32 Instruction Set: Example

• MOV Rd, Rr;(copy Rr to Rd)


• STS 0x230, R25 ; copy R25 content in to data
space ox230 which is in internal SRAM

 Reading more about other instructions


55
The typical input/output interface blocks

56
Timers

• Timers are an essential component of embedded systems and


microcontrollers.
• They are hardware modules designed to measure time intervals or generate
precise timing events.
• Timers play a crucial role in various applications, including real-time
systems, control systems, communication protocols, and more.
• Here are some key aspects of timers in embedded systems:
o Time Measurement: Timers can measure time intervals with high level of accuracy.
o Interrupt Generation: Timers can be configured to generate interrupts when specific
timing conditions are met.
o and so on.
• The following functions calls are provided to manage the timer
o Get time
o Set time
o Time delay( in system clock)
o Time delay( in sec.) 57
o Reset timer
58

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy