当前位置: 首页 > news >正文

杭州响应式建站价格河南郑州网站推广优化

杭州响应式建站价格,河南郑州网站推广优化,有没有免费的seo网站,物流网站建设摘要关注“电子芯吧客” ,每周都有精彩文章推荐在很多场景应用中需要我们的控制器能够实现远程升级,比如我之前做的一个项目中,项目的主要需求就是老师的电脑能够获取学生的实验设备的实验数据。第一批测试完成之后,所有的学生设备的主…

关注“电子芯吧客” 每周都有精彩文章推荐

    在很多场景应用中需要我们的控制器能够实现远程升级,比如我之前做的一个项目中,项目的主要需求就是老师的电脑能够获取学生的实验设备的实验数据。第一批测试完成之后,所有的学生设备的主控板子都上线了。运行了大概一个月,买家那边发现有些功能需要更新。没办法只能把这批100多块主控板从学生设备的机箱里面拆出来,然后一块一块烧写好程序之后,再装回去。这个时候就很后悔当初没有把IAP远程升级的功能加到这里面去。加了这个功能一方面好和买家谈价钱,另一方面方便自己。

    IAP的大概意思就是在自己目前运行的程序中,对用户的另外部分内存进行烧写,烧写完成之后,再跳转到烧写好的那一部分程序(也就是升级之后的程序)当中。所以这里面大概需要了解的是

1、STM32的ROM起始地址以及ROM大小;

2、STM32对flash的读写;

3、程序中断的指针偏移等。

    要实现IAP远程升级,程序包含两部分

1、IAP跳转程序;

2、APP运行程序。

大致思路为:程序开始从IAP进入,IAP中判断是否有收到升级包,如果没有升级包跳转到APP程序。有则烧写新的升级包。跳转至APP程序后,APP程序完成我们项目需求的功能,并加上一个跳转回IAP的指令。

    上位机程序中,将固件分包为2K一包,包头加上0X5A的固定头,以及长度字符(以0xA5为结尾标志),0xaa为包尾。IAP程序从0x08000000-0x08010000,APP从0x0801000开始。

    下面为IAP的主函数,IAP程序从0x08000000开始,主要设置了串口1、按键、LED灯,以及延迟函数。程序采用串口1接收升级的固件包。当接收到数据时,先判断包头和包尾是否正确。再将分包放入待烧写的数组中,烧写后,烧写的位置 Flash_App_Pos 也相应的增加刚才接收的升级包的长度(去除了包头包尾)。待接收到0xA5的包时,表示接收到最后的一包升级分包。接收完成后,烧写成功后,即可开启跳转。因篇幅问题,将程序中的1分钟未接收到升级包便跳转至APP程序略去。程序如下:

函数主要有设置偏移的语句  SCB->VTOR = FLASH_BASE; //@@* Vector Table Relocation in Internal FLASH. */FLASH_BASE=0X08000000;

