Tải bản đầy đủ - 0 (trang)
CHƯƠNG II: CÁC THÀNH PHẦN VÀ CẤU TRÚC ROBOT

CHƯƠNG II: CÁC THÀNH PHẦN VÀ CẤU TRÚC ROBOT

Tải bản đầy đủ - 0trang

Đô an hê thông nhung

gian địa chi 4Gbyte c ua Cortex-M3 được chia thành cac vung cho ma ch ương

trình, SRAM, ngoai vi và ngoai vi hê th ông. Không giông vơi ARM7 được thi êt kê

theo kiên truc Von-Neumann (bô nh ơ chương trình và bô nh ư d ữ li êu chung vơi

nhau), Cortex-M3 được thiêt kê theo ki ên truc Harvard (b ô nh ơ ch ương trình và

bô nhơ dữ liêu được tach biêt vơi nhau), và có nhiêu bus cho phep th ực hi ên cac

thao tac song song vơi nhau, do đó làm tăng hiêu su ât c ua chip. Không gi ông v ơi

cac kiên truc ARM trươc đó, dong Cortex cho phep truy c âp d ữ li êu không xêp

hàng (unaligned dât, vì chip ARM là kiên truc 32-bit, do đó tât c a cac d ữ li êu

hoăc ma chương trình đêu được săp xêp khit vơi vung bô nh ơ là b ôi c ua 4byte).

Đăc điêm này cho phep sư d ung hiêu qua SRAM n ôi. Dong Cortex con h ơ tr ợ

viêc đăt và xóa cac bit bên trong hai vung 1Mbyte cua bô nh ơ b ằng phương phap

gọi là bit banding. Đăc điêm này cho phep truy câp hi êu qu a t ơi cac thanh ghi

ngoai vi và cac cơ được dung trên bô nhơ SRAM mà không cân môt b ô x ư lý luân

lý (Boolean processor).



Hình 2.1. Kiên truc vi xư lý ARM Cortex-M3

Khôi trung tâm cua STM32 là bô x ư lý Cortex-M3. B ô x ư lý Cortex-M3 là

môt vi điêu khiên được tiêu chn hóa gơm mơt CPU 32-bit, c âu truc bus (bus



Đô an hê thông nhung

structure), đơn vị x ư lý ng ăt có hơ tr ợ tinh năng l ông ng ăt vào nhau (nested

interrupt unit), hê th ông kiêm lôi (debug system) và tiêu chuân b ô tri b ô nh ơ

(standard memory layout).

Môt trong những thành phân chinh cua lõi Cortex-M3 là NVIC (Nested

Vector Interrupt Controller). NVIC cung câp môt c âu truc ngăt chu ân cho tât c a

cac vi điêu khiên được thiêt kê d ựa trên lõi Cortex và cach x ư lý cac ng ăt đ ăc

biêt (exceptional interrupt). NVIC cung câp cac vector ngăt chuyên d ung lên t ơi

240 nguôn ngăt tư ngoai vi, môi nguôn ngăt đó có thê đ ược ưu tiên hóa v ơi cac

mưc riêng biêt. NVIC được thiêt kê đ ê x ư lý cac ng ăt đoi h oi th ơi gian đap ưng

cực kì nhanh (extremely fast interrupt). Thơi gian tư luc nh ân m ôt tin hi êu ng ăt

cho tơi khi thực thi dong lênh đâu tiên trong trình ph uc v u ng ăt ch i là 12 chu kì

xung nhịp. Công viêc này được thực hiên tự đ ông bơi môt vi chương trình

(microcode) được cài săn trong CPU. Trong trương hợp xuât hiên cac interrupt

lông nhau (tưc là xay ra ngăt khi đang x ư lý ng ăt tr ươc đó), NVIC s ư d ung môt

phương phap gọi là “tail chain” cho phep ngăt lien ti êp được ph uc v u v ơi đ ơ tr ê

nho ch i chó 6 chu kì xung nh ịp. Trong suôt giai đo an lưu trữ d ữ li êu lên vung

nhơ stack đ ê b ăt đâu thực thi chương trình phuc vu ng ăt, m ơt ngăt có m ưc ưu

tiên cao hơn ngăt hiên tai có thê c anh tranh vơi (pre-empt) ngăt hi ên tai mà

không chịu bât kì sự trì hoan nào. C âu truc ngăt cũng đi kem v ơi ch ê đ ô ti êt

