RTEMS 开发日志

9# 5.5

  1. 问题:h4_set_baudrate 12802
  2. 明天测试一下select例程,libbsd 和 negacy

5.8

  1. 创建thread(pthread)跑worker
  2. rtems5-i386 结合 libbsd ,select阻塞

5.9

  1. xilinx-zynq-a9 selectpollkqueue01 测试正常
  2. xilinx-zynq-a9 跑btstack fatal qemu没法调试 shell无法输入
  3. h743 selectpollkqueue01 fatal
  4. raspberrypi4 selectpollkqueue01 测试正常
  5. rtems-i386 selectpollkqueue01 测试正常

5.11

  1. rtems6 libbsd xilinx-zynq-a9 fatal:9 btstack_rtems pipe()–>rtems_bsd_thread_create()–>sleepq_alloc()
  2. h743同1
  3. 问题: rtems_bsd_thread_create() rtems-libbsd/rtemsbsd/rtems/rtems-kernel-thread.c
  4. qemu xilinx 速率自动变1200
  5. rtems_btstack qemu 逻辑仪测试无信号输出

5.13

  1. 问题:open 参数 O_RDWR | O_NOCTTY | O_NONBLOCK 被阻塞。O_RDWR 时正常
    O_RDWR | O_NOCTTY | O_NONBLOCK 也正常。输出缓冲区问题
  2. xilinx_zynq_a9_qemu ttyS1是控制台 ttyS0是多余uart
  3. xilinx_zynq_a9_qemu btstack 有输出与 linux 不一样 00001101 只有 xilinx_zynq_a9_qemu 能复现
  4. read 阻塞 手动传值
  5. FD_ISSET问题9

5.15-5.16

  1. https://devel.rtems.org/ticket/4906
  2. open时设置了 O_NONBLOCK,read时却阻塞
  3. 树莓派4b情况和i386-qemu相同
  4. Jlink 没成功
  5. 单独测试 O_NONBLOCK 仍然阻塞
  6. 在linux上单独测试 O_NONBLOCK 正常

5.17

  1. step read看阻塞原因

5.19

  1. 改VMIN VTIME 第三次write()后 阻塞
  2. TODO 给read里面写进printf追踪read

5.20

  1. 第三次write后 系统无响应
  2. 从逻辑仪可看到蓝牙模块数据已发送
  3. LInux 上第一次select后先发write RTEMS 先发read
  4. 已尝试的bsp 均为问题 #1 i386-qemu xilinx_zynq_a9_qemu aarch64/xilinx_versal_qemu

TODO:尝试其他bsp

5.21

  1. btstack_linux a1.log.166 rtems上read()一直得不到信息。尝试6次后无响应
  2. 树莓派 jlink调试不成功 换DAP
  3. linux 和 rtems差异:
  • 第一次select()时,linux上没有无read事件,rtems上有
  • read() nonbloack问题

5.23

  1. 尝试H5
  2. aarch64/xilinx_zynqmp_lp64_qemu。bsp有问题:read只能读进1字节 aarch64/xilinx_zynqmp_lp64_qemu和xilinx_versal_qemu 偶尔可以在第三次write后读取到数据
  3. 第三次write后拔掉蓝牙模块 rtems正常 可能是第三次write后系统资源占用过大

5.24

  1. 查看rtems系统占用资源

5.25

  1. dap调试,断点附加不上,更换FT232H
  2. 从逻辑仪上看,树莓派4b成功获取到周围蓝牙设备信息
  3. btstack 协议分析
  4. RTEMS GSoC
  5. rtems 文件系统问题

5.28

  1. FT232H调试没成功
  2. 协议分析
  3. 测试 gatt_streamer_server 用手机连接
  4. 吞吐量函数

5.29

  1. 研究openOBEX
  2. 经典蓝牙SPP协议, 从rfcomm层直接传输(实现btstack作为服务端 收发文件)spp_counter.c

5.31

  1. 文件传输结构体 stat
  2. rfcomm maxMTU 990B l2CAP
  3. 研究obex,OPP协议
  4. rtems测试 可行

6.2-6.4

  1. 文件分片 合并
  2. 取消heartbeat
  3. spp_streamer_client
  4. stat问题 chmod
  5. 音频 PCM协议

6.5-6.6

  1. a2dp_sink_demo stored to ‘a2dp_sink_demo.wav’ file
  2. portaudio库
  3. HSP HFP协议 语音通话
  4. A3DP btstack官方不支持https://github.com/bluekitchen/btstack/issues/248 https://github.com/bluekitchen/btstack/issues/480
  5. a2dp_source_demo.c 从蓝牙耳机可以收到声音

