1. Trang chủ
  2. » Luận Văn - Báo Cáo

Nghiên cứu, thiết kế hệ điều hành trên bộ vi điều khiển 8 bít

86 939 2
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 86
Dung lượng 639,91 KB

Nội dung

Nghiên cứu, thiết kế hệ điều hành trên bộ vi điều khiển 8 bít

Trang 1

trường đại học bách khoa hà nội -

Trang 2

Lêi cam ®oan

T«i xin cam ®oan b¶n luËn v¨n nµy lµ kÕt qu¶ nghiªn cøu cña b¶n th©n d−íi sù h−íng dÉn cña TS NguyÔn Linh Giang NÕu cã g× sai ph¹m, t«i xin hoµn toµn chÞu tr¸ch nhiÖm

Ng−êi lµm cam ®oan

Trang 3

Mục lục

Lời cam đoan 2

Danh mục các ký hiệu, các chữ viết tắt 5

1.2.1 Các trạng thái của một tiến trình 16

1.2.2 Khái niệm về tài nguyên “găng” và đoạn tới hạn 17

1.2.3 Hiện t−ợng bế tắc 19

1.3 Lập lịch cho CPU 20

1.3.1 Khái niệm giờ CPU 20

1.3.2 Các trạng thái của tiến trình liên quan đến giờ CPU 20

Trang 4

2.2.1 Tổng quan về các ngôn ngữ lập trình cho vi điều khiển 39

2.2.2 Những vấn đề với ngôn ngữ C viết cho các bộ vi điều khiển 42

Chương 3 - thiết kế hệ vi điều khiển 49

3.1 Xác định yêu cầu thiết kế 50

3.2 Lựa chọn cấu hình cho hệ thống 51

3.2.1 Lựa chọn bộ điều khiển trung tâm 51

3.2.2 Giao diện người sử dụng 52

3.2.3 Các thiết bị mô phỏng quá trình hoạt động của tiến trình 53

4.3.1 Xây dựng các tác vụ tương ứng các tiến trình 65

4.3.2 Giải quyết bài toán tài nguyên găng 69

Trang 5

Danh môc c¸c ký hiÖu, c¸c ch÷ viÕt t¾t

Trang 6

Danh môc c¸c b¶ng

B¶ng 1.1 Tr¹ng th¸i cña c¸c tiÕn tr×nh 19

B¶ng 1.2 Thêi gian thùc hiÖn cña c¸c tiÕn tr×nh 25

B¶ng 1.3 Thêi gian chê cña c¸c tiÕn tr×nh 25

B¶ng 2.1 Bé nhí d÷ liÖu trªn chÝp cña AT89S52 33

Trang 7

Danh mục các hình vẽ, đồ thị

Hình 1.1 Các trạng thái của một tiến trình 17

Hình 1.2 Các trạng thái của tiến trình liên quan đến giờ CPU 20

Hình 1.3 Sơ đồ thực hiện tiến trình 21

Hình 1.4 Sơ đồ tổ chức hàng đợi các tiến trình 22

Hình 1.5 Sơ đồ Grant 25

Hình 2.1 Sơ đồ khối của bộ vi điều khiển AT89S52 29

Hình 2.2 Tổ chức bộ nhớ của vi điều khiển 30

Hình 2.3 Sơ đồ ghép nối AT89S52 với EPROM 31

Hình 2.4 Sơ đồ ghép nối AT89S52 với RAM 34

Hình 2.5 Giải mã địa chỉ cho các vi mạch nhớ 34

Hình 2.6 Bộ nhớ dữ liệu đọc như bộ nhớ chương trình 35

Hình 2.7 Hoạt động của Timer0 và Timer1 ở chế độ 1 36

Hình 2.8 Các nguồn ngắt của AT89S52 38

Hình 3.1 Trình tự thiết kế phần cứng cho hệ thống 49

Hình 3.2 Sơ đồ khối của hệ vi điều khiển 51

Hình 3.3 Ghép nối vi điều khiển với RAM ngoài 52

Hình 3.4 Giao diện người sử dụng trên hệ vi điều khiển 53

Hình 3.5 Hiển thị trên LED 7 đoạn bằng kỹ thuật quét 54

Hình 3.6 Ghép nối ma trận LED trên hệ vi điều khiển 57

Hình 3.7 Nguyên tắc xếp chữ trên ma trận LED 58

Hình 4.1 Các tác vụ được thực hiện đồng thời (song song) 62

Hình 4.2 Các tác vụ được thực hiện luân phiên liên tục 62

Hình 4.3 Giản đồ xung trên P1 69

Hình 4.4 Chốt lại giá trị của P1 70

Trang 8

Hình 4.5 Các tiến trình được phân bổ thời gian CPU bằng nhau 71

Hình 4.6 Chuyển giữa các tiến trình bằng sự kiện time out 73

Hình 4.7 Các tiến trình được phân bổ thời gian CPU khác nhau 74

Hình 4.8 Người sử dụng ra lệnh vào các thời điểm khác nhau 75

Hình 4.9 Chuyển giữa cá tiến trình bằng sự kiện interrupt 76

Hình 4.9 Mô tả trạng thái của các tài nguyên của tiến trình 77

Hình 4.10 Các tài nguyên cần lưu khi dừng một tiến trình 78

Hình 4.11 Phân bổ ngăn xếp cho các tiến trình 79

Hình 4.12 Lập lịch cho 8 tiến trình thực hiện quét chữ trên ma trận LED 81

Hình 4.13 Lập lịch cho 4 tiến trình quét các số trên 4 LED 7 đoạn 81

Hình 4.14 Lập lịch cho tiến trình điều khiển LCD 82

Hình 4.15 Lập lịch cho tiến trình thời gian thực 82

Hình 4.16 Tổ chức bộ nhớ ROM của hệ vi điều khiển 83

Hình 4.17 Thay đổi vị trí đặt các chương trình con phục vụ ngắt 84

Hình 4.18 Phân bổ bộ nhớ ROM 85

Hình 4.19 Phân bổ bộ nhớ RAM 85

Trang 9

Lời nói đầu

Cùng với sự phát triển của khoa học kỹ thuật, cụm từ “tự động hoá” đã trở nên hết sức phổ thông Từ các máy móc tự động trong các nhà máy xí nghiệp thay thế cho sức lao động của công nhân, từ các đồ gia dụng tự động trong gia đình giúp ích cho người nội trợ nói chung các thiết bị có khả năng tự động hoá xuất hiện ở khắp mọi nơi Một câu hỏi đặt ra với khá nhiều người là nhờ đâu mà các thiết bị có khả năng tự động được? Để trả lời câu hỏi này chúng ta cần phải đi từ khi có cụm từ “tự động hoá” ra đời

Trước kia, khi chưa có công nghệ bán dẫn, các phần tử có tiếp điểm nếu được đầu nối với nhau theo một mạch logic nào đó thì vẫn có thể tạo ra một hệ thống tự động, tuy nhiên khả năng đáp ứng và tính tự động cả hệ thống này không cao Công nghệ bán dẫn ra đời, nó giải quyết được hạn chế về đáp ứng (tốc độ) của các phần tử có tiếp điểm tuy nhiên cũng phải chờ đến khi có sự xuất hiện của các bộ vi xử lý, các hệ thống có tính tự động hoá cao mới ra đời Đặc trưng của các hệ thống này được mô tả bằng một công thức đơn giản: Phần cứng + Phần mềm = ứng dụng Theo công thức này thì khi tuỳ biến một trong 2 thành phần là phần cứng hoặc phần mềm thì sẽ cho ra ứng dụng khác Thông thường phần mềm là thành phần được tuỳ biến

Một hệ thống với các bộ vi xử lý có thể giả các suy nghĩ và hành động của con người vì lý do đơn giản là chúng hoạt động theo một chương trình của người thiết kế đưa vào mà chương trình chính là các thuật toán là ý nghĩ của người lập trình Như vậy để một hệ thống có tính thông minh, tự động hoá cao thì phần mềm viết cho nó là vấn đề hết sức quan trọng

Một hệ thống với cùng một phần cứng nhưng nếu nó được viết hệ điều hành thì khả năng của nó sẽ trở nên mạnh hơn rất nhiều so với một hệ thống chỉ có một chương trình tuần tự Với mục đích không ngừng đáp ứng các nhu cầu của

Trang 10

xã hội, hiện nay các môn học về hệ nhúng đã và đang được đưa vào giảng dạy tại các trường Cao đẳng và Đại học Tuy nhiên để có một hiệu qủa giảng dạy tốt nhất thì cần có một phương pháp nghiên cứu và thiết kế đúng chính tắc và cũng cần phải có một thiết bị phục vụ qua trình thí nghiệm

Trường Đại học Công nghiệp Hà nội là một trường đào tạo các cử nhân và các kỹ sư thực hành Trong chương trình đào tạo cũng đã có môn kỹ thuật vi điều khiển, đây có thể coi là nền tảng để tiếp cận với các hệ thống nhúng sử dụng vi điều khiển có hệ điều hành Việc nghiên cứu để đưa vào giảng dạy môn thiết kế hệ điều hành cho các hệ vi điều khiển là phù hợp với yêu cầu hiện tại

Với sự hướng dẫn của TS Nguyễn Linh Giang, trong khuôn khổ luận văn này, tôi mạnh dạn nghiên cứu về các nguyên tắc cơ bản khi thiết kế một hệ điều hành trên hệ vi điều khiển

Nội dung của luận văn bao gồm 4 chương, trong đó: Chương 1: Giới thiệu tổng quan hệ điều hành

Chương 2: Giới thiệu bộ vi điều khiển được sử dụng để viết hệ điều hành và ngôn ngữ lập trình cho vi điều khiển

Chương 3 Thiết kế phần cứng hệ vi điều khiển

Chương 4 Thiết kế hệ điều hành cho hệ vi điều khiển

Do thời gian và khả năng có hạn nên luận văn này sẽ còn nhiều thiếu sót Rất mong được sự góp ý và thông cảm của các thầy giáo, cô giáo

Hà nội, ngày 30 tháng 10 năm 2006 Học viên

Trang 11

Chương 1 - Tổng quan về hệ điều hành1.1 Khái niệm về hệ điều hành (OS-Operating System) 1.1.1 Khái niệm

Khó có một khái niệm hay định nghĩa chính xác về hệ điều hành, vì hệ điều hành là một bộ phận được nhiều đối tượng khai thác nhất, họ có thể là người sử dụng thông thường, có thể là lập trình viên, có thể là người quản lý hệ thống và tuỳ theo mức độ khai thức hệ điều hành mà họ có thể đưa ra những khái niệm khác nhau

Khái niệm 1: Hệ điều hành là hệ thống chương trình với các chức năng giám

sát điều khiển việc thực hiện các chương trình của người sử dụng quản lý và phân chia tài nguyên cho nhiều chương trình người sử dụng đồng thời sao cho việc khai thác chức năng của hệ thống máy tính của người sử dụng là thuận lợi và hiệu quả nhất

Khái niệm 2: Hệ điều hành là một chương trình đóng vai trò như giao diện

giữa người sử dụng và phần cứng máy tính nó quản lý và điều khiển phần cứng cũng như sự thực hiện của tất cả các chương trình

Khái niệm thứ hai rất gần với các hệ điều hành đang sử dụng trên các máy tính hiện nay trong khi khái niệm thứ nhất lại gần với các hệ thống đo lường điều khiển trong công nghiệp sử dụng các bộ điều khiển khả trình (Ví dụ như vi điều khiển)

1.1.2 Chức năng của hệ điều hành

Có thể nói hệ điều hành là 1 hệ thống các chương trình đóng vai trò trung gian giữa người sử dụng và phần cứng Nhiệm vụ chính của nó là cung cấp một môi trường thuận lợi để người sử dụng dễ dàng thực hiện các chương trình ứng dụng của họ trên máy tính và khai thác triệt để các chức năng của phần cứng

Trang 12

Để đạt được mục tiêu trên hệ điều hành phải thực hiện 2 chức năng chính sau đây:

- Tạo ra một hệ thông mở rộng bao gồm các thành phần vật lý và các thành phần logic:

Như chúng ta biết, một hệ thống khả trình (ví dụ như máy tính) gồm các bộ phận chính như: Processor, Memory, I/O Device, Bus, vv, do đó để đối thoại hoặc khai thác máy tính người sử dụng phải hiểu được cơ chế hoạt động của các bộ phận này và phải tác động trực tiếp vào nó tất nhiên là bằng những con số 0,1 (ngôn ngữ máy) Điều này là quá khó đối với người sử dụng hệ điều hành phải che đậy các chi tiết phần cứng máy tính bởi một máy tính mở rộng, máy tính mở rộng này có đầy đủ các chức năng của một máy tính thực nhưng đơn giản và dễ sử dụng hơn Theo đó khi cần tác động vào máy tính thực người sử dụng chỉ cần tác động vào máy tính mở rộng mọi sự chuyển đổi thông tin điều khiển từ máy tính Mục đích của chức năng này kà: Giúp người sử dụng khai thức các chức năng của phần cứng máy tính dễ dàng và hiệu quả hơn

- Quản lý tài nguyên của hệ thống:

Tài nguyên hệ thống có thể là: prrocessor, Memory, I/O Device , đây là những tài nguyên mà hệ điều hành dùng để cấp phát cho các tiến trình, chương trình trong quá trình điều khiển sự hoạt động của hệ thống Khi người sử dụng cần thực hiện một chương trình hay một chương trình cần nạp thêm một tiến trình mới vào bộ nhớ thì hệ điều hành phải cấp phát không gian nhớ cho chương trình, tiến trình đó để chương trình, tíên trình đó nạp được vào bộ nhớ và hoạt động được Trong môi trường hệ điều hành đa nhiệm có thể có nhiều chương trình, tiến trình đồng thời cần được nạp vào bộ nhớ nhưng không gian lưu trữ củâ bộ nhớ có giới hạn do đó hệ điều hành phải tổ chức cấp phát bộ nhớ sao cho hợp lý để đảm bảo tất cả các chương trình tiến trình khi cần để được nạp vào bộ nhớ để hoạt động Ngoài ra hệ điều hành còn phải tổ chức bảo vệ các không gian nhớ đã cấp cho các chương trình tiến trình để tránh sự truy cập bất hợp lệ và sự tranh

Trang 13

chấp bộ nhớ giữa các chương trình, tiến trình, đặc biệt là các tiến trình đồng thời hoạt động trên hệ thống Đây là một trong những nhiệm vụ quan trọng của hệ điều hành

Trong quá trình hoạt động của hệ thống đặc bệt là các hệ thống đa người dùng đa chương trình, đa tiến trình Còn xuất hiện một hiện tượng khác, đó là nhiều chương trình, tiến trình đồng thời sử dụng một không gian nhớ hau một tập tin (dữ liệu, chương trình) nào đó Trong trường hợp này hệ điều hành phải tổ chức việc chia sẻ và giám sát việc truy xuất đồng thời trên các tài nguyên nói trên sao cho việc sử dụng tài nguyên có hiệu quả nhưng tránh được sự mất mát dữ liệu và làm hỏng các tập tin

Hai dẫn chứng điển hình giúp chúng ra thấy vai trò của hệ điều hành trong việc quản lý tài nguyên hệ thống sau này chúng ra sẽ thấy việc cấp phát, chia sẻ, bảo vệ tài nguyên của hệ điều hành là một trong những công việc khó khăn và phức tạp nhất Hệ điều hành đã chi phí nhiều cho công việc nói trên để đát được mục tiêu: Trong mọi trường hợp tất cả các chương trình, tiến trình nếu cần được cấp phát tài nguyên để hoạt động thì sớm muộn nó đều được cấp phát và được đưa vào trạng thái hoạt động

1.1.3 Các thành phần của hệ điều hành

1.1.3.1 Thành phần quản lý tiến trình

Hệ điều hành phải có nhiệm vụ tạo lập tiến trình và đưa nó vào danh sách quản lý tíên trình của hệ thống Khi tiến trình kết thúc hệ điều hành phải loại bỏ tiến trình ra lhỏi danh sác quản lý tiến trình của hệ thống

Hệ điều hành phải cung cấp đầy đủ tài nguyên để tiến trình đi vào hoạt động và phải đảm bảo đủ tài nguyên để duy trì sự hoạt động của tiến trình cho đến khi tiến trình kết thúc Khi tiến trình kết thúc hệ điều hành phải thu hồi những tài nguyên mà hệ điều hành đã cấp cho tiến trình

Trang 14

Trong quá trình hoạt động nếu vì một lý do nào đó tiến trình không thể tiếp rục hoạt động được thì hệ điều hành phải tạm dừng tiến trình thu hồi tài nguyên mà tiến trình đang chiếm giữ, sau đó nếu diều kiện thuận lợi thì hệ điều hành phải tái kích hoạt tiến trình để tiến trình tiếp tục hoạt động cho đến khi kết thúc

Trong các hệ thống có nhiều tiến trình hoạt động song song hệ điều hành phải giải quyết vấn đề tranh chấp tài nguyên giữa các tiến trình, đều phối processor cho các tiến trình, giúp các tiến trình trao đổi thông tin và hoạt động đồng bộ với nhau, đảm bảo nguyên tắc tất cả các tiến trình đã được khởi tạo phải được thực hiện và kết thúc được

Tóm lại, bộ phận quản lý tiến trình của hệ điều hành phải thực hiện nhứng nhiệm vụ sau đây:

Tạo lập, huỷ bỏ tiến trình

Tạm dừng, tái kích hoạt động tiến trình

Tạo cơ chế thông tin liên lạc giữa các tiến trình Tạo cơ chế đồng bộ hoá giữa các tiến trình

Khi chương trình, tiến trình có yêu cầu được nạp vào bộ nhớ thì hệ điều hành phải cấp phát không gian nhớ cho nó Khi chương trình, tiến trình kết thúc thì hệ điều hành phải thi hồi lại không gian nhớ đã cấp phát cho chương trình, tiến trình trước đó

Trang 15