kiêm năng lượng cua trong lõi Cortex-M3. CPU có th ê được câu hình tự đ ông vào

chê đô tiêt kiêm năng lượng sau khi thoat khoi ngăt. Sau đó lõi ti êp tuc ngu cho

đên khi môt exceptiong (ngăt đăc biêt) xuât hiên.

Măc du Cortex-M3 được thiêt kê là m ôt lõi chi phi th âp (low cost core),

nhưng nó vân là mơt CPU 32-bit và vân hô tr ợ hai ch ê đ ô ho at đ ông: Thread và

Hander, môi chê đô có th ê đ ược câu hình vơi mơi vung stack riêng bi êt c ua nó,

điêu này cho phep thiêt kê cac ph ân mêm phưc tap và h ô tr ợ cac h ê đi êu hành

thơi gian thực. Lõi Cortex có hơ tr ợ m ơt timer 24-bit tự đ ông n ap l ai gia trị, nó

cũng se cung câp mơt ngăt timer đêu đăn cho môt nhân RTOS (Real Time

Operating System). Cac chip ARM7 và ARM9 có hai tâp l ênh (tâp l ênh ARM 32-



Đô an hê thông nhung

bit và tâp lênh Thumb 16-bit), trong khi đó dong Cortex được thi êt kê h ô tr ợ tâp

lênh ARM Thumb-2, tâp lênh này được pha trôn giữa tâp l ênh 16 và 32-bit,

nhằm đat được hiêu suât cao cua tâp lênh ARM 32-bit vơi mât đô ma ch ương

trình tôi ưu cua tâp lênh Thumb 16-bit. Tâp lênh Thumb-2 được thi êt kê đ ăc

biêt dành cho trình biên dịch C/C++, tưc là cac ưng dung dựa trên n ên Cortex

hoàn toàn có thê đ ược viêt bằng ngôn ngữ C mà không c ân đên chương trình

khơi đông viêt bằng assembler như ARM7 và ARM9.



1.2.Môt vài đăc điêm nôi bât cua STM32

ST đa đưa ra thị tr ương 4 dong vi điêu khiên dựa trên ARM7 và ARM9,

nhưng STM32 là môt bươc tiên quan trọng trên đương cong chi phi và hi êu su ât

(price/performace), gia chi gân 1 Euro vơi sô l ượng l ơn, STM32 là s ự thach th ưc

thât sự v ơi cac vi điêu khiên 8 và 16-bit truyên thông. STM32 đâu tiên g ôm 14

biên thê khac nhau, được phân thành hai nhóm: don performance có t ân s ô ho at

đông cua CPU lên tơi 72Mhz và dong Access có tân sơ ho at đ ơng lên t ơi 36Mhz.

Cac biên thê STM32 trong hai nhóm này t ương thich hoat toàn vê cach b ô tri

chân (pin) và phân mêm, đông thơi kich thươc bô nh ơ Flash Rom có th ê lên t ơi

128k và 20k SRAM.



Hình 2.2. Kiên truc STM32 nhanh performance và Access



Đô an hê thông nhung

Bô xư li Cortex và đ ơn vị x ư li trung tâm Cortex se đ ược xư d ung đ ê phân

biêt giữa nhung lõi Cortex hoàn chinh và bô x ư li trung tâm RISC n ôi (internal

RISC CPU).



Đô an hê thông nhung

1.3.Kiên truc đương ơng

CPU Cortex có thê th ực thi hâu hêt cac lênh trong môt chu kì đ ơn. Gi ông

như CPU cua ARM7/9, viêc thực thi này đat được vơi môt đương ông ba tâng.

Tuy nhiên Cortex-M3 kha năng d ự đoan vi êc re nhanh đ ê gi am thi êu s ô l ân làm

rông (flush) đương ông.



Hình 2.3. Kiên truc đương ông cua ARM Cortex-M3

Trong khi môt lênh đang được thực thi, thì lênh tiêp theo được gi ai ma và

lênh tiêp theo nữa se được lây vê t ư b ô nh ơ. Phương thưc hoat đ ông này se

phat huy hiêu qua t ôi đa cho ma tuyên tinh (linear code), nhưng khi g ăp ph ai

môt re nhanh (vi du như cây truc lênh if ...else) thì cac đương ông phai được làm

rông (flush) và làm đây (refill) trươc khi ma có th ê ti êp tuc th ực thi. V ơi CPU cua

