Nhật kí cài đặt RTAI Comedi Scilab trên Ubuntu 8.10

January 2, 2009

Đây là dạng nhật kí, ghi lại quá trình cài đặt, sử dụng RTAI, Comedi Lib, Scilab,… trên Ubuntu 8.10. Xin lắng nghe mọi ý kiến đóng góp.

02/01/2009

Có dự định nghiên cứu về hệ điều hành RealTime và ứng dụng của thư viện quản lý phần cứng Comedi, nhưng cứ mất thời gian vào làm cái Davinci project nên bây giờ mới triển khai được.

RTAI là gì ?

Homepage: https://www.rtai.org/

This is the homepage of RTAI – the RealTime Application Interface for Linux – which lets you write applications with strict timing constraints for your favourite operating system. Like Linux itself this software is a community effort. If you are interested in what it does just join our mailing list and help our team!

RTAI supports several architectures:

  • x86 (with and without FPU and TSC)
  • x86_64
  • PowerPC
  • ARM (StrongARM; ARM7: clps711x-family, Cirrus Logic EP7xxx, CS89712, PXA25x)

The RTAI distribution includes RTAI-Lab, a tool chain to convert block diagrams into RTAI executables and to monitor their operation on various targets.

Nói đơn giản, Linux kernel lúc mới chào đời hoàn toàn không hướng đến tính Real Time, theo quá trình phát triển đòi hỏi nhu cầu Real Time thì các bản vá cho kernel này ra đời, RTAI là một thể, free rất được ưa chuộng. Các biến thể khác sẽ không được bàn ở đây, có thể trong bài viết khác.

RTAI là bản vá của nhân (kernel), bản thân nó là hệ điều hành nhỏ, nhưng không chạy độc lập mà được cài đặt trên một hệ điều hành Linux mẹ. Cụ thể ở đây là Ubuntu.

Mục đích của quá trình học

Ý định thực thi một vài demo dựa trên Tutorial này (Title:RTAI-Lab tutorial: Scilab, Comedi, and real-time control  ). [Tar archive with files]

Tài liệu viết bằng Latex rất chuẩn.

Cài đặt

Các bản distributions như Debian, Fedora, Ubuntu, Mandriva, .. đều thích hợp. Tuy nhiên, tác giả chỉ mới có kinh nghiệm với Ubuntu nên khi dùng với Fedora hơi vất vả, cái này nghiên cứu sau.

Quá trình cài đặt trên Ubuntu có thể diễn ra theo sự hướng dẫn trong tutorial trên hoặc theo hướng dẫn RTAI-UbuntuGutsy-Matlab Tuy nhiên sẽ gặp những trục trặc, những lỗi linh tinh :d.

1. Cài đặt hết tất cả các gói phát triển được list sau đây (từ file text trên)

 cvs
 subversion            --> libapr1 libaprutil1 libpq5 libsvn1
 build-essential       --> dpkg-dev g++ g++-4.1 libc6-dev libstdc++6-4.1-dev linux-libc-dev patch
 automake              --> autoconf autotools-dev m4
 checkinstall
MesaLib:
 x11proto-xext-dev     --> libxau-dev x11proto-core-dev x11proto-input-dev
 xlibs-static-dev      --> libfontenc-dev libfreetype6-dev libx11-dev libxdmcp-dev libxfont-dev x11proto-fonts-dev x11proto-kb-dev xtrans-dev zlib1g-dev
 libxext-dev
 libxt-dev             --> libice-dev libsm-dev
EFLTK:
 gettext
Linux Kernel:
 libncurses5-dev
 fakeroot
 kernel-package        --> intltool-debian po-debconf
Comedilib
 swig
 python-dev            --> python2.5-dev
 libtool
Comedi Calibrate:
 libboost-program-options-dev  --> libboost-dev libboost-program-options1.34.1
 libgsl0-dev
RTAI
 libxmu-dev            --> libxmu-headers
 libxi-dev

Nếu cái gói bên trái không có trong Synaptics thì nhìn sang bên phải, cài đặt hết các gói đó là được.

2. Cài đặt Mesa library

Thằng này được dùng để cài đặt thư viện EFLTK. Bọn này k có bản đóng gói mà chỉ có mã nguồn.

Cái này download MesaLib-7.2 từ http://www.mesa3d.org, dịch theo hướng dẫn là ok.

3. Cài đặt EFLTK library

Thằng này được dùng cho xrtailib (thằng này là gì ? Giải thích lúc dùng, ngại thì search google hoặc trong site rtai.org).

