DA14580,Linux HCI / Bluez

13个员额/ 0个新员额
最后发表
光谱
离线
最后看到:5年9个月前
加入:2015-03-11 18:26
DA14580,Linux HCI / Bluez

亲爱的所有,

我正在尝试将DA14581 PATCH RAM代码端口到DA14580,具有不同的ROM内容。

所以,这是我到现在所做的:

1.从DA14581_HCI_RELEASE_V.1110.2.12启动DA14581
2.在uVision项目中,我从DA1458x_SDK_3.0.6应用DA14580分散文件
3.在uVision项目中,我按照DA14580应用程序将“rom_symdef”应用到DA1458x_SDK_3.0.6中
4.使用Patched HCiatTach加载,我可以正确上传固件
5.我可以编译没有错误。FW上传执行后,没有HCI回复,hciattach超时。
6.实际上,代码执行锁定到“RWIP_INIT”,如下所示:

#ifdef radio_580
iq_trim_from_otp ();
#万一

/ *
************************************************************************************
* BLE初始化
************************************************************************************
* /

init_pwr_and_clk_ble();
//诊断();

/ / rf_init (&rwip_rf);
// setbits32(ble_radiocntl1_reg,xrfsel,3);

#funalibrated_at_fab.
SetBits16 (BANDGAP_REG BGR_TRIM 0 x0);//修剪RET带隙
SetBits16 (BANDGAP_REG LDO_RET_TRIM 0 xa);//修改RET LDO
SetWord16 (RF_LNA_CTRL1_REG 0 x24e);
setword16(rf_lna_ctrl2_reg,0x26);
SetWord16 (RF_LNA_CTRL3_REG 0 x7);
SetWord16 (RF_VCO_CTRL_REG 0 x1);
setBits16(CLK_16M_REG,RC16M_TRIM,0xA);
#万一

//初始化BLE栈
nvic_clearpendingirq(ble_slp_irqn);
nvic_clearpendingirq(ble_event_irqn);
nvic_clearpendingirq(ble_rf_diag_irqn);
nvic_clearpendingirq(ble_rx_irqn);
NVIC_ClearPendingIRQ (BLE_CRYPT_IRQn);
nvic_clearpitchingirq(ble_finetgtim_irqn);
nvic_clearpendingirq(ble_grosstgtim_irqn);
nvic_clearpendingirq(ble_wakeup_lp_irqn);

> > > rwip_init(错误);

#if((ble_app_present == 0 || ble_integrate_host_gtl == 1)&& ble_host_present)
patch_gtl_task();
#endif // #if (bl_app_present == 0 || bl_integrated_host_gtl == 1) //

每个帮助都得到了赞赏。
最好的祝福,
angelo

光谱
离线
最后看到:5年9个月前
加入:2015-03-11 18:26
我分享我的进步,

我分享我的进步,希望它们对某些人有用,也许对话可以在这一点上支持我。

实际上,我看到UART调试,所有代码都在ARCH_MAIN.c主循环中执行。
召唤后

#if(ble_hcic_itf)
//在拆分模式下,初始化HCI
hci_init (rwip_eif_get (RWIP_EIF_HCIC));
# endif / / BLE_HCIC_ITF

在rwble.c中,我不能再使用uart进行调试,因为它是从HCI层控制的。
因此代码执行,但是没有对发送到模块的第一个HCI命令的应答
在FW更新之后。
HCI部分目前仅作为对象可用。
通过范围我看到了FW,刚刚显示了CRC OK ID,我看到Linux在TX线上发送了第一个HCI命令,4个字节,从模块侧只接收到一些ACK位。

JE_Dialog
离线
最后看到:1小时10分钟前
工作人员
加入:2013-12-05 14:02
在那里,我们知道了

大家好,我们注意到一个与Blue Z有关的问题……“原因是BlueZ发送了一些标准的HCI命令,而不是BLE控制器,这让我们的设备混淆了。”我们正在找补丁,但这是几周后的事了。BR JE_Dialog