ARM7/9, viêc re nhanh là rât tôn kem vê măt hi êu st ma (code performance).

Trong CPU Cortex có đương ơng ba tâng được tăng cương kha năng d ự đoan re

nhanh, có nghĩa rằng khi mơt lênh re nhanh có điêu kiên xuât hiên, môt thao tac

lây lênh dựa trên suy đoan được thực hiên, do đó lênh re nhanh có điêu ki ên

săn sàng đê th ực hiên mà không cân chịu them m ôt thao tac nào. Tr ương h ợp

xâu nhât khi găp môt lênh re nhanh gian tiêp, khi đó khơng th ê th ực hiên lây

lênh dựa trên viêc suy đoan, do đó phai làm rơng đương ơng dân. Kiên truc

đương ơng là chìa khóa dân đên hiêu suât tông thê c ua CPU Cortex, vì vây

không cân bât kì cân nhăc, xem xet đăc biêt nào đ ược thực hiên trong ma ưng

dung.



Đô an hê thông nhung

1.4. Mô hình lâp trình (programmer’s model)

CPU Cortex là bô xư li dựa trên kiên truc RISC, do đó h ơ tr ợ ki ên truc n ap

và lưu trữ (load and store architecture). Đê th ực hi ên lênh xư li dữ li êu, cac toan

hang phai được nap vào môt tâp thanh ghi trung tâm, cac phep tinh dữ li êu phai

được thực hiên trên cac thanh ghi này và kêt qua sau đó đ ược lưu l ai trong b ô

nhơ.



Hình 2.4. Kiên truc load and store cua ARM Cortex-M3

Do vây tât ca cac ho at đông cua chương trình tâp trung xung quanh tâp

thanh ghi cua CPU. Tâp thanh ghi này bao gôm 16 thanh ghi 32-bit. Cac thanh ghi

R0-12 là cac thanh ghi đơn gian, có thê đ ược dung đ ê ch ưa cac biên cua ch ương

trình. Cac thanh ghi R13-15 có chưc năng đăc bi êt trong CPU Cortex. Thanh ghi

R13 là con tro ngăn x êp (stack pointer). Thanh ghi này đ ược chia thành nhóm

(banked), cho phep CPU Cortex có hai chê đ ơ ho at đ ơng, m ơi chê đ ơ có khơng

gian ngăn xêp riêng biêt. Đăc điêm này thương được hê đi êu hành th ơi gian

thưc (Real Time Operating System) sư d ung đê có th ê ch ay ma hê th ơng c ua

mình trong môt chê đ ô b ao vê. Trong CPU Cortex có hai ngăn xêp đ ược g ọi là

main stack và process stack. Thanh ghi R14 tiêp theo được g ọi là thanh ghi lien

kêt (link register). Thanh ghi này được sư d ung đê l ưu tr ữ cac đ ịa ch i tr o v ê khi

môt cuôc gọi thu tuc (call a procedure) được thực hiên. Đi êu này cho phep CPU

Cortex thực hiên râ nhanh vi êc nhâp và thoat khoi môt th u t uc (fast entry and

exit to a procedure). Nêu chương trình cua ban gọi sâu vào nhi êu l ơp ch ương

trình con, trình biên dịch se tự đ ông lưu R14 trên ngăn xêp. Thanh ghi cu ôi cung

R15 là bơ đ êm chương trình (program counter), nó là mơt ph ân cua tâp thanh

ghi trung tâm nó có thê được đọc và thao tac giơng như bât ky thanh ghi khac.



Đô an hê thông nhung



Hình 2.5. Mô hình lâp trình cua ARM Cortex-M3

1.5.Thanh ghi xPSR

Ngoài tâp thanh ghi trung tâp con có m ơt thanh ghi riêng bi êt đ ược g ọi là

thanh ghi trang thai chương trình (program status register). Nó khơng ph ai là

mơt phân cua tâp thanh ghi chinh và chi có th ê truy c âp thông qua hai l ênh

chuyên dung. XPSR chưa môt sô cac vung ch ưc năng quan trong anh h ương đ ên

viêc thực thi cua CPU Cortex.



Hình 2.6. Thanh ghi trang thai chương trình cua CPU Cortex

Thanh ghi xPSR cũng có thê được truy câp thơng qua ba bi êt hiêu đ ăc bi êt

(special alias names) cho phep truy câp vào cac bit trong xPSR. Năm bit đ âu là

