搜索
bottom↓
回复: 1

STM32实现跨bin文件调用函数(Firmware)

[复制链接]

出16390入6836汤圆

发表于 5 天前 来自手机 | 显示全部楼层 |阅读模式
(VIP++福利贴:本资源由坛友 16312610   提出申请,由阿莫网上搜集与上传,版权归原作者。)

一、技术背景 以前我用过一款庆科的WiFi模组——EMW3162,它由一块STM32F205RG芯片 + SDIO接口的射频芯片组成,有趣的是官方将这颗STM32芯片内部Flash做了很多块的划分,如下图所示。 EMW316x FLASH分配情况 可以看到1MB的Flash被分割成了5部分,分别是: 1. Bootloader,一段引导代码,一般用于更新APP程序。 2. 信息区,存放OTA的一些信息和用户参数。 3. 用户应用区,也就是APP区,用户可以二次开发后将代码烧录到此处。 4. OTA暂存区,接收OTA数据,接收完成后再复制到用户应用区。 5. 射频驱动区,用于存放SDIO射频模组 STM32实现跨bin文件调用函数是一种在嵌入式系统中常见的软件设计模式,尤其在需要隔离不同功能模块或确保某部分代码(如驱动)稳定性的情况下。在本例中,STM32微控制器的闪存被划分为多个区域,包括Bootloader、信息区、用户应用区、OTA暂存区和射频驱动区。这样的分区便于系统管理和固件更新,同时也提出了跨bin文件调用函数的需求。 在技术方案部分,提供了两种实现方法。方案一是通过在Driver工程中创建一个包含函数指针的结构体,并提供一个初始化函数来设置这些指针。App在运行时调用初始化函数获取函数地址。方案二是更为直接的方法,将Driver中的函数地址直接按照4字节对齐放置在Driver区的起始地址,App通过定义一个结构体指针并让它指向Driver区的起始地址,从而间接调用Driver层的函数。 这里选择方案二进行详细阐述。其核心思想是利用中断向量表的原理,将函数地址像中断服务函数一样在Flash中按顺序排列。在Keil MDK环境下,可以创建一个汇编文件,定义一个新的数据段(如FIRMWARE),并将需要的函数地址在此段中定义。例如,`DCD`指令用于定义数据地址,如`DCD FirmwareInit`等,表示函数`FirmwareInit`的地址。同时,需要修改Driver工程的分散加载文件(.ld)以适应新的段分配。 在汇编文件中,可以定义弱符号([WEAK]),以便在未定义函数时,编译器不会报错。弱符号的函数名如`LED_ON`、`LED_OFF`等,意味着如果在其他地方未定义这些函数,它们将默认为空。`B .END`指令结束代码段。 在App工程中,App可以声明一个与Driver工程中结构体指针相同的结构体,并将其指针初始化为Driver区的起始地址。这样,App就可以通过结构体成员调用Driver中的函数,实现跨bin文件的调用。 需要注意的是,这种方法需要确保App和Driver之间的接口稳定,以及在更新Driver时不会影响到App的运行。此外,还需要处理好函数的参数类型和返回值,确保函数调用的正确性。在实际应用中,可能还需要考虑异常处理和错误检测机制,以保证系统的稳定性和可靠性。 STM32跨bin文件调用函数是通过精心设计的内存布局和函数地址管理实现的,它允许不同功能模块之间保持独立,同时保持有效的通信,这在嵌入式系统开发中具有重要的实践价值。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
头像被屏蔽

出16390入6836汤圆

 楼主| 发表于 5 天前 来自手机 | 显示全部楼层
提示: 该帖被管理员或版主屏蔽
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-25 06:16

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表