Trong các hệ thống đa chương hay đa tiến trình, trong bộ nhớ tồn tại nhiều chương trình/ nhiều tiến trình, hệ điều hành phải thực hiện nhiệm vụ bảo vệ các vùng nhớ đã cấp phát cho các chương trình/tiến trình, tránh sự vi phạm trên các vùng nhớ của nhau

Tóm lại, bộ phận quản lý bộ nhớ chính của hệ điều hành thực hiện những nhiệm vụ sau:

Cấp phát, thu hồi vùng nhớ Chi nhận trạng thái bộ nhớ Bảo vệ bộ nhớ

Quyết định tiến trình nào được nạp vào bộ nhớ

1.1.3.3 Thành phần quản lý vào ra

Một trong những mục tiêu của hệ điều hành là giúp người sử dụng khai thức hệ thống máy tính dễ dàng và hiệu quả, do đó các thao tác trao đổi thông tin trên thiết bị xuất / nhập phải trong suốt đối với người sử dụng

Để thực hiện được điều này hệ điều hành phải tồn tại một bộ phận điều khiển thiết bị, bộ phận này phối hợp cùng CPU để quản lý sự hoạt động và trao đổi thông tin giữa hệ thóng, chương trình người sử dụng và người sử dụng với các thiết bị xuâts/nhập

Bộ phận điều khiển thiết bị thực hiện những nhiệm vụ sau:

Gởi mã lệnh điều khiển đến thiết bị: Hệ điều hành điều khiển các thiết bị bằng các mã điều khiển, do đó trước khi bắt đầu một quá trình trao đổi dữ liệu với thiết bị thì hệ điều hành phải gởi mã điểu khiển đến thiết bị

Tiếp nhận yêu cần ngắt (Interrupt) từ các thiết bị khi cần trao đổi với hệ thống khi nó phát ra một tín hiệu yêu cầu ngắt, hệ điều hành tiếp nhận yêu cầu ngắt từ các thiết bị, xem xết và thực hiện một thủ tục để đáp ứng yêu cầu các thiết bị

Trang 16

Phát hiện và xử lý lỗi: quá trình trao đổi dữ liệu thường xảy ra các lỗi như: thiết bị vào/ra chưa sẵn sàng, đường truyền hỏng, vv, do đó hệ điều hành phải tạo ra các cơ chế thích hợp để phát hiện lỗi sớm nhất và khằc phục các lỗi vừa xảy ra nếu có thể

1.2 Quản lý tiến trình

Tiến trình là một chương trình đang xử lý, nó sở hữu một con trỏ lệnh, lập các thanh ghi và các biến Để hoàn thành nhiệm vụ của mình, các tiến trình có thể còn yêu cầu một số tài nguyên hệ thống như: CPU, bộ nhớ và các thiết bị

1.2.1 Các trạng thái của một tiến trình

Trạng thái của tiến trình tại mỗi thời điểm được xác định bởi hoạt động hiện thời của tiến trình tại thời điểm đó Trong suốt khoảng thời gian tồn tại trong hệ thống, một tiến trình có thể thay đổi trạng thái do rất nhiều nguyên nhân như: Chờ đợi sự kiện nào đó xảy ra, đợi một thao tác vào/ra hoàn tất, hết thời gian xử lý

Tại mỗi thời điểm, tiến trình có thể nhận một trong các trạng thái sau: - Khởi tạo (new): Tiến trình đang được tạo lập

- Sẵn sàng (ready): Tiến trình chờ được cấp phát CPU để xử lý - Thực hiện (runing): Tiến trình được xử lý

- Đợi (waiting): Tiến trình phải dừng vì thiếu tài nguyên hoặc chờ một sự kiện nào đó

- Kết thúc (halt): Tiến trình đã hoàn tất công việc xử lý

Các trạng thái của tiến trình có thể được biểu diễn qua sơ đồ (hình 1.1)

Trang 17

Hình 1.1 Các trạng thái của một tiến trình

Hệ điều hành quản lý hoạt động của các tiến trình trong hệ thống thông qua khối mô tả tiến trình (process control block - PCB) Khối mô tả tiến trình bao gồm các thành phần:

- Số thứ tự của tiến trình

- Con trỏ trạng thái của tiến trình (cho biết trạng thái hiện tại của tiến trình)

- Vùng nhớ lưu trữ giá trị các thanh ghi mà tiến trình đang sử dụng

- Thông tin về tài nguyên tiến trình đang sử dụng hoặc được phép sử dụng

1.2.2 Khái niệm về tài nguyên “găng” và đoạn tới hạn

Chúng ta cùng xem thuật toán sau:

In Out: 0 n-1 Counter: 0 n

Begin

(Tiến trình P)

Repeat

Waiting

Trang 18

S¶n xuÊt th«ng tin vµ chøa trong NextP;

Buffer [In]:=NextP; In:= In + 1 mod n;

(TiÕn tr×nh C)

Repeat

NextC:= Buffer [Out];

Out:= Out + 1 mod n;

LÊy th«ng tin trong chøa trong NextC

End;

NhËn xÐt: V× hai tiÕn tr×nh P vµ C song hµnh nªn cã thÓ x¶y ra tr−êng hîp trong cïng 1 thêi ®iÓm, tiÕn tr×nh P t¨ng biÕn Counter lªn 1 (Counter:= Counter + 1) cßn tiÕn tr×nh C l¹i gi¶m biÕn Counter ®i 1 (Counter:= Counter – 1) dÉn tíi kÕt qu¶ sai Nh− vËy biÕn Counter trong tr−êng hîp nµy ®−îc gäi lµ tµi nguyªn “g¨ng” §o¹n tr×nh sö dông biÕn Counter gäi lµ ®o¹n tíi h¹n

Trang 19

1.2.3 Hiện t−ợng bế tắc

1.2.3.1 Khái niệm về bế tắc

Giả sử có hai tiến trình P1 và P song hành sử dụng các tài nguyên r1 và r, đ−ợc điều khiển bởi hai đèn hiệu S1 và S Tại mỗi thời điểm, mỗi tài nguyên chỉ phục vụ cho sự hoạt động của một tiến trình Xét trạng thái:

Bảng 1.1 Trạng thái của các tiến trình

Nh− vậy bế tắc là trạng thái khi hai hoặc nhiều tiến trình cùng chờ đợi một số sự kiện nào đó và nếu không có tác động đặc biệt từ bên ngoài thì sự chờ đợi đó là vô hạn

1.2.3.2 Điều kiện xảy ra bế tắc trong hệ thống

Hiện t−ợng bế tắc xảy ra khi và chỉ khi trong hệ thống tồn tại 4 điều kiện: - Có tài nguyên găng

- Có hiện t−ợng giữ và đợi, có một tiến trình đang giữ một số tài nguyên và đợi tài nguyên bổ sung đang đ−ợc giữ bởi các tiến trình khác

- Không có hệ thống phân phối lại tài nguyên: Việc sử dụng tài nguyên không bị ngắt

Trang 20

- Có hiện tượng chờ đợi vòng tròn

1.2.3.3 Các mức phòng tránh bế tắc

Để tránh hiện tượng bế tắc, thông thường hệ thống áp dụng ba mức:

- Ngăn chặn: áp dụng các biện pháp để hệ thống rơi vào trạng thái bế tắc - Dự báo và tránh bế tắc: áp dụng các biện pháp để kiểm tra các tiến trình xem có bị rơi vào trạng thái bế tắc hay không Nếu có thì thông báo trước khi bế tắc xảy ra

- Nhận biết và khắc phục: Tìm cách phát hiện và giải quyết

1.3 Lập lịch cho CPU 1.3.1 Khái niệm giờ CPU

CPU là một loại tài nguyên quan trọng của máy tính Mọi tiến trình muốn hoạt động được đều phải có sự phục vụ của CPU (để xử lý, tính toán ) Thời gian mà CPU phục vụ cho tiến trình hoạt động được gọi là giờ CPU

Tại mỗi thời điểm nhất định, chỉ có một tiến trình được phân phối giờ CPU để hoạt động (thực hiện các lệnh của mình)

1.3.2 Các trạng thái của tiến trình liên quan đến giờ CPU

Trong chế độ đa chương trình, có ba trạng thái của tiến trình liên quan mật thiết đến giờ CPU bao gồm:

Hình 1.2 Các trạng thái của tiến trình liên quan đến giờ CPU

Waiting

Trang 21

- Sẵn sàng (ready): Là trạng thái mà tiến trình đ−ợc phân phối đầy đủ mọi

tài nguyên cần thiết và đang chờ giờ CPU

- Thực hiện (running): Là trạng thái mà tiến trình đ−ợc phân phối đầy đủ

mọi tài nguyên cần thiết và giờ CPU

- Đợi (waiting): Là trạng thái tiến trình không thực hiện đ−ợc vì thiếu một

vài điều kiện nào đó (đợi dữ liệu vào/ra, đợi tài nguyên bổ sung ) Khi sự kiện mà nó chờ đợi xuất hiện, tiến trình sẽ quay trở lại trạng thái sẵn sàng

Nh− vậy, trong suốt thời gian tồn tại của mình, các tiến trình sẽ tuân thủ theo sơ đồ thực hiện sau:

Trang 22

1.3.3 Lập lịch cho CPU

1.3.3.1 Khái niệm

Để điều khiển tiến trình ở nhiều trạng thái khác, hệ thống thường tổ chức các từ trạng thái (thực chất là các khối điều khiển tiến trình) để ghi nhận tình trạng sử dụng tài nguyên và trạng thái tiến trình Các từ trạng thái được tổ chức theo kiểu đợi như sau:

Hình 1.4 Sơ đồ tổ chức hàng đợi các tiến trình

Như vậy, lập lịch cho CPU có nghĩa là tổ chức một hàng đợi các tiến trình sẵn sàng để phân phối giờ CPU cho chúng dựa trên độ ưu tiên của các tiến trình sao cho hiệu suất sử dụng CPU là tối ưu nhất

Mỗi tiến trình ở trạng thái sẵn sàng được gắn với một thứ tự ưu tiên Thứ tự ưu tiên này được xác định dựa vào các yếu tố như: Thời điểm hình thành tiến trình, thời gian thực hiện tiến trình, thời gian kết thúc tiến trình

Trang 23

1.3.3.2 Một số thuật toán lập lịch cho CPU

1 First Come First Served (FCFS)

Trong thuật toán này, độ ưu tiên phục vụ tiến trình căn cứ vào thời điểm hình thành tiến trình Hàng đợi các tiến trình được tổ chức theo kiểu FIFO Mọi tiến trình đều được phục vụ theo trình tự xuất hiện cho đến khi kết thúc hoặc bị ngắt

2 Shortest Job First (SJF)

Thuật toán SJF xác định thứ tự ưu tiên thực hiện tiến trình dựa vào tổng thời gian thực hiện tiến trình Tiến trình nào có tổng thời gian thực hiện ngắn sẽ được ưu tiên phục vụ trước

3 Shortest Remain Time (SRT)

Tương tự như SJF nhưng trong thuật toán này, độ ưu tiên thực hiện các tiến trình dựa vào thời gian cần thiết để thực hiện nốt tiến trình (bằng tổng thời gian = thời gian đã thực hiện) Như vậy trong thuật toán này cần phải thường xuyên cập nhật thông tin về thời gian đã thực hiện tiến trình Đồng thời chế độ phân bổ lại giờ CPU cũng phải được áp dụng nếu không sẽ làm mất tính ưu việt của thuật toán

4 Round Robin (RR)

Trong thuật toán này, hệ thống quy định một lượng tử thời gian (time quantum) khoảng từ 10-100 mili giây Mỗi tiến trình trong hàng đợi lần lượt được phân phối một lượng tử thời gian để thực hiện Sau khoảng thời gian đó, nếu tiến trình chưa kết thúc hoặc không rơi vào trạng thái đợi thì nó được chuyển về cuối hàng đợi

Hàng đợi các tiến trình được tổ chức theo kiểu vòng tròn và các tiến trình luôn luôn đảm bảo được phục vụ Khi có tiến trình mới phát sinh, nó sẽ được đưa

Trang 24

vào hàng đợi vòng tròn và được đặt ở vị trí phục vụ ngay Các tiến trình dù ngắn hay dài đều có độ ưu tiên phục vụ như nhau

Trên thực tế, để đảm bảo độ ưu tiên cho các tiến trình dài, hệ thống sẽ phân chia các tiến trình thành m lớp Số lần được phục vụ và thời gian một lần phục vụ tiến trình tại mỗi lớp khác nhau (giả sử ở lớp thứ i, tiến trình được phục vụ k lần và mỗi lần với thời gian qi)

Nếu sau khoảng thời gian đã được phân phối mà tiến trình chưa kết thúc hoặc không bị ngắt thì nó được chuyển sang lớp thứ i+1 (với ki+1 và qi+1 lớn hơn) Lượng từ thời gian sẽ tăng dần cho đến khi tiến trình rơi vào lớp ngoài cùng (lớp m) ở đó nó sẽ được phục vụ với lượng tử qm không đổi Như vậy thứ tự ưu tiên của các tiến trình sẽ tăng dần theo thời gian xếp hàng đợi

Ưu điểm của phương pháp phục vụ đồng mức theo lớp sẽ cho phép hệ thống ưu tiên những tiến trình ngắn (vì nó kết thúc sớm) nhưng không gây tổn hại lớn cho các tiến trình dài

Nhược điểm là do phải thường xuyên phân phối lại giờ CPU nên thời gian chờ đợi trung bình của Round Robin có thể lớn hơn so với FCFS

Chú ý: Trong thụât toán, cần chọn giá trị lượng tử thời gian (time

quantum) thích hợp Nếu chọn giá trị time quantum lớn thì việc bổ sung tiến trình mới hoặc kích hoạt tiến trình bị ngắt sẽ làm tăng thời gian chờ đợi trung bình nhưng ngược lại nếu chọn giá trị time quantum nhỏ thì nó sẽ làm cho các tiến trình phải liên tục chuyển trạng thái dẫn đến giảm hệ số hữu ích của CPU

Thông thường giá trị time quantum được chọn theo công thức: q = t/n hoặc q=t/n – s Trong đó: t là thời gian khống chế trước; n là số tiến trình; s thời gian chuyển từ tiến trình này sang tiến trình khác

Ví dụ: Cho dãy tiến trình với thời gian thực hiện tương ứng theo bảng 1.2 và time quantum có giá trị q= 4

Trang 25

Bảng 1.2 Thời gian thực hiện của các tiến trình

Tiến trình T thực hiện

P1 24 P2 3 P3 3

Sơ đồ Grant biểu thị thứ tự thực hiện các tiến trình như hình 1.5

P1 P2 P3 P1 P1 P1 P1 P1 0 4 7 10 14 18 22 26 30

Hình 1.5 Sơ đồ Grant

Theo sơ đồ này chúng ta thấy thời chờ đợi của các tiến trình như bảng 1.2

Bảng 1.3 Thời gian chờ của các tiến trình

P1 24 6 P3 3 1 P1 3 7 Tổng 30 17 Dẫn đến thời gian chờ đợi trung bình của các tiến trình là 17/3 = 5.66

1.4 Quản lý bộ nhớ

1.4.1 Yêu cầu phải quản lý bộ nhớ

Bộ nhớ là thiết bị lưu trữ duy nhất mà thông qua đó CPU có thể trao đổi thông tin với môi trường bên ngoài Do vậy, nhu cầu tổ chức, quản lý bộ nhớ là một trong những nhiệm vụ cơ bản hàng đầu của hệ điều hành Bộ nhớ được tổ chức như mảng một chiều các từ nhớ (word), mỗi từ nhớ có một địa chỉ Việc trao đổi thông tin với môi trường bên ngoài được thực hiện thông qua các thao tác đọc/ghi dữ liệu vào một địa chỉ cụ thể nào đó trong bộ nhớ

Trang 26

Hệ điều hành chịu trách nhiệm cấp phát không gian nhớ cho các tiến trình khi có yêu cầu Để thực hiện tốt nhiệm vụ này, hệ điều hành cần phải xem xét một số khía cạnh sau:

- Sự tương ứng giữa địa chỉ logic và địa chỉ vật lý: Làm thế nào để chuyển đổi một địa chỉ logic thành một địa chỉ vật lý

- Quản lý bộ nhớ vật lý bao gồm: Phân bổ không gian nhớ cho các tiến trình hoạt động, thu hồi không gian nhớ khi tiến trình kết thúc, quản lý được không gian nhớ tự do

- Chia sẻ thông tin: Cho phép các tiến trình đang hoạt động trong bộ nhớ có thể chia sẻ thông tin với nhau

- Bảo vệ bộ nhớ: Ngăn chặn các tiến trình xâm phạm đến vùng nhớ được cấp phát cho các tiến trình khác

1.4.2 Các sơ đồ quản lý bộ nhớ

1.4.2.1 Sơ đồ phân hoạch cố định

Bộ nhớ được chia thành n phần không nhất thiết phải bằng nhau và mỗi phần được sử dụng như một bộ nhớ độc lập gọi là một phân hoạch Mỗi phân hoạch có thể nạp được một chương trình và tổ chức thực hiện một cách đồng thời Như vậy trên lý thuyết nếu có n phân hoạch thì sẽ có thể nạp được n chương trình và thực hiện một cách đồng thời (n được gọi là hệ số song song của hệ thống)

1.4.2.2 Sơ đồ phân hoạch động

Trong sơ đồ này, bộ nhớ có một bảng quản lý không gian nhớ tự do thống nhất Khi thực hiện chương trình, hệ thống dựa vào kích thước chương trình để phân bổ không gian nhớ thích hợp, tạo thành một vùng nhớ độc lập và tạo bảng quản lý riêng Khi các chương trình kết thúc, bộ nhớ giành cho nó sẽ bị thu hồi

Trang 27

1.4.2.3 Sơ đồ hoán đổi (swapping)

Sơ đồ hoán đổi dựa trên nguyên tắc nội dung chương trình ở trạng thái chờ đợi trong một khoảng thời gian dài sẽ được tạm thời chuyển ra bộ nhớ ngoài (swap out) để giải phóng vùng nhớ cấp phát cho chương trình khác hoạt động Khi chương trình kết thúc trạng thái chờ nó sẽ được nạp trở lại bộ nhớ trong (swap in) để tiếp tục thực hiện

