美文网首页
anroid ymodem 实现单片机固件升级

anroid ymodem 实现单片机固件升级

作者: h4de5 | 来源:发表于2017-07-12 12:01 被阅读331次

Android端对单片机升级其实Android端只需要实现文件传输并在界面上显示传输进度。
Android 端和单片机通信是串口进行通信的,通信数据协议基于Ymodem
由于Ymodem协议本身就是采用C语言实现,对于单片机端实现并不是很困难,Android 端也可以采用将C代码编译成so调用。
对于一个擅长java语言的人,调试C代码简直痛苦不堪。
经过github搜索一番,找到一个java语言实现的版本。
阅读了这个java版本的代码发现与需求还是有一定的差距,遂对这个项目改造一番终于顺利移植到项目中。

这个项目不能直接引用有如下问题:

1.Android 端不适合采用nio的方式读写文件,替换方案:线程+File
2.该项目采用的是io流的方式,需要用我们自己的串口通信方式替换(收发均为字节码)
3.去除接收单片机发送文件相关的方法
4.Ymodem协议是收数据方主动发起交互指令,而需求是用户在Android端点击一个按钮开始升级固件,我们只需要单片机和Android端增加一条自定义指令就可以实现。
5.界面上需要显示文件传输的进度,我们采用EventBus将各个过程和进度等信息post到Activity上做UI显示。

以下记录改造过程:

1.创建工程后将ru.sir.ymodem中的代码全部拷贝到项目中
2.由于我们只需要用到YModem协议部分,所以删除多余的无用类
CRC.java 保留
CRC16.java 保留
CRC8.java 保留
Modem.java 需要修改
TimeoutException.java 保留
Timer.java 保留
XModem.java 删除
XModem1K.java 删除
YModem.java 需要修改
3.打开Ymode和Modem类,将里面Path类替换成File,将Path相应的方法替换成File中同类型的方法。
4.将Ymode和Mode的构造方法中的IO流替换成我们自己的串口通信类,以便在Modem中通信发送和接受来自单片机的指令。
5.在MainActivity的按钮中开启一个线程,执行两个过程,1.发送开始升级指令给单片机 2.new YModem(mUartManager).send("/sdcard/firmware.bin");
MainActivity.jpg

github: https://github.com/h4de5ing/MCUUpdate
如果项目对你有帮助请点赞鼓励,谢谢。
有问题请反馈 https://github.com/h4de5ing/MCUUpdate/issues
参考:
https://github.com/aesirot/ymodem
https://baike.baidu.com/item/Ymodem/10430652
http://blog.csdn.net/lijing198997/article/details/29839505

相关文章

  • anroid ymodem 实现单片机固件升级

    Android端对单片机升级其实Android端只需要实现文件传输并在界面上显示传输进度。Android 端和单片...

  • iOS蓝牙空中(固件)升级实现

    最近项目中有用到固件升级功能,即使用手机去升级硬件设备的固件。项目中硬件端使用的单片机程序是一个 xxx.bin ...

  • 【安卓相关】蓝牙基于Ymodem协议发送bin文件,对硬件设备进

    最近做的一个安卓项目是使用蓝牙基于Ymodem协议传输bin文件,实现对硬件设备进行升级。 做的过程中遇到了不少困...

  • iOS蓝牙固件升级解决方案

    何为固件升级? 固件为什么需要升级? 大家也许有做过硬件(蓝牙)固件升级的开发,举个栗子:用手机设备中心通过蓝牙硬...

  • one-OTA含义

    OTA含义 FOTA含义:Firmware-over-the-air,意思是固件(ECU)在线升级,针对固件升级包...

  • iOS 蓝牙固件升级

    升级介绍 蓝牙固件升级是使用手机给固件进行版本升级,以达到修复bug或者添加新功能的作用。升级的大概流程是:首先,...

  • 蓝牙固件升级

    升级介绍 蓝牙固件升级是使用手机给固件进行更新,以达到修复bug,完善功能的作用。升级的大概流程是:首先,当手环的...

  • 老毛子Padavan 设备固件一建升级

    Padavan 设备固件一建升级 登陆 输入升级命令 升级中,请勿断电

  • 蓝牙设备空中升级(OTA)

    蓝牙固件空中升级(OTA)涉及到蓝牙无线通信、固件外存分布、固件内存分布(定制链接脚本)、固件二次引导等技术,需要...

  • 2018-11-25 HANA服务器raid固件升级

    上传固件包linux.zip,并解压,安装rpm 查看当前固件版本 执行固件升级 重启服务器4.1 确认HANA数...

网友评论

      本文标题:anroid ymodem 实现单片机固件升级

      本文链接:https://www.haomeiwen.com/subject/gpcbhxtx.html