资源描述
1 前言
1.1 概述
等离子数控切割机数的核心就是其数控系统,控系统是一个非常典型、复杂的实时控制系统,它能快速处理和响应信息。实时控制系统包括两大部分:受控系统和控制系统。受控系统是由硬件设备组成,如电机及其驱动;控制系统由软件及其支持硬件组成,它们共同完成数控系统的基本功能。
数控系统中的人机交互图形化用户界面(Graphical User Interface , GUI)是研究人、计算机和彼此之间相互影响的技术,最终目的在于使所设计的计算机系统能帮助人们安全、高效地完成任务。人机交互通过图形用户界面显现出来。
目前,主要的GUI设计软件主要有:Microwindows、MiniGUI、GTKFB、QT/E等。
(1) Microwindows Open Source Project成立的宗旨在于针对体积小的装置,建立一套先进的视窗环境,在linux桌面上通过交叉编译可以很容易的制作出micro-windows的程序[1]。
然而,Microwindows的免费版本进展的一直很慢,几乎处于停顿状态,而且至今为止,国内没有任何一家公司对Microwindows提供全面的技术支持、服务和担保。
(2) MiniGUI 是我国做的比较好的自由软件之一,它是在linux控制台上运行的多窗口图形操作系统,可以在以linux为基础的应用平台上提供一个简单可行MiniGUI支持系统[1]。
(3) GTKFB其宗旨就是要为嵌入式系统推出一套基于GTK+的GUI解决方案[1]。GTKFB的最大优点就是它可以使用强大的GTK+库,基于GTK+库的软件极大丰富,适用于PDA等嵌入式设备[1]。
但GTKFB的最大缺点是它只能运行在单处理器系统上,这意味着它无法使用其他处理器来分离、保护系统的不同部分,也难以使用GTKFB来设置大型的系统[1]。
(4) QT/E Qt是Trolltech公司的标志性产品,是一个跨平台的C++图形用户界面(GUI)工具包[1]。Qt/Embedded(简称QtE)是一个专门为嵌入式系统设计图形用户界面的工具包[1]。嵌入式系统地要求是小而快速,而QtE就能帮助开发者为满足这些要求开发强壮地应用程序,QtE是模块化和可裁剪地,开发者可以选取他所需要的一些特性,而裁剪掉所不需要的[1]。这样,通过选择所需要的特性,QtE的映像变得很小,最小只有600K左右。
QtE可以应用在所有主流平台和CPU上。支持所有主流的嵌入式Linux,对于在Linux上的QtE的基本要求只不过是Frame Buffer设备和一个C++编译器。Qt/Embedded延续了Qt在X上的强大功能,在底层摒弃了X lib,仅采用framebuffer作为底层图形接口。同时,将外部输入设备抽象为keyboard和mouse输入事件,底层接口支持键盘、GPM鼠标、触摸屏以及用户自定义的设备等[1]。Qt/Embedded类库完全采用C++封装[1]。丰富的控件资源和较好的可移植性是Qt/Embedded最为优秀的一方面。
1.2 国内外现状
数控系统是数字控制系统简称,英文名称为Numerical Control System,早期是由硬件电路构成的称为硬件数控(Hard NC),19世纪70年代以后,硬件电路元件逐步由专用的计算机代替称为计算机数控系统[2]。计算机数控(Computerized numerical control,简称CNC)系统是用计算机控制加工功能,实现数值控制的系统[2]。
我国作为一个制造业大国,对于制造设备的需求量很大。作为制造业的核心,国产数控虽然有了很大的发展,但仍然无法追赶上世界发展的脚步。
1.3 论文的内容安排
等离子数控切割机是当今先进制造技术的一个重要组成部分,主要用于平面切割非规则图形,理论上只要用AUTOCAD能画出来的图形就能切割。本文设计了一个针对等离子切割机数控系统的图形用户交互界面的软件。并主要介绍了硬件环境的搭建、软件环境的搭建和基于QT/E的编程。论文共分五章,其结构如下:
第一章:前言。简单介绍了几种开发GUI的工具及国内外现状
第二章:硬件开发平台的搭建。主要介绍了为了搭建ARM平台的linux嵌入系统,而作的硬件准备,如s3c2410开发面板、MCX312控制芯片等。
第三章: 软件开发平台的搭建。主要介绍了为了开发用户图形交互界面而作的软件准备,介绍了linux内核的移植,QT编译环境的搭建及环境变量的设置
第四章:基于QT/Embedded的GUI设计与移植。 详细介绍了基于QT/Embedded的GUI的开发步骤,并介绍了交叉编译及程序向目标板上的移植。
第五章: 结论。总结本文工作,并提出来待解决的问题。
2 硬件开发平台的搭建
本次设计采用ARM+MCX312的硬件框架,ARM系列的微处理器由于其高性能、廉价、耗能低和相关技术及软件的支持,使其在广多领域得到了应用,尤其在嵌入式行业、DSP和移动设备等。本次采用S3C2410作为核心处理器,用于各种控制的处理,而是用MCX312作为运动控制芯片,它能同时控制独立两个私服电机的运动控制芯片。以脉冲串的形式输出,能对伺服电机进行位置控制、插补驱动、速度控制等。并以此为基础设计了USB模块、LCD模块、串口模块和其他模块。
USB模块主要作为鼠标和键盘设备的输入接口,还可以作为移动硬盘或U盘的接口用于数据的拷贝。LCD模块主要为显示设备,它显示加工参数的设置、加工过程中各种信息的显示等。串口模块主要用于主机和目标机数据的传送。其他模块主要包括电源模块、复位模块等其他模块。
2.1 处理器模块
本系统采用以三星公司的S3C2410为处理器,同时受环境所限决定采用博创公司UP-NetARM2410的核心板,主要资源有基于ARM920T结构的嵌入式芯片S3C2410的核心板,其主频为203MHZ,64M的SDRAM(由2片HY57V561620组成,每片32MB),64MB的NAND FLASH(三星公司的K9F1208)[4]。
图2.1 UP-NetARM2410的核心板
外围模块主要有电源、复位、RTC时钟等基本系统,双100M自适应AX88796的以太网,4个USB接口,PS/2键盘和鼠标接口,640X480的16bit
的TFT的LCD液晶屏,RS485总线[4]。其整体的硬件结构框图如图2.2
图2.2 系统硬件框图
2.2 USB模块
由于本设计要用到键盘、鼠标等输入设备,并且还需要USB接口作为数据的传送接口,为了设计过程简单化决定设计4个USB接口,其中一个用于键盘接口,一个用于鼠标接口,一个用于文件的拷贝,最后一个备用。其接口控制用芯片为AT43301,接口电路如图2.3所示。
图 2.3 USB接口电路
2.3 LCD模块
显示设备LCD显示器,具有稳定可靠、成本低、功耗小、驱动控制方便等众多优点,在嵌入系统中得到了广泛的应用。
S3C2410内部集成了LCD控制器逻辑单元,其控制器支持单色、四级灰度、256色的调色板显示模式的TFT屏,支持64K和16M色非调色板显示模式,支持分辨率为640*480、320*240及其他多规格的LCD,用来将LCD图像数据从系统内存的视频缓冲区传输到外部的LCD驱动器,同时产生各种时钟和控制信号[4]。图2.4为LCD的内部框图。
图2.4 LCD控制器内部框图
其中LCDCDMA则是LCD控制器的专用DMA通道,负责将视频资料从系统总线上取来,通过VIDPRCS从VD[23:0]传递给LCD屏 [4]。
图2.5 LCD的接口电路图
2.4 串口模块
UART是一种通用的数据总线,用于一步通信。可以实现双工传输和接收,在本系统中用来与PC进行数据交换。
S3c2410内部具有三个独立的UART控制器,并均可工作于中断模式和DMA模式[4]。每个UART均有16字节的FIFO(先入先出寄存器),波特率最高课支持到230.Kbps[4]。
图 2.6 串口电路图
2.5 其他模块
主要包括:电源模块、复位模块、JTAG模块和其它模块等。
2.5.1 电源模块
主要为整个系统供电,主要输出三种电压:①5V为电池电源 ;②3.3V为大部分器件进行供电; ③ 1.8V为内核工作电压
其电路图如2.7所示
图2.7 电源电路图
2.5.2 复位模块
主要用于系统的复位,其电路图如2.8所示。
图2.8 复位电路图
2.5.3 JTAG模块
主要用于程序的烧写,在搭建嵌入式linux时用到,其接口电路图如2.9所示。
图2.9 JTAG电路图
2.6 控制器模块
本设计采用固高公司的MCX312,它能同时控制独立两个私服电机的运动控制芯片。以脉冲串的形式输出,能对伺服电机进行位置控制、插补驱动、速度控制等。
所有MCX312的功能由特殊寄存器控制,有命令寄存器、数据寄存器、状态寄存器和模式寄存器。
2.6.1 功能概述
(1)独立二轴驱动
一个芯片可以分别控制2个马达驱动轴的运动 每个轴都可以进行定速驱动 直线加/减速驱动S曲线加/减速驱动等,2轴的性能。
图2.10 控制简图
(2)定量驱动和连续驱动
定量驱动的意思是以固定速度或加/减速度输出指定数量的脉冲。需要移动到确定的位置或进行确定的动作时使用此功能。定量驱动中可以变更输出脉冲数。一般原点搜寻 扫描操作 控制马达旋转速度时使用此功能。
(3)位置管理
每轴都有2个32位位置计数器,一个是在芯片内部管理驱动脉冲输出的逻辑位置计算器,另一个是管理从外部编码器来的脉冲的实际位置计数器。
(4)插补
可以选择2轴直线插补驱动,插补坐标范围是从当前位置到-8,388,607 ~ +8,388,607之间,在整个指定的直线插补范围内,插补精度是 0.5LSB,插补速度范围是从1PPS 至 4MPPS 。可以选择2轴进行圆弧插补驱动,插补坐标范围是从当前位置到-8,388,608 ~ +8,388,607之间,在整个指定的圆弧曲线插补范围内,插补精度是 0.5LSB,插补速度范围是从1PPS 至 4MPPS。
收到在高位CPU上计算的位模式插补数据后,可以用指定的驱动速度连续输出插补脉冲,用这种方式可以产生任何插补曲线 。直线插补>圆弧插补>直线插补>……这样可以不停地运行每个插补节点的插补驱动,连续插补的最大驱动速度是2MHz 。
(5)中断
可以由这些原因产生中断,如:加/减速驱动的定速开始时、定速完毕时、驱动完毕时、位置计数器和比较器之间的大小关系有变化时、等等。此外,连续插补、位模式插补发生下一个数据请求时的中断 。
2.6.2 MCX312电路图
其控制电路接线图和隔离电路图如2.11所示。
图2.11 MCX312的控制电路图
3 软件平台的搭建
3.1主机软件平台的搭建
主机软件平台的搭建主要是建立Linux系统和QT4编译环境的搭建,限于条件,决定在Windows XP平台上建立虚拟机,在虚拟机中搭建Linux系统。虚拟机的搭建采用VMWare 6.5。linux系统为Red Hat 9.0 中文版,内核为Linux 2.4.2。QT为qt-embedded-linux-opensource-src-4.4.1.tar.gz , qt-x11-opensource-src -4.4.1.tar.gz交叉编译器为博创公司提供的RAM-LINUX-GCC 3.4.1。
3.1.1 虚拟机的安装
关于VMWare安装的教程网上很多,在此不再赘述。先介绍Linux版虚拟机的安装,然后主要介绍一下VMWare Tools的安装,因为我在安装VMWare Tools 时出错最多。
一 Linux版虚拟机的安装
前提条件是VMWare已安装,并且已下载Red Hat9.0中文版的安装镜像文件(可在网上下载,学校的202.194.75.150服务器上也有)或有Red Hat9.0中文版的安装盘。
(1)打开VMWare,点击New Virtual Machine 图标。
图3.1 新建选项
(2)点击图标后会出来一个安装向导,选择Typicl(典型)安装,然后点击Next。再新出来对话框中选择Installer disc_image(iso):选项,并在下拉框中选择Red Hat9.0中文版安装镜像文件的第一个文件,选择完,点Next。
图3.2 镜像目录
(3)选择安装类型为Linux,然后Next。选择安装路径,然后一直Next直到Finish。
(4)点完Finish后,会出现Red Hat9.0的安装界面,选择图形安装方式就可以了。在安装过程需要注意的是在安装类型时要选择指定,然后选择全部安装,因为典型安装缺少OPENSLL文件,在安装QT4时需要此文件。
二 VMWare Tools的安装
VMware Tools是VMware虚拟机中自带的一种增强工具,相当于VirtualBox中的增强功能(Sun VirtualBox Guest Additions),是VMware提供的增强虚拟显卡和硬盘性能、以及同步虚拟机与主机时钟的驱动程序[5]。只有在VMware虚拟机中安装好了VMware Tools,才能实现主机与虚拟机之间的文件共享,同时可支持自由拖拽的功能,鼠标也可在虚拟机与主机之前自由移动(不用再按ctrl+alt),且虚拟机屏幕也可实现全屏化[5]。
(1) CD-ROM虚拟光驱中选择使用ISO镜像,找到VMWARE TOOLS 安件。
(2) OOT身份进入LINUX,进入linux新建一个终端,输入 /sbin/telinit 3 进入纯文本模式,然后在纯文本模式下再次用root身份登陆。
(3) 到windows,在虚拟机菜单栏中点击 虚拟机-> 安装 VMWARE TOOLS 子菜单。会弹出对话框,点击"确认" 安装。
(4) 载光驱 mount /dev/cdrom /mnt/cdrom ,并进入cd /mnt/cdrom ,复制*.tar.gz格式的文件CP vmware-linux-tools /tmp/ /tmp/
(5) /tmp/ 进入tmp目录
(6) ar zxf vmware-linux-tools.tar.gz 解压vmware-linux-tools.tar.gz文件
(7)d vmware-linux-tools 进入cd vmware-linux-tools文件
(8) ./*.pl 运行后缀为.pl的文件
(9) 行安装过程中,它会一步一步的有问题提出要你回应,此过程中,你只要见到问题后面显示[yes]、[no]、[yes/no]的都输入yes,然后回车,其他的问题后面不管[ ]里面是什么直接回车就好,不要输入,选择默认。
(10) 最后它会输出1—15个分辨率,你输入数字选择,根据你的显示器来选择分辨率,样就安装好了。
3.1.2 QT4的安装
Qt 是一个跨平台的 C++ 图形用户界面库,由挪威 TrollTech 公司于1995年底出品。2008年被诺基亚收购。QT支持MS/Windows - 95、98、NT 4.0、ME、2000、XP 、Vista和Win7、Macintosh - Mac OS X、 Unix/X11 - Linux、Sun Solaris、HP-UX、Compaq Tru64 UNIX、IBM AIX、SGI IRIX和其它很多X11平台。
在PC机上的QT是基于X11图形系统的,在嵌入设备中往往不需要这么累赘,只需使用QTE(QT/Embedded)即可包括PC平台中X11和QT库的功能。因此,我们要建立3个版本的QT,分别为PC 版、X86版、ARM版,其中PC版主要用于设计,需要其中的Designer、QVFB等。X86版主要用于程序的仿真调试,QVFB就是仿真调试用的。而QVFB必须运行于X86结构。ARM版用于程序的交叉编译用。
一 PC版QT安装
(1)以ROOT身份进入LINUX系统,新建终端。执行以下命令:
#gcc –v \\先查看gcc版本,如低于3.0要先安装不低于3.0的
图3.3 GCC的版本查看
(2) # ln -s /usr/kerberos/include/com_err.h /usr/include/ \\因为Red Hat9.0安装时
ln -s /usr/kerberos/include/profile.h /usr/include/ krb5.h不在include里面
ln -s /usr/kerberos/include/krb5.h /usr/include/
(3) #cd /usr/local/ \\ 进入local目录
(4) # mkdir qtpc \\ 创建qtpc文件夹,用于安装PC版的QT
(5) # tar zxvf qt-x11-opensource-src-4.4.1.tar.gz \\ 解压QT
(6) #cd qt-x11-opensource-src-4.4.1 \\ 进入x11-opensource-src-4.4.1文件夹
(7)#./configure -prefix /usr/local/pcqt/ -qvfb \\ -prefix用于指定QT的安装路径,-qvfb 表示编译qvfb模块,为X86准备
(8)gmake
(9)gmake install // 到此,PC版的QT安装完成
运行环境变量,看是否安装成功
PATH=/usr/local/Trolltech/Qt-4.5.0/bin:$PATH
QTDIR=/usr/local/Trolltech/Qt-4.5.0
QTDEDIR=$QTDIR
MANPATH=$QTDIR/man:$MANPATH
LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
export PATH QTDIR MANPATH LD_LIBRARY_PATH
# ./ designer // 出现designer画面
接着安装QVFB
(1) # cd Tools
(2) # cd qvfb
(3) # make \\ QVFB安装完成,用于仿真QT程序
二 X86版QT的安装
(1)#cd /usr/local/ \\ 进入local目录
(2)# mkdir qtx86 \\ 创建qtx86文件夹,用于安装X86版的QT
(3)# tar zxvf qt-embedded-linux-opensource-src-4.4.1.tar.gz
(4)#cd qt-embedded-linux-opensource-src-4.4.1
(5)#./configure\
-prefix /usr/local/qtx86 \\ X86的安装目录
-embedded x86 \\ 指定嵌入式平台为X86
-qt-gfx-qvfb \\ 指定驱动设备显示为QVFB
-qt-kbd-qvfb \\ 支持键盘
-qt-mouse-qvfb \\ 支持鼠标
(6)# gmake
(7)# gmake install \\ X86版QT安装完成
测试一下是否安装成功,设置如下环境变量:
PATH=/usr/local/qtx86/bin:$PATH
QTDIR=/usr/local/qtx86
QTDEDIR=$QTDIR
MANPATH=$QTDIR/man:$MANPATH
LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
export PATH QTDIR MANPATH LD_LIBRARY_PATH
注 :PATH 是指定X86运行的路径
# qvfb -width 640 -height 480&
三 ARM版QT的安装
在搭建ARM版的QT之前,应该首先安装交叉编译器,本文用的是博创公司提供的ARM-LINUX-GCC3.4.1,触摸屏库为tslib1.4。
1 交叉编译器arm-linux-gcc的安装
(1)#tar xjvf linux-gcc-3.4.1.tar.bz2
把它放在:/usr/local/arm/qtarm下
(2)#gedit /root/.bashrc \\ 对bashrc进行编辑,设置环境变量输入export PATH=/opt/toolchains/arm920t-eabi/bin:$PATH
图3.4 ARM-LINUX-GCC版本号
正式安装ARM版QT
(1)# mkdir qtarm
(2)# tar zxvf qt-embedded-linux-opensource-src-4.4.1.tar.gz
(3)#cd qt-embedded-linux-opensource-src-4.4.1
(4)# ./configure \
-prefix /usr/local/qtarm \ \\指定安装目录
-opensource \ \\以开源版本发布程序
-confirm-license \
-release \
-shared\ \\ 创建使用共享库
-embedded arm \
-xplatform qws/linux-arm-g++ \ \\交叉编译指定目标平台
-depths 16,18,24 \ \\ 支持显示设备的位深度为16 18 24
-fast \ \\
-optimized-qmake \ \\ 开启QMAKE优化
-pch \ \\ 使用预处理器头文件
-qt-sql-sqlite \
-qt-libjpeg \
-qt-zlib \
-qt-libpng \
-qt-freetype \
-little-endian -host-little-endian \
-no-qt3support \
-no-libtiff -no-libmng \
-no-opengl \
-no-mmx -no-sse -no-sse2 \
-no-3dnow \
-no-openssl \
-no-webkit \
-no-qvfb \
-no-phonon \
-no-nis \
-no-opensll \
-no-cups \
-no-glib \
-no-xcursor -no-xfixes -no-xrandr -no-xrender \
-no-separate-debug-info \
-nomake examples\
-nomake tools\
-nomake docs \
-qt-mouse-tslib -I/usr/local/qtarm/tslib/include -L/usr/local/qtarm/tslib/lib
(5)# make
(6)# make install
3.2目标机软件平台的搭建
根据IEEE(电气和电子工程师协会)的定义,嵌入式系统是“控制、监视或者辅助装置、机器和设备运行的装置”(devices used to control, monitor, or assist the operation of equipment, machinery or plants)。从中可以看出嵌入式系统是软件和硬件的综合体,还可以涵盖机械等附属装置。目前国内一个普遍被认同的定义是:以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。目前,嵌入式操作系统市场上很多如:uC/OS II、RT-thread、uCLinux、FreeRTOS、VxWorks、嵌入式Linux、Nucleus等等。其中linux系统以其代码开源、内核小、效率高、更新快、兼容性好等诸多优点而被广泛应用。
本论文就是采用嵌入式linux系统,作为开发平台。
3.2.1内核移植
(1)修改linux2.4.2下面的makefile文件
找到ARCH和CROSS_COMPILE,修改
ARCH ?= arm
CROSS_COMPILE ?= /usr/local/arm/3.4.1/bin/arm-linux- \\交叉编译的路径
(2)设置flash分区
在arch/arm/machs3c2410/devs.c文件中添加头文件
#include <linux/mtd/partitions.h>
#include <linux/mtd/nand.h>
#include <asm/arch/nand.h>
然后建立分区表
/* 一个Nand Flash总共64MB, 按如下大小进行分区 分区大小自己看着办*/
static struct mtd_partition partition_info[] ={
{ name: "bootloader",
size: 0x00100000,
offset: 0x0,
},{ name: "kernel",
size: 0x00300000,
offset: 0x00100000,
}, { name: "root",
size: 0x02800000,
offset: 0x00400000,
}, { name: "user",
size: 0x00f00000,
offset: 0x02d00000,
}
};
/*加入Nand Flash分区*/
struct s3c2410_nand_set nandset ={
nr_partitions: 4, /*指明partition_info中定义的分区数目*/
partitions: partition_info, /* partition table分区信息表*/
};
/*建立Nand Flash芯片支持*/
struct s3c2410_platform_nand superlpplatform={
tacls:0,
twrph0:30,
twrph1:0,
sets: &nandset, \\ sets: 支持的分区集
nr_sets: 1, \\ nr_set:分区集的个数
};
/*加入Nand Flash芯片支持到Nand Flash驱动
struct platform_device s3c_device_nand = {
.name = "s3c2410-nand", \\ Device name
.id = -1, \\ Device ID
.num_resources = ARRAY_SIZE(s3c_nand_resource),
.resource = s3c_nand_resource, \\ Nand Flash Controller Registers
.dev = { .platform_data = &superlpplatform } \\ Add the Nand Flash device
指定启动时初始化在arch/arm/machs-3c2410/mach-smdk2410.c文件
找到platform_device *smdk2410_devices[] __initdata函数,在该函数体最后加上一条语句:
&s3c_device_nand,
(3)Yaffs2文件系统支持
# ar zxvf yaffs2.tar.gz
# cd yaffs2
#./patch-ker.sh c /linux-2.4.2 \\ 内核源码在 linux-2.4.2
(4)编译配置内核,首先先load一个默认的内核/linux-2.6.14/arch/arm/configs/smdk2410_defconfig,在这个配置文件上改
Loadable module support >
[*] Enable loadable module support
[*] Automatic kernel module loading
System Type >
[*] S3C2410 DMA support
Boot options >
Default kernel command string:
noinitrd root=/dev/mtdblock2
init=/linuxrc console=ttySAC0,115200
Floating point emulation >
[*] NWFPE math emulation
Device Drivers >
Memory Technology Devices (MTD) >
[*] MTD partitioning support
\\ 支持MTD分区,这样我们在前面设置的分区才有意义
[*] Command line partition table parsing
\\ 支持从命令行设置flash分区信息
RAM/ROM/Flash chip drivers >
<*> Detect flash chips by Common Flash Interface (CFI) probe
<*> Detect nonCFI AMD/JEDECcompatible flash chips
<*> Support for Intel/Sharp flash chips
<*> Support for AMD/Fujitsu flash chips
<*> Support for ROM chips in bus mapping
NAND Flash Device Drivers >
<*> NAND Device Support
<*> NAND Flash support for S3C2410/S3C2440 SoC
Character devices >
[*] Nonstandard serial port suppor
[*] S3C2410 RTC Driver
File systems >
<> Second extended fs support #去除对ext2的支持
Pseudo filesystems >
[*] /proc file system support
[*] Virtual memory file system support (former shm fs)
[*] /dev file system support (OBSOLETE)
[*] Automatically mount at boot (NEW)
这里会看到我们前先修改fs/Kconfig的成果
Miscellaneous filesystems >
<*> Compressed ROM file system support (cramfs) \\ 支持cramfs
<*> YAFFS2 file system support \\ 支持yaffs2
Network File Systems >
<*> NFS file system support
3.2.2 CS8900网卡驱动的移植
(1)cs8900.c和cs8900.h放到/drivers/net/arm/
(2)在cs8900.c中的cs8900_probe()函数中,memset (&priv,0,sizeof (cs8900_t)); 函数之后添加如下两条语句:
__raw_writel(0x2211d110,S3C2410_BWSCON);
__raw_writel(0x1f7c,S3C2410_BANKCON3);
添加头文件#include <asm/arch/regs-mem.h>
(3)修改drivers/net/arm/目录下的Kconfig文件,在最后添加如下内容:
config ARM_CS8900
depends on NET_ETHERNET && ARM && ARCH_SMDK2410
(4)修改drivers/net/arm/目录下的Makefile文件,在最后添加如下内容:
obj-$(CONFIG_ARM_CS8900) += cs8900.o
(5)在/arch/arm/mach-s3c2410/mach-smdk2410.c文件中,找到smdk2410_iodesc[]结构数组,添加如下内容:
{vSMDK2410_ETH_IO, 0x19000000, SZ_1M, MT_DEVICE}
添加头文件#inlcude <asm/arch/smdk2410.h>
(6)在include/asm-arm/arch-s3c2410/目录下创建smdk2410.h文件,其内容为:#ifndef _INCLUDE_SMDK2410_H_
#define _INCLUDE_SMDK2410_H_
#define SMDK2410_ETH_IRQ IRQ_EINT9
#endif // _INCLUDE_SMDK2410_H_
(7)编译内核,选中所装驱动
#make men
展开阅读全文