9# 5.5
- 问题:h4_set_baudrate 12802
- 明天测试一下select例程,libbsd 和 negacy
5.8
- 创建thread(pthread)跑worker
- rtems5-i386 结合 libbsd ,select阻塞
5.9
- xilinx-zynq-a9 selectpollkqueue01 测试正常
- xilinx-zynq-a9 跑btstack fatal qemu没法调试 shell无法输入
- h743 selectpollkqueue01 fatal
- raspberrypi4 selectpollkqueue01 测试正常
- rtems-i386 selectpollkqueue01 测试正常
5.11
- rtems6 libbsd xilinx-zynq-a9 fatal:9 btstack_rtems pipe()–>rtems_bsd_thread_create()–>sleepq_alloc()
- h743同1
- 问题: rtems_bsd_thread_create() rtems-libbsd/rtemsbsd/rtems/rtems-kernel-thread.c
- qemu xilinx 速率自动变1200
- rtems_btstack qemu 逻辑仪测试无信号输出
5.13
- 问题:open 参数 O_RDWR | O_NOCTTY | O_NONBLOCK 被阻塞。O_RDWR 时正常
O_RDWR | O_NOCTTY | O_NONBLOCK 也正常。输出缓冲区问题 - xilinx_zynq_a9_qemu ttyS1是控制台 ttyS0是多余uart
- xilinx_zynq_a9_qemu btstack 有输出与 linux 不一样 00001101 只有 xilinx_zynq_a9_qemu 能复现
- read 阻塞 手动传值
- FD_ISSET问题9
5.15-5.16
- https://devel.rtems.org/ticket/4906
- open时设置了 O_NONBLOCK,read时却阻塞
- 树莓派4b情况和i386-qemu相同
- Jlink 没成功
- 单独测试 O_NONBLOCK 仍然阻塞
- 在linux上单独测试 O_NONBLOCK 正常
5.17
- step read看阻塞原因
5.19
- 改VMIN VTIME 第三次write()后 阻塞
- TODO 给read里面写进printf追踪read
5.20
- 第三次write后 系统无响应
- 从逻辑仪可看到蓝牙模块数据已发送
- LInux 上第一次select后先发write RTEMS 先发read
- 已尝试的bsp 均为问题 #1 i386-qemu xilinx_zynq_a9_qemu aarch64/xilinx_versal_qemu
TODO:尝试其他bsp
5.21
- btstack_linux a1.log.166 rtems上read()一直得不到信息。尝试6次后无响应
- 树莓派 jlink调试不成功 换DAP
- linux 和 rtems差异:
- 第一次select()时,linux上没有无read事件,rtems上有
- read() nonbloack问题
5.23
- 尝试H5
- aarch64/xilinx_zynqmp_lp64_qemu。bsp有问题:read只能读进1字节 aarch64/xilinx_zynqmp_lp64_qemu和xilinx_versal_qemu 偶尔可以在第三次write后读取到数据
- 第三次write后拔掉蓝牙模块 rtems正常 可能是第三次write后系统资源占用过大
5.24
- 查看rtems系统占用资源
5.25
- dap调试,断点附加不上,更换FT232H
- 从逻辑仪上看,树莓派4b成功获取到周围蓝牙设备信息
- btstack 协议分析
- RTEMS GSoC
- rtems 文件系统问题
5.28
- FT232H调试没成功
- 协议分析
- 测试 gatt_streamer_server 用手机连接
- 吞吐量函数
5.29
- 研究openOBEX
- 经典蓝牙SPP协议, 从rfcomm层直接传输(实现btstack作为服务端 收发文件)spp_counter.c
5.31
- 文件传输结构体 stat
- rfcomm maxMTU 990B l2CAP
- 研究obex,OPP协议
- rtems测试 可行
6.2-6.4
- 文件分片 合并
- 取消heartbeat
- spp_streamer_client
- stat问题 chmod
- 音频 PCM协议
6.5-6.6
- a2dp_sink_demo stored to ‘a2dp_sink_demo.wav’ file
- portaudio库
- HSP HFP协议 语音通话
- A3DP btstack官方不支持https://github.com/bluekitchen/btstack/issues/248 https://github.com/bluekitchen/btstack/issues/480
- a2dp_source_demo.c 从蓝牙耳机可以收到声音
6.7-6.8
- Assisted HFP
- 演示 hfp_hf_demo.c
- hfp_hf_demo.c 连接 windows 可以传输系统内音频,连接安卓只能传输语音通话
- hfp_hf_demo.c 在rtems上编译错误
- a2dp_source_demo.c 在rtems上 连接耳机后无声音 手机可以搜索到蓝牙设备
SCO链路-- HFP 音质低、支持双向通信(语音通话)
ACL链路-- A2DP 音质高
https://blog.csdn.net/android_lover2014/article/details/88421594
https://e2echina.ti.com/support/wireless-connectivity/bluetooth/f/bluetooth-forum/179488/hsp-hfp-a2dp-profile
4. 蓝牙A2DP和HFP编解码
6.9-6.11
- rtems上的文件传输 正常
- 逻辑仪调试 hfp_hf_demo(树莓派rtems)
- h743 更换 init 头文件。select() fatal
- h743 更新源码
6.13
- h743zi rtems版本回退 仍报错
- emerg: assertion “area != NULL” failed: file “…/…/rtemsbsd/rtems/rtems-kernel-page.c”, line 143, function: rtems_bsd_page_init
- h743调试 rtems_bsd_initialize()
- 树莓派4b调试 No such file or directory source-builder 编译问题,重新编译
6.14-6.15
- 更新rsb后,树莓派4b调试仍然失败
- 无法断点
- 某些 print 类函数异常退出
- 将print类函数注释掉后,调试仍然异常,但在rtems上运行成功(手机能搜索到对应的蓝牙设备)
- 研究 assisted HFP
- I2S 转 模拟信号 模块
6.20
例程:
- 搜索附近设备
- 文件传输 速率显示
- 音频传输
- a2dp
- hfp
6.25
- h743zi only has 1MB RAM
- 信号质量问题? 更换uart h5 开启奇偶校验
- hfp_hf_demo 问题:接上耳机 都是 电流刺啦声 开关音乐 刺啦声会有韵律变化 可能原因:
- 滤波问题
6.26
- 传送wav文件
- 刺啦声音问题:手机电话正常
- 搜索附近设备
- 文件传输 速率显示
- 音频传输
- a2dp 单向
- 发送音频 a2dp_source_demo 正常
- 接收音频 a2dp_sink_demo 不支持 assisted a2dp,音频保存为 wav 格式文件 存放在文件系统内。
- hfp 双向(支持 assisted hfp)
- hfp_ag_demo 接收音频正常。注释掉 assisted hfp后 发送音频 正常。
- hfp_hf_demo 接收音频正常,用 手机电话语音发送 和 hfp_ag_demo 发送 均可。注释掉 assisted hfp后 发送音频 正常。
#7.7
2.4.1 缺少2.4.2
2.8 缺少正文
页码问题
篇幅少(日志)
工作量
RTEMS-BTstack 统一大小写 BT大写
蓝牙协议23个 问问学长
目录序号对齐
2.6标题太长
数字页码也罗马字体
改测试手册格式
7.11
btstack 用的系统调用
代码版本
代码具体修改地方
测试rtems 压力测试 测试充分性(分模块)
测试手册继续详尽
- 方案:介绍性的东西太多,画一个系统架构图最好,协议栈位于哪里,里边包括什么,网络协议栈在OS中的位置、关系、接口,例如Select
- 移植手册:步骤详细,每个软件版本,下载或者官网地址,开源软件(BTstack)改了哪些地方
- 测试步骤:有一些步骤截图,以没有接触过这个项目的人可以一步一步执行下来
7.12
- rpi4b 串口ttyAMA1到ttyAMA4 测试正常
- btstack issue
- RTEMS ticket
7.14
- 在树莓派bsp串口全部实现的情况下,spp_counter.c 连接不上。
7.16
- 修改了Makefile
7.17
- 找出可行的测试项
7.18
方法性的工作
7.21
- linux下posix-h4,大文件26M传输正常,文件diff比对 无差异
- a2dp音乐卡顿问题,原因:115200波特率较低,改main baudrate 为 921600 后正常。
- 树莓派RTEMS 所有串口的BSP:posix-h4异常 posix-h5正常
- 树莓派RTEMS 所有串口的BSP 不支持动态修改波特率,而蓝牙模块上电后默认波特率为115200,只能使用115200传输,所以音频会卡顿
- 树莓派RTEMS 大文件传输最多534KB
7.25
- 日志开启后RTEMS不能正常运行,linux正常。
7.28
- 测试手册2 HSP功能测试 hsp_ag,无法连接,没写
- 第五章Raspberrypi4B的RTEMS BSP功能测试 使用唯一串口的BSP
- 日志测试 开启日志输出后 蓝牙应用均无法正常运行。在调试环境下查看日志
- 文件传输546KB问题原因:fopen()后只读取了546KB
7.31
- #define CONFIGURE_IMFS_MEMFILE_BYTES_PER_BLOCK 512
- 传输29M 文件比对无差异
- 可生成文件 136346899B 即130.030535MB 136347073B 即130.030701MB 136346833B 即130.030472MB
memfile类型的文件是典型的基于索引节点函数的文件,通过直接索引和二级/三级间接索引的数据块来表示。
一个数据块的默认大小为128B。
64bit系统中,数据块大小为128B 则能保存的数据块指针个数为128/8=16个
则memfile类型可以表示的最大文件大小为:
(16 * 16 * 16+16*16+16)*128=559104B 即546KB。
通过修改数据块大小为512B(RTEMS所允许的最大值https://docs.rtems.org/branches/master/c-user/config/filesystem.html#configure-imfs-memfile-bytes-per-block)
64bit系统中,数据块大小为512B 则能保存的数据块指针个数为512/8=64个
则memfile类型可以表示的最大文件大小为:
(646464+64*64+64)*512=134,459,904B 即128MB。
8.2
- 和蓝牙应用同时运行shell
8.3
- pklg日志从串口输出 会被阻塞。输出到控制台也会阻塞
第八章 正确率
九章 原有的多写,文件传输稳定测试
8.25
- mac CSR模块:
- hfp_hf 双向微信通话正常,生成的sine声音延迟 大约SCO: sent 10000, received 9980 之后 有声音。
- hfp_ag 连接xiaomi buds耳机双向正常。生成音为sine。
- Mac上无法使用modplayer生成音。
- hsp_hs 双向微信通话正常,生成sine声音。
- hsp_ag 连接redmi 耳机双向正常。生成音为sine。
9.10
- windows intel蓝牙模块:
- hfp_hf 双向微信通话正常,生成的modplayer声音正常。
- hfp_ag 连接xiaomi buds耳机双向正常。生成音为modplayer。
- hsp_hs 微信接收声音正常,听不到发送声音。连接hsp_ag(CSR),连接后establish audio connection失败 更新代码后,mac CSR模块也不能发送声音。 TODO:回退代码版本。
- hsp_ag 应该用老式蓝牙耳机。连接hsp_hs(CSR) 双向正常,生成的modplayer声音正常,接收的sine声音正常。
2023.10.26
My pleasure.
Hope this helps.
- TX capabilities have issue indeed.
useUART0
for the console device.
- when enable or disable
BSP_CONSOLE_USE_INTERRUPTS
.
the fileio sample does not output except the following.
*** BEGIN OF TEST FILE I/O ***
*** TEST VERSION: 6.0.0.793739c769a21357a9f6b72d447b808a19f10756
*** TEST STATE: USER_INPUT
*** TEST BUILD:
*** TEST TOOLS: 12.3.1 20230626 (RTEMS 6, RSB 8e568b2ca3489d6bfa48e1d296
- But when disable
BSP_CONSOLE_USE_INTERRUPTS
. my test code work fine.
- use
UART1
for the console device , it have issue:
It outputs a lot of ^@, and does not accept input.
- when disable
BSP_CONSOLE_USE_INTERRUPTS
.
hello yangn0
test write all UART
scanf:
^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
same issue in the fileio sample:
*** BEGIN OF TEST FILE I/O ***
*** TEST VERSION: 6.0.0.793739c769a21357a9f6b72d447b808a19f10756
*** TEST STATE: USER_INPUT
*** TEST BUILD:
*** TEST TOOLS: 12.3.1 20230626 (RTEMS 6, RSB 8e568b2ca3489d6bfa48e1d29618ea9b48a5b408, Newlib 4cPress any key to start file I/O sample (20s rema =========================
RTEMS FILE I/O Test Menu
=========================
p -> part_table_initialize
f -> mount all disks in fs_table
l -> list file
r -> read file
w -> write file
s -> start shell
Enter your selection ==>^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
- when enable
BSP_CONSOLE_USE_INTERRUPTS
.
The fileio sample works well at first .when i press any key ,it blocks:
*** BEGIN OF TEST FILE I/O ***
*** TEST VERSION: 6.0.0.793739c769a21357a9f6b72d447b808a19f10756
*** TEST STATE: USER_INPUT
*** TEST BUILD:
*** TEST TOOLS: 12.3.1 20230626 (RTEMS 6, RSB 8e568b2ca3489d6bfa48e1d29618ea9b48a5b408, Newlib 4cPress any key to start file I/O sample (20s remaining)
Press any key to start file I/O sample (19s remaining)
Press any key to start file I/O sample (18s remaining)
Press any key to start file I/O sample (17s remaining)
- 支持所有串口的bsp 、 ENABLE_H5
https://github.com/yangn0/rtems
经过测试 gap 、spp传输文件 、a2dp运行良好。
- a2dp source发送音频,蓝牙音箱声音卡顿,原因可能是当前BSP不支持在运行中更改UART比特率,音频数据以较低比特率从树莓派传输到蓝牙模块,故播放卡顿。
- a2dp sink 接收音频,开启一个新的task循环读取目录中的文件及其大小,可观察到 a2dp_sink_demo.wav
文件存在,且文件大小随音频播放时间逐渐增大。
10.27
- 旧蓝牙模块 损坏。
- hfp_hf 接收
- 开启
ENABLE_CC256X_ASSISTED_HFP
- 只有右声道。新买的音响是左声道。
- 用双声道耳机测试只有右声道正常。
- 可以 将耳机插头 稍微拔出一点。
- 将音频模块 左右声道 短接后,正常。
- 关闭
ENABLE_CC256X_ASSISTED_HFP
- 手机连接上之后,通话会断开。
- 连接不上 电脑ag设备。
- 开启
10.28
- hfp_hf 发送
- 需要用只支持唯一串口的BSP、使用uart-h4,且关闭
ENABLE_CC256X_ASSISTED_HFP
。 - 如果使用支持所有串口的bsp,运行uart-h4异常。
- 需要用只支持唯一串口的BSP、使用uart-h4,且关闭
- hfp_ag 接收
- 使用支持所有串口的BSP、使用uart-h5,连接电脑hf设备。
- 需要多次连接
- 开启
ENABLE_CC256X_ASSISTED_HFP
- 音响中的声音模糊
- 关闭
ENABLE_CC256X_ASSISTED_HFP
- 内存中的
sco_input.wav
文件没有增大
- 内存中的
- hfp_ag 发送
- 使用只支持唯一串口的BSP、使用uart-h4,且关闭
ENABLE_CC256X_ASSISTED_HFP
。 - 注释
#define HAVE_BTSTACK_STDIN //
- 使用只支持唯一串口的BSP、使用uart-h4,且关闭
10.29
- spp文件传输。电脑端 用usbdog RFCOMM channel open failed, status 0x66。用intel芯片正常。
- 除了hfp发送以外,蓝牙模块连接 GPIO4(TX) GPIO5(RX)ttyAMA2 UART3
- 控制台连接GPIO0(TX)、GPIO1(RX) ttyAMA1 UART2
- 另一个串口模块连接GPIO8(TX)、GPIO9(RX) ttyAMA3 UART4
10.30
UART模块最大波特率为4mbps;系统默认上电后的波特率为115.2 kbps。此后可以使用VS命令更改波特率。设备响应使用命令完成事件(仍然是115.2 kbps),之后波特率发生变化。
- hid_host_demo
连接CSR的 hid_keyboard 测试正常。 - hid_keyboard_demo
用小米手机去连接测试正常。 - hid_mouse_demo
用小米手机去连接测试正常。 - hsp_hs_receive
用小米手机连接,通话正常。