# RTOS
1.工具链隐形bug
该隐形bug确实存在,现在GD官方在将H7xx更新成H73x_75x(仓库中即gd32h73x_h75x),原先的H7xx的代码库将会得到更新,此处support中缺少文件的问题之后就可解决;
2.树外工程、设备树 overlay、自定义板级文件怎么玩,完全没讲;
这个可以参考zephyr官方文档,官方有对应介绍,GD官方代码仓管理者目前主要精力在各型号MCU driver、board层;后期精力释放会考虑做一个比较好的入门文档,如果有其他比较好详细介绍文档也可以告知GD这边可以参考。
3.网口、SD 卡、LCD 这些复杂外设,没有可直接跑的示例,全靠自己摸驱动;
这些外设正在根据客户需求在不断增加,以太网已经基于GD32F527添加了;添加优先级还是看客户的实际需求,如您有特别急迫需求可以留下联系方式我们专门加速适配。
4.社区相关内容极少,遇到问题搜不到现成解决方案。
如2所述,我们后面是准备在GD32社区上传一些GD32使用RTOS的文档,包括RTT和Zephyr这些,但目前精力有限主要工作在专注在驱动层代码构建,如您所知,我们Hal层的型号就已经包含20个类型,更新压力较大,请谅解,如果有特殊bug汇报请留下联系方式我们有专人联系您。
5.外设适配参差不齐
我们现在考虑到精力和时间有限,所有的MCU型号最基础的支持是最小系统+基线外设(GPIO,SPI,USART,I2C)都是满足的,其他像网口、CAN-FD、USB是根据客户需求决定优先级更新与支持的。
至于完整度和稳定性,也需要根据您的反馈来优化,如果有具体问题可以提给我们,我们第一时间响应。
建议按下面几个方向排查
1,先把I2C频率降到100kHz,确认SCL、SDA上拉电阻、电平和上升沿是否正常,24LC64最高支持400kHz,先用标准模式排除时序裕量问题
2,上电后增加一段初始化等待,再进行第一次读取,如果上电前存在EEPROM写操作,还需要确认内部写周期已经结束,不能仅靠固定延时或连续读取两次碰运气,24LC64支持通过ACK轮询判断写周期是否完成
3,重点检查BSP_EEPROM_Receive和BSP_EEPROM_ReadHalfWord的实现,确认发送地址、重复起始、接收字节、NACK、STOP以及超时退出是否完整,特别是读取2字节时的ACK配置和最后一个字节的NACK处理
4,你现在循环中每次调用ReadHalfWord,地址按2递增,建议先改成一次随机读连续读取整个数据区进行对比,如果连续读稳定而逐个HalfWord读不稳定,就可以重点定位到多次事务切换、STOP完成等待或底层状态机处理
5,读取头数据后再读取正常,注释头数据后失败,也可能是前一次读取改变了EEPROM内部地址指针,或者额外的通讯和延时掩盖了初始化问题,不能直接说明必须先读取头数据,需要确认ReadHalfWord每次是否重新发送完整的16位存储地址,而不是依赖上一次读取后的地址指针
6,建议把底层函数返回值、I2C错误标志、超时位置和失败时的总线状态打印出来,同时抓一组成功与失败的完整波形,对比究竟是器件地址无ACK、存储地址阶段异常,还是读取数据阶段异常


