1.下载网络代码资源 https://github.com/htgd/wh_fsu#动环监控主机程序说明 20230814 2.添加对应库并编译; 20230818 3.添加端口 配置信息 及修改数据库,数据库关于CfgTab_S_DevicePortFuncDef表为合并表导入 20230918 4.增加mslog库 20230920 5.将端口配置表信息 分离,方便支持每个端口支持多设备连接 20230926 6.添加cjson库相关资源 { "FsuCode":"11010110100001", "IdCodeContent":[ {"IDCode": ".1.3.6.1.4.1.41475.1.1.4.1.1.0","Value": "112","Factor": "10"}, {"IDCode": ".1.3.6.1.4.1.41475.1.1.4.1.3.0","Value": "130200","Factor": "100"}, {"IDCode": ".1.3.6.1.4.1.41475.1.1.4.1.22.0","Value": "1234","Factor": "0.1"} ] } 7.将端口配置表信息合并,依靠数据库列判断 20231008 8.在/etc/init.d/rcS 文件中增加两行 开机执行的代码,注意 rcS执行是放在inittab 文件里,在profile之前执行,profile cd /home/EdgeGateway_FSU_App ./EdgeGateway_FSU_App_Start.sh 9.支持ntpdate指令,将Ubuntu系统下/etc/services文件复制到根文件系统etc目录下,修改权限;从别处根文件系统复制ntpdate到sbin目录下,并修改权限;202310 ln -s /usr/share/zoneinfo/Asia/Shanghai localtime 软连接 时区选择 ,也是从别的文件系统复制。 ntpdate ntp1.aliyun.com ntpdate time.pool.aliyun.com ntpdate time.windows.com 10.调整mqttClientApp 11.条件限定,相同编码子设备需在同一端口,暂定后续更改 202310 12.不同进程共享内存,使用标准Posix 共享内存,不建议使用 System V 方式建立共享内存。 不建议shmget创建内存, 建议shm_open 创建内存。kooloo add 202310 13.修改inittab文件,初始化创建/dev/shm等相关文件 kooloo add 202310 新建 /dev/mqueue kooloo add 202311 14.调整文件系统,开机创建/tmp/mslog目录和/tmp/mslog/mslog_fsu.txt文件 kooloo add 202311 15.sysconf(_SC_PAGE_SIZE)或者sysconf(_SC_PAGESIZE)获取页大小,内存最小为一页,否则访问超过设定值的页读取异常 kooloo add 202311 16.再次确认 此编程数据类型int 是4字节,long int 也是4字节,最大是0x7FFFFFFF,sizeof确认 kooloo add 202311 17.mq_open打开失败,失败原因:mq_open:Function not implemented 底层还不支持posix的消息队列。 解决方法是修改内核编译,make menuconfig -> General setup ->[ ]POSIX Message Queues ->[*]POSIX Message Queues. 18.注意根文件系统需要cd rootfs/ 然后 tar -vcjf rootfs.tar.bz2 *,这样才可以正常烧录,否则不会挂.,用sudo,避免权限不够 19.软件调试增加一个Uart_passthroughApp,主要是测试串口的读写以及串口桥接透传,kooloo add 202312 20.时间戳转换 GetLocalTimeStr void GetLocalTimeStr(char* strDst); 202310 之前实现 此备注 21.mslog库不能打印全部的cjson表,缓冲区受限, mslog 宏定义 #define PRINT DebugPrint,其中DebugPrint的DEBUG_STRING_MAX_LEN 缓冲区设置过小,修改为1000k空间,暂时无此问题 kooloo add 202311 22.cjson 库测试,bug原因为有一个子节点被释放 kooloo add 202312 /* cJSON 填坑指南 * Cjson 使用注意事项 cJSON_Parse 、cJSON_Createxxx 后必须使用 cJSON_Delete 释放内存。 * 一定要确认不在使用,不在任何节点使用,否则容易异常 * cJSON_Print 后必须使用 cJSON_free 释放内存。不可以乱用,容易造成异常 kooloo add 202312 * cJSON_DeleteItemFromObject 删除 cJSON_Createxxx 创建的对象后,不能再使用 cJSON_Delete 删除其节点数据。 * * * / 23.修改CfgTab_SmartDevicePortFuncDef 将FuncConfigTypeID表和PollAddCollect合并,用json表示, {"FuncCfgDefNumber":"2","FuncCfgDef:":[{"FuncCfgTypeID":"1","Add":"1"},{"FuncCfgTypeID":"1","Add":"2"}]} 之前是使用多行方式表示,来实现不同ID和地址的功能实现 不需要修改 ,暂时不修改 kooloo add 202312 回滚到之前版本 不支持相同子设备挂在不同接口上 kooloo add 202312 未做合并 如果在一起会重复覆盖 kooloo add 202312 24.调整json格式,将子设备信号分类组数据完整,修改后直接发送即可,无需再次封装。202312 25.调整sqTable_init,初始化分类,个别进程初始化不需要json; 202312 26. AlarmReDiff和AlarmThreshold 新增 子设备的警告用判断参数,主要是温湿度等相关子设备使用,后续依据需要改变 kooloo add 202401 27.mqtt 数据打印消息与实际发送不一致,是Mqmsgbuf缓冲区未自行截断,得到一帧数据后,如果数据长度没有之前的长,则会打印出来,所以要指定长度打印即可。kooloo add 20240109 28."ps -e -o pid,comm | grep DevicePortGetApp* | grep -v PID | grep -v grep" 主函数 进程管道时加* kooloo add 20240109 29.数据说明:1.发送数据是以子设备为单位,比如子设备的所有遥信或者遥测信号一起打包发送;2.服务器获取数据,只判断接收到的IdCodeContent数组中的一个数据的子设备号和地址,并处理后返回。3.服务器遥调数据不返回。 30.群方-华为太阳能整流模块S4875G 取名字过长 ,修改为 群方-太阳能模块S4875G 数据表读取有误,已经修改 kooloo add 20240130 硬件调试记录表 第一版 1.EC200G使用的是串口而不是USB接口,需要实现底层,而且所有口都是共用一个口,建议直接用USB OTG方式挂载,可以将蓝牙、wifi、4G、GNSS等在软件层分开,不会有速度压力,暂时先以串口使用,如不能满足要求再更改。202311 2.RTL8306MB口,MDIO口上拉原理图错误,MDC未上拉。202311 高版本内核有RTL8366的驱动 4*GE+1*SGMII+1*RGMII RTL8366SC-CG LAYER 2 MANAGED 4+2-PORT 10/100/1000M SWITCH CONTROLLER 5*FE+1*(MII/RMII) RTL8306MB-CG SINGLE-CHIP 6-PORT 10/100M ETHERNET SWITCH CONTROLLER 3.核心板 RTC CR2012 容量38mAh,大概能支持2个月左右。202311 4.内核移植 linux-imx 固件加载出错(failed to load regulatory.db)问题处理 5.CAN口调试,GD和核心板各挂一个CAN接口芯片,两者以手拉手方式对外连接,CAN0口(CAN1)正常收发,驱动正常, 发cansend can0 06081003#11.22.33.44.55.66.77.88 2023120501 CAN1口(CAN2)是以拓展方式使用,暂时无法测试。 6.核心板OTG正常,能正常烧录内核文件系统uboot等 202311 7.beep蜂鸣器,高开低关,与原子核心板电平相反,调试时需要关闭或者断开。20231205 8.按键正常,od -x /dev/input/event0 20231205 9.TF卡接口正常 20231205 10.NVCC_CSI DATA IO电压只有2.8V,CSI_DATA5和CSI_DATA6 高电平点亮 LED灯,默认开 kooloo add 202312 11.WM8960芯片驱动,注意原子版本2.4及以后,IIC是挂在IIC1上,现在原子开发板是2.4版本,是挂在IIC1上,要调整下设备树。把IIC1打开 12.EC200G-CN模块仅使用中国,模块现在通信可UART口或者USB口,建议直接USB挂在核心板上, EC200G的Reset引脚是接在CSI_DATA2引脚上,此引脚上电为高电平即可。核心板可控;建议将EC200G的reset脚和核心板复位按键连接在一起 EC200G的pwrkey引脚接的是CSI_HSYNC 引脚,此引脚上电设置为低,核心板可控。 EC200G-CN 连接的串口6,能正常收发,读取指令正常; 但此接口的核心板TX不能和电脑侧的串口工具TX接在一起,接在一起核心板和EC200G正常通信,但是电脑无法控制EC200G,电脑侧电压3.3V,核心板2.8V,接在一起后3.3V,电脑侧发无电平变化。不影响使用。 13.串口情况,串口1调试口正常使用; 串口2收发正常,但串口2是接在485上,485需要用自动收发控制无需软件干预; 串口3到MCU上能正常收发,下次预留测试点; 串口4能发,接收和WM8960的IIC1口干涉,无法接收 ,(预留); 串口5能正常收发(预留); 串口7能正常收发(预留); 串口8能正常收发(预留); 14.网口RTL8306MB芯片,暂时无法调通,软件调试比较困难,在无网络通信的情况下,需要手动切换模式,烧录测试内核和uboot,效率太低,建议,在保证网口1正常通信的情况下,选择一款非MIDO控制的多网口芯片。 15.与GD通信,读取AI等,,GD未回数据,GD软件接收异常,已修改。 16.485透传,速度较慢,发115200可工作,收38400可工作,再高可能不工作,硬件限制。 17.485透传,数据超过245字节异常。