Example ssdConfig for mpc5646b

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

Example ssdConfig for mpc5646b

999 次查看
vaso
Contributor I

Hello

Tell me how to implement the function of removing write protection of the high block in the MPC5646B processor. I took the example with MPC5602B as a basis, but I can only write to the lower part of the flash. How can I implement writing to the second bank of the flash. I am trying to use this code

where can I download an example example for MPC5646. All the links that are on the forum are empty. Or how can I correct my code for initializing the block. With the example below, I get error 300 when initializing the unlock

 

/* Unlock LOW PRIMARY blocks */
ret = pSetLock(&ssdDataConfig, LOCK_LOW_PRIMARY, 0x0U, FLASH_LMLR_PASSWORD);
ret |= pGetLock(&ssdDataConfig, LOCK_LOW_PRIMARY, &blkLockEnabled, &blkLockState);
blkLockState &= (0xFFFFFFFF >> (32 - ssdDataConfig.lowBlockNum));
if ((C90FL_OK != ret) || blkLockState)
{
ErrorTrap(ret);
}

/* Unlock LOW SECONDARY blocks */
ret = pSetLock(&ssdDataConfig, LOCK_LOW_SECONDARY, 0x0U, FLASH_SLMLR_PASSWORD);
ret |= pGetLock(&ssdDataConfig, LOCK_LOW_SECONDARY, &blkLockEnabled, &blkLockState);
blkLockState &= (0xFFFFFFFF >> (32 - ssdDataConfig.lowBlockNum));
if ((C90FL_OK != ret) || blkLockState)
{
ErrorTrap(ret);
}

/* Unlock HIGH blocks (optional) */
ret = pSetLock(&ssdDataConfig, LOCK_HIGH, 0x0U, FLASH_HBLR_PASSWORD);
ret |= pGetLock(&ssdDataConfig, LOCK_HIGH, &blkLockEnabled, &blkLockState);
blkLockState &= (0xFFFFFFFF >> (32 - ssdDataConfig.highBlockNum));
if ((C90FL_OK != ret) || blkLockState)
{
ErrorTrap(ret);
}

0 项奖励
回复
4 回复数

705 次查看
petervlna
NXP TechSupport
NXP TechSupport

Hello,

I was talking to one colleague and he have example code.

Hope it helps.

Best regards,

Peter

0 项奖励
回复

971 次查看
petervlna
NXP TechSupport
NXP TechSupport

Hello,

where can I download an example example for MPC5646. All the links that are on the forum are empty. Or how can I correct my code for initializing the block. With the example below, I get error 300 when initializing the unlock

Here are the examples:

https://community.nxp.com/t5/MPC5xxx-Knowledge-Base/MPC5-software-example-list/ta-p/1102445#MPC5646C

Tell me how to implement the function of removing write protection of the high block in the MPC5646B processor. I took the example with MPC5602B as a basis, but I can only write to the lower part of the flash. How can I implement writing to the second bank of the flash. I am trying to use this code

Access protections may be applied on a per-master basis for both reads and writes to support security and privilege mechanisms.

petervlna_0-1754551315487.png

petervlna_1-1754552476960.png

You need to unlock the HBL before programming:

petervlna_2-1754552564147.png

petervlna_3-1754553179513.png

 

/* unlock HLB block */
CFLASH.HLB.R =  0xB2B22222; /* unlock register */
CFLASH.HLB.R = 0x00000FFF; /* unlock all HLB flash */

Best regards,
Peter

 

0 项奖励
回复

956 次查看
vaso
Contributor I

Hello,

From the link you provided, I do not see an example of programming via the SSD_C90FL driver for BANK2 starting at address 0x180000.

I am encountering a problem where, using the SSD_C90FL driver, I am unable to program flash memory above address 0x180000.

I tried changing the password, and when using an incorrect password, I receive error code A00. Now, the password is accepted (no error), but I get error code 200 during flash programming.

Can you provide me with a working example for MPC5646B using the SSD_C90FL driver, or at least confirm the correct block configuration for BANK2 in the SSD_CONFIG?

Below is the configuration I tried:

lowBlockNum = 12, .

idBlockNum = 4,

highBlockNum = 16,

Thank you!

 

0 项奖励
回复

885 次查看
vaso
Contributor I

I wanted to add more details to my original post in this thread about programming the second flash bank (high blocks / BANK2) on MPC5646B using the SSD_C90FL driver.

BANK1 can be programmed without issues using the standard SSD_C90FL example. For BANK2, however, I still cannot get a working ssd_config configuration or correct block masks.

What I have checked and tried so far:

According to the block map in the MPC5646B Reference Manual, BANK2 consists of high blocks.

I have attempted to determine the addresses and masks for FlashErase() and FlashProgram() experimentally, but no success so far.

Unlocking via FlashSetLock() for high blocks does not work — likely due to incorrect mask values or base address settings.

I would appreciate help with the following points:

The correct SSD_CONFIG structure settings for BANK2 (addresses, sizes, number of blocks).

Whether a separate base address is required for BANK2 or if it shares the same base as BANK1.

Correct mask values for lowBlockLock, midBlockLock, and highBlockLock when unlocking high blocks.

A working example of FlashErase() and FlashProgram() calls for BANK2 on MPC5646B.

If anyone can share a working code snippet (or a link to an application note/example) where BANK2 is covered in detail for MPC5646B, that would be very helpful.

Here is my current draft configuration and code skeleton for BANK2:

#include "ssd_types.h"
#include "ssd_c90fl.h" // Header name may vary depending on SSD package

/* ======== TODO: Replace with exact values from MPC5646B RM ======== */
/* Fill in:
- P-Flash base address (main array)
- BANK2 (high blocks) start address, block size, number of blocks
- Shadow/UTEST base (if required)
- Correct lock/select masks for high blocks
*/

#define PFLASH_BASE 0x00XXXXXXu // TODO: base P-Flash address
#define BANK2_FIRST_BLOCK_ADDR 0x00YYYYYYu // TODO: start of first high block
#define BANK2_BLOCK_SIZE 0x00040000u // TODO: block size (e.g., 256KB)
#define BANK2_BLOCK_COUNT 0x00000004u // TODO: number of high blocks

#define DEMO_TARGET_ADDR (BANK2_FIRST_BLOCK_ADDR)

