谐波中 hharmhh是什么意思思

基于ARM Linux的电力谐波检测算法实现--硕士论文下载
当前位置:----
博硕论文分类列表
基于ARM Linux的电力谐波检测算法实现
&&&&&论文目录
摘要第1-6页ABSTRACT第6-9页第一章&绪论第9-16页&&&·问题的提出第9-12页&&&&&·谐波及其产生原理第9-10页&&&&&·谐波来源及其危害第10-11页&&&&&·谐波的标准第11-12页&&&·电力谐波检测技术的发展现状和趋势第12-14页&&&·课题研究的目的和意义第14页&&&·本文所做的工作第14-16页第二章&谐波检测算法分析与实现第16-33页&&&·傅里叶变换第16-20页&&&&&·连续傅里叶变换第16页&&&&&·离散傅里叶变换(DFT)第16-18页&&&&&·快速傅立叶变换(FFT)第18-20页&&&·傅立叶变换误差分析第20-22页&&&&&·混叠现象第20-21页&&&&&·频谱泄漏第21-22页&&&&&·栅栏效应第22页&&&·改进后的快速傅里叶变换算法第22-29页&&&&&·加窗插值FFT&法第22-25页&&&&&·多项式插值法用于重构波形第25-26页&&&&&·仿真分析第26-29页&&&·算法实现第29-32页&&&&&·FFT&算法第29-31页&&&&&·3&阶牛顿插值算法第31-32页&&&·小结第32-33页第三章&ARM、嵌入式&LINUX&系统实现技术.第33-41页&&&·嵌入式ARM&技术第33-34页&&&&&·ARM&概述第33页&&&&&·S3C2440&简介第33-34页&&&·嵌入式LINUX&系统第34-37页&&&&&·嵌入式Linux&的结构与特点第34-35页&&&&&·嵌入式Linux&在ARM&上的移植第35-37页&&&·谐波检测系统整体方案第37-38页&&&·谐波检测系统数据采集实现第38-40页&&&&&·AD57844&芯片介绍第38-39页&&&&&·软件实现第39-40页&&&·小结第40-41页第四章&QT/EMBEDDED&谐波检测界面实现第41-49页&&&·QT/EMBEDDED&介绍第41-43页&&&&&·QT/Embedded&概述第41页&&&&&·QT/Embedded&体系结构第41-42页&&&&&·信号与槽机制第42-43页&&&·QT/EMBEDDED&安装第43-45页&&&·QT/EMBEDDED&图形用户系统中文化第45页&&&·检测系统图形界面设计第45-47页&&&·发布应用程序到ARM第47-48页&&&·小结第48-49页结论与展望第49-50页参考文献第50-53页致谢第53-54页附录&A&攻读硕士期间发表的论文第54-55页附录&B&快速傅里叶算法第55-57页附录&C&牛顿插值多项式算法第57-58页附录&D&AD57844&数据采集程序第58-59页
论文编号BS585151,这篇论文共59页会员购买按0.35元/页下载,共需支付<font color="#FF元。&&&&&&&&直接购买按0.5元/页下载,共需要支付<font color="#FF元 。
我还不是会员,我要!
会员下载论文更优惠!还送钱!
我只需要这一篇论文,无需注册!
直接网上支付,方便快捷!
&您可能感兴趣的论文
论文标题页数级别 67页硕士论文69页硕士论文58页硕士论文73页硕士论文47页硕士论文71页硕士论文82页硕士论文152页博士论文53页硕士论文73页硕士论文59页硕士论文52页硕士论文83页硕士论文76页硕士论文
版权申明:本目录由网站制作,本站并未收录原文,如果您是作者,需要删除本篇论文目录请通过QQ或其它联系方式告知我们,我们承诺24小时内删除。
Copyright(C) All Rights Reserved
联系方式: QQ:工具类服务
编辑部专用服务
作者专用服务
基于ARM-Linux嵌入式谐波分析仪的研究
电力谐波自交流电产生之日起就一直存在着。随着科技的发展,越来越多的电力电子装置的使用造成电网中谐波的污染日益严重,给整个供电系统和电网中的用电设备造成了严重的安全隐患。同时近些年来,随着国家经济的发展各种高精度的电子仪器进入生产生活领域使得各行各业对供电质量的要求不断的提高。因此实现电力系统参数快速、准确的测量具有很高的安全和经济价值。本论文就是针对电力系统谐波测量的实际要求而提出的设计方案。  
针对目前电力系统中谐波测量的要求,本论文提出了将嵌入式技术应用到电力谐波检测上。本文的主要工作是用ARM920T为内核的S3C2440处理器与实时操作系统Linux相结合,通过硬件的设计与系统的移植搭建起嵌入式谐波分析仪的平台。文章首先对谐波的产生原因、危害、管理标准等进行了简单的介绍,并分别对几种不同的谐波计算方法进行了阐述和比较。然后着重对硬件和软件部分进行设计。  
硬件部分,为了满足谐波分析仪的高速高效性本设计采用了三星公司的S3C2440作为核心来搭建硬件平台。为了满足系统的数据采集、信号传递等功能分别进行了数据采集单元、人机通讯单元以及信号传输单元的设计。软件部分,首先分别对数据采样、中断服务和数据计算等不同模块进行了设计并给出了相应的流程图。然后通过对嵌入式实时操作系统的分析实现了Linux系统的移植并建立了系统的根文件为下一步具体应用程序的开发打下基础。最后在此基础上进行了谐波分析应用程序的设计。  
在系统软硬件平台搭建完毕后,利用简单的数据分析程序对通过外置的LCD对系统进行了测试。在最后针对本论文进行了总结和展望。指出了本设计需要改进的地方并对此类分析仪的前景进行了展望。
学科专业:
授予学位:
学位授予单位:
导师姓名:
学位年度:
在线出版日期:
本文读者也读过
相关检索词
万方数据知识服务平台--国家科技支撑计划资助项目(编号:2006BAH03B01)(C)北京万方数据股份有限公司
万方数据电子出版社最近更新博客
访问:正在读取...
基于ARM9的电网谐波监测系统设计
随着我国经济的迅速发展,电力负荷急剧增大,对电力系统的污染越来越严重,而谐波含量则是目前电网中影响最为重要的一项指标。这也对监测电力系统运行状况的仪器设备提出了更高的要求。在我国传统的电网运行参数测量和监控系统中,大多使用8位单片机来实现。由于其运算速度和处理数据能力的限制,越来越难以满足目前电网监测的需要。本文设计了一种基于arm9的三相电网电压谐波监测仪,它通过对三路电压电流信号的测量,利用快速傅立叶变换算出谐波含量等电网参数,同时还具有监测数据统计分析,与上位机通信、显示及报警等功能。&谐波监测系统原理  由于电网中非线性器件的存在,电力传输线中的电流和电压波形都会呈现非正弦性,出现波形的畸变。但在绝大多数情况下,畸变并不是任意的,多数畸变是周期性的,属于谐波的范畴。也就是说从整个过程来看,其波形变化缓慢并且几乎每个周期都是一样的。因此,可以认为畸变的电压、电流波形是非正弦的周期信号。  但对于电网这种不规则的畸变波形无法表示成函数解析式后用傅里叶技术进行计算。一般对该种波形的时间连续信号用采样装置进行等间隔采样,并把采样值依次转换成数字序列传输至处理器进行快速谐波分析,离散傅里叶变换(DFT)的提出为傅里叶技术在计算机领域的应用铺平了道路,但对于谐波监测系统而言直接进行DFT计算量较大,难以保证监测系统的实时性,所以监测系统采用了一种基于滑窗迭代思想的DFT快速检测算法。  硬件结构  谐波检测系统硬件主要由电压电流采集电路,信号调理电路,模数转换电路,显示及按键电路等组成。系统的处理器采用S3C2410,是一款基于20T内核的RISC嵌入式微处理器。20T核由ARM9TDMI、存储管理单元MMU和高速缓存三部分组成。其中,MMU可以管理虚拟内存,高速缓存由独立的16KB地址和16KB数据高速Cache组成。ARM920T有两个内部协处理器:CP14和CP15。CP14用于调试控制,CP15用于存储系统控制以及测试控制。根据国家对谐波测量仪器的要求,A级测量仪器应分析到50次谐波,根据采样定理的要求,采样频率与被采样信号频谱中最高频率的比值应大于2,因此工频周期采样点数为256时,采样频率为640kHz。S3C2410的主频能达到203MHz完全能够满足采集要求。而且能有一定的时间可以处理显示和按键扫描等。1.电源电路设计S3C2440A需要3.3V的和1.3V的两路电源供电。图中所示电路只为S3C2440A核心供电,独立的设计,目的是为了保证系统的良好运行。2. 信号的采集  信号的采集无论是对原始电网谐波分析,还是对电网的频率等其他电能质量参数的精确测量都十分关键。在监测仪中采用精密电压互感器,将输入端电压信号转化为毫安级的电流信号,经过电阻取得电压信号。此电压信号经多路选择开关后跟随、放大,调理到A/D转换器允许的电压输入范围。3.信号调理电路  多路开关输出的电压信号经过同步锁相电路后接MCU的中断引脚,使MCU可控制A/D转换器对输入信号保持同步采样。由于电压互感器的隔离作用,外部干扰不易对系统内部产生影响。考虑到控制器主要关注的是电网谐波参数,在设计信号调理电路时尽量避免使用电容,以免产生不必要的滤波和相移。AD芯片的选择  虽然S3C2440A自带内部AD,但精度只有10位,为满足采集精度要求该监测仪AD转换芯片采用MAXIM公司的MAX125,它是一种八通道高速14位模数转换器件,采用逐次逼近转换技术,模数转换器的转换时间为3μs。&软件设计  系统的软件分为系统初始化、采样转换、FFT计算、数据统计分析存储、时钟读写、人机交互以及和上位机的通信等几个模块。  由于嵌入式系统体积有限,存储设备的容量有限不可能保存长期的测量数据,所以可以通过将数据上传至PC机大容量硬盘中的办法保存历史数据,然后利用上位机软件对谐波数据进行宏观分析。&系统的抗干扰设计  为了保证系统的稳定工作,系统在硬件设计中采取以下抗干扰措施。
  (1)给处理器电源加滤波电路,以减少电源噪声对微处理器的干扰。
  (2)对电路板进行合理布局,数模分区,强电、弱电分区,将处理器尽可能远离开关电源等强干扰源。
  (3)在进行DFT变换前,多采集几组数据求平均值后在进行计算,可以有滤除干扰的作用。  本文设计的三相电压谐波监测仪充分利用了32位arm9处理器的运算速度快、处理数据能力强及片上资源丰富等优点,合理进行外围电路扩展,在系统硬件和软件上采取了多项抗干扰措施,使该监测仪完全能够满足对电力系统各项参数监测的实际需求,必将有着良好的应用前景。
