Thông báo

Collapse
No announcement yet.

Lập trình nhúng với Linux như thế nào???

Collapse
This topic is closed.
X
This is a sticky topic.
X
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • #46
    Nguyên văn bởi inspiration Xem bài viết
    Hi pulsar và các bạn khác,

    có thể hướng dẫn mình rõ hơn một chút 2 bước 6 và 7 được không?
    (6) Developing software for target board in host PC
    (7) Porting the developed software to target board


    Hoặc nếu không có thể cho mình tài liệu hướng dẫn được không? Càng chi tiết càng tốt.
    Mình đang muốn porting application xuống targer board IXP2350.

    Thanks all.
    Hì, tớ cũng xong cái hệ thống của tớ rồi:

    Tóm lại nó như thế này:

    cái Dev Tool kit đã có sẵn một cái zImage và ramdisk rồi. Không thì có thể chọn ./configure để xem mình muốn tích hợp cái gì.
    Sau khi có ramdisk và zImage thì port nó vào board (tftpd32)
    Dùng redboot thì dùng Putty connect qua cổng com hoặc hyper terminal để xem các lệnh để khởi động hệ thống. (giả sử zimage và ramdisk đã ở flash thì phải copy nó ra ram để chạy)
    - Sau khi khởi động xong nó thành con linux rồi, chỉnh ip rồi ssh hay telnet vào board.
    - Có ip rồi thì load application bằng lệnh nào cũng được scp chẳng hạn.
    Ứng dụng phải biên dịch cho chạy được trên board. Xem cách nó biên dịch các gói trong dev kit để sửa (nó biên dịch chéo linh tinh chứ ko như biên dịch chạy trên máy tính thường, khác mấy tham số linh linh ở đầu thôi).
    - Phần dev software tớ viết C như bình thường, lúc biên dịch sửa mỗi phần biên dịch đầu thôi, cho nó vào một phần của cái dev kit ấy rồi biên dịch cùng với zimage và ramdisk luôn, cũng có thể thêm vài dòng lệnh để nó copy đi kèm luôn.

    Comment


    • #47
      Hi pulsar,

      Cơ bản là tớ đã port được zImage và Ramdisk (trong CD kèm theo) xuống board IXP2350.
      Sau khi khởi động xong thành con linux, tớ dùng lệnh mount thông qua NFS để mount thư mục root của nó với 1 thư mục trên máy development linux. Qua thư mục đó có thể copy application xuống board được.

      Nhưng vấn đề nằm ở chỗ như cậu nói: "Ứng dụng phải biên dịch cho chạy được trên board." Tớ phát triển ứng dụng bằng Intel IXA SDK Workbench trên môi trường windows, sau khi build cho ra file .uof
      Tớ copy file này xuống target board IXP2350 nhưng không biết làm cách nào cho nó chạy.

      Search trên mạng có cách khác chỉ cho build, run và load xuống target board IXP2400(cùng họ với 2350), nhưng sử dụng Montavista Pro 3.1 có bản quyền. Tớ không có nên dùng crosstool thay thế nhưng build cũng không được, có lẽ do crosstool không phù hợp.

      Tớ cũng nghĩ đến hướng là rebuild lại zImage, Ramdisk, tích hợp application nhưng cũng không biết làm từ đâu.

      Đây là lần đầu tiên đụng đến HDH Linux và cũng là lần đầu tiên làm cái hệ thống nhúng porting linux như vầy nên đụng đâu ... bí đó. Cậu có cao kiến gì không chỉ giáo với...

      Tớ đang thử build cái này nhưng đang po tay.
      http://mmlabwww.csie.nctu.edu.tw/res...sson_01_03.htm

      Comment


      • #48
        cái CD đi kèm nó là linux hay là gì???
        Nó có phần cho mình tự biên dịch Zimage và ramdisk ko? Tớ nghĩ là có, thế thì nếu chương trình viết bằng C thì biên dịch luôn với đĩa đó đi!

        Tớ viết cái của tớ trong linux, biên dịch bằng make file thôi. Biên dịch trên linux Fedora thì viết theo gcc như thường. Còn khi biên dịch cho board thì dùng biên dịch chéo dùng crosstool, thì xem mấy cái đoạn đầu của các phần nó biên dịch trong đĩa cd ấy, viết lại phần đầu như nó! Cái board tớ chạy big endian nên phải biên dịch đúng theo big endian cơ.(cái này mấy cái tham số đầu của biên dịch cho board chắc nó có rồi và ko cần nữa!) Còn cho phép nó chạy với chmod gì đó nếu cần!
        Đĩa CD nó cho cậu thì khả năng sẽ có build lại được zimage đấy. Xem cấu trúc các file của nó, make file của từng application xem sao. vẫn kiểu ./configure để set các tham số config rồi make thôi!
        Cậu có post cái đĩa cd đó lên đâu được ko rồi pm link cho tớ!
        Cái board cậu dùng là chi thế? Board tớ dùng giá cao quá . Hồi xưa cũng định thử cái Montavista nhưng giá đắt quá với lại mua cái dev kit của hãng kèm board luôn cho ổn!

        @ các bác trong diễn đàn: cảm ơn các bác đã giúp đỡ em học được nhiều điều, em đã xóa mù linux và làm quen được tí với embedded linux và cơ bản xong cái em muốn làm!
        Last edited by pulsar; 13-01-2009, 22:06.

        Comment


        • #49
          các bác cho em hỏi có con board nào tốc độ lớn tầm 533 đổ lên, Flash 32, Ram 128 or 256, có khe cắm thêm thẻ nhớ như compact flash không ạ? và bộ dev kit nó free càng tốt! Có phần wireless để nghịch thì còn tốt nữa ạ

          Comment


          • #50
            Cái này chắc là vừa đẹp, hoặc cái này cũng tốt.
            Attached Files
            Phần mềm tự do hoặc không dùng máy tính nữa !.

            Comment


            • #51
              Nguyên văn bởi pulsar Xem bài viết
              cái CD đi kèm nó là linux hay là gì???
              Nó có phần cho mình tự biên dịch Zimage và ramdisk ko? Tớ nghĩ là có, thế thì nếu chương trình viết bằng C thì biên dịch luôn với đĩa đó đi!

              Tớ viết cái của tớ trong linux, biên dịch bằng make file thôi. Biên dịch trên linux Fedora thì viết theo gcc như thường. Còn khi biên dịch cho board thì dùng biên dịch chéo dùng crosstool, thì xem mấy cái đoạn đầu của các phần nó biên dịch trong đĩa cd ấy, viết lại phần đầu như nó! Cái board tớ chạy big endian nên phải biên dịch đúng theo big endian cơ.(cái này mấy cái tham số đầu của biên dịch cho board chắc nó có rồi và ko cần nữa!) Còn cho phép nó chạy với chmod gì đó nếu cần!
              Đĩa CD nó cho cậu thì khả năng sẽ có build lại được zimage đấy. Xem cấu trúc các file của nó, make file của từng application xem sao. vẫn kiểu ./configure để set các tham số config rồi make thôi!
              Cậu có post cái đĩa cd đó lên đâu được ko rồi pm link cho tớ!
              Cái board cậu dùng là chi thế? Board tớ dùng giá cao quá . Hồi xưa cũng định thử cái Montavista nhưng giá đắt quá với lại mua cái dev kit của hãng kèm board luôn cho ổn!

              @ các bác trong diễn đàn: cảm ơn các bác đã giúp đỡ em học được nhiều điều, em đã xóa mù linux và làm quen được tí với embedded linux và cơ bản xong cái em muốn làm!
              Thanks pulsar,
              Tiếc là trong cái CDrelease mà ông khách hàng đưa mình không có phần tự biên dịch zImage và Ramdisk. Nó có kèm theo bộ IXA SDK, Montavista LSP, các phiên bản zImage, Ramdisk đã build rồi. Nhưng trong sách hướng dẫn build zImage và Ramdisk thì chỉ rõ là dùng thêm Montavista Pro 3.1 hoặc Tornado(nếu dùng HDH VxWork). Mà 2 thứ này đều phải mua...Hỏi ông khách hàng đưa thì ổng không mua 2 thứ ấy, ổng nói ổng dùng crosstool thay thế, và ổng cũng đưa cho mình môi trường build. Mình dùng nó, dựa theo sách hướng dẫn chỉnh sửa lại biến môi trường (Montavista --> crosstool) thì build được zImage.
              Rồi tớ cũng dựa theo sách hướng dẫn, định build thử cái chương trình load xuống board
              http://mmlabwww.csie.nctu.edu.tw/res...sson_01_05.htm
              nhưng rồi cái crosstool nó báo lỗi. Tớ chưa biết sửa làm sao.
              Để tớ tìm cái link up cái CDrelease cho cậu xem thử, rồi tớ pm cho cậu. Hiện giờ mạng chỗ tớ chuối lắm.
              Board tớ đang làm cũng là Big endian, nhưng tớ không hiểu nó là gì cả...

              Cái board tớ đang làm là Roadrunner IXP23XX Evaluation Platform Rev 3.0 của hãng ADI, dùng chíp network processor IXP2350 của Intel.
              http://www.adiengineering.com/php-bi...category_id=28

              à, cậu có rành mấy cái lỗi khi build crosstool không? Tớ hỏi cậu được k?

              Cám ơn cậu nhé.

              Comment


              • #52
                Cái này nói về make file để nó copy luôn phần mình đã dịch vào zimage:
                http://www.idav.ucdavis.edu/~atm/tut...stTutorial.htm

                Có gì pm cho tớ cái link. Nếu làm tất cả trên linux được thì tốt nhất!
                Lúc biên dịch bằng crosstool phải chỉ nó là big endian nó mới chạy trên board được vì board là big endian. Google là biết big endian là cái gì thôi!
                Tớ thì ko rành lắm máy cái crosstool . Tớ vẫn gà lắm! Tớ chỉ nghịch sửa sửa đến khi nào nó chạy là ok .
                Last edited by pulsar; 15-01-2009, 10:32.

                Comment


                • #53
                  Nguyên văn bởi pulsar Xem bài viết
                  Cái này nói về make file để nó copy luôn phần mình đã dịch vào zimage:
                  http://www.idav.ucdavis.edu/~atm/tut...stTutorial.htm

                  Có gì pm cho tớ cái link. Nếu làm tất cả trên linux được thì tốt nhất!
                  Lúc biên dịch bằng crosstool phải chỉ nó là big endian nó mới chạy trên board được vì board là big endian. Google là biết big endian là cái gì thôi!
                  Tớ thì ko rành lắm máy cái crosstool . Tớ vẫn gà lắm! Tớ chỉ nghịch sửa sửa đến khi nào nó chạy là ok .
                  ^^ , tớ cũng thuộc loại gà...
                  Cuối tuần tớ kiếm đường truyền ngon, post lên rùi pm cho cậu.
                  Tớ đang tham khảo cái link cậu đưa, thanks nhé.
                  Tớ cũng sẽ nghiên cứu thêm cái big endian.

                  À, khi cậu làm linux, cậu có làm cái gì liên quan đến build resource manager driver không?

                  Tớ đang gặp 2 cái lỗi khi build crosstool sau, nếu cậu gặp rồi thì chỉ tớ, không thì tớ ... mò tiếp thoai.

                  /opt/crosstool/gcc-3.4.1-glibc-2.3.3/armeb-unknown-linux-gnu/lib/gcc/armeb-unknown-linux-gnu/3.4.1/../../../../armeb-unknown-linux-gnu/bin/ld: ERROR: /opt/crosstool/gcc-3.4.1-glibc-2.3.3/armeb-unknown-linux-gnu/lib/gcc/armeb-unknown-linux-gnu/3.4.1/../../../../armeb-unknown-linux-gnu/lib/librt.so uses hardware FP, whereas xscale_be/ixp2400/test_app uses software FP

                  /opt/crosstool/gcc-3.4.5-glibc-2.3.5/arm-xscale-linux-gnu/lib/gcc/arm-xscale-linux-gnu/3.4.5/../../../../arm-xscale-linux-gnu/lib/librt.so: could not read symbols: Invalid operation
                  trong đó librt.so là 1 cái link đến 1 file khác. Tớ k hiểu tại sao crosstook không hiểu...
                  Last edited by inspiration; 16-01-2009, 09:03.

                  Comment


                  • #54
                    Nguyên văn bởi inspiration Xem bài viết
                    ERROR: /opt/crosstool/gcc-3.4.1-glibc-2.3.3/armeb-unknown-linux-gnu/lib/gcc/armeb-unknown-linux-gnu/3.4.1/../../../../armeb-unknown-linux-gnu/lib/librt.so uses hardware FP, whereas xscale_be/ixp2400/test_app uses software FP
                    lỗi đây thi. Cái thằng librt.so được build dùng Hardware floating point còn test_app lại dùng software Floating Point. Xem lại xem cái con xscale kia có cho phép sử dụng hardware floating point ko. Nếu không thì phải build lại dùng software floating point hoặc là viết lại dùng fixed point.

                    Comment


                    • #55
                      Thanks caption_h,
                      Dường như con xscale không hỗ trợ hardware floating point. Từ hôm qua đến giờ định build lại crosstool dùng software floating point, nhưng làm chưa được, vì không biết cách làm. Viết lại dùng fixed point cũng không biết luôn.
                      Mình đang dùng crosstool của Dan Kegel:
                      http://www.kegel.com/crosstool/cross...ool-howto.html

                      build crosstool : demo-armeb.sh
                      gcc-3.4.5-glibc-2.3.6

                      @plusar: cái đĩa tớ chưa được phép post cho cậu xem được, vì security.
                      dù sao cũng cảm ơn cậu nhiều.

                      Comment


                      • #56
                        Fixed point nghĩa là trong phần mềm không dùng số thực để tính toán, chỉ dùng số nguyên. Đại lượng nào là số thực thì scale nó (nhân với 1000000 chẳng hạn) để cho thành số nguyên với sai số chấp nhận được. Kỹ thuật nói nôm na chỉ có thế thôi ạ.
                        Phần mềm tự do hoặc không dùng máy tính nữa !.

                        Comment


                        • #57
                          Vậy nếu mình muốn viết lại dùng fixed point hoặc software floatting point thì phải cần những kiến thức gì? Giúp mình tài liệu tham khảo được k? Mình đang bị zí lắm.
                          Thanks.

                          Comment


                          • #58
                            Nguyên văn bởi inspiration Xem bài viết
                            Vậy nếu mình muốn viết lại dùng fixed point hoặc software floatting point thì phải cần những kiến thức gì? Giúp mình tài liệu tham khảo được k? Mình đang bị zí lắm.
                            Thanks.
                            dùng software floating point thì sẽ chậm hơn kha khá và tốn tài nguyên. Nếu cần hiệu năng cao thì nên dùng fixed point còn để chạy được thì dùng software floating point cũng được.
                            fixed point được gọi là dấu phẩy tĩnh, thực chất nó vẫn gồm 2 phần là phần nguyên và phần thập phân. Tuy nhiên khác dấu phẩy động, dấu phẩy tĩnh có số bit dành cho phần nguyên và phần thập phân là xác định. Ví dụ một số phẩy tĩnh 32 bit (được dùng trong OpenGL ES) thì có 16 bit cho phần nguyên và 16 bit cho phần thập phân. Khác với dấu phẩy động 32bit theo chuẩn IEEE có 1 bit dấu, 8bit cho phần mũ, 23 bit phần định trị. Khi tính toán với số phẩy tĩnh 32 bit, nếu phần mũ hay phần nguyên lớn hơn 16bit thì sẽ bị cắt bỏ. Khi tính toán để đảm bảo độ chính xác với các số này, người ta cũng ko tính toán trong trường 32bit.
                            Ko nhất thiết phải viết hoàn toàn mới một cái lib. mà có thể down sẵn các lib đã được viết sẵn về dùng (lợi thế của open source). Mình biết 2 lib (open source) có cho phép sử dụng fixed point đó là vincent (một triển khai của OpenGL ES) và một cái là systemC (thư viện để thiết kế phần cứng (có thể cả phần mềm) viết bằng C++). Bạn có thể lấy 2 thư viện này về, lấy hết phần fixed point nó viết ra các file riêng rồi dùng trong ứng dụng của bạn hoặc dựa vào đó viết lib mới.

                            chúc vui.

                            Comment


                            • #59
                              tớ nghĩ sẽ có một số thư viện và cậu cũng cần biên dịch chéo nó chứ không phải dùng cái thư viện .so có sẵn (có thể nó chưa được biên dịch chéo cho board của cậu)
                              Cậu thử dùng cái biên dịch chéo arm-linux tools gì đó xem. Vào trang của snapgear ấy. Nếu cậu search một số cái về IXP425 (cũng Xscale cả )thì nó có nói về cái này!

                              Ok, tớ hiểu vì lý do security.

                              Comment


                              • #60
                                Vậy là phải thay đổi cái crosstool khác. Để thử trên trang snapgear xem.
                                Tạm thời mình bỏ qua cái lỗi đó.
                                Và tớ build ứng dụng trên bằng bộ SDK trên windows.
                                Đang tìm cách load application xuống board. Chẳng có cách nào cả, đang mò.
                                vì mọi hướng dẫn tìm được toàn kêu dùng Montavista Pro, mà tớ lại k có.

                                Comment

                                Về tác giả

                                Collapse

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

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

                                Collapse

                                Đang tải...
                                X