色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于J-Link解除APM32F003讀保護

Geehy極海半導體 ? 來源:Geehy極海半導體 ? 作者:Geehy極海半導體 ? 2022-09-20 14:49 ? 次閱讀

前言

最近拿到了一塊APM32F003F6 MINI開發板,發現其在同價位的芯片中有著豐富的資源和優秀的低功耗水平。準備拿來做一些小產品的開發。

1 APM32F003的讀保護設置

在開發過程中,發現其對代碼保護如同APM32F4一樣,可以設置讀保護。如其手冊描述,APM32F003支持寫保護和讀保護。

8f424492-37f4-11ed-ba43-dac502259ad0.png

通過手冊描述和使用相關的庫函數,我們可以將庫函數封裝,方便我們一個指令進行讀寫保護。

/*! * [url=home.php?mod=space&uid=247401]@brief[/url] Flash Read Out Protection Config. * * @param rdp : Set the chip read protection level * This parameter can be one of the following variables: * FMC_RDP_ENABLE : Enable read protection * FMC_RDP_DISABLE : Disable read protection * * @retval None * * @note */ void ReadOutProtectionConfig(FMC_RDP_T rdp) { FMC_Unlock(); FMC_ConfigReadOutProtection(rdp); FMC_Lock(); }

在我們的功能函數里面對ReadOutProtectionConfig()函數進行調用即可完成對芯片的讀寫保護。如:

以上代碼是實現了一個讀保護設置后,閃燈5下后解除讀保護。(值得注意的是:APM32F003手冊是說明“在配置完選項字節后,需要復位才能生效 ”)。

2 為什么需要使用J-Link解除APM32F003讀保護

由于我們的代碼出廠后不想讓有心之人看到我們的二進制內容,我們會對芯片進行讀保護,且不會留解除讀保護的“后門”,以防用戶誤操作將產品弄壞。所以我們迫切需要一個工具能夠在開發,維護階段,在沒有設置解除讀保護的“后門”的情況下對芯片進行解除讀保護操作。

而在開發階段,我們最常用的工具就是J-Link,如何使用J-Link解決該問題便是我們的需求。

3 J-Link解除讀保護的原理

書接上回“https://bbs.21ic.com/icview-3223010-1-1.html”我在J-Link的安裝目錄下面找到了相應J-Link的使用手冊。我們可以在手冊中看到,對使用J-Link Commander給芯片下載代碼的一個例子。

8f963228-37f4-11ed-ba43-dac502259ad0.png