评论 (0) | 阅读 (13)
登录发表评论
记住登录名蓝牙模块在HHARM2410上的移植
---同济大学高性能计算中心 Dennis He
  最近两天在HHARM2410-R3上移植了USB蓝牙设备和 BlueZ 蓝牙协议栈,呵呵,蓝牙果然是个很好的东西,协议栈内容很丰富,挂上去以后可以使用很多功能。我现在就可以用它来接收 GPS 数据以及和用手机上网。我是在做车载的,所以特别有用。积累了一些关于蓝牙的知识,但是算是初步的,把我的经验发上来,各位做过蓝牙的大哥请多指导。
  一切版权归bluez的作者---同济大学高性能计算中心 Dennis
  欢迎各位发邮件给我和我讨论 dennis.he.
  先介绍一下硬件,我用的是电脑卖场里面随便买到的 USB 蓝牙适配器,价&#26684;在80元左右,应该是台产的,没有牌子,像一个小一点的U盘。买之前叫卖家在windows下测试一下,带一个带蓝牙的手机过去试试看,确认能用再买。
  linux上的蓝牙协议栈有好几个,官方的蓝牙协议栈是Bluez,在www.bluez.org上能找到所有的说明文档和源代码。我先是在自己的pc上安装了bluez的协议栈,然后又把它移植到了华恒HHARM2410-R3上。