Trang 28

Chương 2 - Vi điều khiển và ngôn ngữ lập trình cho vi điều khiển

2.1 Vi điều khiển

2.1.1 Vi xử lý và vi điều khiển

Bộ vi xử lý đã có lịch sử ra đời từ 1971 khi Intel giới thiệu bộ 8080 dùng cho máy tính đơn board Kể từ khi ra đời, qua nhiều thế hệ, có nhiều cải tiến nhưng lĩnh vực của các bộ vi xử lý vẫn là các hệ thống máy tính Trong hệ thống máy tính, bộ vi xử lý cùng với bộ nhớ, các thiết bị vào/ra ,hợp thành một hệ thống có khả năng xử lý, điều khiển, lưu trữ cực mạnh

Một hệ thống máy tính nếu dùng cho một ứng dụng lớn yêu cầu xử lý

nhanh, lưu trữ lớn thì không có vấn để gì để bàn Tuy nhiên nếu mang hệ thống này vào dùng cho các ứng dụng nhỏ thì lại trở thành lãng phí Từ thực tế này các nhà sản xuất đã nghiên cứu và đưa ra các hệ máy tính nhỏ với một bộ xử lý nhỏ, một bộ nhớ chương trình và dữ liệu nhỏ, một số các thành phần vào ra cơ bản Tất cả các thành phần này được gói gọn trong một chip đơn và đây chình là bộ vi điều khiển

Như vậy để phân biệt hai khái niệm vi xử lý và vi điều khiển thì cần phải xem xét trên 2 phương diện: Kiến trúc phần cứng và lĩnh vực ứng dụng Phần cứng của một bộ vi điều khiển là một bộ vi xử lý, bộ nhớ, các thiết bị vào/ra Vi điều khiển có đủ những thành phần cơ bản của một hệ máy tính nên bộ vi điều khiển có thể hoạt động độc lập được còn vi xử lý thì không Xuất phát từ những

đặc trưng vừa nêu nên bộ vi điều khiển được tìm thấy trong các ứng dụng nhỏ còn

vi xử lý nằm trong các hệ thống máy tính

AT89S52 là bộ vi điều khiển 8 bit, được chế tạo bởi hãng ATMEL theo kiến trúc của 8051

Trang 29

Hình 2.1 Sơ đồ khối của bộ vi điều khiển AT89S52

Trên hình 2.1 là sơ đồ khối của bộ vi điều khiển này, theo đó bộ vi điều khiển có đầy đủ các phần cứng cần thiết cho một hệ điều hành thời gian thực nh− bộ xử lý trung tâm, bộ nhớ, các bộ timer để tạo các time tick, bộ xử lý ngắt để thực hiện chuyển mạch giữa các tiến trình, khối vào ra để thực hiện các thao tác trong các tiến trình Nh− vậy chỉ cần một bộ vi điều khiển AT89S52với giá thành khá rẻ là đã có thể thực hiện các ứng dụng thời gian thực với chi phí rất thấp Đây cũng chính là lý do để tác giả đề tài chọn nghiên cứu vi điều khiển và ứng dụng vào hệ thống thời gian thực

MemoryIntermal Devices

CPU

ROM 8Kb

RAM256 byte

I/O devices

Timer0Timer1Timer2(16 bit)

System Bus

ROM 64Kb

I/O devices

Extermal DevicesOscilla-

tior

Trang 30

2.1.2 Tổ chức bộ nhớ của vi điều khiển

AT89S52 coự boọ nhụự theo caỏu truực Harvard: coự nhửừng vuứng cho boọ nhụự rieõng bieọt cho chửụng trỡnh vaứ dửừ lieọu Nhử ủaừ noựi ụỷ treõn, caỷ boọ nhụự chửụng trỡnh vaứ dửừ lieọu coự saỹn ụỷ treõn chip tuy nhieõn dung lửụùng cuỷa caực boọ nhụự treõn chip laứ haùn cheỏ Khi thieỏt keỏ caực ửựng duùng ủoứi hoỷi boọ nhụự lụựn ngửụứi ta coự theồ duứng boọ nhụự ngoaứi vụựi dung lửụùng leõn tụựi 64 Kbytes cho boọ nhụự chửụng trỡnh vaứ cho 64 Kbytes boọ nhụự dửừ lieọu (hỡnh 2.2)

Hình 2.2 Tổ chức bộ nhớ của vi điều khiển 2.1.2.1 Bộ nhớ chương trình

AT89S52 có 8Kb Flash Rom trên chip, khi chân EA (chân số 31) được đặt ở mức logic cao (+5V), bộ vi điều khiển sẽ thực hiện chương trình trong Rom nội bắt dầu từ địa chỉ 0000H Số lần lập trình (ghi) cho bộ nhớ này là khoảng 1000 lần

Khi chân EA được đặt ở mức logic thấp, bộ vi điều khiển sẽ thực hiện chương trình ở bộ nhớ chương trình ngoài (EPPOM ngoài), tuy nhiên để có được

Boọ nhụự ngoaứi Boọ nhụự trong

Boọ nhụự chửụng trỡnh

(8Kb) 256 bytes

Boọ nhụự chửụng trỡnh (64Kb)

Boọ nhụự dửừ lieọu (64Kb)

1FFFH

Trang 31

điều này thì cần phải có một mạch phối ghép AT89S52 với EPROM được lựa chọn

Trên hình 2.3: Một vi mạch chốt (Latch) sẽ tách riêng Bus đa hợp địa chỉ và dữ liệu AD0-AD7; Tuỳ theo dung lượng của EPROM sẽ có số đường địa chỉ tương ứng được dùng; EPROM được đọc nhờ tín hiệu PSEN

Hình 2.3 Sơ đồ ghép nối AT89S52 với EPROM 2.1.2.2 Bộ nhớ dữ liệu

a.Bộ nhớ dữ liệu trên chip

AT89S52 có 256 bytes Ram như baỷng 2.1 ủửụùc phaõn chia nhử sau:

- Caực bank thanh ghi coự ủũa chổ tửứ 00H ủeỏn 1FH

32 byte thaỏp cuỷa boọ nhụự noọi ủửụùc daứnh cho caực bank thanh ghi Boọ leọnh AT89S52 hoồ trụù 8 thanh ghi coự teõn laứ R0 -R7 vaứ theo maởc ủũnh sau khi reset heọ thoỏng, caực thanh ghi naứy coự caực ủũa chổ tửứ 00H - 07H

89S52

Trang 32

Các lệnh dùng các thanh ghi RO - R7 sẽ ngắn hơn và nhanh hơn so với các lệnh có chức năng tương ứng dùng kiểu địa chỉ trực tiếp Các dữ liệu được dùng thường xuyên nên dùng một trong các thanh ghi này

Do có 4 bank thanh ghi nên tại một thời điểm chỉ có một bank thanh ghi được truy xuất bởi các thanh ghi RO - R7 đểà chuyển đổi việc truy xuất các bank thanh ghi ta phải thay đổi các bit chọn bank trong thanh ghi trạng thái

- RAM địa chỉ hóa từng bit có địa chỉ từ 20H đến 2FH

AT89S52 có 128 bit có chứa các byte định địa chỉ theo bit từ 20H đến 2FH

Ý tưởng truy xuất từng bit bằng phần mềm là các đăëc tính mạnh của các bộ vi điều khiển nói chung Các bit có thể được đặt, xóa, AND, OR, , với 1 lệnh đơn

- RAM đa dụng từ 30H đến FFH

-Các thanh ghi chức năng đặc biệt từ 80H đến FFH.

Trang 33

B¶ng 2.1 Bé nhí d÷ liƯu trªn chÝp cđa AT89S52

FF

30

Vùng RAM đa dụng

2F 7F 7E 7D 7C 7B 7A 79 782E 77 76 75 74 73 72 71 702D 6F 6E 6D 6C 6B 6A 69 682C 67 66 65 64 63 62 61 602B 5F 5E 5D 5C 5B 5A 59 582A 57 56 55 54 53 52 51 5029 4F 4E 4D 4C 4B 4A 49 4828 47 46 45 44 43 42 41 4027 3F 3E 3D 3C 3B 3A 39 3826 37 36 35 34 33 32 31 3025 2F 2E 2D 2C 2B 2A 29 2824 27 26 25 24 23 22 21 2023 1F 1E 1D 1C 1B 1A 19 1822 17 16 15 14 13 12 11 1021 0F 0E 0D 0C 0B 0A 09 0820 07 06 05 04 03 02 01 00

Dành cho các thanh ghi đặc biệt (SFR)

Trang 34

b Bộ nhớ dữ liệu ngoài

Hình 2.4 Sơ đồ ghép nối AT89S52 với RAM

Hình 2.5 Giải m∙ địa chỉ cho các vi mạch nhớ

textAddress Bus (A0- A15)

Data Bus (D0-D7)

WEWR RD

Select another EPROM/RAMTới các vi mạch ROM/RAM khác

Trang 35

