您当前的位置:五五电子网电子知识电子知识资料电动车-摩托车-汽车基于WiFi的车载终端远程软件升级方法解析 正文
基于WiFi的车载终端远程软件升级方法解析

基于WiFi的车载终端远程软件升级方法解析

点击数:7864 次   录入时间:03-04 11:59:12   整理:http://www.55dianzi.com   电动车-摩托车-汽车

    (4)拷贝软件到应用程序区

    软件正确的下载到临时区后,需要拷贝到应用程序区。该部分关键部分在于STM32内嵌FLASH的擦除与读写。

    STM32F107内嵌FLASH是通过分页机制来实现对寻址空间的扩展和FLASH页面的使用和管理的。所以对FLASH的擦除操作需要按页进行擦除。即擦除FLASH不能擦除某一字节或一次擦除小于一页(2048字节)。

    FLASH擦除的具体步骤:

    ①解锁FLASH编程控制寄存器;

    ②定位要擦除的扇区;

    ③写扇区擦除命令;

    ④等待命令执行完成;

    ⑤锁定FLASH编程控制寄存器。

    对FLASH执行写操作步骤如下:

    ①解锁FLASH编程控制寄存器;

    ②向指定的地址写若干字数据;

    ③等待上一条命令执行完成;

    ④如果未写完数据,则递增源地址和目标地址,重复步骤②和③;

    ⑤锁定FLASH编程控制寄存器。

    (5)软件跳转应用程序区

    应用程序准备好后,程序需要从BOOT区跳转到应用程序区首地址处执行应用程序。这里分为两步:

    ①修改中断向量表位置。由于STM32F107采用ARM Cortex—M3内核,该内核的系统控制空间中写中断向量表的寄存器地址NVIC_VectTaD_ Addr为0xE000ED08,在该地址写入应用程序起始地址即可,本程序应用程序起始地址APP_START_ADDRESS为0x08005000。设计如下:

    ldr r0,=0x08005000

    ldr r1,=0xe000ed08

    Str r0, [r1]

    ②跳转到应用程序首地址处执行应用程序。该步骤完成堆栈指针和程序指针(PC)的修改。在上述汇编代码之后,通过以下方式实现:

    ;从应用程序向量表中载入堆栈指针

    ldr r1, [r0]

    mov sp,r1

    ;从应用程序向量表中初始化程序指针(PC),并跳转到应用程序

    ;入口

    ldr r0, [r0,#4]

    bx r0

    为保证软件升级错误不导致系统崩溃,将终端程序隔离为引导程序(BOOT区程序)及应用程序两部分,如单次软件升级失败仍可进行再次升级。两部分程序分别在Keil中编译,并把BOOT区程序烧写在FLASH首地址0x08005000处,以便终端启动直接进入BOOT区。用于应用程序编译吋需设定烧写地址为应用程序区首地址,并生成bin文件以便直接下载到FLASH中即可运行。

    结语

    该方法实现了采用WiFi通信方式,通过TFTP协议将编译后的软件文件下载到终端设备,完成软件升级的功能。在嵌入式系统领域,程序升级可以方便地对程序缺陷进行弥补和修改,或对程序功能进行扩充,运用该方法可极大提高产品的生存周期,节省对项目的维护成本和提高了开发效率。

    基于该方法已成功设计出可远程在线升级程序的车辆管理系统。使用情况表明,该系统能稳定、可靠地工作,且为系统的维护节省了大量的工作量,对同类型的嵌入式设备软件在线升级设汁有很好的参考价值。



上一页  [1] [2] 


本文关键字:软件  电动车-摩托车-汽车电子知识资料 - 电动车-摩托车-汽车