(一) 在Red hat 9上安装Bluez
  在pc上的安装我参考了O'Reilly的Linux Unwired一书,chapter 7中详细地介绍了linux下的bluetooth的基础知识、安装、配置和使用。安装前必须了解一下bluez的基本结构,直接位于发射传输协议之上的协议是HCI(host control interface),我的手机和蓝牙GPS用到的高层协议是服务发现协议SDP和模拟串口的协议RFCOMM,中间那一层协议是L2CAP,应该是处理逻辑链路的吧,我并不是很清楚,请参考bluez的官方文档。
HHARM2410-R3上用到内核版本是2.4.18,于是我在pc上安装bluez时也使用了2.4.18的内核。使用bluez必须要对内核打patch的,于是到www.kernel.org上下载了linux-2.4.18.tar.bz2后到http://www.bluez.org/patches.html上下载针对2.4.18的patch,patch-2.4.18-mh15.gz。于是,解压,打patch:
# tar xjvf linux-2.4.18.tar.bz2
# cd linux/
# gzip -dc ../patch-2.4.18-mh15.gz | patch -p1
注意一下这时的patch的输出,在源代码方面的patch是针对driver/、include/、net/目录下的代码的修改,并没有修改到内核部分的内容,应该没有修改到linux核心的东西,在移植到S3C2410时应该不会有太大的问题。
下面就是编译内核,在config的时候关于bluez我的配置是这样的:
# Bluetooth support
CONFIG_BLUEZ=m
CONFIG_BLUEZ_L2CAP=m
CONFIG_BLUEZ_SCO=m
CONFIG_BLUEZ_RFCOMM=m
CONFIG_BLUEZ_RFCOMM_TTY=y
CONFIG_BLUEZ_BNEP=m
CONFIG_BLUEZ_BNEP_MC_FILTER=y
CONFIG_BLUEZ_BNEP_PROTO_FILTER=y
# Bluetooth device drivers
CONFIG_BLUEZ_HCIUSB=m
# CONFIG_BLUEZ_HCIUSB_SCO is not set
CONFIG_BLUEZ_HCIUART=m
CONFIG_BLUEZ_HCIUART_H4=m
CONFIG_BLUEZ_HCIUART_BCSP=m
# CONFIG_BLUEZ_HCIUART_BCSP_TXCRC is not set
# CONFIG_BLUEZ_HCIBFUSB is not set
CONFIG_BLUEZ_HCIDTL1=m
CONFIG_BLUEZ_HCIBT3C=m
CONFIG_BLUEZ_HCIBLUECARD=m
CONFIG_BLUEZ_HCIBTUART=m
CONFIG_BLUEZ_HCIVHCI=m
  供大家参考,Linux Unwired一书中有详细的说明,注意如果使用make menuconfig,一定要打开一下.config文件看看CONFIG_BLUEZ_RFCOMM_TTY=y,不能为n或者m。还有注意CONFIG_USB_BLUETOOTH一定不能选(在USB support下),否则会影响到bluez的运行的。
  内核编译好了就开始准备bluez的库和工具了。到http://www.bluez.org/download.html上下载最新的bluez程序包,我只下载了bluez-libs-2.20.tar.gz,bluez-utils-2.20.tar.gz,bluez-pin-0.25.tar.gz三个包,分别是库,工具集和由bluez提供的一个 pin_helper。由于在pc下,安装的过程没什么好说的,解压,./configure,make,make
  然后就是注意一下默认配置目录/etc/bluetooth/下的hcid.conf配置文件,这是用来配置后台daemon进程hcid的。如果把这台pc机器&#43;蓝牙适配器看成是一个蓝牙设备的话,进程hcid就管理这个蓝牙设备的基本配置信息,例如名称,class,地址,feature等等。还有当设备与其他蓝牙设备Bonding/Pairing即所谓的配对时,处理PIN code的程序也是hcid,而在hcid.conf脚本中比较重要的一项就是pin_helper,默认的配置是pin_helper=/usr/bin/bluepin,这个是python写的用来读取用户输入的PIN
