0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

实用的CAN总线分布式嵌入式系统升级设计方案

电子设计 来源:互联网 作者:佚名 2018-01-13 07:30 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

嵌入式系统具有智能化程度高、体积小、可靠性高、实时性强等诸多优点,已经越来越多地应用于消费电子工业控制汽车电子等各个行业。往往一个大的系统又由许多小的嵌入式系统共同构成,它们之间通过相互通信协同完成各种检测控制任务,构成分布式嵌入式系统。汽车电子系统中的车载GPS、倒车雷达、发动机控制、仪表盘系统等,数控机床中的键盘显示系统、马达控制系统等,这些无一不是嵌入式系统的具体应用。

众多嵌入式系统的应用也为软件升级带来了诸多困难,主要有以下几点:

①这些系统分处于大系统的各个位置,单独对每个系统进行升级比较困难;

②某些系统为了满足保密和可靠性的要求,对系统进行了永久密封,只预留了通信和电源端口,这就更不可能单独对它进行升级。

针对这些问题,本文提出一种利用CAN总线的分布式嵌入式系统升级方案,实现了多点、单点甚至全系统的升级,其他种类的通信端口与此类似。

1 系统架构

系统结构框图如图1所示。

整个系统由多个独立的完成一定功能的嵌入式模块、CAN总线和一个用于对整个系统进行升级的控制模块组成。其中,控制模块也可以是其中一个功能模块。在每个功能模块上安装有独立的引导程序,可以看作该模块的Bootloader,该引导程序永久固化在模块内,不随程序升级而升级。在该引导程序中嵌入CAN总线通信程序。正常工作情况下每个功能模块单独或通过CAN总线与其他模块协同工作。当需要对某个模块进行软件升级时,通过系统升级控制模块向该模块发送升级命令,该模块接收到命令后即跳转至引导程序,并等待系统升级模块发送升级数据,升级结束后再跳回至应用程序。

2 系统实现

2.1 在线升级的实现原理

采用ST公司基于ARM Cortex-M3核心的32位嵌入式处理器STM32F103VC,其片上Flash为主存储区。应用程序代码是存储在闪存(Flash)中的(0x0800C3000~0x0807FFFF),而Flash是按Page来管理的,所以可以把Flash分成几个区域来使用。在本系统中将Flash分成两个区域,其中一个为前面提到的引导程序区,另外一个为应用程序区。Flash分区如图2所示。

图2 Flash分区

芯片上电后,STM32F103VC会自动跳转到0x08000000地址执行后面的程序。而一个工程的起始位置(也就是main函数的地址)具体映射到Flash的地址是可以设置的。在本系统的设计中,在Flash放了两个main函数。引导程序用于对应用程序的升级和上电后跳转至应用程序,应用程序则完成相应的模块功能。这两个区域通过特定的指令可以实现相互的跳转,并以此实现在线升级。

2.2 硬件系统

STM32F103VC处理器具有高性能、低成本、低功耗等特点。该处理器片上外设丰富,具有多个系统定时器、CAN通信接口、USART通信接口、DMA等丰富的资源,并且借助于ST公司提供的固件库,可以很容易地对系统资源进行操作。该处理器集成了256 KB片上Flash和64KB片上SRAM,足以应对大多数任务。为实现CAN总线通信,只需要为STM32F103VC添加一片CAN驱动芯片进行电平转换。

系统硬件结构框图如图3所示。

2.3 软件系统

为实现在线升级功能,首先需要编写引导程序,然后将它烧入Flash引导区中。为防止应用程序升级失败,在引导程序中需判断Flash指定位置是否有程序完好标志,该标志由完整的应用程序在每次上电后写入。应用程序可采用烧写方式和升级方式写入相应程序区。为实现引导程序和应用程序之间的相互跳转,采取指向函数指针的方式来实现。可以将Flash中的引导程序和应用程序作为两个普通函数,这两个函数的进入位置分别为0x08000000和0x08004000,然后在引导程序中设置一个指向函数的指针,其指针值为0x08004000;同理,在应用程序中设置一个函数指针,其值为0x08000000.这样在相应的程序中调用函数指针时就可以实现程序跳转。

