Hệ thời gian thực khụng cú hệ điều hành thời gian thực

Một phần của tài liệu Bài giảng Xây dựng các hệ thống nhúng: Phần 2 (Trang 46 - 49)

3. The OS must be fast

3.2.4 Hệ thời gian thực khụng cú hệ điều hành thời gian thực

Phần này bàn tới việc thiết kế và phỏt triển một cỏch xử lớ thời gian thực việc thu thập, sắp xếp cỏc dữ liệu khỏc nhau trong bối cảnh tranh chấp nguồn tài nguyờn hệ thống. Tức là bài toỏn với cỏc hoạt động dữ liệu thời gian thực mà khụng cú sử dụng phần mềm tinh xảo như RTOS để giải quyết. Vớ dụ như điều khiển ụto ngày nay: lấy mẫu dữ liệu từ nhiều nguồn khỏc nhau khi xe chạy, lưu, xử lớ, hiển thi, … Cú nhiều phần mềm mỏy tớnh xử lớ cài trờn ụ tụ, như điều khiển động cơ (engine management unit (EMU)), hệ thống điều khiển sức kộo trong sự liờn quan tới chuyển động của 4 bỏnh xe… EMU tương tỏc với cỏc thành phần qua cổng với tốc độ 19,2 kbaub… hóy tớnh xem loại mỏy tớnh nào cú thể sử dụng trờn ụ tụ, đủ mạnh để thực cỏc tỏc vụ như vậy. Đú là phạm trự phần cứng, một HTN đủ mạnh vậy.

Đ Chọn mụi trường phần mềm (software environment)

Vậy bắt đầu từ đõu với bài toỏn như trờn ? Thụng thường ta thiết kế phần cứng, phỏt triển phần mềm, cài đặt, thử nghiệm, sửa đổi …cài đặt thử chạy …. Tuy nhiờn cú một thực tế là cỏc thành phần phần mềm như hệ điều hành, chương trỡnh dịch thỡ khụng thể thay đổi và cú thể phự hợp với phần cứng. Trong thực tế một quyết định thụng minh là phải cú sự hài hũa tớnh tới cả phần cứng và phần mềm, sau dú phần mềm cú thứ tự ưu tiờn cao nhất. Tại sao ? Cú gỡ quan trọng hơn nếu ta dựng mỏy tớnh để điều và kiểm soỏt một hệ thống thực ? và cõu hỏi tiếp theo: HĐH nào sẽ là phần mềm hệ thống như là ứng viờn ? RTOS nào đú, MSDOS hay Windows CE … ? Cần 1 phần mềm thời gian thực thỏa món cỏc thụng số hạn chút (deadline) đẻ duy trỡ quỏ trỡnh lấy mẫu dữ liệu, thụng qua truy nhập trực tiếp cổng ghộp nối (song song) và phải đơn giản, ổn định. Cỏc kỉ sư ngay lập tức cú vẽ sẽ chọn RTOS, tuy nhiờn RTOS đắt và sẽ sử dụng thể nào để phỏt triển ở HTN đớch. MS DOS cú sẳn và cơ bản là cho phộp truy nhập phần cứng dễ dàng, trong khi MS WINDOWS kềnh càng, khụng thể truy nhập trực tiếp phần cứng và tương đối phức tạp và cản trở việc truy cập làm quỏ tải nguồn tài nguyờn, do vậy khụng hợp, trừ khi được xõy dựng mới (WINDOWS CE). Vậy sự lựa chọn ở đõy là MS DOS cựng với cụng cụ Borland C khụng phớ, là thớch hợp, mặc dự cả hai cú vẽ củ kỉ, nhưng khả năng cũn rất tiềm ẩn. Bộ biờn dịch Borland C cú hệ thư viện hổ trơ truy nhập cấp thấp và phần cứng và khai thỏc cỏc trỡnh chạy ở BIOS. Vậy MS DOS cú thể thay thế cho một RTOS ? Cỏi này tựy thuộc vào sự chuyờn nghiệp cho hệ đớch phỏt triển. Núi vậy để nhắc tới đặc điểm là MS DOS chỉ thực thi một luồng tỏc vụ, cho dự cú thể gọi cỏc thủ tục và phần mềm cú cấu trỳc modular, thỡ vẫn chỉ cú 1 thực thi mà thụi. Nếu phải cần tới đa luồng thực thi thỡ đõy là vấn đề khú ! Nhưng cú một việc là: hóy ‘gúi’ cỏc đa tỏc vụ đú vào một tỏc vụ đơn ! (WINDOWS là đa tỏc vụ, nhưng khụng phải là thời gian thực, nhưng nếu khộo tổ chức cỏc phần mềm chạy phối hợp (co-operate) và chia sẻ thời gian xử lớ với nhau, thỡ cú thể xử lớ thời gian thực được. Tuy nhiờn nếu khụng duy trỡ được kỉ thuật này, hệ thống sẽ bị rối loạn vỡ cỏc tranh chấp khụng thể điều hũa được, vớ dụ như một tỏc vụ độc quyền CPU trong thời gian quỏ dài, khụng đỏp ứng được yờu cầu hạn chút (deadline), cỏc tỏc vụ chỉ cú thể thoỏt bằng hết hạn (time-out) để trỏnh bế tắc hệ thống).

