手表项目bluez5开发总结

命令:

		上电启动流程:
		systemctl start bluetooth
		rfkill unblock bluetooth
		hciattach -n /dev/ttyBT0 sprd_sharkle
		hciconfig hci0 up
		hcitools scan
		l2ping xxxx
		test-adapter discoverable on
		
		另外 hcidump logger 抓圆心log    
		logcat  抓安卓log
		mount -o rw,remount /
	   还有就是自己写的cdb  内部就是scp和ssh	
	   systerm用户下:./usr/lib/bluez/test/list-devices 查看蓝牙已配对设备

RPM
安装
rpm -ivh --force(强制) --nodeps(不检查依赖)
卸载
rpm -e xxx

rpm -qa 查看已经安装的包

rpm -qf <命令> 查看该命令来自哪个包

rpm的spec文件值得学习
rpmbuild -bb --build-in-place <spec文件>

rpm包数字签名问题
http://www.360doc.com/content/06/1227/16/15540_309102.shtml

我只做了串口蓝牙驱动 的 hciattach初始化部分
首先在hciattach.c的main函数中,先初始化配置串口,然后调用init,在init函数中,根据argv传进来的参数,遍历,调用hciattach_sprd_sharkle.c中的sprd_sharkle_config_init
在hciattach_sprd_sharkle.c中,中心思想就是建立两个buf,通过write,发送出去,具体buf中的参数是什么,我是通过抓安卓log获取的。
流程:组建buf1->wirte发送—>read接受返回值->组建buf2->wirte->read
具体看hciattach_sprd_sharkle.c

编译的时候 Makefile.tools 中要加入hciattach_sprd.c和hciattach_sprd.h

至于其他部分略看了下:
要搞清数据是怎么在每一层传递的,
至于底层驱动,就是一个串口驱动
https://wenku.baidu.com/view/e7babe946037ee06eff9aef8941ea76e59fa4a56.html
可以用冰心文档下载器免费下载

至于systemctl 这个命令 是专门启动系统进程的
可以百度深度了解下

通过命令rpm --showrc查看实现代码。另外直接通过 rpm --eval "%{macro}"来查看具体对应路径。
比如我们要查看%{_bindir}的路径,就可以使用命令rpm --eval "%{ _bindir}"来查看。
另外,所有的宏都可以在/usr/lib/rpm/macros里找到。
下面是宏对应路径一览表:
Macros mimicking autoconf variables
%{_sysconfdir} /etc
%{_prefix} /usr
%{_exec_prefix} %{_prefix}
%{_bindir} %{_exec_prefix}/bin
%{_lib} lib (lib64 on 64bit systems)
%{_libdir} %{_exec_prefix}/%{_lib}
%{_libexecdir} %{_exec_prefix}/libexec
%{_sbindir} %{_exec_prefix}/sbin
%{_sharedstatedir} /var/lib
%{_datadir} %{_prefix}/share
%{_includedir} %{_prefix}/include
%{_oldincludedir} /usr/include
%{_infodir} /usr/share/info
%{_mandir} /usr/share/man
%{_localstatedir} /var
%{_initddir} %{_sysconfdir}/rc.d/init.d

Note: On releases older than Fedora 10 (and EPEL), %{_initddir} does not exist. Instead, you should use the deprecated %{_initrddir} macro.

RPM directory macros
%{_topdir} %{getenv:HOME}/rpmbuild
%{_builddir} %{_topdir}/BUILD
%{_rpmdir} %{_topdir}/RPMS
%{_sourcedir} %{_topdir}/SOURCES
%{_specdir} %{_topdir}/SPECS
%{_srcrpmdir} %{_topdir}/SRPMS
%{_buildrootdir} %{_topdir}/BUILDROOT

Note: On releases older than Fedora 10 (and EPEL), %{_buildrootdir} does not exist.

Build flags macros
%{_global_cflags} -O2 -g -pipe
%{_optflags} %{__global_cflags} -m32 -march=i386 -mtune=pentium4 # if redhat-rpm-config is installed

Other macros
%{_var} /var
%{_tmppath} %{_var}/tmp
%{_usr} /usr
%{_usrsrc} %{_usr}/src
%{_docdir} %{_datadir}/doc

Reference:
http://fedoraproject.org/wiki/Packaging/RPMMacros#RPM_directory_macros

开机自启动hciattach.service
在/lib/systemd/system/下建立hciattach.service

[Uint]
Description=XXXX
[Service]
PermissionsStartOnly=1
User=root
Type=simple
ExecStart=/usr/bin/btdev-start.sh
ExecStop=/usr/bin/btdev-stop.sh
Restart=always

然后在system/basic.target.wants下建立一个链接,指向hciattach.service 。 ln -s …/hciattach.service hciattach.service

btdev-start.sh:

#!/bin/bash
/usr/bin/rfkill unblock bluetooth
sleep 1
/usr/sbin/hciattach -n /dev/ttyBT0 sprd_sharkle

btdev-stop.sh

#!/bin/sh
/usr/bin/killall hciattach

/usr/bin/rfkill block bluetooth

移植Makefile代码
可以在原来可以执行的地方 make showcommands > log.txt
通过查看log,一步一步的移植,确定编译器, out环境等等

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_kerneler

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值