驱动测试程序编写、驱动程序卸载与测试
2016-01-21 19:06
585 查看
一、基于qtopia2.2.0的驱动测试程序的编写
1、PWM测试程序的开发
1、1 在 /opt/FriendlyARM/qtopia_apps 目录下创建 pwm-testing作为本示例的项目目录,在终端上输入如下命令:
# mkdir –p /opt/FriendlyARM/qtopia_apps/pwm-testing
1.2 使用 designer 工具设计图形界面
在弹出的 New Form 界面中,选择“Widget”然后点击”OK“,在弹出的界面中设置如下参数,且添加如下pushbutton控件.其中Start,Stop,Close按钮nameyi依次设置为:m_startbutton,m_stopbutton,m_closebutton。
1.3 编写代码
首先用 vi 编辑器创建并打开 main.cpp 文件:
# vi main.cpp
在 vi 编辑器中输入如下源代码内容:
#include "main_form.h"
#include <qtopia/qpeapplication.h>
QTOPIA_ADD_APPLICATION("pwm-testing",TMainForm)
QTOPIA_MAIN
然后用 vi 编辑器创建并打开 main_form.h 文件:
# vi main_form.h
在 vi 编辑器中输入如下源代码内容:
#ifndef __MAIN_FORM_H__
# define __MAIN_FORM_H__
#include "main_form_base.h"
class TMainForm: public TMainFormBase {
Q_OBJECT
public:
TMainForm(QWidget * parent = 0, const char * name = 0, WFlags f = WType_TopLevel);
virtual ~TMainForm();
private slots:
void buttonClicked();
private:
int m_fd;
};
#endif
其次用 vi 编辑器创建并打开 main_form.cpp 文件:
# vi main_form.cpp
在 vi 编辑器中输入如下源代码内容:
#include "main_form.h"
#include <qlabel.h>
#include <qpushbutton.h>
#include <qlayout.h>
#include <qspinbox.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/ioctl.h>
#include <fcntl.h>
#include <qapplication.h>
#define PWM_IOCTL_SET_FREQ 1
#define PWM_IOCTL_STOP 0
TMainForm::TMainForm(QWidget * parent, const char * name, WFlags f)
: TMainFormBase(parent, name, f)
{
m_fd = ::open("/dev/pwm", O_RDONLY);
::ioctl(m_fd, PWM_IOCTL_STOP);
connect(m_startButton,SIGNAL(clicked()),this,SLOT(buttonClicked()) );
connect(m_stopButton, SIGNAL(clicked()), this, SLOT(buttonClicked()) );
connect(m_closeButton,SIGNAL(clicked()),this,SLOT(buttonClicked()) );
}
TMainForm::~TMainForm()
{
::ioctl(m_fd, PWM_IOCTL_STOP);
4000
::close(m_fd);
}
void TMainForm::buttonClicked()
{
QPushButton* obj = (QPushButton*)sender();
if (obj == m_startButton) {
::ioctl(m_fd, PWM_IOCTL_SET_FREQ, 1000);
} else if (obj == m_stopButton) {
::ioctl(m_fd, PWM_IOCTL_STOP);
} else if (obj == m_closeButton) {
close();
}
}
最后用 vi 编辑器创建并打开 pwm-testing.pro 文件:
# vi pwm-testing.pro
在 vi 编辑器中输入如下内容:
CONFIG += qtopiaapp
CONFIG -= buildQuicklaunch
HEADERS = main_form.h
SOURCES = main_form.cpp main.cpp
INTERFACES = main_form_base.ui
TARGET = pwm-testing
1.4 交叉编译 pwm-testing 程序
创建一个 ARM 版本的编译脚本 buildarm.sh,然后执行该脚本编译 pwm-testing :.
#vim buildarm.sh
其中的内容如下:
运行脚本:
#./buildarm.sh (会生成pwm-testing可执行文件)
#!/bin/sh
source /opt/FriendlyARM/tiny4412/linux/arm-qtopia/qtopia-2.2.0-FriendlyARM/setQpeEnv
qmake -spec qws/linux-arm-g++ -o Makefile.target *.pro
make -f Makefile.target clean
make -f Makefile.target
如下图所示:
编译完成后,在 pwm-testing 下生成了 pwm-testing 可执行文件,把它拷贝到 SD 卡,然后将 SD插到 tiny4412 开发板上,在串口终端上输入以下命令将可执行文件拷贝到开发板上的 /opt/Qtopia/bin/ 目录下:
@# cp /sdcard/pwm-testing /opt/Qtopia/bin/
@# chmod +x /opt/Qtopia/bin/pwm-testing
1.5 在 Qtopia 上添加 pwm-testing 程序图标
首先编写一 desktop 文件:
# cd /opt/tiny4412/qtopia2_apps/pwm-testing/
# vi pwm-testing.desktop
在 vi 中输入以下内容并保存:
[Translation]
File=QtopiaSettings
Context=pwm-testing
Comment[Desktop Entry/Name]=Use soft hyphen (char U00AD) to indicate
hyphenation
[Desktop Entry]
Exec=pwm-testing
Icon=pwm-testing
Type=Application
Name[]=PWM-Testing
CanFastload=0
把 pwm-testing.png 和 pwm-testing.desktop 这两个文件放入 SD 卡,然后将 SD 卡插到 tiny4412开发板上,在串口终端上执下以下命令,把这两个文件拷贝到 Qtopia 目录的相应位置:
@# cp /sdcard/pwm-testing.desktop /opt/Qtopia/apps/Applications/
@# cp /sdcard/pwm-testing.png /opt/Qtopia/pics/
1.6 运行 pwm-testing 程序
要运行 pwm-testing 程序,只要在 Applications 中找到 pwm-testing 应用程序图标并点击即可,运行结果如下图所示:
点击 Start 即可,要停止发声,点击 Stop,点 Close 将退出程序
2、LED测试程序的开发
2、1 在 /opt/FriendlyARM/qtopia_apps 目录下创建 led-testing作为本示例的项目目录,在终端上输入如下命令:
# mkdir –p /opt/FriendlyARM/qtopia_apps/led-testing
2.2 使用 designer 工具设计图形界面
在弹出的 New Form 界面中,选择“Widget”然后点击”OK“,在弹出的界面中设置如下参数,且添加如下CheckBox控件.其中Start,Stop,Close按钮nameyi依次设置为:m_led1,m_led2,m_led3,m_led4。
2.3 编写代码(代码见附录)
首先用 vi 编辑器创建并打开 main.cpp 文件:
# vi main.cpp
然后用 vi 编辑器创建并打开 main_form.h 文件:
# vi main_form.h
其次用 vi 编辑器创建并打开 main_form.cpp 文件:
最后用 vi 编辑器创建并打开 led-testing.pro 文件:
2.4 交叉编译 led-testing 程序
创建一个 ARM 版本的编译脚本 buildarm.sh,然后执行该脚本编译 led-testing :.
#vim buildarm.sh
其中的内容如下:
运行脚本:
#./buildarm.sh (会生成led-testing可执行文件)
如下图所示:
编译完成后,在 led-testing 下生成了 led-testing 可执行文件,把它拷贝到 SD 卡,然后将 SD插到 tiny4412 开发板上,在串口终端上输入以下命令将可执行文件拷贝到开发板上的 /opt/Qtopia/bin/ 目录下:
@# cp /sdcard/led-testing /opt/Qtopia/bin/
@# chmod +x /opt/Qtopia/bin/led-testing
2.5 在 Qtopia 上添加 led-testing 程序图标
首先编写一 desktop 文件:
# cd /opt/mini6410/qtopia2_apps/led-testing/
# vi led-testing.desktop
在 vi 中输入以下内容并保存:
[Translation]
File=QtopiaSettings
Context=led-testing
Comment[Desktop Entry/Name]=Use soft hyphen (char U00AD) to indicate
hyphenation
[Desktop Entry]
Exec=led-testing
Icon=led-testing
Type=Application
Name[]=LED-Testing
CanFastload=0
把 led-testing.png 和 led-testing.desktop 这两个文件放入 SD 卡,然后将 SD 卡插到 tiny4412开发板上,在串口终端上执下以下命令,把这两个文件拷贝到 Qtopia 目录的相应位置:
@# cp /sdcard/led-testing.desktop /opt/Qtopia/apps/Applications/
@# cp /sdcard/led-testing.png /opt/Qtopia/pics/
2.6 要运行 led-testing 程序,只要在 Applications 中找到 led-testing 应用程序图标并点击即可,运行结果如下图所示:
3、ADC测试程序的开发
3、1 在 /opt/FriendlyARM/qtopia_apps 目录下创建 adc-testing作为本示例的项目目录,在终端上输入如下命令:
# mkdir –p /opt/FriendlyARM/qtopia_apps/adc-testing
3.2 使用 designer 工具设计图形界面
在弹出的 New Form 界面中,选择“Widget”然后点击”OK“,在弹出的界面中设置如下参数,且添加如下LCD Number控件.按钮名字设置为:m_label
3.3 编写代码(代码见附录)
首先用 vi 编辑器创建并打开 main.cpp 文件:
# vi main.cpp
然后用 vi 编辑器创建并打开 main_form.h 文件:
# vi main_form.h
其次用 vi 编辑器创建并打开 main_form.cpp 文件:
最后用 vi 编辑器创建并打开 adc-testing.pro 文件:
3.4 交叉编译 adc-testing 程序
创建一个 ARM 版本的编译脚本 buildarm.sh,然后执行该脚本编译 adc-testing :.
#vim buildarm.sh(其中的内容与前面相同)
运行脚本:
#./buildarm.sh (会生成adc-testing可执行文件)
编译完成后,在 adc-testing 下生成了 adc-testing 可执行文件,把它拷贝到 SD 卡,然后将 SD插到 tiny4412 开发板上,在串口终端上输入以下命令将可执行文件拷贝到开发板上的 /opt/Qtopia/bin/ 目录下:
@# cp /sdcard/adc-testing /opt/Qtopia/bin/
@# chmod +x /opt/Qtopia/bin/adc-testing
3.5 在 Qtopia 上添加 adc-testing 程序图标
首先编写一 desktop 文件:
# cd /opt/mini6410/qtopia2_apps/adc-testing/
# vi adc-testing.desktop
在 vi 中输入以下内容并保存:
[Translation]
File=QtopiaSettings
Context=led-testing
Comment[Desktop Entry/Name]=Use soft hyphen (char U00AD) to indicate
hyphenation
[Desktop Entry]
Exec=adc-testing
Icon=adc-testing
Type=Application
Name[]=ADC-Testing
CanFastload=0
把 adc-testing.png 和 adc-testing.desktop 这两个文件放入 SD 卡,然后将 SD 卡插到 tiny4412开发板上,在串口终端上执下以下命令,把这两个文件拷贝到 Qtopia 目录的相应位置:
@# cp /sdcard/adc-testing.desktop /opt/Qtopia/apps/Applications/
@# cp /sdcard/adc-testing.png /opt/Qtopia/pics/
3.6 要运行 adc-testing 程序,只要在 Applications 中找到 adc-testing 应用程序图标并点击即可,运行结果如下图所示:
4、button测试程序的开发
4.1 在 /opt/FriendlyARM/qtopia_apps 目录下创建 button-testing作为本示例的项目目录,在终端上输入如下命令:
# mkdir –p /opt/FriendlyARM/qtopia_apps/button-testing
4.2 使用 designer工具设计图形界面
此时不需要设计界面,可以忽略。
4.3 编写代码(代码见附录)
首先用 vi 编辑器创建并打开 main.cpp 文件:
# vi main.cpp
然后用 vi 编辑器创建并打开 main_form.h 文件:
# vi main_form.h
其次用 vi 编辑器创建并打开 main_form.cpp 文件:
最后用 vi 编辑器创建并打开 button-testing.pro 文件:
4.4 交叉编译 button-testing 程序
创建一个 ARM 版本的编译脚本 buildarm.sh,然后执行该脚本编译 button-testing :.
#vim buildarm.sh(其中的内容与前面相同)
运行脚本:
#./buildarm.sh (会生成button-testing可执行文件)
编译完成后,在 button-testing 下生成了 button-testing 可执行文件,把它拷贝到 SD 卡,然后将 SD插到 tiny4412 开发板上,在串口终端上输入以下命令将可执行文件拷贝到开发板上的 /opt/Qtopia/bin/ 目录下:
@# cp /sdcard/button-testing /opt/Qtopia/bin/
@# chmod +x /opt/Qtopia/bin/button-testing
4.5 在 Qtopia 上添加 button-testing 程序图标
首先编写一 desktop 文件:
# cd /opt/mini6410/qtopia2_apps/button-testing/
# vi button-testing.desktop
在 vi 中输入以下内容并保存:
[Translation]
File=QtopiaSettings
Context=button-testing
Comment[Desktop Entry/Name]=Use soft hyphen (char U00AD) to indicate
hyphenation
[Desktop Entry]
Exec=button-testing
Icon=button-testing
Type=Application
Name[]=button-Testing
CanFastload=0
把 button-testing.png和 button-testing.desktop 这两个文件放入 SD 卡,然后将 SD 卡插到 tiny4412开发板上,在串口终端上执下以下命令,把这两个文件拷贝到 Qtopia 目录的相应位置:
@# cp /sdcard/button-testing.desktop /opt/Qtopia/apps/Applications/
@# cp /sdcard/button-testing.png /opt/Qtopia/pics/
4.6 要运行button-testing 程序,只要在 Applications 中找到 button-testing 应用程序图标并点击即可,运行结果如下图所示:
二、卸载Linux3.5中四个驱动模块编译内核
1、首先卸载原来linux3.5中的PWM、LED、ADC、BUTTON四个驱动模块。
输入如下指令:
[root@localhost linux-3.5]# make menuconfig
出现如下画面,依次选择:Device Drivers->Character devices
在此处不选LED、Buttons、Buzzer、ADC四个驱动模块
重新编译内核,输入如下指令:
[root@localhost linux-3.5]# make uImage
这样,生成的镜像中就不会含有以上四个驱动模块,将编译好的镜像烧入卡发板。通过先前写的qtopia2.2.0程序测试,PWM,Button,LED,ADC功能都不能正常使用。
三、单独写四个驱动并且独自编译进内核
1、首先在char 下面建立一个mydriver文件夹
[root@localhost linux-3.5]#mkdir -p /driver/char/mydriver
[root@localhost linux-3.5]#cd /driver/char/mydriver
2、在mydriver下建立4个驱动程序目录
[root@localhost mydriver]#mkdir -p pwmdrver leddriver adcdriver buttonsdrivers
3、在每个驱动目录下加入驱动代码(.c)和Makefile,例如对于leddriver
[root@localhost mydriver]#cd leddriver
[root@localhost leddriver]#vi myled.c
驱动程
ad70
序内容见附件
[root@localhost leddriver]#vi Makefile
Makefile文件内容如下:
obj-m := myleds.o
#KERN_DIR =/usr/src/kernels/2.6.25-14.fc9.i686
KERN_DIR ?=/opt/FriendlyARM/tiny4412/linux/linux-3.5
PWD :=$(shell pwd)
default:
make -C $(KERN_DIR) M=$(PWD) modules
clean:
rm -rf *.o *.cmd *.ko *.mod.c *.markers *.symvers *.tmp_versions
其它三个也类似,只是相关的文件名字稍微修改一下即可
4、对每个驱动进行编译(下面以LED为例来说明)
[root@localhost leddriver]# make
编译成功会得到如下截图,
且会生成.ko文件,输入
[root@localhost leddriver]#ls
可以看到,其中有一个myleds.ko文件
5、将产生的myleds.ko文件通过SD卡拷贝到tiny4412上,在对应的目录下输入insmod myleds,可以将led驱动加入其中。通过lsmod查看当前模块。
@#insmod myleds
@#insmod myleds
6、最后通过之前的测试程序测试驱动的正确性。
1、PWM测试程序的开发
1、1 在 /opt/FriendlyARM/qtopia_apps 目录下创建 pwm-testing作为本示例的项目目录,在终端上输入如下命令:
# mkdir –p /opt/FriendlyARM/qtopia_apps/pwm-testing
1.2 使用 designer 工具设计图形界面
在弹出的 New Form 界面中,选择“Widget”然后点击”OK“,在弹出的界面中设置如下参数,且添加如下pushbutton控件.其中Start,Stop,Close按钮nameyi依次设置为:m_startbutton,m_stopbutton,m_closebutton。
1.3 编写代码
首先用 vi 编辑器创建并打开 main.cpp 文件:
# vi main.cpp
在 vi 编辑器中输入如下源代码内容:
#include "main_form.h"
#include <qtopia/qpeapplication.h>
QTOPIA_ADD_APPLICATION("pwm-testing",TMainForm)
QTOPIA_MAIN
然后用 vi 编辑器创建并打开 main_form.h 文件:
# vi main_form.h
在 vi 编辑器中输入如下源代码内容:
#ifndef __MAIN_FORM_H__
# define __MAIN_FORM_H__
#include "main_form_base.h"
class TMainForm: public TMainFormBase {
Q_OBJECT
public:
TMainForm(QWidget * parent = 0, const char * name = 0, WFlags f = WType_TopLevel);
virtual ~TMainForm();
private slots:
void buttonClicked();
private:
int m_fd;
};
#endif
其次用 vi 编辑器创建并打开 main_form.cpp 文件:
# vi main_form.cpp
在 vi 编辑器中输入如下源代码内容:
#include "main_form.h"
#include <qlabel.h>
#include <qpushbutton.h>
#include <qlayout.h>
#include <qspinbox.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/ioctl.h>
#include <fcntl.h>
#include <qapplication.h>
#define PWM_IOCTL_SET_FREQ 1
#define PWM_IOCTL_STOP 0
TMainForm::TMainForm(QWidget * parent, const char * name, WFlags f)
: TMainFormBase(parent, name, f)
{
m_fd = ::open("/dev/pwm", O_RDONLY);
::ioctl(m_fd, PWM_IOCTL_STOP);
connect(m_startButton,SIGNAL(clicked()),this,SLOT(buttonClicked()) );
connect(m_stopButton, SIGNAL(clicked()), this, SLOT(buttonClicked()) );
connect(m_closeButton,SIGNAL(clicked()),this,SLOT(buttonClicked()) );
}
TMainForm::~TMainForm()
{
::ioctl(m_fd, PWM_IOCTL_STOP);
4000
::close(m_fd);
}
void TMainForm::buttonClicked()
{
QPushButton* obj = (QPushButton*)sender();
if (obj == m_startButton) {
::ioctl(m_fd, PWM_IOCTL_SET_FREQ, 1000);
} else if (obj == m_stopButton) {
::ioctl(m_fd, PWM_IOCTL_STOP);
} else if (obj == m_closeButton) {
close();
}
}
最后用 vi 编辑器创建并打开 pwm-testing.pro 文件:
# vi pwm-testing.pro
在 vi 编辑器中输入如下内容:
CONFIG += qtopiaapp
CONFIG -= buildQuicklaunch
HEADERS = main_form.h
SOURCES = main_form.cpp main.cpp
INTERFACES = main_form_base.ui
TARGET = pwm-testing
1.4 交叉编译 pwm-testing 程序
创建一个 ARM 版本的编译脚本 buildarm.sh,然后执行该脚本编译 pwm-testing :.
#vim buildarm.sh
其中的内容如下:
运行脚本:
#./buildarm.sh (会生成pwm-testing可执行文件)
#!/bin/sh
source /opt/FriendlyARM/tiny4412/linux/arm-qtopia/qtopia-2.2.0-FriendlyARM/setQpeEnv
qmake -spec qws/linux-arm-g++ -o Makefile.target *.pro
make -f Makefile.target clean
make -f Makefile.target
如下图所示:
编译完成后,在 pwm-testing 下生成了 pwm-testing 可执行文件,把它拷贝到 SD 卡,然后将 SD插到 tiny4412 开发板上,在串口终端上输入以下命令将可执行文件拷贝到开发板上的 /opt/Qtopia/bin/ 目录下:
@# cp /sdcard/pwm-testing /opt/Qtopia/bin/
@# chmod +x /opt/Qtopia/bin/pwm-testing
1.5 在 Qtopia 上添加 pwm-testing 程序图标
首先编写一 desktop 文件:
# cd /opt/tiny4412/qtopia2_apps/pwm-testing/
# vi pwm-testing.desktop
在 vi 中输入以下内容并保存:
[Translation]
File=QtopiaSettings
Context=pwm-testing
Comment[Desktop Entry/Name]=Use soft hyphen (char U00AD) to indicate
hyphenation
[Desktop Entry]
Exec=pwm-testing
Icon=pwm-testing
Type=Application
Name[]=PWM-Testing
CanFastload=0
把 pwm-testing.png 和 pwm-testing.desktop 这两个文件放入 SD 卡,然后将 SD 卡插到 tiny4412开发板上,在串口终端上执下以下命令,把这两个文件拷贝到 Qtopia 目录的相应位置:
@# cp /sdcard/pwm-testing.desktop /opt/Qtopia/apps/Applications/
@# cp /sdcard/pwm-testing.png /opt/Qtopia/pics/
1.6 运行 pwm-testing 程序
要运行 pwm-testing 程序,只要在 Applications 中找到 pwm-testing 应用程序图标并点击即可,运行结果如下图所示:
点击 Start 即可,要停止发声,点击 Stop,点 Close 将退出程序
2、LED测试程序的开发
2、1 在 /opt/FriendlyARM/qtopia_apps 目录下创建 led-testing作为本示例的项目目录,在终端上输入如下命令:
# mkdir –p /opt/FriendlyARM/qtopia_apps/led-testing
2.2 使用 designer 工具设计图形界面
在弹出的 New Form 界面中,选择“Widget”然后点击”OK“,在弹出的界面中设置如下参数,且添加如下CheckBox控件.其中Start,Stop,Close按钮nameyi依次设置为:m_led1,m_led2,m_led3,m_led4。
2.3 编写代码(代码见附录)
首先用 vi 编辑器创建并打开 main.cpp 文件:
# vi main.cpp
然后用 vi 编辑器创建并打开 main_form.h 文件:
# vi main_form.h
其次用 vi 编辑器创建并打开 main_form.cpp 文件:
最后用 vi 编辑器创建并打开 led-testing.pro 文件:
2.4 交叉编译 led-testing 程序
创建一个 ARM 版本的编译脚本 buildarm.sh,然后执行该脚本编译 led-testing :.
#vim buildarm.sh
其中的内容如下:
运行脚本:
#./buildarm.sh (会生成led-testing可执行文件)
如下图所示:
编译完成后,在 led-testing 下生成了 led-testing 可执行文件,把它拷贝到 SD 卡,然后将 SD插到 tiny4412 开发板上,在串口终端上输入以下命令将可执行文件拷贝到开发板上的 /opt/Qtopia/bin/ 目录下:
@# cp /sdcard/led-testing /opt/Qtopia/bin/
@# chmod +x /opt/Qtopia/bin/led-testing
2.5 在 Qtopia 上添加 led-testing 程序图标
首先编写一 desktop 文件:
# cd /opt/mini6410/qtopia2_apps/led-testing/
# vi led-testing.desktop
在 vi 中输入以下内容并保存:
[Translation]
File=QtopiaSettings
Context=led-testing
Comment[Desktop Entry/Name]=Use soft hyphen (char U00AD) to indicate
hyphenation
[Desktop Entry]
Exec=led-testing
Icon=led-testing
Type=Application
Name[]=LED-Testing
CanFastload=0
把 led-testing.png 和 led-testing.desktop 这两个文件放入 SD 卡,然后将 SD 卡插到 tiny4412开发板上,在串口终端上执下以下命令,把这两个文件拷贝到 Qtopia 目录的相应位置:
@# cp /sdcard/led-testing.desktop /opt/Qtopia/apps/Applications/
@# cp /sdcard/led-testing.png /opt/Qtopia/pics/
2.6 要运行 led-testing 程序,只要在 Applications 中找到 led-testing 应用程序图标并点击即可,运行结果如下图所示:
3、ADC测试程序的开发
3、1 在 /opt/FriendlyARM/qtopia_apps 目录下创建 adc-testing作为本示例的项目目录,在终端上输入如下命令:
# mkdir –p /opt/FriendlyARM/qtopia_apps/adc-testing
3.2 使用 designer 工具设计图形界面
在弹出的 New Form 界面中,选择“Widget”然后点击”OK“,在弹出的界面中设置如下参数,且添加如下LCD Number控件.按钮名字设置为:m_label
3.3 编写代码(代码见附录)
首先用 vi 编辑器创建并打开 main.cpp 文件:
# vi main.cpp
然后用 vi 编辑器创建并打开 main_form.h 文件:
# vi main_form.h
其次用 vi 编辑器创建并打开 main_form.cpp 文件:
最后用 vi 编辑器创建并打开 adc-testing.pro 文件:
3.4 交叉编译 adc-testing 程序
创建一个 ARM 版本的编译脚本 buildarm.sh,然后执行该脚本编译 adc-testing :.
#vim buildarm.sh(其中的内容与前面相同)
运行脚本:
#./buildarm.sh (会生成adc-testing可执行文件)
编译完成后,在 adc-testing 下生成了 adc-testing 可执行文件,把它拷贝到 SD 卡,然后将 SD插到 tiny4412 开发板上,在串口终端上输入以下命令将可执行文件拷贝到开发板上的 /opt/Qtopia/bin/ 目录下:
@# cp /sdcard/adc-testing /opt/Qtopia/bin/
@# chmod +x /opt/Qtopia/bin/adc-testing
3.5 在 Qtopia 上添加 adc-testing 程序图标
首先编写一 desktop 文件:
# cd /opt/mini6410/qtopia2_apps/adc-testing/
# vi adc-testing.desktop
在 vi 中输入以下内容并保存:
[Translation]
File=QtopiaSettings
Context=led-testing
Comment[Desktop Entry/Name]=Use soft hyphen (char U00AD) to indicate
hyphenation
[Desktop Entry]
Exec=adc-testing
Icon=adc-testing
Type=Application
Name[]=ADC-Testing
CanFastload=0
把 adc-testing.png 和 adc-testing.desktop 这两个文件放入 SD 卡,然后将 SD 卡插到 tiny4412开发板上,在串口终端上执下以下命令,把这两个文件拷贝到 Qtopia 目录的相应位置:
@# cp /sdcard/adc-testing.desktop /opt/Qtopia/apps/Applications/
@# cp /sdcard/adc-testing.png /opt/Qtopia/pics/
3.6 要运行 adc-testing 程序,只要在 Applications 中找到 adc-testing 应用程序图标并点击即可,运行结果如下图所示:
4、button测试程序的开发
4.1 在 /opt/FriendlyARM/qtopia_apps 目录下创建 button-testing作为本示例的项目目录,在终端上输入如下命令:
# mkdir –p /opt/FriendlyARM/qtopia_apps/button-testing
4.2 使用 designer工具设计图形界面
此时不需要设计界面,可以忽略。
4.3 编写代码(代码见附录)
首先用 vi 编辑器创建并打开 main.cpp 文件:
# vi main.cpp
然后用 vi 编辑器创建并打开 main_form.h 文件:
# vi main_form.h
其次用 vi 编辑器创建并打开 main_form.cpp 文件:
最后用 vi 编辑器创建并打开 button-testing.pro 文件:
4.4 交叉编译 button-testing 程序
创建一个 ARM 版本的编译脚本 buildarm.sh,然后执行该脚本编译 button-testing :.
#vim buildarm.sh(其中的内容与前面相同)
运行脚本:
#./buildarm.sh (会生成button-testing可执行文件)
编译完成后,在 button-testing 下生成了 button-testing 可执行文件,把它拷贝到 SD 卡,然后将 SD插到 tiny4412 开发板上,在串口终端上输入以下命令将可执行文件拷贝到开发板上的 /opt/Qtopia/bin/ 目录下:
@# cp /sdcard/button-testing /opt/Qtopia/bin/
@# chmod +x /opt/Qtopia/bin/button-testing
4.5 在 Qtopia 上添加 button-testing 程序图标
首先编写一 desktop 文件:
# cd /opt/mini6410/qtopia2_apps/button-testing/
# vi button-testing.desktop
在 vi 中输入以下内容并保存:
[Translation]
File=QtopiaSettings
Context=button-testing
Comment[Desktop Entry/Name]=Use soft hyphen (char U00AD) to indicate
hyphenation
[Desktop Entry]
Exec=button-testing
Icon=button-testing
Type=Application
Name[]=button-Testing
CanFastload=0
把 button-testing.png和 button-testing.desktop 这两个文件放入 SD 卡,然后将 SD 卡插到 tiny4412开发板上,在串口终端上执下以下命令,把这两个文件拷贝到 Qtopia 目录的相应位置:
@# cp /sdcard/button-testing.desktop /opt/Qtopia/apps/Applications/
@# cp /sdcard/button-testing.png /opt/Qtopia/pics/
4.6 要运行button-testing 程序,只要在 Applications 中找到 button-testing 应用程序图标并点击即可,运行结果如下图所示:
二、卸载Linux3.5中四个驱动模块编译内核
1、首先卸载原来linux3.5中的PWM、LED、ADC、BUTTON四个驱动模块。
输入如下指令:
[root@localhost linux-3.5]# make menuconfig
出现如下画面,依次选择:Device Drivers->Character devices
在此处不选LED、Buttons、Buzzer、ADC四个驱动模块
重新编译内核,输入如下指令:
[root@localhost linux-3.5]# make uImage
这样,生成的镜像中就不会含有以上四个驱动模块,将编译好的镜像烧入卡发板。通过先前写的qtopia2.2.0程序测试,PWM,Button,LED,ADC功能都不能正常使用。
三、单独写四个驱动并且独自编译进内核
1、首先在char 下面建立一个mydriver文件夹
[root@localhost linux-3.5]#mkdir -p /driver/char/mydriver
[root@localhost linux-3.5]#cd /driver/char/mydriver
2、在mydriver下建立4个驱动程序目录
[root@localhost mydriver]#mkdir -p pwmdrver leddriver adcdriver buttonsdrivers
3、在每个驱动目录下加入驱动代码(.c)和Makefile,例如对于leddriver
[root@localhost mydriver]#cd leddriver
[root@localhost leddriver]#vi myled.c
驱动程
ad70
序内容见附件
[root@localhost leddriver]#vi Makefile
Makefile文件内容如下:
obj-m := myleds.o
#KERN_DIR =/usr/src/kernels/2.6.25-14.fc9.i686
KERN_DIR ?=/opt/FriendlyARM/tiny4412/linux/linux-3.5
PWD :=$(shell pwd)
default:
make -C $(KERN_DIR) M=$(PWD) modules
clean:
rm -rf *.o *.cmd *.ko *.mod.c *.markers *.symvers *.tmp_versions
其它三个也类似,只是相关的文件名字稍微修改一下即可
4、对每个驱动进行编译(下面以LED为例来说明)
[root@localhost leddriver]# make
编译成功会得到如下截图,
且会生成.ko文件,输入
[root@localhost leddriver]#ls
可以看到,其中有一个myleds.ko文件
5、将产生的myleds.ko文件通过SD卡拷贝到tiny4412上,在对应的目录下输入insmod myleds,可以将led驱动加入其中。通过lsmod查看当前模块。
@#insmod myleds
@#insmod myleds
6、最后通过之前的测试程序测试驱动的正确性。
相关文章推荐
- cocos2d手游之微信分享sdk的安卓源代码
- There is already a statement named maxAmountLimit.queryList in this SqlMap
- CSS box-flex属性
- 搭建Spring4.1与Spring4.2 websock+stomp+activeMQ需要注意事项:spring4不同版本websocket差异
- 关于Apple设备私有的apple-touch-icon属性详解
- Android源码剖析之-------Handler机制详解
- mxnet 运行自己的数据
- Linux内核驱动将多个C文件编译成一个ko文件的方法——每一个C文件中都有module_init与module_exit
- 【开源】 天天读报 - 知乎日报win10版
- IOS网络开发:AFNetworking第三方框架的使用
- bzoj3926诸神眷顾的幻想乡
- 量子粒子群优化算法
- 2016 Winter Training Day #1_B题_codefcrces 588A(贪心)
- mxnet 配置与 demo
- SyntaxError:identifier starts immediately after numeric literal
- cocos2d手游之微信分享SDK接入指南
- 行业列表
- 经商之道
- 2038: [2009国家集训队]小Z的袜子(hose) 莫队算法
- 0.erlang服务端笔记