我的需求是这样的,我在用ch364做一个项目,但是想把升级直接做到扩展BIOS运行中完成。也就是把在线烧录程序CH364PGM.EXE直接做到扩展BIOS程序中,不知道是否可行?
首先扩展空间本身不是很大,假如你把这个程序直接做进去会占一定的空间; 其次是你这么做有什么意义吗?这么做只会让代码更复杂的。 至于是否可行,我们没有这么做过,您可以自己试试看。
还有就是在扩展Bios运行过程中,是不可以修改它的值的,就那364隔离卡来说,卡在工作的时候是不可以修改rom里的程序的。
收到,明白
但是我有把密码保存在flash上,然后是可以修改这个密码的哦
是的
那我前面提到的那个功能能够实现吗?我确实还是需要通过这个实现一些功能。
你修改密码的时候是在364隔离卡出现选择界面的时候吧?这个时候确实是可以修改密码的。但是一旦隔离卡进入工作状态(进入系统),我们是不可以修改隔离卡Flash里的内容的,因为这个时候隔离卡在工作。另外,我不是很明白你所说的把CH364PGM.EXE直接做到BIOS中是什么意思(直接是什么意思)?你到底是想实现怎么样的功能呢?
我们用的是你们公司的ch364芯片,然后把里面的代码仅保留了框架,其他都重新写了,完成了我们产品所有 的控制功能,但是无法实现升级功能。 然后我想把升级功能直接做到里面去,就像CH364PGM.EXE有插写flash的功能。
这个实现应该比较困难,因为按你的想法升级的时候Flash是在运行代码的,那时是不可以擦写Flash的。
但是我看到你们的参考代码的库中有提供如下函数哦: EXTRN _CH364_FLASH_LOCK :NEAR ; 对Flash-ROM存储器进行写保护设定 ; 入口: BL 为00H则解除写保护,为8CH则允许写保护/只读锁定,为0FFH则读写保护/完全锁定,只在复位后才能解锁 ; 出口: Z 成功, NZ 失败(存储器可能被完全锁定) 调用这个函数不就可以操作flash了吗? 那样的话,我可以直接就把flash一直作为解除写保护状态。 关键的问题是我不知道怎么计算代码的位置,因为我写的代码都是在压缩了的代码段,除非全部插除后重写,但是我不知道这样是否安全。
我们把Flash运行时设定为写保护状态,就是为了安全考虑,假如Flash在运行时还能被随便修改,那可能会有很多意料不到的事情发生。一旦你把Flash一直作为解除写保护状态,就没安全性可言了。
我不知道怎么计算代码的位置,因为我写的代码都是在压缩了的代码段,除非全部插除后重写,但是我不知道这样是否安全。 我们的产品不需要这样高的安全级别,主要是实现以上功能。不知道如何计算,因为压缩算法是你们的。这个问题能解决吗?
你们既然有源码可以修改的话,应该是可以添加的吧。
很简单,你在tasm 文件名之后加/l,看.lst文件就知道你的位置了.
好的,非常感谢,我试试看。