从2021年下半年开始,大量接收108.29°E SES7/9卫星上10981H45000转发器节目的南星卫星接收机(俗称南星机,品牌有大海信、王牌星、小企鹅、小熊猫、福字、三星高清、荷兰1号等,这些机型的内部主板相同)出现不开机故障。经卫星发烧友研究,发现此故障系卫星接收机厂家在卫星信号中下达反制指令所致,具体方法是:将接收机主板上闪存W25Q32内的数据前1MB位( 即偏移地址从“0000000"到“0000FFFF”)的值全部改成"FF”,如图1所示。接收机上电后因缺少BOOT引导程序而无法正常开机。

       经统计,出现该故障的机器都是2018年上市,并且主板上标有"ESR-HD806_ V1.1 (或V1.2)"字样,主芯片采用上海澜起M88CS8051。因这些机器到2021年下半年的收看期限都达3年,估计厂家为了卖新机器才出此下策。
       对于此故障处理,网上给的方法如下:先读出正常机器的数据,后来借助FlexHEX软件将故障机闪存的前1MB数据替换成正常数据即可,如图2所示。


       由于使用FlexHEX软件较繁琐,后来有发烧友开发出了南星修复软件,如图3所示,只要将故障机器的数据拖入软件中便能自动生成修复好的软件,再将修复好的数据刷入原机闪存即可(注意:数据烧入芯片后一定要校验)。


       笔者按上述方法处理后试机,一切正常,没想到几天后故障重现。原因很简单:厂家在不断的下发反制指令,只要机器通电开机,便会再次接收到闪存清除指令,从而导致故障重现。从理论上讲,如果接收机一直不关机,就不会接收到内存清除指令,则不会出现不开机故障,但“不关机”并不现实,看来还得另想办法。
       尝试将闪存W25Q32③脚(WP)接地,无效,因为接收机生产厂家已将W25Q32设置成四线SPI工作模式,此时③脚功能已变成IO3,失去了写保护功能。如果能将W25Q32中的数据设置成“只读”属性,这样来自卫星的反制指令便无法改写其内部数据。阅读华邦W25Q32元件手册,发现通过设置内部状态寄存器1可以实现“只读”功能。
       W25Q32内部状态寄存器1的功能定义如图4所示,S2(BP0)、S3(BP1 )和S4(BP2 )是写保护设置端口,用于设置保护范围的大小,S5(TB)用于设置从顶部还是从底部开始保护,就是决定存储器地址是从小到大还是从大到小,S6(SEC)用于选择是以扇区还是块为单位来保护数据。


       通过S2~S6不同组合可以达到保护不同区域数据的目的,具体情况如图5所示(默认值都是“0”,即没有开启写保护功能)。S7用于设置是否保护状态寄存器本身,如果S7被设置成有效,并且WP脚接地,那么闪存的状态寄存器将被设置成硬保护状态。


       由于普通的编程器软件无法读写状态寄存器,所以这里推荐可以配合普通CH341编程器使用的AsProgrammer_2.1.0.13_fix汉化版软件,该软件除了可以对W25Q32进行读/写操作外,还可以读写状态寄存器1~3,其软件主界面如6所示。


       具体操作方法如下:先将修改好的Bin固件写入到w25Q32内(这一步也可用其他编程器软件),接着点击“去写保护(图标为一把小锁”右边的小三角形符号,选择第二项“修改SREG" ,在弹出的对话中选中"SRP0"、“TB”、"BP2"和"BP0",如图7所示,这样设置好后可对W25Q32前1MB数据进行写保护,而剩余3MB数据不进行保护(即不影响授权信息更新以及关机台号、音量记忆等功能),接下来点击“写入/编程”按钮完成操作,最后将W25Q32焊到主板上,并将③、④脚短接,如图8所示。

       须说明的是,部分南星机器使用宜扬EN25Q32闪存,该型闪存的内部状态寄存器1定义不同于W25Q32,其区域保护定义如图9所示,选中“BP2(S4 )"和“BP1(S3 )”即可保护闪存前2MB数据。另外,因用CH341型编程器配合AsProgrammer_ 2.1.0.13_ fix汉化版软件,有时无法修改状态寄存器数据,所以建议使用809F或809H编程器。