在ECU OTA 程序升级过程中,需要执行一段比较特殊的代码,这段代码实现对自身flash的擦除与写入,又称flash driver。
在OTA升级过程中,往往需要在发送app可执行文件之前,向底层先发送一段叫"flash driver"的二进制文件,这里简单总结一下这段“flash driver”二进制文件存在的意义。
1、在车载ECU控制器中,为了安全考虑,会尽可能的避免在代码中固化有对flash进行擦除或写入的操作,主要为了避免在程序跑飞时误调用该部分代码,使软件代码部分受到破坏;
2、flash driver的实现方式,可以将flash driver固化在底层flash中,在运行的时候将flash中的flash driver拷贝到ram中来运行,这是比较传统到方式,但是避免不了1中提到的安全性问题;
所以还有一种方式,就是将flash driver这段代码保存在PC端或后台,在每次执行OTA升级前,将这段代码先发送给底层,这样可以避免1中提到的安全性问题;
3、在升级过程中,flash driver必须在ram中运行的原因是:
在对flash进行读写操作时,flash中对应的应用程序文件将不能运行,所以必须将flash driver拷贝到ram区域,这是flash硬件性能决定到。