91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

IAP編程page0返回失敗的問題總結(jié)

恩智浦MCU加油站 ? 來源:恩智浦MCU加油站 ? 作者:恩智浦MCU加油站 ? 2021-10-20 10:59 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

最近在支持客戶的時(shí)候遇到這樣一個(gè)問題:客戶在做自己的二級(jí)boot loader,并且在使用LPC54608 IAP功能,編程sector0中的page0時(shí)候總是失敗(返回0x21錯(cuò)誤碼),但是編程任何其他page的時(shí)候,都沒有問題(客戶的代碼在最后一個(gè)sector里,不編程)。

問題乍一看比較詭異,因?yàn)橹挥衟age0會(huì)出問題,對(duì)其他page的操作都是沒有問題的,并且擦除page/sector也沒有問題,只有編程操作會(huì)出錯(cuò)。

經(jīng)過了一段短暫的討論,最后把問題鎖定在了LPC中斷向量表的check sum校驗(yàn)機(jī)制上:LPC(除比較新的LPC5500系列外)基本都需要在中斷向量表的第8個(gè)位置上填入前7個(gè)中斷向量的校驗(yàn)和,關(guān)于校驗(yàn)和的具體內(nèi)容可以參考開篇提到的文章。

Keil編譯出來的.bin文件中,默認(rèn)并沒有自動(dòng)添加這個(gè)校驗(yàn)和,所以每當(dāng)調(diào)用IAP變成page0的時(shí)候,IAP程序內(nèi)部都會(huì)檢查這個(gè)校驗(yàn)和,一旦校驗(yàn)和錯(cuò)誤(比如全0) 就會(huì)返回失敗。

解決方法也很簡(jiǎn)單,就是在每次編程page0的時(shí)候都計(jì)算下校驗(yàn)和即可,這里直接給出計(jì)算校驗(yàn)和的代碼:

213df384-30e7-11ec-82a8-dac502259ad0.png

adr為編程地址,當(dāng)adr為0時(shí)既編程page0區(qū)域,紅框內(nèi)的代碼就是計(jì)算校驗(yàn)和,并且把校驗(yàn)和填到中斷向量表的第8個(gè)位置上。

加上這段計(jì)算校驗(yàn)和代碼后,問題迎刃而解。這個(gè)問題普遍存在于除LPC5500系列外幾乎所有老的LPC型號(hào)上,希望本文章對(duì)大家開發(fā)LPC MCU有所幫助!