Thực hiện tất cả theo hướng dẫn. Khi dịch đến đoạn ./emake sẽ gặp lỗi liên quan đến hàm copy_row, tìm cả ngày lung tung cuối cùng vào site của nó thấy bản patch này. Thế là dịch ngon rồi.

Update 01/02/2009
Update cái patch lên cho dễ dùng nào:
03/01/2009(4AM)

--- efltk.orig/src/core/fl_stretch.cpp	2007-11-16 13:17:52.000000000 +0000
+++ efltk.new/src/core/fl_stretch.cpp	2008-12-11 21:20:56.000000000 +0000
@@ -36,7 +36,7 @@
     (defined(i386) && defined(__GNUC__))) && !DISABLE_ASM
 # define USE_ASM_STRETCH
 #endif
-
+#undef USE_ASM_STRETCH
 #ifdef USE_ASM_STRETCH
 
 #if defined(_WIN32) || defined(i386)
--- efltk.orig/tools/ecalc/Main.h	2007-11-16 13:17:53.000000000 +0000
+++ efltk.new/tools/ecalc/Main.h	2008-12-11 21:20:31.000000000 +0000
@@ -4,5 +4,5 @@
 #define Main_h
 #include
 #include "SciCalc.h"
-int main(int ac,char *av);
+int main(int ac,char **av);
 #endif
--- efltk.orig/tools/ecalc/Main.cpp	2007-11-16 13:17:53.000000000 +0000
+++ efltk.new/tools/ecalc/Main.cpp	2008-12-11 21:20:25.000000000 +0000
@@ -2,7 +2,7 @@
 
 #include "Main.h"
 
