基于dali总线及调光线的灯具驱动器固件升级方案的制作方法

文档序号:37436407发布日期:2024-03-25 19:34阅读:9来源:国知局
基于dali总线及调光线的灯具驱动器固件升级方案的制作方法

本发明属于灯具驱动器固件升级,具体为基于dali总线及调光线的灯具驱动器固件升级方案。


背景技术:

1、灯具通过搭在智能系统可以实现物联网或多功能控制,其内部通常会设置有驱动器来继续控制,灯具的驱动器特别是户外的,为了防水效果更佳通常会灌胶密封处理。如果遇到需要功能升级,更改或者修改软件bug的时候需要有损拆壳来处理,代价非常大。本发明可以很好地解决这个问题。


技术实现思路

1、本发明的目的在于提供基于dali总线及调光线的灯具驱动器固件升级方案,以解决上述背景技术中提出的问题。

2、为了实现上述目的,本发明提供如下技术方案:基于dali总线及调光线的灯具驱动器固件升级方案,包括升级系统和固件升级方案,所述升级系统包括上机位、usb转dali接口和灯具驱动器;所述上位机通过usb先把数据包发到usb转dali接口,再经过dali总线或者调光线与灯具驱动器通信;

3、固件升级方案包括如下步骤;

4、步骤一:上电后在boot区运行;

5、步骤二:读取ap区数据并校验其完整性,如果完整则开始0.2秒计时;

6、步骤三:判断是否收到上机位在线探测命令;

7、步骤四:如果收到则直接执行固件更新流程,如果没收到则判断ap区数据是否完整并且超过0.2秒计时;

8、步骤五:如果判断ap区数据不完整或未超过0.2秒计时则回到步骤三;

9、步骤六:如果ap区数据完整且超过0.2秒计则进入app区运行;

10、步骤七:上述步骤四中在执行固件更新流程时判断是否收到退出命令,如果没收到则继续执行固件更新流程命令,如果收到则进入app区运行;

11、步骤八:app区运行后判断是否收到上机位的在线探测命令,如果没收到则继续在app区运行,如果收到则重新进入boot区执行固件更新流程命令。

12、优选地,所述上位机与usb转dali接口的通信协议包括第一层和第二层两种协议;

13、所述第一层应用层为:id(1字节)+命令(1字节)+流水号(2字节)+数据(可变长度)+crc16(ccitt1021)校验(2字节,本层数据的校验值),当id等于0xff时是广播,下位机无需回复;

14、所述第二层协议为:帧头(0x7e)+第一层的全部数据+帧尾(0x7e),第二层协议是底层协议,第一层协议是上层协议。

15、优选地,所述第一层协议的命令解释为:

16、a)探测设备是否在线:

17、主机对从机:命令0x96,没有数据;

18、从机回复主机:命令0x96,没有数据;

19、b)握手

20、主机对从机:命令0x9f,加密模式(1字节),0表示固件没有加密,1表示固件已经加密;

21、从机回复主机:命令0x9f,设备类型(2字节),固件的类型和被更新的硬件设备类型一致时才执行固件更新;

22、c)设置te值:

23、主机对从机:命令0x9e,数据是te值,单位微秒,两个字节;

24、从机回复主机:命令0x9e,没有数据;

25、d)查询版本号:

26、主机对从机:命令0x9d,没有数据;

27、从机回复主机:命令0x9d,数据是2字节的版本号+2字节的一页flash字节数;

28、e)擦除flash:

29、主机对从机:命令0x9c,数据是4字节,要擦除的字节数;

30、从机回复主机:命令0x9c,数据是1字节,1表示成功,0表示失败;

31、f)写flash:

32、主机对从机:命令0x9b,数据是4字节的地址,4字节的数据长度,512字节需要写入flash的数据;

33、从机回复主机:命令0x9b,没有数据;

34、g)校验:

35、主机对从机:命令0x99,数据是4个字节需要校验的数据长度+4个字节校验值;

36、从机回复主机:命令0x99,数据是4个字节的校验值,校验值是所有字节的累加和;

37、h)退出:

38、主机对从机:命令0x98,没有数据,收到命令后跳转到app区运行app程序;

39、从机回复主机:命令0x98,没有数据。

40、优选地,所述固件升级方案的主要工作流程如下:

41、1)读mcu的固件文件;

42、2)对固件数据的处理;

43、3)命令先后顺序;

44、4)固件加密的格式;

45、5)bootloader运行逻辑。

46、优选地,所述读mcu的固件文件包括:

47、a.固件支持原始bin格式和加密的bin格式;原始bin文件格式为flash里的数据映像;

48、b.储存于flash的0x200开始的4个字节是校验值checksum,储存于flash的0x204开始的3个字节是固件的大小size,checksum是指整个程序所有字节的累加和但不包括0x200~0x207这8个字节,0x207这个字节的flag的bit0用来标记固件的完整性,0x208~0x209是设备类型devicetype;