int main(void)
 {    
    u8 t,half_s;
    u8 times=0;
    u16 oldcount=0;                        //老的串口接收数据值
    u16 applenth=0;                        //接收到的app代码长度
    u16 buf=0;
    u8 CodeSize; 
    u16 i; 
    SCB->VTOR = FLASH_BASE; /@@* Vector Table Relocation in Internal FLASH. */     
    delay_init();
    uart_init(115200);
    LED_Init();
    KEY_Init();
    STMFLASH_Read(CONFIG_PARAM_ADDR, &buf, 1);
    if(buf!=0xAA)
    {    
      if(((*(vu32*)0x8000000)&0x2FFE0000)==0x20000000)    //检查栈顶地址是否合法.
        {
        delay_init();
        uart_init(115200);
        LED_Init();
        KEY_Init();
       }
    }
   __enable_irq();          
  while(1)
    {        
    if(USART_RX_CNT)
    {
        if(oldcount==USART_RX_CNT)//新周期内,没有收到任何数据,认为本次数据接收完成.
        {
            applenth=USART_RX_CNT;
            if(USART_RX_BUF[0]==0x5a&&USART_RX_BUF[applenth-1]==0xaa)
            {
                LED0=0;    
                for(i=0;i                {
                    Upstring[i]=USART_RX_BUF[i+2];
                }    
                LED0=1;
 iap_write_appbin(Flash_App_Pos,Upstring,applenth-3);//更新FLASH代码                    
                Flash_App_Pos+=(applenth-3);                
                backdata[1]=USART_RX_BUF[1];
                Usart1_SendStr_length(backdata,3);
                 if(USART_RX_BUF[1]==0xa5)
                {
                    iap_load_app(FLASH_APP1_ADDR);//执行FLASH APP代码FLASH_APP1_ADDR=0X08010000
                }                    
            }                
            oldcount=0;
            USART_RX_CNT=0;                            
        }else oldcount=USART_RX_CNT;            
    }
    t++;
    delay_ms(100);
 }
}

IAP程序点开魔法棒设置size为0x10000.

b4f20cea22954ddb6bbdd2f2e0755f6f.png

APP程序主要采用了FreeRTOS操作系统,创建了LED翻转的任务,串口1接收到数据之后之后处理的任务,以及看门狗喂狗任务。同样在程序开始时,需要设置偏移。
NVIC_SetVectorTable(FLASH_APP1_ADDR,0);
串口接收到0XAA,0XBB,0XCC,0XDD,0XEE。的跳转回IAP的指令之后,便写入config之后,开始跳转。跳转前,关闭所有中断,并清除标志位。
程序如下:

http://www.lbrq.cn/news/2801323.html

相关文章:

  • 无锡网站建设兼职宁波seo优化外包公司
  • 网站建设项目内容品牌网站建设公司
  • 建设摩托车官方网沈阳企业网站seo公司
  • 石家庄做标书的网站seo网站推广案例
  • 做购物网站的数据库深圳网站优化
  • 移动的网络网站建设江门seo推广公司
  • 北京城乡和住房建设部网站手机网站建设价格
  • 做草莓的网站公司网站搭建
  • 怎么做ppt教程网站品牌整合营销
  • 网站用香港的空间速度怎么样最好的bt种子搜索引擎
  • 做电影售票网站的难点发帖推广百度首页
  • 长沙专业网站建设公司淘宝搜索指数
  • 网站工具查询推荐6个免费国外自媒体平台
  • 学校网站群建设思路百度知道合伙人
  • 做查询快递单号的网站多少钱公司网络推广营销
  • 河北手机网站建设百度扫一扫识别图片在线
  • 昆明企业建网站多少钱网站优化设计的基础是网站基本要素及每个细节的优化
  • 怎样做企业网站建设培训网站官网
  • 节点网站谷歌三件套一键安装
  • 网站建设如何做报价吸引人的营销标题
  • 网站规划的意义免费网站大全
  • 怎样制作一个个人网站长沙关键词优化服务
  • 自助搭建网站搜索seo
  • 网站开发前期准备工作网店营销策划方案范文
  • 如何免费建设自己稳定的网站世界杯比分查询
  • 如何做网站效果更好关键词快速排名seo怎么优化
  • 武汉网站营销优化源码凡科建站的免费使用
  • ckplayer怎么上传做网站爱站小工具计算器
  • 税务局网站建设情况汇报百度seo关键词优化工具
  • 南宁企业宣传片制作海淀区seo搜索优化
  • c# 和 c++ 怎样结合
  • 大数据毕业设计选题推荐-基于大数据的鲍鱼多重生理特征数据可视化分析系统-Spark-Hadoop-Bigdata
  • open3d-点云函数:变换:旋转,缩放、平移,齐次变换(R,T)等
  • 【数据结构】直接选择排序
  • 实验8.20
  • 从一个ctf题中学到的多种php disable_functions bypass 姿势