Flash Driver测试实验——LED Driver

汽车电子控制单元的FlashDriver加载与内存管理
文章讲述了FlashDriver在汽车ECU升级中的作用,以及如何通过Keil5和.sct文件将driver代码从Flash搬入RAM执行,以确保功能安全。作者通过LED闪烁实验演示了代码迁移和内存区域分配的过程。

1、什么是Flash Driver

考虑到汽车ECU升级过程中可能存在外部干扰导致跑飞情况,如果直接将flash擦除有关程序固化到bootloader中,有可能在汽车运行过程中导致单片机flash被擦除或篡改的可能性,严重影响汽车的功能安全,所以一般会将与flash相关的程序单独剥离出bootloader,打包作为flash driver通过上位机下发的方式给到单片机。同时,单片机在接收到完整的flash driver包并通过校验后,会将其放入ram段执行调用;当在IAP升级过程中出现异常掉电或完成升级跳转至app程序中时,在ram段中的flash driver就不复存在了。

2、实验过程

在仔细思考flash driver运行过程后,我发现想要实现功能主要有以下疑问点:①如何将driver部分代码从flash搬入ram段执行;②如何在代码中(这里指整个代码工程)没有driver代码的情况下给driver分配一块区域;③通过什么方式将driver代码写入到规定好的ram段中。

由于仅做实验用途,我选用了最简单的测试代码——LED闪烁,测试环境为AutoChips杰发的AC7840x系列单片机开发板(ARM核 编译器Keil5),将LED闪烁的代码从工程中剔除,再通过按键触发将LED闪烁代码写入ram段,实现这个测试,下面我将根据这三个疑问点分布展开:

2.1 如何将driver部分代码从flash搬入ram段执行

通过Keil5的Linker修改.sct文件实现,操作步骤如下:

2.1.1 修改c代码

在想要放入ram段执行的函数前后分别加入#pragma arm section code = "XXX"和#pragma arm section字段,其中XXX可以自命名。要注意,如果你包含的函数中存在函数的调用,建议将所有相关的函数均包含在section字段中间(初始化函数不用放入),方便我们后面进行实验。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

您猜我猜不猜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值