# SW_DB **Repository Path**: felven/sw_db ## Basic Information - **Project Name**: SW_DB - **Description**: zz编写的二代交换应用 - **Primary Language**: C - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-12-26 - **Last Updated**: 2020-12-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README version:1.0 由朱秉颖生成 待调试版本,本版本为朱秉颖发布至14503,BIT功能正常 version:1.1 由许光政生成 产品调试,主备切换、主备竞争、静态枚举、管理复位等功能正常 修改包括: (1)管理模块:主备切换时,控主备切换硬件动作时机有问题,原先在mdlRest中,导致主备切换后,必须在进行单板重启时才会触发硬件的主备切换准备,现在改到主备管理竞争模块里; switchNegotiationTask.c文件中,void *switchNegotiationTask(void *arg)函数增加了备管理切换成主管理时SetGpioReg(0x8a000000, 0x4, 0)操作 (2)管理模块:交换通过Inhibit控华睿下电流程,原先set_1848_port在mdlReset之后,会导致心跳超时复位,整层机箱有2-3s数据流停止的问题,调整到mdlRest前面,问题解决; hr2ModuleReset.c文件中,Line1404 line1503 set_1848_port_lock(i + 1, SWT_PORT_OFF)改到mdlReset(i + 1)前面 (3)交换模块:主备交换切换的判断条件有问题,原先只针对port0,而交换模块与交换接口时通过port8互联,导致产品出现一次交换接口链路不好,但主备交换并未发生切换,另外关于交换接口未插好或插入的情况是否要进行判断未纳入; iic_srio1848.c文件中,int get_1848_status()修改了出错判断条件和返回值 (4)管理模块:主备切换时,通知华睿使用哪个交换的rio通道机制不可靠,更改了机制后也未联调,会有以下问题:第一,对每槽四片都进行复位,只需复位一次,第二,复位前未设置drop,交换等不到切换应答后重启,与正常收不到心跳重启支路有干扰,第三,心跳机制需要在此场景下退出,否则会出现二次复位; hr2ModuleReset.c文件 line1605-line1622 (5)华睿端:交换切换应答华睿端有问题,发送的IP地址不对,已修正;修改hr2reset.c文件 version:1.2 由许光政生成 BIT处理与上报调试、双交换的逻辑问题修改 修改包括: (1)修正了发生主备切换后,备管理切换成主管理后,新的主管理不向显控台发BIT数据的问题; admin_fun.c中net_sendbit函数调用udpSendPeerEx发送2074字节给显控时,使用"isManager() == 1"作为条件进行判断,实时判断当前运行是否作为主管理程序运行 (2)修正了bit处理模块汇总显控上报逻辑有误,必须要打开交换bit显示菜单才能开启老化操作和显控bit上报操作,如果不开启交换的菜单栏显示,则bit信息不进入老化流程; sem_init.c中ShowBit()函数 (3)修正了发显控BIT的处理逻辑问题,将只要有任意一个槽位被老化所有槽位数据都不再发送,改为不发送老化的槽位,对于正常在线的槽位,则仍然发送其BIT信息; admin_fun.c中void *net_sendbit(void *arg)函数 (4)修正了防止因调试模式下关闭交换接口数据流导致交换发生切换的问题; hr2ModuleReset.c中static void * spySwitchThread(void * arg)函数Line1653行左右增加if(g_rstTraffFlag==1)条件判断 (5)修正了管理中因交换接口状态错误时,停发心跳后,备切为主,而之前的主仍然存在,双主同时存在导致影响后续报文交互的逻辑问题 hr2ModuleReset.c中static void * spySwitchThread(void * arg)函数Line1658行左右增加setManagerSlotIDInvalid()函数 (6)交换管理打印信息中,增加了当前所处槽位的信息 hr2ModuleReset.c中void prtMdlInfo()函数Line1114-Line1116 version:1.3 由许光政生成 (1)交换侦听华睿心跳超时复位的时间由8s改为5s hr2ModuleReset.c中s_hbPktTimeout值改为5s (2)解决了udpJoinGroup函数组播回送禁止失败的问题,将设置IP_MULTICAST_LOOP标识放到IP_ADD_MEMBERSHIP前进行设置 /src/global/udp/udpSocketLib.c文件中udpJoinGroup函数Line313-Line324 version:1.5 由李寿阳生成 (1)BIT接收更改为轮询方式 (2)延长bit显示周期,由15s更改为90s,周期延长的目的是确保查询能够使每一块板子都被查到。 (3)新增备份接收缓存,备份接收缓存与原接收缓存同步采集bit信息,每4个bit显示周期(360s)清空一次备份缓存,同时将备份缓存的信息赋值给原有接收缓存,确保上报给显控台的信息不会出现清缓存 初期出现的全部值为0的异常现象 (4)新增轮询在线数组,每个查询周期内,查询到的模块不会进行二次查询,会反复查询未查到模块,直至所有模块都被查询到后,方开始下一轮查询。 version:1.6 由李寿阳生成 (1)增加了主备交换模块bit信息收集的组播地址,由admin_fun.c中的sw2_bit()采集本板信息,line_num 485-489,同时将本板信息与风机信息一同发给主交换 (2)在bit 30s的周期函数中加入了交换模块bit信息采集 非主管理的 需要通过网络上报本板bit信息 (3)暂时未增加交换模块bit信息打印 (4)此版本生成时间2020/02/23 此版本为 风机带有iic加速芯片、BIT上报稳定版本 version:1.6.2 由李寿阳生成,版本生成时间为2020/03/7 (1)增加了机箱信息由文本文件配置的功能,配置文件读取相关内容在bitFile中,配置文件备份在debug文件夹下,名称为mageConfig.txt;mageConfig.txt中的内容只有0xAA05到0xAA09生效 (2)由于硬件状态限制,目前bit信息分类上报,5槽主管理负责采集电源加华睿的信息,6槽采集风机信息,6槽通过发送网络包的方式将采集信息发送给5槽 (3)bit更新方式回退,风机采用iic周期上报,电源采用iic轮询方式,华睿采用网络上报方式。所有操作由主槽完成 (4)503的三层插箱没有后接口板,更新后接口判断逻辑 version:1.6.2-1.6.5 由李寿阳生成,没有增加大的新功能,主要为调试版本 version:1.6.6 由李寿阳生成 (1)根据5x3显控要求,按照从上到下的顺序修改机箱号,原先从上到下为2、1、0,目前改为1、2、3.修改位于admin_func.c;line_num 376-377 (2)修复了48v电源模块电压值为16进制显示0x48的故障,修改位于admin_func.c,line_num 为394-400 (3)新增风机控制占空比的指令,设置三个风扇的风机占空比为75%,指令为在交换串口上敲数字6,代码位置menu.c,line_num为193-197. version:1.6.7 由许光政生成 (1)修改了机箱号为0不进行交换后接口监测的逻辑bug; /switch/1848/iic_srio1848.c文件中,Line1026-Line1029 (2)在切换出增加打印信息,以便排查定位; hr2ModuleReset.c中Line1653 version:1.6.8 由李寿阳生成 (1)根据结构部门和冷却部门的建议,修改了风机控制算法,变成两档控制风速 sem_init.c在223到257 (2)在hr2ModuleReset中增加了下电控制函数mdlShutDown,在hr2ModuleReset.c中,line:1695-1719 (3)增加了过温保护功能,小于30度和高于140度的不计入考虑,高于105度超过50s就给该板下电,位于admin_fun.c中,line num:312-335。 (4)为了防止过温保护的板子因为缺失了心跳包而被重新上电,对所有的mdlReset函数增加了条件判断,条件判断标志为,是过温保护下电的模块不会被重新上电。 位置位于hr2ModuleReset.c line num:1266 1312 1419 1521 1632 (5)将2000次1848调试去除 位置iic_srio1848.c line num:1024 (6)为了适应6000转风机,风机转速乘以1.5倍,位置admin_func.c line num:418-428 (7)将原有的主备切换逻辑修改,原有的逻辑中,当交换板一块华睿的信息都收不到时,交换认为自己异常,将自己下电切备,此刻备交换且主后瞬间切成备,导致 系统无主,在1.6.8中去除这一逻辑。修改代码位置:hr2ModuleReset.c line num:1663-1665 version:1.6.9 由许光政生成 (1)增加管理程序中对各模块信息的记录,包括注册状态、重启次数、重启原因、心跳计数等信息,在运行程序同一目录下生成日志文件sysLog.txt hr2ModuleReset.c中,Line126-Line130,Line420-Line444,Line1650, line1267-Line1401,修改prtMdlInfo的信息 version:1.6.10 由许光政 (1)修改了过温保护导致的交换控制复位的一个bug,该bug会导致10槽无法被交换复位; /SW_14503_DB/src/admin/bit/admin_fun.c Line59-Line60; /SW_14503_DB/src/admin/boardreset/hr2ModuleReset.c Line1486/Line1532/Line1639/Line1744/Line1855; version:1.6.11 由李寿阳生成 (1)由503 01批第二套的散热需求需要,将setFanSpeed函数中的占空比参数默认设置为100 (2)g_bFanOldI2C 由于目前503的风机默认是老风机,所以地址默认设置为0x50 (3)取最大值作为过温保护的判据,位置admin_fun.c line num:321-329 (4)解决显控台华睿模块显示-100的bug 位置admin_fun.c line num:318 version:1.6.12 由李寿阳生成 (1)去除大于6000转之后的降速考虑,位置sem_init.c line num:114 (2)设置三档环温的风机转速占空比,90度以下为一档,92-98度为一档,100度以上为一档。文件位置 bitFile.c line num:119-154 sem_init.c line num:233-252 version:1.6.13 由李寿阳生成 (1)新增配置文件读取风机转速的控制温度,低于T1时配置一个转速,位于T2-T3时配置一种转速,T4以上时配置一种转速 位置bitFile.c line num:119-130、145-169、183-194 sem_init.c line num:242-259 (2)初始默认转速占空比50 (3)增加过温阈值由配置文件设置的功能,如果读到温度超过145度,则配置文件设定温度不生效 位置 bitFile.c line num:210-225 admin_fun.c line num:349 (4)增加menu菜单中,按8键则手动风机占空比下降5的功能 version:1.6.14 由李寿阳生成 (1)修复了1.6.13中配置文件读取功能中的bug,该bug会导致读取第三档温度阈值T4时出现读取位错误,偏移成T2 (2)为了方便观察风机自动控制指令下发结果,增加串口调试接口,在菜单中按9可以查看风机控制相关参数与结果 version:1.6.15 由李寿阳生成 (1)增加配置文件修改风机老化周期的功能 version:1.6.16 由李寿阳生成 (1) 修正了不在串口上敲2就无法进行机箱最高温记录的bug,位置sem_init.c line num:236-247 version:1.6.17 由李寿阳生成 (1)需要新增功能,功能需求为接收显控台指令后可以单板下电,目前按照515格式进行修改。目前应用中有两个udpsocket,分别 是接收华睿模块bit信息的socket和上报显控台的socket,现在需要新增一个socket,用于接收显控台的控制指令,控制模块上下电 在net_init函数中增加了nSocketID_bit_CMD端口的初始化,admin_func.c line num:445 在配置文件读取中增加了对于组播地址的配置,0xAA03的读取 在ContorlPowerOff中增加了对于华睿机箱的特殊处理,不再用ipmb指令控制单板上下电,而改为用mdlShutDown函数进行模块上下电和复位 控制 (2)第三层华睿机箱的两块调度不需要复位功能,因为调度板会被复位,影响整个机箱状态,增加第三层机箱2、3槽不复位的功能