stm32平台BACnet移植(一)

前面是吐槽,不想看直接从分割线开始看干货
首先我想表达,移植bacnet确实是一件扎心的事情。笔者费了好一番功夫,总算也是跑通了官方给的demo,是的。正常来说,官方demo是可以立马使用的,但是可能bacnet比较特殊吧,我现在(2017.10.18)最新版协议栈是0.8.5。
笔者的一向习惯,首次使用下载最新版本,以后能不更新则不更,除非出现在好用的升级。开开心心下载好了0.8.5,打开一看,哇,好简陋的官方协议栈居然doc都没有,不过好在有demo吧,虽然隐藏在port文件夹下,我用的stm32,其他几个平台忽略,打开stm32的一看。好吧,IAR编译的,stm32用惯了mdk,没有iar for arm,为了这份没有文档的代码,下载吧,不然怎么看,虽然文件都在这,但我不知道哪个有用啊,扎心。
下好IAR,安装,打开工程,唔,什么梗,缺文件,官方协议栈缺文件,官方维护人员有些走心呐,这下玩个飞机,没办法,求助伟大的网友吧,网上找资料也扎,关于bacnet资料少的可怜,好不容易找个几个稍微有用的,说的也有些抽象,不过我捕捉到一个信息 ,有人说官方协议栈是有doc的,but怎么我下的没有呢,难道我下错了?重新去下了一份,还是没doc,无奈,放弃最新版,下了旧点的(0.8.0),结尾是个偶数,应该是一个正式版不是测试版,期待比0.8.5好一些,果然不负我,里面东西相比之下太全了,有文档,demo也多了好多平台(我不知道我为什么高兴,我只用一个平台,这和我没关系啊,)

——————————————————————————

吐槽结束,开始放干货,既然网上资料少,那我应该贡献点什么了。目前只做了移植,就先把怎么在stm32上面跑通分享出来。
准备:bacnet-stack-0.8.5 bacnet-stack-0.7.5
两个协议栈是必须的(目前来看,以后官方应该会更新完0.8.5,到时候可能直接用0.8.5就好了,期待)。
相对而言0.7.5缺少的文件方便整理,所以我基于0.7.5补充,把缺少的一些东西从0.8.5copy过来,
用iar打开0.7.5里面stm32工程bacnet-stack-0.7.5.zip\bacnet-stack-0.7.5\ports\stm32f10x\bacnet.eww。看上去似乎没什么问题,编译一下,发现缺少库,把0.8.5的drivers文件夹和CMSIS文件夹覆盖copy过来,或者先删了,再把0.8.5版本的copy,完事编译,发现还是缺少两个头文件core_cmInstr.h core_cmFunc.h,这两个协议栈找不到,去网上下两个,塞到工程里,编译,终于没有错误了。
接下来解决警告,有很大部分警告来自启动文件,
Label ‘Reset_Handler’ is defined pubweak in a section implicitly declared root …/p_stm32f40_41xxx.s
可以做如下修改把REORDER(2)改为REORDER:NOROOT(2),REORDER(1)改为REORDER:NOROOT(1)
其中,NOROOT可以替换成ROOT,因为在.s中中断标号是弱定义,改成NOROOT就是未使用时优化,对应ROOT未使用时不优化。对程序没什么影响。
好了,大功告成,开始慢慢啃源码吧~~~

顺带一提,虽然doc给的后缀不尽相同,但是除了一个奇葩都可以用nodepad打开。其他软件没有试。但我觉得可以阅读文本的都能看。
有关官方协议栈和移植好的代码可以留邮箱。

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 39
    评论
