IoT Unit 2
IoT Unit 2
Elements of IoT
Arduino and Pi are not the only and the best IoT platforms worth knowing.
In fact, there are dozens of platforms with a diverse choice of hardware,
support, security, development infrastructure, and communities. In this
article, we’ll focus on some popular platforms and try to figure out the
perfect matches for different IoT projects.
Arduino Uno: Arduino Uno is a reference model for the Arduino platform.
The Uno is an MCU board. It includes an ICSP 6-pin header, which enables
embedding (burning) of programs. The process of programming an
EEPROM/ROM is called burning. ICSP is in-circuit serial programming,
which means burning the code through connectivity with the ICSP header.
Uno board includes a USB connection, a power jack and reset button (to
start the board and run Bootloader). USB is also used for pushing programs
on to the board after development using IDE on a computer.
Features which make Arduino boards widely used are: 1. Prototyping ease
2. Flexibility and ease of assembling modules on the board 3. Open
extensible source code, schematics, software, middleware and IDE; the
AVR-C codes extend on coding in C++, and the libraries can be added
with additional programs, AVR-C codes means C commands and
statements for using AVR ports, serial interfaces and other functional units
of the MCU 4. IDE latest version and appropriate OS are open source3 IDE
and software runs on multiple environments, Linux, Windows and Mac OS-
X 5. Number of times programmability of the board during the editing-
testing-debugging cycles, and for development of number of new
prototype using the same 6. Hardware open source and extensible using
the modules, shields and other circuits with open version of IDE, software
modules and codes from other designers
Raspberry pi
ASBS Au/R7#io
Reverse wbrakon
o-RgRy
Movs RI, R3
Move
ANDS
Logal AwD ADS R\, Ry R3
openakon
Rr AwDRs- R]
oRRS Logical oR ORRS Ry Ry R3
pnahon AL oR RgR
Testopenak'on
TST O
1T
Yo AnD
1est egual or TST F ro, V
151 E To EX-OR T.
not
ASRS K7 KT #o
AsRS Arihmehe shft
Labe
Bran ch
Send bven
SEV
Svc-supervison call
2 wait fEVen
WFE
wait fo Deterrup
kFL
ARM Instruction Set
Dr. N. Mathivanan,
Department of Instrumentation and Control Engineering
Visiting Professor,
National Institute of Technology,
TRICHY, TAMIL NADU,
INDIA
Instruction Set Architecture
• Describes how processor processes instructions
• Makes available instructions, binary codes, syntax, addressing modes,
data formats etc.
• ARM defines two separate instruction sets
o ARM state instruction set – 32-bit wide
o Thumb state instruction set – 16-bit wide
N. Mathivanan
ARM State Instruction Set
• Features
o 3-address data processing instructions
o Conditional execution of each instruction
o Shift and ALU operations in single instruction
o Load-Store and Load-Store multiple instructions
o Single cycle execution of all instructions
o Instruction set extension through coprocessor instructions
N. Mathivanan
• Classes of instructions
o Data processing instructions
o Branch instructions
o Load-Store instructions
o Software interrupt instructions
o Program status register instructions
o Coprocessor instructions
N. Mathivanan
Data Processing Instructions
• Perform move, arithmetic, logical, compare and multiply operations
• All operations except multiply instructions are carried out in ALU
• Multiply instructions are carried out in multiplier block
• Data processing instructions do not access memory
• Instructions operate on two 32-bit operands, produce 32-bit result.
• Instructions can pre-process one operand using barrel shifter
• No. of basic instructions: 16 (excluding two basic multiply instrs.)
Syntax:
<opcode>{<cond>}{S} Rd, Rn, n
‘Rm’ reg
Rm, LSL #3
Rm, LSR #3
Rm, ASR #3
Rm, ROR #3
Rm, RRX
N. Mathivanan
• Binary encoding of data processing instructions
N. Mathivanan
• Immediate constants
o Construction of 32-bit const. using 8-bit value and 4-bit rotation
o Example: MOV r0,#0xFF000000 is MOV r0,#0xFF,8
MOV r0,#0xFFFFFFFF is MVN r0,#0x00
N. Mathivanan
EXAMPLE: Write down the assembler assembled equivalent
instructions for copying immediate constants with MOV and MVN
assembly instructions given below. (verify using Keil mVision)
MOV r0,#0x00 MOV r0,#0xFF000000 MOV r0,#0xFFFFFFFF
MVN r1,#0x01 MOV r0,#0xFC000003 MOV r0,#0x55555555
6. The following program fragment implements ‘is the value of ‘A’ 1 or 5 or 8?’
functionality. Let the value of ‘A’ be in register r0.
N. Mathivanan
Questions
1. What is the result of execution of the following?
BX Branch and Exchange BX Rm PC = Rm, ‘T’ bit of CPSR = 1 (to ARM state)
N. Mathivanan
Branch Instructions - Examples
3. Example of using ‘BX’ instruction
; ARM state codes
CODE32 ; 32-bit instructions follow
LDR r0,=tcode+1 ; address of tcode to r0,
; +1 to enter Thumb state
MOV lr,pc ; save return address
BX r0 ; branch to thumb code
--- ; ARM code continues
; Thumb state codes
CODE16 ; to begin Thumb code execution
tcode ADD r0,#1 ; Thumb code halfword aligned
---
---
BX lr ; return to ARM code & state
N. Mathivanan
• Semihosting overview
N. Mathivanan
Program Status Register Instructions
• Instructions to read/write from/to CPSR or SPSR
• Instructions: MRS, MSR
• Syntaxes:
MRS{<cond>} Rd,<CPSR|SPSR>
MSR{<cond>} <CPSR|SPSR>,Rm
MSR{<cond>} <CPSR|SPSR>_<fields>,Rm
MSR{<cond>} <CPSR|SPSR>_<fields>,#immediate
• Note:
• In user mode all fields can be read, but flags alone can be modified
N. Mathivanan
• Examples:
o Program to enable FIQ (executed in svc mode)
MRS r1,cpsr ; copies CPSR into r1
BIC r1,#0x40 ; clears B6, i.e. FIQ interrupt mask bit
MSR cpsr,r1 ; copies r1 into CPSR
N. Mathivanan
Coprocessor Instructions
• ARM supports 16 coprocessors
• Coprocessor implemented in hardware, software or both
• Coprocessor contains instruction pipeline, instruction decoding logic,
handshake logic, register bank, special processing logic with its own
data path.
• It is also connected to data bus like ARM core processor
• Instructions in program memory are available for coprocessors also.
• Works in conjunction with ARM core and process same instruction
stream as ARM, but executes only instructions meant for
coprocessor and ignores ARM and other coprocessor’s instructions
• 3 types of instructions: data processing, register transfer, memory
transfer
N. Mathivanan
• Coprocessor instructions
Coprocessor number 5,
Coprocessor data opcode1 – 2, opcode2 – 4,
CDP CDP p5,2,c12,c10,c3,4
processing Coprocessor destination register – 12,
Coprocessor source registers – 10 & 3
Coprocessor number 14,
Move to
opcode1 – 2, opcode2 – 4,
MCR coprocessor from MCR p14,1,r7,c7,c12,6
ARM source register – r7,
ARM register
Coprocessor destination registers – 10 & 3
Coprocessor number 15,
Move to ARM
opcode1 – 5, opcode2 – 3,
MRC register from MRC p15,5,r4,c0,c2,3
ARM destination register – r4,
coprocessor
Coprocessor source registers – 0 & 2
Move to Coprocessor number 10,
coprocessor from opcode1 – 3,
MCRR MCRR p10,3,r4,r5,c2
two ARM ARM source registers – r4, r5
registers Coprocessor destination register – 2
Coprocessor number 8,
Move to two
opcode1 – 4,
MRRC ARM registers MRCC p8,4,r2,r3,c3
ARM destination registers – r2, r3
from coprocessor
Coprocessor source register – 3
N. Mathivanan
• Coprocessor instructions continued……
Coprocessor number 6,
LDC p6,c1,[r4] Coprocessor register c1 is loaded with data from
Load
memory address in r4.
LDC coprocessor
Coprocessor number 6,
register
LDC p6,c4,[r2,#4] Coprocessor register c4 is loaded with data from
memory address in r2 +4.
Coprocessor number 8,
STC p8,c8,[r2,#4]! Memory address is [r2] + 4
Store
Store c8 in memory and then r2 =r2+4
STC coprocessor
Coprocessor number 8,
register
STC p8,c9,[r2],#-16 Memory address is [r2]
Store c9 in memory and then r2 =r2-16
N. Mathivanan
Thumb State Instruction Set
• 16-bit instructions (compressed form), executable in Thumb state.
• Instruction decoder decompresses to 32-bit ARM equivalent
• Features:
• Works on 32-bit values, produces 32-bit addr for mem access
• Access to low registers (r0-r7) similar to ARM state
• Restricted access to high registers (r8-r15), MOV, ADD, CMP can access
• Thumb state enabled by ‘T’ bit (if set) of CPSR.
• If enabled, fetches 16-bit code from HW aligned addresses, PC is
incremented by two bytes
• Instructions removed: MLA, RSB, RSC, MSR, MRS, SWP, SWPB and
coprocessor instructions;
• New Instructions: LSL, LSR, ASR, ROR (barrel shifter can’t be
combined with any instruction)
• Not conditionally executable (except ‘B’ branch instruction)
N. Mathivanan
• Data processing instructions
o 2-addr format, No conditional execution, No ‘S’ suffix (always ON)
o MOV, MVN, ADD, ADC, SUB, SBC, MUL, AND, ORR, EOR, BIC,
o NEG, LSL, LSR, ASR, ROR, CMP, CMN, TST
• Branch instructions
• Branch instruction (‘B’) is conditionally executable
• B{cond}, B, BL, BX, BLX
• Load-Store instructions
• Offset: register, immediate (0-124 words), relative to PC/SP
• LDR, STR, LDMIA, STMIA, PUSH, POP
N. Mathivanan
• Thumb
decompressor
• Illustration: Thumb uses less memory space than ARM though more
instructions are used – Let r1, r2 have value and divisor. The program
produces quotient and remainder in r3 and r2.
12. Write down an instruction that transfers a word size data into ‘r0’
register from a memory location at an offset of 16 bytes from a word
aligned memory location whose address is in ‘r1’ register.
13. Explain the indexing methods supported by ARM7 Load-Store class of
instruction.
14. Write down the syntax of Load-Store Multiple instructions. Explain the
use of the instructions with examples.
17. Write down the pair of load and store multiple instructions that is
used in ‘EA’ type stack.
23. Write down ARM7 ALP fragments to enable IRQ and change to
IRQ mode while processor is running in a privileged mode.
26. Illustrate with suitable example: Thumb code offers high code
density
N. Mathivanan