Thông báo

Collapse
No announcement yet.

Bài giảng về thời gian thực

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Bài giảng về thời gian thực

    Lâu lâu không quay lại đây, thấy cái box này có vẻ hoang vu và lạnh lẽo quá. Chính vì vậy mà mình quyết đinh cố gắng viết mấy bài về giới thiệu thời gian thực. Bài đầu tiên này giới thiệu về khái niệm thời gian thực. Mình dịch từ tài liệu nươc ngoài mong các bạn cùng hưởng ứng.

    Bài tiếp theo sẽ giới thiệu về Polling Loop và Interrupt, mời các bạn đón đọc.
    Attached Files
    Lai như lưu thuỷ hề, thệ như phong
    Bất tri hà xứ lai hề, hà sở chung

  • #2
    Bài viết của bác thật sự rất có ý nghĩa.
    Mình có thắc mắc thế này, vậy thì "Gọi điện thoại" và "Gửi tin nhắn điện thoại di động" có phải là các ứng dụng RT không vậy?
    Đón đọc các bài viết của bác.

    Comment


    • #3
      Nguyên văn bởi Vo_Duy_Thanh
      Lâu lâu không quay lại đây, thấy cái box này có vẻ hoang vu và lạnh lẽo quá. Chính vì vậy mà mình quyết đinh cố gắng viết mấy bài về giới thiệu thời gian thực. Bài đầu tiên này giới thiệu về khái niệm thời gian thực. Mình dịch từ tài liệu nươc ngoài mong các bạn cùng hưởng ứng.

      Bài tiếp theo sẽ giới thiệu về Polling Loop và Interrupt, mời các bạn đón đọc.
      mình ủng nhiệt tình, 2 tay+2 chân.
      nhưng bạn có thể cho biết sợi dây liên kết giữa HDHTGT với vi xử lý, các ngôn ngữ lập trình (VB,BC++..)... làm sao để có thể xâu chúng lại với nhau. mình đang còn mơ hồ về các vấn đề nay.
      mong bạn sớm gửi các bài tiếp.Bọn mình cũng đang học môn nay( HDHTGT đó), nhưng ko có tài liệu bằng tiếng việt. khó quá.

      Comment


      • #4
        To Zero2one: việc gọi điện thoại và gửi tin nhắn di động theo mình nghĩ cũng là một ứng dụng của thời gian thực. Nhiều khi chúng ta không để ý vì nó xảy ra xung quanh chúng ta và rất đỗi bình thường. Tuy nhiên, cũng nên phân biệt, có loại gọi điện thoại là thời gian thực mềm soft real-time và có loại lại là thời gian thực cứng hard real-time. Loại gọi điện thoại Internet như skype, Yahoo Messenger chỉ là soft real-time. Nó không đòi hỏi một sự gắt gao về thời gian gửi và nhận lời nói. Nếu có chậm một tí thì chỉ làm bạn phải chờ và hơi khó chịu. Tuy nhiên, trong một số trường hợp đặc biệt ví dụ như quân sự chẳng hạn, khi đó, thông tin cần chính xác và kịp thời, lúc đó tầm quan trọng của thời gian thực mới được đặt ở một vị trí tương xứng. Tuy nhiên, theo mình, đường truyền của điện thoại cũng thừa sức để đáp ứng yêu cầu thoại nên thời gian gửi và nhận lời nói cũng không thành vấn đề nữa. Cái này là mình nghĩ vậy, cũng cần phải bàn thêm. Mình cũng là người đang học về thời gian thực nên cũng ko giám chắc chắn lắm.

        To caynamnb: Xét trên thực tế, một cái máy tính một cách nôm na cũng chẳng khác mấy so với cái con 89C51 cùng các ngoại vi mà anh em ta hay dùng. Cũng có vi xử lý, các thiết bị ngoại vi, clock, ngắt, timer.... chỉ có điều máy tính thì xịn hơn và khỏe hơn. Việc lập trình cũng không khác. Với vi điều khiển, chúng ta có keil, dùng C để viết chương trình. Với máy tính, chúng ta có các môi trường làm việc khác nhau như Windows, Linux hay một số hệ điều hành thời gian thực do đó mà bạn có những công cụ và môi trường mạnh hơn cho công việc của bạn... Tựu chung thì do máy tính hiện đại nên ta có thể làm được nhiều việc hơn. Về hệ điều hành thời gian thực, để lập trình, phần lớn dùng C. VB và VC++ là ngôn ngữ dùng trên Window, mà windows thì không phải là một HDHTGT, nếu có ứng dụng thời gian thực trên Windows thì cũng chỉ là giả thời gian thực thôi. Hiện nay mình đang làm việc trên Real-Time Linux. Nếu có cùng sở thích thì chúng ta có thể trao đổi thêm.

        Chúc thành công.
        Lai như lưu thuỷ hề, thệ như phong
        Bất tri hà xứ lai hề, hà sở chung

        Comment


        • #5
          Một hệ thống real-time được hiểu là một hệ thống làm việc với các sự kiện tức thời (real-time). Tuy nhiên, không phải mọi hệ thống đều có thể thực hiện được những quyết định tức thời hay đáp trả lại sự kiện một cách tức thời như chúng ta mong muốn. Khi bắt tay xây dựng các ứng dụng phần mềm chúng ta luôn mong muốn thời gian trễ để đưa ra một lệnh hay một quyết định là nhỏ nhất, hay khi xây dựng các ứng dụng phần cứng chúng ta lại muốn thời gian đưa ra một tín hiệu đáp trả một sự kiện là phải gần như tức thời,... Sự thực không được như vậy vì các hệ thống đáp ứng sự kiện bao giờ cũng có một thời gian trễ nhất định. Khái niệm "hệ thống thời gian thực" ở đây được hiểu ngầm như là một hệ thống đáp ứng sự kiện với một thời gian trễ chấp nhận được.

          Và cũng chính vì thể, có lẽ chúng ta cũng nên tập làm quen với thuật ngữ "cấp độ thời gian thực" của hệ thống. Một hệ thống có cấp độ thời gian thực cao sẽ cho phép thực hiện các tương tác tức thời và gần với thực tế hơn. Những ứng dụng đòi hỏi cấp độ thời gian thực cao như xử lý ảnh, truyền thông, xử lý tín hiệu,... đặc biệt là những ứng dụng này áp dụng trong lĩnh vực quốc phòng và vũ trụ. Bên cạnh đó, một số ứng dụng khác như điện thoại giá rẻ VoIP, nhắn tin qua mạng thông tin di động,... có yêu cầu về cấp độ thời gian thực thấp hơn.


          Comment


          • #6
            Nguyên văn bởi Vo_Duy_Thanh Xem bài viết
            To Zero2one: việc gọi điện thoại và gửi tin nhắn di động theo mình nghĩ cũng là một ứng dụng của thời gian thực. Nhiều khi chúng ta không để ý vì nó xảy ra xung quanh chúng ta và rất đỗi bình thường. Tuy nhiên, cũng nên phân biệt, có loại gọi điện thoại là thời gian thực mềm soft real-time và có loại lại là thời gian thực cứng hard real-time. Loại gọi điện thoại Internet như skype, Yahoo Messenger chỉ là soft real-time. Nó không đòi hỏi một sự gắt gao về thời gian gửi và nhận lời nói. Nếu có chậm một tí thì chỉ làm bạn phải chờ và hơi khó chịu. Tuy nhiên, trong một số trường hợp đặc biệt ví dụ như quân sự chẳng hạn, khi đó, thông tin cần chính xác và kịp thời, lúc đó tầm quan trọng của thời gian thực mới được đặt ở một vị trí tương xứng. Tuy nhiên, theo mình, đường truyền của điện thoại cũng thừa sức để đáp ứng yêu cầu thoại nên thời gian gửi và nhận lời nói cũng không thành vấn đề nữa. Cái này là mình nghĩ vậy, cũng cần phải bàn thêm. Mình cũng là người đang học về thời gian thực nên cũng ko giám chắc chắn lắm.

            To caynamnb: Xét trên thực tế, một cái máy tính một cách nôm na cũng chẳng khác mấy so với cái con 89C51 cùng các ngoại vi mà anh em ta hay dùng. Cũng có vi xử lý, các thiết bị ngoại vi, clock, ngắt, timer.... chỉ có điều máy tính thì xịn hơn và khỏe hơn. Việc lập trình cũng không khác. Với vi điều khiển, chúng ta có keil, dùng C để viết chương trình. Với máy tính, chúng ta có các môi trường làm việc khác nhau như Windows, Linux hay một số hệ điều hành thời gian thực do đó mà bạn có những công cụ và môi trường mạnh hơn cho công việc của bạn... Tựu chung thì do máy tính hiện đại nên ta có thể làm được nhiều việc hơn. Về hệ điều hành thời gian thực, để lập trình, phần lớn dùng C. VB và VC++ là ngôn ngữ dùng trên Window, mà windows thì không phải là một HDHTGT, nếu có ứng dụng thời gian thực trên Windows thì cũng chỉ là giả thời gian thực thôi. Hiện nay mình đang làm việc trên Real-Time Linux. Nếu có cùng sở thích thì chúng ta có thể trao đổi thêm.

            Chúc thành công.
            Mình cũng đang tìm hiểu về real time system, mình thấy hơi khó hiểu về timer. Bạn có thể giải thích giúp mình không?
            Thanks

            Comment


            • #7
              Thầy giáo dạy: Hệ điều hành thời gian thực là hệ điều hành đáp ứng kịp thời, chính xác với các sự kiện xảy ra, và đa nhiệm

              Trong lập trình VXL, dòng 8051 em thường lập trình dựa trên nhân RTOS là RTX51Full,
              AVR em dùng PR_RTX. Các dòng khác đều có nhân riêng của nó.

              Comment


              • #8
                Mình muốn hỏi về timing wheel, bạn nào có ví dụ cụ thể về một chương trình dùng timing wheel ko? Mình đang tìm hiểu về cách tạo timer trong real time system

                Comment


                • #9
                  Mình chưa đọc bài giảng về HĐHTGT, nhưng mình cũng từng tìm hiểu qua, các nhân RTOS cho PIC và cho 8051, nó hoạt động dựa trên ngắt của 1 Timer, và các tác vụ sẽ được làm tương ứng với thời gian định trước, và mình hiểu như sau: sau mỗi tick(10ms chẳng hạn) sẽ có 1 ngắt timer xảy ra, và thi hành chương trình kiểm tra xem tác vụ nào đòi hỏi thực thì sẽ làm tác vụ đó (chẳng hạn 1s bật tắt led 1 lần). Vậy thì chương trình thời gian thực này hoàn toàn bị động,
                  Không biết là mình hiểu như vậy có đúng kô, trong CCS C, khai báo RTOS như sau
                  Code:
                  #use rtos(timer=0, minor_cycle=20ms) // sử dụng timer0, tick mỗi 20ms
                  #task(rate=1s, max=20ms, queue=5) //Thực hiện mỗi 1s, kô quá 20ms, 5 byte giao tiếp
                  void flash() {
                    LED = ~LED;
                  }
                  #task(rate=1500ms, max=20ms, queue=5) //Thực hiện mỗi 1500ms, kô quá 20ms, 5 byte giao tiếp
                  void flash() {
                    LED2 = ~LED2;
                  }
                  while(1) rtos_run();
                  Vậy cái này của CCS C có phải là RTOS kô, nếu phải thì nó "thực" ở chỗ nào, có phải chỉ đơn thuần là làm nhiều tác vụ thôi hay kô???

                  Mình có xem cuốn sách này, họ cũng viết về OS cho 8051 sử dụng uC, ở phần embedded OS
                  http://www.box.net/rssdownload/14315...bedded%20C.pdf
                  Last edited by minhtuan04; 30-05-2008, 13:41.
                  Diễn đàn Vi điều khiển:

                  Comment


                  • #10
                    Mình cũng muốn hỏi là khi một nhiệm vụ nào đó mà không thể thực hiện xong trong 1 thời gian mà mình đã định sẵn thì sao? Rồi khi có thêm các tác vụ khác xen vào?

                    Comment


                    • #11
                      Bài viết của Vo_Duy_Thanh rất là hữu ích. Sao không thấy bác post tiếp nhỉ.

                      Comment


                      • #12
                        Hix có ai giúp em với đang phải làm đồ án về hệ điều hành thời gian thực hiển thị bằng LED và LED 7seg
                        Mấy Bro cho em ý kiến là sử đụng _task_ thời gian thực hay chỉ viết chương trình bình thường? em viết bằng _task_ thì báo lỗi khi tạo file hex vì thư viện cho <rtx51tny.h> bị lỗi em dùng keil C để viết. Hix sắp phải nộp rồi các bro giúp em với. Hay có cách nào để sửa lỗi cái Keil C không?
                        Điện tử Nga Nhung
                        Số 43 ngõ 259 Yên Hòa, Phường Yên Hòa, Cầu Giấy, Hà Nội
                        ĐT 0988441961 hoặc 0979387040

                        Comment


                        • #13
                          xin anh chỉ giáo

                          Nguyên văn bởi minhtuan04 Xem bài viết
                          Mình chưa đọc bài giảng về HĐHTGT, nhưng mình cũng từng tìm hiểu qua, các nhân RTOS cho PIC và cho 8051, nó hoạt động dựa trên ngắt của 1 Timer, và các tác vụ sẽ được làm tương ứng với thời gian định trước, và mình hiểu như sau: sau mỗi tick(10ms chẳng hạn) sẽ có 1 ngắt timer xảy ra, và thi hành chương trình kiểm tra xem tác vụ nào đòi hỏi thực thì sẽ làm tác vụ đó (chẳng hạn 1s bật tắt led 1 lần). Vậy thì chương trình thời gian thực này hoàn toàn bị động,
                          Không biết là mình hiểu như vậy có đúng kô, trong CCS C, khai báo RTOS như sau
                          Code:
                          #use rtos(timer=0, minor_cycle=20ms) // sử dụng timer0, tick mỗi 20ms
                          #task(rate=1s, max=20ms, queue=5) //Thực hiện mỗi 1s, kô quá 20ms, 5 byte giao tiếp
                          void flash() {
                            LED = ~LED;
                          }
                          #task(rate=1500ms, max=20ms, queue=5) //Thực hiện mỗi 1500ms, kô quá 20ms, 5 byte giao tiếp
                          void flash() {
                            LED2 = ~LED2;
                          }
                          while(1) rtos_run();
                          Vậy cái này của CCS C có phải là RTOS kô, nếu phải thì nó "thực" ở chỗ nào, có phải chỉ đơn thuần là làm nhiều tác vụ thôi hay kô???

                          Mình có xem cuốn sách này, họ cũng viết về OS cho 8051 sử dụng uC, ở phần embedded OS
                          http://www.box.net/rssdownload/14315...bedded%20C.pdf
                          anh đã làm tốt rtos cho pic chưa?anh có thế cho em một số ví dụ I/O đơn giản thôi ạh.để làm rtos cho pic có cần lõi gì nữa không ạh?hay ccs đã tích hợp sẵn rồi ah?

                          Comment


                          • #14
                            Mấy huynh cho tiểu đệ hỏi là nếu xử lí ảnh mà thời gian trễ là 3-4 giây thì có thể xem là thời gian thực không ? Tiểu đệ xử lí nhận biết hỏa hoạn.

                            Comment

                            Về tác giả

                            Collapse

                            Vo_Duy_Thanh Tìm hiểu thêm về Vo_Duy_Thanh

                            Bài viết mới nhất

                            Collapse

                            Đang tải...
                            X