光谱
离线
最后看到:5年9个月前
加入:2015-03-11 18:26
嗨,很高兴知道,我是

嗨,很高兴知道,我正在进行,如果我成功,我可以发布补丁。

我所看到的是:
使用示波器,我看到有一个UART回复,但是2个字节,0x04和0x10。这就是当前HCIATTACH未显示任何内容并超时的原因,因为HCIATTACH.C READ_HCI_EVENT()期望其他字节,至少3(字节3是Params Count)。

所以我修改了hciattach,看看返回代码是什么:我得到

BASH-3.2#.hciattach TTYMXC1对话框115200
下载hci-firmware.bin……
CRC OK (cd)。
在开始对话之前发送HCI重置…
对话框自定义协议:EVT_HARDWARE_ERROR

硬件错误。代码是否可能是DA14581并检查某些产品ID,或者我的模块可能损坏?与此同时,我在另一个板上测试。

光谱
离线
最后看到:5年9个月前
加入:2015-03-11 18:26
好吧,HW错误只是到期

好吧,HW Error只是由于全局“错误”变量无初始化。
似乎我可以发送HCI消息如果从主循环应用程序排队,但HCI线程/模块本身未回复我发送的任何消息。

这似乎与DA14580的不同ROM内核代码有关。

光谱
离线
最后看到:5年9个月前
加入:2015-03-11 18:26
大家好,

大家好,
进步了。
-仍然混合da14580, da14581代码(DA14581_HCI_Release_v.3.110.2.12)和SDK 3.0, c文件/散点文件混合,并保持da14580 symdefs
-另外,我替换了uart.c驱动程序中的一些uart函数
另外,我在跳转表的最后一部分添加了HCI任务,这在da14580中没有定义
- 同样,对于仍有澄清的主题原因,我必须在Arch_main.c函数中的主循环之前“UART_FLOW_OFF_FUNC”。

bash-3.2#./start.sh
下载hci-firmware.bin……
CRC OK(90)。
在开始对话之前发送HCI重置…
resp:03 0C

===============================================
HCI版:蓝牙核心规格4.0(0x06)
警告:模块的制造商不是对话框半导体(0x0060)!!!yabo国际娱乐
HCI修订:0x0706
模块LMP版本:0x06
模块LMP子版本:0x0706
设备设置完整
bash-3.2#hciconfig
hci0类型:BR/EDR总线:UART
BD地址:00:13:43:0D:09:83 ACL MTU:0:0 SCO MTU:0:0
下来
Rx字节:64 ACL:0 SCO:0事件:5错误:0
TX bytes:20 acl:0 sco:0 commands:5 errors:0

但仍然存在一些问题:

bash-3.2#hciconfig hci0向上
蓝牙:hci0命令0x1003 tx超时
蓝牙:hci0命令0x1001 tx超时
蓝牙:HCI0命令0x1009 TX超时
无法init设备hci0:连接超时(110)

也许我现在面临上面提到的问题?
将继续下周。

重新获得

光谱
离线
最后看到:5年9个月前
加入:2015-03-11 18:26
仍然是一步,

仍然是一步,
我解决了一些UART流控制问题,实际上是沟通是正确的。

但似乎固件实际上没有正确地回复“读取设备类”命令,
奇怪的MTU值读为0。

bash-3.2#蓝牙监视器5.14
= New Index: 00:13:43:0D:09:83 (BR/EDR,UART,hci0) [hci0] . php第0行