-int main(int ac,char *av) {
+int main(int ac,char **av) {
   SciCalc *calc = new SciCalc();
   	calc->run();
   	delete calc;

Làm theo cái hướng dẫn của tutorial trên và guide hướng dẫn cài đặt trên Ubuntu trên không ổn, đến bước dịch kernel thì gặp nhiều vấn đề. Nghĩ là mình config không đúng, nên thử đi thử lại. Cuối cùng cố gắng đi tìm tài liệu liên quan đến cài đặt trên Ubuntu.

Search Google với từ khóa: install rtai ubuntu

Tìm được các tài liệu quí giá sau, đem về ngâm cứu tiếp, hi vọng sẽ dịch thành công. Mấy cái hướng dẫn này là áp dụng với Ubuntu 8.04, có lẽ là không khác nhiều so với áp dụng trên Ubuntu 8.10

How to install RTAI in UBUNTU/KUBUNTU

How-to Install RTAI in Ubuntu Hardy

Installing RTAI and Comedi on Ubuntu Hardy – Will Dickson’s Wiki

03/01/2009 (10PM)

Làm theo hướng dẫn How-to Install RTAI in Ubuntu Hardy , đến bước cài đặt file .deb thì gặp mấy lỗi, vẫn chưa sửa được. Có lẽ xảy ra trên Ubuntu 8.10. Cách hay là cài thằng 8.04 riêng hẳn và chỉ dùng cho RTAI thôi.

run-parts: executing /etc/kernel/postinst.d/dkms
run-parts: executing /etc/kernel/postinst.d/nvidia-common
run-parts: /etc/kernel/postinst.d/nvidia-common exited with return code 20
Failed to process /etc/kernel/postinst.d at /var/lib/dpkg/info/linux-image-2.6.24.7-rtai-3.6.2.postinst line 1181.
dpkg: error processing linux-image-2.6.24.7-rtai-3.6.2 (–install):
subprocess post-installation script returned error exit status 2
Errors were encountered while processing:
linux-image-2.6.24.7-rtai-3.6.2

Search trên Google thấy có nhiều thằng cũng gặp vấn đề này, mà chưa có patch cho nó. Nên quyết định cài lại, và thực hiện trên Ubuntu 8.04.

30/01/2009

Hôm nay đúng sinh nhật người yêu, làm việc thành công luôn về việc cấu hình RTAI và cài đặt trên Ubuntu 8.04.

Hôm qua, lấy cái Desktop Dell Pentium 4 3.0G cũ của Lab, cài đặt thằng Ubuntu 8.04 lên và làm theo hướng dẫn How-to Install RTAI in Ubuntu Hardy thì thành công.

Thực hiện với:

  • RTAI 3.6 CV
  • Linux kernel 2.6.24-7

Không thể thohẳn trong Tutorial, ở bước thứ 6 RTAI Configuration and Installation thì tham số Linux Source Tree trỏ vào cái source cũ, chứ không phải header.

Thế là ngọt ngào rồi đó.

04/02/2009

Dịch cái Comedi 0.7.76 bản CVS: Current Comedi CVS snapshot

Nếu không config gì thì khi dịch sẽ báo lỗi nhiều, do đó sau khi tìm hiểu thì patch như sau: Mở file comedi_rt_timer.c trong thư mục /usr/local/src/comedi/comedi/drivers tìm đoạn sau:

112
113
114
115
116
#if RTAI_VERSION_CODE < RTAI_MANGLE_VERSION(3,3,0)
#define comedi_rt_task_context_t	int
#else
#define comedi_rt_task_context_t	long
#endif

thay bằng dòng lệnh sau:

#define comedi_rt_task_context_t	long

Sau khi add và config cái board PCI 6220 và gõ lệnh sau, nó ra cái này:

$ sudo tail -f /var/log/messages
 
Feb  4 11:24:02 biorobotic-lab kernel: [45083.455301] RTAI[tasklets]: loaded.
 
Feb  4 11:24:21 biorobotic-lab kernel: [45102.833445] comedi: version 0.7.76 - http://www.comedi.org
 
Feb  4 11:24:21 biorobotic-lab kernel: [45102.833482] rt_pend_tq: RT bottom half scheduler initialized OK
 
Feb  4 11:28:02 biorobotic-lab kernel: [45323.450672] Available NI device IDs: 0x70b0
 
Feb  4 11:28:02 biorobotic-lab kernel: [45323.457877] comedi0: ni_pcimio: pci-6220MITE:0xdfafe000 mapped to f8d2c000 DAQ:0xdfaff000 mapped to f8d2e000
 
Feb  4 11:28:02 biorobotic-lab kernel: [45323.457937] mite: version = 1, type = 4, mite mode = 1, interface mode = 3
 
Feb  4 11:28:02 biorobotic-lab kernel: [45323.457939] mite: num channels = 8, write post fifo depth = 1, wins = 0, iowins = 2
 
Feb  4 11:28:02 biorobotic-lab kernel: [45323.457947] mite: fifo size is 64.
 
Feb  4 11:28:02 biorobotic-lab kernel: [45323.478646]  ( irq = 17 )
 
Feb  4 11:52:48 biorobotic-lab -- MARK --

Chúc các bạn thành công.

Các bài viết liên quan:

  1. RTAI – Beginner’s Guide Tài liệu nói một chút về khái niệm Real-Time và giới thiệu về cách viết Module cho Kernel, … các module RTAI. Mình chuyển ra file .pdf từ tài liệu này Chúc các bạn thành công. 17/04/2009: Update lại file....
  2. Phần mềm xem định dạng CHM tốt nhất trên Ubuntu CHM là gì? “. Chm” là một trong những định dạng làm cho người dùng Linux rất đau đầu, đặc biệt là những người mới dùng Ubuntu, vì vậy chúng ta hãy tìm người xem hữu ích tốt nhất CHM cho Ubuntu / Linux. Tôi có một số ebook tuyệt vời, nhưng trong định dạng CHM, [...]...
  3. Demo sử dụng RTAI, ComediLib kết hợp với Matlab/Simulink/RTW Sau khi tốn một thời gian config linh tinh với Ubuntu 8.04 cuối cùng cài đặt xong RTAI và ComediLib nhân diện được xong cái PCI6220 của NI. Đến phần cài cái trình để biên dịch mô hình thành mã C thì thằng Scilab/Scicos chạy tốn quá nhiều CPU, move 1 cái mô hình là [...]...
  4. Cài đặt và cấu hình TFTPD trên Ubuntu TFTP là gì? TFTP là viết tắt của Trivial File Transfer Protocol, một giao thức truyền tải file, với chức năng rất cơ bản của FTP, được định nghĩa đầu tiên vào năm 1980. Dựa vào thiết kế đơn giản của nó, TFTP có thể được triển khai trên các bộ nhớ dung lượng nhỏ [...]...
  5. Unikey trên Ubuntu 8.10 Chào các bạn. Gõ tiếng Việt trên thằng Ubuntu luôn là đề tài nóng hổi khi mà nâng cấp lên phiên bản mới, mình đã đọc nhiều bài viết trên các diễn đàn và ác ý kiến của nhiều người có kinh nghiệm về Linux và đi tới quyết định lựa chọn x-unikey thay vì [...]...
  6. Cho Red Hat Enterprise Linux Server vào trong menu boot Chào các bạn. Nay mới phải download bản Red Hat Enterprise Linux Server để làm dự án và máy mò cách để cho tất cả các thằng sống cùng nhau vì cài Ubuntu trước mà. Đầu tiên tất nhiên là dùng đĩa Ubuntu khôi phục lại grub của Ubuntu vì mình khoái boot bằng thằng [...]...

Leave a Comment

CommentLuv Enabled

Previous post:

Next post: