搜索
bottom↓
回复: 51

救命!linux平台的蓝牙驱动怎么搞?AP6212的

[复制链接]

出0入0汤圆

发表于 2018-8-15 17:49:56 | 显示全部楼层 |阅读模式
刚来新公司,拿到个小任务,这边用海思平台,要加载一下AP6212的蓝牙固件,然后实现手机和海思开发板进行通信。
这,讲真,我刚学完韦东山讲的linux驱动视频,这个完全超纲了。。。完全不会,一脸懵逼。。。3天了。。。

从网上搜,包括自己看文档,大致会分为以下几个步骤:
1.配置内核,让其支持蓝牙(AP6212是串口接口蓝牙),并在内核启动后,加载AP6212的固件,固件要事先放到开发板的文件系统中。
2.可能需要AP6212的驱动程序(找不到现成的),打开AP6212芯片的电源开关,就是操作GPIO。
然后使用驱动程序,完成Soc的串口和AP6212进行通信,这个是HCI部分?我不太确定。
3.此后估计开发板需要移植bluez协议栈,使用蓝牙工具hcitool或gatttool来实现一个蓝牙串口。

这是我能想到的所有的步骤了,具体操作网上零零碎碎的也能搜得到,只能瞎试。。。

在此特地问一下大家,我这个任务要完成的步骤是什么,怎么做。
原谅我刚从单片机转过来,驱动工作经验太菜了,,,


大哥们求帮忙





阿莫论坛20周年了!感谢大家的支持与爱护!!

你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。

出0入0汤圆

 楼主| 发表于 2018-8-15 17:53:43 | 显示全部楼层
我另一个同事完成了AP6212的wifi驱动部分,
让我参考他写的文档,完成蓝牙驱动部分。

出0入0汤圆

发表于 2018-8-15 17:56:12 | 显示全部楼层
没有做过哈

出0入0汤圆

发表于 2018-8-15 18:04:55 | 显示全部楼层
楼主厉害啊 !
从单片机升级到Linux了 还是软硬都搞  不错
一直想入门Linux驱动,一直也没入得了门

我目前在做一个Android手持设备的项目,用的是瑞芯微的RK3288,买了Firefly的开发板,我看这个开发板上用的就是AP6212,这个Firefly的开发板开源做的挺好,原理图 源代码什么的都有,下面是网址你去看看吧,不知道对你有没有帮助。
另外,现在新版本的Linux驱动都是设备树了吧,我看我们公司搞软件的就是配置一些东西驱动就好了,好像比以前好弄吧?韦东山的视频我也看过,他讲的应该还不是设备树,不过以前的设备驱动架构搞明白了现在的设备树肯定能明白,应该是更简单了吧。
http://www.t-firefly.com/doc/download/16.html

出20入25汤圆

发表于 2018-8-15 18:09:18 来自手机 | 显示全部楼层
讲linux的很多,真正告诉你做个应用,做个驱动的几乎没有

出0入442汤圆

发表于 2018-8-15 18:25:21 来自手机 | 显示全部楼层
chenchaoting 发表于 2018-8-15 18:09
讲linux的很多,真正告诉你做个应用,做个驱动的几乎没有

nnd做驱动得会内核,这些视频的有几个真会的

出0入0汤圆

发表于 2018-8-15 18:44:23 | 显示全部楼层
看你的描述  这小公司心得有多大:)

出0入0汤圆

发表于 2018-8-15 19:02:14 | 显示全部楼层
这真有些超纲,熬过去,要花些时间

出0入0汤圆

发表于 2018-8-15 19:56:37 来自手机 | 显示全部楼层
我那开发版,几年了,就会刷固件。。。

出0入0汤圆

发表于 2018-8-15 21:26:03 | 显示全部楼层
现在linux很少有操作GPIO的了,都是改设备树。

出130入20汤圆

发表于 2018-8-16 08:18:50 | 显示全部楼层
还是玩单片机爽,哈哈

出0入114汤圆

发表于 2018-8-16 08:41:06 来自手机 | 显示全部楼层
去AP6212官网找找,找找类似的,移植过来

出0入0汤圆

 楼主| 发表于 2018-8-16 09:02:22 | 显示全部楼层
cloudxxcloud 发表于 2018-8-16 08:41
去AP6212官网找找,找找类似的,移植过来

谢谢,我去看看

出0入0汤圆

 楼主| 发表于 2018-8-16 09:05:55 | 显示全部楼层
haffman1 发表于 2018-8-15 18:44
看你的描述  这小公司心得有多大:)

刚来公司,也不是紧急的东西,就是做做看看我水平呗
明显,我可能被开除

出0入0汤圆

 楼主| 发表于 2018-8-16 09:07:02 | 显示全部楼层
saddam911 发表于 2018-8-15 18:04
楼主厉害啊 !
从单片机升级到Linux了 还是软硬都搞  不错
一直想入门Linux驱动,一直也没入得了门

谢谢,我去瑞芯微官网看看

出0入0汤圆

 楼主| 发表于 2018-8-16 09:14:12 | 显示全部楼层
wye11083 发表于 2018-8-15 18:25
nnd做驱动得会内核,这些视频的有几个真会的

还行,学完韦东山视频,我觉得很大程度上是知识的分享方法错了。驱动技术本身并不难。
很多人喊驱动难,内核难,让新手望而却步。这样不好

出0入0汤圆

发表于 2018-8-16 09:18:56 | 显示全部楼层
要原厂驱动 和 移植文档,这个让boss想办法。
不要自己瞎折腾。

出0入0汤圆

发表于 2018-8-16 09:39:49 | 显示全部楼层
AP6212移植

出0入0汤圆

发表于 2018-8-16 09:50:15 | 显示全部楼层
arm linux串口蓝牙工具移植及使用

出0入0汤圆

 楼主| 发表于 2018-8-16 09:50:20 | 显示全部楼层
728196 发表于 2018-8-16 09:18
要原厂驱动 和 移植文档,这个让boss想办法。
不要自己瞎折腾。

没有文档,原来的同事也是自己从网上各种搜索搞的WiFi驱动。
我们这边应该和海思官方没有任何沟通,SDK都是朋友之间要到的。

出0入0汤圆

发表于 2018-8-16 10:50:31 | 显示全部楼层
我之前是调试 Android bludroid的, 芯片是bcm43455 大概顺序
1.调整设备树,调试 上电
2. 调整设备树, 调试 rfkill, wakeup 管脚
3.调整设备树, 调试串口
4. 按照实际情况配置 bludroid 配置文件(etc/bluetooth/bt_vendor.conf),里面配置了 协议栈使用哪个串口通信,固件位置,名称等信息

出0入0汤圆

发表于 2018-8-16 11:13:09 来自手机 | 显示全部楼层
公司有两种板子都用到这种模块ap6255,imx6的很快搞定了,stm32的还没动静。没有技术支持很难。

出0入0汤圆

发表于 2018-8-16 11:37:11 | 显示全部楼层
只知其然,而不知其所以然的结果就是这样, 没有别人的例子,就没法自己搞。

出0入0汤圆

发表于 2018-8-16 11:58:47 | 显示全部楼层
楼主是怎样从单片机的工作换到Linux的?我现在也在搞Linux

出0入0汤圆

发表于 2018-8-16 12:37:53 | 显示全部楼层
WM_CH 发表于 2018-8-16 09:05
刚来公司,也不是紧急的东西,就是做做看看我水平呗
明显,我可能被开除  ...

小公司里玩linux太累了  除非有人指导
另外linux并不是像你说的那么简单的  
网上那种教程纯粹是表面东西  没多大意义

出0入0汤圆

 楼主| 发表于 2018-8-16 13:27:45 | 显示全部楼层
haffman1 发表于 2018-8-16 12:37
小公司里玩linux太累了  除非有人指导
另外linux并不是像你说的那么简单的  
网上那种教程纯粹是表面东西 ...

哦哦,你是怎么学会的啊,教一下我啊大哥

出0入0汤圆

 楼主| 发表于 2018-8-16 13:28:43 | 显示全部楼层
spcm 发表于 2018-8-16 11:13
公司有两种板子都用到这种模块ap6255,imx6的很快搞定了,stm32的还没动静。没有技术支持很难。 ...

imx6怎么搞的啊,方便分享一下吗

出0入0汤圆

 楼主| 发表于 2018-8-16 13:29:15 | 显示全部楼层
hu9977 发表于 2018-8-16 11:58
楼主是怎样从单片机的工作换到Linux的?我现在也在搞Linux

我看的韦东山视频     

出0入0汤圆

 楼主| 发表于 2018-8-16 13:30:17 | 显示全部楼层
mikewang011 发表于 2018-8-16 10:50
我之前是调试 Android bludroid的, 芯片是bcm43455 大概顺序
1.调整设备树,调试 上电
2. 调整设备树,  ...

嗯,我在看一篇网上的文章,跟你这个差不多过程,谢谢。
https://blog.csdn.net/gatieme/article/details/48751743

出0入0汤圆

发表于 2018-8-16 16:51:51 | 显示全部楼层
看LZ积分应该是技术大牛级别了。。。

出0入0汤圆

 楼主| 发表于 2018-8-16 17:40:42 | 显示全部楼层
htjgdw 发表于 2018-8-16 16:51
看LZ积分应该是技术大牛级别了。。。

大水牛         

出0入0汤圆

发表于 2018-8-17 07:12:22 | 显示全部楼层
WM_CH 发表于 2018-8-16 13:28
imx6怎么搞的啊,方便分享一下吗

买周立功一块开发板用的AP6xx,从上面改的,代码分享不了不好意思

出0入0汤圆

发表于 2018-8-17 09:27:05 | 显示全部楼层
WM_CH 发表于 2018-8-16 09:14
还行,学完韦东山视频,我觉得很大程度上是知识的分享方法错了。驱动技术本身并不难。
很多人喊驱动难, ...

看了几期,就这么有自信了,我也去看看

出0入0汤圆

 楼主| 发表于 2018-8-17 15:58:09 | 显示全部楼层
spcm 发表于 2018-8-17 07:12
买周立功一块开发板用的AP6xx,从上面改的,代码分享不了不好意思

            

出0入0汤圆

发表于 2018-8-17 16:02:46 | 显示全部楼层
小民可以去问问 不再犹豫 啊。

出0入0汤圆

发表于 2018-8-17 16:09:21 | 显示全部楼层
我最近也在用这个 正基的WIFI模块,不过是用 STM32 来驱动。

出0入0汤圆

 楼主| 发表于 2018-8-17 16:38:02 | 显示全部楼层
meirenai 发表于 2018-8-17 16:09
我最近也在用这个 正基的WIFI模块,不过是用 STM32 来驱动。

谢谢老铁救场      

出0入0汤圆

发表于 2018-8-17 19:58:03 | 显示全部楼层
https://debugdump.com/t_245.html
https://debugdump.com/t_1133.html

linux驱动 蓝牙post机的ap6210b

出0入0汤圆

 楼主| 发表于 2018-8-18 14:14:00 | 显示全部楼层
34480016 发表于 2018-8-17 19:58
https://debugdump.com/t_245.html
https://debugdump.com/t_1133.html

谢谢大哥,看了您的帖子,很实用,谢谢

出0入0汤圆

发表于 2018-8-31 13:39:16 | 显示全部楼层
大牛现在移植的怎么样了,出来分享一下

出0入0汤圆

发表于 2018-8-31 13:49:02 来自手机 | 显示全部楼层
可以直接找正基要驱动代码和移植手册。

出0入0汤圆

 楼主| 发表于 2018-8-31 18:10:04 | 显示全部楼层
mangocity 发表于 2018-8-31 13:49
可以直接找正基要驱动代码和移植手册。

有联系方式吗 代理的也可以

出0入0汤圆

发表于 2018-8-31 18:31:22 来自手机 | 显示全部楼层
楼主不会是培训机构出来的吧,出来简历就是linux驱动开发三年经验,哈哈