code的程序,安装bluez-pin包的时候装在/usr/bin下的。
  这里有必要了解一下配对的过程,我感觉就是两个设备互相通密码建立相互之间连接的过程。我看了hcid部分的代码,了解的大致是这样:比如两个蓝牙设备A和B,A先发送要求配对的请求给B,B由用户设置好配对的密码即PIN code,然后回一个消息给A,说你想配对可以呀,知道我的密码吗?然后A就发送PIN code过去,B看和自己的密码相符合,就发送一个replyOK的消息给A,这样两者就建立起来了信任关系。
  在pc&#43;蓝牙适配器这个蓝牙设备A上,如果这个设备先发送配对请求给另一个远程设备B,那么当B发送询问密码请求过来时,在A上运行的hcid后台进程就通过一个pin_helper的程序读取PIN code,并发送回给B;如果远程设备B先发送配对请求给A,hcid上用作验证的PIN code就是/etc/bluetooth/pin的内容,如果读取失败程序在启动的时候会默认地设置一个密码的,代码在bluez-utils/hcid/security.c中的init_security_data函数中,默认的是BlueZ。为了和我的手机相配,我把它改成了123,手机只能输入数字。
  关于其他hcid.conf的设置,请man hcid.conf。
  设置好以后,换上新内核,启动linux。插入USB蓝牙适配器,# dmesg | tail会发现有usb.c: USB device 2 (vend/prod 0x1) is not claimed by any active driver.这个问题,不管它,只要有usb.c: registered new driver hci_usb的消息就可以,然后 # lsmod 会发现hci_usb的模块被安装了,再# modprobe
