一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

基于J-Link解除APM32F003讀保護(hù)

Geehy極海半導(dǎo)體 ? 來源:Geehy極海半導(dǎo)體 ? 作者:Geehy極海半導(dǎo)體 ? 2022-09-20 14:49 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

前言

最近拿到了一塊APM32F003F6 MINI開發(fā)板,發(fā)現(xiàn)其在同價(jià)位的芯片中有著豐富的資源和優(yōu)秀的低功耗水平。準(zhǔn)備拿來做一些小產(chǎn)品的開發(fā)。

1 APM32F003的讀保護(hù)設(shè)置

在開發(fā)過程中,發(fā)現(xiàn)其對(duì)代碼保護(hù)如同APM32F4一樣,可以設(shè)置讀保護(hù)。如其手冊(cè)描述,APM32F003支持寫保護(hù)和讀保護(hù)。

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

通過手冊(cè)描述和使用相關(guān)的庫函數(shù),我們可以將庫函數(shù)封裝,方便我們一個(gè)指令進(jìn)行讀寫保護(hù)。

/*! * [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(); }

在我們的功能函數(shù)里面對(duì)ReadOutProtectionConfig()函數(shù)進(jìn)行調(diào)用即可完成對(duì)芯片的讀寫保護(hù)。如:

以上代碼是實(shí)現(xiàn)了一個(gè)讀保護(hù)設(shè)置后,閃燈5下后解除讀保護(hù)。(值得注意的是:APM32F003手冊(cè)是說明“在配置完選項(xiàng)字節(jié)后,需要復(fù)位才能生效 ”)。

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

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

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

3 J-Link解除讀保護(hù)的原理

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

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

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

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

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

4 APM32F003解除讀保護(hù)分析

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

- FMC_Unlock()函數(shù)內(nèi)容

void FMC_Unlock(void)

{

FMC->KEY = FMC_KEY_1;

FMC->KEY = FMC_KEY_2;

}

對(duì)FMC 關(guān)鍵字(FMCwKey)寫入解鎖的鍵值以解鎖 FMC。

- FMC_EraseOptionByte()函數(shù)內(nèi)容

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. 對(duì)FMC的OBKEY寫入解鎖鍵值以解鎖對(duì)OB的操作。

2. 通過FMC的CTRL2寄存器,擦除選項(xiàng)字節(jié)。

3. 寫入讀保護(hù)等級(jí)至OB的READPROT寄存器,然后通過FMC的CTRL2寄存器進(jìn)行編程

4. 等待編程完成。

- FMC_Lock函數(shù)內(nèi)容

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

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

5 J-Link 解除 APM32F003讀保護(hù)實(shí)現(xiàn)

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

1. 規(guī)定選擇的連接接口,連接的目標(biāo)芯片類型及相應(yīng)的連接速度(必須)。

si 1

device CORTEX-M0

speed 100

JTAGConfg -1,-1

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

h

r

h

3. 解鎖代碼的指令實(shí)現(xiàn)(必須)。

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寄存器內(nèi)容,看看是否回到復(fù)位值(非必須)。

mem32 0x40011010 0x01

sleep 10

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

r

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

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

6 注意事項(xiàng)

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

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) ? ?{ ? ? ?} }

審核編輯:彭靜
聲明:本文內(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)投訴
  • 芯片
    +關(guān)注

    關(guān)注

    460

    文章

    52520

    瀏覽量

    441107
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4381

    瀏覽量

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

    關(guān)注

    30

    文章

    4900

    瀏覽量

    70762

原文標(biāo)題:APM32芯得 EP.09 | 使用J-Link解除APM32F003的讀保護(hù)

文章出處:【微信號(hào):geehysemi,微信公眾號(hào):Geehy極海半導(dǎo)體】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    極海半導(dǎo)體APM32系列工業(yè)級(jí)通用MCU又添新品,基于M0+內(nèi)核F003系列新品發(fā)布

    工業(yè)級(jí)APM32F003系列MCU,驅(qū)動(dòng)智能家電性能全面升級(jí)
    發(fā)表于 06-22 07:58 ?7110次閱讀

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

    關(guān)于在KEIL下使用j-link不到芯片的問題問題概述:硬件設(shè)備:正點(diǎn)原子號(hào)令者i.MX RT1052開發(fā)板j-link固件版本:V9.40實(shí)驗(yàn)?zāi)康模菏鞘褂?b class='flag-5'>j-link v9給開發(fā)板
    發(fā)表于 07-23 07:26

    j-link 仿真燒錄驅(qū)動(dòng)

    j-link 仿真燒錄驅(qū)動(dòng)
    發(fā)表于 01-14 02:07 ?23次下載

    J-LinkJ-Trace用戶指南免費(fèi)下載

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

    J-Link script的組成

    腳本語言不需要編譯,它由解釋器動(dòng)態(tài)解釋執(zhí)行。J-Link Commander(路徑C:Program Files (x86)SEGGERJLinkJLink.exe)是一個(gè)解釋器,負(fù)責(zé)對(duì)J-Link script文件進(jìn)行解釋。
    的頭像 發(fā)表于 03-09 10:57 ?2412次閱讀

    教你輕松J-Link不能連接目標(biāo)MCU的問題

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

    如何處理J-Link不能連接目標(biāo)MCU的問題?

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

    基于J-Link Remote Server軟件的遠(yuǎn)程調(diào)試方法

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

    apm32f003替換STM32進(jìn)行低成本系統(tǒng)開發(fā)

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

    J-Link添加Geehy芯片

    最近調(diào)試Geehy的APM32芯片想著替換STM32,發(fā)現(xiàn)在使用Keil+J-Link的調(diào)試過程中總是發(fā)現(xiàn)J-Link會(huì)在初次下載的時(shí)候提示
    的頭像 發(fā)表于 07-25 14:57 ?6422次閱讀

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

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

    J-Link中的JTAG接口的正確使用注意事項(xiàng)

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

    APM32F003F6P6_調(diào)試問題_5V電源供電時(shí)J-Link無法識(shí)別與連接

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

    ST-Link也能當(dāng)J-Link?使用??

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

    極海APM32F003 MCU通過IEC 60730/60335功能安全認(rèn)證

    近日,極海APM32F003系列工業(yè)級(jí)超值型MCU,已順利通過IEC 60730/60335功能安全認(rèn)證,并可提供符合CLASS B標(biāo)準(zhǔn)的功能安全設(shè)計(jì)套件,有助于客戶減少認(rèn)證時(shí)間與成本,快速推出穩(wěn)定可靠的終端產(chǎn)品。
    的頭像 發(fā)表于 01-08 18:04 ?1293次閱讀
    極海<b class='flag-5'>APM32F003</b> MCU通過IEC 60730/60335功能安全認(rèn)證