những cơ ma điêu kiên và được gan biêt hiêu (aliased) như thanh ghi trang thai

chương trình ưng dung. Bôn cơ N,Z,C,V (Negative, Zero, Cary và Overflow) se

được thiêt lâp và xóa tuy thc vào kêt qua c ua môt lênh xư li d ữ li êu. Bit Q là

được sư d ung bơi cac lênh toan học DPS đê ch i ra r ằng môt bi ên đa đ at gia tr ị

tôi đa hoăc gia trị t ơi thiêu cua nó. Giơng như tâp lênh ARM 32-bit, cac l ênh

Thumb-2 chi đươc thực hiên nêu ma điêu kiên cua lênh phu hợp v ơi trang thai

cua cac cơ trong thanh ghi tr ang thai chương trình ưng dung (application

program status register). Nêu ma điêu kiên cua lênh không phu h ợp, thì l ênh đi

ngang qua đương ông như là môt lênh NOP (lênh này không làm gì c a). Đi êu này

đam bao rằng cac lênh đi qua đương ông môt cach tr ơn tru và gi am thi êu làm

rông đương ông. Trong CPU Cortex, ki thuât này được mơ r ông vơi thanh ghi



Đô an hê thông nhung

trang thai chương trình thực thi. Đây là môt bi êt hiêu cua bit cac bit tư 8-26 c ua

xPSR. Nó gơm ba trương: trương ‘if then”, trương “interrupt continuable

instruction” và trương lênh thumb. Lênh Thumb-2 có mơt ph ương phap hi êu

qua khi thực hiên cac khơi lênh nho “if then”. Khi có m ơt ki êm tra là đung nó có

thê thi êt lâp môt gia trị trong vung IT, bao cho CPU th ực thi b ôn l ênh. N êu vi êc

kiêm tra điêu kiên sai, cac lênh này se đi qua đươ'ng ông nh ư m ôt l ênh NOP. Vì

vây, môt dong lênh C điên hình se được ma hóa như sau:



Hâu hêt cac lênh Thumb-2 thực thi trong môt chu kì đ ơn, môt s ô khac

(như lênh load và store) cân nhiêu chu kì. Vì vây, đê CPU Cortex có th ê có m ơt

thơi gian đap ưng ngăt xac định, cac lênh cân nhiêu chu kì th ưc thi ph ai đươc

ngăt. Khi môt lênh châm dưt sơm, vung ICI (interrupt continuable instruction)

trong thanh ghi xPSR se lưu lai sô cac thanh ghi ti êp theo đ ược dung trong l ênh

load hoăc store nhiêu dữ liêu cung luc. Vì vây, môt khi ng ăt đ ược ph uc v u, l ênh

load/store bị ngăt trươc đó có thê ti êp tuc được thực hiên. Trương Thumb cu ôi

cung được thưa hương tư phiên ban CPU ARM trươc đó.

1.6. Bơ xư li Cortex

Bơ xư li cortex-M3 được thiêt kê dựa trên kiên truc Harvad vơi bus ma và

bus dữ liêu riêng biêt. Chung được gọi là bus I-code và D-code. Ca hai đ êu có th ê

truy câp ma và dữ liêu trong pham vi bô nh ơ t ư 0x00000000-0x1fffffff. M ôt bus

hê th ông bô sung đ ược sư d ung đê truy c âp vào không gian điêu khi ên h ê

thông Cortex trong pham vi 0x20000000-0xdfffffff và 0xe0100000-0xffffffff. Hê

thông gơ l ôi trên chip cua Cortex có them m ôt câu truc bus được g ọi là bus

ngoai vi riêng.

Bus hê th ông và bus dữ li êu được kêt nôi vơi vi đi êu khi ên bên ngoài

thông qua môt tâp cac bus tôc đô cao đ ược săp xêp như mơt ma trân bus. Nó



Đơ an hê thơng nhung

cho phep môt sô đ ương dân song song giữa bus Cortex và bus ch u khac bên

ngoài.

1.7.Timer hê thông (system timer)

Lõi cortex có mơt bơ đêm xng 24-bit, vơi tinh nhăng tự đông nap l ai gia

trị b ô đ êm và tao sự ki ên ngăt khi đêm xuông zero.nó được tao ra v ơi dung ý

cung câp mơt bô đ êm thơi gian chuân cho tât ca cac vi đi êu khi ên d ựa trên

