![]()
![]()
![]()
![]()
![]()
![]()
Mình chỉ bày một xíu cho các bạn nào đang cần đọc ghi file ảnh trong matlab thôi. Mình bận wé!
chừng nàothi xong mình sẽ bày tiếp nhá!
==========================================
• Để đọc 1 ảnh, trong cửa sổ Command bạn gõ câu lệnh :
a = imread(‘<tên ảnh>.<đuôi>’); // đọc file ảnh vào biến a.
Trong đó : tên ảnh: là tên của ảnh bạn muốn load.
Đuôi : gốc file ảnh(có thể là .jpg|.png|.gif…)
Chú ý : “;” nếu có đấu “;” thì bạn load ra 1 ảnh thật sự.
Nếu ko có “;” thì trên màn hình command sẽ hiện ra ma trận của ảnh đó.
============================================
• Show 1 ảnh lên màn hình :
imshow(a); // hiển thị ảnh đã được lưu trong biến a.
Ngoài ra còn imwrite,…
trên thực tế mình thấy ko dùng được hàm imshow trong matlab 6.5 có lẽ ko tương thích mình
dùng hàm image( )
============================================
• Các bạn gõ : help<lệnh> nhấn Enter để xem chú thích, cách sử dụng và ý nghĩa các hàm.
• Các bạn muốn tra cứu phần Image Processing trong Matlab thì làm như sau:
Cách 1: làm việc trên thanh công cụ.
Cách 2 : Bạn nhìn xuống gốc bên trái, dưới cùng trong màn hình của Matlab, bạn nhìn thấy biểu
tượng ô vuông logo Matlab. Click chuột vào đó, sẽ hiển thị pulldown Menu. Bạn sẽ nhìn thấy bên
cạnh các icon có phần Help, Demo,Reference… (minh thích làm việc ở đây vì thấy nó bắt mắt).
Bạn Tùy chọn:
Help : giúp đỡ tìm kiếm các hàm, giải thích…
Demo : Phần này khá thú vị. Nó có 1 số CT sẵn. Bạn vào đó, chọn rồi click Demo để xem nó làm
được cái gì… bạn cũng có thể lấy chính source của nó (phần nào mình cần) để them vào CT cuả
mình.
Để phục vụ cho môn XLA thì các bạn nên vào Image Processing.
Mở Demo hay Help ra, ở cửa sổ bên trái, bạn kéo thanh trượt và chọn Image Processing. Chọn gì
bạn thích.
Do mình mới học nên mình cũng bày cho các bạn sơ thôi. Bạn nên tra cứu Help trong Matlab, nó
có đầy đủ VD và hình ảnh minh họa rất bắt mắt.
Về tài liệu, mình sẽ sớm up lên cho các bạn.
Chào thân ái
Xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Công Nghệ Xử L Ảnh:
- BCH CLB Tự Động Hóa nhận thấy đây là một công nghệ rất là hay và cần
thiết. Tuy công nghệ này không phải là mới nhưng CLB chưa có được nó.
- Công nghệ này giúp ích nhiều cho phong trào ROBOCON trường. Ngoài ra
trong tương lai nếu chúng ta muốn có, muốn làm được tự động hóa, chế tạo
robot có thể như Asimo hay sản xuất những Robot công nghiệp điều mà CLB
mong ước thì điều đầu tiên là Bằng mọi giá chúng ta những con người Lạc
Hồng say mê học tập nghiên cứu phải họp sức lại tìm cho ra và lấy bằng được
công nghệ này. Đó chính là quyết tâm của CLB Tự Động Hóa trong thời gian
xắp tới. Kính mong sự giúp đỡ của ban giám hiệu trường Đại Học Lạc Hồng
cùng khoa Cơ điện ủng hộ chủ trương này của BCH CLB Tự Động Hóa.
- Hiện nay trên internet chúng tôi đã tìm ra nơi mua bo mạch cho công nghệ
này. nhưng để điều khiển được nó thì phải tìm nơi học công nghệ này. Nếu bạn
nào biết thì giúp CLB ta nhé.
Về đầu trang
kenaodam
Đã gửi: [20:43:58] 30/07/2008 Thứ Tư
Cấp bậc: Thành viên tích cực
Tham gia: 23/01/2008
Bài gửi: 104
Bạn liên hệ với thầy Huy hoặc thầy Hoàng Anh bên khoa Điện - Điện Tử, 2 thầy đang
nghiên cứu và thử nghiệm công nghệ xử lí ảnh này. Chúc thành công. Về đầu trang
nguyentany
Đã gửi: [22:31:31] 31/07/2008 Thứ Năm
Cấp bậc: Thành viên tích cực
Tham gia: 03/06/2008
Bài gửi: 143
cám ơn bạn nha.hi hi. bạn còn biết gì hơn thì post cho mọi người cùng biết với nha bạn.
Về đầu trang
nguoiditimcongli
Đã gửi: [13:16:12] 02/08/2008 Thứ Bảy
Cấp bậc: Thành viên tích cực
Tham gia: 29/06/2008
Bài gửi: 252
CÁCH MẠNG THẮNG LỢI LÀ CÓ
ĐƯỜNG LỐI ĐÚNG
ĐỂ GIẢI QUYẾT VẤN ĐỀ CẦN CÓ
CÁCH GIẢI QUYẾT ĐÚNG
XỬ LÝ ẢNH CỦNG VẬY
Về đầu trang
BCHCLBTuDongHoa
Đã gửi: [19:43:04] 07/08/2008 Thứ Năm
Cấp bậc: Thành viên tích cực
Tham gia: 29/07/2008
Bài gửi: 294
CLB TỰ ĐỘNG HOÁ ĐANG
NGHIÊN CỨU VỀ CÔNG NGHỆ
XỬ LÝ ẢNH VÀ CLB VỪA MỚI
SƯU TẦM ĐƯỢC 1 TÀI LIỆU RẤT
HAY VỀ CÔNG NGHỆ XỬ LÝ ẢNH
NAY CLB XIN POST LÊN ĐỂ
CHIA SẺ CÙNG TẤT CẢ CÁC
BẠN, NẾU CÁC BẠN CÓ TÀI
LIỆU GÌ HAY VỀ CÔNG NGHỆ
XỬ LÝ ẢNH THÌ HÃY POST LÊN
TIẾP ĐỂ MỌI NGƯỜI CÙNG
NGHIÊN CỨU. TỪ BÂY GIỜ
NHỮNG GÌ LIÊN QUAN ĐẾN
CÔNG NGHỆ XỬ LÝ ẢNH CÁC
BẠN HÃY POST LÊN TẠI
CHUYÊN MỤC NÀY ĐỂ CÁC BÀI
VIẾT ĐƯỢC TẬP TRUNG HƠN
NHA CÁC BẠN.
Giới thiệu về hệ thống
Computer Vision
Đây là chương mở đầu trong luận văn tốt nghiệp của
duy_pham, duy_pham post lên diễn đàn với 2 mục đích. Thứ
nhất là nhờ bà con góp ý dùm về nội dung bài viết, thứ hai
là cũng muốn share với mọi người về hướng phát triển hệ
thống nhúng trên NSLU2 và bài toán thị giác máy Computer
Vision. Có gì mọi người tận tình góp ý nhe.
I. Giới Thiệu Về Thị Giác Máy –
Computer Vision
Thị giác máy là một lĩnh vực đa và đang rất phát triển.
Khái niệm thị giác máy – Computer vision có liên quan tới
nhiều ngành học và hướng nghiên cứu khác nhau. Từ những
năm 1970 khi mà năng lực tính toán của máy tính ngày càng
trở nên mạnh mẽ hơn, các máy tính lúc này có thể xử lý
được những tập dữ liệu lớn như các hình ảnh, các đoạn phim
thì khái niệm và kỹ thuật về thị giác máy ngày càng được
nhắc đến và nghiên cứu nhiều hơn cho tới ngày nay. Hiện tại
lĩnh vực được các chuyên gia đánh giá là vẫn còn “non nớt”
và có rất nhiều sự thay đổi trong thời gian tới.
A. Thế nào là thị giác máy
Thị giác máy bao gồm lý thuyết và các kỹ thuật liên quan
nhằm mục đích tạo ra một hệ thống nhân tạo có thể tiếp
nhận thông tin từ các hình ảnh thu được hoặc các tập dữ liệu
đa chiều. Đối với mỗi con người chúng ta, quá trình nhận
thức thế giới bên ngoài là một điều dễ dàng. Quá trình nhận
thức đó được “học” thông qua quá trình sống của mỗi người.
Tuy nhiên với các vật vô tri vô giác như như các máy tính,
robot v v thì điều đó quả thực là một bước tiến rất gian nan.
Các thiết bị ngày nay không chỉ nhận thông tin ở dạng tín
hiệu đơn lẻ mà nay còn có thể có cái “nhìn” thật với thế giới
bên ngoài. Cái “nhìn” này qua quá trình phân tích, kết hợp
với các mô hình như máy học, mạng nơron v v sẽ giúp cho
thiết bị tiến dần tới một hệ thống nhân tạo có khả năng ra
quyết định linh hoạt và đúng đắn hơn rất nhiều.
Lĩnh vực nghiên cứu của thị giác máy rất rộng, và đặc
điểm chung là các bài toán về thị giác máy tính đều không
có một đề bài chung và cách giải duy nhất. Mỗi giải pháp
giải quyết vấn đều được một kết quả nhất định cho những
trường hợp cụ thể. Ta có thể thấy sự tương quan giữa
Computer vision với các lĩnh
B. Ứng dụng:
Một vài lĩnh vực mà Computer Vision được ứng dụng có
thể kể tới như sau:
- Điều khiển tiến trình (ví dụ: trong các robot công nghiệp,
hay các thiết bị, xe tự hành)
- Phát hiện sự thay đổi (ví dụ: các thiết bị giám sát)
- Tổ chức thông tin (ví dụ: chỉ số kho dữ liệu các ảnh hoặc
chuỗi ảnh liên tục)
- Mô hình hoá đối tượng (ví dụ: quá trình kiểm tra trong môi
trường công nghiệp, xử lý ảnh trong y học)
- Tương tác (đóng vai trò làm đầu vào cho thiết bị trong quá
trình tương tác giữa người và máy)
1. Các thao tác chính của CV
a. Nhận dạng (recognition):
Nhận dạng ảnh là một trong những vấn đề kinh điển trong
lĩnh vực thị giác máy và xử lý ảnh. Mục đích của nhận dạng
ảnh tức là xác định xem liệu một bức ảnh có tồn tại những
đối tượng, đặc điểm đặc biệt hay không. Chức năng này có
thể thực hiện tự động, không cần sự tác động của con
người; tuy nhiên nó không đảm bảo trong các trường hợp
chung, với những đối tượng tuỳ ý và trong tình huống tuỳ ý.
Các phương pháp hiện nay để giải quyết vấn đề này chỉ được
ứng dụng với những đối tượng đặc biệt( những đối tượng
hình học cơ bản, nhận dạng mặt người, nhận dạng chữ in và
chữ viết tay, ) và trong những tình huống đặc biệt (trong
điều kiện chiếu sáng được xác định trước, )
b. Phân tích chuyển động :
Nhận dạng chuyển động được áp dụng để sử lý một chuỗi
các ảnh liên tiếp để ước lượng tốc độ chuyển động của từng
điểm ảnh.
- Egomotion: Xác định chuyển động trong khung cảnh 3D từ
camera. Áp dụng cho các camera theo dõi tự động.
- Tracking: Theo dõi chuyển động của một đối tượng nào đó,
ví dụ như người hay xe cộ
c. Xây d ự ng c ả nh (scene reconstruction)
Đây là chức năng cho phép xây dựng và mô phỏng lại một khung cảnh 3D từ
những bức ảnh hoặc một đọan phim cho trước.
d. Khôi ph ụ c hình ả nh (image restoration)
Lọai bỏ tác động của nhiễu trong ảnh, khôi phục lại hình ảnh ban đầu
2. Hệ thống CV cho bài tóan robot di
chuyển:
Việc áp dụng thị giác máy vào bài toán robot di chuyển
là một việc phức tạp. Tuy nhiên, trong giới hạn của đề tài,
duy_pham giả định ta đã biết trước được điều kiện môi
trường robot chuyển động (màu sàn, các vật cản cố định) và
hình dạng cũng như màu của mục tiêu biệt lập với môi
trường. Sau đây mình xin trình bày từng bước các chức năng
có thể ứng dụng vào bài toán này:
Các chức năng chính trong hầu hết các hệ thống CV:
a. Lấy hình ảnh
Chụp ảnh từ webcam. Chất lượng của ảnh thu được từ bước
này phụ thuộc nhiều vào chất lượng webcam, tốc độ di
chuyển khi chụp, góc nhìn và độ sáng.
b. Tiền xử lí (lấy mẫu, lọc nhiễu, tương
phản, )
Trước khi áp dụng các chức năng của thị giác ảnh, chúng
ta cần xử lý ảnh để đảm bảo rằng ảnh sẽ thoả mãn một vài
giả thiết nào đó. Ví dụ như sau:
Lấy mẫu lại để đảm bảo hệ thống toạ độ là đúng. Nếu 2
ảnh lấy liên tiếp nhau có sự sai khác quá nhiều thì chúng ta
có thể loại bỏ ảnh đó vì tư thế của robot lúc chụp không
được ổn định.
Loại bỏ nhiễu để giảm thiểu khả năng xuất hiện các thông
tin sai
Tăng độ tương phản để đảm bảo sẽ xác định được các
thông tin cần thiết.
c. Phân tích hình ảnh (xác định đường,
góc, cạnh, khối, )
Đặc trưng của ảnh ở những mức phức tạp khác nhau sẽ
được trích rút từ ảnh, như là các đường, cạnh, góc.
d. Nhận dạng, phân mảnh
Tại một vài điểm ảnh chúng ta chọn ra một tập các điểm
ảnh hoặc các vùng ảnh phù hợp với các thao tác xứ lý. Ví
dụ:
Chọn các điểm ảnh có màu trùng với màu của mục tiêu.
Phân ra các vùng ảnh có khả năng chứa mục tiêu.
Phân ngưỡng và định vị các vật cản có thể có
e. Xử lí mức cao
Đến bước này thì dữ liệu đầu vào chỉ là một phần của dữ
liệu ban đầu, đó có thể là tập các điểm ảnh hoặc một vùng
ảnh có khả năng chứa một đối tượng đặc biệt nào đó. Quá
trình xử lý sẽ qua các bước sau:
Thẩm định lại dữ liệu có phù hợp với các yêu cầu cơ bản và
đặc biệt
Ước lượng các tham số đặc biệt
Phân lớp đối tượng xác định được.
II. Single Board Computer(SBC) sử dụng
System on Chip (SoC)
SBC (Single board computer) có sử dụng các SoC là buớc
tiến lớn trong việc xây dựng thiết bị với khả năng tính toán
và xử lý như một máy tính thông thường.Với nhiều ưu điểm
hơn hẳn so với các thiết bị khác như :
Kích cỡ
Giá thành.
Sử dụng các SoC làm bộ xử lý trung tâm có khả năng
chuyên biệt về xử lý hình ảnh hay xử lý trên môi trường
mạng rất hữu hiệu.
Do vậy tuỳ và bài toán đặt ra mà ta có thể chọn các SBC cho
các SoC phù hợp với yêu cầu cụ thể. Hiện nay đa có nhiều
SoC có khả năng tích hợp các DSP Processor vào trong nhân
nhằm tăng khả năng xử lý
Việc sử dụng mạch SBC sẽ có những ưu/ nhược điểm sau:
• Ưu điểm
o Kích thước rất nhỏ
o Giá thành rẻ (~<100$)
o Hỗ trợ SPI, I2C, I2S, MMC, SDCard, UART, USB2.0/1.1
v v
o Có tốc độ xử lý cao
o Sử dụng hệ điều hành Linux
o Được sự hỗ trợ rất lớn của cộng đồng mã nguồn mở. Từ
HĐH, kernel hay rất nhiều các ứng dụng
o Các công cụ biên dịch phổ biến gcc
o Các công cụ hỗ trợ lập trình rất nhiều. Eclipse, Vim, Emacs
v v
• Nhược điểm
o Việc chạy/kiểm thử phải thực hiện giả lập trên máy tính
trước khi đưa vào mạch
o Am hiểu kiến thức về các giao tiếp ngoại vi, kiến trúc về
SBC
Cách tiếp cận nhanh nhất
Theo quan điểm của mình, cách tiếp cận nhanh chóng
nhất với sinh viên đó là tận dụng môi trường mã nguồn mở
hiện nay. Với mã nguồn mở chúng ta có thể sử dụng lại
những thành quả của cộng đồng mã nguồn mở và phát triển,
sáng tạo những cái riêng cho mình một cách dễ dàng và
nhanh chóng nhất.
Chúng ta có thể sử dụng HĐH Linux làm môi trường chính
cho thiết bị, với mã nguồn mở ta có thể chủ động đuợc cấu
hình của hệ thống, tăng hiệu năng hay xử lý thô với các giao
tiếp ngoại vi bên ngoài một cách nhanh chóng và thuận tiện
nhất. Điều đáng quan tâm nữa là ta có thể có được sự trợ
giúp (miễn phí) rất lớn cộng đồng mã nguồn mở. Đây là điều
mà môi trường mã nguồn đóng như Window chưa thể có
được.
Phần cứng (Hardware)
Ta có thể tận dụng lợi thế của các SBC có sử dụng SoC để
làm phần cứng cho các thiết bị trong bài toán thị giác máy.
Lợi thế của sự chọn lựa này là các mạch SBC giá rẻ và rất
linh hoạt giúp cho nguời thiết kế tập trung hơn vào các
module phần mềm.
[align=center]Mạch NSLU2[/align]
Mạch NSLU2 Linksys là một thiết bị lưu trữ mạng (network
storage device) giá thành thấp của hãng Linksys. Chức năng
chính của NSLU2 là 1 file server. Các ổ cứng hoặc USB kết
nối với NSLU2 sẽ được chia sẻ trên mạng nội bộ qua cổng
Ethernet.
Tuy nhiên, bằng việc nạp lại Flash của NSLU2 chúng ta có
thể biến thiết bị trên thành một trạm làm việc hay một máy
vi tính thu nhỏ sử dụng hđh Linux. Cộng đồng Linux phát
triển cho NSLU2 rất rộng rãi và các ứng dụng cực kỳ phong
phú.
Các thông số kỹ thuật
• Hãng sản xuất Linksys
• Kiến trúc ARM
• Sử dụng bộ VĐK SoC, Intel IXP420. Tốc độ 266Mhz
• 32MB Bộ nhớ SDRAM , 8MB Flash
• Hai cổng USB 2.0 Host
• Hai cổng Ethernet
• I2C, JTAG Port
• Giao tiếp UART với tốc độ 900Kb/s
• 16 cổng lập trình được (GPIO)
• Giá 125$
Ứng dụng mạch NSLU2 vào hệ thống xử lý
ảnh cho robot
Mục đích sử dụng thiết bị NSLU2 là tận dụng các thong số kỹ
thuật của mạch để làm bộ xử lý trung tâm cho robot. Một
webcam được kết nối vào cổng usb để thu nhận ảnh. Kết
quả sau khi xử lý sẽ được truyền qua board mạch vi điều
khiển thông qua serial port.
Tiếc rằng có một số hình ảnh về hệ thống duy_pham đã
chụp lại nhưng ko thể up lên vì nhiều và khá nặng. Có dịp sẽ
share với mọi người.
Để giải quyết bài tóan xử lý ảnh bằng NSLU2, ta phải giải
quyết theo trình tự các quá trình sau:
1. Cấu hình NSLU2 thành một platform Linux nhúng, có thể
truy cập thông qua Ethernet với một PC sử dụng Window
hoặc Linux, bằng cách nạp firmware vào Flash của NSLU2.
2. Biên dịch kernel của firmware đang sử dụng, cho phép
truy xuất dữ liệu ảnh từ webcam có hỗ trợ video4linux (v4l).
3. Cài đặt môi trường lập trình GNU C trên hđh Linux nhúng
đang sử dụng, bao gồm các trình biên dịch (gcc, g+
+,python…) và các thư viện chuẩn (glibc, libc6, ncurses…),
thư viện hỗ trợ xử lý ảnh (libjpeg, libpng, openCV…)
4. Xây dựng các thuật tóan lập trình xử lý ảnh và gửi kết
quả xử lý thông qua serial port cho vi điều khiển điều khiển
robot.
5. Lập trình vi điều khiển thực thi các thao tác của robot dựa
trên kết quả xử lý nhận được.
Rùi, hôm nay là tutorial đầu tiên để xây dựng 1 hệ thống xử
lý ảnh bằng NSLU2.
Đầu tiên hãy điểm qua những thiết bị và phần mềm mà
chúng ta cần phải có:
Phần cứng và thiết bị:
. Một PC có cài đặt hđh Linux song song với Window.
. NSLU2 (bạn có thể đặt mua tại công ty phân phối của
Linksys tại TP HCM hoặc qua mạng)
. 1 ổ cứng USB dung lượng tối thiểu 512Mb (recommended),
nhưng nếu chừng 1Gb trở lên sẽ tốt hơn
. 1 webcam có hỗ trợ linux (v4l), tham khảo tại website
controller. Chú
ý dòng chip điều khiển OV5XX, pwc và SPCAX là đã được thử
nghiệm thành công.
. 1 cáp mạng Ethernet nếu bạn dùng switch để kết nối, nếu
không bạn có thể kết nối trực tiếp vào cổng Ethernet của PC,
với điều kiện dùng cáp chéo (crossover cable)
Software: Cài những soft này trên PC của bạn
- Linksys Network Disk Utility download here
- SercommFirmwareUpdater (for Window user)download
here
- or Upslug2 (for Linux user) ie: Ubuntu, đánh dòng lệnh sau
vào command line để install upslug2:
sudo apt-get install upslug2
- WinSCP và Putty download here
Rùi, giờ bắt tay vào vọc NSLU2:
[align=center]
Bài 1: Làm thế nào để upgrade phần cứng mới cho
NSLU2 và xây dựng giao diện command line cho
NSLU2[/align]
B1: Tải phiên bản firmware mà bạn muốn nâng cấp vào PC.
Cộng đồng NSLU2-linux đã phát triển rất nhiều phiên bản
firmware cho nhiều cấp độ người dùng khác nhau.
Duy_pham sẽ tóm tắt 1 chút về các bản phân phối này.
Unslung: Là phiên bản dành cho người mới bắt đầu làm
quen với platform NSLU2. Được xây dựng dựa trên nền của
phiên bản default nên Unslung khá thân thuộc với người mới
sử dụng NSLU2 khi giữ lại giao diện web-interface. Unslung
sử dụng kernel 2.4.22 khá cũ kỹ nên khả năng hỗ trợ phần
cứng của Unslung là khá hạn chế. Các gói phần mềm cho
Unslung bao gồm hơn 1000 soft và thư viện được đóng gói
dưới dạng optware (.ipk)
SlugOS: Phiên bản dành cho người dùng cao cấp và cả
developer. Sử dụng kernel 2.6.21 và phiên bản cập nhật của
glibc, slugos hỗ trợ các công cụ phát triển khá tốt. SlugOS
tương thích với khoảng 5000 gói phần mềm (1000 optware
như Unslung và 4000 OpenEmbedded packages). SlugOS
không có giao diện web nhưng hỗ trợ SSH để giao tiếp với
PC qua Putty.SlugOS có thể chạy trên Flash cũng như trên
thiết bị lưu trữ ngoài (usb). Nếu hệ thống trục trặc trên usb,
flash sẽ là giải pháp backup
Note: Unslung và OpenSlug đều nằm trong dự án
OpenEmbedded do đó chúng ta có thể biên dịch kernel cho
hai firmware trên bằng hai công cụ của OpenEmbedded là
bitbake và monotone. Tham khảo quá trình biên dịch kernel
trên website
Debian/NSLU2: Phiên bản duy nhất được hỗ trợ bởi 1 nhà
phân phối Linux uy tín. Debian/NSLU2 hỗ trợ hơn 10000
packages, với kernel Debian Etch và được cấu hình như đối
với 1 desktop. Vì lý do đó, Debian/NSLU2 cồng kềnh ko thể
chạy trên flash như Unslung và SlugOS, mà yêu cầu phải có
thiết bị lưu trữ ngoài. Support sẵn module cho webcam dùng
pwc và spcaX nên khá thuận tiện. Tuy nhiên, nếu hệ thống
treo, bạn chỉ có 1 cách là reflash lại tự đầu.
website download các phiên bản trên: g-
firmware.net/
riêng Debian/NSLU2, tham khảo hướng dẫn cài đặt tại
website
Hệ thống của Duy_pham dùng Debian/NSLU2, tuy nhiên
theo duy_pham thì chúng ta nên bắt đầu từ Unslung để làm
quen với NSLU2.
B2: Khởi động NSLU2 vào chế độ upgrade mode:
- Bật NSLU2 lên
- Giữ phím reset cho tới khi thấy đèn ready chuyển sang
màu đỏ
- Lập tức thả phím reset (nếu làm đúng thì đèn ready sẽ
nhấp nháy giữa xanh và đỏ, nếu nhấp nháy vàng và đỏ tức
là bạn thả tay ra chậm wé, tắt nguồn và làm lại đi)
- Chạy Sercomm Updater.
- Open file binary của Unslung mà bạn vừa tải xuống xong
và bắt đầu nạp.
Hướng dẫn chi tiết cài đặt Unslung có thể xem tại đây
Chú ý, nếu hướng dẫn nói bạn format ổ đĩa của mình thành
dạng EXT3 bằng web-interface của bản default thì khoan
làm. Vì bản stock firmware của NSLU2 chỉ format những ổ có
dung lượng trên 10Gb. Cứ bỏ qua và tiếp tục đến khi bạn đã
boot được Unslung bằng web-interface thì format sau.
B3: Sau khi làm theo các bước trong cái íntallation guide thì
có lẽ bạn đã có thể telnet vào được unslung rồi. Để telnet
vào NSLU2 bạn cần biết các điều sau:
1. địa chỉ IP của NSLU2 (chạy Disk setupUltility và cấu hình
lại IP của NSLU2 tùy theo bạn dùng DHCP hay fix IP)
2. mở IE hay firefox lên, gõ vào địa chỉ: http://192.168.1.x
là địa chỉ IP của NSLU2
3. nhấn vào tab telnet, chọn enable
4. ở Window, chọn Start->Run, gõ cmd
5. Trong giao diện cmd, gõ telnet <IP>
> Chúc mừng, bạn đã telnet đc với platform NSLU2
Hãy dành thời gian làm quen với các lệnh Linux và cài đặt
trình biên dịch C bằng cách gõ dòng lệnh sau trong
command line của NSLU2:
ipkg update
ipkg install optware-devel
tham khảo chi tiết về cách soạn thảo và lập trình C trên
NSLU2 tại đây
vậy là chúng ta đã cấu hình xong NSLU2 trở thành 1
platform Linux. Để cài đặt các phần mềm chúng ta dùng
lệnh ipkg, và các gói phần mềm có thể đc download tại
website www.nslu2-linux.org hoặc search bằng google với từ
khóa NSLU2 optware.
Bài kế tiếp: Rebuild kernel và chạy module videodev cho
webcam trên Unslung
Bài 2: Rebuild kernel và chạy module
video trên Unslung
1. Nhân Linux (Linux kernel) và việc biên dịch nhân
(rebuild kernel)
Như duy_pham đã có lần viết một bài giới thiệu về Linux
trong box Hệ điều hành, Linux là 1 hđh có tính module rất
cao, cho phép người dùng có thể chỉnh sửa các module,
driver cần thiết tương ứng với thiết bị đang sử dụng. Vì tinh
thần "biên dịch nhân", một yếu tố chính và quan trọng nhất
cần ghi nhận đó là tính phân bộ (modularity) của nhân
Linux.
-Đối với ng dùng bình thường, modularity cho phép chọn lựa
cách biên dịch các drivers của nhân theo dạng modules hay
theo dạng biên dịch trực tiếp vào nhân.
Có những "driver" không thể biên dịch như một module vì nó
phải được load and link trực tiếp ngay khi nhân khởi động .
Cũng có những "driver" cho phép chọn như một module và -
được tải trong khi và sau khi nhân được khởi động. Điểm
chính yếu cần nắm là khi nào nên chọn M (cho module), Y
(cho biên dịch trực tiếp) và N (không dùng) các drivers này.
Biên dịch trực tiếp nghĩa là các driver có dùng hay không
cũng đều được load ngày từ khi hđh khởi động, tất nhiên nó
sẽ chiếm 1 phần memory. Lợi điểm là "tính trung thực" của
nhân và driver. Các hệ thống bảo mật cao thường biên dịch
trực tiếp để tránh các module "lạ" bị cài vào nhân trong quá
trình hoạt động của máy.
Biên dịch module nghĩa là biên dịch các driver như những
module, chỉ khi cần sử dụng mới được tải vào nhân. Lợi điểm
của phương pháp này là hiệu quả sử dụng tài nguyên. Bạn
có thể tạo ra 1 nhân rất nhỏ gọn và thuận tiện trong việc
biên dịch lại 1 số module nào đó (thay vì phải biên dịch lại
toàn bộ nhân).
Các bạn nào muốn biết thêm về biên dịch nhân và cách viết
driver và biên dịch driver cho Linux (cơ bản là cho máy vi
tính nhé) thì tham khảo các tài liệu sau:
Biên dịch nhân linux - Hoàng Ngọc Diệu
Linux device driver - Third Edition - Jonathan Corbet
Hoặc vào website để làm quen với
kernel.
2. NSLU2 và OpenEmbedded:
Dự án Open Embedded (OE) là một dự án phát triển các
công cụ hỗ trợ cho việc phát triển những bản phân phối
Linux cho các hệ thống nhúng. Căn bản mà nói,
OpenEmbedded duy trì và phát triển kho lưu trữ các BitBake
recipes. Các BitBake file này chứa đựng địa chỉ mã nguồn
của các gói (package), những yếu cầu (dependencies) và
thông số biên dịch hay cài đặt một bẻn phân phối.
Bit bake là một hệ thống biên dịch trên nền ngôn ngữ
python được dùng để đọc các file *.bb chứa đừng các thông
số cần thiết để build một phiên bản image cho NSLU2 (Hay
các hệ thống nhúng khác mà chúng ta muốn. ). Bit bake
được duy trì như là một subversion độc lập với các thành
phần khác của OE. Các *bb files được duy trì trong 1 hệ
thống dữ liệu monotone (monotone repository system). Ở
đây chúng ta không cần quan tâm đến montone, trừ khi có
bạn nào có ý định gia nhập nhóm phát triển OE và cập
nhật ,chỉnh sửa, phát triển các *bb files. (Lúc đó nhớ cho
duy_pham biết để gọi 1 tiếng sí phò)
Bây giờ không đi quá sâu vào OE kẻo có người tẩu hỏa nhập
ma, duy_pham sẽ trình bày các bước để xây dựng công cụ
biên dịch kernel cho NSLU2 trên 1 máy tính sử dụng hđh
Linux (cụ thể là cái máy ở nhà duy_pham xài Ubuntu7.04)
1. Dùng apt-get để cài các tool cần thiết của OE
- Gõ những dòng lệnh sau vào command line của Ubuntu
sudo apt-get install build-essential
sudo apt-get install libz-dev diffstat texi2html cvs subversion
texinfo gawk git
sudo apt-get install libboost-date-time-dev libboost-
filesystem-dev libboost-regex-dev libboost-serialization-dev
libboost-test-dev libboost-dev g+
Tham khảo thêm về các phần mềm bắt buộc phải có cho OE
và công dụng của chúng tại đây
2. Setup các công cụ và thư mục download cho OE:
- Tải, dịch và cài đặt montone phiên bản 0.28 từ source. Đây
không phải bản mới nhất nhưng nó là bản được dùng cho dự
án NSLU2 nên cứ dùng nó cho chắc ăn
o Nếu bạn xài bản mới nhất của monotone, bạn sẽ bị tra tấn
trong suốt quá trình convert datbase từ 0.28 lên phiên bản
mới nhất khi build image cho NSLU2. Với cấu hình máy
duy_pham là Dual Core 1.8G, 1GB DDRAM2 quá trình
migration này mất khoảng 6 -> 7 tiếng đồng hồ.
- Thiết lập thư viện download cho OE để lưu trữ các đoạn mã
nguồn (tar balls) và bản vá (patch) mà OE sử dụng.
duy_pham đặt nó trong $HOME/oe_downloads và dẫn đường
dẫn symbol (symbolic link) chỉ tới nó từ NSLU2 và các cây
thư mục OE khác.
- Download các file BXD cho IXP425 về từ website của INTEL
(Dò NSLU2 dùng con IXP42X mà).
o Đăng ký 1 tài khoản ở website Intel
o Tải các bản mà chúng ta cần về từ kho soft của INTEL