Thông báo

Collapse
No announcement yet.

hỏi về ucLINUX?

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

  • hỏi về ucLINUX?

    Xin được hỏi ucLINUX có phải là HDH nhúng thời gian thực không?
    tôi có thể cài được trên windows hay UBUNTU

  • #2
    uCLinux vốn không phải hệ điều hành nhúng, cũng chẳng phải thời gian thực. Nhúng hay không, thời gian thực hay không phụ thuộc vào người đặt cấu hình cho nó.

    Một hệ điều hành dùng để làm gì ? Tại sao lại phải cài trên một hệ điều hành khác ?
    Phần mềm tự do hoặc không dùng máy tính nữa !.

    Comment


    • #3
      em xin được hỏi bác bqviet nếu vậy uclinux có thể là một DISTRIBUTION giống như ubuntu nhỉ?
      hay nó cũng chỉ kiểu như 1 ứng dụng được cài trên HDH đẻ phục vụ cho 1 mục đích nào đó?
      nói thật là em còn rất mù mờ về mấy cái HDH nên không có cái nhìn rõ ràng.

      Comment


      • #4
        Nó chỉ là một cái nhân (lõi) hệ điều hành, không phải là một bản phân phối đầy đủ. uCLinux chính là lõi Linux, nhưng có một số thành phần được viết lại. Tham khảo tiếp tại đây
        http://www.uclinux.org/
        Phần mềm tự do hoặc không dùng máy tính nữa !.

        Comment


        • #5
          trinh do that cao tham . thnks bac nhieu

          Comment


          • #6
            anh bqviet ơi cho em hỏi distribution nào của linux thích hợp với lập trình nhúng ? tiện thể cho em hỏi anh dùng dis nào ? sorry vì hỏi hơi nhiều

            Comment


            • #7
              Bản phân phối Linux nào cũng có thể dùng phát triển hệ thống nhúng được. Nếu bạn dùng công cụ thương mại, bạn nên dùng bản phân phối Linux được cái hãng sản xuất công cụ đó hỗ trợ. Thông dụng vẫn là RedHat, Debian và (có thể) SUSE, Slackware. Công cụ của cộng đồng thường hỗ trợ thêm Ubuntu và Mandriva.
              Phần mềm tự do hoặc không dùng máy tính nữa !.

              Comment


              • #8
                uCLinux =linux + uClibC (thư viện nhỏ hơn glibc)
                vô impactlinux.com của Rob Landley
                anh ta tạo đầy uclinux cho đủ mọi cpu khác nhau !
                (trạm độc nhất có nhiều linux_cpusex khác nhau )

                Tất cả có thể chạy trên qemu với bất kỳ distro nào !

                Comment


                • #9
                  hỏi về uClinux ?

                  Bác bqviet cho em hỏi một chút. Tình hình là em đang sử dụng một board Blackfin BF537-Stamp để ngâm cứu uClinux, vấn đề là các source code của uClinux-dist mà em down trên trang http://blackfin.uclinux.org lúc biên dịch lại và nạp vào mạch thì không có phiên bản nào chạy được (kể cả lúc biên dịch ở chế độ default). Quá trình biên dịch em làm chính xác như hướng dẫn trên trang hướng dẫn http://docs.blackfin.uclinux.org rồi mà vẫn không được mặc dù em đã thử đặt lại các lựa chọn biên dịch khác nhau, nếu lựa chọn là mặc định thì biên dịch được nhưng lúc chạy bị treo lúc gần khởi động xong, còn nếu để khác chế độ mặc định thì lúc biên dịch báo lỗi tùm lum. Điều khiến em băn khoăn là nếu sử dụng các file Image hoặc file FLAT đã biên dịch sẵn (bản 2008 trở về trước) nạp vào thì lại chạy ngon lành, còn phiên bản 2009 trở về sau thì nạp vào cũng không chạy được (cả U-boot cũng thế). Bác có nhiều kinh nghiệm về vấn đề này nên nhờ bác hướng dẫn cho em một chút, chẳng hạn như những lựa chọn nào là cần thiết và lựa chọn nào thì không cần thiết? gõ lệnh "make xconfig" là nó hiện ra cả một rừng lựa chọn mà giải thích lại hết sức sơ lược, em lại mới bắt đầu tập tọe nên em cũng không chắc là lựa chọn đúng hay không :-(
                  Ngoài ra, trong quá trình tìm hiểu lại có một số điều chưa hiểu được, nhờ bác giải thích hộ em với:

                  1. Giả sử lúc mình nạp file ảnh của uClinux vào tại địa chỉ 0x1000000 thì khi chạy nó hiện ra như sau:
                  ## Booting kernel from Legacy Image at 1000000 ...
                  Image Name: uClinux Kernel Image
                  Created: 2005-09-30 3:03:16 UTC
                  Image Type: Blackfin Linux Kernel Image (gzip compressed)
                  Data Size: 1429678 Bytes = 1.4 MB
                  Load Address: 00001000
                  Entry Point: 00042000
                  Verifying Checksum ... OK
                  Uncompressing Kernel Image ... OK
                  Bác giải thích hộ em tại sao cả hai địa chỉ 0x1000000 và 0x1000 đều thuộc vùng RAM mà chương trình lại không bắt đầu tại địa chỉ 0x1000000 ? Thứ hai là địa chỉ "Entry point" 0x42000 ở đây có ý nghĩa gì? Chương trình sẽ có gì khác biệt nếu ta để Entry Point là 0x1000 ?

                  2. Nếu muốn chạy một chương trình ứng dụng, theo hướng dẫn thì sau khi build ứng dụng xong thì copy vào thư mục "romfs" của uClinux-dist rồi build lại, rồi lại nạp lại. Tại sao lại phải thế? Nếu em tìm cách copy file ứng dụng đã biên dịch ấy vào một thư mục nào đó trong uClinux đang chạy trên board thì có chạy được không? (như kiểu mình chạy ứng dụng trong Windows ý)

                  Hì, tìm hiểu linux embedded này mới biết cũng không ngon ăn lắm, nhưng dù sao cũng phải cố gắng. Rất mong được bác chỉ bảo thêm. Cảm ơn bác

                  Comment


                  • #10
                    Nguyên văn bởi sau Xem bài viết
                    Bác bqviet cho em hỏi một chút. Tình hình là em đang sử dụng một board Blackfin BF537-Stamp để ngâm cứu uClinux, vấn đề là các source code của uClinux-dist mà em down trên trang http://blackfin.uclinux.org lúc biên dịch lại và nạp vào mạch thì không có phiên bản nào chạy được (kể cả lúc biên dịch ở chế độ default). Quá trình biên dịch em làm chính xác như hướng dẫn trên trang hướng dẫn http://docs.blackfin.uclinux.org rồi mà vẫn không được mặc dù em đã thử đặt lại các lựa chọn biên dịch khác nhau, nếu lựa chọn là mặc định thì biên dịch được nhưng lúc chạy bị treo lúc gần khởi động xong, còn nếu để khác chế độ mặc định thì lúc biên dịch báo lỗi tùm lum. Điều khiến em băn khoăn là nếu sử dụng các file Image hoặc file FLAT đã biên dịch sẵn (bản 2008 trở về trước) nạp vào thì lại chạy ngon lành, còn phiên bản 2009 trở về sau thì nạp vào cũng không chạy được (cả U-boot cũng thế). Bác có nhiều kinh nghiệm về vấn đề này nên nhờ bác hướng dẫn cho em một chút, chẳng hạn như những lựa chọn nào là cần thiết và lựa chọn nào thì không cần thiết? gõ lệnh "make xconfig" là nó hiện ra cả một rừng lựa chọn mà giải thích lại hết sức sơ lược, em lại mới bắt đầu tập tọe nên em cũng không chắc là lựa chọn đúng hay không :-(
                    Ngoài ra, trong quá trình tìm hiểu lại có một số điều chưa hiểu được, nhờ bác giải thích hộ em với:

                    1. Giả sử lúc mình nạp file ảnh của uClinux vào tại địa chỉ 0x1000000 thì khi chạy nó hiện ra như sau:
                    Bác giải thích hộ em tại sao cả hai địa chỉ 0x1000000 và 0x1000 đều thuộc vùng RAM mà chương trình lại không bắt đầu tại địa chỉ 0x1000000 ? Thứ hai là địa chỉ "Entry point" 0x42000 ở đây có ý nghĩa gì? Chương trình sẽ có gì khác biệt nếu ta để Entry Point là 0x1000 ?

                    2. Nếu muốn chạy một chương trình ứng dụng, theo hướng dẫn thì sau khi build ứng dụng xong thì copy vào thư mục "romfs" của uClinux-dist rồi build lại, rồi lại nạp lại. Tại sao lại phải thế? Nếu em tìm cách copy file ứng dụng đã biên dịch ấy vào một thư mục nào đó trong uClinux đang chạy trên board thì có chạy được không? (như kiểu mình chạy ứng dụng trong Windows ý)

                    Hì, tìm hiểu linux embedded này mới biết cũng không ngon ăn lắm, nhưng dù sao cũng phải cố gắng. Rất mong được bác chỉ bảo thêm. Cảm ơn bác

                    Hi,

                    Xem qua log, có thể phỏng đoán lỗi của bạn có thể thuộc những trường hợp sau:

                    1> Khai báo tham số bootargs chưa đúng, UART chỉ hiệu lực lúc còn chạy trong u-boot, khi nhảy qua kernel nó không biết console là gì (không truyền qua UART).

                    2> Không đồng nhất mã máy, MACHINE_ID là mã nhận dạng và yêu cầu phải đồng nhất từ u-boot đến kernel.

                    3> RAM hệ thống bị lỗi.

                    > Booting kernel from Legacy Image at 1000000
                    > Load Address: 00001000
                    > Entry Point: 00042000

                    Những khái niệm này thuộc về u-boot, đây là các tham số cần thiết để lệnh bootm có thể tiến hành boot hệ thống. Quá trình boot sẽ diễn ra nhu sau:

                    + Ban đầu chép ảnh uImage vào địa chỉ 0x1000000 (có thể thông qua tftp, nand flash, norflash, mmc...)
                    + Verify crc32 và checksum.
                    + Gải nén ảnh tại địa chỉ 0x1000000 và lưu vào địa chỉ 0x00001000, nếu kích thước file sau khi giải nén + 0x00001000 vượt quá giá trị 0x1000000 thì coi như tiêu.

                    + Chép tham số bootargs đến vùng scratchpad memory (nơi kernel sẽ tham chiếu đến để lấy thông số khi boot).

                    + Cuối cùng thực hiện lệnh nhảy đến địa chỉ 0x00042000 (entry point) thực hiện khởi động Linux.

                    Chính vì thế, khi load ảnh lên SDRAM thì nên để lùi về sau 1 chút (lớn hơn 0x1000000, bởi mỗi khi compile thêm driver cho kernel, kích thước sau khi giải nén nó phình to ra, ngăn ngừa hiện tượng overlap memory.

                    Comment


                    • #11
                      uClinux trên FPGA

                      Các bạn xem thử luồng này nhé:
                      http://www.dientuvietnam.net/forums/...394#post269394

                      Chúc vui!
                      All in one. Sài Gòn + Đồng Nai.

                      Comment

                      Về tác giả

                      Collapse

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

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

                      Collapse

                      Đang tải...
                      X