Shiekh El-Embedded
Shiekh El-Embedded
29/11/2024
๐๐ก๐๐ญ ๐ข๐ฌ ๐ญ๐ก๐ ๐๐ฎ๐ข๐ฅ๐ ๐ฉ๐ซ๐จ๐๐๐ฌ๐ฌ? ๐๐จ๐ฐ ๐ข๐ฌ ๐ข๐ญ ๐๐จ๐ง๐ ? ๐ฐ๐ก๐๐ญ ๐ข๐ฌ ๐ญ๐ก๐ ๐๐จ๐ฆ๐ฉ๐ข๐ฅ๐๐ซ ๐ฌ๐ญ๐๐ ๐๐ฌ ? ๐๐ก๐๐ญ ๐๐ซ๐ ๐ฆ๐๐ฆ๐จ๐ซ๐ฒ ๐ฌ๐๐๐ญ๐ข๐จ๐ง๐ฌ? ๐๐ก๐๐ญ ๐ข๐ฌ ๐ญ๐ก๐ ๐ฌ๐ฒ๐ฆ๐๐จ๐ฅ ๐ญ๐๐๐ฅ๐? ๐๐ก๐๐ญ ๐ข๐ฌ ๐ญ๐ก๐ ๐๐๐๐ฎ๐ ๐ข๐ง๐๐จ ?
--ุชุนุฑู ุงู ุงูููุงุฑุฏู ููุชููู
ูู ู
ูุงู ุทููู ูุนุฑูุถ ุญุฑููุง ูู ุงููุชุฑุฉ ุงูุฒู
ููุฉ ุจูู ุงูู ุชุฏูุณ ุนูู ุฒุฑุงุฑ ุงู build ูู ุงู ide ูุจูู ูู
ุง ุชุฑูุน ุงูุฏู ู
ู ุนูู ุงูุฒุฑุงุฑ ุฌุฒุก ู
ู ู
ููุฑู ุซุงููุฉ ูุนูุง ุจุณ ููู ูู
ูุฉ ุญูุงูุงุช ูุงุงุงุงุงุงู ุชุนุงูู ูุง ุญุณู ู deep dive ูููุง ููููู
ูู ุญุชู ููู ูุจุชุนู
ู ุงูู ูุงุฐุงู !
--ูููู ุจุณ ูุฏุง ูู ูุนูู ุงู build process ุ ูุจุชู
ุงุฐุงู ุ
ูุงูู ูุงุฒู
ุชูุง ูุจุชุชูุณู
ููุงู
Stage ุ ููู stage ูููุง ุงูู ูููู ูุจุชุนู
ู ุงูู ุ
ููุนูู ุงูู ุง generate ุงู binary code ุ
ูุงูู ูู ุงู Compiler ูุจูุญุตู ููู ุงูู ุ ูุจูุชูุณู
ููุงู
stage ุ
ูุงุฐุงู ุงููููุงุช ุงููุชูุฑ ุงููู ุงูุง ูุงุชุจูุง ูู ุงูุจุฑูุฌููุช ุฏู ุจุชุชุฌู
ุน ู
ุน ุจุนุถูุง ุนุดุงู ูุทูุน ููุง executable file ุงุฎุฏู ุงุญุฑูู ุนูู ุงูุจูุฑุฏู ุ
--ููุนูู ุงูู symbol table ูุจุณุชุฎุฏู
ู ูู ุงูู ุ
ูุงุฐุงู ูู ูุงูู ุจูุทูุจ function ู
ูุฌูุฏู ูู File ุชุงูู ุงุฐุงู ุงู linker ุจูููู ุงูุฑุฃุณูู ุฏูู ูู ุงูุญูุงู ุ
ูุนูู ุจูุนุฑู ู
ููู ุงู function ุงููู ุงูุช ุจุชุทูุจูุง ุฏู ู
ูุฌูุฏ ูู ูุงูู ูุฐุง ูุงู Definition ุจุชุงุนูุง ุงูู ุ
ู ููููุฏู ุจุงูู ููู
ุงู build ุจุฑูุณูุณ ุงูุช ุจุชูููู ูู ุงูุงูู ูุงูุงุฎุฑ ุงูุง ูู ุดุบุงู ุนูู ุงู ide ุจุถุบุท ุนูู ุงู build button ูุฎูุตุช ุ
--ููุนูู ุงูู Debug info ุ ูุจุงุณุชุฎุฏู
ูุง ูู ุงูู ุ ููุญุตู ุงูู ูู ุทูุนุช ุงู binary ู
ู ุบูุฑูุง ุ
--ุญุงุถุฑ ูุง ุญุณู ูุฌุงูุจู ุนูู ูู ุฏู ูุฒูุงุฏุฉ โฆ.ุฏุง ุงุญูุง ุนูููุง ูุงููู (ุฏุงูุง ุญุชู ูุง ุญุณู ูู
ุดู ุงูุฌูุด ูู
ุงู ุดูุฑ ุงูุง ูุงู
ููู
ููุง ูุชูุงูู ุญุฏ ุชูููู ู
ุด ูุงูู
ููุง ู
ุนูุด ูุถุญูู ู
ุนูุด ุจูู ูุง ุญุณู ูุฑูุญ ุงุฎุฏู
ุชุฑุงุจ ุงููุทู ููุจูู ุงุฑุฌุนูู ูู ุงูุงุฌุงุฒุงุช ูุงุจูู ุงุฏุนููู ุจูู ูุง ุญุณู ุงูุณูู ุชููู ูููู ุนููุง ูุชุนุฏู ุจุณุฑุนู)โค๏ธ
/*************************/
๐-๐๐ก๐๐ญ ๐ข๐ฌ ๐ญ๐ก๐ ๐๐ฎ๐ข๐ฅ๐ ๐ฉ๐ซ๐จ๐๐๐ฌ๐ฌ?
--Getting target executable code from c files.
--ุงู build process ุงู ุงู compilation process ุฏู ุงูุนู
ููู ุงููู ุจูุนู
ููุง ุนุดุงู ุงู .c ุงููู ู
ุนุงูุง ุฏู ูุชุญูู ู .o ุงูbin ุนุดุงู ูุงุฎุฐู ูุนู
ูู burn ุนูู ุงู microcontroller.
--ุนุงูุฒูู ูููู
ุจูู ู
ู ุงูู ู
ูููู ุงู file.c ู
ุนุงูุง ูุญุฏ ู
ุทูุน file.o ุงุฎุฏู ุงุญุทู ุนูู ุงู microcontroller.
--ููู
ู ูู build process ุฏุง ุจููููู ูู ุงู ุชูุฏุฑ ุชููุด ุงู ุชุญุฏุฏ ุงู error ุงููู ุทุงูุน ููู ุฏู ุจุณุจุจ ุงูู ุฃู ููุน ูู ุงูู stage ููู
ุงู ููุนุฑูู ุงู statements ูุชุญููู ุงู c code ู machine language.
--ุจุงูุงุถุงูู ูู
ุงู ูุชุนุฑู ุชูุชุจ ููุฏ ูููุณ ูุงู ุงูุช ุจููุช ุนุงุฑู ุงูููุฏ ุฏู ุจูุฑููููุช ุงุฐุงู ูู ุงูู
ูู
ูุฑู ูุนูู ุงููุงุฑุฏููุฑ ุจุชุงุนู .
--ุงุฐูุฑู ุจุญุงุฌู ุงุญูุง ุจูุดุชุบู ุนูู 2 macin ุงู develop ุฃู ุงู host machine ูุฏู ุงููุงุจุชูุจ ุจุชุงุนูุง ูุฏู ุงููู ุจูุชู
ุนููู ุงู build process ูููู ุงู target machine ูุฏู ุงู microcontroller ุจุชุงุนูุง ุงููู ููุฑูุญ ู buran ุนููู ุงูููุฏ ุจุชุงุนูุง.
/******************/
-- ุงูุญุชู ุฏู ูุชูุฏููุง ูุณุคุงู ูููุณ ุงูุง ููู ุงูู ุงููุฑู ุจูู ุงู Natine Toolchain ูุงู cross Toolchain ุ
What is Native Toolchain and Cross Toolchain ?
--ุทุจ ูุนูู ุงูู ุงุตูุง ุงู Toolchain ุ
--ุฏู ูุง ุญุณู ุจูููู ูููุง ุงู compiler + linker + c libres + binary utilites โฆ ุงู toolchain ุฏู ุงููู ุจุชุนู
ู ุจููุง ูู ุงูู
ุฑุงุญู ุฏู ูุงู toolcine ุฏู ุจูู ููู ู
ููุง ููุนูู :
๐-๐๐๐ญ๐ข๐ฏ๐ ๐๐จ๐จ๐ฅ๐๐ก๐๐ข๐ง:
-- This toolchain runs on the same type of architecture, sometimes the same actual system, as the programs it generates. This is the usual case for desktops and servers, and it is becoming popular on certain classes of embedded devices.
--ุงู Native ูุนูู ุงูุช ุฌุจุช ุงู toolchain ู
ู ุนูู ุงููุช ุนุงุฏู ูุณุทุจุชูุง ุนูุฏู ุนูู ุงูุงุจุชูุจ ุงู ุงู host machine (ุงูุงุจุชูุจ ุจุชุงุนู ุงูุจุฑูุณูุณูุฑ ุจุชุงุนู ู intel / AMD ) ูุงุณุชุฎุฏู
ุชูุง ุนุดุงู ุชุนู
ู generation ูููุฏ ุจุงููุฑู ููู run ุนูู intel ุจุฑุถูโฆ.ูุถุญูู !
--ุญุงุถุฑ ูุง ุญุณู
--ูู
ุงูุงุฎุฑ ูู ุงู toolchain ูุฒูุช ุนูู Architecture ุนุดุงู ุช generate code ููุดุชุบู ุนูู ููุณ ุงู Architecture ุฏู ูุฏุง native toolchain.
--ู
ุซุงู ุนูู ูุฏุง ูู
ุง ุจุชูุชุญ eclipse ู
ุซูุง ูุชูุชุจ ููุฏ c ุนุงุฏู ูุดุบูุชู ูุทุจุน hello world ู
ุซูุง ุงูุช ูุฏุง ุนู
ูุชูู generation ุนูู ุงูุงุจุชูุจ ุจุชุงุนู ูุจุฑุถู ุงู binary ุงููู ุทูุน ููุดุชุบู ุนูู ุงูุงุจุชูุจ ุจุชุงุนู (ููุฑู ุนูู ููุณ ุงูู
ุนู
ุงุฑูุฉ ุงููู ุนู
ูุช ููู generation ุฏู ูุฏุง native toolchain)
๐-๐๐ซ๐จ๐ฌ๐ฌ ๐๐จ๐จ๐ฅ๐๐ก๐๐ข๐ง:
--This toolchain runs on a different type of architecture than the target, allowing the development to be done on a fast desktop PC and then loaded onto the embedded target.
--ููุง ุจูู ุนูุณ ุงู native ุงูุช ูุฒูุช ูุณุทุจุช ุงู toolchain ู
ู ุนูู ุงููุช ูุงุณุชุฎุฏู
ุชูุง ุนุดุงู ุชุนู
ู generation ู binary code ููุดุชุบู ุนูู target machine ุบูุฑ ุงูู
ุนู
ุงุฑูุฉ ุจุชุงุนุช ุงูุงุจุชูุจ ุจุชุงุนู.
--ูุฏูู ู
ุซุงู ูุง ุญุณู ุญุงุถุฑ
--ุฏูููุช ุงูุช ุฑูุญุช ูุชุจุช ููุฏ ุนูู atmel studio ุงู STMCubeIDE ูู
ุนุงู ุงู toolchain ุฏูููุช ุงูุช ุนู
ูุช ุงู gernation ,ูุงู develop ููููุฏ ุฏู ููู ุ
ุนูู ุงูุงุจุชูุจ ุนูุฏู ูุงููู ูู ุจูุฒุฏ ุนูู intel architecture ูุงู binary code ุงููู ุทูุน ุฏู ูุดุชุบู ููู ุ ุงู ุนูู ุงูู ุ ููุดุชุบู ุนูู ARM ุงู AVR ู
ุซูุง ูุนูู ู
ุด intel ุตุญ ุ
ูู ุฏู ุจูู ุงู cross toolchain ุจุนู
ู generation ูููุฏ ุนูู architecture ุงู ุจุฑูุณูุณูุฑ ู
ุนูู ูููู ูู ู
ุด ููุดุชุบู ุนูู ุงู same arctututrr ูุง ููุดุชุบู ุนูู archtucure ุชุงููู.
/******************/
--ูู
ุน ุงูู stage ูู ุงู build process ููููู ุงูููููู
๐-๐๐ซ๐-๐๐ซ๐จ๐๐๐ฌ๐ฌ๐ข๐ง๐ ๐๐ญ๐๐ ๐:
--All preprocessing directives will be resolved
--The pre-processing performs a series of textual transformations on its input, these happen before all other processing.
1-macro
2-include
3-Conditions ( , , )
4-Merge continued line โ\โ
5-Replace comments with single space
6-Inclusion of header files
7-Diagnostics ( , )
--ุงู -Pre-Processing ุจูุดูู ุงู ุญุงุฌู ูุณุจููุง ุนูุงู
ุฉ ุงู #
--ูุนูู ูู ููุช ุจุชุนู
ู ู
ุซูุง ู File ู
ุนูู ููุฑูุญ ูุดูู ุงู ุฏู ููุญุท ุงู content ยญยญยญุจุชุงุน ุงู file ุฏู.
--ููู ุงูุช ููุช ุนุงู
ู \ ุนุดุงู ุชูุถู ุจูู ุงูุณุทูุฑ ููู ุจูุดููุง
--ููุฐูู ุจูุดู ุงู # ุงููู ูู ู
ูุชูุจ ุฌูุจูุง string ูููุณ ุงู string ูููู ุจูู double quotation
--ุงู ููู # # ูุฏู ุงููู ุจุชุนู
ู concatiantion ุจูู ุง ู starings ุฏู ูุจุนุถูุง
--ูุฐูู ููู ุงูุญุฌุงุช ุจุชุงุนุช ุงู condition ( , , )
ุชูููู ุทุจ ูู ู
ุด ุนุดุงู ูุชุดู ุนูู ุงู condition ุฏู ู
ุญุชุงุฌ processor ูุนู
ููุง ุ ููููู ุทุจุนุง ูุง ุญุณู ู
ูู ุจูุนู
ููุง ุนูู ุงูุจุฑูุณูุณูุฑ ุจุชุงุน ุงู host machine ุงูุงุจุชูุจ ุจุชุงุนู ุงูุช
--ูุฐูู ู
ุซูุง ูู ุงูุง ุชูู
ููุฏุฑ ู ุนุงูุฒ ุงูุจู ุนูู ุจููุช ุงูุชูู
ุงู ููู
ุฉ variable ู
ุนูู ูุงุฒู
ุชุจูู ุจูุฐุง ููู
ู ู
ุนููู ูุนูู ูุงูุง ู
ู
ูู ุงูุฏุฑ ูู ุงูู
ุฑุญูู ุฏู ุงุนู
ู ุฌูููุฑูุช ู warning ุงู error ุงุฐุง ูู
ูุชุญูู ุงููู ุงูุง ู
ูุจู ุนููู
--ู
ู ุฃูู
ููุงูุฏ ุงูู
ุฑุญูู ุฏู ุงููุง ุจุชุนู
ู text replacement ููู ุงู macros ุงููู ุงูุง ู
ุนุฑููุง ููู ุจ ูุชูุฌู ูู ุงูู
ุฑุญูู ุฏู ุชุฏูุฑ ุชุดูู ูู ุฏู ูุชุจุฏูู ุจุงูููู
ุฉ ุงูู
ุนุฑููุฉ ูููุง ููู ููุทูุน ูุงูู ุงู .i ู
ูููุด ุงู ุญุงุฌู ุชุจุน ุงู # ูุง ุงููููุฏ ูููุงูู ููุง ู macro ูุชุณุงุนุฏู ุงูู ุชุนู
ู const value.
--ูุงู output ุจุชุงุน ุงู Pre-Processing stage ูู( file.i (intermediate
/************************/
๐-๐๐จ๐ฆ๐ฉ๐ข๐ฅ๐๐ซ ๐๐ญ๐๐ ๐
--Higher Level language code will be converted into processor architecture level assembly.
--Compiler works with one translation unit (parsed c file) at a time.
--Compiler allocates memory for definitions and generates opcodes for excitable statements.
--The compiler and assembler create relocatable object files (.obj)
--ูู ู
ุฑุญูุฉ ุงู compiler ููู ุชุญููู ุงู c code ู assembly code (ุฎุฏ ุจุงูู ูู ุงู compilers ุงูุญุฏูุซุฉ ููููู ู
ุฏู
ุฌ ุฌูุงูุง ุงู compiler +assembler ) ููู ุงุญูุง ููุง ุจูุชููู
ุงููู
ู
ูุตูููู ุนู ุจุนุถ ููุฏุง ุงู compiler ููุงุฎุฏ c code ููุทูุนูู assembly code ูุจูููู based ุนูู ุงู architecture ุงููู ุงูุช ู
ุญุฏุฏูุง.
--ู
ุฑุญูุฉ ุงู compiler ูู based ุนูู ุงู Architecture ูุงู ูู Architecture ููู ุงู Assembly ุงูุฎุงุต ุจูู.
--ูุทุจุนุง ุงู compiler ุจูุดุชุบู ุนูู source file ูุงุญุฏ ูู ุงูู
ุฑุฉ ุงููุงุญุฏุฉ.
--ูู ุงู compiler ู
ู
ูู ุงุจุณุชุฑูุดู ูุฏุง ูู ุจูุนู
ู ุงูู ุ
--ุจูุนู
ู ุญุงุฌุชูู ูุง ุญุณู ุงูุงููู ุงูู ูุญูู ุงู c code ุจุชุงุนู ู machine code ูุงูุญุงุฌู ุงูุชุงููู ุงูู ูุญุฌุฒ ุงู memory ุจุชุงุนุชู.
--ูู ุงูุบุงูุจ ุงูุจุฑูุฌููุช ุจุชุงุนู ุจูููู ููู ุงูุชุฑ ู
ู source code ูุนูู ุจูููู ุนูุฏู main.c , gpio.c , timer.c ,adc.c ุงูููู
ุจููุฑ ุจูู
ูุณ ูุงูู ูุงูู ูุฏุง ููุจุชุฏู ูุญูููู ู Assembly
--ุงู output ุจุชุงุน ุงู compiler ูู ูู ู
ูุตูู ุนู ุงู assembler ูููุทูุน ููู file.s.
--ุงู compiler ู
ู ุฌูุง ู
ุชูุณู
ู 3 stage ุชุนุงูู ูุง ุญุณู ุงุนุฑูู ุนูููู
.
/******************/
-Compilation stages:
๐-๐
๐ซ๐จ๐ง๐ญ ๐๐ง๐
1-๐ฌ๐จ๐ฎ๐ซ๐๐ ๐๐จ๐๐ ๐ฉ๐๐ซ๐ฌ๐ข๐ง๐
--ุงู Front end ูุฏู ุจูุญุตู ูููุง source code parsing ููู ุงู ุจูุชุจุชุฏู ููุตุต ุงูููุฏ ุงูู
ูุชูุจ ูุญุชู ุญุชู.
--ูุจูุนู
ู ููุง ุนู
ููุฉ ุงู Tokenising ููู ุงูู ูุญุงูู ูููู
ุงู tokens ูุงู ุงูููู
ุงุช ุฏู ู
ู keywords , operators , identifier , literials ููููู
ุจูู ุงุณุงู
ู ุงู variables ูุงู functions.
--ุจูุนู
ู ุงูููุงู
ุฏู ุงุฐุงู ุ
By
--๐๐ฒ๐ง๐ญ๐๐ฑ ๐๐ง๐๐ฅ๐ฒ๐ฌ๐ข๐ฌ
1-Ensure tokens are organized according to C rules.
2-To avoid compiler syntax errors
3-output = parse tree
--ูููุง ูู ุจูุญูู ุงู C code ุงููู ุงูุช ูุงุชุจู ููุดููู ูู ู
ุชูุงูู ู
ุน ุงู c stranded ููุง ูุง ูู ููู ุญุงุฌู ู
ุด ุฒู ู
ุงู C ูุงููู ุนูููุง ู syntax ููุถุฑุจ compiler error .
--Intermediate representation
1-Transform parse tree into machine code intendant representation
/******************/
๐-๐๐ข๐๐๐ฅ๐ ๐๐ง๐
By:
๐-๐๐๐ฆ๐๐ง๐ญ๐ข๐ ๐๐ฆ๐ฒ๐ฅ๐๐ฌ๐๐ฌ
1-Adding info to the AST
2-Checks logical structure of the program
3-Problems found here are warnings rather than errors.
4-Program symbol table constructed; debug information inserted
--ููุง ุงู compiler ุจูุญุงูู ูููู
ู
ู ุงูููุฏ ุงูุช ุนุงูุฒ ุชุนู
ู ุงูู ุงู ุงูุช ุชูุตุฏ ุงูู ู logic ููุจุชุฏู ูุนุฑู ุงุญุฌุงู
ุงู Data type ุงููู ุงูุช ูุงุชุจูุง ูููู ู
ุดููู ุงู ุญุงุฌู ูู ุงูู
ุฑุญูู ุฏู ุจุชููู warning ู
ุด error ุฒู ุงู ุญุงุฌู ุชููู ุจุชุนู
ู conflict ุงู ุงูู ูููู ุดุงูู ุงูู ุงุชูุบุจุท ูู ุงูุญุชู ุฏู ุงู ุงููุง ู
ู
ูู ุชุชููู
ุจุฃูุซุฑ ู
ู ู
ุนูู ูููููู ุฎุฏ ุจุงูู ูุงุฑูุณ ุงูุช ุนุงู
ู pointer ู
ู char ู ุจุชุฎููู ูุดุงูุฑ ุนูู ุญุงุฌู int ูุชูุฌู ุนุงู
ู casting ุงูุช ูู int ุนุดุงู ุชูููู ุงูุง ุนุงุฑู ู
ุชูููุด ููุชุดุงู ุงู warning ุฏู.
๐-๐๐ฉ๐ญ๐ข๐ฆ๐ข๐ณ๐๐ญ๐ข๐จ๐ง
1-Transforms the code into smaller or faster but functionality equivalent.
2-Multi level process includes:
--Inline expansion of functions
--Dead Code removal
--Loop unrolling
--Register allocation
--ุชุงูู ู
ุฑุญูู ูู ุงู middle end ูู ุงู optimization ูุฏู ุงููู ุจูุญุตู ูููุง ุชุญุณูู ููููุฏ ุจุชุงุนู ู
ู ุญูุซ ูููู ุฃุณุฑุน ู Ex*****on time ููููู efficient ู
ู ุญูุซ ุงุณุชุฎุฏุงู
ุงู memory.
--ุงู Optimization ุฒู ู
ููููุง ููู ุงู ุงูููู
ุจููุฑ ุจูุญุงูู ูุธุจุท ุงู code ุจุชุงุนู ููุฎููู ุงุณุฑุน ู ex*****on ู efficient ู
ู ุญูุซ ุงูู
ูู
ูุฑู ุงููู ุญุฌุฒูุง ูุฏู ุนู ุทุฑูู ุงูู ู
ุซูุง ู
ู
ูู ูููุจ function ุนุงุฏูู ู inline function ููู ุงูู ุจุฏู ู
ูุฑูุญ ูุนู
ู jump ุนูู ุงู address ุจุชุงุนูุง ูุง ูุฑูุญ ูุฌูุจ ุงูููุฏ ุจุชุงุนูุง ููุญุทู ูู ู
ูุงู ู
ูู ุดุบุงู.
--ูุฐูู ูู ุญุงุฌู ุฒู ุงู dead code ููู ุงูู ูุงุชุจ ููุฏ ุนู
ุฑู ู
ุจูุชููุฐ ูุงูููู
ุจููุฑ ุจูุนุฑู ุงู ุงูุญุชู ุฏู ุณูู ู
ูู ููุฌู ุนุงู
ู ูููุง optimization ู ูุญุฐููุง ุนุดุงู ูููู ุญุฌู
ุงู binary ุงููู ุทุงูุน.
--ูุฐูู ู
ู
ูู ูุนู
ู Loop unrolling ููู ุงูู ูููุจ ู
ุซูุง ุงู For loop ู ุณุทูุฑ ูุฑุง ุจุนุถูุง ุจุฏู ุงู loop ุญุฌู
ุงูููุฏ ุงู ุจููุจุฑ ูููู ุจูููู ุงุณุฑุน ูู ุงู Education.
.
/******************/
๐-๐๐๐๐ค ๐๐ง๐
๐-๐๐จ๐๐ ๐ ๐๐ง๐๐ซ๐๐ญ๐ข๐จ๐ง
1-Converts optimized Intermodal Representation code structure into target opcodes.
--ุชุงูุช ู
ุฑุญูุฉ ูุฏู ุงููู ุจูุญุตู ูููุง ุงู Code generation ูุงู memory allocation.
๐-๐๐๐ฆ๐จ๐ซ๐ฒ ๐๐ฅ๐ฅ๐จ๐๐๐ญ๐ข๐จ๐ง
1-Compiler allocates memory for the code and data in sections
2-Sections have different info.
3-Sections defined by name or attributes of info stored in them.
4-Attributes are used by linker for locating sections in memory.
--ุชูุฌู ุชุงูู ู
ุฑุญูู ูู ุงู back end ููู ุงู memory allocation ุงูู ูุญุฌุฒ ู
ุณุงุญุฉ ูู ุงูู
ูู
ูุฑู ูู code ุงููู ุทูุน ุฏู ูููุฏุงุชุง ุงููู ุงูููุฏ ุฏู ุจูุณุชุฎุฏู
ูุง ูุจูุญุฌุฒ ุงูู
ูู
ูุฑู ุฏู ูู ุตูุฑุฉ ุณูุงุดู ููู ุณูุดูู ุจูููู ููู ุบุฑุถ ุงู ุณุจุจ ู
ุนูู ูููุน ู
ู ุงูุฏุงุชุง ุจูุดูููุง ูุจูุฏู ูู Section ุงุณู
ูุจุนุถ ุงู attributes ุฒู ููุนู ุงูู ูููุน ุงูุฑุง ูุงูุชุจ ููู ููุง ุงูุฑุง ุจุณ ุญุฌู
ู ูุฏ ุงูู ุจููุฒู ูู ู
ูู
ูุฑู ููุนูุง ุงูู ููุฌู ุงู linker ุจูู ููู ุจููููู ุงููุงุณ ุฏู ูููุง ูู
ูู ูู ุงูุณูุงุดู ุงููู ุดุจู ุจุนุถ ูู ุณุดูู ูุงุญุฏ.
--ุทุจ ุงูู ุงู memory sections ุงููู ุนูุฏูุง ุ
/******************/
๐๐ก๐๐ญ ๐๐ซ๐ ๐ฆ๐๐ฆ๐จ๐ซ๐ฒ ๐ฌ๐๐๐ญ๐ข๐จ๐ง๐ฌ?
--ุจุต ููุง ุจูุทูุน ููู sections ุจุญุจ ุงุณู
ููุง ุงูุงุณุงุณู ูููู sections ุชุงููู ุจุชุทูุน ุจุฑุถู ูู ุงู ูุง ุชุญุชูู ุนูู ููุฏ ููุง ุนูู ุฏุงุชุง ุชุฎุต ุงูููุฏ ุจุณ ู
ู ุบูุฑูุง ุงู linker ูุงู debugger ุญุฑููุง ููุตุฑุฎูุง ู
ูู ูู ุงูุณูุงุดู ุฏู ู
ุทูุนุชุด
--ุงูู ูู sections ุงูุงุณุงุณูู ูุงููู ุชููู ุจุชุญุชูู ุนูู ููุฏ ุงู ุฏุงุชุง ุ
1-.bss
2-.data
3-.txet
4-.rodata
5-stack
6-heap
--ููุช ู
ุชููู
ุนููู
ูู ุงูุจูุณุช ุจุชุงุน ุงู start code ุชูุฏุฑ ุชุฑูุญ ุชุดูููู
ููุงู ุจุงูุชูุตูู
/*********************/
๐๐ก๐๐ญ ๐ข๐ฌ ๐ญ๐ก๐ ๐๐ฒ๐ฆ๐๐จ๐ฅ ๐ญ๐๐๐ฅ๐?
--ุฏู ุจุชููู ูุง global symbols ุงู private symbols
--ุงู symbol table ู
ู
ูู ุชุนุชุจุฑู ุญุงุฌู ุจุชุฎุฒู ูููุง ุดููุฉ ู
ุนููู
ุงุช ุจูุชุฎุฒู ูููุง ุงูู ุงูุงุณุงู
ู ุงููู ุฌุงุช ูู ุงู code ูุงูุงุณุงู
ู ุฏู ุงู Attributes ุจุชุงุนุชูุง ูุงูุช ุงูู ุฒู ุงูู ุงุณุงู
ููุง ูู ูู variable ููุง function ููุงูุช ู
ูุฌูุฏุฉ ูู ุงูู Scope ู ุงุชูุฑุฑุช ูุงู
ู
ุฑู ูู ุงู symbol ุฏู ูุงู global ููุง private ุจุญูุซ ูู
ุง ุงู linker ูุฌู ูููู ุงููููุงุช ุจุจุนุถูุง ูุจูู ู
ุนุงู guide ูุฏุง ุจููููู ุงู file ุฏู ุงูู ูุถุนู ููุฑู ูุฑุจุท ุงููุงุณ ุฏู ุจุจุนุถูุง.
/*********************/
๐๐ก๐๐ญ ๐ข๐ฌ ๐ญ๐ก๐ ๐๐๐๐ฎ๐ ๐ข๐ง๐๐จ?
--ุฏู ุงููู ุจูุณุชุฎุฏู
ูุง ุงู debugger ูู ุญุจ ูุนู
ู digging ููููุฏ ุจุชุงุนู ูุงู ุงู debugger ู
ูููู
ุด ุงู zero / ones + ุงู ุงูููุฏ ุจุชุงุนู ู
ู
ูู ูููู ุงุชุนู
ู ููู optimization ูููู ุญุฌุงุช ู
ูู ุงุชุดุงูุช ููู ุนุงูุฒ ุญุงุฌู ุชุณุงุนุฏู ูู ุงูู ูุจูู ุนุงุฑู ุงูุฌุฒุก ุฏู ุจุชุงุน ุงููุงููุดู ุฏู ุงู ุชู
ุงุจ ุงู source code ูู binary code ุฏู
/*********************/
--ุนูุฏู ุจูู ุณูุดููู ู
ูู
ูู ุฌุฏุง ุฌุฏุง ุฌุฏุง ููุตุจุญ ูุง ุญุณู ูุฑูุฒ ููุง ุฌุงู
ุฏ
๐-๐๐ฑ๐ฉ๐จ๐ซ๐ญ
--ูุฏู ุงููู ุจูุชุฎุฒู ููู ุงู global simple ุณูุงุก functions ุงู variables ูุนุฑู ู
ุนููู
ุฉ ุงู global ุฏู ู
ู ุงู symbol table
--ูู ุงูุณูุดู ุฏู ุจูุฎุฒู ุงู symbols ุงููู ุงูุช ู File ุจุชุนู
ู ูููุง Export ููููุงุช ุชุงููู ููุจูู ู
ุนุฑู ูุงู symbol ุฏู giver
๐-๐ข๐ฆ๐ฉ๐จ๐ซ๐ญ
--ูุฏู ุจูุฎุฒู ููู ุงูุญุงุฌุงุช ุงููู ุงูุช ู
ุญุชุงุฌูุง ู
ู ุจุฑู ุงู file ุฏู
--ูููุง ุจูุชุฎุฒู ุงูุญุงุฌุงุช ุงููู ุจุชููู required ู
ู ูููุงุช ุชุงููู ุจุชูุงุฏู ุนูู function ููู ู
ุชุนุฑูู ูู ูุงูู ุชุงูู ุจุชูุงุฏู ุนูู variable ููู ู
ุชุนุฑู ูู ูุงูู ุชุงูู ( ุทุจุนุง ุงููุงููุดู ุงูุช ู
ุนุฑู ุงู prototype ุจุชุงุนูุง ุนุดุงู ุชุนุฏู ู
ู ุงู compiler ูุงูููููุฑ ููุจูู ู link ุจูู ุจูููุง ูุจูู ุงู binary code ุงู ุงู Definition ุงูู
ูุงุจู ูููุง ูุนุดุงู ูุฏุง ูู
ุง ุจูุทูุน ููู ุงูุฑูุฑ undefined reference ุงูุงูุฑูุฑ ุฏู ุจูููู ุทุงูุน ููู ู
ู ุงูููููุฑ ุงูู ูู
ุง ูุฑุจุท ุจูู ุงุณู
ุงููุงููุดู ู
ูููุงุด ูู ุงู ูุงูู ุชุงูู ูุชุญุฏูุฏุง ู
ููุงุด ุงูุงุณู
ุงู ุงู symbol ุจุชุงุนูุง ูู ุงู Export section ู
ุนูู ูุฏุง ุงูู ู
ุด ู
ุนู
ูู ูููุง giver ูุจุงูุชุงูู ุงูููููุฑ ููุทูุน ููู ุงูุฑูุฑ ูููููู ุงุฑุญู
ูู ุงูุง ู
ุด ูุงูู ุงู symbol ุฏู ูู
ุด ุนุงุฑู ุงุฑุจุท ุจูู ุงู import ุงููู ุงูุช ุนุงูุฒู ุฏู ูุจูู ุงู export.
.
/*********************/
๐-๐๐ฌ๐ฌ๐๐ฆ๐๐ฅ๐๐ซ
--It takes the assembly source code and produces an assembly listing with offsets.
--The assembler output is stored in the object file.
--ููู ุงูู ุจูุงุฎุฏ ุงู file.s ููุญููู ู file.obj ูุฏู ุงููู ุจูููู binary ุงุตูุงุฑ ููุญุงูุฏ ูุฏู ุงููู ุจูุชุนู
ูู linking ู
ุน ุจููุช ุงููููุงุช ุงููู ูู ุงูุจุฑูุฌููุช ููุชุนู
ูู burn ุนูู ุงู microcontroller.
--ููุง ูู ุจูุทูุน ุงู binary ุงูู
ูุงูุฆ ููู ุงู instruction ูููุณู
ู ุจูู ู opcode ู operands
.
๐๐๐ฃ๐๐๐ญ ๐
๐ข๐ฅ๐๐ฌ
--Object file contains opcodes and data sections.
--Object file only contains the sections for static or predefined variables (the variables which defined before the compilation not in run time)
--The .o file is not (yet) excitable because static and global addresses are offsets from the start of their sections.
--ูููุง ุจูููู ุงู ุงููู ุจูุจูู ุทุงูุน ูู ุงู object code ููู ุงู Static variables ููู ุงููู ุจุชููู ุนุงูุดู ุทูู ุงูุจุฑูุงู
ุฌ (ุฒู ุงูุฏุงุชุง ุงููู ุงุชุฎุฒูุช ูู ุงู .bss / .data / .rodata ) ุฏูู ุซุงุจุชูู ูู
ูุฌูุฏูู ุทูู ุงูุจุฑูุงู
ุฌ ู
ุด ุดููู ููุชู
ูุช (ุฒู ุงู local variables ุงู ุงู heap ุฏูู ุจูุชุญุฌุฒูุง ูู ุงู run time ู
ุด ูู ุงู compilation time ) ูู
ุจูุจููุด ุนุงูุดูู ุทูู ุงูุจุฑูุงู
ุฌ (ู
ุชุฎูุทุด ุจูู ููู
ุฉ static ุงููู ููู ุฏู ูุงููู ู
ุนูุงูุง ุงู ุงูู
ุชุบูุฑ ู
ุญุฌูุฒ ู
ู ูุจู ุงู run timer ูุนุงูุด ุทูู ุงูุจุฑูุงู
ุฌ ูุจูู ุงู static keyword ุจุชุงุนุช ุงู c)
--Addresses defined in other modules are not known at all , except by name (symbol).
.
/**************************/
๐-๐๐ข๐ง๐ค๐๐ซ
-- ูุนูู ู
ุซูุง ุทูุน uart.o , lcd.o , gpio.o , adc.o
--ุทุจ ู
ูุง ุนุงูุฒ ุงุฌู
ุน ุงููุงููุงุช ุฏู ูููุง ู
ุน ุจุนุถ ุนุดุงู ุงุทูุน ุงูุจุงููุฑู ุงูููุงุฆู ุงููู ูุฑูุญ ุงุนู
ูู ุจูุฑู ุนูู ุงูุจูุฑุฏู.
--ู
ูู ุจูู ููุนู
ูู ุฏู ุ
--ููุนูู ุงูู ููุฌู
ุน ุงููุงููุงุช ุฏู ู
ุน ุจุนุถูุง ุ
--ูุฅุฐุง ุจูุฌู
ุนูุง ุงุตูุงุ
--ุงุฒุงู ุงุฑุณู
ุงู layout ุจุชุงุนูุ
--ูุงุฒุงู ุงุญุท ุงู reset section ุงู ุงู section ุนูุฏ ู
ูุงู ู
ุนูู
--The linker script is a text file made up of a series of linker directives which tells the linker where the available memory is and how it should be used.
--reflect exactly the memory resources and memory map of the target microcontroller
--you have to use the linker script at the linking phase by pass to
the linker -T
--ุงู linker script ูู script ุจูุงุฎุฏ ู
ุฌู
ูุนุฉ objects ู
ุน ุจุนุถ ุนุดุงู ูุนู
ููุง linking ูุนูู ุจูุงุฎุฏ ูู ุงูุณูุงุดู ุงููู ูู ูู ูุงูู ููุงุฎุฏ ู
ููุง ูู ุณูุดู ู
ุน ุงูุณูุดู ุงูู
ูุงุธุฑ ููู ูู ุงููุงูู ุงูุชุงูู ูุงูุชุงูุช ูููุฐุง ููุทูุนูู
ูู ุณุดูู ูุจูุฑ.
---ูุนูู ูู ุจุตูุช ุนูู ุงูุตูุฑู ุงููู ุชุญุช ูู ูุงูู ุจูููู ู
ุชูุณู
ู sections ุฒู ู
ูุชุง ุนุงุฑู .bss , .data , .text ูู ููุงุฎุฏ ุจูู ูู ุงู .bss ู
ู ูู ุงู files ููุทูุนูู
ูู ุณูุดู ูู ุงููุงูู ุงูููุงุฆู ุงุณู
ู .bss ูููุงุฎุฏ ูู ุงู .text ู
ู ุงู files ููุทูุนูู
ูู ุงู .text ุงูููุงุฆู ูููุฐุง ูู ุงูุณูุงุดู ุงููู ุดุจู ุจุนุถ ููู
ูุง ูู ุณูุดู ูุงุญุฏ.
--ุทุจ ูู ููุฒู
ุงู ูู
ุง ุฃุฌู
ุน ูู ุงู .text ู
ุซูุง ู
ู ูู ุงููุงููุงุช ูู ูุงุฒู
ุงุทูุนูู
ูู ุณูุดู ุงุณู
ู .text ุ
--ูุง ูุง ุญุณู ู
ุด ุดุฑุท ู
ู
ูู ุชุทูุนูู
ูู ุณูุดู ุงุณู
ู .ุญุณู ู
ุญุฏุด ูููููู ุญุงุฌู ูุงูุฏููุง ูุชุดุชุบู ุนุงุฏู
ูููู ููู ุชุนู
ู ุญุงุฌู ุฒู ูุฏุง ุงุตูุง !
--ูู ุงู .text ูุชุฌู
ุน ูู .text ูู ุงู .bss ูุชุฌู
ุน ุชุญุช ุณูุดู ุงุณู
ู .bss ูููู ูู ู
ู ุญูุซ ูููุน ู ุงู ูููุน.
--ุฎุฏ ุจุงูู ุงูุช ุงููุงููุงุช ุงููู ุงูุช ุจุชุฌู
ุนูุง ุณูุง ุฏู ูุจุชุนู
ููุง link ุจุชููู relocatable image ูุนูู ู
ุจุชูููุด ุนุงุฑูู ุงู location ุจุชุงุนูุง ููู ูู ุงู physical ุนุดุงู ูุฏุง ูู ุชูุชูุฑ ููุช ุจุชุทูุน ุงููุงูู ู
ู ุงู compiler ุงุณู
ู relocatable file ูุงู ูุณู ู
ูุนุฑูุด ุงูู
ูุงู ุงููู ูููุฒู ููู.
--ููุฐูู ุงู Linker script ูู ุจูุฒุฏ ุนูู ุงู target microcontroller ูุงู ูู ุงููู ุจูููู ุงูุญุงุฌุงุช ุฏู ูุชุชุญุท ููู ููุงุฒู
ูููู ุนุงุฑู ุงู addresses ูู ุงู microcontroller ุนุงู
ูู ุงุฐุงู.
--ุงู Linker script ุฒู ู
ูููุช ููู ูู ูุงูู ุนุงุฏู ุงูุงุฎุชุตุงุฑ ุจุชุงุนู ุจูููู .ld ุงูุช ุจุชูุชุจู ุจ syntax ู
ุนูู ูุจูููู ููู ู
ุฌู
ูุนุฉ commands ุจุชุณุชุฎุฏู
ูุง
/**************************/
๐๐ก๐๐ญ ๐ข๐ฌ ๐ ๐ฅ๐จ๐๐๐ญ๐ข๐จ๐ง ๐๐จ๐ฎ๐ง๐ญ๐๐ซ ? ๐๐ก๐ฒ ๐๐ข๐ ๐ฐ๐ ๐ฎ๐ฌ๐ ๐ข๐ญ?
--linker symbol โ.โ dot
--this dot is called โlocation counter โ it is automatically
addressed calculated by each section size.
--we can use it to track and define the memory layout boundaries
--also we can use it to specify a specific address for a specific section
--location counter should be used only in section commands
--ูุนูู ุงูู Location counter ุ
--ุฏู ุฌูุฏู ู
ุฌููู ูู
ุญุฏุด ุญุงุณุณ ุจูู ููู ุจูุนู
ู ุดุบู ุฌุจุงุฑ
--ู
ุด ููููุง ูุจู ูุฏุง ุงู ุจุญุท ุงู reset section ุนูุฏ ุงู entry point ุนุดุงู ุงู cpu ูู
ุง ุจูููู
ุจูุฑูุญ ูู ุงูู
ูุงู ุฏู ูุงูุง ุนุงูุฒ ุงู reset section ูู ุงูู ุญุงุฌู ุชุดุชุบู ุ
-ููููุง ูุนูุง
--ุทุจ ุงุฐุงู ุงุญุท ุงู Section ุฏู ุจูู ุนูุฏ ุงู entry point ุงููู ูู ููุชุฑุถ ุงูุนููุงู ุจุชุงุนูุง 0x200000 !
--ููุง ุจูู ูุธูุฑ ุฏูุฑ ุงู Linker locator
-- ุงู linker locator ุฏู ุจูู ูุงูู ุจูุดุงูุฑ ุนูู ุงูู
ูุงู ุฏู ูุนูู ุงุฎููู ูู ุงูุงูู ู
ุซูุง ุจูุณุงูู ุนููุงู ู
ุนูู ููู ู
ุญุท section ูู ูุญุณุจ ุงู section ุฏู ุงุฎุฏ ูุฏ ุงูู ููุณุฌู ูู ููุณู ุชููุงุฆู ุงูุนููุงู ุงููู ุนููู ุงูุฏูุฑ ุฏูููุช ุจุนุฏ ููุงูุฉ ุงู Section ุฏู.
/****************************/
--ููุง ู
ุซูุง ูู ุงูุช ููุช ุจุชูุฏู ู prinf ุฏู ุจุชููู ู
ูุฌูุฏุฉ ูู ุงู static library ููุฏู ุจูููู object file ุจุงููุฑู ูุนูู ูุงูุช ุจุช include ุงู .h ุจุชุงุนู ูุชูุฌู ูู ู
ุฑุญูุฉ ุงู linker ุชูุฏู ุนูู ุงู code ุงููู ู
ูุฌูุฏ ูู ุงู static library ูุงููู ูู ููููู ู
ูุงูุฆ ูู prinf
--ุงู file.obg ููุญุฏู ุบูุฑ ูุงูู ุงูู ููุฒู ุนูู ุงูู
ููุฑูููุชุฑููุฑ ูุงูู ูุณู relocatable file (ูุนูู ู
ูุนุฑูุด ุงู addresses ุงูุญููููุฉ ุจุชุงุนุช ุงูู
ููุฑูููุชุฑููุฑ ุงููู ุงูุช ูุชูุฒู ุงูููุฏ ุนููู ููู ุงู relocatable ุงูุงุฏุฑูุณูุฒ ุงููู ููู ู
ุฌูุฏ offsets ุจุณ ููู ู
ุด ุงุฏุฑูุณูุฒ ุญููููู) + ุงู ููู ููู samples ู
ูุฌูุฏุฉ ูู ูููุงุช ุชุงููู ููุณู ุงู file.obj ุฏู ุนุงูุฒ ูุนู
ู link ู
ุนุงูุง ูู ู
ุนุงู ุงู symbol ุจุชุงุนูุง ุจุณ ููู ูุณู ุนุงูุฒ ูุฌูุจ ุงู defination ุงู ุงูุจููุฑู ุจุชุงุนู.
--ูุนูู ุงูุช ู
ุซูุง ูู ููุช ูู File.c ุฏู ุจุชูุฏู ุนูู ADC_read() ูุฏู ูุงููุดู ู
ูุฌูุฏุฉ ูู ูุงูู ุชุงูู ูู ุฏูููุช ุจูู ุจุงููุณุจู ู file.c ุฏู not resolved ูุณู ุนุงูุฒูู ูู ุงููููู ูุฑูุญ ูุฌูุจ ุงู DEfination ุงู ุงูุจุงููุฑู ุงูู
ูุงุจู ูููุง ู
ู ุงููุงูู ุงูุชุงูู ููุฑุจุทูู
ุจุจุนุถ ุฏู ุจูุญุตู ุงุฐุงู ุ ููููู ูุง ุญุณู ูู
ุงู ุดููู ู
ุชุณุชุนุฌูุด
--ุทุจุนุง ู
ู
ูู ุงูุจุฑูุฌููุช ุจุงูุนู ูู ูุงูู ููุงุญุฏู ููููู main.c ุชูููู ูุฏุง ุจูู ุงู linker ู
ููุด ูุงุฒู
ู ุงูููู ุงูุณู
ุจุงููู ุนูุจ ูุนู
ูุงููู ุนูุจ ุงููู ุงูุช ุจุชูููู ุฏู !
--ุงุฐุงู ูุง ุญุณู ุจุณ ู
ุงููุด ูุงุฒู
ุ
--ูู ุงู ูุงูู ูุงุญุฏ ุจุณ ูู
ุด ุจููุฏู ููู ุนูู ุงู ุญุงุฌู ู
ูุฌูุฏู ูู ูุงูู ุชุงูู ุชู
ุงู
ูููู ู
ุด ุงูุง ูุงููู ุงู ุงู file ูุจู ุงู link ููููู relatable file ูุนูู ุงูุงุฏุฑูุณูุฒ ุงููู ููู ูููุง ุงููุณุช ู virtual addresses ุงูููููุฑ ุจูู ูู ุงููู ููุงุฎุฏ ุงููุงูู ุฏู ูุญุทูููู ุนูุฏ ุงูุงู
ุงูู ุงูุตุญ ุจุชุงุนุชู ุทุจูุง ูู target ุงููู ุงูุช ุดุบุงู ุนููู
--ูุจูู ุฎุฏ ูู ุงูุจุฑูุฌููุช ุจุชุงุนู ูู ูุงูู ูุงุญุฏ ููู ุบูุฑ ู
ุคูู ุจุฑุถู ุงูู ุงุฎุฏู ุงูุฒูู ุนูู ุงูู
ููุฑู ุนูู ุทูู ูุง ูุงุฒู
ูุนุฏู ุนูู ุงูููููุฑ ูุธุจุท ููู ุงูุงุฏุฑูุณูุฒ ุงููู ูููุฒู ูููุง ุทุจูุง ูู target board.
By:
๐-๐๐ฒ๐ฆ๐๐จ๐ฅ๐ ๐ซ๐๐ฌ๐จ๐ฅ๐ฎ๐ญ๐ข๐จ๐ง:
1-Resolve references between objects.
2-Unresolved symbols are searched for in libraries to resolve.
3-No resolution = Unresolved reference error
4-If linker finds the same symbol defined in two object files it will report a โredefinitionโ error.
--ุงู symbol resolution !
--ู
ุด ุงุญูุง ุงุชูููุง ุงู ูู obj file ุจูุทูุน ููู ุงุชููู symbol table ูุงุญุฏ export ุฃู giver ูุฏู ุจูุฏูู ุงุณุงู
ู ุงู samples ุงููู ูู ุจูุนู
ูู ูููุง Support ูุงูุชุงูู ุงู import ุงู ุงู required ููู ุงููู ุจูุจูู ุจูุทูุจ ุงู symbols ุฏู
--ููุจุชุฏู ูุดูู ุงูู ุงููู ุงูู ูู ูุงูู ุทุงูุจู ูู ุงู import ููุฑูุญ ูุฏูุฑ ุนููู ูู ุงู export ุนุดุงู ูููู ุฑุงุณูู ูู ุงูุญูุงู ๐
ู
ูุงููุงุด ูู ุงููููุงุช ุงููู ุงูุช ุนุงู
ู ูููุง static library ูุฑูุญ ูุดูููุง ูู ุงู static library ู
ูููุงุด ูุฌู ู
ุฒุนู ูู ูุดู ููุงููู undefined symbol ุงู ุงูู ู
ุซูุง ููุงูู ุงูุชุฑ ู
ู definition ุงู export ูููุณ ุงู required ุฃู ุงู symbol ููุฌู ู
ุฒุนู ูู ูุดู ุจุฑุถู ููุฌู ูุงูู ููู multiple definition ู ุงูุธุจุช ุจูู ูุงุนู
ู
ุชุดุชุบูููุด ู
ุนุงู ุฑูุฒ ู ุฑูุฒ ู
ูููุนุด ูู ุงูุชุฑ ู
ู Export ุงูุงูู ููุณ ุงู name ูููุณ ุงู symbol.
๐-๐๐๐๐ญ๐ข๐จ๐ง ๐๐จ๐ง๐๐๐ญ๐๐ง๐๐ญ๐ข๐จ๐ง
1-Concatenating like-named sections from the input object files.
2-Program addresses are adjusted to take account of the concatenation.
--ูููุง ููุจุชุฏู ูุฌู
ุน ูู ุงููุงุณ ุงููู ุดุจู ุจุนุถูุง ู
ุน ุจุนุถ ูู ุณูุดู ูุงุญุฏ ุฒู ู
ููููุง ููู ูู ุงู .txt ูุทูุนูู ูู .txt ูุจูุฑ , ูู ุงู .data ูุทูุนู ูู .data ูุจูุฑ ูููุฐุง ู
ุน ุจููุช ุงู section ูุทุจุนุง ุจูุชุฌู
ุนูุง ูุจูุชุญุทูุง ุนู ุงู physical address ุจุชุงุนูู
ุงูุญูููู ุจูู ุงููู ูููุฒููุง ููู ูู ุงูููุงุด ุจุชุงุนุช ุงูู
ููุฑูููุชุฑููุฑ ููุฏุง ุฎูุงุต ุงููุงูู ุงุชุญูู ู
ู relatable file ู locatable file ูุงู ุงุชุญุท ูุงุชู
ุงุจ ููุงุฏุฑูุณูุฒ ุงูุญููููุฉ ุจุชุงุนุช ุงูุชุงุฑุฌุช ุจูุฑุฏ ุงููู ูููุฒู ุนูููุง.
๐-๐๐๐๐ญ๐ข๐จ๐ง ๐๐จ๐๐๐ญ๐ข๐จ๐ง
1-Each section is given an absolute address in memory. (Rom/Ram).
๐-๐๐๐ญ๐ ๐ข๐ง๐ข๐ญ๐ข๐๐ฅ๐ข๐ณ๐๐ญ๐ข๐จ๐ง
1-Any initialized data is stored in non volatile memory
2-On startup non-const data must be copied to RAM.
3-Each initialized section by copying is divided into two sections , one for ROM(shadow data section) and other for RAM.
--ููุง ูู ุงู variables ู
ุนู
ูู ูููุง installation ููุงุฒู
ุงู initialization ุฏู ุจูุชุงุฎุฏ ูุชุญุท ูู ุงูู
ูู
ูุฑู ููุชุงุฎุฏ ู
ููุง ููุจู ูู ุงู ram ุนุดุงู ููุชุนุฏู ุนูููุง At run time (ูู ูู ู
ุด const ุทุจุนุง) ุจุญูุซ ุงู ูู ูุตูุช ุงูุจุงูุฑ ุนู ุงูุจูุฑุฏู ูู
ุง ุชูุฌู ุชููู
ุชููู
ุจุงู Default values ูุฏู ุงููู ูุชููู ู
ุชุฎุฒูู ูู ุงู Rom.
--ุงูุฏุงุชุง ุงููู ูุชููู ู default ูู ุงู rom ุฏู ููุชุชููู ูู ุงู ram ู
ู ุงู startup code ูู ram ุจูููู ูููุง ุณูุดููู ูุงุญุฏ ุงุณู
ู ุงู Shadow ูุฏู ุงููู ูู ุงู rom ููุงุญุฏ Actual section ูุฏู ุงูุฌุฒุก ุงููู ุงุชููู ุงู ุงุชูุฑูุช ูู ุงู ram.
/*********************/
-ุงูู ุงูู ุงูู ู
ุจุฑูู ุฎูุตูุง ุงูุญู
ุฏ ููู ุชุนุฑู ูุง ุญุณู ุงูุช ูู ูุตูุช ูุญุฏ ููุง ุ ๐๐โค๏ธโค๏ธ
ูุงูุช ุญุงุฌุชูู ูุง ุญุณู ูุง ุจุชุญุจูู ููู ุนุดุงู ุชุฑุถู ุชูุฑุง ูู ุฏู ูุง ุจุชุญุจ ุงูุงู
ุจูุฏูุฏ ููู ุงูุญุงูุชูู ุฏูู ุงูุง ุจุญุจู ุฌุฏุง ูุง ุญุณู ูุงููู. โค๏ธโค๏ธโค๏ธ
---ุจูุฏุง ุงูุญู
ุฏููู ูููู ุฌุงูุจูุง ุนูู ุงูุณุคุงู ุจุชุงุนูุง ูู
ุนูุด ูู ุจุฏุฎู ูู ุชูุงุตูู ูููู ุจุจูู ุนุงูุฒ ุงุนุฑูู ุงูุตูุฑุฉ ูุงู
ูุฉ ุนุดุงู ุงูู
ูุถูุน ูุซุจุช ูุชููู
ู ุจุดูู ุนู
ูู.
---ูู
ุงู ูุชูุงูู ูู ุงูุจูุณุชุณ ุงููู ูุจู ูุฏุง ุนูู ุงููุดุชุงุฌ ุฏู ุณูุงุก ููุง ุงู ุนูู ุงูููุณ.
---ูุทุจุนุง ูู ูุตูุช ูููุง ู
ุชูุณุงุด ุชุฏุนููู + ุงูุง ูุจูู ุณุนูุฏ ุฌุฏุง ูู ุงูุช ูุตูุช ูููุง ๐๐โค๏ธโค๏ธ
/****************************/
23/11/2024
๐๐ก๐๐ญ ๐ข๐ฌ ๐ญ๐ก๐ ๐๐๐ ๐ฉ๐ซ๐จ๐ญ๐จ๐๐จ๐ฅ? ๐๐จ๐ฐ ๐๐จ๐๐ฌ ๐ข๐ญ ๐ฐ๐จ๐ซ๐ค? ๐๐ก๐๐ญ ๐๐ซ๐ ๐ก๐ข๐ฌ ๐๐๐ฏ๐๐ง๐ญ๐๐ ๐๐ฌ ๐ซ๐๐ญ๐ก๐๐ซ ๐ญ๐ก๐๐ง ๐๐๐๐ ๐จ๐ซ ๐๐๐ ?๐๐ข๐ฌ๐๐๐ฏ๐๐ง๐ญ๐๐ ๐๐ฌ?๐๐ก๐๐ญ ๐ข๐ฌ ๐๐๐๐ ๐๐๐ ? ๐๐ก๐ฒ ๐ง๐จ๐ญ ๐ฎ๐ฌ๐ ๐ข๐ญ ๐ญ๐จ ๐๐จ๐ง๐ง๐๐๐ญ ๐ญ๐ฐ๐จ ๐๐๐๐ฌ ๐ข๐ง ๐ญ๐ก๐ ๐ฏ๐๐ก๐ข๐๐ฅ๐?
--ูุนูู ุงูู SPI ุ ูุจูุดุชุบู ุงุฐุงู ุ
-ูุงูู ูู ุงู configurations ุจุชุงุนุชู ุ
-ูุฐุงู ุงู Master ูุญุฏุฏ ุงู device ุงู ุงู slave ุงููู ูู ุนุงูุฒ ูุจุนุชูู ุนูู ุงู bus
--,ุงูู ุงูุดุฑูุท ุนุดุงู ุงู Slave ูุจุฏุฃ ูุณุชูุจู data ู
ู ุงู master ุ
-ุจุงุณุชุฎุฏู
ู ูู ุงูู ุ
--ููุฑู ุงูู ุนู ุงู UART ุ
--ุงู
ุชู ุงุดุชุบู ุจูู ุงู ููู ู
ู
ูู ุงุฎุชุงุฑู ุจุฏู ุงู UART ุงู ุงู I2C ุ -ุงูู ุงู advantages ุงููู ุจูุชู
ูุฒ ุจููุง ูู ุนููู
ุ
-ุงูู ุงู disadvantages ุจุชุงุนุชู ุ
--ูุนูู ุงูู QUAD SPI ุ
--ููู ุนู
ุฑู ู
ูุงูู ุงุชููู ECUs ุงู ุจูุฑุฏุชูู ูู ุงูุนุฑุจูุฉ ู
ุชูุตููู ุจ SPI bus ุ
--ุงุฐุงู ูุฎูู ุงู Slave ูุนุฑู ูุจุนุช ุฏุงุชุง ูู Master ุจุงูุฑุบู
ุงู ุงู Master ุฏูููุช ู
ููุด ุจูููู
ุงู slave ุจุงูุชุงูู ู
ุด ุจู generate ููู clock ุฏูููุช ุ
/**********************/
๐๐ก๐๐ญ ๐ข๐ฌ ๐๐๐ ๐ฉ๐ซ๐จ๐ญ๐จ๐๐จ๐ฅ?
SPI is a common communication protocol used by many different devices. For example, SD card reader modules, RFID card reader modules, and 2.4 GHz wireless transmitter/receivers all use SPI to communicate with microcontrollers.
One unique benefit of SPI is the fact that data can be transferred without interruption. Any number of bits can be sent or received in a continuous stream. With I2C and UART, data is sent in packets, limited to a specific number of bits. Start and stop conditions define the beginning and end of each packet, so the data is interrupted during transmission.
-- SPI (Serial peripheral Interface)
-- SPI is a serial protocol
-- SPI bus was originally started by Motorola.
--synchronous data transfer
--Full-duplex
--Single Master / multi slave
--Multiple slave devices are supported through selection with individual slave select (SS) lines.
--It can be used to communicate with a serial peripheral device like external EEPROM or with another microcontroller with an SPI interface.
-- ูู synchronous ูุนูู ููู ุงูุฏุงุชุง ุจูุชู
ุนู ุทุฑูู ุงู ููู shared clock ุจูู ุงู master ูุงู slave.
--ูู
ุงู ูู full duplex ู
ุนูู ุงูู full duplex ูุนูู ุนูุฏู two separate line ูุงุญุฏ ูุจุนุช ุนููู ููุงุญุฏ ุชุงูู ูุณุชูุจู ุนููู ูู
ุงู ุจู
ุง ุงูู full ููู ููุฏุฑ ูุดุชุบู half duplex ููู ุงูู ููุฏุฑ ูุจุนุช ููุณุชูุจู ุนูู ููุณ ุงู wire ูุฏู ุงูุช ุชูุฏุฑ ุชุญุฏุฏู ูุงูุช ุจุชุนู
ูู initialization.
--ูู
ุงู ูู single master/ multi slave
ูุนูู ูู master ูุงุญุฏ ุงููู ุจูููู ุนูู ุงู bus ูุง ุญุณู ู ุญุท ุฒู ู
ุชุญุท ู
ู ุงู slaves.
--ู
ุนูุด ุจุณ ูู ูุนูู ุงูู master ูู ุงูู
ููู ุฏู ุ
--ุจุต ูุง ุญุณู ู
ุด ููููุง ุงู ุงู SPI ูู synchronous ุ ูุนูู ููู clock ุจูุญุตู ูููุง share ุจูู ุงู Master ูุงู slave ุตุญ ! ุงู
ุทูุจ ู
ูู ุจูู ุงููู ุจูุนู
ู generation ูู clock ุฏู ุ
ู
ูู ูุจุฏุฃ ุงู clock ูููุฒู ุงู slave select ุนุดุงู ูุญุฏุฏ ูู ุนุงูุฒ ูููู
ุงูู slave ุ ูู
ูู ุงููู ุจูููู ููุงูู ููู ุฏุงุชุง ูุญุฏ ูุฏุง ููุฌู ูุงุตู ุงู clock ?
ุงููู ุจูุนู
ู ูู ุฏู ูู ุงู master ูุง ุญุณู
ููุฐูู ูููู
ุงู ุงู slave ู
ููุฏุฑุด ููุฑุฑ ุงูู ูุจุนุช ุฏุงุชุง ู
ู ุนูุฏู ูู master ูุง ู
ูููุนุด ูุนู
ู ูุฏุง ุทุจุนุง
ููู ุ
ู
ู
ุง ูููุช ููู ูุง ุญุณู ุงู spi ูู synchronous ูุนูู ุนุดุงู ุงูุฏุงุชุง ุชุชููู ุจูุญุตู share ูู clock ุจูู ุงู master ูุงู slave ูููููุง ู
ู ุฎุตุงุฆุต ุงู ุฏู ุงุณู
ู master ูู ุงู ูู ุงููู ุจูุนู
ู generation ูู clock ุงุฐุงู ุงู ู
ูููุนุด ุงู slave ูุจุนุช ุฏุงุชุง ู
ู ููุณู ูุฏุง ูู master ูุง ูุงุฒู
ุงู master ูู ุงููู ูุฌู ูุนู
ู generation ูู clock ููุทูุจ ูู ุงูุฏุงุชุง ุฏู ู
ูู ุจููุณู
ูููุดูู ุชุญุช ุดููู ุงูุญุชู ุฏู ุฎุทุฑ ูู ุงูู.
/**********************/
๐๐จ๐ฐ ๐๐จ๐๐ฌ ๐ญ๐ก๐ ๐๐๐ ๐ฉ๐ซ๐จ๐ญ๐จ๐๐จ๐ฅ ๐๐ง๐ ๐ฉ๐๐ซ๐ข๐ฉ๐ก๐๐ซ๐๐ฅ ๐ฐ๐จ๐ซ๐ค ?
--SPI consists of two shift registers, one in the master and the other in the slave side.
--Also, there is a clock generator in the master side that generates the clock for the shift registers.
--ุงู SPI peripheral ูู ูู micro ูุชูุงูู ููู shift register ..ุงู master ููููู ููู ูุงุญุฏ ููุญุท ูููุง ุงู data ุงููู ูู ุนุงูุฒ ูุจุนุชูุง ูุงู Slave ููุญุท ููู ุงูุฏุงุชุง ุงููู ูู ููุณุชูุจููุง ุงู ุงูุนูุณ.
--ูู
ุงู ู
ู ุฎูุงุต ุงู master ุฃู ูู ุงููู ุจูุนู
ู generation ูู clock ูุจูุจุนุชูุง ุนู ุทุฑูู ุงู clk wire ูุจููุช ุงู Slaves ุงู ุชุญุฏูุฏุง ุงู Slave ุงููู ูู ูููุฒู ุงู Slave select ุจุชุงุนุชู.
--The serial-out pin of the master shift register is connected to the serial-in pin of the
slave shift register by MOSI (Master Out Slave In).
--The serial-in pin of the master shift register is connected to the serial-out pin of the
slave shift register by MISO (Master In Slave Out).
--ุงู SPI ูู ุงูุชุฑ serial protocol ุจูุงุฎุฏ ุนุฏุฏ pins ...ุทุจ ุงูู ูู
ุง ุงู pins ุจุชุงุนุช ุงู SPI ุ
1-MOSI (Master Out Slave Input.)
--ูุฏู ุงู PIN ุงููู ุงู Master ุจูุจุนุช ุนูููุง ุงูุฏุงุชุง (out) ูุจูุณุชูุจู ุนูููุง ุงู Slave (input).
2-MISO(Master Input Slave Out)
--ูุฏู ุงู PIN ุงููู ุงู Master ุจูุณุชูุจู ุนูููุง ุงูุฏุงุชุง (Input) ููุจุนุช ุนูููุง ุงู SLAVE (out).
3-Slave select
--The master determines which chip it is talking to by the CS lines.
4-CLK
The clock signal synchronizes the output of data bits from the master to the sampling of bits by the slave. One bit of data is transferred in each clock cycle, so the speed of data transfer is determined by the frequency of the clock signal. SPI communication is always initiated by the master since the master configures and generates the clock signal.
--The master clock generator provides a clock to the shift registers in both the master and slave.
--SPI master provides clock signal (SCLK) to SPI slaves.
--ุฏู ุจูู ูุง ุญุณู ุงู pin ุงูุฑุงุจุนู ุงููู ูููุชูู ุนูููุง ุจูุญุตู generation ู
ู ุงู Master ูู clock ุนูููุง.
--The clock input of the shift registers can be falling- or rising-edge triggered.
Shift registers are 8 bits long. So after 8 clock pulses, the contents of the two shift registers are interchanged.
--When the master wants to send a byte of data, it places the byte in its shift register and generates 8 clock pulses.
--After 8 clock pulses, the byte is transmitted to the other shift register.
--When the master wants to receive a byte of data, the slave side should place the byte in its shift register, and after 8 clock pulses the data will be received by the master shift register.
--ุทูุจ ุงู SPI ูู frameless ูููุชููู
ูู ุฏู ุชุญุช ุดููู ูููู ุจู
ุง ุงูู Frameless ููู ุงููู ุจูุชุจุนุช ุนูู ุงู Wire ูู ุฏุงุชุง ูุนููู ุจุณ ู
ููุด ุงู bits ุชุงููู ุจุชุชุจุนุช ู
ุด ู
ู ุถู
ู ุงูุฏุงุชุง ููุฐูู ูุชูุงูู ุงูู ุจุนุฏ 8 cycles ู
ู ููููู ุจุนุช 1 byte ุงู ุงุณุชูุจู 1 byte.
--It must be noted that SPI is full duplex, meaning that it sends and receives data at the same time.
--For the slaves that are not being talked to, the data output goes to a Hi Z state.
-- ุงูููุฑู ุจูู ูุง ุญุณู ูู ุงูู ุ
ู
ุด ููููุง ุงู ุงู SPI ูู single master/ multi slave
ุทูุจ ุฏูููุช ุงู Master ูู
ุง ูุฌู ูุจุนุช ุงู data ุงุฐุงู ูุญุฏุฏ ูู ุนุงูุฒ ูุจุนุชูุง ู Slave 0 ููุง 1 ููุง 2 ููุง...
ู
ูู ุงููุฏ ู
ุด ููุนู
ู broadcast ููุจุนุช ูููู ูู ุงููุฏ ุงู Master
ุนุงูุฒ ูู
ุง ูุฌู ูุจุนุช ูููู
slave ู
ุนูู ู
ูุฌูุฏ ุนูู ุงู bus
ูุญุฏุฏ ุงู slave ุฏู ุจูู ุงุฐุงู ุ
ูุงู ูู ุชุงุฎุฏ ุจุงูู ุงู mosi ูุงู miso ุทุงูุนูู ู
ุชูุตููู ุจูู ุงู slaves ุงููู ุนูู ุงู bus ูุงูุง ุนุงูุฒ factor ุจูู ูุญูู
ุงู master ููููู
ู
ูู!
ุฏู ูุง ุญุณู ุนู ุทุฑูู ุงู pin ุงูุชุงูุชู ููู ุงู Slave Select ุงู ุงู Chip Select ุงุฐุงู ูุนูู
ุจุต ูุง ุญุณู ุงู Master ุนุดุงู ูุจุนุช ุฏุงุชุง ูุงุฒู
ูุญูู ุดุฑุทูู ุงูุงูู..ุงูู ูู
ุง ุ
๐-๐๐๐ค๐ ๐ญ๐ก๐ ๐๐ฅ๐๐ฏ๐ ๐๐๐ฅ๐๐๐ญ ๐ฅ๐จ๐ฐ ๐๐จ๐ซ ๐ญ๐ก๐ ๐ฌ๐ฅ๐๐ฏ๐ ๐๐ก๐ข๐๐ก ๐ข๐ญ ๐ฐ๐๐ง๐ญ ๐ฌ๐๐ง๐ ๐ญ๐ก๐ ๐๐๐ญ๐ ๐ญ๐จ ๐ข๐ญ.
๐-๐๐ญ๐๐ซ๐ญ ๐ญ๐ก๐ ๐๐ฅ๐จ๐๐ค ๐ ๐๐ง๐๐ซ๐๐ญ๐ข๐จ๐ง ๐จ๐ง ๐ญ๐ก๐ ๐๐๐ ๐ฉ๐ข๐ง
ุฏูู ุงูุดุฑุทูู ูุง ุญุณู :
1- ุงูู ุชูุฒู ุงู slave select ุจุชุงุนุช ุงู slave ุงููู ุงูุช ุนุงูุฒ ุชููู
ู ุชูุฒููุง ู low
ูุนูู ุงู slave select ุฏู ู
ููุง ุงูุช ุจุชุญุฏุฏ ุงูุช ุนุงูุฒ ุชููู
ู
ูู ููุชูุงูู ุงู ุจุนุฏุฏ ุงู Slaves ุงููู ู
ูุฌูุฏู ุนูู ุงู bus ูุชูุงูู ุนุฏุฏ pins ุทุงูุนู ู
ู ุงู master ุฑุงูุญู ูู slaves ูุฐูู ูู
ุง ุญุฏ ูุณุฃูู ุงู spi ุจูุงุฎุฏ ูุงู
pin ูุชููู 3+ n
ุญูุซ ุงู ุงู n : ูู ุนุฏุฏ ุงู Slaves ุงููู ู
ูุฌูุฏู ุนูู ุงู bus ููุฐูู ูุชูุงูู ู
ูุชูุจ ุงู ุงู spi ููุฏุฑ ูุชูุตู ุจุนุฏุฏ ูุงููุงุฆู ู
ู ุงู slaves ุนูู ุงู bus ูุฏู ูุงู ูู ุงููู slave ุนุงูุฒู ู
ูู ูู ุงู slave select ุฏู ูุจูู ุจุนุฏุฏ ุงู slaves ููุทูุน pins ูููู ูุธุฑูุง ูู ู
ุด ู
ุงูุงููุงูู ููุง ุญุงุฌู ูู ู
ุญููู
ุจุนุฏุฏ ุงู gpio pins ุงููู ุงููู ูู ุงู micro ุงููู ู
ุนุงู ูุชุนุฑููู
ุนูู ุงููู
input ููููู ุงู default ุจุชุงุนูู
ุจ high ููู
ุง ุชูุฌู ุชููู
ุงู slave ุงููู ุงูุช ุนุงูุฒู ุชูุฌู ู
ูุฒููุง ู low.
ูุทุจุนุง ุงู slave ุชุงูู ุทูู ู
ุงู slave select ุจุชุงุนุชู ู
ูุฒูุชุด ู low ููู ู
ูุฌูุฏ ุนูู ุงู bus ุงู ูููู floating input ูุนูู ุงู 2 wire ุจุชูุน ุงู mosi ูุงู miso ุจุงููุณุจู ููุง Open circuit.
-ุชุฑุฏ ูุชููู ุทุจ ูู ุนุงูุฒ ุงูุตู ุจ 20 slave ูู ุงู spi ููููู ู
ููุฑูู 20 slave select ุ
-ููููู ูุง ุทุจุนุง ู
ุด ููููู ู
ููุฑ ูู ุฏู ู peripheral ูููู ุงูุช ุจูู ุจุชุฑูุญ ุจ ุงูุฏู ูู pins ุจุชุงุนุช ุงู gpio.
2- ุงูุดุฑุท ุงูุชุงูู ูู ุงู ุงู Master ูุนู
ู generation ูู clock ุนูู ุงู wire ุจุชุงุนูุง ูุจูู ูู
ุง ุงู Master ูุนูุฒ ูููู
slave ู
ุนูู ููุฌู ุนุงู
ู ุญุงุฌุชูู ู
ุดุบู ุงู clock ูู
ูุฒู ุงู slave select ุจุชุงุนุช ุงู slave ุฏู ู zero ูุชูุงูู ุงู slave ุจุฏุง ู communication ู
ุนุงู.
--ุทุจุนุง ุงู master ูู
ุง ุจููุฒู slave select ุจุชุงุนุช ุงู Slave ุงููู ูู ุนุงูุฒ ูููู
ู ุจููุช ุงู Slaves ุฏูููุช ูู ุนูู ุงู bus ูููู ุดุงููู ุงู MOSI / MISO ุงููู
high impedance ููุฃููู
open circuit
/**********************/
๐๐ก๐๐ญ ๐ข๐ฌ ๐ญ๐ก๐ ๐๐ฉ๐ฉ๐ฅ๐ข๐๐๐ญ๐ข๐จ๐ง ๐๐๐ฌ๐๐ ๐จ๐ง ๐๐๐ ?
--Sensors
--LCDs
--Control Device
--Flash Memory
--ูุชูุงูู ุงู ููู ุจุนุถ ุงู sensors ุงู interface ุจุชุงุนู SPI
ุฏู ุจุณุจุจ ุงู ุงู SPI ุณุฑูุน ูุงูู frameless ูุฏู ุงุฏุงูู ู
ูุฒุชูู ููู ุงูุนุธู
ุฉ ูุจูู
ูุฒูู ุนู ุบูุฑู ุณูุงุก ุงู I2C ุงู ุงู UART ุงูู ูู
ุง ุงูู
ูุฒุชูู ุฏูู ุ
ุจุณ ูููู ุงูุงูู ูุนูู ุงูู Frame less ูุงููู ุจุณุจุจูุง ุงุฎุฏูุง ุงูู
ูุฒุชูู ุฏูู ุ
ุจุต frame less ูุนูู ุงู ูู
ุง ุจูุฌู ูุจุนุช ุงูุฏุงุชุง ุนูู ุงู wire ุจูุจุนุช ุฏุงุชุง ุจุณ ู
ุด ุจูุจุนุช ุงู ุญุงุฌู ุชุงูู ู
ุด ุฒู ุงู uart ู
ุซูุง ุชูุงูู ูุง ููู
1-Start bit
--ุงู RX ุจุชููู idle ุจ 1 ูุนูู ูู ุงููุถุน ุงูุนุงุฏู ุงูู ุจูุจุนุช ุจูููู ุนูููุง logic high ุงูู ู
ุงูู
ููุฑู ุฑูู
ูุงุญุฏ ูุฌู ูุจุนุช ููู
ููุฑู ุงูุชุงูู ุนุดุงู ูุนุฑูู ุงูู ููุจุฏุฃ ูุจุนุช ุงูู.
2-data field
ุงู Data field ูู ุงู UART ุจูุงุฎุฏ ู
ู 5 ู 9 bit ูู ุงู field ุฏู ุจูุชุญุท ุงูุฏุงุชุง ุงููู ุงุญูุง ุนุงูุฒูู ูุจุนุชูุง ู
ู ุงูู
ููุฑู ุงูุงูู ููู
ููุฑู ุงูุชุงูู
3-parity bits
--The parity bit is added to make the number of 1โs even (even parity) or odd (odd parity).
--This bit can be used by the receiver to check for transmission errors.
ูุฒู ู
ุงูุช ุดุงูู ุงูuart ุจูุชููู ู
ู frame ุงูู ููุฐูู ุงู i2c
--ููู ุงู ุงู SPI ูู Frameless ููู ุงุฏุงู ู
ูุฒุชูู ุงููู ูููุช ุนูููู
ููู:
1-ุนุดุงู ู
ููุด farm ููู ุงู bits ุงููู ุจุชุชุจุนุช ูู data ุจุณ ู
ููุด ุงู bits ุชุงููู ุชุฎุต ุงู Frame ูุฏู ุฎูู ุงู throughput
ุจุณ ูุนูู ุงูู throughput
/*********************/
๐๐ก๐๐ญ ๐ข๐ฌ ๐ญ๐ก๐ ๐ญ๐ก๐ซ๐จ๐ฎ๐ ๐ก๐ฉ๐ฎ๐ญ ?
--it is the effective data bit / total bits which i send
--ูุนูู ุงูู ุ
--ุงู throughput ูู ุงูุฏุงุชุง ุงููุนููู ุงู ุงูู
ูู
ู ุจุงููุณุจู ููู ุงููู ุงูุช ุนุงูุฒ ุชุจุนุชูุง ูุนูู ูู
ุง ุฌูุช ุชุจุนุช ุญุฑู ุงู 'A' ู
ุซูุง ุจุงุณุชุฎุฏุงู
ุงู uart ุงููู ูู ููุชู
ุซู ูู 8 bit ุจุงููุณุจู ููู ุฏู ุงูุฏุงุชุง ุงูู
ูู
ุฉ ูุฏู ุงููู ุงูุช ุนุงูุฒูุง ุชูุตู ูุนูุง
--ุจุณ ูู ูู ุงุชุจุนุชุช ููุญุฏู ุ ูุง ุทุจุนุง ุฏู ุงุชุญุทุช ูู ุงู fails ุจุชุงุน ุงูุฏุงุชุง ููู ุงุชุญุท ู
ุนุงูุง ู ุงู frame ุฏุงุชุง ุชุงููู ุงูุง ู
ุด ู
ูุชู
ุจููุง ุงุตูุง ูููู ูู ูุงุฒู
ุชุชุจุนุช ูุงู ุฏู ูุฑูู
ุงู uart ุฒู ุงู start bit ูุงู parity ูุงู stop bits
--ูุงู throughput ุฏู ุจูู ุงูุฏุงุชุง ุงููู ุงูุช ุนุงูุฒ ุชุจุนุชูุง ูุนูุง ู
ูุณูู
ุฉ ุนูู ูู ุงู bits ุงููู ุงูุช ุจุชุจุนุชูุง ุงููู ูู ุงู bits ุจุชุงุนุช ุงูุฏุงุชุง ู
ุฌู
ูุน ุนูููุง ุงู bits ุงููู ุจุชุญุท ูู ุงู frame ุบุตุจ ุนูู.
--ู
ุซุงู ุนูู ุฏู ูู ุงูุช ุจุชุจุนุช 8 bit ูุฏูู ุงู effective data ุจูุชุญุท ู
ุนุงูู
ูุงุญุฏุฉ start ูุงุญุฏุฉ stop ููููู ูุนู
ุงู parity ุจ 0 ูุนูู ุงู 8 bit ุงุชุญุท ู
ุนุงูู
2 ุฒูุงุฏู.
--ูุนูู ุงู throughput = 8/10 ูุนูู 80% ู
ุง ุจุงูู ุจูู ูู ุญุงุทุช ุงุชููู parity ูุงุชููู stop ูุฃูุช ูุชูุงูู ููุณู ูุตูุช ู 60% ู
ุซูุง ุงู throughput ูุนูู ุนุดุงู ุงููู 60000 bit ูุงุฒู
ุงููู ู
ุนุงูู
40000 bits ู
ุนุงูู
ุนุดุงู ุฎุงุทุฑ ุงูุญุงุฌ FRAME
ูุนุดุงู ูุฏุง ุงู throughput ุจุชุงุน ุงู SPI 100% ูุงู ุงู effective data ูู ุงููู ุจุชุชุจุนุช ุจุณ ู
ู
ุนูุงุด ุญุงุฌู ุชุงููู.
ูุฏู ุฎูุงู ุณุฑูุน ุฌุฏุง ุจููุตู ู 480 M bits / sec.
ุงูู
ูุฒู ุงูุชุงููู ุงููู ุงูุช ุงุฎุฏุชูุง ู
ู ูููู frameless
2- ุงูู ุชูุฏุฑ ุชุนู
ู ุงูุช its your frame
ูุนูู ุงูู ุ
ูู ุงู SPI ุงูุช ุชูุฏุฑ ุชุฑุณู
ูุชุญุฏุฏ ุงูุช frame ุฎุงุต ุจูู ูุนูู ู
ุฒุงุฌู ุงูุช ูุนูู ู
ู
ูู ุชููู ู
ุซูุง ุงูู byte ูุจุนุชู ุฏู ุงู ID ุจุชุงุน ุงู slave ุงู ุงู ECU ุงููู ุนุงูุฒ ุงููู
ูุง ูุงู byte ุงููู ุจุนุฏู ู
ุซูุง ุงู transaction ุงููู ุนุงูุฒ ุชุนู
ูู read/write ูุงููู ุจุนุฏู ู
ุซูุง ุงู data ูุจุนุฏ ูู data ููู ack ูุฒู ู
ุงูุช ุดุงูู ู
ูุฒุฉ ุงูู frameless ุงุฏุงู ู
ูุฒุฉ ุงูู ุชูุฏุฑ ุชุญุฏุฏ ุงู ุชุนู
ู frame ุฎุงุต ุจูู ุงูุช.
/*************************/
--ุจุณ ู
ุนูุด ุณุคุงู ู
ูุชุง ูู
ุง ู
ุจูุชุด frame ุฎุณุฑุช ุงู ูููู ุนูุฏู parity ุงู checksum ุงู ุงู ููุน ู
ู ุงููุงุน ุงู check ุงู ุญุตู ู
ุดููู ูู ุงู data ููุง ูุง ููููู ุนูุฏู ุญู ุทุจุนุง ูุง ุญุณู.
ู
ูู ุนุดุงู ูุฏุง ุงู SPI ูู
ุง ุจููุตู ุญุงุฌุชูู ุงู ุงูุชุฑ ุจุจุนุถ ุจูููู ุทูู ุงู bus ูู ุญุฏูุฏ 10 cm ูุฏู ุนุดุงู ุงูุง ุฎุงูู ุงู ุงูุฏุงุชุง ุชุจูุธ ู
ู ุงู noise ูุงูุง ู
ุนูุฏูุด ู
ููุงููุฒู
ุงูุชุดู ุจูู ููุงูู ุฎูุงุต ุชููู ุงูู
ุณุงูุฉ ูู ุงูุฑููุฌ ุฏู ุนุดุงู ุงุชุฌูุจ ุงู noise ุนูู ูุฏ ู
ูุฏุฑ ูุนูู
/************/
ุทูุจ ุจูุดุชุบู ุงุฐุงู ุงู ุงู circuit ู
ู ุฌูุง ุจุชุชููู ู
ู ุงูู ?
ุจุต ูุง ุญุณู ุงู circuit ุจุชุงุนุชู simple ููู ูุงุฏูุจ register ุนูุฏ ุงู master ูุฒูู ุนูุฏ ุงู slave ูุงูุงุชููู ูููู
ุฏุงุฆุฑุฉ ูู clock ุชูุฌู ุงูุช ุชุญุท ุงูุฏุงุชุง ุงููู ุนุงูุฒ ุชุจุนุชูุง ูู ุงู register ุจุชุงุน ุงููู ุนูุฏ ุงู master ููู ูุดุชุบู ุจูู ู
ุน ูู ุงู clock ูู cycle ูุจุนุช one bit ูููุงุญูู ุงูุชุงููู ูุงูุชุงูู ูุณุชูุจููุง ูุญุทูุง ูู ุงู register ุงู ุงู buffer ุงููู ุนูุฏู ุฏู.
/***********/
๐๐ก๐๐ญ ๐๐ซ๐ ๐๐๐ ๐๐๐ฏ๐๐ง๐ญ๐๐ ๐๐ฌ?
1-SPI is frameless so ( high speed + customized frame)
2-Separate MISO and MOSI lines, so data can be sent and received at the same time
3- throughput is 100%
4- Simple circuit
5- Support Multiple slaves
6-Lower power requirement than I2C
7-No complicated slave addressing system like I2C
/***********/
๐๐ก๐๐ญ ๐๐ซ๐ ๐๐๐ ๐๐ข๐ฌ๐๐๐ฏ๐๐ง๐ญ๐๐ ๐๐ฌ?
1- Requires more pins
2-Master must control all communications (slave can't generates transaction)
3- Separate SS line
4-No flow control
5-No acknowledgement that the data has been successfully received (I2C has this)
6-No form of error checking like the parity bit in UART.
--ุงูุนููุจ ุจูู ูุง ุญุณู
1- ุฒู ู
ุงูุช ุดุงูู ุงู ูู slave ุจูุญุชุงุฌ slave select pin ูุนูู ุทู ู
ุนุฏุฏ ุงู slave ุฒุงุฏ ุนุฏุฏ ุงู pins ููุฒูุฏ ู
ุด ุฒู ุงู i2c ุงู ุงู can ู
ุซูุง ูู
ุง 2 wire ููู ุงู ECUs ุนููู ูุง ูู slave ุนุงูุฒ pin ุนุดุงู ุชูุฏุฑ ุชุญุฏุฏ ุงูุช ุนุงูุฒ ุชููู
ู
ูู ู
ู ุฎูุงููุง.
2-ุงู master ูู ุงููู ุจูุฏูุฑ ุงู ุนู
ููุฉ ุชูุงุตู ูุนูู ูู ุงููู ุจูุฑูุญ ูููู
ุงู slave ุนุดุงู ูุจุนุช ููู ุฏุงุชุง ุนูุฏู ุงู ูุฑูุญ ูู slave ููููู ุนูุฏู ุฏุงุชุง ุ ูู ุนูุฏู ุงุจุนุช
(ุงูุญุชู ุฏู ุฎุทุฑ ุฌุงู
ุฏ ูุง ุญุณู ุฑูุฒ ููุง)
ู
ุชุฎูู ุงู ุงู slave ูู ุนูุฏู data ุนุงูุฒ ูุจุนุชูุง ูู master ู
ููุฏุฑ ูุนู
ู ุงู ุญุงุฌู ุนุดุงู ูุนุฑู ุงู Master ุงูู ุนูุฏู data ููู
ุงู ู
ููุฏุฑ ูุจุนุชูุง ูุงู ูู slave ูุงุญูุง ููููุง ุงููู ุจูุนู
ู generate ูู clock ูู ุงู master ูููููุง ุงู ุนุดุงู ุงุจุชุฏู ุงุจุนุช ุฏุงุชุง ูุงุฒู
ุงุนู
ู ุญุงุฌุชูู ุงุดุบู ุงู clock ูุงูุฒู ุงู pin ุจุชุงุนุช ุงู ss ู
ู high ู low
ูุงูุช ู master ูุชูุถู ูุงูู ู
ุญุจูุณ ุจุงูุฏุงุชุง ุงููู ู
ุนุงู ุฏู ูุญุฏ ู
ูุจุงู ููู ุตุงุญุจ ูุงู master ูุฌู ููููู ูู ุนูุฏู ุฏุงุชุง ุงุจุนุชูุง
ุทุจุนุง ูุง ุญุณู ู
ูููุนุด ุชุจูู ูู critical system ูุชุนู
ู ุงูุญุชู ุงููู ููู ุฏู ุงู ุงู master ูููู ุนูุฏู data ู
ูู
ู ููุงุฒู
ุชุชุจุนุช ูู master ุฏูููุช ูุทุจุนุง ุงู slave ู
ุด ููุนุฑู ููุฏุง ุงูุช ุดุฏูุช ุจูุณุชุฑ ุนูู ุจูู ุงู slave ูุงูุณูุณุชู
ููุฑูุญ ูู ุฏุงููู
ูุนูู ู
ูุจูุงุด ู
ุซูุง ุงู slave ุจูุณุชูุจู frames ุจุชุงุนุช camera ูู ุงูุนุฑุจูู ุจุชุญูู ุงูุทุฑูู ูุจุนุฏูู ุงู slave ูุจุนุช ุงูdata ุฏู ูู master ุนู ุทุฑูู ุงู spi ูุงู master ูู ุงููู ูุงุฎุฏ ุงู action ูู ุงูุนุฑุจูู ูุชูุฑู
ู ู
ุซูุง ุงู ูุชุนู
ู alarm ูู ุจูู ูููุน ุงููู ููู ุฏู ุ
--ูู ุนู
ูุช ูุฏุง ูุจูู ุงู system ุจุงูุณูุงู
ู ูุงู ุงู slave ุนูุฏู ุฏุงุชุง ู
ูู
ู ููุงุฒู
ุชุชุจุนุช ุญุงูุง ูู
ุด ุนุงุฑู ูู ู
ุณุชูู ุงู master ูุฌู ููู ุทุจ ูุงูุญู ุ
--ุงูุญู ุงูู ุชุชู
ุณู ูุง ุญุณู ูุชููู ูุง ู
ุณุง ูู
ุชุนู
ูุด ุญุงุฌู ุฒู ูุฏุง ุงุตูุง ู
ู ุงูุงูู ู design
ูุง ุงู
ุง ูุชููู ุฏุงุชุง ุงู ูุชุชููู ู
ู ุงู slave ูู master ูููู ู
ุด critical ููุงุฒู
ุชูุตูู ููุชู ูุง ุนุงุฏู ุงููุง ุชูุถู ูุญุฏ ู
ุงู master ูุจุนุช ูุงุช ุงูุฏุงุชุง ุงููู ุนูุฏู ุงู ูููู ููู period check ู
ู ุงู master ูุฑูุญ ูุชุดู ุนูู ุงู slave ูู ูุชุฑู ูู ุนูุฏู ุฏุงุชุง.
ู
--ุทูุจ ูู ูุง ุญุณู ูู ู
ุนุงูุง master ูุงุญุฏ ู slave ูุงุญุฏ ูู ููู ุฏุงุนู ุงูุตู ุงูุงุชููู slave select pins ุจุนุถ ุ
-- ูุงุฌู ุฑุงุฏุฏ ุนููู ูุง ุญุณู ููุงูู ู
ุด ุงู slave select ุนุดุงู ุงู master ูุฎุชุงุฑ ุงู slave ุงููู ูู ุนุงูุฒ ูุจุนุชูู ุ ูููููุง ููู ุนุดุงู ุงุจุฏุง ุงููู
slave ู
ุนูู ูุงูุง ุจุดุบู ุงู clk ูุจูุฒู ุงู ss ุจุชุงุนุช ุงู slave ุงููู ุนุงูุฒ ุงููู
ู ู low ุตุญ ุ ูุทุจุนุง ุจุดุบู ุงู CLK
ุทุจ ู
ูู master/slave ุงุชููู ุจุณ ุฎูุงุต ุงุฎูู ุงู ss ุจุชุงุนุช ุงู slave ุจ low ุนูู ุทูู ูุนูู ุงูุตููุง ุจ gnd ููุฏุง ุจูู ุนุงู
ู ุงู ุงููู
ุงู slave ุฏู ูุงููู ู
ููุด ุบูุฑู ุงุตูุง ุจูู ุจู depend ุนูู ุนุงู
ู ูุงุญุฏ ุจุณ ููู ุงูู ู master ุชุดุบู ุงู clk ุจุณ ููุฏุง ูุฏุง ุงูุนุงู
ู ุงูุชุงูู ุฌุงูุฒ ุงุตูุง ูุงู ู
ูุตู ุงู ss ุจ gnd.
/***************/
ุทูุจ ู
ู
ูู ุงุณุชุฎุฏู
ุงู SPI ูู ุงู ุ
--SPI with flash memory
--Most SPI flash memories have a write status register command that writes one or two bytes of data.
--To write to the status register, the SPI host first enables the slave select line for the current device. The master then outputs the appropriate instruction followed by two data bytes.
--ููุง ูุง ุญุณู ูุชูุงูููุง ุงุณุชุบูููุง ุงูู frameless ูุงููุง ููุฏุฑ ูุนู
ู our own frame ูุจูุช ู
ุซูุง ุงู flash memory ุฏู ุฌุงูุจูุง ุงูุตููุง ู
ุน ุงู microcontroller ู
ู ุจุฑู ุนูู ุณุทุญ ุงูุจูุฑุฏ ู
ุซูุง
ููู
ุง ุงูุชุญ ุงู datasheet ุจุชุงุนุช ุงู flash ุฏู ููุงูู ู
ุซูุง ุจููููู ูู ุนุงูุฒ ุชูุชุจ ุนูู ู
ูุงู ู
ุนูู ูู ุงูููุงุด ุฏู ูุชุจุนุช ุงูู ุญุงุฌู instruction ุงุณู
ู ูุฐุง ููููู 0x08 ุฏู ูู
ุง ุงูุช ุชุจุนุชู ุงูู byte ูุฏุช ุงูููุงุด ูุชููู
ุงูู ุนุงูุฒ ุชูุชุจ ุจุนุฏ ูุฏุง ููููู ู
ุซูุง ุงุจุนุชูู ุงู address ุจุชุงุน ุงูู
ูุงู ุงููู ุนุงูุฒ ุชูุชุจ ุนููู ุจุนุฏ ูุฏุง ุงุจุนุช ุงูุฏุงุชุง ุงููู ุนุงูุฒ ุชูุชุจูุง ูุงูุช ูู ุชูุงุญุธ ูุชูุงูู ุงูู ูุฏุฑุช ุชุจูู ุงููุฑูู
ุจุชุงุนู ุงูุช ุงูู ุงู
ุฑ ู
ุซูุง instruction ูุงูุชุงูู address ูุงูุชุงูุช ุฏู ุงูุฏุงุชุง ุงููู ุนุงูุฒ ุชูุชุจูุง.
--ุทุจ ูู ุนุงูุฒ ุงูุฑุง ู
ููุง ุงูุง ุ
ูุงุฌู ุจุงุนุช ุงูู byte ููุชูู 0x04 ูุฏู instruction ุงูููุงุด ุนุงุฑููุง ุงู ุฏู ูู ุงุชุจุนุช ูู ุงูู byte ูุจูู ุฏู ุงู
ุฑ ุงู read ูุทุจุนุง ุงูุช ู
ุดุบู ุงู clk ูู
ูุฒู ุงู slave select ู low ูุชุจุต ุนูู ุงู wire ุงูุชุงูู ุงููู ูู MiSO ูุชูุงูู ุจุนุช ููู ุงูุฏุงุชุง ุงููู ุงูุช ููุช ุนุงูุฒูุง.
/***********/
ุทุจุนุง ูุง ุญุณู ูู ูุชุดุชุบู ุจ mode ุงู half duplex ูุงูุช ูุชุดุชุบู ุจ 3 pins ุจุณ ุงู
CLK
MOSI --- MISO
SS
GND
ููู ุงูุญุงูู ุฏู ุงูุช ุจุชูุตู ุงู miso ุจุงู mosi ุจุจุนุถ
ููุง ุงู ุงูุช ูููุช ุนุฏุฏ ุงู pins ุจุณ ุงู throughput ูู ูุงูู ุจููุช ุจุชุจุนุช ูุชุณุชูุจู ุนูู ููุณ ุงู wire ูู
ุด ูู ููุณ ุงูููุช ูู
ุงู
/************/
๐๐ก๐๐ญ ๐ข๐ฌ ๐๐๐๐ ๐๐๐ ?
--Multi I/O variants such as dual I/O and quad I/O add additional data lines to the standard for increased throughput. This performance increase enables random access and direct program ex*****on from flash memory (execute-in-place).
--A multi I/O SPI device is capable of supporting increased bandwidth or throughput from a single device.
--ุฌู ูุงูู ูุง ุญุณู ุงูู ู
ุชูุฌู ูุฒูุฏ ุนุฏุฏ ุงู pins ุงููู ู
ู
ูู ุงุจุนุช ูุงุณุชูุจู ู
ู ุนูููุง
ูุนูู ูู ุงู half duplex ุจุฏู ู
ูุจูู ุนูุฏู pin ูุงุญุฏ ุจุณ ุงุจุนุช ุงู ุงุณุชูุจู ู
ู ุนูููุง(ุจุณ ู
ุด ูู ููุณ ุงูููุช ุทุจุนุง)
ูุงูู ุทุจ ู
ุฎูููู
ุงุฑุจุนู ููุฏุฑูุง ูุจุนุชูุง ููุณุชูุจูููุง(ุจุณ ุทุจุนุง ู
ุด ูู ููุณ ุงูููุช ูุงูู half)
ูุนู
ููุง 4 pins ุงุจุนุช ูุงุณุชูุจู ู
ู ุนูููู
ูุงูุฏุฑ ุงุณุชุฎุฏู
ุฏู ู
ุน ุจุนุถ ุงู flash memory ุจูููู ุงูุงูุชุฑููุณ ุจุชุงุนูุง ูุฏุง ููุฏุง ุจูู ุนูุฏู 4 shift register ูุนูู ุงูุฏุฑ ุงูุฑุง ุงู ุงูุชุจ ูู ุงุฑุจุน ุงู
ุงูู ู
ุฎุชููู ูู ุงูููุงุด ุฏู.
--ูู
ุงู ูุชูุงูู dual SPI
--ููุณ ุงููู ููููุงู ูู ุงู quad ุจุณ ุฏู ููู 2 pins ุจุณ
MOSI
MISO
ููุฏุฑ ูุจุนุช ููุณุชูุจู ู
ู ุนูููู
ุจุณ ุงููุฏ ูู pin ู
ุด ูุชุจุนุช ูุชุณุชูุจู ูู ููุณ ุงูููุช ูุง.
/**************/
ุทูุจ ููู ุณุคุงู ููุง ููู ู
ุซูุง ุนู
ุฑู ู
ุชูุงูู ุงุชููู ECUs ูู ุงูุนุฑุจูู ู
ุชูุตููู ุจุงู SPI ุ
--ู ูฃ ุงุณุจุงุจ
1-ู
ุด ุงุญูุง ููููุง ุงูู frameless !
ููู ูุฏุง ู
ูููุด ุงู Field ู
ูุฌูุฏ ูู security ุงู ุงูู check ูู ุงูุฏุงุชุง ุฏู ุตุญ ุงู ุญุตู ูููุง ู
ุดููู ููู ุฌุงูู ู
ู ุงู master ููุง ูุง ูุนูู ูู ู
ูููุด check sum ููุง ููู CRC ููุง ููู parity ุญุชู ูู
ุด ูุนุฑู ูุฏุง ุงุชุฃูุฏ ู
ู ู
ุตุฏุงููุฉ ุงูุฏุงุชุง ุงููู ุฌุงุชูู ุฏู
2- ุงูุณุจุจ ุงูุชุงูู ุงู ู
ุณุงูุฉ ุชูุตูู master/slave ุจุงู SPI ุจุชููู ูู ุญุฏูุฏ 10 cm ุทุจ ูููู ุงูุช ุจูู ุงุฐุงู ูุชูุตู ุจูุฑุฏุชูู ูู ุงูุนุฑุจูู ุฏู ูู zone ูุฏู zone ุชุงููู ูุงูู
ุณุงูุฉ ุจูููู
ู
ู
ูู ุชูุตู ู ุงุชููู ููุง ุชูุงุชู ู
ุชุฑ! ู
ุด ููููุน ุทุจุนุง.
3- ุงู SPI ูู Single master multiple slave ูููููุง ุงู ุงู slave ู
ููุฏุฑ ูุจุนุช ู
ู ููุณู ููุงุฒู
ุงู master ูู ุงููู ูุฌู ููููู ูู ุนูุฏู ุฏุงุชุง ุงุจุนุชูุง ูุงู ุงู master ูู ุงููู ุจู generate ุงู clock.
/**************/
--ุงุฎุฑ ุญุชู ู
ุด ุงุญูุง ููููุง ูุง ุญุณู
ุงู master ูู ุงููู ุจูุฏูุฑ ุงู ุนู
ููุฉ ุชูุงุตู ูุนูู ูู ุงููู ุจูุฑูุญ ูููู
ุงู slave ุนุดุงู ูุจุนุช ููู ุฏุงุชุง ุนูุฏู ุงู ูุฑูุญ ูู slave ููููู ุนูุฏู ุฏุงุชุง ุ ูู ุนูุฏู ุงุจุนุช
ู
ุชุฎูู ุงู ุงู slave ูู ุนูุฏู data ุนุงูุฒ ูุจุนุชูุง ูู master ู
ููุฏุฑ ูุนู
ู ุงู ุญุงุฌู ุนุดุงู ูุนุฑู ุงู Master ุงูู ุนูุฏู data ููู
ุงู ู
ููุฏุฑ ูุจุนุชูุง ูุงู ูู slave ูุงุญูุง ููููุง ุงููู ุจูุนู
ู generate ูู clock ูู ุงู master ูููููุง ุงู ุนุดุงู ุงุจุชุฏู ุงุจุนุช ุฏุงุชุง ูุงุฒู
ุงุนู
ู ุญุงุฌุชูู ุงุดุบู ุงู clock ูุงูุฒู ุงู pin ุจุชุงุนุช ุงู ss ู
ู high ู low ุตุญ ุ
--ุทูุจ ูู ุงู slave ุจูู ุนูุฏู ุฏุงุชุง ูุนุงูุฒูู ูุฎููู ูุนุฑู ูุจุนุชูุง ุฏูููุช ู
ุด ูุณุชูู ุงู master ูุฌู ูุณุงู ุ
--ููุง ุงุญูุง ููุญุงูู ูุฌุชูุฏ ููุดุบู ุฏู
ุงุบูุง ูุง ุญุณู ุนุดุงู ูุนุฑู ูุนู
ู ุงุฏู ูู ู
ุด ู
ูุฌูุฏู ูู ุงู Spi ู peripheral ุงู ูููู ููุญุงูู ูุณุชุนูู ุจุญุงุฌู ุชุงููู
--ูู ูู ุงูููุฑู ุงู ูู
ุง ุงู slave ูุงู ู
ุนุงู ุฏุงุชุง ูุนุงูุฒ ูุจุนุชูุง ูู master ู
ููุด ููู ุชูุงุตู ุจูู ุงูุงุชููู micro ู
ู ุฎูุงู ุงู spi ูู ุงูููุช ุงูุญุงูู ูุงูู
ุดููู ุจุณ ุงู ุงู slave ุนุงูุฒ ูุนุฑู ุงู master ุงูุง ุนูุฏู ุฏุงุชุง ุชุนุงูู ุงุนู
ูู generation ูู clock ููุฒูู ุงู Slave select ุจุชุงุนุชู ู
ู high ู low ุนุดุงู ุงูุฏุฑ ุงุจุนุชูู
--ูู ู
ู
ูู ู
ุซูุง ูุง ุญุณู ุงู slave ู
ุซูุง ู Configure pin ุชููู output ูู
ุชูุตูู ุจุงู master ุนูู external interrupt pin ููู
ุง ุงู Slave ูููู ุนูุฏู ุฏุงุชุง ุนุงูุฒ ูุจุนุชูุง ููุชู ูุจุฏูู ู
ููุชุธุฑ ุงู master ุงูู ูุฌู ุฑุงูุน ุงู pin ุฏู ู high ููููู ุนูุฏ ุงู mater ู
ููุฏููู ูู ุงู ISR ุจุชุงุน ุงู EXTI ุฏู ุงู ูู ุญุตู rising edge ุนูู ุงู external interrupt pin ุฏู ุงู ุงู master ูุจุชุฏู ู generate clock ูููุฒู ุงู Slave select ุจุชุงุนุช ุงู Slave ุฏู ูุจูุฏุง ูุฏุฑูุง ูุฎูู ุงู slave ูู ุนูุฏู ุฏุงุชุง ู
ูู
ู ูุนุงูุฒ ูุจูุนูุง ููุชู ูุจุฏูู ู
ููุชุธุฑ ุงู master ุงูู ูุฌู ูุณุฃูู ูุง ุงุชุญูุช ุงูู.
/********************/
---ุจูุฏุง ุงูุญู
ุฏููู ูููู ุฌุงูุจูุง ุนูู ุงูุณุคุงู ุจุชุงุนูุง ูู
ุนูุด ูู ุจุฏุฎู ูู ุชูุงุตูู ูููู ุจุจูู ุนุงูุฒ ุงุนุฑูู ุงูุตูุฑุฉ ูุงู
ูุฉ ุนุดุงู ุงูู
ูุถูุน ูุซุจุช ูุชููู
ู ุจุดูู ุนู
ูู.
---ูู
ุงู ูุชูุงูู ูู ุงูุจูุณุชุณ ุงููู ูุจู ูุฏุง ุนูู ุงููุดุชุงุฌ ุฏู ูุฏู ุณูุงุก ููุง ุงู ุนูู ููููุฏุงู.
---ูุทุจุนุง ูู ูุตูุช ูููุง ู
ุชูุณุงุด ุชุฏุนููู + ุงูุง ูุจูู ุณุนูุฏ ุฌุฏุง ูู ุงูุช ูุตูุช ูููุง
/********************
Click here to claim your Sponsored Listing.