FBM218
FBM218嵌入式linux系统
采用开源的linux系统,并通过编译选项裁减不需要的功能模块,得到大小为500K左右的内核模块。用busybox取代shell,在系统中加入glibc.o等库构建一个4M的Linux运行系统。关于嵌入式Linux系统的构建文献【1】有详细的介绍和指导。
3.2. linux下的io编程
仪器卡的驱动程序采用端口读写来实现。Linux下对端口的操作方法在usr/include/asm/io.h中。由于端口读写函数是一些inline宏,所以在编写端口读写程序时只需要加入:#include<asm/io.h> 不需要包含任何附加的库文件。另外由于gcc编译器的一个限制,在编写包含端口读写代码的程序时,要么打开编译器优化选项(使用gcc −O1 或更高选项),要么在#include <asm/io.h>之前加上:#define extern static
在读写端口之前,必须首先通过ioperm()函数取得对该端口读写的权限。该函数的使用如下:
ioperm(from, num, turn_on)
如果turn_on=1,则表示要获取从from开始的共num个端口的读写权限。如ioperm(0300, 5, 1)就表示获取从端口0300到0304共5个端口的读写权。最后一个参数turn_on表示是否获取读写权(turn_on=1表示获取,turn_on=0表示释放)。一般在程序的硬件初始化阶段调用ioperm()函数。
ioperm()函数需要以root身份运行或使用seuid赋予该程序root权限。
端口的读取使用inb(port)和inw(port)函数来完成,其中inb(port)读取8位端口,inw(port) 读取16位端口。
对8位和16位端口的写操作分别用函数outb(value,port)和outw(value,port)来完成。其中各函数的第一个参数表示要写的数值,第二个参数表示端口地址。
宏inb_p(),outb_p(),inw_p()和outw_p()的作用与对应的上述四个端口读写函数一样,只是在端口操作后附加一定时间的延时以保证读写可靠。可以通过在#include<asm/io.h>前加上:#define REALLY_SLOW_IO获得约4微秒的延时。
3.3. 基于TinyX和Gtk+的软面板编程
仪器软面板的设计涉及linux下GUI的选择和编程,考虑到XWindows的成熟性和与桌面系统的一致性,我们选用精简的XWindows系统TinyX作为底层GUI解决方案。使用Gtk+1.2库作为控件集来开发仪器软面板程序。
基于TinyX和Gtk+库的图形界面开发方案使得软面板的开发与桌面环境下基于Gnome的开发比较接近,很多的桌面环境下的linux工具可以直接使用。
Gtk+图形库是GNOME桌面系统的底层基础,它包含比较完整的GUI控件集合(GtkWidgets)。基于面向对象的方法,GTK+用C语言实现了一套对象系统和消息及回调机制,并将整个图形控件集纳于对象框架中,使得控件集的扩充比较方便。
针对虚拟仪器领域的应用需求,可以构建常见的GUI单元的控件集。我们以GtkWidgets的形式开发了示波器,信号源等仪器的面板控件和一些关键的GUI单元控件。这些都有利于用户的二次开发和软件单元的重用。
FBM218
联系人:欧工
手机:18030229050
电话:0592-5709821
传真:0592-5917519
QQ 3151326358
邮箱 3151326358@qq.com
THK BALLSCREW, THK LINEAR BEARING, ACTUATOR, ROUTER
MITSUBISHI DIGITAL TENSION ConTROLLER LD-30FTA
FUJI POD UG420H-TC1 TOUCH PANEL PLC PARTS
MITSUBISHI PLC MELSEC FX2-128MT AUTOMATION PLC PARTS
BANNER MICRO-SCREEN MCF4212X-3,4212R-3,4212XE-1,4212RE-
OMRON SYSMAC CJ1G CPU44H ID231 OD231 CLK21-V1 PLC
HP VME A2636-66013 CPU CARD, 32M MEMORY #3
KOYO DIRECT LOGIC DL 205 H2-WPLC2,H2-SERIO,F2-08AD-2
TOKYO SEIMITS FA0134 LD.IO-1
TOKYO SEIMITSU FA0135C VME MVME
TOKYO SEIMITSU FA0111A CAP SENSER BOARD VME MVME
TOKYO SEIMITSU FA0139B BOARD VME MVME
NSK LS20 LINEAR BEARING / LM GUIDE/ CNC ROUTER/ L700mm
OREGON MICRO SYSTEMS 4AXES PC-39E MOTION CONTROLLER
CLOSE LOOF, 18 USER I/O,
TOKYO ELECTRON LIMITED TEL VME TEB407 HFE
KURODA GROUND BALLSCREW,C1S 16-4,TRAVEL300mm,ROUTER
SIGMA KOKI Precision Rotary Stage/Table
SCHNEEBERGER /LINEAR BEARING /MR25 /CNC ROUTER/ L626mm
ConTROL ROCKETPORT PCI I/O 5002291 PCI UNIV, 32P ROH8
BERGER STEPPING MOTOR DRIVER D 900.50 #2
AB,Allen-Bradely 1784-PCIDS DEVICENET PCI SCANNER CARD
IKO LWL9B / LINEAR BEARING / LM GUIDE/CNC ROUTER/ L99mm
ORIENTAL VEXTA STEPPING DRIVER MOTOR CNC SERVO 5P
KOYO DIRECT LOGIC DL 205 H2-WPLC2,H2-SERIO,D2-32ND3
VME-AXIS REV.001-00 AXIS-H3 SAMSUNG AEROSPACE
TOKYO ELECTRON LIMITED TEL VME TEB107-13/ECS5
KEYENCE BARCODE READER BL-700 SERIES BL-741 SENSOR
STEC INC PAC-EC V2.2A
THK RSR12MX/ LINEAR BEARING /LM GUIDE/CNC ROUTER/L219mm
ORIENTAL MOTOR/LINEAR HEAD SPEED MOTOR/CONTROLER/CNC
PARKER DIGIPLAN UD2/UIC-201 DC DRIVE SYSTEM
THK HSR12 LINEAR BEARING /LM GUIDE /CNC ROUTER / L590mm
RKC REX-F400 TEMPERATURE CONTROLLER' LOT OF 4' TESTED
IKO LWLF42BCS LINEAR BEARING /LM GUIDE /ROUTER/ L1122mm
MOTOROLA MVME,VME 162-510A 68040 CPU BOARD #2