185

Dưới đõt thử bàn về một số giải phỏp để thực hiện thời gian thực húa một hệ khụng thời gian thực.

Đ Chuyển húa hiệu năng thời gian thực sang hệ khụng thời gian thực. Trước hết hóy phõn

loại đặc trưng thời gian thực cần thực hiện và sau đú xỏc định mức độ năng lực xử lớ cần thiết. Nhắc lại là thời gian thực cú nghĩa tỏc vụ phải hoàn thành trong khung thời gian đó định (hàng giõy, hay phỳt). Hầu như vấn đề cú tớnh tới hạn (critical) thường là ở cỏc tỏc vụ thu thập dữ liệu, khung thời gian xử lớ dữ liệu giữa hai lần lấy mẫu và điều này lại phụ thuộc vào tốc độ lấy mẫu. Vậy thời gian tối thiểu cho tỏc vụ này là bao nhiờu. Một tớnh toỏn khỏc là tốc độ của CPU: CPU sẽ thực hiện bao nhiờu lệnh giữa cỏc lần lấy mẫu dữ liệu, mỗi lệnh chi phớ bao nhiờu CPUCLK và qui ra thời gian toàn bộ. Vớ dụ với CPU 80386 chạy ở CPUCLK = 30MHz (TCLK= 33 ns), tốc độ lấy mẫu là 30Hz (ts= 33ms), thỡ giữa 2 lần lấy mẫu sẽ trụi qua 106 TCLK . Nếu 1 lệnh mỏy mất 10 TCLK, CPU cú thể chạy 100.000 lệnh. Cho một tỏc vụ cụ thể nào đú, cú thớch nợp ? Nếu OK, CPU khụng nằm trong vấn đề, và ngược lại tốc độ CPU chưa thỏa món.

Đ Chọn phần cứng. Chọn một phần cứng khụng cú khú khăn. Những bộ vi điều khiển

(microcontroller) khụng phải là lựa chọn do cú định hướng thiết kế, vỡ cỏc chức năng giới hạn, do bộ nhớ nhỏ, tốc độ chậm. Bo mạch mỏy tớnh (based micro-computer board) sẽ là lựa chọn phự hợp vỡ cú bộ nhớ mở rộng, cú thiết bị lưu trữ ngoài đa dạng (đĩa mềm, đĩa cứng, USB) đễ lưu dữ liệu cho cỏc nhu cầu thống kờ, phõn tớch. Cỏc bo mạch này lại rất nhỏ, cấu trỳc modular, dễ bổ sung, vớ dụ loại PC 104 chuẩn cụng nghiệp (như đó giới thiệu ở chương 1). Hơn nữa là khả năng cài đặt cỏc phần mềm.

Đ Lập lịch lấy mẫu dữ liệu. Việc thu thập dữ liệu thường kỡ trong những khoản thời gian cố

định cho cỏc chu kỡ lấy mẫu là thụng thường ở cỏc hệ thống cú định thời. Cú nghĩa là cỏc chu kỡ lấy mẫu phải kiờn định sao cho thời gian lấy dữ liệu khụng bị sai lệch, như vậy dữ liệu sẽ đỳng như hoài vọng (tức dữ liệu đỳng cỏc thời điểm cần lấy). Cú thể cú nhiều kỉ thuật đảm bảo bài toỏn này, vớ dụ: chương trỡnh lấy dữ liệu cho chạy tự do, cũn số liệu thu được sẽ được so sỏnh và hiệu chỉnh với đồng hồ định thời lấy mẫu, hoặc phần mềm hiệu chỉnh thời điểm lấy mẫu chớnh xỏc hơn sau khi làm bước trước đú, tức cú dự đoỏn khi nào sẽ cú số liệu, thỡ chuẩn bị lấy mẫu. Từ đú chu kỡ lấy mẫu sẽ được tớnh sau bao lõu thỡ lấy số liệu và dự đoỏn khi nào nguồn sẽ cú dữ liệu. Tuy nhiờn cỏch này cũng cú một vài vấn đề:

ỹ Chu kỡ lấy mẫu sẽ khụng giống nhau từ một hệ này sang hệ khỏc và phụ thuộc vào tốc độ CPU, điều khiển cổng ghộp nối với nguồn dữ liệu.

ỹ Thời gian lấy mẫu phụ thuộc vào xử lớ mẫu và chu kỡ lấy mẫu sẽ biến động và cú ảnh hưởng tới độ chớnh xỏc mẫu lấy được.

ỹ Khi đề cập tới hiện thị kết quả, đặc biệt là giỏ trị tức thời sẽ cú sự chờnh lệch thời điểm (bị trễ).

ỹ Để khắc phục, việc sử dụng đồng hồ thời gian thực (real-time clock- RTC) trong hệ thống làm điểm qui chiếu là cần thiết, đặc biệt khi lập biểu. Cỏc PC, PC 104 … đều

186