Boọ nhụự dửừ lieọu ngoaứi laứ boọ nhụự RAM ủửụùc ủoùc hoaởc ghi bụỷi tớn hieọu /RD

vaứ WR.Caực RAM coự theồ giao tieỏp vụựi AT89S52 tửụng tửù caựch thửực nhử EPROM ngoaùi trửứ chaõn /RD cuỷa AT89S52 noỏi vụựi chaõn /OE (Output Enable) cuỷa RAM vaứ /chaõn WR cuỷa AT89S52 noỏi vụựi chaõn /WE cuỷa RAM (hỡnh 2.10)

Neỏu coự nhieàu vi maùch ROM vaứ RAM cuứng ủửụùc gheựp noỏi vụựi AT89S52 thỡ coự theồ duứng theõm vi maùch giaỷi maừ 74LS138 (hỡnh 2.5)

Nhử ủaừ noựi ụỷ treõn, boọ nhụự chửụng trỡnh vaứ boọ nhụự dửừ lieọu cuỷa AT89S52 coự theồ truứng ủũa chổ, ủieàu naứy cho pheựp ngửụứi thieỏt keỏ coự theồ xaõy dửùng moọt boọ nhụự dửừ lieọu chửựa chửụng trỡnh thửùc thi (boọ nhụự dửừ lieọu ủoùc nhử boọ nhụự chửụng trỡnh) nhử hỡnh 2.6

Hình 2.6 Bộ nhớ dữ liệu đọc như bộ nhớ chương trình

2.1.3 Các bộ định thời

Caực boọ ủũnh thụứi (Timer) coự theồ hieồu laứ moọt chuoói caực flip-flop chia ủoõi taàn soỏ noỏi tieỏp vụựi nhau, chuựng nhaọn tớn hieọu vaứo laứm nguoàn xung nhũp, ngoừ ra cuỷa taàn soỏ cuoỏi laứm nguoàn xung nhũp cho flip-flop baựo traứn cuỷa Timer (flip-flop cụứ) Giaự trũ nhũ phaõn trong caực flip-flop cuỷa Timer coự theồ

RDPSEN

Trang 36

xem nhử soỏ ủeỏm soỏ xung nhũp (hoaởc caực sửù kieọn) tửứ khi khụỷi ủoọng Timer Vớ duù Timer 16 bit seừ ủeỏm leõn tửứ 0000H ủeỏn FFFFH, cụứ baựo traứn seừ leõn 1 khi soỏ ủeỏm traứn tửứ FFFFH ủeỏn 0000H

AT89S52 coự 3 Timer 16 bit, moói Timer coự boỏn cheỏ ủoọ hoaùt ủoọùng Ngửụứi ta sửỷ duùng caực Timer ủeồ: ẹũnh khoaỷng thụứi gian, ủeỏm sửù kieọn hoaởc taùo toỏc ủoọ baud cho port noỏi tieỏp trong

Hình 2.7 Hoạt động của Timer0 và Timer1 ở chế độ 1

Nguyên tắc hoạt động của các bộ định thời nh− sau:

Nguồn xung clock đ−ợc đ−a tới Timer từ một trong cách phụ thuộc vào bit C-T trong thanh ghi TMOD:

• Nếu C-/T = 1, xung clock sẽ đ−ợc lấy từ bộ tạo xung bên ngoài qua chân Tx(T0,T1 hoặc T2)

• Nếu C-/T = 0, xung clock sẽ đ−ợc lấy từ bộ chia tần trong chip, tần số của xung ở đây là 1/12 tần số của bộ dao động thạch anh (Fosc)

Nguồn xung clock nói trên sẽ đ−ợc điều khiển để đ−a tới các Timer bằng các bit: TR, GATE và mức logic trên các chân INTx:

• Nếu TRx=0, các Timer sẽ bị cấm mà không cần quan tâm tới GATE và mức logic trên các chân INTx (thể hiện bằng “cổng AND”)

Trang 37

• Nếu TRx=1, các Timer sẽ hoạt động với một trong 2 điều kiện sau xảy ra (thể hiện bằng cổng ‘OR”): Thứ nhất: bit GATE=1; thứ hai: trên chân INTx có mức logic 1

Giá trị lớn nhất mà các Timer chứa được là 65535 (tương ứng FFFF(H)), khi đếm quá giá trị này sẽ xảy ra tràn, khi cờ tràn TF sẽ được đặt bằng 1 và gây ra ngắt do bộ định thời Căn cứ vào sự kiện này bộ xử lý ngắt sẽ nạp dịa chỉ của vector ngắt cho con trỏ PC, bộ vi điều khiển sẽ thực hện chương trình ở đây

Trong hệ điều hành thời gian thực, bộ định thời là một trong những tài nguyên phần cứng không thể thiếu Bộ định thời dùng để xác định các khoảng thời gian thích hợp cho mỗi tiến trình hoạt động (gọi là timer tick) Khoảng thời gian này có thể thay đổi dẽ dàng nhờ việc nạp các giá trị khác nhau cho bộ timer Khoảng thời gian này cũng thay đổi tuỳ theo các ứng dụng thời gian thực sao cho nó luôn nhỏ hơn thời gian đáp ứng của hệ thống với các kích thích bên ngoài

2.1.4 Bộ xử lý ngắt

Ngắt có thể hiểu đơn giản là tạm dừng một hoạt động A nào đó và chuyển sang một hoạt động B khác có nhu cầu cấp thiết hơn Khi xảy ra ngắt, toàn bộ các công việc, trạng thái của hoạt động A sẽ được cất vào ngăn xếp để làm căn cứ tiếp diễn khi bộ vi xử lý đã hoàn thành xong hoạt động B và quay trở lại với hoạt động A

AT89S52 có 6 nguồn ngắt: - Ngắt ngoài đến từ chân /INT0 - Ngắt ngoài đến từ chân /INT1 - Ngắt do bộ timer 0

- Ngắt do bộ timer 1 - Ngắt do bộ timer 2

Trang 38

- Ngắt do Port nối tiếp

6 nguồn ngắt này được xoá khi Reset và được đặt riêng bằng phần mềm bởi các bit trong các thanh ghi cho phép ngắt (IE), thanh ghi ưu tiên ngắt (IP).

Hình 2.8 Các nguồn ngắt của AT89S52

Như đã trình bày ở mục 2.3, các bộ định thời tạo ra các khoảng thời gian (time tick), theo đó các một tiến trình phải được tạm dừng và một tiến trình khác sẽ được thực hiện Sự chuyển mạch sang tiến trình mới kéo theo việc phải lưu lại các công việc của tiến trình cũ Ngắt do bộ định thời chính là cơ sở để có thể thực hiện việc chuyển mạch giữa các tiến trình

Trang 39

Ngoài ra trên vi điều khiển còn có một số các nguồn ngắt khác Các nguồn ngắt này khi được đặt ở các thứ tự ưu tiên thích hợp sẽ là con đường để một hệ thống thời gian thực có thể phản ứng kịp thời với các kích thích từ bên ngoài

2.2 Ngôn ngữ lập trình cho vi điều khiển

2.2.1 Tổng quan về các ngôn ngữ lập trình cho vi điều khiển

Cho đến nay khi lập trình cho các bộ vi điều khiển người ta thường sử dụng 2 ngôn ngữ chính đó là hợp ngữ và C Hợp ngữ (assembly) là ngôn ngữ lập trình bậc thấp (chỉ đứng trên ngôn ngữ máy một bậc) Hợp ngữ sử dụng chính ngay tập lệnh của bộ vi điều khiển tương ứng để viết nên một chương trình Để biên dịch thành mã máy có thể sử dụng trình dịch hợp ngữ (assembler) hoặc có thể dùng chính bảng mã lệnh do nhà sản xuất cung cấp để mã hoá các lệnh và tổng hợp thành mã (code) của chương trình Chúng ta cùng xem xét ví dụ sau:

ADD AL,BL ; cộng hai số với nhau

Trong đoạn chương trình trên nếu tra bảng mã sẽ có được mã của 3 lệnh lần lượt là:

B0 80 B3 12 80 C0

Nếu tổng hợp lại thì mã của đoạn chương trình trên sẽ là B0 80 B3 12 80 C0.

Cách tra bảng mã lệnh và hoá lệnh sau đó tổng hợp thành mã chương trình có thể gây ra nhầm lẫn và mất rất nhiều thời gian chính vì vậy mà trình dịch hợp ngữ ra đời Có trong tay trình dịch hợp ngữ người lập trình có thể đã giảm bớt

Trang 40

được khá nhiều công sức khi lập trình cho vi điều khiển Tuy nhiên chúng ta cùng xem xét ví dụ sau:

Thực hiện phép toán AX=7 * 9 + 12 * 8 Hợp ngữ:

MOV CX,AX ;chuyển kết quả vào thanh ghi khác để chuẩn bi cho phép ;nhân thứ hai

MOV AL,12 MOV BL,8 MUL BL

ADD AX,CX ;cộng hai tích với nhau AINSI C:

AX=7*9+12*8;