(圖片來源:[J-Link Commander - SEGGER Wiki](https://wiki.segger.com/J-Link_Commander#Perform_flash_download))

在例子中我們可以看到-Link Commander使用了“w4”指令對STM32F103ZE的一些外設進行了寫值設置,以使得可以下載STM32F103ZE的外置Flash。

同理我們也可以依葫蘆畫瓢,理論上我們可以通過將我們對APM32F003芯片的解除寫保護的代碼。

4 APM32F003解除讀保護分析

下面我們看一下官方源碼中對于解除讀保護,我們操作了那些寄存器

- FMC_Unlock()函數內容

void FMC_Unlock(void)

{

FMC->KEY = FMC_KEY_1;

FMC->KEY = FMC_KEY_2;

}

對FMC 關鍵字(FMCwKey)寫入解鎖的鍵值以解鎖 FMC。

- FMC_EraseOptionByte()函數內容

FMC_STATE_T FMC_EraseOptionByte(void)

{

uint16_t rpKey;

FMC_STATE_T state;

rpKey = FMC->OBCS_B.READPROT ? 0 : FMC_RP_KEY;

state = FMC_WaitForReady(FMC_DELAY_ERASE);

if(state == FMC_STATE_COMPLETE)

{

FMC->OBKEY = FMC_KEY_1;

FMC->OBKEY = FMC_KEY_2;

FMC->CTRL2_B.OBE = BIT_SET;

FMC->CTRL2_B.STA = BIT_SET;

state = FMC_WaitForReady(FMC_DELAY_ERASE);

if(state == FMC_STATE_COMPLETE)

{

FMC->CTRL2_B.OBE = BIT_RESET;

FMC->CTRL2_B.OBP = BIT_SET;

OB->READPROT = rpKey;

state = FMC_WaitForReady(FMC_DELAY_PROGRAM);

if(state != FMC_STATE_TIMEOUT)

{

FMC->CTRL2_B.OBP = BIT_RESET;

}

}

else if(state != FMC_STATE_TIMEOUT)

{

FMC->CTRL2_B.OBE = BIT_RESET;

}

}

return state;

}

1. 對FMC的OBKEY寫入解鎖鍵值以解鎖對OB的操作。

2. 通過FMC的CTRL2寄存器,擦除選項字節。

3. 寫入讀保護等級至OB的READPROT寄存器,然后通過FMC的CTRL2寄存器進行編程

4. 等待編程完成。

- FMC_Lock函數內容

void FMC_Lock(void) { FMC->CTRL2_B.LOCK = BIT_SET; }

通過FMC的CTRL2寄存器的LOCK位寫1,鎖定FMC的CTRL2寄存器。

5 J-Link 解除 APM32F003讀保護實現

有了解除讀保護的C代碼,我們簡單的就可以將其“翻譯”成J-Link的指令。下面是各個部分指令情況及其解析。

1. 規定選擇的連接接口,連接的目標芯片類型及相應的連接速度(必須)。

si 1

device CORTEX-M0

speed 100

JTAGConfg -1,-1

2. 停止運行當前芯片的程序(一般而言初始連接上芯片時,程序均處于暫停暫停),保證芯片沒有在進行中的Flash操作(必須)。

h

r

h

3. 解鎖代碼的指令實現(必須)。

w4 0x40011004 0x45670123

w4 0x40011004 0xCDEF89AB

w4 0x40011008 0x45670123

w4 0x40011008 0xCDEF89AB

sleep 100

w4 0x40011010 0x00000220

w4 0x40011010 0x00000260

sleep 100

w4 0x40011010 0x00000200

w4 0x40011010 0x00000210

w4 0x00020400 0xFFFF00A5

sleep 100

w4 0x40011010 0x00000080

4. 讀取FMC的CTRL2寄存器內容,看看是否回到復位值(非必須)。

mem32 0x40011010 0x01

sleep 10

5. 復位芯片以使解除讀保護操作生效(必須)。

r

我們新建一個文本文件,將上述代碼保存至文件,然后將文件后綴名更改為“.jflash”(詳情請查閱附件),最后使用“JLink.exe”打開即可(硬件要連接好)。對已經上了讀保護的APM32F003芯片進行解除讀保護操作。

8fdf43be-37f4-11ed-ba43-dac502259ad0.png

6 注意事項

1. 芯片上讀保護后使用Keil的下載命令會有如下提示彈框。

901d6bbc-37f4-11ed-ba43-dac502259ad0.png

2. 使用本腳本文件,需保證硬件連接正常。

/*! * [url=home.php?mod=space&uid=247401]@brief[/url] Main program * * @param None * * @retval None * * @note */ int main(void) { uint32_t i = 0; LedInit(); /* Enable read protection */ ReadOutProtectionConfig(FMC_RDP_ENABLE); for (i = 0; i < 10; i++) ? ? { ? ? Delay(0x7ffff); ? ? Board_LedToggle(BOARD_LED2); ? ? Board_LedToggle(BOARD_LED3); ? ? } ? ? ? /* Disable read protection */ ? ? ReadOutProtectionConfig(FMC_RDP_DISABLE); ? ? ? while (1) ? ?{ ? ? ?} }

審核編輯:彭靜
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 芯片
    +關注

    關注

    455

    文章

    50714

    瀏覽量

    423139
  • 函數
    +關注

    關注

    3

    文章

    4327

    瀏覽量

    62571
  • 代碼
    +關注

    關注

    30

    文章

    4779

    瀏覽量

    68521

原文標題:APM32芯得 EP.09 | 使用J-Link解除APM32F003的讀保護

文章出處:【微信號:geehysemi,微信公眾號:Geehy極海半導體】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    極海半導體APM32系列工業級通用MCU又添新品,基于M0+內核F003系列新品發布

    工業級APM32F003系列MCU,驅動智能家電性能全面升級
    發表于 06-22 07:58 ?6751次閱讀

    關于在KEIL下使用j-link不到芯片的問題 精選資料分享

    關于在KEIL下使用j-link不到芯片的問題問題概述:硬件設備:正點原子號令者i.MX RT1052開發板j-link固件版本:V9.40實驗目的:是使用j-link v9給開發板
    發表于 07-23 07:26

    j-link 仿真燒錄驅動

    j-link 仿真燒錄驅動
    發表于 01-14 02:07 ?22次下載

    J-LinkJ-Trace用戶指南免費下載

    J-Link/J-Trace有不同的版本,每個版本都是為不同的目的/目標設備設計的。目前,J-Link/J-Trace有以下幾種型號:J-Link
    發表于 03-03 08:00 ?14次下載
    <b class='flag-5'>J-Link</b>和<b class='flag-5'>J</b>-Trace用戶指南免費下載

    J-Link script的組成

    腳本語言不需要編譯,它由解釋器動態解釋執行。J-Link Commander(路徑C:Program Files (x86)SEGGERJLinkJLink.exe)是一個解釋器,負責對J-Link script文件進行解釋。
    的頭像 發表于 03-09 10:57 ?2138次閱讀

    教你輕松J-Link不能連接目標MCU的問題

    J-Link是嵌入式軟件、硬件工程師最常用的工具之一,但是,在使用這個工具時,也會遇到各種各樣的問題。 今天來給大家講講最常見的一個問題:J-Link不能連接目標MCU。 J-Link的連接
    的頭像 發表于 06-30 11:18 ?5887次閱讀
    教你輕松<b class='flag-5'>J-Link</b>不能連接目標MCU的問題

    如何處理J-Link不能連接目標MCU的問題?

    J-Link是嵌入式軟件、硬件工程師最常用的工具之一,但是,在使用這個工具時,也會遇到各種各樣的問題。今天來給大家講講最常見的一個問題:J-Link不能連接目標MCU。J-Link的連接使...
    發表于 10-29 10:21 ?8次下載
    如何處理<b class='flag-5'>J-Link</b>不能連接目標MCU的問題?

    基于J-Link Remote Server軟件的遠程調試方法

    SEGGER提供了一個J-Link Remote Server軟件,可以使得在任何地方連接J-Link調試應用。J-Link Remote Server提供了圖形界面和命令行的版本,支持
    的頭像 發表于 06-14 08:56 ?2151次閱讀

    apm32f003替換STM32進行低成本系統開發

    STM32F003是基于Arm Cortex-M0內核的32位MCU,工作電壓為2.4-3.6V,主頻48MHz,內置16KB Flash、定時器、ADC、通信接口。由于STM32貨源緊張,國產替代方案持續火熱,APM32F003系列MCU就是最有利的競品。
    的頭像 發表于 07-07 10:38 ?3686次閱讀
    用<b class='flag-5'>apm32f003</b>替換STM32進行低成本系統開發

    J-Link添加Geehy芯片

    最近調試Geehy的APM32芯片想著替換STM32,發現在使用Keil+J-Link的調試過程中總是發現J-Link會在初次下載的時候提示
    的頭像 發表于 07-25 14:57 ?5246次閱讀

    J-Link script的組成與使用方法

    J-Link作為被廣泛使用的調試器,提供了多種配套的軟件工具。例如命令配置軟件J-Link Commander,GDB server,J-Flash等。其中,J-Link Comman
    的頭像 發表于 08-01 12:20 ?2534次閱讀

    J-Link中的JTAG接口的正確使用注意事項

    所有標記為NC的針腳均未連接在J-Link內部。這里可以應用任何信號;J-Link將忽略這種信號。引腳4、6、8、10、12、14、16、18、20是連接到J-Link中GND的GND引腳。它們還應連接到目標系統中的GND。
    的頭像 發表于 09-23 09:57 ?3259次閱讀
    <b class='flag-5'>J-Link</b>中的JTAG接口的正確使用注意事項

    APM32F003F6P6_調試問題_5V電源供電時J-Link無法識別與連接

    APM32F003F6P6_調試問題_5V電源供電時J-Link無法識別與連接
    發表于 11-09 21:04 ?1次下載
    <b class='flag-5'>APM32F003F</b>6P6_調試問題_5V電源供電時<b class='flag-5'>J-Link</b>無法識別與連接

    ST-Link也能當J-Link?使用??

    之前分享過一篇文章《CMSIS-DAP和J-Link、ST-Link是什么關系》,文中提到了 J-Link 和 ST-Link 的 DAP 協議一樣。
    的頭像 發表于 03-13 11:12 ?3156次閱讀
    ST-<b class='flag-5'>Link</b>也能當<b class='flag-5'>J-Link</b>?使用??

    極海APM32F003 MCU通過IEC 60730/60335功能安全認證

    近日,極海APM32F003系列工業級超值型MCU,已順利通過IEC 60730/60335功能安全認證,并可提供符合CLASS B標準的功能安全設計套件,有助于客戶減少認證時間與成本,快速推出穩定可靠的終端產品。
    的頭像 發表于 01-08 18:04 ?914次閱讀
    極海<b class='flag-5'>APM32F003</b> MCU通過IEC 60730/60335功能安全認證
    主站蜘蛛池模板: 能看的黄页最新网站| 趁老师睡着吃她的奶水| 小货SAO边洗澡边CAO你动漫| 秋霞三级理伦免费观看| 美女视频黄a视频全免费网站色窝| 国产在线精品亚洲二品区| 国产精品久久久久久久人热 | 美女全光末满18勿进| 久久草福利自拍视频在线观看| 国内精品久久久久久西瓜色吧| 国产精品青青在线麻豆| 国产精品久久一区二区三区蜜桃 | 亚洲欧洲日产国码中学| 小小水蜜桃视频高清在线播放| 午夜DJ国产精华日本无码| 天美传媒MV高清免费看| 天天躁日日躁狠狠躁午夜剧场| 色婷婷综合久久久久中文一区二区| 日本漂亮妈妈7观整有限中| 日本又黄又裸一级大黄裸片| 日韩一本在线| 我半夜摸妺妺的奶C了她| 亚州AV人片一区二区三区99久| 小夫妻天天恶战| 亚洲偷自拍精品视频在线观看| 亚洲三区视频| 最新精品国产| Chinesetube国产中文| 不良网站进入窗口软件下载免费| 高H各种PLAY全肉NP| 国产高清视频免费最新在线| 国产在线精品一区二区在线看 | Y8848高清私人影院软件优势| 97国产人妻精品无码AV在线| caoporn超碰在线| 给个男人都懂的网址2019| 国产三级影院| 久久久久琪琪精品色| 欧美整片华人play| 午夜dj免费中文字幕| 在线播放国产视频|