Thông báo

Collapse
No announcement yet.

Cho người bắt đầu tìm hiểu nhúng

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

  • Cho người bắt đầu tìm hiểu nhúng

    Mình đang tìm hiểu về lập trình nhúng. Cụ thể là trên board ARM của EEES do VietNam design. Mục đích tìm hiểu của mình là biết và làm về lĩnh vực này. Sau thời gian tìm hiểu mình có down được một số tài liệu cho lập trình nhúng với linux...
    Mình có một số thắc mắc như : HDH linux được sử dụng cho nhúng là HDH gì red hat hay fedora ??? và Chương trình viết để nhúng cho ARM KM9260 của ATmel có phải là C? Và một người bắt đầu vào học nhúng thì nên chuẩn bị những gì ?
    Mong được sự giúp đỡ
    Cám ơn

  • #2
    Nguyên văn bởi vankhoakmt Xem bài viết
    Mình đang tìm hiểu về lập trình nhúng. Cụ thể là trên board ARM của EEES do VietNam design. Mục đích tìm hiểu của mình là biết và làm về lĩnh vực này. Sau thời gian tìm hiểu mình có down được một số tài liệu cho lập trình nhúng với linux...
    Mình có một số thắc mắc như : HDH linux được sử dụng cho nhúng là HDH gì red hat hay fedora ??? và Chương trình viết để nhúng cho ARM KM9260 của ATmel có phải là C? Và một người bắt đầu vào học nhúng thì nên chuẩn bị những gì ?
    Mong được sự giúp đỡ
    Cám ơn
    Mình xin trả lời một số thắc mắc của bạn:

    1> Hệ điều hành nhúng cho KM9260 là hệ điều hành Linux.
    2> Linux có nhiều phiên bản khác nhau (gọi là distribution), hiện có thể sử dụng KM9260 với:
    + Debian : Khách hàng mua board sẽ được EEES cung cấp qua đĩa CD kèm theo.
    + Angstrom : EEES cung cấp qua đĩa CD, hoặc bạn có thể tự build online thông qua trang http://www.angstrom-distribution.org/narcissus
    + Buildroot: Bạn có thể download tool của buildroot về và tiến hành build distribution cho riêng mình.

    3> Chương trình nhúng chạy như thế nào:
    + Khi port hệ điều hành xong, Linux giữ vai trò quản lý các tiến trình hoạt động của KM9260, quản lý chương trình ứng dụng của bạn nữa
    + Chương trình ứng dụng của bạn có thể viết bằng C, C++, PHP, Python, Perl... Sau khi bạn coding xong, bạn có thể dùng trình biên dịch (chạy trên Linux) để dịch source của bạn ra file chạy, sau đó bạn có thể chạy thử chương trình trên KM9260 bằng lệnh shell trong Linux.

    4> Người bắt đầu học lập trình nhúng cần phải chuẩn bị gì ? Theo mình nghĩ, sẽ chia ra các giai đoạn sau:

    + Beginer: Bạn sẽ phải tìm hiểu các khái niệm cơ bản của Linux, học các thao tác cơ bản trên Linux, tốt nhất bạn nên làm quen với Linux trên PC trước.

    + Developer: Sau khi bạn có những khái niệm cơ bản về Linux. Bạn sẽ học cách thức build các phần mềm của Linux, build kernel của Linux, build driver... Điều này đòi hỏi bạn phải nắm rõ cách sử dụng các phần mềm, ultilities của GNU.

    + Expert: Bạn đã hiểu rõ nhiều về hệ thống Linux, đây là giai đoạn bạn có thể phát huy ý tưởng và sáng tạo ra sản phẩm riêng cho mình. Ví dụ như để tự tay làm được board Embedded Linux cần phải hội đủ 2 yếu tố:
    - IT : Đó là những phần cần giới thiệu như trên.
    - Hardware : Bạn phải có kiến thức về hệ thống phần cứng, như CPU, external memory controller, boot sequence... Và quan trọng là kỹ năng design PCB cho board của bạn.

    Theo kinh nghiệm của mình thì, để làm quen với embedded Linux, không còn cách nào khác là phải mua board về vọc. Làm những thao tác build kernel, viết driver, viết chương trình ứng dụng. Và điều quan trọng cần phải có kỹ năng search GOOGLE nhất định. Nếu bạn không dùng internet thì không thể nào học được Linux cả. Lúc trước mình cũng vậy thôi, học Linux từ GOOGLE hết cả, vì hiện nay tìm thầy giáo dạy Embedded Linux e rằng rất khó.

    Chúc bạn thành công,

    Comment


    • #3
      Em bổ sung 1 số điểm:
      -Đối với embedded linux thì kho google đôi khi lại gây ra quá tải bởi sự phát triển của nó giờ đã là quá lớn nên khi tìm phải tìm những tài liệu ở dạng chân phương dễ hiểu có tính tổng quát (kernel hiện nay của linux có hơn nghìn file) nên ngoài bắt đầu từ google thì cũng nên bắt đầu từ sách, những quyển sách được viết bởi người có kinh nghiệm hơn chục năm trong lĩnh vực này như:
      -Embedded linux primer
      -Essential Linux Device Driver

      2 quyển này đều của Prentice Hall nên chất lượng đọc có thể nói được đảm bảo.

      Ngoài ra còn có quyển Linux Device Driver 3 Sách này được phân phối bởi tác giả theo bản quyền mã nguồn mở nên bạn có thể tìm và download được bản ebook chất lượng cao.

      Còn 2 quyển của Prentie Hall hiện chỉ kiếm được bản chm

      Sông dài, Thuyền lớn, Biển rộng bao la.
      Tháo neo ngôn ngữ, lèo lái con thuyền kiến thức nhân loại.

      Comment


      • #4
        Cám ơn bài viết của 2 bạn.
        Ban đầu mình sẽ đầu tư cho việc học môi trường linux trước. Các dòng lệnh trong terminal...
        Và mình phải mua 1 board nhúng của EEES để thực hành.

        Comment


        • #5
          Cảm ơn bạn Kame và bạn Quoc Thai.
          Mình cũng đang nghiên cứu về RTOS cho AT91RM9200. Theo các bạn mình dùng Fedora Linux được ko và dùng bản nào là thích hợp.
          Thz alot
          Last edited by hungdtvn0284; 14-01-2010, 14:50.
          Full Name : Nguyễn Việt Hùng
          Mobile : 0976 865 584
          Company :
          Product: Các sản phẩm cảnh báo nhiệt độ, cháy, khói và điều khiển qua Call/SMS.

          Comment


          • #6
            Nguyên văn bởi hungdtvn0284 Xem bài viết
            Cảm ơn bạn Kame và bạn Quoc Thai.
            Mình cũng đang nghiên cứu về RTOS cho AT91RM9200. Theo các bạn mình dùng Fedora Linux được ko và dùng bản nào là thích hợp.
            Thz alot
            Bạn lên trang này : http://fedoraproject.org/wiki/SIGs/Embedded

            Hiện nay Embedded Fedora support cho AVR32, Blackfin.

            Phiên bản cho ARM có trên trang này: http://fedoraproject.org/wiki/Architectures/ARM

            Cái này hỗ trợ cho ARMv5TE bao gồm : XScale, ARM926 and ARM-11,

            Con AT91RM9200 thuộc loại 920T, không biết có thể chạy được hay không, Có gì bạn làm thử.

            Thân,
            Last edited by kamejoko80; 16-01-2010, 14:59.

            Comment


            • #7
              Nguyên văn bởi kamejoko80 Xem bài viết
              Bạn lên trang này : http://fedoraproject.org/wiki/SIGs/Embedded

              Hiện nay Embedded Fedora support cho AVR32, Blackfin.

              Phiên bản cho ARM có trên trang này: http://fedoraproject.org/wiki/Architectures/ARM

              Cái này hỗ trợ cho ARMv5TE bao gồm : XScale, ARM926 and ARM-11,

              Con AT91RM9200 thuộc loại 920T, không biết có thể chạy được hay không, Có gì bạn làm thử.

              Thân,
              Cảm ơn bạn nhìu, mình tiếp tục nghiên cứu và nhờ mọi người chỉ dẫn thêm
              Full Name : Nguyễn Việt Hùng
              Mobile : 0976 865 584
              Company :
              Product: Các sản phẩm cảnh báo nhiệt độ, cháy, khói và điều khiển qua Call/SMS.

              Comment


              • #8
                Nguyên văn bởi kamejoko80 Xem bài viết
                Mình xin trả lời một số thắc mắc của bạn:

                1> Hệ điều hành nhúng cho KM9260 là hệ điều hành Linux.
                2> Linux có nhiều phiên bản khác nhau (gọi là distribution), hiện có thể sử dụng KM9260 với:
                + Debian : Khách hàng mua board sẽ được EEES cung cấp qua đĩa CD kèm theo.
                + Angstrom : EEES cung cấp qua đĩa CD, hoặc bạn có thể tự build online thông qua trang http://www.angstrom-distribution.org/narcissus
                + Buildroot: Bạn có thể download tool của buildroot về và tiến hành build distribution cho riêng mình.

                3> Chương trình nhúng chạy như thế nào:
                + Khi port hệ điều hành xong, Linux giữ vai trò quản lý các tiến trình hoạt động của KM9260, quản lý chương trình ứng dụng của bạn nữa
                + Chương trình ứng dụng của bạn có thể viết bằng C, C++, PHP, Python, Perl... Sau khi bạn coding xong, bạn có thể dùng trình biên dịch (chạy trên Linux) để dịch source của bạn ra file chạy, sau đó bạn có thể chạy thử chương trình trên KM9260 bằng lệnh shell trong Linux.

                4> Người bắt đầu học lập trình nhúng cần phải chuẩn bị gì ? Theo mình nghĩ, sẽ chia ra các giai đoạn sau:

                + Beginer: Bạn sẽ phải tìm hiểu các khái niệm cơ bản của Linux, học các thao tác cơ bản trên Linux, tốt nhất bạn nên làm quen với Linux trên PC trước.

                + Developer: Sau khi bạn có những khái niệm cơ bản về Linux. Bạn sẽ học cách thức build các phần mềm của Linux, build kernel của Linux, build driver... Điều này đòi hỏi bạn phải nắm rõ cách sử dụng các phần mềm, ultilities của GNU.

                + Expert: Bạn đã hiểu rõ nhiều về hệ thống Linux, đây là giai đoạn bạn có thể phát huy ý tưởng và sáng tạo ra sản phẩm riêng cho mình. Ví dụ như để tự tay làm được board Embedded Linux cần phải hội đủ 2 yếu tố:
                - IT : Đó là những phần cần giới thiệu như trên.
                - Hardware : Bạn phải có kiến thức về hệ thống phần cứng, như CPU, external memory controller, boot sequence... Và quan trọng là kỹ năng design PCB cho board của bạn.

                Theo kinh nghiệm của mình thì, để làm quen với embedded Linux, không còn cách nào khác là phải mua board về vọc. Làm những thao tác build kernel, viết driver, viết chương trình ứng dụng. Và điều quan trọng cần phải có kỹ năng search GOOGLE nhất định. Nếu bạn không dùng internet thì không thể nào học được Linux cả. Lúc trước mình cũng vậy thôi, học Linux từ GOOGLE hết cả, vì hiện nay tìm thầy giáo dạy Embedded Linux e rằng rất khó.

                Chúc bạn thành công,
                Theo bạn thì nếu khoảng thời gian 6 tháng nghiên cứu đối với một người chưa biết về Linux và chưa lập trình nhúng, phải tìm hiểu về kernel, lập trình shell,... thì có thể nghiên cứu một board nhúng nào đó không?
                Mình ví dụ là board KM9260 của EEES???
                Xin cho biết ý kiến. Cám ơn

                Comment


                • #9
                  Lập trình nhúng có nhiều mức độ, có thể lập trình đơn giản là các shell thì sẽ như trên linux (sẽ được biên dịch bằng chường trình khác) cái này thì không vấn đề gì.
                  về kernel để tìm hiểu (các modlue, cấu trúc kernel) nữa thì 6 tháng có thể làm được nhưng chỉ biết qua không có ích gì.
                  còn để phát triển kernel cho mục đích của minh nữa thì cả một vấ đề.

                  Comment


                  • #10
                    Tùy vào khả năng của mỗi người mà thời lượng nghiên cứu khác nhau. Sau 6 tháng tập trung ngâm cứu nếu đi theo đúng hướng (không nghiên cứu lang mang) thì có thể làm việc tốt với kernel, driver được rồi. Chương trình ứng dụng cũng thế, có nhiều cấp độ khác nhau.

                    K có lời khuyên rằng, nếu bạn thấy lĩnh vực Linux nhúng là cần thiết thì có thể bắt đầu. Dầu gì mình phải có "tâm" mới thành công được bạn ah.

                    Comment


                    • #11
                      nói như bạn kamejoko80 thì chỉ dành cho những người đã biết qua rồi. còn tự mình tìm tòi từ đầu, không có ai chỉ dẫn thì 6 tháng chắc mới bắt đầu nhìn đựơc định hướng thực hiện thôi.

                      Comment


                      • #12
                        Nguyên văn bởi forum.com Xem bài viết
                        Lập trình nhúng có nhiều mức độ, có thể lập trình đơn giản là các shell thì sẽ như trên linux (sẽ được biên dịch bằng chường trình khác) cái này thì không vấn đề gì.
                        về kernel để tìm hiểu (các modlue, cấu trúc kernel) nữa thì 6 tháng có thể làm được nhưng chỉ biết qua không có ích gì.
                        còn để phát triển kernel cho mục đích của minh nữa thì cả một vấ đề.
                        vậy theo bạn khi mới tham gia tìm hiểu về lập trình nhúng và viết chương trình cho board thì phải tìm hiểu ngôn ngữ gì?
                        Các bạn cứ nói là thời gian là vấn đề nhỏ và quan trọng là đi đúng hướng? Vậy có bạn nào đã có nhiều kinh nghiệm với nhúng trên linux rồi thì xin chỉ giúp các hướng đó như thế nào? Người mới tìm hiểu thì nên đi hướng như thế nào cho đúng?
                        Mình nghĩ nhúng đã quá quen thuộc trên thế giới nhưng VN thì là xa lạ thật, mong các tiền bối có thể giúp đỡ những người sau để chúng ta có thể hiểu nhúng như hiểu về 8051.
                        Một lần nữa xin cám ơn sự giúp đỡ

                        Comment


                        • #13
                          Nhúng giờ nó được sử dụng trong quá nhiều ngành làm mất đi ý nghĩa của nó. làm về 8051 cũng là lập trình nhúng thôi. linux trên hệ thống nhúng cũng giống như trên PC thôi (nó là bản rút gọn tối thiểu phù hợp với từng board riêng). như vậy không cần thiết phải chia ra linux trên PC và board. Như vậy nó sẽ hỗ trợ ngôn ngữ như trên PC (thường chủ yếu dùng C, hoặc java). ở trên mình nói đúng hướng là xác định mình làm cái gì và sẽ tập trung đi sâu vào vấn đề ấy thôi sẽ nhanh hơn. Ban đầu bạn phải xác định được board mình dùng là gì. có hệ linux nào hỗ trợ và cách thức để làm cho board thực hiện công việc mình mong muốn. Rất nhiều loại do đó không ai biết hết được, nên chỉ cần xác định phương thức thực hiện sẽ tốt hơn.

                          Comment


                          • #14
                            http://kamejoko80.wikidot.com/arm

                            Đó là cách mà K đã từng sử dụng để học embedded Linux như thế nào.

                            1> Mua board.
                            2> Tìm hiểu thông tin liên quan và thao tác trên board đó.
                            3> Trong quá trình làm thì ghi chú lại các bước thực hiện, sau này lấy ra coi hoặc chia sẽ cho người khác.

                            Thế thôi. Và quan điểm của K là, bạn học tốt thì tốn ít thời gian, còn không thì tốn nhiều thời gian hơn. Trước sau gì ta cũng đến đích. Điều quan trọng bạn có "tâm" hay không. Nếu chỉ vì làm việc với 8051 dễ quá, dùng tool Keil để biên dịch source dễ quá... trong khi dùng embedded Linux khó quá, gcc là trình biên dịch gì mà khó vậy... Vì 8051 dễ nên tôi chỉ làm với nó thôi, tìm hiểu mấy cái khác rối rắm để làm gì...

                            Người Việt chúng ta có tư chất giỏi, thông minh, nhưng có một hạn chế rất lớn đó là "dám nghĩ dzám làm hay không ?". Nếu chưa thử sức điều gì mà chỉ lo sợ thất bại thì sẽ khó thành công. Nếu bạn có "tâm" thì hãy tự tìm hiểu và làm theo cách của mình đã chọn. K nói thế không có ý gì, nếu có gì sai xin hãy sửa tôi, chỉ mong rằng anh em trên diễn đàn hiểu, cố gắng hết sức nếu có thể, vì điều này rất có lợi cho công việc của chúng ta sau này.

                            Comment


                            • #15
                              Đôi lời bổ sung bài viết khá hay của bạn kamejoko80. Ở diễn đàn nhiều bạn cứ hỏi: bắt đầu học điện tử thì nên học những gì, bắt đầu học nhúng thì học cái gì ... như vậy là chú trọng vào công cụ nhiều hơn.

                              Thiết nghĩ quan trọng nhất là xác định mình muốn làm cái gì. Sau đó mới liệt kê ra các cách thức giải quyết khác nhau. Chọn một cách phù hợp, rồi mới chọn công cụ. Có thể bài toán chỉ cần đơn giản 8051, có thể cần tới bo mạch nhúng chạy hệ điều hành nhúng, có thể cần nguyên cả cái máy tính công nghiệp.

                              Để đo nhiệt độ từ xa rồi truyền về trung tâm, lưu lại, có thể
                              • Thuê 1 ông công nhân, cắm cái nhiệt kế thủy ngân, đọc giá trị rồi la to để ông trực ghi lại bằng bút chì
                              • Kiểu cơ khí : 1 ống chứa chất lỏng dãn nở truyền qua hệ đường ống về trung tâm
                              • Kiểu điện : dùng xen-xin
                              • Kiểu điện tử : rất nhiều cách.
                              Phần mềm tự do hoặc không dùng máy tính nữa !.

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              Đang tải...
                              X