CAN总线采用多主竞争工作方式和非破坏性总线仲裁技术,总线上任意节点可在任意时刻主动地向网络上其他节点发送信息而不分主次,各节点之间实现自由通信。当多个节点同时向总线发信息时,优先级较低的节点会主动退出发送,而优先级较高的节点不受影响,从而大大节省了总线冲突仲裁时间,即使在网络负载很重的情况下,也不会出现网络瘫痪的情况。因此,适用于分布式监控系统的数据通信。由于CAN总线协议规范只定义了物理层和数据链路层,所以在实际应用中必须根据实际系统制定合适的应用层协议。本系统中根据数据传输要求自定义了几个应用层命令,分别是升级相关命令和数据收发校验相关命令,限于篇幅在此就不一一详述。

3 软件升级过程

软件升级包括升级控制模块部分和待升级模块部分。

升级控制模块部分的工作过程为:向待升级模块发送升级命令,待接收到模块返回的确认标志后,再通过CAN应用层协议向待升级模块发送升级数据,升级完成后向待升级模块发送完成命令。

待升级模块工作流程如图4所示。分为引导程序部分和应用程序部分,这两部分内容在开发的时候是作为两个独立的工程项目来完成的。

为确保在线升级的安全性,在Flash指定位置设置了一个程序完好标志。由于Flash的擦写是按照Page进行的,所以这个标志即使只有一位也需占用一个Page的大小。本系统中将标志设置在Flash最后一个Page.如果应用程序区没有空余的Page来写入该标志,就要考虑换用更大Flash容量的产品或者外扩存储器。程序完好标志在应用程序进入的时候写入,在接收到升级命令时擦除。若在引导程序中检测该标志不合法,就一直处于升级状态,直到最后收到升级成功命令为止。

程序跳转示例性跳转代码如下:

typedef void(*pFunc)(vold); //自定义函数指针数据类型

pFunc Jump_To_App; //定义一个指向应用程序的指针

Jump_To_App=(pFunc)0x08004000;

Jump_To_App();

需要注意的是,在程序执行跳转代码前,需要关闭中断响应,以避免发生不可预测的异常。同时,当程序跳转前,需要将堆栈指针设置到相应的程序区域。

结语

