intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Lập trình hệ thống nhúng - Bùi Quốc Bảo

Chia sẻ: Nguyen Lan | Ngày: | Loại File: PDF | Số trang:34

168
lượt xem
24
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Hệ thống nhúng (Embedded system) là một thuật ngữ để chỉ một hệ thống có khả năng tự trị được nhúng vào trong một môi trường hay một hệ thống mẹ. Đó là các hệ thống tích hợp cả phần cứng và phần mềm phục vụ các bài toán chuyên dụng trong nhiều lĩnh vực công nghiệp, tự động hoá điều khiển, quan trắc và truyền tin. Đặc điểm của các hệ thống nhúng là hoạt động ổn định và có tính năng tự động hoá cao....

Chủ đề:
Lưu

Nội dung Text: Bài giảng Lập trình hệ thống nhúng - Bùi Quốc Bảo

  1. L P TRÌNH H TH NG NHÚNG BÙI QU C B O B MÔN K THU T ðI N T -ðH BK TP.HCM M c tiêu môn h c T mình thi t k ph n m m cho m t h th ng nhúng dùng 1 hay nhi u CPU d a trên vi ñi u khi n (8051, ARM) d a trên m t ph n c ng có s n. Ph n m m ñư c thi t k có c u trúc, d a trên ngôn ng c p cao (C) ho c s d ng c h p ng và C. N m ñư c lý thuy t cơ b n v h ñi u hành nhúng; s d ng ñư c các h ñi u hành nhúng cơ b n (FreeRTOS). 1
  2. Tài li u tham kh o C and the 8051, 3rd Edition, Thomas Schultz Embedded C, Michael J Pont ðánh giá k t qu Gi a kỳ: 20% Bài t p l n: 30% Cu i kỳ: 50% 2
  3. Khái ni m v h th ng nhúng H th ng nhúng là s k t h p gi a ph n c ng máy tính và ph n m m, ñư c thi t k ñ th c hi n m t ch c năng chuyên bi t. Ngư i s d ng m t h th ng nhúng không c n bi t r ng h th ng có m t máy tính bên trong VD: remote TV, lò vi sóng,… Vi x lý trong h th ng nhúng H 8086 PowerPC MIPS H 8051 PIC … Tùy thu c vào ng d ng và giá thành, ngư i thi t k quy t ñ nh lo i vi x lý dùng trong h th ng nhúng. 3
  4. Vi x lý dùng trong môn h c này 8051 ARM Ngôn ng l p trình Assembler C 4
  5. Lý do s d ng ngôn ng C C cho phép l p trình có c u trúc. Ngôn ng C cho phép d dàng truy c p ñ n c u trúc ph n c ng (ví d thông qua con tr ) C ñư c dùng r t ph bi n. H u h t các h vi x lý ñ u ñư c h tr trình biên d ch C. R t nhi u taì nguyên tham kh o (sách, ví d , website …) v l p trình C. Lý do dùng h p ng (Assembler) Cho phép vi t nh ng chương trình có kích thư c nh nh t và ch y v i t c ñ nhanh nh t. Thích h p cho nh ng ng d ng có yêu c u nghiêm ng t v th i gian. 5
  6. C operator = assignment statement @ address of ? selection < less than > greater than ! logical not (true to false, false to true) ~ 1's complement + addition - subtraction * multiply or pointer reference / divide % modulo, division remainder | logical or & logical and, or address of ^ logical exclusive or . used to access parts of a structure C operator == equal to comparison = greater than or equal to != not equal to > shift right ++ increment -- decrement && boolean and || boolean or 6
  7. += add value to -= subtract value to *= multiply value to /= divide value to |= or value to &= and value to ^= exclusive or value to = shift value right %= modulo divide value to -> pointer to a structure Comments (chú thích) // This is a comment line /* This is a comment block */ 7
  8. Preprocessor Directives (ch d n ti n x lý) ðư c x lý ñ u tiên trong quá trình biên d ch B t ñ u b ng t khóa # VD: #include “LCD.h" #define LCD *(unsigned char volatile *)(0x1003) Key word (T khóa) asm Insert assembly code auto Specifies a variable as automatic (created on the stack) break Causes the program control structure to finish case One possibility within a switch statement char 8 bit integer const Defines parameter as constant in ROM continue Causes the program to go to beginning of loop default Used in switch statement for all other cases do Used for creating program loops double Specifies variable as double precision floating point else Alternative part of a conditional extern Defined in another module float Specifies variable as single precision floating point 8
  9. Key word (T khóa) Used for creating program loops for Causes program to jump to specified goto location Conditional control structure if 16 bit integer int 32 bit integer long store the variable onto the CPU register if register space on the register is available Leave function return 16 bit integer short Key word (T khóa) signed Specifies variable as signed (default) sizeof Built-in function returns the size of an object static Stored permanently in memory, accessed locally struct Used for creating data structures switch Complex conditional control structure typedef Used to create new data types unsigned Always greater than or equal to zero void Used in parameter list to mean no parameter volatile Can change implicitly while Used for creating program loops 9
  10. D u ch m ph y (semicolons) Ch m d t câu l nh VD: For (i=0;i
  11. D u ph y (Commas) Dùng ñ ngăn cách các ph n t . VD: unsigned short beginTime, endTime, elapsedTime; ; short add(short x, short y) D u nháy (Apostrophes) Dùng ñ xác ñ nh ký t VD: mych='a' ; 11
  12. D u nháy kép (Quotation marks ) Dùng ñ xác ñ nh chu i (string) VD: unsigned char Name[] = “embedded"; D u ngo c nh n (braces) Dùng ñ b t ñ u và k t thúc m t kh i câu l nh VD: For (i=0;i
  13. D u ngo c vuông (Brackets ) Dùng ñ ch kích thư c c a m ng (array) và ch s VD: short fifo[100]; I = fifo[0]; D u ngo c tròn (Parentheses ) Bao quanh danh sách tham s VD: add(x,y); Xác ñ nh m c ñ ưu tiên th c thi c a các bi u th c VD: X = (17+3)/2 ; 13
  14. Bi n tĩnh (Static) Bi n tĩnh là bi n mà giá tr c a nó ñư c gi trong su t quá trình chương trình ch y, nhưng ch truy c p ñư c bên trong chương trình mà nó ñư c ñ nh nghĩa Bi n tĩnh char sumIt(void) { static char sum = 0; sum = sum + 1; return sum; } void main(void) { char i; char result; for(i=0;i
  15. T khóa volatile T khóa volatile mô t 1 bi n mà giá tr có th thay ñ i không ñoán trư c ñư c. Bi n volatile ñư c dùng ñ mô t : Các ngo i vi ñư c thi t k theo ki u memory-mapped Bi n toàn c c mà b thay ñ i giá tr trong trình ph c v ng t Bi n toàn c c ñư c truy c p b i nhi u tác v trong các ng d ng ña tác v T khóa volatile void main(void) { unsigned char xdata *p = (char xdata *) 0x8000; while (*p == 0); } void main(void) { volatile unsigned char xdata *p = (char xdata *) 0x8000; while (*p == 0); } 15
  16. T khóa extern Dùng ñ ch bi n ñư c ñ nh nghĩa trong 1 module khác. VD: Trong module LCD.h, khai báo bi n char LCD_value; Trong module main.h extern char LCD_value; Bi n ñư c kh i t o trư c short Temperature = -55; const unsigned short Steps[4] = {10, 9, 6, 5}; char Name[4] = "Jon"; char Name[6] = "Jon"; char Name[] = "Jon"; char *NamePt = "Jon"; 16
  17. Con tr (pointer) Con tr là 1 bi n ch a m t ñ a ch Giá tr c a con tr có th thay ñ i ñư c Question: Khai báo bi n a: int a; ð a ch c a bi n a: &a có ph i là con tr hay không? Con tr int *p; p = 0x8000; int *p = (int *)0x8000; int k; p = &k; #define SW *(unsigned char volatile *)(0x2000) 17
  18. Phép toán v i con tr Phép c ng: Con tr luôn ch vào ñ a ch ñ u c a m t ñ i tư ng (object). C ng 1 vào con tr làm nó ch ñ n ñ i tư ng ti p theo. Phép so sánh: Khi so sánh 2 con tr , giá tr chúng ñang mang ñư c coi như s không d u p int *p; 0x2000 0x01 0x00 0x2001 int *k; k 0x02 0x2002 p = 0x2000; 0x00 0x2003 *p = 1; k = p+1; *k = *p+1; 18
  19. M ng và chu i (array and string) M ng là t p h p các bi n gi ng nhau có cùng tên g i. Các ph n t c a m ng ñư c xác ñ nh b ng ch s (b t ñ u t 0). Kích thư c c a m ng là c ñ nh. VD: int a[4] = {1,2,3,4}; int b = a[0]; M ng và chu i (array and string) Chu i tương t m ng, ngo i tr : Chu i có th có s lư ng ph n t thay ñô . Các ph n t c a chu i là ký t ASCII k t thúc b ng giá tr 0. Chu i ñư c khai báo như 1 con tr ki u char char * mystring = “embedded”; 19
  20. Ki u c u trúc (structure) M t structure là t p h p c a nhi u bi n. Các bi n trong struct có th khác ki u nhau. struct theport { int mode; // 0 for I/O, 1 for in only -1 for out only unsigned char volatile *addr; // pointer to its address unsigned char volatile *ddr; // pointer to its direction reg }; struct theport PortA, PortB, PortC; Structure struct theport { int mode ; // 0 for I/O, 1 for in only -1 for out only unsigned char volatile *addr ; // pointer to its address unsigned char volatile *ddr ; // pointer to its direction //reg } PortA, PortB, PortC; 20
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2