我觉得理论知识在网上都可以搜到,我也不复制粘贴了,下面内容都是我自己的理解,如有错漏,可以直接评论指正,感谢各位。
一、什么是FBL?
我理解的就是在boot中发送请求,在特定的地址(APP段)写入数据,然后板子就有程序,能用了。
我现在接触的项目,boot是需要烧录器刷上的。至于boot存在的意义,我理解是板子上有个东西能响应诊断帧,不然板子是空的,上位机发送请求谁来响应你?(当然你可以给boot做一个boot就无限嵌套了,我认为没啥意义)
二、FBL的流程
FBL我认为基本由3个部分组成
1.编程前(进入boot)
读取当前版本,预编程条件检查,27解锁都可以归类在这里
2.编程中(34、36、37service刷写)
这一步是FBL的主体了,34请求下载的地址和长度,36发送下载包,37请求退出,这个顺序不变。
一般整个流程中会看到两次这个大的整体,一个是刷写FlashDriver,一个是刷写APP。
至于添加一些验签、依赖性、完整性之类的31service例程检查,每个整车厂的定义不一样。
3.编程后
下载完成后,一般会用11 01硬件复位,然后读取刷写后的版本,看看下对了没有。
三、为什么要做FBL
如果boot没有大问题,整车厂会统一刷一遍软件装车。以后若有什么版本更新,可以直接使用上位机下载,当然你也可以用烧录器,但是零部件一般都封盒安装在车子里了,烧录得把件拆出来,要是大厂卖了很多车,要更新一次工作量可想而知。
还有OTA刷写,这一块我也刚接触,了解的不多,后续有深入理解,我可以另写一篇。