Thông báo

Collapse
No announcement yet.

Phân tích một RTOS kernel trong vi điều khiển

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

  • Phân tích một RTOS kernel trong vi điều khiển

    Chào những người quan tâm đến RTOS.

    Tôi cũng bỏ ra khá nhiều thời gian trước đây cho RTOS, từ những dòng mã chập chững bên ttvnol cho đa nhiệm trong 8051, cho đến các đoạn mã trên EDABOARD. Hiện tại tôi không còn nhiều thời gian cho rtos như trước đây.

    Trong chủ đề này tôi ghi chép lại các phương thức tôi tiếp cận với rtos và đa nhiệm trong uC. Tôi không có tham vọng biến nó thành một đề tài, một sản phẩm hay một ứng dụng. RTOS như thế nào là phụ thuộc vào người sử dụng nó đánh giá nó. Tôi cũng vậy, những gì tôi viết là có thể đúng, sai, đầy đủ hay thừa thiếu.

    Nhưng đó là những hiểu biết của tôi. Tôi sẽ post dần dần lên những cái mà tôi đã viết, đã hiểu. Và tôi hy vọng những người quan tâm viết tiếp bổ sung hay phân tích những nội dung tôi đã trình bày trong tập tài liệu.

    Ban đầu tôi dự định viết với loại uC AVR, và các tên hàm con, các lưu đồ tôi sử dụng là từ các tài liệu Linux kernel. Tuy nhiên đây là một công việc khó, nhất là tạo ra các bài test hệ thống.

    Do vậy tôi nghĩ rằng tốt hơn là chuyển nó thành một nguồn dữ liệu mở. Tất cả những ai quan tâm đều có thể post tiếp vào tập tư liệu này, đừng ngại đúng sai mà hãy đóng góp để tập tài liệu này hữu ích cho một ai đó. Còn những thằng nào ngoác mồm ra cười công việc chúng ta đang làm thì gió vào mồm đau bụng, kệ bố nó.

    Tôi không nghĩ là chúng ta sẽ tạo ra 1 rtos mới, mà đơn giản chỉ là phân tích, tiếp cận với các khái niệm này. Từ đó chúng ta linh hoạt trong việc ứng dụng các rtos đã sẵn có như avrx, rtlinux...


    Vì nó là tập tư liệu mở nên chúng ta cũng thỏa thuận với nhau. Các bạn viết tiếp, hay phân tích, bổ sung thì sử dụng form như tôi, tức là có tên, tài liệu tham khảo, ngày viết. Thông tin bản thân của tôi tại đây:
    http://picvietnam.com/forum/showthread.php?t=362
    Opentdoors- Thành viên của Rock'n'Roll club

  • #2
    RTOS tôi thiết kế ở đây là hướng đến một thiết bị công nghiệp, và trong quá trình công nghiệp. Ban đầu tôi dự định thiết kế với AVR, nhưng cho đến bây giờ tôi vẫn sử dụng PIC, và hiện thời tôi đang dùng 18f458 để thiết kế(nhưng không phải rtos mà chỉ là định thời). PIC có những khiếm khuyết như không cho phép kiểm tra stack, xử lý 16bit khó. Tuy nhiên phù hợp với môi trường nhiễu, nhiệt độ cao, ADC đơn giản và mạnh, AppNotes hỗ trợ đầy đủ.

    Ở đây tôi sử dụng ngôn ngữ C để mô tả, mà ngôn ngữ C trong sử dụng con trỏ rất gần gũi với phần cứng(asm). Nếu ai quan tâm đến rtos cho 8051 thì đọc ở đây www.edaboard.com/ftopic108566.html

    Tôi cũng xin nói là mã tôi viết chỉ mang tính chất mô tả, tượng trưng. Tôi không biết nó có chính xác hay không vì tôi chưa test.
    Opentdoors- Thành viên của Rock'n'Roll club

    Comment


    • #3
      Day la toan bo mot thiet ke cua toi. Moi nguoi cung nen doc qua bai viet nay:
      http://www.dientuvietnam.net/forums/...read.php?t=377
      Opentdoors- Thành viên của Rock'n'Roll club

      Comment


      • #4
        mấy cái pdf mãi vẫn chưa phục hồi lại nhỉ? Người đọc cứ tưởng tớ nói đâu đâu
        Opentdoors- Thành viên của Rock'n'Roll club

        Comment


        • #5
          Hi,
          Tui cũng thấy vấn đề này rất hấp dẫn. Bấy lâu nay, tui chỉ dùng RTOS của Keil C nên cũng chưa hiểu rõ được cơ chế của nó lắm nhất là ở chổ quản lý stack. Hy vọng, theo đuổi topic này tui sẽ hiểu sâu sắc hơn và đóng góp được chút gì đó. Bác Open trùm về phần này, xin bác chia sẻ cho anh em chút ít kinh nghiệm.
          Thân ái.
          Đường đến những ngày vinh quang không còn xa
          Con đường chúng ta... chúng ta đã chọn.

          Comment


          • #6
            Vậy nên chăng bác Hard post cái ví dụ bác đã làm(bác để lại cái sườn cơ bản, những cái ko cần thiết thì bác xóa đi), cho bà con học hỏi với, tốt nhất có kèm lời giải thích. Sau đó những chỗ khó cùng nhau ta giải quyết. Tui cũng biết trong Keil có ví dụ nhưng khi đảo qua diễn đàn, thấy cái hay như vậy mới sướng
            -------------------

            Comment


            • #7
              Hi,
              Post một ví dụ thì cũng được (mà thực ra tui đã post rồi, ở phần điều khiển từ xa) nhưng viết bằng Keil C thì không hiểu rõ ràng bản chất lắm mà chỉ nắm được cách vận dụng thôi. Nếu post mỗi cái sườn thì các bác cũng chỉ hiểu được mối liên hệ các task mà thôi còn làm sao để làm được như thế thì không thấy được.
              Tui đã đọc một số bài viết của bác Open. Tui thấy các bài viết đó rất hay và nếu hiểu được bản chất của vấn đề thì sau này áp dụng cho các họ vi điều khiển khác như PIC, AVR... mới được.
              Chào thân ái và đoàn kết
              Đường đến những ngày vinh quang không còn xa
              Con đường chúng ta... chúng ta đã chọn.

              Comment


              • #8
                Mỗi người có một cách nhìn khác nhau, nhưng kiến thức RTOS của tôi càng ngày càng hoàn thiện dần từ khi tôi chuyển sang lĩnh vực điều khiển tự động và điều khiển tiến trình.

                Đây cũng là yêu thích mà làm thôi, hy vọng sau này có nhiều người đi sâu hơn. Dự định của tôi là xây dựng một RTOS demo và sử dụng các công cụ của GNU. Tranh thủ thời gian rãnh rỗi lại làm.

                Tôi đang viết cho 16f877a, và sau này là cho 18f458. Tôi sẽ post dần lên.
                Opentdoors- Thành viên của Rock'n'Roll club

                Comment


                • #9
                  Hi,
                  Hiện tại tui đang có một dự án: Máy tính cước 8 line. Tui dự định lập trình theo kiến trúc RTOS (có thể gọi như vậy). Nếu các bác đã có kinh nghiệm hay hứng thú với lĩnh vực này thì cùng tui triển khai. Nếu bác nào có cảm hứng chia sẻ kinh nghiệm với tui thì tui sẽ post lên yêu cầu chi tiết của máy tính cước. Chúng ta sẽ phân tích theo hướng RTOS để thực hiện các chức năng của máy tính cước yêu cầu. Những trao đổi ở đây tui sẽ áp dụng vào mạch thực tế và thông báo lại kết quả cho mọi người (tức là học đi đôi với hành mà).
                  Thân ái và đoàn kết.
                  Đường đến những ngày vinh quang không còn xa
                  Con đường chúng ta... chúng ta đã chọn.

                  Comment


                  • #10
                    Hi,
                    Chán quá, không có ai cùng chia sẽ kinh nghiệm, tui đành quay về dùng sở trường của mình là dùng Keil C để lập trình đa nhiệm vậy, rất may là cũng đã xong. Xin mời các bác tiếp tục các bài viết khác, tui thấy đây là một chủ đề rất hay và rất nóng nhưng tại sao lại hẻo quá.

                    Thân ái và đoàn kết.
                    Đường đến những ngày vinh quang không còn xa
                    Con đường chúng ta... chúng ta đã chọn.

                    Comment


                    • #11
                      Nguyên văn bởi Hard
                      Hi,
                      Tui cũng thấy vấn đề này rất hấp dẫn. Bấy lâu nay, tui chỉ dùng RTOS của Keil C nên cũng chưa hiểu rõ được cơ chế của nó lắm nhất là ở chổ quản lý stack. Hy vọng, theo đuổi topic này tui sẽ hiểu sâu sắc hơn và đóng góp được chút gì đó. Bác Open trùm về phần này, xin bác chia sẻ cho anh em chút ít kinh nghiệm.
                      Thân ái.
                      Cho tớ hỏi cậu một câu mà tớ thấy thắc mắc. Cậu bảo Keil C có RTOS, thế cái đặc tính của một RTOS trong Keil C được thể hiện như thế nào. Tớ dùng Keil C chỉ như một công cụ lập trình cho vi điều khiển chứ chưa biết nó dưới chức năng của một hệ điều hành nói chung và hệ điều hành thời gian thực nói riêng.
                      Lai như lưu thuỷ hề, thệ như phong
                      Bất tri hà xứ lai hề, hà sở chung

                      Comment


                      • #12
                        Nó có nhân TinyOS còn full thì hình như phải mua. Cái này khá đơn giản.
                        RTOS ở đây giống là phương pháp lập trình nhiều hơn là một hệ điều hành.
                        Với 32bit Platforms, rtlinux, vxwork, qnx... mới có thể gọi là RTOS hoàn chỉnh.
                        Vẫn biết mỗi lần xa là một lần về lại...

                        Comment


                        • #13
                          Hi,
                          Bác qmk nói rất chính xác, các bác có thể vào Help của Keil C, ở đó có hướng dẫn rất kỹ. Chính vì thế mà tui không muốn dùng thằng Keil C mà muốn dùng hợp ngữ hơn.

                          Thân ái và đoàn kết.
                          Đường đến những ngày vinh quang không còn xa
                          Con đường chúng ta... chúng ta đã chọn.

                          Comment


                          • #14
                            Tớ hỏi tiếp, đặc trưng nhất của một hệ điều hành là có thể cài thêm được các phần mềm. Vậy, tinyOS trong Keil có thể cài thêm các phần mềm được ko? Các phần mềm đó nó do ai phát triển hay các phần mềm đó chỉ là các bản add-on cho Keil thôi?

                            Cái này hay đấy!
                            Lai như lưu thuỷ hề, thệ như phong
                            Bất tri hà xứ lai hề, hà sở chung

                            Comment


                            • #15
                              Hi,
                              Trong Keil C hiện tại, chúng ta chỉ sử dụng được RTXtiny OS. Cái này hỗ trợ tối đa 16 tác vụ (task). Mỗi task được khai báo theo một định dạng nhất định (task thường, task do ngắt). Nếu bác muốn cài thêm phần mềm thì tui không hiểu lắm nhưng bác muốn làm việc gì thì có thể thêm vào một task mới chừng nào đủa 16 task thì thôi. Mà thôi, chúng ta không nên đi sâu vào vấn đề này bởi vì đây là chủ đề thiết kế một kernel RTOS chứ không phải cách dùng kernel của Keil C. Nếu bác muốn tìm hiểu bên Keil C thì bác nên mở một topic khác.
                              Thân ái và đoàn kết.
                              (Bài này đáng lẽ gửi bữa lâu nhưng do mạng của cơ quan chuối quá, bác thông cảm)
                              Đường đến những ngày vinh quang không còn xa
                              Con đường chúng ta... chúng ta đã chọn.

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              Đang tải...
                              X