#define HIGH_BLOCK_SEL_MASK 0x00000001u // TODO: correct high block select mask
#define HIGH_BLOCK_LOCK_MASK 0x00000001u // TODO: correct high block lock mask

SSD_CONFIG ssdConfig = {
/* pFlashBase */ PFLASH_BASE,
/* uTestBase */ 0xXXXXXXu, // TODO: UTEST/shadow base (if required)
/* lowBlockNum */ 0,
/* midBlockNum */ 0,
/* highBlockNum */ BANK2_BLOCK_COUNT,
/* blockInfo */ NULL,
/* debugMode */ 0u,
/* callBack */ NULL
};

uint32_t demoBuf[64] = {0};

static void FillDemoBuffer(void)
{
for (uint32_t i = 0; i < (sizeof(demoBuf)/sizeof(demoBuf[0])); ++i) {
demoBuf[i] = 0xA5A50000u + i;
}
}

int ProgramBank2Demo(void)
{
uint32_t ret;
FLASH_SSD_CONFIG flashCfg = ssdConfig;

ret = FlashInit(&flashCfg);
if (ret != FTFx_OK) return ret;

ret = FlashSetLock(&flashCfg,
/* lowLock */ 0x00000000u,
/* midLock */ 0x00000000u,
/* highLock */ ~HIGH_BLOCK_LOCK_MASK);
if (ret != FTFx_OK) return ret;

ret = FlashBlockSelect(&flashCfg,
/* lowSel */ 0x00000000u,
/* midSel */ 0x00000000u,
/* highSel */ HIGH_BLOCK_SEL_MASK,
/* selInfo */ 0);
if (ret != FTFx_OK) return ret;

ret = FlashErase(&flashCfg,
/* dest */ DEMO_TARGET_ADDR,
/* size */ BANK2_BLOCK_SIZE,
/* key */ ERS_KEY);
if (ret != FTFx_OK) return ret;

FillDemoBuffer();
ret = FlashProgram(&flashCfg,
/* dest */ DEMO_TARGET_ADDR,
/* size */ sizeof(demoBuf),
/* pSource */ (uint32_t)demoBuf);
if (ret != FTFx_OK) return ret;

ret = FlashVerifyProgram(&flashCfg,
/* dest */ DEMO_TARGET_ADDR,
/* size */ sizeof(demoBuf),
/* pSource */ (uint32_t)demoBuf,
/* margin */ VERIFY_ALL);
return ret;
}

 