rfcomm,这样基本上所有的模块都安装齐了。
# hciconfig hci0 up
# hcid -f /etc/bluetooth/hcid.conf
启动hci设备和hcid精灵进程
# hciconfig -a
hci0: Type: USB
BD Address: 00:11:67:0F:BB:A1 ACL MTU: 678:8 SCO MTU: 48:10
UP RUNNING PSCAN ISCAN
RX bytes:115 acl:0 sco:0 events:15 errors:0
TX bytes:313 acl:0 sco:0 commands:15 errors:0
Features: 0xff 0xff 0x8d 0x78 0x08 0x18 0x00 0x00
Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3
Link policy: RSWITCH HOLD SNIFF PARK
Link mode: SLAVE ACCEPT
Name: 'BlueZ (0)'
Class: 0x000100
Service Classes: Unspecified
Device Class: Computer, Uncategorized
HCI Ver: 1.2 (0x2) HCI Rev: 0x1ae LMP Ver: 1.2 (0x2) LMP Subver: 0x1ae
Manufacturer: Integrated System Solution Corp. (57)
可以看到目前设备的配置情况,有些是从hcid.conf中读取的,有些是从设备中读取的。
下面,打开手机上的蓝牙,启动蓝牙GPS
# hcitool scan
Scanning ...
00:0E:07:58:1A:33 T628
00:08:1B:C0:D1:3C HOLUX GR-231
这样就看到了两个设备了,我用的是索爱的T628和HOLUX的蓝牙GPS,前面的一串应该是蓝牙设备唯一的地址。
#sdptool browse 可以看到每个设备所提供的服务
Inquiring ...
Browsing 00:0E:07:58:1A:33 ...
Service Name: Dial-up Networking
Service RecHandle: 0x10000
Service Class ID List:
&Dialup Networking& (0x1103)
&Generic Networking& (0x1201)
Protocol Descriptor List:
&L2CAP& (0x0100)
&RFCOMM& (0x0003)
Channel: 1
Profile Descriptor List:
&Dialup Networking& (0x1103)
Version: 0x0100
.............
Service Name: Serial Port 1
Service RecHandle: 0x10003
Service Class ID List:
&Serial Port& (0x1101)
Protocol Descriptor List:
&L2CAP& (0x0100)
&RFCOMM& (0x0003)
Channel: 4
............
Service Name: OBEX Object Push
Service RecHandle: 0x10005
Service Class ID List:
&OBEX Object Push& (0x1105)
Protocol Descriptor List:
&L2CAP& (0x0100)
&RFCOMM& (0x0003)
Channel: 10
&OBEX& (0x0008)
Profile Descriptor List:
&OBEX Object Push& (0x1105)
Version: 0x0100
Browsing 00:08:1B:C0:D1:3C ...
  手机上绑定了很多的服务,有拨号服务,音频服务,串口服务,文件交换服务(OBEX)...在SDP协议下,每个服务绑定到一个Channel上。GPS上没有绑定服务,它只作为虚拟串口设备来使用。
利用实用工具rfcomm可以把遵循RFCOMM的服务bind到一个类&#20284;的串口设备上。在绑定之前,必须确保/dev下有rfcomm*的设备,如果没有,就自己建立:
# mknod -m 666 /dev/rfcommX c 216 X (X是数字)
  这样就可以绑定了,比如我需要用手机拨号上网的功能,看到它的Channel 1是RFCOMM的Dialup Networking功能,则:
# rfcomm bind 0 00:0E:07:58:1A:33 1
  即将00:0E:07:58:1A:33设备的Channel 1服务绑定到/dev/rfcomm0上,这样,就相当于建立了一个虚拟的串行连接到一个可以拨号的无线modem上了,打开minicom,设置串口为/dev/rfcomm0,波特率1,键入atz,返回OK。用ppp就可以拨号上网了,第一次连接时手机会弹出个输入框问PIN code,以后就不用了。
  GPS设备只是作为串口来用的,也很简单:
