搜索
bottom↓
回复: 251

开源基于CAN总线的Bootloader/IAP,含上位机及单片机源码

  [复制链接]

出0入0汤圆

发表于 2016-12-9 14:16:15 | 显示全部楼层 |阅读模式
功能简介:
利用CAN总线实现对有CAN总线接口的设备进行固件升级;
升级采用一键升级方式,傻瓜式操作,方便使用;
用户可以自己修改上位机源码和下位机源码,实现固件的加密传输;
目前此项目包含了STM32F1,STM32F2,STM32F4系列单片机示例源码,后面会增加其他单片机源码;
上位机界面程序目前是用Qt(C++)实现,后面会增加C#,Labview版本代码;

使用步骤:
1,找到和你所使用的单片机对应的源码,比如为STM32F103芯片,用keil 5打开bootloader/RVMDK目录下的工程,检查下你的CAN总线引脚配置是否跟我代码里面的一样,若是一样的,则可以直接编译下载,若不一样,则需要更改CAN总线引脚配置部分代码;
2,和bootloader同目录下有个app目录,同样打开app/RVMDK目录下的工程文件,并编译工程,若一切正常的,那么在app/RVMDK/Output目录下应该会生成一个.bin文件,这个就是我们后面用来升级的固件;
3,使用Qt5打开software/CANBootloader-Qt/project目录下的CAN_Bootloader.pro文件,点击“构建”->“运行”即可编译运行此程序(若没有Qt开发环境,可以直接下载我打包好的程序,安装后即可运行,百度网盘下载地址:http://pan.baidu.com/s/1hsFjZMk ,在“软件”->“CANBootloader”目录)。
4,运行CANBootloader上位机软件后,点击“操作”->“扫描节点”,此时软件会弹出节点地址范围设置对话框,设置好扫描的节点返回,点击“确定”之后软件就开始扫描节点,同时将扫描到的节点显示在节点列表里面,选择列表里面的节点,然后再点击界面上的“打开文件”按钮,在弹出的文件浏览对话框中找到第2步编译出来的.bin文件,然后再点击“更新固件”按钮,此时就会开始固件更新,固件更新成功后,节点列表里面的节点固件类型会由原来的“BOOT”变成“APP”,到此固件更新完毕。
5,若当前固件是“APP”的情况下,一样是可以进行固件更新的,只是在更新固件之前程序会有一个固件跳转的操作,具体流程可以参考源码。

软件演示:

源码下载:
https://github.com/usbxyz/CAN-Bootloader
上位机软件安装程序下载:http://pan.baidu.com/s/1qY6gkJa

本帖子中包含更多资源

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

x

出0入0汤圆

发表于 2016-12-9 15:05:58 | 显示全部楼层
不错,很强大!!!

出0入0汤圆

发表于 2016-12-9 15:09:03 | 显示全部楼层
顶,期待labview例程

出0入102汤圆

发表于 2016-12-9 15:12:47 | 显示全部楼层
赞,操作清晰明了。

出0入0汤圆

发表于 2016-12-9 15:16:28 | 显示全部楼层
感谢分享,默默MARK,很强大啊

出0入4汤圆

发表于 2016-12-9 15:31:21 | 显示全部楼层
太强大了

出0入90汤圆

发表于 2016-12-9 15:33:41 | 显示全部楼层
楼主又出好东西了啊!支持下!

出0入0汤圆

 楼主| 发表于 2016-12-9 15:35:01 | 显示全部楼层
honami520 发表于 2016-12-9 15:33
楼主又出好东西了啊!支持下!

               

出0入0汤圆

发表于 2016-12-9 15:37:44 来自手机 | 显示全部楼层
很好,有空下来学习一下

出0入0汤圆

发表于 2016-12-9 15:38:59 | 显示全部楼层
这个咱也必须支持一下,很强大的东西。

出0入0汤圆

发表于 2016-12-9 15:55:57 | 显示全部楼层
谢楼主!

出0入0汤圆

发表于 2016-12-9 15:59:17 | 显示全部楼层
牛逼    很好很强大啊

出40入42汤圆

发表于 2016-12-9 16:18:59 | 显示全部楼层
下载来看看,多谢分享

出0入0汤圆

发表于 2016-12-9 16:21:48 | 显示全部楼层
很强大!!!

出0入0汤圆

发表于 2016-12-9 16:43:06 来自手机 | 显示全部楼层
操作清晰明了,赞

出0入0汤圆

发表于 2016-12-9 16:46:30 | 显示全部楼层
强悍

出0入0汤圆

发表于 2016-12-9 16:47:06 | 显示全部楼层
就这破玩意儿,就这做的代码的品质,还开源呢,只能说能用,品质到底了。

出0入0汤圆

发表于 2016-12-9 17:26:55 | 显示全部楼层
谢谢分享

出0入0汤圆

发表于 2016-12-9 17:37:28 来自手机 | 显示全部楼层
支持!下载测试

出0入0汤圆

发表于 2016-12-9 17:50:44 | 显示全部楼层
好东西,必须顶!

出0入0汤圆

发表于 2016-12-9 17:56:22 来自手机 | 显示全部楼层
谢谢共享

出0入8汤圆

发表于 2016-12-9 19:58:40 来自手机 | 显示全部楼层
相由心生 发表于 2016-12-9 16:47
就这破玩意儿,就这做的代码的品质,还开源呢,只能说能用,品质到底了。 ...

不管楼主的东西怎么样,你直接这样贬低说明人品有问题!
ps:你行你来!

出0入0汤圆

发表于 2016-12-9 20:02:57 | 显示全部楼层
了无 发表于 2016-12-9 19:58
不管楼主的东西怎么样,你直接这样贬低说明人品有问题!
ps:你行你来!

难道我会用冰箱,要会造冰箱么。我会用手机,要会造手机么。

出0入0汤圆

发表于 2016-12-9 22:11:50 | 显示全部楼层
支持楼主, 希望楼主不要被有的人影响,这个世界有太多的dream killer.

出0入42汤圆

发表于 2016-12-9 22:18:44 | 显示全部楼层
大神啊

出0入42汤圆

发表于 2016-12-9 22:20:35 | 显示全部楼层
相由心生 发表于 2016-12-9 16:47
就这破玩意儿,就这做的代码的品质,还开源呢,只能说能用,品质到底了。 ...

咱都以作品说话   别扯没用的   来点干货  

出0入42汤圆

发表于 2016-12-9 22:20:35 | 显示全部楼层
相由心生 发表于 2016-12-9 16:47
就这破玩意儿,就这做的代码的品质,还开源呢,只能说能用,品质到底了。 ...

咱都以作品说话   别扯没用的   来点干货  

出0入0汤圆

发表于 2016-12-9 22:33:23 来自手机 | 显示全部楼层
喷得凶才体现楼主强大

出0入0汤圆

发表于 2016-12-9 22:34:35 | 显示全部楼层
我这么这么说,我还是比较认真的看过。
1、开源项目,硬件不开源,而且做广告,开个毛源,等于挖一个新坑。
2、软件没有架构概念,一坨代码杂在一起,这样的软件只能说能用,能用到产品中去吗?变像也是坑。
3、文档以注释为主,没有说明工作原理。
4、我公司产品中can、串口、蓝牙、GPRS升级已经是早就产品化,只是不能开源。
5、几个开源软件意识要有:
     1、说明依赖
     2、遵从的协议
     3、工作原理
     4、良好的软件架构
     5、尽量不埋坑

出0入0汤圆

发表于 2016-12-9 22:56:01 来自手机 | 显示全部楼层
支持楼主的开源。另外鄙视楼上

出0入0汤圆

 楼主| 发表于 2016-12-9 22:57:36 来自手机 | 显示全部楼层
本不想说啥,但是还是想说几句

出0入0汤圆

发表于 2016-12-9 23:01:10 | 显示全部楼层
顶              

出0入0汤圆

 楼主| 发表于 2016-12-9 23:02:03 来自手机 | 显示全部楼层
1,项目中用到的usb转can适配器确实是我们公司的产品,这个即使我想开源也不能开源,至于广告一说,你要这样理解也可以,就算做个广告应该也不是什么无耻的事情,毕竟代码不能当饭吃,至于是不是坑,需要使用的人来评判好了

出0入0汤圆

 楼主| 发表于 2016-12-9 23:05:51 来自手机 | 显示全部楼层
2,个人编程能力确实有限,只能尽量写好一点,当然以后也会更加努力,需要使用的人在使用这些代码的时候也只能做参考,有坑的地方也希望大家能指出来,我会尽量努力给填上

出0入0汤圆

 楼主| 发表于 2016-12-9 23:07:39 来自手机 | 显示全部楼层
3,文档方面目前确实做得不好,后面我也会尽量完善,不过对稍微有点基础的人来说,应该很容易理解的

出0入0汤圆

 楼主| 发表于 2016-12-9 23:10:59 来自手机 | 显示全部楼层
4,产品化的东西当然不方便开源,这个大家都懂,不过你也可以剥离一点出来造福下广大坛友被,相信以你能力,随便弄一段代码对于我们都是很大的福利啊,期待~~

出0入0汤圆

 楼主| 发表于 2016-12-9 23:14:14 来自手机 | 显示全部楼层
5,至于开源协议,我没去做过大的开源项目,所以也不懂,我只是奉献了一点我觉得还有点用的东西而已,事实上也有很多客户使用此方案应用到自己的产品中

出0入0汤圆

 楼主| 发表于 2016-12-9 23:20:04 来自手机 | 显示全部楼层
总之,我很多开源贴都仅供参考,个人能力有限,难免会有些错误,也希望大家指正

出0入76汤圆

发表于 2016-12-9 23:39:52 | 显示全部楼层
不错,感谢分享,给你顶起

出0入0汤圆

发表于 2016-12-10 05:17:37 来自手机 | 显示全部楼层
支持楼主

出0入24汤圆

发表于 2016-12-10 06:52:02 | 显示全部楼层
Mark!
学习一下!

出0入0汤圆

发表于 2016-12-10 08:35:38 | 显示全部楼层
强帖留名,CAN总线的Bootloader/IAP

出0入0汤圆

发表于 2016-12-10 08:44:33 | 显示全部楼层

谢楼主!

出0入0汤圆

发表于 2016-12-10 08:51:48 | 显示全部楼层
这个真的是好东西,谢谢!

出0入0汤圆

发表于 2016-12-10 08:53:07 | 显示全部楼层
谢谢楼主,标记一下  can总线IAP

出0入0汤圆

发表于 2016-12-10 09:56:57 | 显示全部楼层
楼主的动态图怎么弄的,

出0入0汤圆

发表于 2016-12-10 10:06:16 | 显示全部楼层
感谢分享

出0入13汤圆

发表于 2016-12-10 10:06:19 | 显示全部楼层
百度链接失效啊!能重发一下嘛?谢谢!

出180入0汤圆

发表于 2016-12-10 10:38:02 | 显示全部楼层

谢谢分享
谢谢分享

出0入0汤圆

 楼主| 发表于 2016-12-10 17:52:48 来自手机 | 显示全部楼层
霸气侧漏 发表于 2016-12-10 09:56
楼主的动态图怎么弄的,

录屏后转换成gif图片

出0入0汤圆

 楼主| 发表于 2016-12-10 17:53:21 来自手机 | 显示全部楼层
liao-ljj 发表于 2016-12-10 10:06
百度链接失效啊!能重发一下嘛?谢谢!

我刚刚测试没问题啊

出0入0汤圆

发表于 2016-12-10 18:04:17 | 显示全部楼层
这个牛逼,谢谢楼主,收藏

出0入0汤圆

发表于 2016-12-10 22:39:53 来自手机 | 显示全部楼层
顶楼主!

出0入0汤圆

发表于 2016-12-11 00:03:41 | 显示全部楼层
很强, 果断收了

出0入0汤圆

发表于 2016-12-11 13:09:47 | 显示全部楼层
高手来的,总会有好东西!

出100入101汤圆

发表于 2016-12-11 13:20:19 | 显示全部楼层
支持一下,挺好的!

出0入0汤圆

发表于 2016-12-11 16:28:17 | 显示全部楼层
严重关切labview~mark~~

出0入0汤圆

发表于 2016-12-11 19:48:22 | 显示全部楼层
多谢楼主的分享,给我提供了一些帮助,正准备做这。

出0入0汤圆

发表于 2016-12-11 19:57:48 | 显示全部楼层
支持楼主,被29楼喷了,别在意~哈哈

出0入0汤圆

发表于 2016-12-11 21:42:41 来自手机 | 显示全部楼层
多谢楼主,上周花了一周的时间查看了楼主的上一个版本,借鉴其中的一些思路用cvi也整了个,没想到楼主这么快又发布新的版本了。赞一个

出0入0汤圆

发表于 2016-12-12 08:15:45 | 显示全部楼层
对CAN更新的协议更感兴趣,CAN的加密有点麻烦。

出0入0汤圆

发表于 2016-12-12 08:34:13 | 显示全部楼层
楼主好样的!

出0入0汤圆

发表于 2016-12-12 08:37:14 | 显示全部楼层
正好公司要做CAN,及时雨啊!多谢!

出0入0汤圆

 楼主| 发表于 2016-12-12 08:55:42 | 显示全部楼层
guzhongqi 发表于 2016-12-12 08:15
对CAN更新的协议更感兴趣,CAN的加密有点麻烦。

其实一点都不麻烦,直接把原始bin文件加密,然后CAN传输的数据也是加密之后的bin文件数据,单片机接收到这些数据之后再解密写入Flash即可,因为不想把项目搞得太复杂,所以这里没实现这样的功能

出0入0汤圆

发表于 2016-12-12 12:40:19 | 显示全部楼层
wdluo 发表于 2016-12-12 08:55
其实一点都不麻烦,直接把原始bin文件加密,然后CAN传输的数据也是加密之后的bin文件数据,单片机接收到 ...

通信不加密就能被监听,在单片机解密意味着有明文保存的密钥,所以只要解密了bootloader你所谓的加密就没有意义了。

出0入0汤圆

发表于 2016-12-12 12:51:43 来自手机 | 显示全部楼层
楼主上一个版本里面数据传输后加了两字节的crc,个人感觉没必要,因为Can协议本身已经带crc 验证了。收到的数据就是可靠的。

出0入0汤圆

 楼主| 发表于 2016-12-12 14:09:06 | 显示全部楼层
guzhongqi 发表于 2016-12-12 12:40
通信不加密就能被监听,在单片机解密意味着有明文保存的密钥,所以只要解密了bootloader你所谓的加密就没 ...

是的,若bootloader程序被读出来,确实也没办法了

出0入0汤圆

 楼主| 发表于 2016-12-12 14:12:55 | 显示全部楼层
aduecho 发表于 2016-12-12 12:51
楼主上一个版本里面数据传输后加了两字节的crc,个人感觉没必要,因为Can协议本身已经带crc 验证了。收到的 ...

我程序里面有两次CRC校验,一是接收完数据之后,而是数据写入Flash之后
第一种情况主要是怕在接收数据的时候,同时又收到了CAN总线上其他节点发了刚好跟这个命令一样的数据,这样从节点必须通过CRC来保证接收到的数据是无误的
第二种情况是保证写入Flash的数据是完全没问题的,比如Flash没被擦除的情况,虽然也可以成功写入,但是写入之后的数据跟原始数据就不一样了,所以这个CRC校验最好是加上

出0入0汤圆

发表于 2016-12-13 12:27:23 来自手机 | 显示全部楼层
楼主好样的,不管是否能够产品化,至少提供了一种思路,比光说不做的人好太多了

出0入0汤圆

发表于 2016-12-13 17:03:21 | 显示全部楼层
楼主牛逼.

出0入0汤圆

发表于 2016-12-15 09:49:47 | 显示全部楼层
楼主辛苦!有c#版本的吗?感谢楼主,我也在做,但是对c#小白做起来吃力

出0入0汤圆

 楼主| 发表于 2016-12-15 14:58:51 | 显示全部楼层
robin林 发表于 2016-12-15 09:49
楼主辛苦!有c#版本的吗?感谢楼主,我也在做,但是对c#小白做起来吃力

暂时还没有,后面打算做,你若急要我可以给你一个C#版本的控制台程序,188298598

出0入0汤圆

 楼主| 发表于 2016-12-15 18:02:21 | 显示全部楼层
Labview版本的上位机程序写好了,大家可以到github上下载,LABVIEW不是很熟悉,程序写得不怎么好,但是能正常工作,仅供参考

出0入0汤圆

发表于 2016-12-16 11:57:22 | 显示全部楼层
非常不错,正需要。非常感谢。mark: can总线IAP

出0入0汤圆

发表于 2016-12-16 12:31:20 | 显示全部楼层
不错,感谢分享CAN IAP

出0入0汤圆

 楼主| 发表于 2016-12-16 12:54:39 | 显示全部楼层
这两天在做C#版本上位机程序,估计下周可以做好

出30入0汤圆

发表于 2016-12-16 13:35:52 | 显示全部楼层
相由心生 发表于 2016-12-9 22:34
我这么这么说,我还是比较认真的看过。
1、开源项目,硬件不开源,而且做广告,开个毛源,等于挖一个新坑。 ...

说的很好,是做产品的人。
玩了很多开发板,但是发现国产的开发板的特点是面子上的高大全,除了CPU外,用的电路很多都是老套的快淘汰的方案,在产品上无法使用。例程虽然很多,但是在都是一些底层得不能再底层的例子,配置文件、功能等根本无法直接借鉴,而且很多代码是堆砌、照搬来的,有用的和没有用的混在一起,想使用的话,要把文件全部看一遍,然后发现还不如重新写了。如果照搬,到处都是坑,会死的很惨。
宁愿多花一点钱,买国外的原厂的开发板,像STM32的DICSO系列,Necluo系列的开发板,应用说明文件,电路、外围电路、例程都很经典,而且方案都是比较新的,价格也不贵。

出30入0汤圆

发表于 2016-12-16 13:41:22 | 显示全部楼层
产品都有应用背景,电子只是其中很小一部分,其实在电子方面开源倒是可能的,毕竟核心竞争力不在这一块,而且大家能够相互借鉴,节省开发时间,所以国外的开源网站特别火,而且开源的项目质量较高。国内乌龙混杂,没有办法,大家都要挣钱,每一个人都想借助别人的力量,站在巨人的肩膀上。

出0入10汤圆

发表于 2016-12-16 13:48:12 | 显示全部楼层
不错!我也正想做个类似这种东西!我在51单片机上实现了,下一步试试STM32强大的性能,
界面我用MFC写的,只是没楼主那么熟练,界面线程还在练习

只是楼主这个扫面节点也太快了吧,超时时间估计就250MS吧

出0入0汤圆

 楼主| 发表于 2016-12-16 14:32:56 | 显示全部楼层
dwiller_ARM 发表于 2016-12-16 13:48
不错!我也正想做个类似这种东西!我在51单片机上实现了,下一步试试STM32强大的性能,
界面我用MFC写的, ...

程序设置的10毫秒,可以根据实际应用情况进行更改

出0入0汤圆

 楼主| 发表于 2016-12-16 14:40:25 | 显示全部楼层
linquan315 发表于 2016-12-16 13:35
说的很好,是做产品的人。
玩了很多开发板,但是发现国产的开发板的特点是面子上的高大全,除了CPU外,用 ...

大环境不一样,说这些都没啥用
若广大电工都不用考虑赚钱养家,那肯定也会花时间把事情做好,做到极致,相信搞技术的人都是有这种匠人精神的,但是没办法,在国内你做好了,还开源了,就只有一个结局而已...

出0入0汤圆

 楼主| 发表于 2016-12-16 14:41:40 | 显示全部楼层
linquan315 发表于 2016-12-16 13:41
产品都有应用背景,电子只是其中很小一部分,其实在电子方面开源倒是可能的,毕竟核心竞争力不在这一块,而 ...

你敢把你公司产品代码放出来给大家借鉴不??

出0入0汤圆

发表于 2016-12-16 19:41:42 来自手机 | 显示全部楼层
强大,谢谢分享

出0入0汤圆

发表于 2016-12-16 20:21:04 | 显示全部楼层
不错,很强大!!!谢谢分享

出30入0汤圆

发表于 2016-12-18 13:31:29 | 显示全部楼层
wdluo 发表于 2016-12-16 14:41
你敢把你公司产品代码放出来给大家借鉴不??

有部分代码用到了,你看俺的帖子,:
modbus用到了,STM32F4与LPC1758的FreeModbus移植
CAN总线的用到了,动态内存+环形队列库+CAN驱动(LPC17XX)
串口的驱动程序用到了,STM32串口驱动(拼音检索测试通过)(环形队列+内存动态分配+DMA。
这些在产品中用到了的。
这些自己写也容易,只是需要时间,验证更加需要时间,就像文字一样,只是一个载体而已,但是具体的产品的功能部分,肯定有很多不能公开的,这是你说的。
技术在中国不是最关键的,市场、渠道、关系、背景才是。

出0入0汤圆

 楼主| 发表于 2016-12-18 16:00:43 | 显示全部楼层
robin林 发表于 2016-12-15 09:49
楼主辛苦!有c#版本的吗?感谢楼主,我也在做,但是对c#小白做起来吃力

C#版本的代码做好了,源码你可以到github上去下载,这里给你一个可以直接运行的文件

出0入0汤圆

 楼主| 发表于 2016-12-18 16:02:00 | 显示全部楼层

本帖子中包含更多资源

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

x

出0入0汤圆

发表于 2016-12-18 20:27:45 | 显示全部楼层
这各教程做的好啊,学习了

出0入0汤圆

发表于 2016-12-18 21:59:13 | 显示全部楼层
教程含金量很高啊,值得学习,

出0入0汤圆

发表于 2016-12-19 09:21:03 | 显示全部楼层
学习,谢谢!!!

出0入0汤圆

发表于 2016-12-19 10:31:53 | 显示全部楼层
教程不错,学习了

出0入0汤圆

 楼主| 发表于 2016-12-19 12:21:12 | 显示全部楼层
最新的协议说明文档已经上传到github

出0入0汤圆

发表于 2016-12-19 13:06:05 | 显示全部楼层
正要用,谢谢

出0入0汤圆

发表于 2016-12-29 12:32:51 | 显示全部楼层
支持透传不? 我现在485, 主机+3从机,主机转发,从机根据地址进行烧录?

出0入0汤圆

发表于 2016-12-29 14:33:52 | 显示全部楼层
改天试一试。。。。。。。。。。。。。

出0入0汤圆

发表于 2016-12-29 22:43:51 | 显示全部楼层
好东西,谢谢

出0入8汤圆

发表于 2016-12-29 23:11:34 来自手机 | 显示全部楼层
收藏了先!

出0入0汤圆

发表于 2016-12-30 07:56:17 | 显示全部楼层
有用到,多谢楼主分享。

出0入0汤圆

 楼主| 发表于 2016-12-30 10:36:25 | 显示全部楼层
dhw5qq 发表于 2016-12-29 12:32
支持透传不? 我现在485, 主机+3从机,主机转发,从机根据地址进行烧录? ...

不太明白你说的透传具体是怎么个传输...

出0入0汤圆

发表于 2016-12-30 11:00:56 | 显示全部楼层
就是一个主机+3个从机  485通讯,现在上位机与主机通讯,然后上位机可以通过主机对从机进行烧录!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-19 08:50

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

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