出0入0汤圆

 楼主| 发表于 2018-9-2 11:43:44 | 显示全部楼层
higeo 发表于 2018-8-31 18:31
楼主不会是培训机构出来的吧,出来简历就是linux驱动开发三年经验,哈哈

哈哈哈哈嗝,很明显不是,培训机构出来的估计会这个

出0入0汤圆

 楼主| 发表于 2018-9-26 15:29:03 | 显示全部楼层
visa198 发表于 2018-8-31 13:39
大牛现在移植的怎么样了,出来分享一下

看40楼的两个帖子,40楼这位大神估计就是晕哥。
整体思想就是通过串口,使用HCI命令,把固件传给AP6212就可以了。
不同的目标ARM板需要自行讲引脚功能配置为UART工作模式。

我这边主要就是把两个流控引脚全部拉低了(因为硬件设计板子画错了)也是受晕哥帖子的启发。
CTS/RTS全部拉低后,再使用github上的一个代码,就可以加载固件到AP6212里面了。
github地址:
https://github.com/rafaello7/nanopi-bluetooth
回来把这个代码交叉编译成一个目标ARM板的程序,再随便在GitHub上找个固件,名字叫bcm43438a1.hcd(一开始以为是bcm43438a0.hcd)

目标ARM板上单后,执行:
./ap6212hciattach /dev/ttyAMA1 1000000  
即可加载固件成功。
输出的日志:
bcm43xx_init
reset retry
Set Controller UART speed to 1000000 bit/s
Flash firmware /lib/firmware/brcm/bcm43438a1.hcd
Set BDADDR UART: any
Incorrect bdaddr
Set Controller UART speed to 1000000 bit/s
Device setup complete


执行
hciconfig hci0 up 打开蓝牙
hcitool scan 即可进行扫描
hcitool和hciconfig这些工具都是我移植的BlueZ






出0入0汤圆

发表于 2018-9-26 15:36:56 | 显示全部楼层
看到AP6212,瞬间有种亲切感。之前买过一个国产寨板EzPad 5S,里面用的就是AP6212蓝牙wifi二合一模块,预装windows10系统。
自己改装成linux,但是AP6212模块无法工作,那段时间各种搜资料,自己编译内核,折腾了两个月,还是没搞定,直接改回windows10系统了。
当然我那个是卖的平板电脑,不是开发用的开发板,所以搞起来有点抓瞎。

出0入0汤圆

 楼主| 发表于 2018-9-26 15:38:39 | 显示全部楼层
编译内核、移植blueZ的部分,我都是从网上找的,一大堆,找一下即可。
arm linux串口蓝牙工具移植及使用
ARM平台上蓝牙协议栈Bluez的移植使用和配置
BlueZ交叉编译
Ubuntu系统(bluez)蓝牙调试






出0入0汤圆

 楼主| 发表于 2018-9-26 15:40:43 | 显示全部楼层
dxgdsx 发表于 2018-9-26 15:36
看到AP6212,瞬间有种亲切感。之前买过一个国产寨板EzPad 5S,里面用的就是AP6212蓝牙wifi二合一模块,预装 ...

嗯,这玩意不仅要加载固件,还得移植一堆协议栈上去。
我就不太会弄,这个帖子只是解决了加载蓝牙固件的问题。




出0入0汤圆

发表于 2018-12-3 17:26:49 | 显示全部楼层
我的运行ap6212hciattach会报错,请问是怎么回事呢
./ap6212hciattach /dev/ttyS4 115200
./ap6212hciattach: line 1: syntax error: unexpected end of file

出0入0汤圆

发表于 2018-12-3 17:37:58 | 显示全部楼层
最终搞好了吗?

出0入0汤圆

发表于 2020-6-14 20:28:25 | 显示全部楼层
谷歌AOSP下AP系列已经有非常成熟的驱动了,并且可以通过DTS配置

出100入101汤圆

发表于 2020-9-4 13:37:04 | 显示全部楼层
LZ现在成大牛了么?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-10-2 17:30

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表