cortex. Đông hô SysTick đ ược sư d ung đê cung c âp môt nh ịp đâp h ê th ông cho

môt RTOS, hoăc đê t ao ra mơt ngăt có tinh chu kì đ ê ph uc vu cho cac tac v u

được lâp lịch. Bằng cach thiêt lâp bit CLKSOURCE, đông hô SysTick se ch ay ơ

tân sô đung b ằng tân sô ho at đông cua CPU. Khi bit này được xóa, SysTick se

chay ơ tân sơ bằng 1/8 CPU.

Đơng hơ SysTick có ba thanh ghi. Gia tr ị hi ên tai và gia tr ị t ai (current

value và reload value) nên được khơi tao vơi chu kì đêm. Thanh ghi trang thai và

điêu khiên có mơt bit cho phep (enable bit) đê b ăt đ âu ch ay bô đ êm th ơi gian

và môt bit TICKINT cho phep tin hiêu ngăt.

1.8.Xư li ngăt (interrupt handling)

Thơi gian đê thực hiên viêc châm dưt hay huy bo m ôt lênh đang th ực thi

khi xay ra ngăt là không xac định. Cơ câu ngăt cua ARM7/9 không hô tr ợ ng ăt

lơng nhau mà cân có sự hơ trợ cua phân mêm.

1.9.Bô đi êu khiên vector ngăt lông nhau (Nested Vector Interrupt

Controller)

NVIC là môt đơn vị tiêu chu ân trong lõi Cortex. Tât ca c a vi đi êu khi ên

đêu dựa trên lõi Cortex se có cung mơt câu truc ngăt.

NVIC cũng được thiêt kê đê có m ôt đô trê khi đap ưng ngăt rât thâp. Đây

là môt đăc điêm cua chinh ban than bô NVIC và c ua tâp l ênh Thumb-2, nó cho

phep thực thi cac lênh nhiêu chu kì như lênh tai, lênh lưu dữ liêu.



Đô an hê thông nhung

1.10.Ngăt ngoai (EXTI)

Bô đi êu khiên ngăt ngoai có 19 ngăt và kêt nói vào bang vector ng ăt

thông qua bô NVIC. 16 ng ăt được kêt nói thơng qua chân c ua cơng CPIO và tao

ngăt khi phat khi có xung lên (rasing) hoăc xuông (falling) hoăc c a hai. 3 ng ăt

con lai được nôi vơi “RTC alarm”, “USB wake up” và “Power voltage detect”.

NVIC cung câp ban vector ngăt riêng bi êt dành cho cac ngăt tư 0-4, ng ăt

RTC, ngăt Power detect và ngăt USB wake up. Cac ngăt ngo ai con l ai chia làm 2

nhóm 5-10 và 11-15 được cung câp them 2 bang ngăt b ô sung. Cac ng ăt ngo ai

rât qua trọng trong quan lý tiêu thu năng l ượng cua STM32. Chung có th ê đ ược

sư dung đê đanh thưc nhân vi xư li tư chê đô STOP khi ca 2 nguôn tao xung nh ịp

chinh ngưng hoat đơng. EXTI có thê t ao ra cac ngăt đ ê thoat kh oi s ự khi ên wait

cua chê đô interrupt và thoat khoi sự kiên wait cua chê đô event.



Hình 2.7. Ngăt ngoai EXTI

16 ngăt ngoai có thê đ ược anh xa t ơi bât ky chân nào cua vi xư li thông

qua 4 thanh ghi câu hình điêu khiên. Môi ngăt được điêu khiên b ơi trương 4 bit,

đoan ma sau mô ta cach câu hình ngăt cho chân GPIO.



Đô an hê thông nhung



1.11. Sơ đô phân cưng cơ ban

Môt mach reset bên ngoài không cân thiêt kees c ua STM32. Tuy nhiên,

trong qua trình phat triên chân nRST có thê đ ược kêt nói v ơi m ơt nut reset đ ơn

gian, đông thơi chân nRST cũng được kêt nôi đên công JTAG, đê cơng c u phat

triên có thê tao ra tin hiêu reset vi điêu khiên. STM32 có mơt sơ cac ngu ơn reset

nơi có thê phat hiên cac điêu kiên vân hành bị lôi:



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

CHƯƠNG II: CÁC THÀNH PHẦN VÀ CẤU TRÚC ROBOT

Tải bản đầy đủ ngay(0 tr)

×