# rfcomm bind 1 00:08:1B:C0:D1:3C
  打开minicom设置波特率为4800就可以读GPS数据了,大功告成!
  另外,sdpd程序是本设备提供给对外的看到的服务,可以通过sdptool add --channel=X SP来增加对外的服务,我没有研究过。还有对于文件传输OBEX和个人局域网BNEQ还需要继续学习。
(二)在HHARM2410-R3上的移植
  完成了在普通red hat上的安装,熟悉了蓝牙协议栈一些基本的东西,下面的任务就是把协议栈搬到开发板上了。
  第一步当然是内核了,由于华恒的内核代码改过,我也不知道从bluez上下载的patch能不能使用,试试看了,只好。
# cd /HHARM2410/kernel
# gzip -dc ~/patch-2.4.18-mh15.gz | patch -p1
# find ./ -name '*rej'
./fs/cramfs/inode.c.rej
  不好,有文件不能patch,看看是针对cramfs文件系统的patch,我也不清楚为什么bluez的patch会修改到cramfs,不过我想问题应该不大。内核源代码关于bluetooth的部分华恒应该没有改过,因此patch的主要部分应该是没有问题的。如果内核编译后发生问题,我想大概也只有把内核代码翻出来看了。
先就这样了,用用试试看好了。与普通pc上的类&#20284;,只不过有些是m的现在统统为y了。我的配置关于Bluez的部分设置为:
# Bluetooth support
CONFIG_BLUEZ=y
CONFIG_BLUEZ_L2CAP=y
# CONFIG_BLUEZ_SCO is not set
CONFIG_BLUEZ_RFCOMM=y
CONFIG_BLUEZ_RFCOMM_TTY=y
CONFIG_BLUEZ_BNEP=y
CONFIG_BLUEZ_BNEP_MC_FILTER=y
CONFIG_BLUEZ_BNEP_PROTO_FILTER=y
# CONFIG_BLUEZ_HIDP is not set
# Bluetooth device drivers
CONFIG_BLUEZ_HCIUSB=y
# CONFIG_BLUEZ_HCIUSB_SCO is not set
# CONFIG_BLUEZ_HCIUART is not set
# CONFIG_BLUEZ_HCIBFUSB is not set
# CONFIG_BLUEZ_HCIDTL1 is not set
# CONFIG_BLUEZ_HCIBT3C is not set
# CONFIG_BLUEZ_HCIBLUECARD is not set
# CONFIG_BLUEZ_HCIBTUART is not set
# CONFIG_BLUEZ_HCIVHCI is not set
  device部分就设了个USB的,其他的就不设置了。
  下面继续make zImage的常规过程,OK,没有发生编译问题,可以稍微舒口气了。
下面要移植Bluez的基础库了,在Redhat 9下执行
# ldd /usr/lib/libbluetooth.so.1.0.17
libc.so.6 =& /lib/libc.so.6 (0x)
/lib/ld-linux.so.2 =& /lib/ld-linux.so.2 (0x)
  发现没有依赖什么莫名其妙的库,应该换个编译器就可以了,configure一下就可以了。我的配置命令很简单:
# ./configure --host=armv4l --prefix=/HHARM2410/applications/bluezport/libs CC=/opt/host/armv4l/bin/armv4l-unknown-linux-gcc CPP=/opt/host/armv4l/bin/armv4l-unknown-linux-cpp AR=/opt/host/armv4l/bin/armv4l-unknown-linux-ar STRIP=/opt/host/armv4l/bin/armv4l-unknown-linux-strip
RANLIB=/opt/host/armv4l/bin/armv4l-unknown-linux-ranlib
LD=/opt/host/armv4l/bin/armv4l-unknown-linux-ld
# make install
  OK了,到了/HHARM2410/applications/bluezport/libs下看看,我也不清楚为什么,居然只有.a和.la的静态库,没有动态库。只好自己动手,到bluz-libs-2.17/src/下,自己编译动态库:
# /opt/host/armv4l/bin/armv4l-unknown-linux-gcc -shared -o libbluetooth.so.1.0.17 bluetooth.o hci.o sdp.o
再做两个符号连接
# ln -s libbluetooth.so.1.0.17 libbluetooth.so
# ln -s libbluetooth.so.1.0.17 libbluetooth.so.1
  好了,库交叉编译完毕,mv到/HHARM2410/application/bluezport/libs/lib文件夹下就可以了。
  接着移植Bluez的工具集。与库类&#20284;,先看一下各个程序需要用到什么库,比如:
