主题中讨论的其他器件:TM4C1294NCPDT、 MSP430F5418A、 CC2650、 BQ40Z60
工具/软件:TI-RTOS
现在、msp432具有128/256kb SRAM 变体、我们可以拥有 Bluetopia 栈的 RTOS 版本吗?
我使用在 FreeRTOS 10.0.1下运行的较旧的4.0.1.4 BTPSVER 堆栈来调制 TM4C 库(1.2 R2)。 一旦我从 HCI_SendPacket、HCI_DriverCallback 和 GetAccess 中删除了总线故障、尝试访问地址0x400FE000 (TM4C 器件 ID 寄存器)[http://www.ti.com/lit/ds/symlink/tm4c1294ncpdt.pdf 第255页]、这似乎没有问题;
修改了 HCI_DriverCallback
i.HCI_DriverCallback:00000310 HCI_DriverCallback ;数据 XREF:HCI_OpenDriver+7C↓o
i.HCI_DriverCallback:00000310 ;i.HCI_OpenDriver:OFF_6CC↓o
i.HCI_DriverCallback:00000310
i.HCI_DriverCallback:00000310 var_3C =-0x3C
i.HCI_DriverCallback:00000310 var_38 =-0x38
i.HCI_DriverCallback:00000310 var_28 =-0x28.....
i.HCI_DriverCallback:00000498 Check_msp432p4x1vy1 ;代码 XREF:HCI_DriverCallback+16C↑j
i.HCI_DriverCallback:00000498 LDR.W R12、=0x2010C0
i.HCI_DriverCallback:0000049C LDR.W R0、[R12]
i.HCI_DriverCallback:000004A0 LDR R1、=0xF0F0
i.HCI_DriverCallback:000004A2 Ds R0、R1
i.HCI_DriverCallback:000004A4 LDR R1、=0xA010
i.HCI_DriverCallback:000004A6 CMP R0、R1
i.HCI_DriverCallback:000004A8 BEQ LOC_516
i.HCI_DriverCallback:000004AA
i.HCI_DriverCallback:000004AA Check_msp432p401r_device
i.HCI_DriverCallback:000004AA LDR R1、=0xA000
i.HCI_DriverCallback:000004AC CMP R0、R1
i.HCI_DriverCallback:000004AE BEQ LOC_516
i.HCI_DriverCallback:000004B0 LDR R1、=0x400FE3FC
i.HCI_DriverCallback:000004B2 LDR.W R10、=0xACE15C37
i.HCI_DriverCallback:000004B6 MOV.W LR、#0x3FC
i.HCI_DriverCallback:000004BA MOV R0、#0
i.HCI_DriverCallback:000004BC MOV R3、R10
i.HCI_DriverCallback:000004BE MOV R2、LR
i.HCI_DriverCallback:000004C0 STR.W R10、[R1]
i.HCI_DriverCallback:000004C4 LDR.W R8、=0x2010C0
…
I.HCI_DriverCallback:000005D2;函数末尾 HCI_DriverCallback
i.HCI_DriverCallback:000005D2
i.HCI_DriverCallback:000005D2;---
i.HCI_DriverCallback:000005D4 OFF_5D4 DCD DriverInfoList ;数据 XREF:HCI_DriverCallback+1A↑r
i.HCI_DriverCallback:000005D4 ;HCI_DriverCallback+276↑r
i.HCI_DriverCallback:000005D8 DWORD_5D8 DCD 0x2010C0 ;数据 XREF:HCI_DriverCallback:Check_msp432p4x1vy1↑r
i.HCI_DriverCallback:000005DC DWORD_5DC DCD 0xF0F0 ;数据 XREF:HCI_DriverCallback+190↑r
i.HCI_DriverCallback:000005E0 DWORD_5E0 DCD 0xA010 ;数据 XREF:HCI_DriverCallback+194↑r
i.HCI_DriverCallback:000005E4 DWORD_5E4 DCD 0xA000 ;数据 XREF:HCI_DriverCallback:Check_msp432p401r_device↑r
i.HCI_DriverCallback:000005E8 DWORD_5e8 DCD 0xACE15C37 ;数据 XREF:HCI_DriverCallback+1A2↑r
i.HCI_DriverCallback:000005EC OFF_5ec DCD 0x400FE3FC ;数据 XREF:HCI_DriverCallback+1A0↑r
i.HCI_DriverCallback:000005F0 OFF_5F0 DCD 0x2010C0 ;数据 XREF:HCI_DriverCallback+1B4↑r
i.HCI_DriverCallback:000005F0;i.HCI_DriverCallback 结束
i.HCI_DriverCallback:000005F0
修改了 HCI_SendPacket
i.HCI_SendPacket:00000768;=========== S U B R O U T I N E ================================================
i.HCI_SendPacket:00000768
i.HCI_SendPacket:00000768
i.HCI_SendPacket:00000768 导出 HCI_SendPacket
i.HCI_SendPacket:00000768 HCI_SendPacket
i.HCI_SendPacket:00000768
i.HCI_SendPacket:00000768 var_28 =-0x28....
i.HCI_SendPacket:000007DC loc_7DC ;代码 XREF:HCI_SendPacket+62↑j
i.HCI_SendPacket:000007DC LDR.W R12、=0x2010C0
i.HCI_SendPacket:000007E0 LDR.W R0、[R12]
i.HCI_SendPacket:000007E4 LDR R1、=0xF0F0
i.HCI_SendPacket:000007E6 Ds R0、R1
i.HCI_SendPacket:000007E8 LDR R1、=0xA010
i.HCI_SendPacket:000007EA CMP R0、R1
i.HCI_SendPacket:000007EC BEQ LOC_856
i.HCI_SendPacket:000007EE LDR R1、=0xA000
i.HCI_SendPacket:000007F0 CMP R0、R1
i.HCI_SendPacket:000007F2 BEQ LOC_856
i.HCI_SendPacket:000008AA;函数结束 HCI_SendPacket
i.HCI_SendPacket:000008AA
i.HCI_SendPacket:000008AA;---
i.HCI_SendPacket:000008AE 对齐0x10
i.HCI_SendPacket:000008B0 OFF_8B0 DCD DriverInfoInitialized
i.HCI_SendPacket:000008B0 ;数据 XREF:HCI_SendPacket+6↑r
i.HCI_SendPacket:000008B0 ;HCI_SendPacket+22↑r
i.HCI_SendPacket:000008B4 OFF_8B4 DCD 0x2010C0 ;数据 XREF:HCI_SendPacket:loc_7DC↑r
i.HCI_SendPacket:000008B8 DWORD_8B8 DCD 0xF0F0 ;数据 XREF:HCI_SendPacket+7C↑r
i.HCI_SendPacket:000008BC DWORD_8BC DCD 0xA010 ;数据 XREF:HCI_SendPacket+80↑r
i.HCI_SendPacket:000008C0 DWORD_8C0 DCD 0xA000 ;数据 XREF:HCI_SendPacket+86↑r
i.HCI_SendPacket:000008C4 DWORD_8C4 DCD 0xACE15C37 ;数据 XREF:HCI_SendPacket+8E↑r
i.HCI_SendPacket:000008C8 OFF_8C8 DCD 0x400FE3FC ;数据 XREF:HCI_SendPacket+8C↑r
i.HCI_SendPacket:000008CC OFF_8CC DCD 0x400FEF00 ;数据 XREF:HCI_SendPacket+9C↑r
i.HCI_SendPacket:000008CC;i.HCI_SendPacket 结束
修改了 GetAccess
i. GetAccess:00000004 ;================= S U B R O U T I N E ================================================
i.GetAccess:00000004
i.GetAccess:00000004
i.GetAccess:00000004导出 GetAccess
i.GetAccess:00000004 GetAccess
i.GetAccess:00000004
i.GetAccess:00000004 arg_C = 0xC
i.GetAccess:00000004
i.GetAccess:00000004 PUSH{R4、LR}
i.GetAccess
#0XTR0:0000.ULDC
、0000.0X0X0_R0_R0_R0_R1r、#Get0_800R、1000_R0_R0_R0_R0_R1r .0_R1r、ILDC #4
i.GetAccess:0000001A BNE Loc_28
i.GetAccess:0000001C LDR R0、[R1、#4]
i.GetAccess:0000001E LSR R1、R0、#0x1C
i.GetAccess:00000020 CMP R1、#1
i.GetAccess:00000022 BNE_28
i.GetAccess:24 UBFX、#0x0000.GetAccess:
0000.28↑
;#00000028 i.GetAccess:0000.28 GetAccess+1E↑
↑j i.GetAccess:00000028 MOVs R2,#0x18 i.GetAccess:0000002A MO3C R1,#0 i.GetAccess:0000002C MOV R0,R4 i.GetAccess:0000002E BL BTPS_Mem3C i.GetAccess:00000032 MO3C R0,#0 i.GetAccess:34 P.DRVs;#0000003R0:#.GetAccess+0.3C.eV
函数结束 GetAccess
i.GetAccess:0000003C
i.GetAccess:0000003C;------------------------------
i.GetAccess:0000003E 对齐0x10
i.GetAccess:00000040 OFF_40 DCD 0x2010C0;数据 XREF:GetAccess+C↑r
i.GetAccess:00000040;i.GetAccess 结束
GetAccess 函数加载 DeviceID 的最低8位并检查0x10处的位、这意味着最新的 MSP432系列(0x0000A01#)。 TM4C 是0x100A0000。 如果我没有过多关注、看起来像一个小的大端字节序交换。 在所有情况下、该模块都可以更好地正确遵循128KB SRAM 版本 TM4C 芯片的相同代码路径。 我假设代码就是这样、然后在 BTPS_MemoryInitialize 函数中相应地分配数组大小。
在 MSP432p4111 launchpad 上、似乎调用大小为24的上述 MOD BTPS_MemInitialize、这似乎... 对吧? 错误?
我可以得到一个配对/取消配对、连接到 RFCOMM 并运行、尽管 报价不是100%、但足以证明 一点。 TM4C 和 MSP432非常相似、因此可以直接移植代码(轻松!)。 之前的库是使用以下 make 行构建的;
ARM C/C++编译器、4.1 [构建561] armcc -thumb -split_sections -c -cpu=Cortex-M4.FP -FPU=FPv4-SP -diag_suppress=186、1293、1296 -I。\n\t 稳定的蓝牙\tbranches\texcertins\dcs\tbranches\tbranches\tense\tbranches\tbranches\texcertines\contines\contines\contines\contines\contines\continues\tinuertines\contines\contines\continuertinues\tinues\tinues\tinues\tinues\contines\contines\continues\continuertinues\continues\continues\continues\continues\continues\continues\continues\continues\continues\continues\continues\continues\continues\contines
simal/注释:错误的开发人员在0x400FE000处放置读取 TM4C 器件 ID 的特定硬件代码、这会导致 HCI_SendPacket、HCI_CallbackHandle 和 GetAccess 中的存储器总线故障。 读取 msp432 TLV 结构的 ASM 更改可解决此问题。
我们是否可以拥有最新的 BT 4.2堆栈的编译版本以及适用于 cc2564B 的补丁1.6? 好极了:)
我有一百台设备正在等待这款完整经典+低功耗堆栈的 FreeRTOS 版本、以便从 Windows CE.net 实现升级路径(不要问...) Android 或 iOS。 我甚至有一个已准备好的插入器、它将 MSP430F5418A 封装更改为一个位于顶部的 RGZ 封装的利特 BGA 板。
通过 QFP 0.25x1.2mm 焊盘顶部的0.3mm BGA 封装 MSP432至 MSP430F5418A 转插板。
e2e.ti.com/.../MSP432-Adapater.pdf
使用 Kapton 胶带将焊球与焊盘对齐、并使用 X 射线机确认对齐(测量两次)、然后通过丝印板和助焊剂将与引线式0.3mm 焊球插入的焊球进行焊球。 非常可重复的过程