6.7-6.8

  1. Assisted HFP
  • 演示 hfp_hf_demo.c
  • hfp_hf_demo.c 连接 windows 可以传输系统内音频,连接安卓只能传输语音通话
  • hfp_hf_demo.c 在rtems上编译错误
  1. 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

  1. rtems上的文件传输 正常
  2. 逻辑仪调试 hfp_hf_demo(树莓派rtems)
  3. h743 更换 init 头文件。select() fatal
  4. h743 更新源码

6.13

  1. 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()
  1. 树莓派4b调试 No such file or directory source-builder 编译问题,重新编译

6.14-6.15

  1. 更新rsb后,树莓派4b调试仍然失败
  • 无法断点
  • 某些 print 类函数异常退出
  1. 将print类函数注释掉后,调试仍然异常,但在rtems上运行成功(手机能搜索到对应的蓝牙设备)
  2. 研究 assisted HFP
  • I2S 转 模拟信号 模块

6.20

例程:

  • 搜索附近设备
  • 文件传输 速率显示
  • 音频传输
  • a2dp
  • hfp

6.25

  1. h743zi only has 1MB RAM
  2. 信号质量问题? 更换uart h5 开启奇偶校验
  3. hfp_hf_demo 问题:接上耳机 都是 电流刺啦声 开关音乐 刺啦声会有韵律变化 可能原因:
  4. 滤波问题

6.26

  1. 传送wav文件
  2. 刺啦声音问题:手机电话正常
  • 搜索附近设备
  • 文件传输 速率显示
  • 音频传输
  • 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 压力测试 测试充分性(分模块)
测试手册继续详尽

  1. 方案:介绍性的东西太多,画一个系统架构图最好,协议栈位于哪里,里边包括什么,网络协议栈在OS中的位置、关系、接口,例如Select
  2. 移植手册:步骤详细,每个软件版本,下载或者官网地址,开源软件(BTstack)改了哪些地方
  3. 测试步骤:有一些步骤截图,以没有接触过这个项目的人可以一步一步执行下来

7.12

  1. rpi4b 串口ttyAMA1到ttyAMA4 测试正常
  2. btstack issue
  3. RTEMS ticket

7.14

  1. 在树莓派bsp串口全部实现的情况下,spp_counter.c 连接不上。

7.16

  1. 修改了Makefile

7.17

  1. 找出可行的测试项

7.18

方法性的工作

7.21

  1. linux下posix-h4,大文件26M传输正常,文件diff比对 无差异
  2. a2dp音乐卡顿问题,原因:115200波特率较低,改main baudrate 为 921600 后正常。
  3. 树莓派RTEMS 所有串口的BSP:posix-h4异常 posix-h5正常
  4. 树莓派RTEMS 所有串口的BSP 不支持动态修改波特率,而蓝牙模块上电后默认波特率为115200,只能使用115200传输,所以音频会卡顿
  5. 树莓派RTEMS 大文件传输最多534KB

7.25

  1. 日志开启后RTEMS不能正常运行,linux正常。

7.28

  1. 测试手册2 HSP功能测试 hsp_ag,无法连接,没写
  2. 第五章Raspberrypi4B的RTEMS BSP功能测试 使用唯一串口的BSP
  3. 日志测试 开启日志输出后 蓝牙应用均无法正常运行。在调试环境下查看日志
  4. 文件传输546KB问题原因:fopen()后只读取了546KB

7.31

  1. #define CONFIGURE_IMFS_MEMFILE_BYTES_PER_BLOCK 512
  2. 传输29M 文件比对无差异
  3. 可生成文件 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

  1. 和蓝牙应用同时运行shell

8.3

  1. pklg日志从串口输出 会被阻塞。输出到控制台也会阻塞

第八章 正确率
九章 原有的多写,文件传输稳定测试

8.25

  1. 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

  1. 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.

  1. TX capabilities have issue indeed.
    use UART0 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.
  1. 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 enableBSP_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异常。
  • 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 //

10.29

  1. spp文件传输。电脑端 用usbdog RFCOMM channel open failed, status 0x66。用intel芯片正常。
  2. 除了hfp发送以外,蓝牙模块连接 GPIO4(TX) GPIO5(RX)ttyAMA2 UART3
  3. 控制台连接GPIO0(TX)、GPIO1(RX) ttyAMA1 UART2
  4. 另一个串口模块连接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
    用小米手机连接,通话正常。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值