通过CAN总线对分布式嵌入式系统进行在线升级非常具有代表性,随着越来越多的芯片集成了丰富多样的片上通信外设(如以太端口、I2C总线等),使得嵌入式系统的升级也具有更多样式,甚至可以通过公用网络(如因特网、GPRS等)进行远程升级。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式系统
    +关注

    关注

    41

    文章

    3716

    浏览量

    133106
  • gps
    gps
    +关注

    关注

    22

    文章

    3012

    浏览量

    172543
  • CAN
    CAN
    +关注

    关注

    58

    文章

    3013

    浏览量

    471478
  • 倒车雷达
    +关注

    关注

    4

    文章

    77

    浏览量

    24451
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    一个面向单片机、事件驱动的嵌入式开发平台介绍

    会使用Event Bridge(事件桥)机制与EventOS打通事件总线,以便对EventOS的分布式特性进行支持。 重点关注三种应用场景:中小资源单片机,作为模块向其他软件系统嵌入
    发表于 12-05 06:26

    虹科干货 | 嵌入式AI崛起,CAN总线如何重塑新角色?

    你是否注意到,AI正从「云端」下沉,融入我们身边的各类设备?这就是「嵌入式AI」,它让终端设备拥有了感知、决策的能力。但一个关键问题随之而来:这些分散的「小智能」,如何被可靠地联结起来,协同
    的头像 发表于 11-26 17:03 1383次阅读
    虹科干货 | <b class='flag-5'>嵌入式</b>AI崛起,<b class='flag-5'>CAN</b><b class='flag-5'>总线</b>如何重塑新角色?

    嵌入式系统的定义和应用领域

    不在影响着我们的生活和工作方式。 在嵌入式系统中,嵌入式操作系统嵌入式微处理器扮演着至关重要的角色。从硬件层面剖析,
    发表于 11-17 06:49

    嵌入式需要掌握哪些核心技能?

    /网络设备)、中断底半部处理,适用于高端嵌入式设备。 企业需求:RTOS是60%岗位的核心要求,Linux开发需求随项目复杂度增长。 4)通信协议与接口 基础协议:UART、SPI、I2C、CAN总线
    发表于 10-21 16:25

    【节能学院】Acrel-1000DP分布式光伏监控系统在奉贤平高食品 4.4MW 分布式光伏中应用

    摘要:在“双碳”和新型电力系统建设背景下,分布式光伏接入比例不断提高,对配电网电压、调度运行及调峰等环节造成强烈冲击。本文设计包含平台层、设备层二层架构体系的分布式光伏管控平台,以及小容量工商业
    的头像 发表于 08-23 08:04 3306次阅读
    【节能学院】Acrel-1000DP<b class='flag-5'>分布式</b>光伏监控<b class='flag-5'>系统</b>在奉贤平高食品 4.4MW <b class='flag-5'>分布式</b>光伏中应用

    分布式光伏发电监测系统技术方案

    分布式光伏发电监测系统技术方案 柏峰【BF-GFQX】一、系统目标 :分布式光伏发电监测系统旨在
    的头像 发表于 08-22 10:51 2888次阅读
    <b class='flag-5'>分布式</b>光伏发电监测<b class='flag-5'>系统</b>技术<b class='flag-5'>方案</b>

    入行嵌入式应该怎么准备?

    架构、总线协议和存储器管理等概念的理解也是必不可少的。 三、操作系统嵌入式系统通常需要运行一个实时操作系统(RTOS)或者一个精简版的操作
    发表于 08-06 10:34

    分布式光伏监测难?并网型分布式光伏系统光伏功率预测方案

    一、分布式光伏发电系统   安科瑞 邹玉丽   分布式光伏发电系统的基本设备包括光伏电池组件、光伏方阵支架、直流汇流箱、直流配电柜、并网逆变器、交流配电柜等设备,另外还有供电
    的头像 发表于 05-20 10:17 881次阅读
    <b class='flag-5'>分布式</b>光伏监测难?并网型<b class='flag-5'>分布式</b>光伏<b class='flag-5'>系统</b>光伏功率预测<b class='flag-5'>方案</b>

    抗干扰CAN总线通信技术在分布式电力系统中的应用

    摘要 :随着分布式电力系统的广泛应用,其通信系统的可靠性与稳定性受到了前所未有的挑战。CAN总线通信技术以其卓越的抗干扰性能和可靠性,在众多
    的头像 发表于 04-14 18:24 707次阅读

    分布式光伏发运维系统实际应用案例分享

    安科瑞刘鸿鹏 摘 要 分布式光伏发电系统其核心特点是发电设备靠近用电负荷中心,通常安装在屋顶、建筑立面或闲置空地上,截至2025年,分布式光伏发电系统在全球和中国范围内取得了显著发展,
    的头像 发表于 04-09 14:46 992次阅读
    <b class='flag-5'>分布式</b>光伏发运维<b class='flag-5'>系统</b>实际应用案例分享

    浅谈分布式光伏系统在工业企业的设计及应用

    ,通过对工业厂区屋顶分布式光伏系统应用案例的研究,对电力消纳、系统设计方案进行了详细论述,*后对未来的厂区屋顶分布式光伏
    的头像 发表于 03-21 14:24 729次阅读
    浅谈<b class='flag-5'>分布式</b>光伏<b class='flag-5'>系统</b>在工业企业的设计及应用

    铁塔基站分布式储能揭秘!

    的正常运转。为了解决这些问题,安科瑞推出了基站铁塔分布式储能解决方案,为基站的稳定供电提供了可靠的保障。 一、什么是基站铁塔分布式储能? 基站铁塔分布式储能
    的头像 发表于 02-12 16:42 1353次阅读
    铁塔基站<b class='flag-5'>分布式</b>储能揭秘!

    分布式云化数据库有哪些类型

    分布式云化数据库有哪些类型?分布式云化数据库主要类型包括:关系型分布式数据库、非关系型分布式数据库、新SQL分布式数据库、以列方式存储数据、
    的头像 发表于 01-15 09:43 871次阅读

    基于ptp的分布式系统设计

    在现代分布式系统中,精确的时间同步对于确保数据一致性、系统稳定性和性能至关重要。PTP(Precision Time Protocol)是一种网络协议,用于在分布式
    的头像 发表于 12-29 10:09 975次阅读

    嵌入式系统开发与硬件的关系 嵌入式系统开发常见问题解决

    嵌入式系统开发与硬件的关系 嵌入式系统是专为特定应用设计的计算机系统,它们通常嵌入在所控制的设备
    的头像 发表于 12-09 09:38 1468次阅读