本发明涉及基于bm501集成电路的航天器在轨编程方法,尤其是一种在轨航天器单机cpu或fpga在轨编程flash并动态刷新和启动的方法。
背景技术:
1、随着卫星、航天器上单机种类越来越多,智能化水平越来高,相应的也产生了大量对于cpu、fpga软件的在轨编程需求,这些单机软件的在轨编程需要数管系统软硬件进行支持,尤其是星上的载荷软件,规模相对平台比较大,需要断点续传和实时存储。
2、传统的单机在轨编程方法需要使用数管计算机的ram或flash作为全部程序的缓存,但单机数量庞大,fpga软件二进制代码较大,而星务计算机的可分配ram空间有限,flash缺少自主刷新的功能,而且与星务计算机系统软件混用,存在安全隐患,适配于fpga的刷新芯片则与fpga型号绑定,难以实现产品的型谱化和通用性。
3、为此,针对载荷单机的cpu、fpga软件的在轨编程需要按照遥控帧为单位,在数管计算机内建立局部的一级缓存,待校验通过,再通过内总线通信,将数据传输到大容量flash器件中进行二级缓存,直至所有在轨编程数据写入完成且校验正确,利用fpga刷新芯片正式写入载荷单机并自主启动。
技术实现思路
1、为了解决对大容量载荷软件在轨编程的存储和刷新问题,本发明的目的在于提出一种基于bm501集成电路的航天器在轨编程方法,利用本发明,可以实现高可靠缓存和自主刷新载荷软件在轨编程代码的目的。
2、为实现上述目的,本发明提供了一种基于bm501集成电路的航天器在轨编程方法,包括以下步骤:
3、s1:接收在轨编程遥控包;
4、s2:设置bm501禁止刷新;
5、s3:判断在轨编程地址域是否擦除过:如果擦除过,则执行步骤s5,否则执行步骤s4;
6、s4:擦除指定扇区;
7、s5:将数据写入flash地址域;
8、s6:增量方式计算crc校验和;
9、s7:判断是否最后一包:如果是最后一包,则执行步骤s8,否则执行步骤s14;
10、s8:bm501复位;
11、s9:发送flash存储码流起始地址;
12、s10:发送flash存储码流结束地址;
13、s11:向bm501写入crc码:
14、s12:判断芯片反馈的校验结果是否正确:如果反馈的校验结果正确,则执行步骤s13,否则执行步骤s14;
15、s13:bm501指令重配置;
16、s14:设置bm501允许刷新。
17、较佳地,所述的步骤s1接收在轨编程遥控包数据信息中包含程序编程结束标志、扇区编程结束标志、在轨编程起始地址、长度和有效数据,所述的在轨编程地址指的是从“在轨编程地址”到“在轨编程地址”加“长度”所在的范围,地址域必须位于同一扇区。
18、较佳地,所述的步骤s2设置bm501禁止刷新通过rs422接口向bm501发送写寄存器2指令来实现,写入数据为0xaaaaaa00。
19、较佳地,所述的步骤s3判断在轨编程地址域是否擦除过通过判断扇区使用表中地址域对应扇区的状态为“未擦除”,所述的扇区使用表为一个二维数组,数组索引为扇区序号,数组每个元素的取值包含“未擦除”和“已擦除”2个有效数值,所述的扇区使用表初始值为“未擦除”。
20、较佳地,所述的步骤s4擦除指定扇区通过rs422接口向bm501发送扇区擦除指令实现。
21、较佳地,所述的步骤s5将数据写入flash地址域通过rs422接口向bm501发送编程指令实现。
22、较佳地,所述的步骤s4、s5中向bm501发送扇区擦除和编程指令后需要延时500ms,等待接收rs422通道上的反馈数据为0xd2d2再执行后续指令。
23、较佳地,所述的步骤s6增量方式计算crc校验和的算法采用32位,生成多项式为x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x+1,所述的增量方式计算crc校验和的方式是每次计算本遥控包内的在轨编程数据crc校验和,并将计算出的crc校验和作为计算下一次遥控包的在轨编程数据crc校验和的种子,第一次计算crc的种子为0xffffffff。
24、较佳地,所述的步骤s7判断是否最后一包通过判断本次遥控包内的“程序编程结束标志”,所述的“程序编程结束标志”存在2个有效取值,分别代表“程序未结束”和“程序已结束”。
25、较佳地,所述的步骤s8 bm501复位通过rs422接口向bm501发送复位指令实现。
26、较佳地,所述的步骤s9发送flash存储码流起始地址通过rs422接口向bm501发送flash存储码流起始地址指令实现。
27、较佳地,所述的步骤s10发送flash存储码流结束地址通过rs422接口向bm501发送flash存储码流结束地址指令实现。
28、较佳地,所述的步骤s11向bm501写入crc码通过rs422接口向bm501发送写入crc指令实现。
29、较佳地,所述的步骤s12判断芯片反馈的校验结果是否正确通过rs422接口向bm501发送读寄存器0指令,再通过rs422接口读取反馈的寄存器0数据的位0~3为0xa来实现。
30、较佳地,所述的步骤s13 bm501指令重配置通过rs422接口向bm501发送指令配置指令实现。
31、较佳地,所述的步骤s14设置bm501允许刷新通过rs422接口向bm501发送写寄存器2指令来实现,写入数据为0x5555557。
32、本发明一种基于国产bm501集成电路的航天器在轨编程方法,由于采取上述的技术方案,可以按遥控帧实现逐次上注在轨编程数据,分批校验,统一存储,支持断点续传,提高了在轨编程的适应性和可维护性,且不与系统软件混合存储,保证了航天器上的故障隔离和安全性,待全部程序上注完成且通过crc校验,可以自主刷新和启动所在载荷单机软件,避免上注程序未经校验即运行的风险。本发明解决了传统在轨编程难以缓存大容量代码的问题,同时解决了动态刷新flash程序和自主启动的问题,取得了提高在轨编程可靠性的有益效果。
1.一种基于bm501集成电路的航天器在轨编程方法,其特征在于:包括:
2.根据权利要求1所述的基于bm501集成电路的航天器在轨编程方法,其特征在于,所述步骤s1中,接收在轨编程遥控包的数据信息中包含:程序编程结束标志、扇区编程结束标志、在轨编程起始地址、长度和有效数据。
3.根据权利要求1或2所述的基于bm501集成电路的航天器在轨编程方法,其特征在于,所述在轨编程地址指的是从“在轨编程地址”到“在轨编程地址”加“长度”所在的范围,地址域位于同一扇区。
4.根据权利要求1所述的基于bm501集成电路的航天器在轨编程方法,其特征在于,所述步骤s2中,设置bm501禁止刷新通过rs422接口向bm501发送写寄存器2指令来实现,写入数据为0xaaaaaa00。
5.根据权利要求1所述的基于bm501集成电路的航天器在轨编程方法,其特征在于,所述步骤s3中,判断在轨编程地址域是否擦除过,包括:通过判断扇区使用表中地址域对应扇区的状态为“未擦除”。
6.根据权利要求5所述的基于bm501集成电路的航天器在轨编程方法,其特征在于,所述扇区使用表为一个二维数组,数组索引为扇区序号,数组每个元素的取值包含“未擦除”和“已擦除”2个有效数值。
7.根据权利要求5或6所述的基于bm501集成电路的航天器在轨编程方法,其特征在于,所述扇区使用表初始值为“未擦除”。
8.根据权利要求1所述的基于bm501集成电路的航天器在轨编程方法,其特征在于,所述步骤s4中,擦除指定扇区包括:
9.根据权利要求1所述的基于bm501集成电路的航天器在轨编程方法,其特征在于,所述步骤s5中,将数据写入flash地址域,包括:
10.根据权利要求8或9所述的基于bm501集成电路的航天器在轨编程方法,其特征在于,所述向bm501发送扇区擦除和编程指令后延时500ms,等待接收rs422通道上的反馈数据为0xd2d2后,再执行后续指令。
11.根据权利要求1所述的基于bm501集成电路的航天器在轨编程方法,其特征在于,所述步骤s6中,通过增量方式计算crc校验和的算法采用32位,生成多项式为:
12.根据权利要求1或11所述的基于bm501集成电路的航天器在轨编程方法,其特征在于,所述通过增量方式计算crc校验和,包括:
13.根据权利要求1或2所述的基于国产bm501集成电路的航天器在轨编程方法,其特征在于,所述的步骤s7,包括:
14.根据权利要求2或13所述的基于bm501集成电路的航天器在轨编程方法,其特征在于,所述的“程序编程结束标志”存在2个有效取值,分别代表“程序未结束”和“程序已结束”。
15.根据权利要求1所述的基于bm501集成电路的航天器在轨编程方法,其特征在于,所述步骤s8,包括:
16.根据权利要求1所述的基于bm501集成电路的航天器在轨编程方法,其特征在于,所述步骤s9包括:
17.根据权利要求1所述的基于bm501集成电路的航天器在轨编程方法,其特征在于,所述步骤s10,包括:
18.根据权利要求1所述的基于bm501集成电路的航天器在轨编程方法,其特征在于,所述步骤s11,包括:
19.根据权利要求1所述的基于bm501集成电路的航天器在轨编程方法,其特征在于,所述步骤s12,包括:
20.根据权利要求1所述的基于bm501集成电路的航天器在轨编程方法,其特征在于,所述步骤s13,包括:
21.根据权利要求1所述的基于bm501集成电路的航天器在轨编程方法,其特征在于,所述步骤s14,包括: