• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

sim800c远程升级项目

PG_CPZ 2018-09-30 浏览量:754
无线下载项目用的是stm32战舰板子,
由于战舰板子的ram只够建立5万字节的数组,但实际要存放到数组里的代码数据要大于5万,
导致小代码可以成功远程升级,
而大代码数组存不下而无法升级,

所以我想采用一遍通过sim800c接收数据,
一遍往flash里面写代码的方法解决ram数组太小的问题,
但是现在没有边收边写代码的思路,

所以请前辈们帮忙提供些边下边写的编程思路,
或者其他思路,
非常感谢!
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 有,用一个循环缓冲的方式,就是每次你从SIM800接收到数据,就放进循环缓冲区里面,然后用另一个进程不断从缓冲区取出数据写进flash里面

    只要写flash的速度高于串口接收SIM800数据的速度就可以了

    • 发布于 2018-09-30
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:8
  • 那么要自己写一个boot程序,通过这外模块接收到数据后,再写到flash中
    • 发布于2018-09-30
    • 举报
    • 评论 0
    • 0
    • 0

  • 这种要自己写一个对应的BootLoader,把你的升级部分程序设置成两个,IAP要把缓冲区加大用于接收你的串口程序
    • 发布于2018-10-12
    • 举报
    • 评论 0
    • 0
    • 0

  • 完全可以实现,在RAM中开辟一定大小的缓冲区,比如1K,接收和发送端需要以固定长度(比如32字节)为单位进行校验,保证一个单位的代码是正确的,接收到后进行校验正确后写入缓冲区,缓冲区达到1K时一次性写入Flash即可。
    • 发布于2018-10-26
    • 举报
    • 评论 0
    • 0
    • 0

  • 你可以设计一个无线的IAP.根据IAP的地址来进行升级和转接代码烧录
    • 发布于2018-10-27
    • 举报
    • 评论 0
    • 0
    • 0

  • 这种情况下只能将要发送的数组分两次发,存在缓冲区里面了,但是不建议这样做,速度会大打折扣,你可以考虑用flash和ram大小更大的单片机型号来实现。

    • 发布于2018-10-27
    • 举报
    • 评论 0
    • 0
    • 0

  • 可以实现的,把你的缓冲区加大,这样可以把接收到数据全部存放,再复制读取
    • 发布于2018-10-29
    • 举报
    • 评论 0
    • 0
    • 0

  • 这种建议用多次发送的情况来,这样可以保证数据的正确性
    • 发布于2018-11-12
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

sim800c远程升级项目