編輯:jq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • LPC
    LPC
    +關(guān)注

    關(guān)注

    8

    文章

    137

    瀏覽量

    79270
  • IAP
    IAP
    +關(guān)注

    關(guān)注

    2

    文章

    169

    瀏覽量

    26069
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4968

    瀏覽量

    74012
  • 編譯
    +關(guān)注

    關(guān)注

    0

    文章

    694

    瀏覽量

    35184
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    基于納芯微實(shí)時(shí)控制MCU NS800RT5039的IAP固件升級(jí)指南(2)

    。本篇將聚焦實(shí)操落地,以 MDK 開發(fā)環(huán)境為依托,展示如何基于 NS800RT5039, 從 0 開發(fā)一個(gè)簡(jiǎn)單的 IAP 項(xiàng)目。
    的頭像 發(fā)表于 02-06 09:18 ?9081次閱讀
    基于納芯微實(shí)時(shí)控制MCU NS800RT5039的<b class='flag-5'>IAP</b>固件升級(jí)指南(2)

    在CW32F030的IAP應(yīng)用介紹

    IAP 是 In Application Programing 的首字母縮寫,在應(yīng)用編程,即在程序運(yùn)行的過程中進(jìn)行編程(升級(jí)程序, 更新固件)。 IAP 是用戶自己的程序在運(yùn)行過程中對(duì)
    發(fā)表于 01-22 07:20

    如何用好 C 語(yǔ)言函數(shù)的返回值?

    的重點(diǎn),本文更關(guān)心的是,該以何值表示“成功”,何值表示“失敗”。 按照C語(yǔ)言語(yǔ)法, 0 表示假,非零(常常用 1)表示真,那是否函數(shù)也用 0 返回值表示“
    發(fā)表于 12-25 07:17

    CAN被動(dòng)錯(cuò)誤恢復(fù)后為什么rt_device_write還會(huì)返回異常呢?

    1、系統(tǒng)啟動(dòng),給CAN總線發(fā)送數(shù)據(jù),總線設(shè)備通訊正常 2、制造總線錯(cuò)誤,當(dāng)總線設(shè)備錯(cuò)誤幀達(dá)到128之后,總線進(jìn)入被動(dòng)錯(cuò)誤,總線數(shù)據(jù)發(fā)送失敗,rt_device_write函數(shù)返回0 3、恢復(fù)總線設(shè)備,CAN總線錯(cuò)誤幀降低到
    發(fā)表于 12-22 16:29

    AS32A601型MCU芯片如何進(jìn)行IAP升級(jí)?

    一、什么是IAP? IAP(In Application Programming,在應(yīng)用編程)是一種技術(shù),旨在實(shí)現(xiàn)用戶應(yīng)用程序的動(dòng)態(tài)更新,而無需使用專門的編程工具或硬件。
    的頭像 發(fā)表于 12-19 11:39 ?2029次閱讀
    AS32A601型MCU芯片如何進(jìn)行<b class='flag-5'>IAP</b>升級(jí)?

    檢查函數(shù)返回值的錯(cuò)誤和異常處理方法

    檢查函數(shù)返回值:這是最常見也最基本的錯(cuò)誤處理和異常處理方法,就是在調(diào)用一個(gè)函數(shù)后,檢查其返回值是否符合預(yù)期或是否表示出錯(cuò)或失敗。如果出錯(cuò)或失敗,則根據(jù)
    發(fā)表于 12-11 06:48

    如何在CW32F030上實(shí)現(xiàn)IAP功能實(shí)現(xiàn)遠(yuǎn)程升級(jí)?

    IAP 是 In Application Programing 的首字母縮寫,在應(yīng)用編程,即在程序運(yùn)行的過程中進(jìn)行編程(升級(jí)程序,更新固件)。IAP 是用戶自己的程序在運(yùn)行過程中對(duì) F
    發(fā)表于 12-11 06:15

    ?LMK61E0M可編程振蕩器技術(shù)文檔總結(jié)

    LMK61E0 系列超低抖動(dòng) PLLatinum^TM的^可編程振蕩器使用帶有集成VCO的小數(shù)N頻率合成器來生成常用的參考時(shí)鐘。該LMK61E0M支持3.3V LVCMOS輸出。該器件具有從片內(nèi)
    的頭像 發(fā)表于 09-13 09:46 ?1293次閱讀
    ?LMK61E<b class='flag-5'>0</b>M可<b class='flag-5'>編程</b>振蕩器技術(shù)文檔<b class='flag-5'>總結(jié)</b>

    AT32 MCU如何使用IAP

    AT32 MCU使用IAP的方法涉及在微控制器上創(chuàng)建特定固件,以實(shí)現(xiàn)在應(yīng)用編程(In-Application Programming,簡(jiǎn)稱IAP)功能,主要通過USART通信接口進(jìn)行固件更新操作
    發(fā)表于 08-08 17:13

    AT32 IAP using the USART

    對(duì)于AT32 MCU,除了出廠固化的bootloader,用戶也可以在應(yīng)用程序中編寫自己的bootloader程序,用于最終產(chǎn)品的固件更新。此功能稱為應(yīng)用程序內(nèi)編程IAP)。 本應(yīng)用筆記的目的
    發(fā)表于 07-11 10:51

    rtt only系統(tǒng)下程序運(yùn)行失敗: [FATAL ERROR] Exception 13:Load Page Fault,怎么解決?

    Executable-only Pagesatp = 0x80000000000047d2Current Page Table(Physical) = 0x00000000047d2000Current ASID
    發(fā)表于 06-20 07:30

    請(qǐng)問CY68013上位機(jī)發(fā)送的返回值到底代表什么意思?

    ,為0時(shí)代表發(fā)送失敗,剛開始一直沒問題,F(xiàn)PGA端接收也正常,上位機(jī)返回值也是1, 最后返回值一直是0,所以我一直認(rèn)為發(fā)送
    發(fā)表于 05-22 07:16

    FX3 RAM編程因定制板而失敗怎么解決?

    USBBulkSourceSink.img 寫入 RAM 時(shí),控制中心顯示編程失敗。 ?我已確認(rèn)該圖像在評(píng)估板上成功。 ?我已將 PMODE[2:0] 設(shè)置為 z11。 ?我確認(rèn)時(shí)鐘是26MHz。 ?確認(rèn)電源正常。 請(qǐng)查看以下
    發(fā)表于 05-15 08:22

    I2C EEPROM編程失敗的原因?

    我嘗試使用 Cy Control Center 實(shí)用程序?qū)⒐碳螺d到我的 EVM 中, 第一天,我嘗試了很多次,但都失敗了,比如下面的錯(cuò)誤, I2C EEPROM 編程失敗。 我搜索了英飛凌社區(qū)
    發(fā)表于 05-06 07:25

    使用mbedtls進(jìn)行ECDSA簽名驗(yàn)證失敗的原因?

    ); if(ret != 0) { PRINTF(“公鑰驗(yàn)證失敗rn”); 轉(zhuǎn)到 cleanup_mpi; } mbedtls_mpi r, s; mbedtls_mpi_init(&r
    發(fā)表于 04-14 06:57