bash-3.2#hciconfig hci0向上
< HCI Command: Read Local Supported Fea..(0x04|0x0003) plen 0 [hci0] 8.186353 . (0x04|0x0003
> HCI事件:命令完成(0x0E)PLEN 12 [HCI0] 8.672730
阅读本地支持的功能(0x04 | 0x0003)NCMD 10
状态:成功(0x00)
特点:0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
< HCI Command: Read Local Version Infor..(0x04|0x0001) plen 0 [hci0] 8.672877
> HCI事件:命令完成(0x0E)PLEN 12 [HCI0] 8.677712
阅读本地版本信息(0x04 | 0x0001)NCMD 10
状态:成功(0x00)
HCI版本:蓝牙4.0 (0x06) -修订1798 (0x0706)
LMP版本:蓝牙4.0 (0x06) - Subversion 1798 (0x0706)
制造商:RivieraWaves S.A.S (96)
> HCI事件:命令完成(0x0E)PLEN 10 [HCI0] 8.682438
读取BD ADDR (0x04|0x0009) ncmd 10
状态:成功(0x00)
地址:00:13:43:0D:09:83(Matsushita电子元件(欧洲)GmbH)
> HCI Event: Command Complete (0x0e) plen 11 [hci0] 8.687327 .输出说明
读取缓冲区大小(0x04 | 0x0005)NCMD 10
状态:成功(0x00)
ACL MTU:0 ACL MAX数据包:0
SCO MTU: 0 SCO max packet: 0
> HCI事件:命令完成(0x0E)PLEN 4 [HCI0] 8.691511
读取类设备(0x03 | 0x0023)NCMD 10
状态:未知HCI命令(0x01)

其他一些信息:

bash - 3.2 #蓝色/ cd
bash-3.2#./start.sh
下载hci-firmware.bin……
CRC OK(18)。
在开始对话之前发送HCI重置…
resp:03 0C

===============================================
HCI版:蓝牙核心规格4.0(0x06)
制造商:Rivierawaves SAS(0x0060)
HCI修订:0x0706
模块LMP版本:0x06
模块LMP子版本:0x0706
设备设置完整

bash-3.2#hciconfig hci0向上
无法init设备hci0:无效的请求代码(56)

BASH-3.2#DMESG |grep蓝色
[0.312654]蓝牙:核心版本2.16
[0.312693]蓝牙:HCI设备和连接管理器初始化
[0.312705]蓝牙:HCI套接字层初始化
[0.312716]蓝牙:L2CAP套接字层初始化
[0.312737]蓝牙:SCO socket层初始化
[3.675536]蓝牙:HCI UART驱动程序2.2
[3.678705]蓝牙:HCI H4协议初始化
[3.682216]蓝牙:HCI BCSP协议初始化
[3.685916]蓝牙:hill协议初始化
[4.653492]蓝牙:RFCOMM TTY层初始化
[4.657130]蓝牙:RFCOMM套接字层初始化
[4.660993]蓝牙:RFCOMM VER 1.11
[4.663465]蓝牙:BNEP(以太网仿真)Ver 1.3
[4.667507]蓝牙:BNEP过滤器:协议组播
[4.671459]蓝牙:BNEP套接字层初始化
[4.675154] Bluetooth: HIDP (Human Interface Emulation) ver 1.2
[4.679800]蓝牙:初始化HIDP套接字层

bash - 3.2 # hciconfig -
hci0类型:BR/EDR总线:UART
BD地址:00:13:43:0D:09:83 ACL MTU:0:0 SCO MTU:0:0
下来
RX字节:640 ACL:0 SCO:0事件:50错误:0
TX bytes:200 acl:0 sco:0 commands:50 errors:0
特点:0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
报文类型:DM1 DH1 HV1
链接政策:
链路模式:SLAVE ACCEPT

bash-3.2#hciconfig hci0向上
无法init设备hci0:无效的请求代码(56)

光谱
离线
最后看到:5年9个月前
加入:2015-03-11 18:26
好吧,至少看起来很重要

好吧,看来至少主要特征现在起作用了。

bash - 3.2 # hciconfig -
hci0类型:BR/EDR总线:UART
BD地址:00:13:43:0D:09:83 ACL MTU:27:18 SCO MTU:0:0
运行
RX字节:339 ACL:0 SCO:0事件:37错误:0
Tx字节:370 ACL:0 SCO:0命令:37错误:0
特点:0x00 0x00 0x00 0x00 0x60 0x00 0x00 0x00
报文类型:DM1 DH1 HV1
链接政策:
链路模式:SLAVE ACCEPT

bash-3.2#hciconfig hci0领先

我看到从手机检测到的模块。

Sbourahla.
离线
最后看到:5年5个月前
专家
加入:2015-02-25 09:51
你好谱,

你好谱,

我很有趣,你如何解决你的问题,我试着做同样但实际上它不起作用。

BR

光谱
离线
最后看到:5年9个月前
加入:2015-03-11 18:26
嗨Sbourahla,

嗨Sbourahla,
我对原来的“DA14581_HCI_Release_v.3.110.2.12”包做了很多修改,最终得到了一个兼容PAN1740的fw。
我现在正在寻找许可证的东西,让我们看看我是否可以共享UVISION项目。
在分享之前,我也会做一些更多的测试。

致以最亲切的问候
angelo

光谱
离线
最后看到:5年9个月前
加入:2015-03-11 18:26
你好,

你好,
在一些测试似乎至少有一些连接问题后:

$ sudo gatttool -b 00:13:43:0D:09:83 -I
[00:13:43:0D:09:83] [Le]>连接
试图连接到00:13:43:0D:09:83
[00:13:43:0D:09:83][LE]> < HCI Command: LE Create Connection (0x08|0x000d) plen 25 [hci0] 8.243814 .使用实例
扫描间隔:60.000毫秒(0x0060)
扫描窗口:30.000毫秒(0x0030)
过滤策略:白名单未被使用(0x00)
对端地址类型:Public (0x00)
Peer address: 00:13:43:0D:09:83 (Matsushita Electronic Components (Europe) GmbH)
自己的地址类型:Public (0x00)
最小连接间隔:50.00 msec (0x0028)
最大连接间隔:70.00毫秒(0x0038)
连接延迟:0 x0000
监督超时:420毫秒(0x002a)
最小连接长度:0.000毫秒(0x0000)
最大连接长度:0.000 msec (0x0000)
> HCI事件:命令状态(0x0F)PLEN 4 [HCI0] 8.248374
创建连接(0x08|0x000d
状态:成功(0x00)
> HCI Event: LE Meta Event (0x3e) plen 19 [hci0] 15.921321 . > HCI Event: LE Meta Event (0x3e) plen 19 [hci0] 15.921321 . >
LE连接完成(0x01)
状态:成功(0x00)
手柄:72
角色:大师(0 x00)
对端地址类型:Public (0x00)
连接成功
[00:13:43:0D:09:83]>对等地址:00:13:43:0D:09:83(Matsushita电子元件(欧洲)GmbH)
连接间隔:70.00 msec (0x0038)
连接延迟:0.00 msec (0x0000)
监督超时:420毫秒(0x002a)
主时钟精度:0x00
@设备连接:00:13:43:0D:09:83(1)标志0x0000
> HCI Event: Disconnect Complete (0x05) plen 4 [hci0] 16.4111320 .日志含义
状态:成功(0x00)
手柄:72
原因:连接超时(0x08)
@ Device Disconnected: 00:13:43:0D:09:83 (1) reason

似乎最终断开在靠近主管超时后到达。

现在我不知道这是否是da14581上可见的问题,或者它是否与我修改的固件有关。
有没有人在da14581上的HCI正常工作?

问候
angelo

光谱
离线
最后看到:5年9个月前
加入:2015-03-11 18:26
你好,

你好,
我分享我此时的代码。仍然连接不正常工作,在连接成功后,断开连接。

https://github.com/spectrum70/pan1740-firmware.

致以最亲切的问候
angelo

JE_Dialog
离线
最后看到:1小时10分钟前
工作人员
加入:2013-12-05 14:02
嗨,Spectrum,我们有

嗨Spectrum,我们在DA14581中使用外部MPU成功使用HCI。我们有一个内部项目,在我们发言时致力于蓝Z实施(第三方正在为我们致力于这一问题)。

你有14581的设置要测试吗?您可以为14581重新构建映像并进行测试。

BR JE_Dialog