串口IAP升级及TCP传输控制协议相关原理流程

        基于串口通信的IAP升级方式是通过串口传输的方式将bin文件传输到串口接收区,然后将接收到的数据写到内置SRAM提前在指定地址开辟的数据空间中用作暂存bin文件,在此过程中,首先对串口的参数进行设置,如波特率、校验位、数据位等,同时打开中断,然后在循环中对串口进行不断的检测,检测串口是否接收到数据,接收到数据以后,其会触发中断,进入串口中断子函数中,在子函数中完成对接受据的读取,以及对接收到数据长度的累计,以供后续处理。重新进入循环,由于串口的传输速率通常要比while循环快得多,尤其是在高波特率下,设置中断可以在数据到达时立即响应,对其进行处理,当bin文件传输完成以后,一个完整的应用程序就会以二进制的方式存储在SRAM的特定区域中,然后根据flash的容量大小以页为单位一页一页写进内置flash的指定区域,通过基地址+偏移地址的方式跳转到应用程序复位中断的位置,通过复位中断的地址重定向到应用程序的入口运行应用程序的主函数。

        在IAP升级的情况下,bootloader通常存放在flash的不同区域,各自都有各自的中断向量表,分开存储使得bootloader可以负责程序的升级和引导过程,而应用程序可以独立运行。当bootloader程序完成升级以后,会跳转到应用程序的入口,届时系统的控制权都完全交给了应用程序。应用程序在其自己的flash地址空间中运行,当应用程序的中断触发以后,程序会跳转到应用程序的中断向量表,然后重定向到应用程序的中断处理函数,而不是bootloader程序的中断向量表,确保应用程序的可以独立处理中断而不受bootloader程序的影响。

        

        网口通信时,需要创建socket区域,tcp服务器端和客户端之间的通信都是依赖于各自的socket,与串口类似,在使用串口通信时,串口有两个数据缓存区域,分别是数据接收缓冲区(RX)和数据接收缓存区(TX),而tcp的socket相当于是一个接收缓存区和发送缓存区的集合体。当我们通过tcp协议发送数据式通常时将数据发送到对应socket的数据发送缓冲区,一个服务器或者客户端会有多个socket,通过本机IP和端口号来确定唯一的socket,当数据到socket的发送缓存区以后并不会马上发送,假如数据包比较小,会与下一个数据包粘包一起发送。或者当缓存区存放满了数据,缓存区的数据会被全部发送,亦或者在等待一段时间后,并没有新的数据包放入缓存区,那么即使缓存区域未满,也会被发送。

        Tcp是一个面向连接的可靠的数据传输控制协议,tcp传输的可靠性体现在它的传输确认和超时重传等方面。

        当服务器端与客户端建立连接以后,发送端通过socket的发送缓冲区向接收端的接收端发送数据以后,发送端的数据发送缓存区的数据并不会立马消失,而是要等收到接收端发来的应答信号才会擦除数据发送缓存区的数据,如果发送端没有收到确认接收的信号,发送端会把数据发送区的数据重新发送,直到接收端接收成功。

        超时重传机制是建立在丢包的背景之下,当发送端长时间没有接收到接收端传回的接受确认信号或者接收到的数据有误的时候,发送端会将发送缓冲区的数据再次向接收端发送。

        序号和顺序的控制,当数据传输时tcp会使用序号对数据包进行编号,通过序号来确保接收到数据包的排列顺序。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值