cú đồng hồ này và dựng cỏch gọi hàm sẽ nhận được cỏc giỏ trị biểu diễn ở cấp ms, là rất chớnh xỏc cho cỏc sự kiện thực. Đọc được thời điểm hiện tại, so sỏnh với thời điểm trước đú, xỏc định thời gian đó trụi qua. Nếu thời gian này bộ hơn chu kỡ lấy mẫu, đọc lại, so sỏnh… Nếu thời gian đú bằng với độ dài chu kỡ, lưu thời điểm này lại, chuyển điều khiển tới code lấy mẫu. Chu trỡnh này sẽ được lặp lại trong suốt quỏ trỡnh lấy dữ liệu. Tuy nhiờn giải phỏp này cú thể sẽ cú chờnh lệch thời gian nếu chu kỡ lấy mẫu tớnh bằng ms, RTC trả lại cũng là ms ! Đõy là cõu hỏi dựng cỏi gỡ đo cỏi gỡ ! Núi cỏch khỏc nếu RTC trả lại ns, chắc sẽ tốt hơn. Hay nếu chu kỡ lẫy mẫu tớnh là giõy, vài giõy, thỡ sẽ tốt hơn. Nếu đồng hồ RTC của mỏy tớnh khụng đủ độ phõn giải do đú khụng phải là lựa chọn, thỡ cú giải phỏp khỏc sẽ được sử dụng: Cơ chế ngắt (DOS INT: INT 15 - AH = 86h SYSTEM - WAIT (às) mỏy AT,XT2,XT286,CONV,PS) đưa tỏc vụ vào trạng thỏi “ngủ” (sleeep) hay “đợi” (wait) một thời gian, sau đú đỏnh thức khi thời gian cần đó đạt giỏ trị. Thời gian tớnh sẽ qui vào lệnh, tớnh theo às, cho nờn cú độ chớnh xỏc cao. Chu kỡ thời gian sẽ tớnh cho từng hệ cụ thể. Giải phỏp khỏc là dựng đồng hồ phần cứng độc lập (timer) phỏt sinh ngắt theo chu kỡ để lấy mẫu dữ liệu, ở đõy cần viết code xử lớ ngắt cẩn thận và tối ưu để cú thể kết thỳc sớm trước khi sang ngắt mới, khụng làm quỏ tải CPU cho cỏc tỏc vụ khỏc ! (Ngoài ra DOS cũn cú một ngắt bỏo thời gian hệ thống, xẩy ra 18.2 lần/giõy (18.2 Hz ), cũng là giải phỏp cho cập nhật dữ liệu.

Đ Lấy mẫu dữ liệu. Để lấy dữ liệu, cần lựa chọn kỉ thuật ghộp nối từ cỏc cảm biến vào hệ

thống. Cú vài kỉ thuật cơ bản, đú là dữ liệu được chuyển vào khi cỏc bộ biến đổi đó chuyển từ tương tự sang số. Việc chọn tuyển số liệu vào hệ cú ảnh hương rất lớn tới thời gian lấy dữ liệu toàn phần. Truyền thụng cú thể là nối tiếp (serial line), song song (parallel-bus), sau đú là cỏch kớch hoạt chu trỡnh phần mềm: chu kỡ (polling) theo đồng hồ như trỡnh bày ở trờn hay chủ động qua ngắt mối khi dữ liệu đó sẳn sàng ở đầu ra ADC. Đối với nhận dữ liệu nối tiếp, thường dữ liệu đó cú định dạng kiểu gúi với số byte nhất định, việc nhận cỏc byte liờn tiếp phụ thuộc nhiều vào tốc độ thu/phỏt, cú hay khụng cú đối thoại và khi hệ lấy từ nhiều nguồn (cảm biến) dữ liệu theo kiểu polling, chi phớ thời gian sẽ là vấn đề lớn. Đối với cỏc CPU tốc độ cao, việc này cú thể giải quyết được. Trong khi dựng ngắt, cần code ở mức thấp để nhận biết số hiệu vector ngắt, kớch hoạt chương trinh xử lớ ngắt (ISR). Dựng ngắt cú thể nhận cả khung dữ liệu, nhanh hay chậm là do bờn phỏt dữ liệu. Cỏc UART hiện tại thể chạy tới 115000 kbaud và để thớch ứng cần một FIFO nhận dữ liệu đủ lớn. Việc quản lớ FIFO sao cho khụng bị tràn và hoạt động trụi chảy, đặc biệt với polling khi cần lưu nhiều mẫu dữ liệu từ nhiều nguồn. Khi viết code cho polling, cần debug để trỏnh cỏc sự cố khi khai thỏc FIFO.

Đ Một số lưu ý.

ỹ Sai số tớnh toỏn thời gian do phần mềm thực hiện thụng qua cỏc phộp biến đỗi hệ cơ số (vớ dụ đưa vào số hexa, tớnh toỏn là số nguyờn …), sai số tớch lũy khi làm trũn ở cỏc phộp tớnh số học. cascv chương trỡnh dịch thường dựng cỏc phương phỏp tiệm

187

cận gần đỳng nờn sai số rất đỏng kể. Để trỏnh sai số, cần thực nghiệm cỏc giỏ trị cần cú để nạp cỏc thụng số chuẩn cho cỏc hàm tớnh toỏn thời gian.

ỹ Dữ liệu bị xỏo trộn cũng cú thể xảy ra. Vỡ vậy trước một chu trỡnh lấy mẫu dữ liệu mới, cần làm sạch bộ đệm (FIFO), kớch thước bộ đệm đủ lớn để trỏnh bị tràn dữ liệu, quản lớ con trỏ vào bộ đệm phải thật chớnh xỏc, trỏnh bị đảo lộn thứ tự của dữ liệu. Cỏc thao tỏc xúa, tỏi khởi động phải thực hiện đỳng vị trớ. Khi sử dụng bộ đệm FIFO như cỏc hàng đợi gỏn cho cỏc tỏc vụ riờng biệt, việc truy cập đọc/ghi phải chớnh xỏc ứng với cỏc nguồn cung cấp (sensor+ADC+UART) dữ liệu vào.

Một phần của tài liệu Bài giảng Xây dựng các hệ thống nhúng: Phần 2 (Trang 46 - 49)

Tải bản đầy đủ (PDF)

(196 trang)