#ldd /usr/sbin/hcid
libbluetooth.so.1 =& /usr/lib/libbluetooth.so.1 (0x)
libc.so.6 =& /lib/libc.so.6 (0x)
/lib/ld-linux.so.2 =& /lib/ld-linux.so.2 (0x)
  挨个试试需要用的工具,发现需要的库华恒和Bluez都提供了,应该换个编译器编译一下就可以了。编译之前我为了到板子上与我自己的手机连接方便修改了bluez-utils-2.17/hcid/security.c文件,在init_security_data函数中的设置默认的密码,非常简单地改了两行:
strcpy(hcid.pin_code, &123&);
hcid.pin_len = 3;
  然后configure我想就行了,我的configure设置为:
# ./configure --prefix=/HHARM2410-R3/applications/bluezport/utils --includedir=/HHARM2410-R3/applications/bluezport/libs/include --libdir=/HHARM2410-R3/applications/bluezport/libs/lib --with-bluez=/HHARM2410-R3/applications/bluezport/libs
--disable-test --disable-cups --disable-pcmia --host=armv4l CC=/opt/host/armv4l/bin/armv4l-unknown-linux-gcc CPP=/opt/host/armv4l/bin/armv4l-unknown-linux-cpp AR=/opt/host/armv4l/bin/armv4l-unknown-linux-ar STRIP=/opt/host/armv4l/bin/armv4l-unknown-linux-strip
RANLIB=/opt/host/armv4l/bin/armv4l-unknown-linux-ranlib LD=/opt/host/armv4l/bin/armv4l-unknown-linux-ld
  我在这步make的时候出现了一点小错误,好像是说PATH_MAX没有定义,这个是LINUX设置的存放路径名缓冲区的最大长度。应该是少包含了一个头文件造成的。我没有去仔细考究,就在当前文件下的config.h中添加了三行:
#ifndef PATH_MAX
#define PATH_MAX 4095/* PAGE_SIZE - 1 */
  采用简单粗鲁的添加定义的方式。再make,通过。
# make install
  好了,工具集都在/HHARM2410-R3/applications/bluezport/util下了
最后,由于在PC的LINUX下的默认pin_helper /usr/bin/bluepin是用python写的代码,在2410上当然不能用了,所以要自己写一个pin_helper的程序。翻翻/usr/bin/bluepin的代码以及hcid/security.c的代码,事实上hcid进程在验证PIN code的时候开了一个pipe指向pin_helper进程的标准输出,pin_helper进程向用户询问PIN code,如果用户输入密码XXXX就以&PIN:XXXX&的形式写到标准输出中去,如果用户reject就写个&ERR&回去。
  我以一种最简单的方式实现pin_helper程序,即固定地写一个code回去,比如123,牺牲安全性。
用脚本实现就是:
echo &PIN:123&
用C实现一个就是:
#include &stdio.h&
int main(int argc, char* argv[])
printf(&PIN:123&);
  交叉编译成my_pin_helper再放到板子的/usr/bin下,那么就可以把板子的hcid.conf修改成:
pin_helper /usr/pin/my_pin_helper
  后来,我在板子上也用MiniGUI写了一个pin_helper,也挺简单的。
  好了,一切准备完毕,做好ramdisk,记得在/dev下mknod几个rfcomm,放到板子上,可以运行!
插上USB适配器,连模块都不用probe
# hciconfig hci0 up
# hcid -f /etc/bluetooth/hcid.conf
# hciconfig -a
看到设备了,其他的运行都OK。结合ppp就可以用手机上网了~~&
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:522627次
积分:8228
积分:8228
排名:第1651名
原创:89篇
转载:1247篇
译文:24篇
评论:14条
(60)(37)(62)(14)(1)(45)(16)(2)(2)(2)(4)(37)(5)(13)(4)(40)(10)(1)(9)(21)(2)(7)(10)(20)(57)(39)(30)(11)(18)(20)(33)(41)(7)(10)(36)(24)(60)(39)(49)(66)(53)(57)(41)(28)(26)(55)(17)(5)(20)(62)(44)}

我要回帖

更多关于 qdhh是什么意思 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信