Rõ ràng với cùng một nhiệm vụ nhưng AINSI C chỉ cần 1 dòng lệnh trong khi hợp ngữ cần tới 8 dòng lệnh và cả 8 dòng lệnh trên đều phải thao tác trên các thanh ghi (phần cứng) Từ lý do này mà người ta nghĩ đến việc nên sử dụng một ngôn ngữ cấp cao hơn để thay thế cho hợp ngữ và xây dựng trình dịch (compiler) cho ngôn ngữ cấp cao đó

Khi thiết kế phần mềm cho một hệ thống nhúng nhỏ sử dụng 8085, việc sử dụng mã hợp ngữ (assembly code) để phát triển toàn bộ sản phẩm đã trở thành chuyện bình thường Đối với nhiều đề tài, đây là tiếp cận khả thi vì lượng mã cần được tạo ra thường nhỏ hơn 8 Kbyte và tương đối đơn giản về bản chất Nếu một kỹ sư phần cứng được giao nhiệm vụ thiết kế cả phần cứng lẫn phần mềm, người này thường có khuynh hướng viết phần mềm bằng hợp ngữ Người kỹ sư phần

Ngày đăng: 10/11/2012, 10:09

HÌNH ẢNH LIÊN QUAN

Hình 1.1. Các trạng thái của một tiến trình - Nghiên cứu, thiết kế hệ điều hành trên bộ vi điều khiển 8 bít
Hình 1.1. Các trạng thái của một tiến trình (Trang 17)
Hình 1.1. Các trạng thái của một tiến trình - Nghiên cứu, thiết kế hệ điều hành trên bộ vi điều khiển 8 bít
Hình 1.1. Các trạng thái của một tiến trình (Trang 17)
Bảng 1.1. Trạng thái của các tiến trình - Nghiên cứu, thiết kế hệ điều hành trên bộ vi điều khiển 8 bít
Bảng 1.1. Trạng thái của các tiến trình (Trang 19)
Hình 1.4. Sơ đồ tổ chức hàng đợi các tiến trình - Nghiên cứu, thiết kế hệ điều hành trên bộ vi điều khiển 8 bít
Hình 1.4. Sơ đồ tổ chức hàng đợi các tiến trình (Trang 22)
Hình 1.4. Sơ đồ tổ chức hàng đợi các tiến trình - Nghiên cứu, thiết kế hệ điều hành trên bộ vi điều khiển 8 bít
Hình 1.4. Sơ đồ tổ chức hàng đợi các tiến trình (Trang 22)
Sơ đồ Grant biểu thị thứ tự thực hiện các tiến trình nh− hình 1.5. - Nghiên cứu, thiết kế hệ điều hành trên bộ vi điều khiển 8 bít
rant biểu thị thứ tự thực hiện các tiến trình nh− hình 1.5 (Trang 25)
Bảng 1.2. Thời gian thực hiện của các tiến trình - Nghiên cứu, thiết kế hệ điều hành trên bộ vi điều khiển 8 bít
Bảng 1.2. Thời gian thực hiện của các tiến trình (Trang 25)
Hình 2.1. Sơ đồ khối của bộ vi điềukhiển AT89S52 - Nghiên cứu, thiết kế hệ điều hành trên bộ vi điều khiển 8 bít
Hình 2.1. Sơ đồ khối của bộ vi điềukhiển AT89S52 (Trang 29)
Hình 2.1. Sơ đồ khối của bộ vi điều khiển AT89S52 - Nghiên cứu, thiết kế hệ điều hành trên bộ vi điều khiển 8 bít
Hình 2.1. Sơ đồ khối của bộ vi điều khiển AT89S52 (Trang 29)
Hình 2.2. Tổ chức bộ nhớ của vi điềukhiển - Nghiên cứu, thiết kế hệ điều hành trên bộ vi điều khiển 8 bít
Hình 2.2. Tổ chức bộ nhớ của vi điềukhiển (Trang 30)
Hình 2.2. Tổ chức bộ nhớ của vi điều khiển  2.1.2.1. Bộ nhớ ch−ơng trình. - Nghiên cứu, thiết kế hệ điều hành trên bộ vi điều khiển 8 bít
Hình 2.2. Tổ chức bộ nhớ của vi điều khiển 2.1.2.1. Bộ nhớ ch−ơng trình (Trang 30)
Trên hình 2.3: Một vi mạch chốt (Latch) sẽ tách riêng Bus đa hợp địa chỉ và - Nghiên cứu, thiết kế hệ điều hành trên bộ vi điều khiển 8 bít
r ên hình 2.3: Một vi mạch chốt (Latch) sẽ tách riêng Bus đa hợp địa chỉ và (Trang 31)
Hình 2.3. Sơ đồ ghép nối AT89S52 với EPROM  2.1.2.2. Bộ nhớ dữ liệu. - Nghiên cứu, thiết kế hệ điều hành trên bộ vi điều khiển 8 bít
Hình 2.3. Sơ đồ ghép nối AT89S52 với EPROM 2.1.2.2. Bộ nhớ dữ liệu (Trang 31)
Bảng 2.1. Bộ nhớ dữ liệu trên chíp của AT89S52 - Nghiên cứu, thiết kế hệ điều hành trên bộ vi điều khiển 8 bít
Bảng 2.1. Bộ nhớ dữ liệu trên chíp của AT89S52 (Trang 33)
Bảng 2.1. Bộ nhớ dữ liệu trên chíp của AT89S52 - Nghiên cứu, thiết kế hệ điều hành trên bộ vi điều khiển 8 bít
Bảng 2.1. Bộ nhớ dữ liệu trên chíp của AT89S52 (Trang 33)
Hình 2.4. Sơ đồ ghép nối AT89S52với RAM - Nghiên cứu, thiết kế hệ điều hành trên bộ vi điều khiển 8 bít
Hình 2.4. Sơ đồ ghép nối AT89S52với RAM (Trang 34)
Hình 2.5. Giải m∙ địa chỉ cho các vi mạch nhớ - Nghiên cứu, thiết kế hệ điều hành trên bộ vi điều khiển 8 bít
Hình 2.5. Giải m∙ địa chỉ cho các vi mạch nhớ (Trang 34)
Hình 2.5. Giải m∙ địa chỉ cho các vi mạch nhớ - Nghiên cứu, thiết kế hệ điều hành trên bộ vi điều khiển 8 bít
Hình 2.5. Giải m∙ địa chỉ cho các vi mạch nhớ (Trang 34)
Hình 2.4. Sơ đồ ghép  nối AT89S52 với RAM - Nghiên cứu, thiết kế hệ điều hành trên bộ vi điều khiển 8 bít
Hình 2.4. Sơ đồ ghép nối AT89S52 với RAM (Trang 34)
Hình 2.7. Hoạt động của Timer0 và Timer1 ở chế độ 1. - Nghiên cứu, thiết kế hệ điều hành trên bộ vi điều khiển 8 bít
Hình 2.7. Hoạt động của Timer0 và Timer1 ở chế độ 1 (Trang 36)
Hình 2.7. Hoạt động của Timer0 và Timer1 ở chế độ 1. - Nghiên cứu, thiết kế hệ điều hành trên bộ vi điều khiển 8 bít
Hình 2.7. Hoạt động của Timer0 và Timer1 ở chế độ 1 (Trang 36)
Hình 2.8. Các nguồn ngắt của AT89S52 - Nghiên cứu, thiết kế hệ điều hành trên bộ vi điều khiển 8 bít
Hình 2.8. Các nguồn ngắt của AT89S52 (Trang 38)
Hình 2.8. Các nguồn ngắt của AT89S52 - Nghiên cứu, thiết kế hệ điều hành trên bộ vi điều khiển 8 bít
Hình 2.8. Các nguồn ngắt của AT89S52 (Trang 38)
Lựa chọn cấu hình cho hệ thống theo yêu cầu thiết kế  - Nghiên cứu, thiết kế hệ điều hành trên bộ vi điều khiển 8 bít
a chọn cấu hình cho hệ thống theo yêu cầu thiết kế (Trang 49)
Hình 3.1. Trình tự  thiết kế phần cứng cho hệ thống - Nghiên cứu, thiết kế hệ điều hành trên bộ vi điều khiển 8 bít
Hình 3.1. Trình tự thiết kế phần cứng cho hệ thống (Trang 49)
3.2. Lựa chọn cấu hình cho hệ thống. - Nghiên cứu, thiết kế hệ điều hành trên bộ vi điều khiển 8 bít
3.2. Lựa chọn cấu hình cho hệ thống (Trang 51)
Hình 3.2. Sơ đồ khối của hệ vi điều khiển - Nghiên cứu, thiết kế hệ điều hành trên bộ vi điều khiển 8 bít
Hình 3.2. Sơ đồ khối của hệ vi điều khiển (Trang 51)
dung l−ợng 8Kb ghép nối theo sơ hình 3.3. - Nghiên cứu, thiết kế hệ điều hành trên bộ vi điều khiển 8 bít
dung l−ợng 8Kb ghép nối theo sơ hình 3.3 (Trang 52)
Hình 3.3. Ghép nối vi điều khiển với RAM ngoài. - Nghiên cứu, thiết kế hệ điều hành trên bộ vi điều khiển 8 bít
Hình 3.3. Ghép nối vi điều khiển với RAM ngoài (Trang 52)
thiết kế hệ thống thì có thể chọn màn hình tinh thể lỏng và hệ thống các nút nhấn - Nghiên cứu, thiết kế hệ điều hành trên bộ vi điều khiển 8 bít
thi ết kế hệ thống thì có thể chọn màn hình tinh thể lỏng và hệ thống các nút nhấn (Trang 53)
Hình 3.4. Giao diện ng−ời sử dụng trên hệ vi điều khiển. - Nghiên cứu, thiết kế hệ điều hành trên bộ vi điều khiển 8 bít
Hình 3.4. Giao diện ng−ời sử dụng trên hệ vi điều khiển (Trang 53)
Hình 3.5. Hiển thị trên LED7 đoạn bằng kỹ thuật quét - Nghiên cứu, thiết kế hệ điều hành trên bộ vi điều khiển 8 bít
Hình 3.5. Hiển thị trên LED7 đoạn bằng kỹ thuật quét (Trang 54)
Hình 3.5. Hiển thị trên LED 7 đoạn bằng kỹ thuật quét - Nghiên cứu, thiết kế hệ điều hành trên bộ vi điều khiển 8 bít
Hình 3.5. Hiển thị trên LED 7 đoạn bằng kỹ thuật quét (Trang 54)
Hình 3.6. Ghép nối ma trận LED trên hệ vi điềukhiển - Nghiên cứu, thiết kế hệ điều hành trên bộ vi điều khiển 8 bít
Hình 3.6. Ghép nối ma trận LED trên hệ vi điềukhiển (Trang 56)
Hình 3.6. Ghép nối ma trận LED trên hệ vi điều khiển - Nghiên cứu, thiết kế hệ điều hành trên bộ vi điều khiển 8 bít
Hình 3.6. Ghép nối ma trận LED trên hệ vi điều khiển (Trang 56)
Hình 4.1. Các tác vụ đ−ợc thực hiện đồng thời (song song) - Nghiên cứu, thiết kế hệ điều hành trên bộ vi điều khiển 8 bít
Hình 4.1. Các tác vụ đ−ợc thực hiện đồng thời (song song) (Trang 61)
Hình 4.3. Giản đồ xung trên P1 - Nghiên cứu, thiết kế hệ điều hành trên bộ vi điều khiển 8 bít
Hình 4.3. Giản đồ xung trên P1 (Trang 68)
Hình 4.3. Giản đồ xung trên P1 - Nghiên cứu, thiết kế hệ điều hành trên bộ vi điều khiển 8 bít
Hình 4.3. Giản đồ xung trên P1 (Trang 68)
Hình 4.4. Chốt lại giátrị của P1 - Nghiên cứu, thiết kế hệ điều hành trên bộ vi điều khiển 8 bít
Hình 4.4. Chốt lại giátrị của P1 (Trang 69)
Hình 4.4. Chốt lại giá trị của P1 - Nghiên cứu, thiết kế hệ điều hành trên bộ vi điều khiển 8 bít
Hình 4.4. Chốt lại giá trị của P1 (Trang 69)
Hình 4.5. Các tiến trình đ−ợc phân bổ thời gian CPU bằng nhau - Nghiên cứu, thiết kế hệ điều hành trên bộ vi điều khiển 8 bít
Hình 4.5. Các tiến trình đ−ợc phân bổ thời gian CPU bằng nhau (Trang 70)
Hình 4.5. Các tiến trình đ−ợc phân bổ thời gian CPU bằng nhau - Nghiên cứu, thiết kế hệ điều hành trên bộ vi điều khiển 8 bít
Hình 4.5. Các tiến trình đ−ợc phân bổ thời gian CPU bằng nhau (Trang 70)
Có thể mô tả hoạt động của ch−ơng trình trên bằng hình 4.6. - Nghiên cứu, thiết kế hệ điều hành trên bộ vi điều khiển 8 bít
th ể mô tả hoạt động của ch−ơng trình trên bằng hình 4.6 (Trang 72)
Hình 4.6. Chuyển giữa các tiến trình bằng sự kiện time out  -Signal. - Nghiên cứu, thiết kế hệ điều hành trên bộ vi điều khiển 8 bít
Hình 4.6. Chuyển giữa các tiến trình bằng sự kiện time out -Signal (Trang 72)
Hình 4.7. Các tiến trình đ−ợc phân bổ thời gian CPU khác nhau - Nghiên cứu, thiết kế hệ điều hành trên bộ vi điều khiển 8 bít
Hình 4.7. Các tiến trình đ−ợc phân bổ thời gian CPU khác nhau (Trang 73)
Hình 4.8. Ng−ời sử dụng ra lệnh vào các thời điểm khác nhau - Nghiên cứu, thiết kế hệ điều hành trên bộ vi điều khiển 8 bít
Hình 4.8. Ng−ời sử dụng ra lệnh vào các thời điểm khác nhau (Trang 74)
Hình 4.8. Ng−ời sử dụng ra lệnh vào các thời điểm khác nhau - Nghiên cứu, thiết kế hệ điều hành trên bộ vi điều khiển 8 bít
Hình 4.8. Ng−ời sử dụng ra lệnh vào các thời điểm khác nhau (Trang 74)
Hình 4.9. Chuyển giữa cá tiến trình bằng sự kiện interrupt - Nghiên cứu, thiết kế hệ điều hành trên bộ vi điều khiển 8 bít
Hình 4.9. Chuyển giữa cá tiến trình bằng sự kiện interrupt (Trang 75)
Hình 4.9. Chuyển giữa cá tiến trình bằng sự kiện interrupt  4.4.1.2. Chuyển giữa các tiến trình(context switching) - Nghiên cứu, thiết kế hệ điều hành trên bộ vi điều khiển 8 bít
Hình 4.9. Chuyển giữa cá tiến trình bằng sự kiện interrupt 4.4.1.2. Chuyển giữa các tiến trình(context switching) (Trang 75)
Hình 4.9. Mô tả trạng thái của các tài nguyên của tiến trình. - Nghiên cứu, thiết kế hệ điều hành trên bộ vi điều khiển 8 bít
Hình 4.9. Mô tả trạng thái của các tài nguyên của tiến trình (Trang 76)
Hình 4.9. Mô tả trạng thái của các tài nguyên của tiến trình. - Nghiên cứu, thiết kế hệ điều hành trên bộ vi điều khiển 8 bít
Hình 4.9. Mô tả trạng thái của các tài nguyên của tiến trình (Trang 76)
Hình 4.10. Các tài nguyên cần l−u khi dừng một tiến trình. - Nghiên cứu, thiết kế hệ điều hành trên bộ vi điều khiển 8 bít
Hình 4.10. Các tài nguyên cần l−u khi dừng một tiến trình (Trang 77)
Hình 4.10. Các tài nguyên cần lưu khi dừng một tiến trình. - Nghiên cứu, thiết kế hệ điều hành trên bộ vi điều khiển 8 bít
Hình 4.10. Các tài nguyên cần lưu khi dừng một tiến trình (Trang 77)
Hình 4.11. Phân bổ ngăn xếp cho các tiến trình - Nghiên cứu, thiết kế hệ điều hành trên bộ vi điều khiển 8 bít
Hình 4.11. Phân bổ ngăn xếp cho các tiến trình (Trang 78)
Hình 4.12. Lập lịch cho 8 tiến trình thực hiện quét chữ trên ma trận LED - Nghiên cứu, thiết kế hệ điều hành trên bộ vi điều khiển 8 bít
Hình 4.12. Lập lịch cho 8 tiến trình thực hiện quét chữ trên ma trận LED (Trang 80)
Hình 4.13. Lập lịch cho 4 tiến trình quét các số trên 4 LED7 đoạn - Nghiên cứu, thiết kế hệ điều hành trên bộ vi điều khiển 8 bít
Hình 4.13. Lập lịch cho 4 tiến trình quét các số trên 4 LED7 đoạn (Trang 80)
Hình 4.13. Lập lịch cho 4 tiến trình quét các số trên 4 LED 7 đoạn - Nghiên cứu, thiết kế hệ điều hành trên bộ vi điều khiển 8 bít
Hình 4.13. Lập lịch cho 4 tiến trình quét các số trên 4 LED 7 đoạn (Trang 80)
Hình 4.16. Tổ chức bộ nhớ ROM của hệ vi điều khiển - Nghiên cứu, thiết kế hệ điều hành trên bộ vi điều khiển 8 bít
Hình 4.16. Tổ chức bộ nhớ ROM của hệ vi điều khiển (Trang 82)
Hình 4.17. Thay đổi vị trí đặt các chương trình con phục vụ ngắt - Nghiên cứu, thiết kế hệ điều hành trên bộ vi điều khiển 8 bít
Hình 4.17. Thay đổi vị trí đặt các chương trình con phục vụ ngắt (Trang 83)
Hình 4.18. Phân bổ bộ nhớ ROM - Nghiên cứu, thiết kế hệ điều hành trên bộ vi điều khiển 8 bít
Hình 4.18. Phân bổ bộ nhớ ROM (Trang 84)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w