49、c.代码里先用两个4字节常量(checksum和size)占着0x200~0x207这个地址不让代码覆盖,checksum默认值是0x12345678(地址0x200~0x203对应的数据是0x78,0x56,0x34,0x12),size默认值是0xfe000000(地址0x204~0x207对应的数据是0x00,0x00,0x00,0xfe),devicetype默认值是0x0001(地址0x208~0x209对应的数据是0x01,0x00);

50、0x200 checksum最低字节;

51、0x201 checksum较低字节;

52、0x202 checksum较高字节;

53、0x203 checksum最高字节;

54、0x204 size最低字节;

55、0x205 size较低字节;

56、0x206 size较高字节,最高字节默认为0;

57、0x207 flag,bit0用来标记固件的完整性等于0表示完整;

58、0x208 devicetype低字节;

59、0x209 devicetype高字节。

60、优选地,所述对固件数据的处理包括:iap上位机软件把固件读到内存后,计算出固件的校验和(不包括0x200~0x207这8个字节)再写到checksum对应的位置,把固件的大小写到size对应的位置,flag的位置写0xff,处理完固件的缴存后可以下载到下位机了。

61、优选地,所述命令的先后顺序为:

62、s1、0x96探测设备是否在线:如果有合法返回说明设备在线;

63、s2、0x9f握手:告诉下位机固件是否需要解密,下位机返回设备类型,上位机根据固件的devicetype与下位机返回的设备类型是否一致再决定下一步动作;

64、s3、0x9e设置dali的时序周期:根据dali总线的实际环境调节速度;te值是半周期值,默认是416us即1.2k的速率,设置成功后将用新的速率通信;

65、s4、0x9d获取bootloader的版本号;

66、s5、0x9c擦除芯片flash;

67、s6、0x9b写数据:把上述2)中处理完的数据传给下位机,每次传512字节,如果固件是加密的,把上述4)byte16及之后的数据发下去;

68、s7、0x99校验:下位机收到校验值和长度后,根据长度计算出校验值与上位机发过来的校验值做对比,如果一致时把单片机的flag位置的第0位写0,bootloader启动时检查这个位置就知道程序是否完整,对于arm等处理器读flash速度快的,可以根据size大小整个区域实时计算校验值来判断是否完整,如果读flash慢的8位单片机就只判断flag的第0位了;

69、s8、0x98退出:下位机收到命令后从boot区跳转到app区运行app区程序。

70、优选地,所述固件加密的格式包括前16个加密信息的字节,所述16个字节里byte0~3都是0x88,byte4是版本号,byte5~7是固件的长度(高字节在前),byte8~11是固件的校验值(高字节在前),byte12~13是设备类型(高字节在前),byte14~15是整个加密文件的crc(ccitt)校验值,高字节在前,计算检验值时把这两个字节写0,从byte16开始是加密后的数据,操作固件更新时把第16字节及以后的数据发下去,下面是前16个字节的数据解析:

71、0x00常数0x88;

72、0x01常数0x88;

73、0x02常数0x88;

74、0x03常数0x88;

75、0x04版本号;

76、0x05固件长度,较高字节,最高字节默认是0;

77、0x06固件长度,较低字节;

78、0x07固件长度,最低字节;

79、0x08固件的校验值,最高字节;

80、0x09固件的校验值,较高字节;

81、0x0a固件的校验值,较低字节;

82、0x0b固件的校验值,最低字节;

83、0x0c设备类型,高字节;

84、0x0d设备类型,低字节;

85、0x0e整个加密文件的crc(ccitt)校验值,高字节;

86、0x0f整个加密文件的crc(ccitt)校验值,低字节。

87、本发明的有益效果如下:

88、本发明通过采用两线差分信号通信,信号是曼彻斯特编码格式,通信的物理媒介可以是标准的dali总线,也可以是普通的灯具驱动器调光线,适用于欧洲标准的dali灯具驱动器,也适用于普通的灯具驱动器;dali标准的速度是1.2k位/秒,一个位的周期是833微秒,一个周期拆分为2个te值,每个te时间是416微秒。

89、本发明采用变速策略,提高通信速度,缩短了固件升级时间,上位机发送命令前会以脉冲的方式告诉灯具驱动器te的时间长度,让双方的时序周期一致,te的时间长度由上位机根据操作者的输入值来决定,操作者可以根据现场的布线状况决定采用哪个速度来通信,通过实践验证te值最高可以设置到100微秒,即速率可以从1.2k位/秒提升到5k位/秒,通信采用变速策略,提高通信速度,缩短了固件升级时间。

90、由于驱动器的te值是根据上位机的参考脉宽来决定的,所以时序的精度就与自身晶振的精度无关了,可以采用更低成本的单片机完成,主机采用时序校正方式,降低对单片机晶振精度要求,降低使用成本。

91、先把固件加密,通过上位机传送到单片机后由bootloader程序进行解密和写入到aprom,固件加密,防止程序外泄。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1