Nếu đây là lần đầu tiên đến với Điện Tử Việt Nam, bạn có thể đọc phần Hỏi đáp bằng cách nhấn vào liên kết. Có thể bạn cần đăng kí trước khi có thể gửi bài . Để bắt đầu xem bài viết, chọn diễn đàn bạn muốn thăm dưới đây.
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 ?
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.
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/
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.
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 !
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
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.
Em đang tìm hiểu cách xây dựng chương trình điều khiển động cơ Servo Yaskawa bằng máy tính tuy nhiên khi tìm kiếm trên mạng các hướng dẫn thì thường là điều khiển bằng vi điều khiển hoặc điều khiển bằng PLC hay điều khiển động cơ...
Hai lớp dán mặt trước và mặt sau, gọi là film phân cực. Muốn hiểu rõ về nó thì chịu khó search nhé. Ở đây có rất nhiều chó cứ ngửi thấy phân là sủa nhặng, nên không giải thích nhiều....
Mọi người ơi cho em hỏi cái này ạ, hiện tại em đang làm btl về hiển thị giá trị nhiệt độ trên led 7 thanh sử dụng atmega16, code em chạy trên mô phỏng rất oke nhưng khi lắp qua mạch thực thì bị lỗi ở led đầu tiên bị lỗi như thế này...
Nhờ cả nhà tìm giúp mình thông tin IC này với, thấy ghi 943B W58BAL mà mình tìm mấy ngày nay không được, nó được đóng gói dạng TSSOP 8. Cám ơn cả nhà....
Cảm ơn bạn đã chia sẻ câu chuyện và quá trình phát triển sản phẩm của mình. Trước tiên, thật may mắn khi bạn vượt qua tai nạn và vẫn giữ được niềm đam mê cũng như khả năng sáng tạo trong lĩnh vực kỹ thuật. Việc bạn tiếp tục...
Bạn nên nghiên cứu cái chấn lưu đèn ống Compact fluorescent lamp hay đèn compact trước đã. Nó rẻ đỡ tốn kém.
Sau khi hiểu rõ rồi thì chuyển sang cái mạch này.
Ở cái chấn lưu, tần số của nó linh tinh lắm, tùy điện áp nguồn, tùy...
Comment