命令:
上电启动流程:
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环境等等