<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      EVT例程中提供了兩種OTA方式,在EVT的BLE目錄最下面有一個OTA的PDF說明:WCH藍牙空中升級(BLE OTA)

      本文主要講的是方式二不帶庫升級,整個codeflash分成四個區域,Jump IAP,APP,IAP,LIB,一共需要燒錄四個hex才可運行。

      Jump IAP為4K,作用是用來跳入到IAP中,此工程main中并無函數,會直接跳轉到IAP,IAP的起始地址修改后,此工程啟動文件中的地址也需對應修改為IAP的起始地址,

      APP為44K,設置這個大小的原因是為了使一些192Kflash的芯片也能直接使用OTA,此APP部分是可以不帶有藍牙功能的,因為是跳轉到IAP進行藍牙升級的,

      IAP為16K,它的作用就是將手機app發送的升級固件直接寫到APP區域,

      LIB為573的是128K,CH585/592/582的是192K。

      使用此方式OTA需要先用BLE調試助手等藍牙工具先連接通過CHAR3發送一個字節數據,跳轉到IAP中,名字更新為OTA_OTA_OTAOTA才可以使用OTA軟件連接升級。

      那么就有一個問題,對于448Kflash的芯片,APP的44K空間不夠用了該如何擴大APP區域呢?

      先講下整體思路,因為要擴大APP,IAP和LIB就都要往后移動,APP和IAP的LD文件需重新分配起始地址和大小,Jump IAP需要跳轉到IAP移動后的起始地址,以為使用固定庫所以APP和IAP需要添加全局宏,因為庫的后移,APP和IAP的啟動文件和全局宏的地址需從默認的0x10000修改后LIB新的起始地址為0x40000,APP需增加跳轉IAP的jump代碼和用于app判斷有限性的定義,最終要使用romx.h這個靠后放置的庫。

      一.修改Jump IAP工程:

      1.修改啟動文件跳轉地址

      Jump IAP的修改十分簡單,因為它的功能就只是跳轉到IAP,APP要擴大,向后移動后起始地址產生了變化,只要如下圖修改跳轉地址即可:

      CH585/592/582的IAP起始地址為4+236=240k,填入0x0003C000 CH573的IAP起始地址為4+300=304k,填入0x0004C000,下方截圖修改的CH585/592/582,注意573有所不同,

      二.修改APP工程:

      APP需要修改五個地方,一是工程預處理,二是Link.ld,三是啟動文件startup_CH583.S,四是自己寫的APP還需額外添加Jump_OTA代碼,五是自己寫的APP添加標志供OTA工具識別。

      1.工程預處理:

      CH585/582添加CH58xBLE_ROM=1,CH592添加CH59xBLE_ROM=1,CH573添加CH57xBLE_ROM=1,如果使用的OnlyUpdateApp_Peripheral例程,那么就無需再添加,因為例程已經添加了,截圖修改的CH585/582,注意592和573有所不同,

      CH585/592/582添加LIB_FLASH_BASE_ADDRESSS=0x00040000 

      CH573添加LIB_FLASH_BASE_ADDRESSS=0x00050000,

      2.Link.ld修改:

      如果是OnlyUpdateApp_Peripheral例程,那么就只需要修改一處,將原本給的44k按4k為單位擴大,建議直接給到最大,CH585/592/582為236k,573為300k,截圖修改的CH585/592/582,注意573有所不同,

      如果是自己的任意APP代碼,那么將OTA例程的APP的Link.ld文件復制粘貼過來修改上面那一處即可,注意是復制粘貼后再修改而不是直接修改!

      3.startup_CH583.S修改:

      如果是OnlyUpdateApp_Peripheral例程,那么也只需要修改一處,

      CH585/592/582將j 0x10000修改為j 0x40000,

      573將將j 0x10000修改為j 0x50000,截圖修改的CH585/592/582,注意573有所不同,

      如果是自己的任意APP代碼,那么將OTA例程的APP的startup_CH583.S文件復制粘貼過來修改上面那一處即可。

      4.添加添加Jump_OTA代碼(使用OnlyUpdateApp_Peripheral例程可跳過)

      可以按照自己的邏輯調用Jump_OTA跳入到IAP中開始升級,可以如下圖,放在peripheral.c中,然后在藍牙接收到數據后調用,當然,串口收到信息或按鍵觸發調用也都是可以的。

      /* OTA 升級標志 */
      #define IMAGE_OTA_FLAG 0x03

      /* 存放在DataFlash地址,不能占用藍牙的位置 */
      #define OTA_DATAFLASH_ADD 0x00077000 - FLASH_ROM_MAX_SIZE

      /* flash的數據臨時存儲 */
      __attribute__((aligned(8))) uint8_t block_buf[16];

      /*********************************************************************
      * @fn Jump_OTA
      *
      * @brief 跳轉OTA升級
      *
      * @return none
      */
      void Jump_OTA(void)
      {
      uint16_t i;
      uint32_t ver_flag;

      /* 讀取第一塊 */
      EEPROM_READ(OTA_DATAFLASH_ADD, (uint32_t *)&block_buf[0], 4);

      /* 擦除第一塊 */
      EEPROM_ERASE(OTA_DATAFLASH_ADD, EEPROM_PAGE_SIZE);

      /* 更新Image信息 */
      block_buf[0] = IMAGE_OTA_FLAG;

      /* 編程DataFlash */
      EEPROM_WRITE(OTA_DATAFLASH_ADD, (uint32_t *)&block_buf[0], 4);

      /* 軟復位 */
      SYS_ResetExecute();
      }

      5.添加用于app判斷文件有效性標志(使用OnlyUpdateApp_Peripheral例程可跳過)

      在peripheral_main.c中添加下圖內容,否則升級時,app會認為你放入的hex是非法的導致無法正常升級。如果使用OnlyUpdateApp_Peripheral例程,就無需添加,例程中已有這部分內容。

       三.IAP程序修改

      IAP需要修改四處,一是工程預處理,二是Link.ld,三是啟動文件startup_CH583.S,最后一個是ota.h文件,

      1.工程預處理:

      CH585/592/582添加LIB_FLASH_BASE_ADDRESSS=0x00040000

      573添加LIB_FLASH_BASE_ADDRESSS=0x00050000,截圖修改的CH585/592/582,注意573有所不同,

      2.IAP程序Link.ld文件修改起始地址

      CH585/592/582起始地址為4+236=240k,填入0x0003C000

      573起始地址為4+300=304k,填入0x0004C000,截圖修改的582,注意573有所不同,

      例程默認FLASH (rx) : ORIGIN = 0x0000C000, LENGTH = 16K,修改為FLASH (rx) : ORIGIN = 0x0003C000, LENGTH = 16K

      0x0003C000  !!!(前面多了一個3)

      3.IAP程序ota.h文件修改

      將APP大小修改為重新配置后的大小,截圖修改的CH585/592/582,注意573有所不同,應修改為300 * 1024

      4.IAP程序startup_CH583.S文件修改

      CH585/592/582將將j 0x10000修改為j 0x40000,573將將j 0x10000修改為j 0x50000,截圖修改的CH585/592/582,注意573有所不同,

      四.合并hex

      LIB則是合并的時候選擇帶x后綴的hex文件,這個LIB是靠著flash最后的位置放的,可以讓APP增大至最大。

      將四個HEX合成一個之后使用isp工具燒錄或者用最新的isp工具直接選擇4個hex燒錄。

      HEX合成工具鏈接:WCH_AssemblingFileTool.ZIP - 南京沁恒微電子股份有限公司

      OTA工具鏈接:BLE_OTA_Android.ZIP - 南京沁恒微電子股份有限公司 (wch.cn)

      posted on 2022-12-16 11:28  WCH藍牙應用分享  閱讀(5816)  評論(0)    收藏  舉報

      主站蜘蛛池模板: 亚洲人成在线观看网站不卡| 蜜桃无码一区二区三区| 日本亚洲一区二区精品久久| 国产精品自拍实拍在线看| 老司机亚洲精品一区二区| 超碰人人超碰人人| 办公室强奷漂亮少妇视频| 亚洲精品久久久久午夜福禁果tⅴ| 国产久免费热视频在线观看 | 国产成人永久免费av在线| 国产精一品亚洲二区在线播放| 成人免费乱码大片a毛片| 国产精品无遮挡猛进猛出| 久久久久无码中| 天堂va欧美ⅴa亚洲va在线| 齐齐哈尔市| 国产四虎永久免费观看| 国产精品综合色区av| 欧美视频在线播放观看免费福利资源 | 国产精品久久人妻无码网站一区| 国产国拍精品av在线观看| 国产在线观看91精品亚瑟| 精品无码久久久久国产| 国内揄拍国内精品少妇| 亚洲成人动漫av在线| 加勒比中文字幕无码一区| 久久99久国产精品66| 美女人妻激情乱人伦| 国产亚洲av人片在线播放| 欧美成人精品三级在线观看| 狠狠躁日日躁夜夜躁欧美老妇 | 韩国免费a级毛片久久| 亚洲中文字幕无码av永久| 中文毛片无遮挡高潮免费| 中文字幕有码高清日韩| 97人人模人人爽人人喊网| 性色av一区二区三区精品| 免费AV片在线观看网址| www夜插内射视频网站| 久久亚洲精品中文字幕无| 欧美自拍另类欧美综合图片区|