0 项奖励
回复
%3CLINGO-SUB%20id%3D%22lingo-sub-2147517%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3Empc5646b%20%E7%9A%84%20ssdConfig%20%E7%A4%BA%E4%BE%8B%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2147517%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EHello%3C%2FP%3E%3CP%3E%E8%AF%B7%E5%91%8A%E8%AF%89%E6%88%91%E5%A6%82%E4%BD%95%E5%9C%A8%20MPC5646B%20%E5%A4%84%E7%90%86%E5%99%A8%E4%B8%AD%E5%AE%9E%E7%8E%B0%E5%8F%96%E6%B6%88%E9%AB%98%E4%BD%8D%E5%9D%97%E5%86%99%E4%BF%9D%E6%8A%A4%E7%9A%84%E5%8A%9F%E8%83%BD%E3%80%82%E6%88%91%E4%BB%A5%20MPC5602B%20%E4%B8%BA%E4%BE%8B%EF%BC%8C%E4%BD%86%E5%8F%AA%E8%83%BD%E5%86%99%E5%85%A5%E9%97%AA%E5%AD%98%E7%9A%84%E4%B8%8B%E5%8D%8A%E9%83%A8%E5%88%86%E3%80%82%E5%A6%82%E4%BD%95%E6%89%8D%E8%83%BD%E5%AE%9E%E7%8E%B0%E5%90%91%E9%97%AA%E5%AD%98%E7%AC%AC%E4%BA%8C%E7%BB%84%E5%86%99%E5%85%A5%EF%BC%9F%E6%88%91%E8%AF%95%E5%9B%BE%E4%BD%BF%E7%94%A8%E4%BB%A5%E4%B8%8B%E4%BB%A3%E7%A0%81%3C%2FP%3E%3CP%3E%E5%93%AA%E9%87%8C%E5%8F%AF%E4%BB%A5%E4%B8%8B%E8%BD%BD%20MPC5646%20%E7%9A%84%E7%A4%BA%E4%BE%8B%E3%80%82%E8%AE%BA%E5%9D%9B%E4%B8%8A%E7%9A%84%E6%89%80%E6%9C%89%E9%93%BE%E6%8E%A5%E9%83%BD%E6%98%AF%E7%A9%BA%E7%9A%84%E3%80%82%E6%88%96%E8%80%85%EF%BC%8C%E6%88%91%E5%BA%94%E8%AF%A5%E5%A6%82%E4%BD%95%E4%BF%AE%E6%94%B9%E6%88%91%E7%9A%84%E4%BB%A3%E7%A0%81%E6%9D%A5%E5%88%9D%E5%A7%8B%E5%8C%96%E7%A8%8B%E5%BA%8F%E5%9D%97%E3%80%82%E9%80%9A%E8%BF%87%E4%B8%8B%E9%9D%A2%E7%9A%84%E7%A4%BA%E4%BE%8B%EF%BC%8C%E6%88%91%E5%9C%A8%E5%88%9D%E5%A7%8B%E5%8C%96%E8%A7%A3%E9%94%81%E6%97%B6%E9%81%87%E5%88%B0%E4%BA%86%E9%94%99%E8%AF%AF%20300%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%2F*%20%E8%A7%A3%E9%94%81%20LOW%20PRIMARY%20%E5%9D%97%20*%2F%3CBR%20%2F%3Eret%20%3D%20pSetLock(%26amp%3BssdDataConfig%2C%20LOCK_LOW_PRIMARY%2C%200x0U%2C%20FLASH_LMLR_PASSWORD)%EF%BC%9B%3CBR%20%2F%3Eret%20%7C%3D%20pGetLock(%26amp%3BssdDataConfig%2C%20LOCK_LOW_PRIMARY%2C%26amp%3BblkLockEnabled%2C%26amp%3BblkLockState)%3B%3CBR%20%2F%3EblkLockState%26amp%3B%3D%20(0xFFFFFFFF%26gt%3B%26gt%3B%20(32%20-%20ssdDataConfig.lowBlockNum))%3B%3CBR%20%2F%3Eif%20((C90FL_OK%20!%3D%20ret)%20%7C%7C%20blkLockState)%3CBR%20%2F%3E%7B%3CBR%20%2F%3EErrorTrap(ret)%3B%3CBR%20%2F%3E%7D%3C%2FP%3E%3CP%3E%2F*%20%E8%A7%A3%E9%94%81%20LOW%20SECONDARY%20%E5%9D%97%20*%2F%3CBR%20%2F%3Eret%20%3D%20pSetLock(%26amp%3BssdDataConfig%2C%20LOCK_LOW_SECONDARY%2C%200x0U%2C%20FLASH_SLMLR_PASSWORD)%EF%BC%9B%3CBR%20%2F%3Eret%20%7C%3D%20pGetLock(%26amp%3BssdDataConfig%2C%20LOCK_LOW_SECONDARY%2C%26amp%3BblkLockEnabled%2C%26amp%3BblkLockState)%3B%3CBR%20%2F%3EblkLockState%26amp%3B%3D%20(0xFFFFFFFF%26gt%3B%26gt%3B%20(32%20-%20ssdDataConfig.lowBlockNum))%3B%3CBR%20%2F%3Eif%20((C90FL_OK%20!%3D%20ret)%20%7C%7C%20blkLockState)%3CBR%20%2F%3E%7B%3CBR%20%2F%3EErrorTrap(ret)%3B%3CBR%20%2F%3E%7D%3C%2FP%3E%3CP%3E%2F*%20%E8%A7%A3%E9%94%81%20HIGH%20%E6%96%B9%E5%9D%97%EF%BC%88%E5%8F%AF%E9%80%89%E7%9A%84%EF%BC%89*%2F%20%3CBR%20%2F%3E%20ret%20%3D%20psetLock%EF%BC%88%26amp%3B%20SSDDataConfig%EF%BC%8CLOCK_HIGH%EF%BC%8C0x0U%EF%BC%8CFLASH_HBLR_PASSWORD%EF%BC%89%EF%BC%9B%3CBR%20%2F%3Eret%20%7C%3D%20pgetLock%EF%BC%88%26amp%3B%20SSDataConfig%EF%BC%8CLOCK_HIGH%EF%BC%8C%26amp%3B%20blkLockEnabled%EF%BC%8C%26amp%3B%20blkLockState%20%26amp%3B%20%3D%20(0xFFFFFF%20%26gt%3B%20%26gt%3B%20(32-SSDonDataconDataConfig%EF%BC%8CblkLockEnabled%EF%BC%8CblkLockState%20%3D%20(0xFFFFFF)%20fig.highblockNum))%3B%20if%20((C90FL_OK!%20%3CBR%20%2F%3E%20%3CBR%20%2F%3E%3D%20ret)%20%7C%7C%20blockStat%20%3CBR%20%2F%3E%20e)%20%7B%3CBR%20%2F%3EerrorTrap%20(ret)%3B%7D%20%3CBR%20%2F%3E%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2157410%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20Example%20ssdConfig%20for%20mpc5646b%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2157410%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E4%BD%A0%E5%A5%BD%3C%2FP%3E%0A%3CP%3E%E6%88%91%E5%92%8C%E4%B8%80%E4%BD%8D%E5%90%8C%E4%BA%8B%E8%81%8A%E8%BF%87%EF%BC%8C%E4%BB%96%E6%9C%89%E4%B8%80%E4%BA%9B%E7%A4%BA%E4%BE%8B%E4%BB%A3%E7%A0%81%E3%80%82%3C%2FP%3E%0A%3CP%3E%E5%B8%8C%E6%9C%9B%E5%AF%B9%E4%BD%A0%E6%9C%89%E6%89%80%E5%B8%AE%E5%8A%A9%E3%80%82%3C%2FP%3E%0A%3CP%3E%E9%A1%BA%E7%A5%9D%E5%95%86%E7%A5%BA%EF%BC%81%3C%2FP%3E%0A%3CP%3EPeter%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2151005%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20Example%20ssdConfig%20for%20mpc5646b%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2151005%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E6%88%91%E6%83%B3%E5%9C%A8%E6%9C%AC%E4%B8%BB%E9%A2%98%E4%B8%AD%E6%B7%BB%E5%8A%A0%E6%9B%B4%E5%A4%9A%E5%85%B3%E4%BA%8E%E4%BD%BF%E7%94%A8%20SSD_C90FL%20%E9%A9%B1%E5%8A%A8%E7%A8%8B%E5%BA%8F%E5%AF%B9%20MPC5646B%20%E7%9A%84%E7%AC%AC%E4%BA%8C%E4%B8%AA%E9%97%AA%E5%AD%98%E7%BB%84%EF%BC%88%E9%AB%98%E5%9D%97%2FBANK2%EF%BC%89%E8%BF%9B%E8%A1%8C%E7%BC%96%E7%A8%8B%E7%9A%84%E8%AF%A6%E7%BB%86%E4%BF%A1%E6%81%AF%E3%80%82%3C%2FP%3E%3CP%3E%E5%8F%AF%E4%BB%A5%E4%BD%BF%E7%94%A8%E6%A0%87%E5%87%86%20SSD_C90FL%20%E7%A4%BA%E4%BE%8B%E5%AF%B9%20BANK1%20%E8%BF%9B%E8%A1%8C%E7%BC%96%E7%A8%8B%EF%BC%8C%E4%B8%8D%E4%BC%9A%E5%87%BA%E7%8E%B0%E9%97%AE%E9%A2%98%E3%80%82%E4%BD%86%E6%98%AF%EF%BC%8C%E5%AF%B9%E4%BA%8E%20BANK2%EF%BC%8C%E6%88%91%E4%BB%8D%E7%84%B6%E6%97%A0%E6%B3%95%E8%8E%B7%E5%BE%97%E6%AD%A3%E5%B8%B8%E5%B7%A5%E4%BD%9C%E7%9A%84%20ssd_config%20%E9%85%8D%E7%BD%AE%E6%88%96%E6%AD%A3%E7%A1%AE%E7%9A%84%E5%9D%97%E6%8E%A9%E7%A0%81%E3%80%82%3C%2FP%3E%3CP%3E%E6%88%91%E7%9B%AE%E5%89%8D%E5%B7%B2%E7%BB%8F%E6%A3%80%E6%9F%A5%E5%92%8C%E5%B0%9D%E8%AF%95%E8%BF%87%E7%9A%84%3C%2FP%3E%3CP%3E%E6%A0%B9%E6%8D%AE%20MPC5646B%20%E5%8F%82%E8%80%83%E6%89%8B%E5%86%8C%E4%B8%AD%E7%9A%84%E6%96%B9%E5%9D%97%E5%9B%BE%EF%BC%8CBANK2%20%E7%94%B1%E9%AB%98%E6%96%B9%E5%9D%97%E7%BB%84%E6%88%90%E3%80%82%3C%2FP%3E%3CP%3E%E6%88%91%E6%9B%BE%E8%AF%95%E5%9B%BE%E9%80%9A%E8%BF%87%E5%AE%9E%E9%AA%8C%E7%A1%AE%E5%AE%9A%20FlashErase()%20%E5%92%8C%20FlashProgram()%20%E7%9A%84%E5%9C%B0%E5%9D%80%E5%92%8C%E6%8E%A9%E7%A0%81%EF%BC%8C%E4%BD%86%E8%87%B3%E4%BB%8A%E6%B2%A1%E6%9C%89%E6%88%90%E5%8A%9F%E3%80%82%3C%2FP%3E%3CP%3E%E9%80%9A%E8%BF%87%20FlashSetLock()%20%E5%AF%B9%E9%AB%98%E4%BD%8D%E5%9D%97%E8%A7%A3%E9%94%81%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8%20-%20%E5%8F%AF%E8%83%BD%E6%98%AF%E7%94%B1%E4%BA%8E%E6%8E%A9%E7%A0%81%E5%80%BC%E6%88%96%E5%9F%BA%E5%9C%B0%E5%9D%80%E8%AE%BE%E7%BD%AE%E4%B8%8D%E6%AD%A3%E7%A1%AE%E3%80%82%3C%2FP%3E%3CP%3E%E8%AF%B7%E5%B0%B1%E4%BB%A5%E4%B8%8B%E5%87%A0%E7%82%B9%E5%90%91%E6%88%91%E6%8F%90%E4%BE%9B%E5%B8%AE%E5%8A%A9%EF%BC%9A%3C%2FP%3E%3CP%3EBANK2%20%E7%9A%84%20SSD_CONFIG%20%E7%BB%93%E6%9E%84%E8%AE%BE%E7%BD%AE%E6%AD%A3%E7%A1%AE%EF%BC%88%E5%9C%B0%E5%9D%80%E3%80%81%E5%A4%A7%E5%B0%8F%E3%80%81%E5%9D%97%E6%95%B0%EF%BC%89%E3%80%82%3C%2FP%3E%3CP%3EBANK2%20%E6%98%AF%E5%90%A6%E9%9C%80%E8%A6%81%E5%8D%95%E7%8B%AC%E7%9A%84%E5%9F%BA%E5%9C%B0%E5%9D%80%EF%BC%8C%E6%88%96%E8%80%85%E6%98%AF%E5%90%A6%E4%B8%8E%20BANK1%20%E5%85%B1%E4%BA%AB%E5%90%8C%E4%B8%80%E5%9F%BA%E5%9C%B0%E5%9D%80%E3%80%82%3C%2FP%3E%3CP%3E%E5%9C%A8%E8%A7%A3%E9%94%81%E9%AB%98%E5%8C%BA%E5%9D%97%E6%97%B6%EF%BC%8C%E7%BA%A0%E6%AD%A3%20lowBlockLock%E3%80%81midBlockLock%20%E5%92%8C%20highBlockLock%20%E7%9A%84%E5%B1%8F%E8%94%BD%E5%80%BC%E3%80%82%3C%2FP%3E%3CP%3E%E8%B0%83%E7%94%A8%20MPC5646B%20%E4%B8%8A%20BANK2%20%E7%9A%84%20FlashErase()%20%E5%92%8C%20FlashProgram()%20%E7%9A%84%E5%B7%A5%E4%BD%9C%E7%A4%BA%E4%BE%8B%E3%80%82%3C%2FP%3E%3CP%3E%E5%A6%82%E6%9E%9C%E6%9C%89%E4%BA%BA%E8%83%BD%E5%88%86%E4%BA%AB%E4%B8%80%E4%B8%AA%E8%AF%A6%E7%BB%86%E4%BB%8B%E7%BB%8D%E4%BA%86%20MPC5646B%20%E7%9A%84%20BANK2%20%E7%9A%84%E5%B7%A5%E4%BD%9C%E4%BB%A3%E7%A0%81%E7%89%87%E6%AE%B5%EF%BC%88%E6%88%96%E5%BA%94%E7%94%A8%E7%AC%94%E8%AE%B0%2F%E7%A4%BA%E4%BE%8B%E7%9A%84%E9%93%BE%E6%8E%A5%EF%BC%89%EF%BC%8C%E9%82%A3%E5%B0%86%E9%9D%9E%E5%B8%B8%E6%9C%89%E5%B8%AE%E5%8A%A9%E3%80%82%3C%2FP%3E%3CP%3E%E4%B8%8B%E9%9D%A2%E6%98%AF%E6%88%91%E7%9B%AE%E5%89%8D%E4%B8%BA%20BANK2%20%E8%B5%B7%E8%8D%89%E7%9A%84%E9%85%8D%E7%BD%AE%E5%92%8C%E4%BB%A3%E7%A0%81%E9%AA%A8%E6%9E%B6%EF%BC%9A%3C%2FP%3E%3CP%3E%3CEM%3E%23include%22ssd_types.h%22%3C%2FEM%3E%3CBR%20%2F%3E%3CEM%3E%23include%20%22%20ssd_c90fl.h%20%22%2F%2F%E6%A0%87%E5%A4%B4%E5%90%8D%E7%A7%B0%E5%8F%AF%E8%83%BD%E5%9B%A0%E5%9B%BA%E6%80%81%E7%A1%AC%E7%9B%98%E4%BB%A3%E7%A0%81%E5%8C%85%E8%80%8C%E5%BC%82%3C%2FEM%3E%3C%2FP%3E%3CP%3E%3CEM%3E%2F*%20%3D%3D%3D%3D%3D%3D%3D%3D%20TODO%EF%BC%9A%E7%94%A8%20MPC5646B%20RM%20%3D%3D%3D%3D%3D%3D%3D%3D%20%E4%B8%AD%E7%9A%84%E7%B2%BE%E7%A1%AE%E5%80%BC%E6%9B%BF%E6%8D%A2%20*%2F%3C%2FEM%3E%3CBR%20%2F%3E%3CEM%3E%2F*%20%E5%A1%AB%E5%85%A5%EF%BC%9A%3C%2FEM%3E%3CBR%20%2F%3E%3CEM%3E-%20P-Flash%20%E5%9F%BA%E5%9C%B0%E5%9D%80%EF%BC%88%E4%B8%BB%E6%95%B0%E7%BB%84%EF%BC%89%3C%2FEM%3E%3CBR%20%2F%3E%3CEM%3E-%20BANK2%EF%BC%88%E9%AB%98%E5%9D%97%EF%BC%89%E8%B5%B7%E5%A7%8B%E5%9C%B0%E5%9D%80%E3%80%81%E5%9D%97%E5%A4%A7%E5%B0%8F%E3%80%81%E5%9D%97%E6%95%B0%3C%2FEM%3E%3CBR%20%2F%3E%3CEM%3E-%20%E9%98%B4%E5%BD%B1%2FUTEST%20%E5%9F%BA%E5%9C%B0%E5%9D%80%EF%BC%88%E5%A6%82%E9%9C%80%E8%A6%81%EF%BC%89%3C%2FEM%3E%3CBR%20%2F%3E%3CEM%3E-%20%E9%AB%98%E5%8C%BA%E5%9D%97%E7%9A%84%E6%AD%A3%E7%A1%AE%E9%94%81%E5%AE%9A%2F%E9%80%89%E6%8B%A9%E6%8E%A9%E7%A0%81%3C%2FEM%3E%3CBR%20%2F%3E%3CEM%3E*%2F%3C%2FEM%3E%3C%2FP%3E%3CP%3E%3CEM%3E%23define%20PFLASH_BASE%200x00XXXXXXu%20%2F%2F%20%E5%BE%85%E5%AE%9A%EF%BC%9AP-Flash%20%E5%9F%BA%E5%9C%B0%E5%9D%80%3C%2FEM%3E%3CBR%20%2F%3E%3CEM%3E%23define%20BANK2_FIRST_BLOCK_ADDR%200x00YYYYYu%20%2F%2F%20%E5%BE%85%E5%AE%9A%EF%BC%9A%E7%AC%AC%E4%B8%80%E4%B8%AA%E9%AB%98%E4%BD%8D%E5%9D%97%E7%9A%84%E8%B5%B7%E5%A7%8B%E5%9C%B0%E5%9D%80%3C%2FEM%3E%3CBR%20%2F%3E%3CEM%3E%23define%20BANK2_BLOCK_SIZE%200x00040000u%20%2F%2F%20%E5%BE%85%E5%AE%9A%EF%BC%9A%E5%9D%97%E5%A4%A7%E5%B0%8F%EF%BC%88%E5%A6%82%20256KB%EF%BC%89%3C%2FEM%3E%3CBR%20%2F%3E%3CEM%3E%23define%20BANK2_BLOCK_COUNT%200x00000004u%20%2F%2F%20%E5%BE%85%E5%8A%9E%E4%BA%8B%E9%A1%B9%EF%BC%9A%E9%AB%98%E5%8C%BA%E5%9D%97%E4%B8%AA%E6%95%B0%3C%2FEM%3E%3C%2FP%3E%3CP%3E%3CEM%3E%23define%20DEMO_TARGET_ADDR%20(BANK2_FIRST_BLOCK_ADDR)%3C%2FEM%3E%3C%2FP%3E%3CP%3E%3CEM%3E%23define%20HIGH_BLOCK_SEL_MASK%200x00000001u%20%2F%2F%20%E5%BE%85%E5%8A%9E%E4%BA%8B%E9%A1%B9%EF%BC%9A%E6%AD%A3%E7%A1%AE%E7%9A%84%E9%AB%98%E5%9D%97%E9%80%89%E6%8B%A9%E6%8E%A9%E7%A0%81%3C%2FEM%3E%3CBR%20%2F%3E%3CEM%3E%23define%20HIGH_BLOCK_LOCK_MASK%200x00000001u%20%2F%2F%20%E5%BE%85%E5%8A%9E%E4%BA%8B%E9%A1%B9%EF%BC%9A%E6%AD%A3%E7%A1%AE%E7%9A%84%E9%AB%98%E5%9D%97%E9%94%81%E5%AE%9A%E6%8E%A9%E7%A0%81%3C%2FEM%3E%3C%2FP%3E%3CP%3E%3CEM%3ESSD_CONFIG%20ssdConfig%20%3D%20%7B%3C%2FEM%3E%3CBR%20%2F%3E%3CEM%3E%2F*%20pFlashBase%20*%2F%20PFLASH_BASE%E3%80%81%3C%2FEM%3E%3CBR%20%2F%3E%3CEM%3E%2F*%20uTestBase%20*%2F%200xXXXXXXu%2C%20%2F%2F%20TODO%3A%20UTEST%2Fshadow%20base%20(if%20required)%3C%2FEM%3E%3CBR%20%2F%3E%3CEM%3E%2F*%20lowBlockNum%20*%2F%200%E3%80%81%3C%2FEM%3E%3CBR%20%2F%3E%3CEM%3E%2F*%20midBlockNum%20*%2F%200%E3%80%81%3C%2FEM%3E%3CBR%20%2F%3E%3CEM%3E%2F*%20BANK2_BLOCK_COUNT%E3%80%81%3C%2FEM%3E%3CBR%20%2F%3E%3CEM%3E%2F*%20blockInfo%20*%2F%20NULL%E3%80%81%3C%2FEM%3E%3CBR%20%2F%3E%3CEM%3E%2F*%20debugMode%20*%2F%200u%E3%80%81%3C%2FEM%3E%3CBR%20%2F%3E%3CEM%3E%2F*%20%E8%B0%83%E7%94%A8%E8%BF%94%E5%9B%9E%20*%2F%20NULL%3C%2FEM%3E%3CBR%20%2F%3E%3CEM%3E%7D%3B%3C%2FEM%3E%3C%2FP%3E%3CP%3E%3CEM%3Euint32_t%20demoBuf%5B64%5D%20%3D%20%7B0%7D%EF%BC%9B%3C%2FEM%3E%3C%2FP%3E%3CP%3E%3CEM%3Estatic%20void%20FillDemoBuffer(void)%3C%2FEM%3E%3CBR%20%2F%3E%3CEM%3E%7B%3C%2FEM%3E%3CBR%20%2F%3E%3CEM%3Efor%20(uint32_t%20i%20%3D%200%3B%20i%26lt%3B%20(sizeof(demoBuf)%2Fsizeof(demoBuf%5B0%5D))%3B%20%2B%2Bi)%20%7B%3C%2FEM%3E%3CBR%20%2F%3E%3CEM%3EdemoBuf%5Bi%5D%20%3D%200xA5A50000u%20%2B%20i%EF%BC%9B%3C%2FEM%3E%3CBR%20%2F%3E%3CEM%3E%7D%3C%2FEM%3E%3CBR%20%2F%3E%3CEM%3E%7D%3C%2FEM%3E%3C%2FP%3E%3CP%3E%3CEM%3Eint%20ProgramBank2Demo(void)%3C%2FEM%3E%3CBR%20%2F%3E%3CEM%3E%7B%3C%2FEM%3E%3CBR%20%2F%3E%3CEM%3Euint32_t%20ret%EF%BC%9B%3C%2FEM%3E%3CBR%20%2F%3E%3CEM%3EFLASH_SSD_CONFIG%20flashCfg%20%3D%20ssdConfig%EF%BC%9B%3C%2FEM%3E%3C%2FP%3E%3CP%3E%3CEM%3Eret%20%3D%20FlashInit(%26amp%3BflashCfg)%EF%BC%9B%3C%2FEM%3E%3CBR%20%2F%3E%3CEM%3E%E5%A6%82%E6%9E%9C%20(ret%20!%3D%20FTFx_OK)%20%E8%BF%94%E5%9B%9E%20ret%EF%BC%9B%3C%2FEM%3E%3C%2FP%3E%3CP%3E%3CEM%3Eret%20%3D%20FlashSetLock(%26amp%3BflashCfg%E3%80%81%3C%2FEM%3E%3CBR%20%2F%3E%3CEM%3E%2F*%20lowLock%20*%2F%200x00000000u%E3%80%81%3C%2FEM%3E%3CBR%20%2F%3E%3CEM%3E%2F*%20midLock%20*%2F%200x00000000u%E3%80%81%3C%2FEM%3E%3CBR%20%2F%3E%3CEM%3E%2F*%20highLock%20*%2F%20~HIGH_BLOCK_LOCK_MASK)%EF%BC%9B%3C%2FEM%3E%3CBR%20%2F%3E%3CEM%3E%E5%A6%82%E6%9E%9C%20(ret%20!%3D%20FTFx_OK)%20%E8%BF%94%E5%9B%9E%20ret%EF%BC%9B%3C%2FEM%3E%3C%2FP%3E%3CP%3E%3CEM%3Eret%20%3D%20FlashBlockSelect(%26amp%3BflashCfg%E3%80%81%3C%2FEM%3E%3CBR%20%2F%3E%3CEM%3E%2F*%20lowSel%20*%2F%200x00000000u%E3%80%81%3C%2FEM%3E%3CBR%20%2F%3E%3CEM%3E%2F*%20midSel%20*%2F%200x00000000u%E3%80%81%3C%2FEM%3E%3CBR%20%2F%3E%3CEM%3E%2F*%20highSel%20*%2F%20HIGH_BLOCK_SEL_MASK%E3%80%81%3C%2FEM%3E%3CBR%20%2F%3E%3CEM%3E%2F*%20selInfo%20*%2F%200%EF%BC%89%EF%BC%9B%3C%2FEM%3E%3CBR%20%2F%3E%3CEM%3E%E5%A6%82%E6%9E%9C%20(ret%20!%3D%20FTFx_OK)%20%E8%BF%94%E5%9B%9E%20ret%EF%BC%9B%3C%2FEM%3E%3C%2FP%3E%3CP%3E%3CEM%3Eret%20%3D%20FlashErase(%26amp%3BflashCfg%E3%80%81%3C%2FEM%3E%3CBR%20%2F%3E%3CEM%3E%2F*%20%E7%9B%AE%E7%9A%84%E5%9C%B0%20*%2F%20DEMO_TARGET_ADDR%E3%80%81%3C%2FEM%3E%3CBR%20%2F%3E%3CEM%3E%2F*%20size%20*%2F%20BANK2_BLOCK_SIZE%E3%80%81%3C%2FEM%3E%3CBR%20%2F%3E%3CEM%3E%2F*%20key%20*%2F%20ERS_KEY)%EF%BC%9B%3C%2FEM%3E%3CBR%20%2F%3E%3CEM%3E%E5%A6%82%E6%9E%9C%20(ret%20!%3D%20FTFx_OK)%20%E8%BF%94%E5%9B%9E%20ret%EF%BC%9B%3C%2FEM%3E%3C%2FP%3E%3CP%3E%3CEM%3EFillDemoBuffer()%EF%BC%9B%3C%2FEM%3E%3CBR%20%2F%3E%3CEM%3Eret%20%3D%20FlashProgram(%26amp%3BflashCfg%E3%80%81%3C%2FEM%3E%3CBR%20%2F%3E%3CEM%3E%2F*%20%E7%9B%AE%E7%9A%84%E5%9C%B0%20*%2F%20DEMO_TARGET_ADDR%E3%80%81%3C%2FEM%3E%3CBR%20%2F%3E%3CEM%3E%2F*%20size%20*%2F%20sizeof(demoBuf)%E3%80%81%3C%2FEM%3E%3CBR%20%2F%3E%3CEM%3E%2F*%20pSource%20*%2F%20(uint32_t)demoBuf)%EF%BC%9B%3C%2FEM%3E%3CBR%20%2F%3E%3CEM%3E%E5%A6%82%E6%9E%9C%20(ret%20!%3D%20FTFx_OK)%20%E8%BF%94%E5%9B%9E%20ret%EF%BC%9B%3C%2FEM%3E%3C%2FP%3E%3CP%3E%3CEM%3Eret%20%3D%20FlashVerifyProgram(%26amp%3BflashCfg%E3%80%81%3C%2FEM%3E%3CBR%20%2F%3E%3CEM%3E%2F*%20%E7%9B%AE%E7%9A%84%E5%9C%B0%20*%2F%20DEMO_TARGET_ADDR%E3%80%81%3C%2FEM%3E%3CBR%20%2F%3E%3CEM%3E%2F*%20size%20*%2F%20sizeof(demoBuf)%E3%80%81%3C%2FEM%3E%3CBR%20%2F%3E%3CEM%3E%2F*%20pSource%20*%2F%20(uint32_t)demoBuf%E3%80%81%3C%2FEM%3E%3CBR%20%2F%3E%3CEM%3E%2F*%20margin%20*%2F%20VERIFY_ALL)%EF%BC%9B%3C%2FEM%3E%3CBR%20%2F%3E%3CEM%3E%E8%BF%94%E5%9B%9E%20ret%EF%BC%9B%3C%2FEM%3E%3CBR%20%2F%3E%3CEM%3E%7D%3C%2FEM%3E%3C%2FP%3E%3CBR%20%2F%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2149290%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20Example%20ssdConfig%20for%20mpc5646b%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2149290%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%3CSPAN%3E%E4%BD%A0%E5%A5%BD%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%E5%9C%A8%E4%BD%A0%E6%8F%90%E4%BE%9B%E7%9A%84%E9%93%BE%E6%8E%A5%E4%B8%AD%EF%BC%8C%E6%88%91%E6%B2%A1%E6%9C%89%E7%9C%8B%E5%88%B0%E9%80%9A%E8%BF%87%20SSD_C90FL%20%E9%A9%B1%E5%8A%A8%E7%A8%8B%E5%BA%8F%E5%AF%B9%E4%BB%8E%E5%9C%B0%E5%9D%80%200x180000%20%E5%BC%80%E5%A7%8B%E7%9A%84%20BANK2%20%E8%BF%9B%E8%A1%8C%E7%BC%96%E7%A8%8B%E7%9A%84%E7%A4%BA%E4%BE%8B%E3%80%82%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%E6%88%91%E9%81%87%E5%88%B0%E4%BA%86%E4%B8%80%E4%B8%AA%E9%97%AE%E9%A2%98%EF%BC%8C%E4%BD%BF%E7%94%A8%20SSD_C90FL%20%E9%A9%B1%E5%8A%A8%E7%A8%8B%E5%BA%8F%E6%97%B6%EF%BC%8C%E6%97%A0%E6%B3%95%E5%AF%B9%E5%9C%B0%E5%9D%80%200x180000%20%E4%BB%A5%E4%B8%8A%E7%9A%84%E9%97%AA%E5%AD%98%E8%BF%9B%E8%A1%8C%E7%BC%96%E7%A8%8B%E3%80%82%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%E6%88%91%E8%AF%95%E7%9D%80%E6%9B%B4%E6%94%B9%E5%AF%86%E7%A0%81%EF%BC%8C%E5%BD%93%E4%BD%BF%E7%94%A8%E4%B8%8D%E6%AD%A3%E7%A1%AE%E7%9A%84%E5%AF%86%E7%A0%81%E6%97%B6%EF%BC%8C%E4%BC%9A%E6%94%B6%E5%88%B0%E9%94%99%E8%AF%AF%E4%BB%A3%E7%A0%81%20A00%E3%80%82%E7%8E%B0%E5%9C%A8%EF%BC%8C%E5%AF%86%E7%A0%81%E8%A2%AB%E6%8E%A5%E5%8F%97%E4%BA%86%EF%BC%88%E6%B2%A1%E6%9C%89%E9%94%99%E8%AF%AF%EF%BC%89%EF%BC%8C%E4%BD%86%E5%9C%A8%E9%97%AA%E5%AD%98%E7%BC%96%E7%A8%8B%E8%BF%87%E7%A8%8B%E4%B8%AD%EF%BC%8C%E6%88%91%E5%BE%97%E5%88%B0%E4%BA%86%E9%94%99%E8%AF%AF%E4%BB%A3%E7%A0%81%20200%E3%80%82%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%E8%83%BD%E5%90%A6%E6%8F%90%E4%BE%9B%E4%B8%80%E4%B8%AA%E4%BD%BF%E7%94%A8%20SSD_C90FL%20%E9%A9%B1%E5%8A%A8%E7%A8%8B%E5%BA%8F%E7%9A%84%20MPC5646B%20%E5%B7%A5%E4%BD%9C%E7%A4%BA%E4%BE%8B%EF%BC%8C%E6%88%96%E8%80%85%E8%87%B3%E5%B0%91%E7%A1%AE%E8%AE%A4%20SSD_CONFIG%20%E4%B8%AD%20BANK2%20%E7%9A%84%E5%9D%97%E9%85%8D%E7%BD%AE%E6%98%AF%E5%90%A6%E6%AD%A3%E7%A1%AE%EF%BC%9F%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%E4%BB%A5%E4%B8%8B%E6%98%AF%E6%88%91%E5%B0%9D%E8%AF%95%E7%9A%84%E9%85%8D%E7%BD%AE%EF%BC%9A%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3ElowBlockNum%20%3D%2012%2C%20.%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3EidBlockNum%20%3D%204%E3%80%81%20%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3EhighBlockNum%20%3D%2016%E3%80%81%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%E8%B0%A2%E8%B0%A2%EF%BC%81%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2148227%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20Example%20ssdConfig%20for%20mpc5646b%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2148227%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E4%BD%A0%E5%A5%BD%3C%2FP%3E%0A%3CBLOCKQUOTE%3E%0A%3CP%3E%E5%93%AA%E9%87%8C%E5%8F%AF%E4%BB%A5%E4%B8%8B%E8%BD%BD%20MPC5646%20%E7%9A%84%E7%A4%BA%E4%BE%8B%E3%80%82%E8%AE%BA%E5%9D%9B%E4%B8%8A%E7%9A%84%E6%89%80%E6%9C%89%E9%93%BE%E6%8E%A5%E9%83%BD%E6%98%AF%E7%A9%BA%E7%9A%84%E3%80%82%E6%88%96%E8%80%85%EF%BC%8C%E6%88%91%E5%BA%94%E8%AF%A5%E5%A6%82%E4%BD%95%E4%BF%AE%E6%94%B9%E6%88%91%E7%9A%84%E4%BB%A3%E7%A0%81%E6%9D%A5%E5%88%9D%E5%A7%8B%E5%8C%96%E7%A8%8B%E5%BA%8F%E5%9D%97%E3%80%82%E9%80%9A%E8%BF%87%E4%B8%8B%E9%9D%A2%E7%9A%84%E7%A4%BA%E4%BE%8B%EF%BC%8C%E6%88%91%E5%9C%A8%E5%88%9D%E5%A7%8B%E5%8C%96%E8%A7%A3%E9%94%81%E6%97%B6%E9%81%87%E5%88%B0%E4%BA%86%E9%94%99%E8%AF%AF%20300%3C%2FP%3E%0A%3C%2FBLOCKQUOTE%3E%0A%3CP%3E%E4%B8%8B%E9%9D%A2%E6%98%AF%E4%B8%80%E4%BA%9B%E4%BE%8B%E5%AD%90%EF%BC%9A%3C%2FP%3E%0A%3CP%3E%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2FMPC5xxx-Knowledge-Base%2FMPC5-software-example-list%2Fta-p%2F1102445%23MPC5646C%22%20target%3D%22_blank%22%3Ehttps%3A%2F%2Fcommunity.nxp.com%2Ft5%2FMPC5xxx-Knowledge-Base%2FMPC5-software-example-list%2Fta-p%2F1102445%23MPC5646C%3C%2FA%3E%3C%2FP%3E%0A%3CBLOCKQUOTE%3E%0A%3CP%3E%E8%AF%B7%E5%91%8A%E8%AF%89%E6%88%91%E5%A6%82%E4%BD%95%E5%9C%A8%20MPC5646B%20%E5%A4%84%E7%90%86%E5%99%A8%E4%B8%AD%E5%AE%9E%E7%8E%B0%E5%8F%96%E6%B6%88%E9%AB%98%E4%BD%8D%E5%9D%97%E5%86%99%E4%BF%9D%E6%8A%A4%E7%9A%84%E5%8A%9F%E8%83%BD%E3%80%82%E6%88%91%E4%BB%A5%20MPC5602B%20%E4%B8%BA%E4%BE%8B%EF%BC%8C%E4%BD%86%E5%8F%AA%E8%83%BD%E5%86%99%E5%85%A5%E9%97%AA%E5%AD%98%E7%9A%84%E4%B8%8B%E5%8D%8A%E9%83%A8%E5%88%86%E3%80%82%E5%A6%82%E4%BD%95%E6%89%8D%E8%83%BD%E5%AE%9E%E7%8E%B0%E5%90%91%E9%97%AA%E5%AD%98%E7%AC%AC%E4%BA%8C%E7%BB%84%E5%86%99%E5%85%A5%EF%BC%9F%E6%88%91%E8%AF%95%E5%9B%BE%E4%BD%BF%E7%94%A8%E4%BB%A5%E4%B8%8B%E4%BB%A3%E7%A0%81%3C%2FP%3E%0A%3C%2FBLOCKQUOTE%3E%0A%3CP%3E%E5%8F%AF%E4%BB%A5%E5%9C%A8%E6%AF%8F%E4%B8%AA%E4%B8%BB%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%9A%84%E5%9F%BA%E7%A1%80%E4%B8%8A%E5%AF%B9%E8%AF%BB%E5%8F%96%E5%92%8C%E5%86%99%E5%85%A5%E5%BA%94%E7%94%A8%E8%AE%BF%E9%97%AE%E4%BF%9D%E6%8A%A4%EF%BC%8C%E4%BB%A5%E6%94%AF%E6%8C%81%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8%E5%92%8C%E6%9D%83%E9%99%90%E6%9C%BA%E5%88%B6%E3%80%82%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22petervlna_0-1754551315487.png%22%20style%3D%22width%3A%20736px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22petervlna_0-1754551315487.png%22%20style%3D%22width%3A%20736px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F351309i7422F2BFAB2A2AB9%2Fimage-dimensions%2F736x152%3Fv%3Dv2%22%20width%3D%22736%22%20height%3D%22152%22%20role%3D%22button%22%20title%3D%22petervlna_0-1754551315487.png%22%20alt%3D%22petervlna_0-1754551315487.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22petervlna_1-1754552476960.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22petervlna_1-1754552476960.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F351321iA5415C5022433DA6%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22petervlna_1-1754552476960.png%22%20alt%3D%22petervlna_1-1754552476960.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%E7%BC%96%E7%A8%8B%E5%89%8D%E9%9C%80%E8%A6%81%E8%A7%A3%E9%94%81%20HBL%EF%BC%9A%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22petervlna_2-1754552564147.png%22%20style%3D%22width%3A%20552px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22petervlna_2-1754552564147.png%22%20style%3D%22width%3A%20552px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F351325i71DCACDB3E88326B%2Fimage-dimensions%2F552x149%3Fv%3Dv2%22%20width%3D%22552%22%20height%3D%22149%22%20role%3D%22button%22%20title%3D%22petervlna_2-1754552564147.png%22%20alt%3D%22petervlna_2-1754552564147.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22petervlna_3-1754553179513.png%22%20style%3D%22width%3A%20558px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22petervlna_3-1754553179513.png%22%20style%3D%22width%3A%20558px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F351343iF7A2994E1F9515E2%2Fimage-dimensions%2F558x258%3Fv%3Dv2%22%20width%3D%22558%22%20height%3D%22258%22%20role%3D%22button%22%20title%3D%22petervlna_3-1754553179513.png%22%20alt%3D%22petervlna_3-1754553179513.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CBR%20%2F%3E%0A%3CP%3E%2F*%20%E8%A7%A3%E9%94%81%20HLB%20%E5%9D%97%20*%2F%3CBR%20%2F%3ECFLASH.HLB.R%20%3D%200xB2B22222%3B%20%2F*%20%E8%A7%A3%E9%94%81%E5%AF%84%E5%AD%98%E5%99%A8%20*%2F%3CBR%20%2F%3ECFLASH.HLB.R%20%3D%200x00000FFF%3B%20%2F*%20%E8%A7%A3%E9%94%81%E6%89%80%E6%9C%89%20HLB%20%E9%97%AA%E5%AD%98%20*%2F%3CBR%20%2F%3E%3CBR%20%2F%3E%3C%2FP%3E%0A%3CP%3E%E8%87%B4%E4%BB%A5%E6%9C%80%E8%AF%9A%E6%8C%9A%E7%9A%84%E9%97%AE%E5%80%99%EF%BC%8C%3CBR%20%2F%3EPeter%3C%2FP%3E%0A%3CBR%20%2F%3E%3C%2FLINGO-BODY%3E