### 回答1: BACnet(Building Automation and Control Networks)协议是一种用于建筑自动化和控制网络的通信协议。BACnet协议的移植是指将该协议应用于其他系统或设备上的过程。 首先,BACnet协议的移植需要有充分的了解和理解该协议的规范和功能。该协议包含了通信的数据格式、命令、网络拓扑结构等方面的规定。移植过程中需要根据目标系统的要求和限制,进行相应的调整和改编。 其次,BACnet协议的移植需要有适当的软硬件支持。硬件方面,需要确保目标系统具备足够的计算和存储能力来处理BACnet协议的通信和控制任务。软件方面,需要根据目标系统的操作系统和编程语言,进行相应的代码修改和适配。 在具体的移植过程中,需要对BACnet协议的不同功能模块进行适配和实现。例如,对于数据传输和通信协议层,需要根据目标系统的网络环境和传输媒介选择合适的通信方式和协议实现。对于应用层,需要根据目标系统的功能需求和硬件接口实现适当的控制逻辑和数据处理。 在移植后的应用中,需要进行充分的测试和验证,确保移植BACnet协议在目标系统上的正常运行和稳定性。同时,还需要提供相应的技术支持和维护,确保移植后的系统能够正常使用和运行。 总之,BACnet协议的移植是一项复杂的工程任务,需要充分的规划和准备。通过适当的软硬件支持和合适的实现方法,可以将BACnet协议应用于不同的系统和设备中,提高建筑自动化和控制网络的通信效率和可靠性。 ### 回答2: BACnet(Building Automation and Control Network)是一种用于建筑自动化和控制系统的通信协议。BACnet协议移植是指将BACnet协议从一种硬件平台或操作系统移植到另一种硬件平台或操作系统。 BACnet协议移植的目的是为了在不同的硬件平台或操作系统上实现相同的通信功能。这种移植需要进行一定的工作,包括了解目标平台的特性和限制,修改和调整协议的实现代码,以适应目标平台的要求。 首先,要进行BACnet协议移植,需要对目标平台进行仔细的分析和评估。这包括了解目标平台的操作系统类型、内存、处理器、网络接口等硬件参数。只有了解目标平台的特性和限制,才能进行有效的移植工作。 其次,对协议实现代码进行修改和调整。这意味着根据目标平台的要求,对原来的代码进行修改和适配。可能需要进行平台特定的代码优化、更改网络接口实现,以及处理不同的操作系统API调用等。这些修改和调整的目的是确保协议在目标平台上的正确运行和性能提升。 最后,进行测试和验证。移植完毕后,需要对移植后的BACnet协议进行充分的测试和验证。这包括功能测试、性能测试和兼容性测试等。测试的结果将验证移植的协议在目标平台上的正确性和稳定性。 总结而言,BACnet协议移植是一项需要精细分析、修改和测试的工作。它的目的是在不同的硬件平台或操作系统上实现相同的通信功能。移植过程中需要对目标平台进行评估,对协议实现代码进行修改和调整,并进行充分的测试和验证。只有经过有效的移植工作,才能确保BACnet协议在不同平台上的成功应用。 ### 回答3: BACnet协议是一种用于建筑自动化和控制系统之间进行通信的通信协议。它提供了一个标准化的方式,使不同设备和系统能够互相交流和协作。 移植BACnet协议是指将BACnet协议应用到不同的硬件平台或软件环境中。这个过程需要将BACnet协议的代码和功能移植到目标平台,以便与特定的硬件或软件环境进行通信。 移植BACnet协议需要先了解目标平台的特性和限制。例如,如果目标平台是一个嵌入式系统,则需要考虑硬件资源的限制和处理能力。如果目标平台是一个PC或服务器,那么就需要考虑软件环境和操作系统的要求。 一般来说,移植BACnet协议的过程包括以下几个步骤: 1. 硬件或软件环境的调研和评估:了解目标平台的特性和限制,确定是否能够支持BACnet协议的功能和要求。 2. 移植代码:根据目标平台的要求,修改BACnet协议的代码,确保它能够在目标平台上正常运行。 3. 测试和调试:在目标平台上进行测试,确保BACnet协议能够与其他设备和系统进行正常的通信和协作。 4. 性能优化:对移植后的BACnet协议进行性能优化,以提高其在目标平台上的运行效率和响应速度。 需要注意的是,移植BACnet协议可能会面临一些挑战,比如硬件和软件的兼容性、不同平台之间的差异等。因此,在移植BACnet协议时,需要经验丰富的开发人员和专业的工具来支持和指导。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 39
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值