<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: LPC1549 How to calculate flash signature by original code? in LPC Microcontrollers</title>
    <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1549-How-to-calculate-flash-signature-by-original-code/m-p/744249#M30016</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;SPAN style="font-size: 15px;"&gt;Hi &lt;A _jive_internal="true" data-content-finding="Community" data-userid="291909" data-username="fukudatakuya" href="https://community.nxp.com/people/fukudatakuya"&gt;Fukuda Takuya&lt;/A&gt;，&lt;/SPAN&gt;&lt;/P&gt;&lt;DIV style="white-space: pre-wrap; text-align: left; line-height: 1.75; font-size: 14px;"&gt;&lt;SPAN style="font-family: 'Microsoft YaHei',STXihei; background-color: #ffffff; font-size: 15px;"&gt;Thank you for your interest in NXP Semiconductor products and&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV style="white-space: pre-wrap; text-align: left; line-height: 1.75; font-size: 14px;"&gt;&lt;SPAN style="font-family: 'Microsoft YaHei',STXihei; background-color: #ffffff; font-size: 15px;"&gt;the opportunity to serve you.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV style="white-space: pre-wrap; text-align: left; line-height: 1.75; font-size: 14px;"&gt;&lt;SPAN style="font-family: 'Microsoft YaHei',STXihei; background-color: #ffffff; font-size: 15px;"&gt;The flash signature generation algorithm which is illustrated in the &lt;A class="link-titled" href="https://os.mbed.com/forum/mbed/topic/4557/" title="https://os.mbed.com/forum/mbed/topic/4557/"&gt;LPC Signature Generator | Mbed&lt;/A&gt;&amp;nbsp; is correct.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV style="white-space: pre-wrap; text-align: left; line-height: 1.75; font-size: 14px;"&gt;&lt;SPAN style="font-family: 'Microsoft YaHei',STXihei; background-color: #ffffff; font-size: 15px;"&gt;I've tested it by myself.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV style="white-space: pre-wrap; text-align: left; line-height: 1.75; font-size: 14px;"&gt;&lt;P&gt;&lt;SPAN style="font-size: 15px;"&gt;This generator can produce a 128-bit signature from a range of flash memory.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 15px;"&gt;After signature generation, a 32-bit signature can be read from the FMSW0 register. The&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 15px;"&gt;32-bit signature reflects the corrected data read from the flash and the flash parity bits and&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 15px;"&gt;check bit values and User doesn't necessary to get the 128-bit signature.&lt;/SPAN&gt;&lt;/P&gt;&lt;DIV style="white-space: pre-wrap; text-align: left; line-height: 1.75; font-size: 14px;"&gt;&lt;P&gt;Have a great day,&lt;BR /&gt;TIC&lt;/P&gt;&lt;P style="min- padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;-----------------------------------------------------------------------------------------------------------------------&lt;BR /&gt;Note: If this post answers your question, please click the Correct Answer button. Thank you!&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 23 Jan 2018 02:06:14 GMT</pubDate>
    <dc:creator>jeremyzhou</dc:creator>
    <dc:date>2018-01-23T02:06:14Z</dc:date>
    <item>
      <title>LPC1549 How to calculate flash signature by original code?</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1549-How-to-calculate-flash-signature-by-original-code/m-p/744248#M30015</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello.&lt;/P&gt;&lt;P&gt;I want to know the algorithm about generating flash signature for LPC 15xx. I cannot understand it at all.&lt;/P&gt;&lt;P&gt;I use LPCXpresso1549 board with MCUXpresso IDE 10.1.0 and LPCOpen V2.20.&lt;/P&gt;&lt;P&gt;I read User Manual at &lt;A class="link-titled" href="https://www.nxp.com/docs/en/user-guide/UM10736.pdf" title="https://www.nxp.com/docs/en/user-guide/UM10736.pdf"&gt;https://www.nxp.com/docs/en/user-guide/UM10736.pdf&lt;/A&gt;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;At first, I tested example code "periph_flashiap" from LPCOpen archive, but it didn't work.&lt;/P&gt;&lt;P&gt;I found some bugs at fmc_15xx.h in lpc_chip_15xx folder, and modified as below (red characters).&lt;/P&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;&lt;P&gt;---fmc_15xx.h&lt;/P&gt;&lt;P&gt;+++fmc_15xx.h&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/**&lt;BR /&gt; * @brief FLASH Memory Controller Unit register block structure&lt;BR /&gt; */&lt;BR /&gt;typedef struct { /*!&amp;lt; FMC Structure */&lt;/P&gt;&lt;P&gt;-__I&amp;nbsp; uint32_t&amp;nbsp; RESERVED1[7];&lt;BR /&gt; +__I uint32_t RESERVED1[&lt;SPAN style="color: #ff0000;"&gt;8&lt;/SPAN&gt;];&lt;BR /&gt; __IO uint32_t FMSSTART;&lt;BR /&gt; __IO uint32_t FMSSTOP;&lt;BR /&gt; __I uint32_t RESERVED2;&lt;BR /&gt; __I uint32_t FMSW[1];&lt;BR /&gt;} LPC_FMC_T;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* Flash signature start and busy status bit */&lt;/P&gt;&lt;P&gt;-#define FMC_FLASHSIG_BUSY&amp;nbsp;&amp;nbsp; (1UL &amp;lt;&amp;lt; 17)&lt;/P&gt;&lt;P&gt;+#define FMC_FLASHSIG_BUSY (&lt;SPAN style="color: #ff0000;"&gt;1UL &amp;lt;&amp;lt; 31&lt;/SPAN&gt;)&lt;BR /&gt;/**&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;And it worked example code. &lt;/P&gt;&lt;P&gt;The code told the flash signature of example data is "Hex:0x2d4d6544".&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Next I made original calculate code from User Manual algo (page550).&lt;/P&gt;&lt;P&gt;But it didn't match the result, the calculated result was "Hex:0x4ef39cd5".&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;So I searched LPC forum and found this thread &lt;A href="https://community.nxp.com/thread/440610"&gt;LPC11U6X Flash Signature&lt;/A&gt; .&lt;/P&gt;&lt;P&gt;I didn't know and not use LPC11u6X , but I read User Manual about LPC11U6X &lt;A class="link-titled" href="https://www.nxp.com/docs/en/user-guide/UM10732.pdf" title="https://www.nxp.com/docs/en/user-guide/UM10732.pdf"&gt;https://www.nxp.com/docs/en/user-guide/UM10732.pdf&lt;/A&gt;.&lt;/P&gt;&lt;P&gt;In Chapter 25(from page425), LPC11U6X has almost same peripherals for flash signature as LPC15xx.&lt;/P&gt;&lt;P&gt;In the thread, The user who original asked found that LPC11U6X have not 32bit generator only, but also 128bit generator in it.&lt;/P&gt;&lt;P&gt;And the result from 128bit mbed LPC signature generator code &lt;A class="link-titled" href="https://os.mbed.com/forum/mbed/topic/4557/" title="https://os.mbed.com/forum/mbed/topic/4557/"&gt;LPC Signature Generator | Mbed&lt;/A&gt;&amp;nbsp; was matched .&lt;/P&gt;&lt;P&gt;So I implemented and test the code, But the result was not matched.&lt;/P&gt;&lt;P&gt;&amp;nbsp;I'm very confused, I cannot understand the algo.&lt;/P&gt;&lt;P&gt;Please help.&lt;/P&gt;&lt;P&gt;Thank you.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I attached my modified code "flashiap.c".&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;&lt;P&gt;/*&lt;BR /&gt; * @brief FLASH IAP programming &amp;amp; FLASH signature example using IAP commands&lt;BR /&gt; * to write to FLASH memory and a FLASH signature generator&lt;BR /&gt; *&lt;BR /&gt; * @note&lt;BR /&gt; * Copyright(C) NXP Semiconductors, 2013&lt;BR /&gt; * All rights reserved.&lt;BR /&gt; *&lt;BR /&gt; * @par&lt;BR /&gt; * Software that is described herein is for illustrative purposes only&lt;BR /&gt; * which provides customers with programming information regarding the&lt;BR /&gt; * LPC products. This software is supplied "AS IS" without any warranties of&lt;BR /&gt; * any kind, and NXP Semiconductors and its licensor disclaim any and&lt;BR /&gt; * all warranties, express or implied, including all implied warranties of&lt;BR /&gt; * merchantability, fitness for a particular purpose and non-infringement of&lt;BR /&gt; * intellectual property rights. NXP Semiconductors assumes no responsibility&lt;BR /&gt; * or liability for the use of the software, conveys no license or rights under any&lt;BR /&gt; * patent, copyright, mask work right, or any other intellectual property rights in&lt;BR /&gt; * or to any products. NXP Semiconductors reserves the right to make changes&lt;BR /&gt; * in the software without notification. NXP Semiconductors also makes no&lt;BR /&gt; * representation or warranty that such application will be suitable for the&lt;BR /&gt; * specified use without further testing or modification.&lt;BR /&gt; *&lt;BR /&gt; * @par&lt;BR /&gt; * Permission to use, copy, modify, and distribute this software and its&lt;BR /&gt; * documentation is hereby granted, under NXP Semiconductors' and its&lt;BR /&gt; * licensor's relevant copyrights in the software, without fee, provided that it&lt;BR /&gt; * is used in conjunction with NXP Semiconductors microcontrollers. This&lt;BR /&gt; * copyright, permission, and disclaimer notice must appear in all copies of&lt;BR /&gt; * this code.&lt;BR /&gt; */&lt;/P&gt;&lt;P&gt;#include "board.h"&lt;BR /&gt;#include &amp;lt;stdio.h&amp;gt;&lt;/P&gt;&lt;P&gt;/*****************************************************************************&lt;BR /&gt; * Private types/enumerations/variables&lt;BR /&gt; ****************************************************************************/&lt;/P&gt;&lt;P&gt;#define TICKRATE_HZ (10) /* 10 ticks per second */&lt;/P&gt;&lt;P&gt;/* Last sector address */&lt;BR /&gt;#define START_ADDR_LAST_SECTOR 0x0003F000&lt;/P&gt;&lt;P&gt;/* LAST SECTOR */&lt;BR /&gt;#define IAP_LAST_SECTOR 63&lt;/P&gt;&lt;P&gt;/* Number of bytes to be written to the last sector */&lt;BR /&gt;#define IAP_NUM_BYTES_TO_WRITE 1024&lt;/P&gt;&lt;P&gt;/* Size of each sector */&lt;BR /&gt;#define SECTOR_SIZE 4096&lt;/P&gt;&lt;P&gt;/* Number elements in array */&lt;BR /&gt;#define ARRAY_ELEMENTS (IAP_NUM_BYTES_TO_WRITE / sizeof(uint32_t))&lt;/P&gt;&lt;P&gt;/* Data array to write to flash */&lt;BR /&gt;static uint32_t src_iap_array_data[ARRAY_ELEMENTS];&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #ff0000;"&gt;typedef struct {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #ff0000;"&gt; unsigned int word0; //Word 0 of 128-bit signature (bits 31 to 0).&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #ff0000;"&gt; unsigned int word1; //Word 1 of 128-bit signature (bits 63 to 32).&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #ff0000;"&gt; unsigned int word2; //Word 2 of 128-bit signature (bits 95 to 64).&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #ff0000;"&gt; unsigned int word3; //Word 3 of 128-bit signature (bits 127 to 96).&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #ff0000;"&gt;} FLASH_SIG_Type;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #ff0000;"&gt;FLASH_SIG_Type software_sig;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;/*****************************************************************************&lt;BR /&gt; * Public types/enumerations/variables&lt;BR /&gt; ****************************************************************************/&lt;/P&gt;&lt;P&gt;/*****************************************************************************&lt;BR /&gt; * Private functions&lt;BR /&gt; ****************************************************************************/&lt;/P&gt;&lt;P&gt;/*****************************************************************************&lt;BR /&gt; * Public functions&lt;BR /&gt; ****************************************************************************/&lt;/P&gt;&lt;P&gt;/**&lt;BR /&gt; * @brief Handle interrupt from SysTick timer&lt;BR /&gt; * @return Nothing&lt;BR /&gt; */&lt;BR /&gt;void SysTick_Handler(void)&lt;BR /&gt;{&lt;BR /&gt; Board_LED_Toggle(0);&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;/**&lt;BR /&gt; * @brief Main program body&lt;BR /&gt; * @return Always returns 0&lt;BR /&gt; */&lt;BR /&gt;int main(void)&lt;BR /&gt;{&lt;BR /&gt; uint32_t i;&lt;BR /&gt; uint8_t ret_code;&lt;BR /&gt; uint32_t part_id;&lt;/P&gt;&lt;P&gt;/* Generic Initialization */&lt;BR /&gt; SystemCoreClockUpdate();&lt;BR /&gt; Board_Init();&lt;BR /&gt; Board_LED_Set(0, false);&lt;/P&gt;&lt;P&gt;/* Enable SysTick Timer */&lt;BR /&gt; SysTick_Config(SystemCoreClock / TICKRATE_HZ);&lt;/P&gt;&lt;P&gt;/* Initialize the array data to be written to FLASH */&lt;BR /&gt; for (i = 0; i &amp;lt; ARRAY_ELEMENTS; i++) {&lt;BR /&gt; src_iap_array_data[i] = 0x11223340 + i;&lt;BR /&gt; }&lt;/P&gt;&lt;P&gt;/* Read Part Identification Number*/&lt;BR /&gt; part_id = Chip_IAP_ReadPID();&lt;BR /&gt; DEBUGOUT("Part ID is: %x\r\n", part_id);&lt;/P&gt;&lt;P&gt;/* Disable interrupt mode so it doesn't fire during FLASH updates */&lt;BR /&gt; __disable_irq();&lt;/P&gt;&lt;P&gt;/* IAP Flash programming */&lt;BR /&gt; /* Prepare to write/erase the last sector */&lt;BR /&gt; ret_code = Chip_IAP_PreSectorForReadWrite(IAP_LAST_SECTOR, IAP_LAST_SECTOR);&lt;/P&gt;&lt;P&gt;/* Error checking */&lt;BR /&gt; if (ret_code != IAP_CMD_SUCCESS) {&lt;BR /&gt; DEBUGOUT("Command failed to execute, return code is: %x\r\n", ret_code);&lt;BR /&gt; }&lt;/P&gt;&lt;P&gt;/* Erase the last sector */&lt;BR /&gt; ret_code = Chip_IAP_EraseSector(IAP_LAST_SECTOR, IAP_LAST_SECTOR);&lt;/P&gt;&lt;P&gt;/* Error checking */&lt;BR /&gt; if (ret_code != IAP_CMD_SUCCESS) {&lt;BR /&gt; DEBUGOUT("Command failed to execute, return code is: %x\r\n", ret_code);&lt;BR /&gt; }&lt;/P&gt;&lt;P&gt;/* Prepare to write/erase the last sector */&lt;BR /&gt; ret_code = Chip_IAP_PreSectorForReadWrite(IAP_LAST_SECTOR, IAP_LAST_SECTOR);&lt;/P&gt;&lt;P&gt;/* Error checking */&lt;BR /&gt; if (ret_code != IAP_CMD_SUCCESS) {&lt;BR /&gt; DEBUGOUT("Command failed to execute, return code is: %x\r\n", ret_code);&lt;BR /&gt; }&lt;/P&gt;&lt;P&gt;/* Write to the last sector */&lt;BR /&gt; ret_code = Chip_IAP_CopyRamToFlash(START_ADDR_LAST_SECTOR, src_iap_array_data, IAP_NUM_BYTES_TO_WRITE);&lt;/P&gt;&lt;P&gt;/* Error checking */&lt;BR /&gt; if (ret_code != IAP_CMD_SUCCESS) {&lt;BR /&gt; DEBUGOUT("Command failed to execute, return code is: %x\r\n", ret_code);&lt;BR /&gt; }&lt;/P&gt;&lt;P&gt;/* Re-enable interrupt mode */&lt;BR /&gt; __enable_irq();&lt;/P&gt;&lt;P&gt;/* Start the signature generator for the last sector */&lt;BR /&gt; Chip_FMC_ComputeSignatureBlocks(START_ADDR_LAST_SECTOR, (SECTOR_SIZE / 16));&lt;/P&gt;&lt;P&gt;/* Check for signature geenration completion */&lt;BR /&gt; while (Chip_FMC_IsSignatureBusy()) {}&lt;/P&gt;&lt;P&gt;/* Get the generated FLASH signature value */&lt;BR /&gt; DEBUGOUT("Generated signature for the last sector is: %x \r\n", Chip_FMC_GetSignature(0));&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #ff0000;"&gt;/*&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #ff0000;"&gt; * my oroginal calc code&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #ff0000;"&gt; */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #ff0000;"&gt;uint32_t sign =0;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #ff0000;"&gt; uint32_t next_sign =0;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #ff0000;"&gt;uint32_t start_addr = START_ADDR_LAST_SECTOR;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #ff0000;"&gt; uint32_t end_addr = (START_ADDR_LAST_SECTOR + SECTOR_SIZE);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #ff0000;"&gt;for (uint32_t addr = start_addr; addr &amp;lt; end_addr ; addr+=sizeof(uint32_t))&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #ff0000;"&gt; {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #ff0000;"&gt; for (i=0;i&amp;lt;31 ;i++)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #ff0000;"&gt; {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #ff0000;"&gt; next_sign |= (*(uint32_t *)(addr) &amp;amp; (1UL &amp;lt;&amp;lt; i)) ^ ((sign &amp;amp; (1UL&amp;lt;&amp;lt;(i+1)) ) &amp;gt;&amp;gt; 1) ;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #ff0000;"&gt; }&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #ff0000;"&gt; next_sign |= (*(uint32_t *)(addr) &amp;amp; (1UL &amp;lt;&amp;lt; 31) ) ^ ((sign &amp;amp; (1UL &amp;lt;&amp;lt; 0) ) &amp;lt;&amp;lt; 31) ^ ((sign &amp;amp; (1UL&amp;lt;&amp;lt; 10) ) &amp;lt;&amp;lt; 21) ^ ((sign &amp;amp; (1UL&amp;lt;&amp;lt;30)) &amp;lt;&amp;lt; 1) ^ (sign &amp;amp; (1UL &amp;lt;&amp;lt;31));&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #ff0000;"&gt; sign = next_sign;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #ff0000;"&gt; next_sign = 0;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #ff0000;"&gt; }&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #ff0000;"&gt;/* Get the generated FLASH signature value */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #ff0000;"&gt; DEBUGOUT("Generated signature for the last sector is: %x \r\n", sign);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #ff0000;"&gt;/*&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #ff0000;"&gt; * Mbed LPC signature generator&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #ff0000;"&gt; */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #ff0000;"&gt;unsigned int startAddr = START_ADDR_LAST_SECTOR;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #ff0000;"&gt; unsigned int length = SECTOR_SIZE;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #ff0000;"&gt;FLASH_SIG_Type flashWord;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #ff0000;"&gt; FLASH_SIG_Type refSignature = {0, 0, 0, 0};&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #ff0000;"&gt; FLASH_SIG_Type nextSign;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #ff0000;"&gt; unsigned int* PageAddr = (unsigned int *)startAddr;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #ff0000;"&gt;for (unsigned int i = 0; i &amp;lt; (length &amp;gt;&amp;gt; 4); i++) {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #ff0000;"&gt; flashWord.word0 = *PageAddr;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #ff0000;"&gt; PageAddr++;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #ff0000;"&gt; flashWord.word1 = *PageAddr;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #ff0000;"&gt; PageAddr++;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #ff0000;"&gt; flashWord.word2 = *PageAddr;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #ff0000;"&gt; PageAddr++;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #ff0000;"&gt; flashWord.word3 = *PageAddr;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #ff0000;"&gt; PageAddr++;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #ff0000;"&gt;//Update 128 bit signature&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #ff0000;"&gt; nextSign.word0 = flashWord.word0 ^ refSignature.word0 &amp;gt;&amp;gt; 1 ^ refSignature.word1 &amp;lt;&amp;lt; 31;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #ff0000;"&gt; nextSign.word1 = flashWord.word1 ^ refSignature.word1 &amp;gt;&amp;gt; 1 ^ refSignature.word2 &amp;lt;&amp;lt; 31;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #ff0000;"&gt; nextSign.word2 = flashWord.word2 ^ refSignature.word2 &amp;gt;&amp;gt; 1 ^ refSignature.word3 &amp;lt;&amp;lt; 31;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #ff0000;"&gt; nextSign.word3 = flashWord.word3 ^ refSignature.word3 &amp;gt;&amp;gt; 1 ^&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #ff0000;"&gt; (refSignature.word0 &amp;amp; 1 &amp;lt;&amp;lt; 29) &amp;lt;&amp;lt; 2 ^&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #ff0000;"&gt; (refSignature.word0 &amp;amp; 1 &amp;lt;&amp;lt; 27) &amp;lt;&amp;lt; 4 ^&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #ff0000;"&gt; (refSignature.word0 &amp;amp; 1 &amp;lt;&amp;lt; 2) &amp;lt;&amp;lt; 29 ^&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #ff0000;"&gt; (refSignature.word0 &amp;amp; 1 &amp;lt;&amp;lt; 0) &amp;lt;&amp;lt; 31;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #ff0000;"&gt;//Point to the calculated value&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #ff0000;"&gt; refSignature.word0 = nextSign.word0;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #ff0000;"&gt; refSignature.word1 = nextSign.word1;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #ff0000;"&gt; refSignature.word2 = nextSign.word2;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #ff0000;"&gt; refSignature.word3 = nextSign.word3;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #ff0000;"&gt; }&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #ff0000;"&gt;//Copy the reference signature to the result pointer&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #ff0000;"&gt; software_sig.word0 = refSignature.word0;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #ff0000;"&gt; software_sig.word1 = refSignature.word1;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #ff0000;"&gt; software_sig.word2 = refSignature.word2;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #ff0000;"&gt; software_sig.word3 = refSignature.word3;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #ff0000;"&gt;DEBUGOUT("Calculated signature for the last sector is: %x \r\n", software_sig.word0);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;while (1) {&lt;BR /&gt; __WFI();&lt;BR /&gt; }&lt;/P&gt;&lt;P&gt;return 0;&lt;BR /&gt;}&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 22 Jan 2018 09:37:16 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1549-How-to-calculate-flash-signature-by-original-code/m-p/744248#M30015</guid>
      <dc:creator>fukudatakuya</dc:creator>
      <dc:date>2018-01-22T09:37:16Z</dc:date>
    </item>
    <item>
      <title>Re: LPC1549 How to calculate flash signature by original code?</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1549-How-to-calculate-flash-signature-by-original-code/m-p/744249#M30016</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;SPAN style="font-size: 15px;"&gt;Hi &lt;A _jive_internal="true" data-content-finding="Community" data-userid="291909" data-username="fukudatakuya" href="https://community.nxp.com/people/fukudatakuya"&gt;Fukuda Takuya&lt;/A&gt;，&lt;/SPAN&gt;&lt;/P&gt;&lt;DIV style="white-space: pre-wrap; text-align: left; line-height: 1.75; font-size: 14px;"&gt;&lt;SPAN style="font-family: 'Microsoft YaHei',STXihei; background-color: #ffffff; font-size: 15px;"&gt;Thank you for your interest in NXP Semiconductor products and&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV style="white-space: pre-wrap; text-align: left; line-height: 1.75; font-size: 14px;"&gt;&lt;SPAN style="font-family: 'Microsoft YaHei',STXihei; background-color: #ffffff; font-size: 15px;"&gt;the opportunity to serve you.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV style="white-space: pre-wrap; text-align: left; line-height: 1.75; font-size: 14px;"&gt;&lt;SPAN style="font-family: 'Microsoft YaHei',STXihei; background-color: #ffffff; font-size: 15px;"&gt;The flash signature generation algorithm which is illustrated in the &lt;A class="link-titled" href="https://os.mbed.com/forum/mbed/topic/4557/" title="https://os.mbed.com/forum/mbed/topic/4557/"&gt;LPC Signature Generator | Mbed&lt;/A&gt;&amp;nbsp; is correct.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV style="white-space: pre-wrap; text-align: left; line-height: 1.75; font-size: 14px;"&gt;&lt;SPAN style="font-family: 'Microsoft YaHei',STXihei; background-color: #ffffff; font-size: 15px;"&gt;I've tested it by myself.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV style="white-space: pre-wrap; text-align: left; line-height: 1.75; font-size: 14px;"&gt;&lt;P&gt;&lt;SPAN style="font-size: 15px;"&gt;This generator can produce a 128-bit signature from a range of flash memory.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 15px;"&gt;After signature generation, a 32-bit signature can be read from the FMSW0 register. The&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 15px;"&gt;32-bit signature reflects the corrected data read from the flash and the flash parity bits and&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 15px;"&gt;check bit values and User doesn't necessary to get the 128-bit signature.&lt;/SPAN&gt;&lt;/P&gt;&lt;DIV style="white-space: pre-wrap; text-align: left; line-height: 1.75; font-size: 14px;"&gt;&lt;P&gt;Have a great day,&lt;BR /&gt;TIC&lt;/P&gt;&lt;P style="min- padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;-----------------------------------------------------------------------------------------------------------------------&lt;BR /&gt;Note: If this post answers your question, please click the Correct Answer button. Thank you!&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 23 Jan 2018 02:06:14 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1549-How-to-calculate-flash-signature-by-original-code/m-p/744249#M30016</guid>
      <dc:creator>jeremyzhou</dc:creator>
      <dc:date>2018-01-23T02:06:14Z</dc:date>
    </item>
    <item>
      <title>Re: LPC1549 How to calculate flash signature by original code?</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1549-How-to-calculate-flash-signature-by-original-code/m-p/744250#M30017</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thank you, Jeremyzhou.&lt;/P&gt;&lt;P&gt;I made&amp;nbsp; some test codes, and could get signature match!&lt;/P&gt;&lt;P&gt;You are correct.&lt;/P&gt;&lt;P&gt;But it is very hard to find and very strange behaviour.&lt;/P&gt;&lt;P&gt;LPC1549 has 128-bit signature with algorithm as same as &lt;A class="link-titled" href="https://os.mbed.com/forum/mbed/topic/4557/" title="https://os.mbed.com/forum/mbed/topic/4557/"&gt;LPC Signature Generator | Mbed&lt;/A&gt; and &lt;A href="https://community.nxp.com/thread/440610"&gt;LPC11U6X Flash Signature&lt;/A&gt; .&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;But specifiable start and end address are aligned 128 bytes boundaries for LPC1549.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If the specified &lt;STRONG&gt;start address&lt;/STRONG&gt; is within the range from 0xXXXXXX00 to 0xXXXXXX7F, the address is changed to 0xXXXXXX&lt;STRONG&gt;00.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;The start address range is within from 0xXXXXXX80 to 0xXXXXXXFF,&amp;nbsp; it is set to 0xXXXXXX&lt;STRONG&gt;80.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The &lt;STRONG&gt;end address&lt;/STRONG&gt; is within the range from 0xXXXXXX00 to 0xXXXXXX7F, the address is changed to 0xXXXXXX&lt;STRONG&gt;7F&lt;/STRONG&gt;.&lt;/P&gt;&lt;P&gt;The end address range is within from 0xXXXXXX80 to 0xXXXXXXFF,&amp;nbsp; it is set to 0xXXXXXX&lt;STRONG&gt;FF&lt;/STRONG&gt;.&lt;/P&gt;&lt;P&gt;The signature is calculated within the changed address range (128 byte boundaries)&lt;/P&gt;&lt;P&gt;So we cannot calculate the exact target flash memory range.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;This means that the result of below code is same.&lt;/STRONG&gt;&lt;/P&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_FMC-&amp;gt;FMSSTART&amp;nbsp;&amp;nbsp; &amp;nbsp;= ((0x0003F000) &amp;gt;&amp;gt; 4);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;LPC_FMC-&amp;gt;FMSSTOP &amp;nbsp;&amp;nbsp; &amp;nbsp;= ((0x0003F000) &amp;gt;&amp;gt; 4) | FMC_FLASHSIG_BUSY;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;while (Chip_FMC_IsSignatureBusy()) {}&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;DEBUGOUT("Signature is: %x \r\n", &amp;nbsp;&amp;nbsp; &amp;nbsp;LPC_FMC-&amp;gt;FMSW[0]);&lt;P&gt;&lt;/P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;LPC_FMC-&amp;gt;FMSSTART&amp;nbsp;&amp;nbsp; &amp;nbsp;= ((0x0003F000) &amp;gt;&amp;gt; 4);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;LPC_FMC-&amp;gt;FMSSTOP &amp;nbsp;&amp;nbsp; &amp;nbsp;= ((0x0003F010) &amp;gt;&amp;gt; 4) | FMC_FLASHSIG_BUSY;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;while (Chip_FMC_IsSignatureBusy()) {}&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;DEBUGOUT("Signature is: %x \r\n", &amp;nbsp;&amp;nbsp; &amp;nbsp;LPC_FMC-&amp;gt;FMSW[0]);&lt;P&gt;&lt;/P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;LPC_FMC-&amp;gt;FMSSTART&amp;nbsp;&amp;nbsp; &amp;nbsp;= ((0x0003F000) &amp;gt;&amp;gt; 4);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;LPC_FMC-&amp;gt;FMSSTOP &amp;nbsp;&amp;nbsp; &amp;nbsp;= ((0x0003F07F) &amp;gt;&amp;gt; 4) | FMC_FLASHSIG_BUSY;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;while (Chip_FMC_IsSignatureBusy()) {}&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;DEBUGOUT("Signature is: %x \r\n", &amp;nbsp;&amp;nbsp; &amp;nbsp;LPC_FMC-&amp;gt;FMSW[0]);&lt;P&gt;&lt;/P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;LPC_FMC-&amp;gt;FMSSTART&amp;nbsp;&amp;nbsp; &amp;nbsp;= ((0x0003F020) &amp;gt;&amp;gt; 4);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;LPC_FMC-&amp;gt;FMSSTOP &amp;nbsp;&amp;nbsp; &amp;nbsp;= ((0x0003F07F) &amp;gt;&amp;gt; 4) | FMC_FLASHSIG_BUSY;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;while (Chip_FMC_IsSignatureBusy()) {}&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;DEBUGOUT("Signature is: %x \r\n", &amp;nbsp;&amp;nbsp; &amp;nbsp;LPC_FMC-&amp;gt;FMSW[0]);&lt;/BLOCKQUOTE&gt;&lt;P&gt;Thank you for your answer, Jeremyzhou.&lt;/P&gt;&lt;P&gt;I can understand it.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 23 Jan 2018 05:12:23 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1549-How-to-calculate-flash-signature-by-original-code/m-p/744250#M30017</guid>
      <dc:creator>fukudatakuya</dc:creator>
      <dc:date>2018-01-23T05:12:23Z</dc:date>
    </item>
    <item>
      <title>Re: LPC1549 How to calculate flash signature by original code?</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1549-How-to-calculate-flash-signature-by-original-code/m-p/744251#M30018</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi &lt;SPAN class=""&gt;&lt;A _jive_internal="true" data-content-finding="Community" data-userid="291909" data-username="fukudatakuya" href="https://community.nxp.com/people/fukudatakuya"&gt;Fukuda Takuya&lt;/A&gt;&lt;/SPAN&gt;,&lt;/P&gt;&lt;P&gt;Thanks for your reply.&lt;/P&gt;&lt;P&gt;I think the &lt;STRONG&gt;start and end address are aligned on 16 bytes boundary , not aligned on 128 bytes.&lt;/STRONG&gt;&lt;BR /&gt;Have a great day,&lt;BR /&gt;TIC&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;-----------------------------------------------------------------------------------------------------------------------&lt;BR /&gt;Note: If this post answers your question, please click the Correct Answer button. Thank you!&lt;BR /&gt;-----------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 24 Jan 2018 06:35:54 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1549-How-to-calculate-flash-signature-by-original-code/m-p/744251#M30018</guid>
      <dc:creator>jeremyzhou</dc:creator>
      <dc:date>2018-01-24T06:35:54Z</dc:date>
    </item>
    <item>
      <title>Re: LPC1549 How to calculate flash signature by original code?</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1549-How-to-calculate-flash-signature-by-original-code/m-p/744252#M30019</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi, jeremyzhou.&lt;/P&gt;&lt;P&gt;That is the point why I cannot match the result, exactly.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I attach MCUXpresso ide debug console pic.&lt;/P&gt;&lt;P&gt;At first, I write sample data from 0x0003F000.&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="memory.jpg"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/24626i5EC7856F6B7A7B00/image-size/large?v=v2&amp;amp;px=999" role="button" title="memory.jpg" alt="memory.jpg" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;Next, I set start address 0x0003F000.&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="1.jpg"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/24654iDBC6F4713441B433/image-size/large?v=v2&amp;amp;px=999" role="button" title="1.jpg" alt="1.jpg" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="2.jpg"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/24696iD433CEC22360F2F1/image-size/large?v=v2&amp;amp;px=999" role="button" title="2.jpg" alt="2.jpg" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;And I set end address 0x0003F000( It's same as start address.), but not set STRTBIST bit yet.&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="3.jpg"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/24628i17DC5FEAA09A8C0D/image-size/large?v=v2&amp;amp;px=999" role="button" title="3.jpg" alt="3.jpg" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;So the end address is set to 0x0003F07X , &lt;STRONG&gt;aligned on 128 bytes automatically.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;I set STRTBIST bit, then the signature is generated.&lt;span class="lia-inline-image-display-wrapper" image-alt="4.jpg"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/24733i07874DB4E874CFB9/image-size/large?v=v2&amp;amp;px=999" role="button" title="4.jpg" alt="4.jpg" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;I set end address to 0x0003F010, but it set to 0x0003F07X automatically.&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="7.jpg"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/24790i81681229349193F8/image-size/large?v=v2&amp;amp;px=999" role="button" title="7.jpg" alt="7.jpg" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;And the generated signature is same.&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="8.jpg"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/24629i54AA535B8F92E6BF/image-size/large?v=v2&amp;amp;px=999" role="button" title="8.jpg" alt="8.jpg" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;I set start address to 0x0003F020, but it set to 0x0003F000 automatically, and generated signature is same also.&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="11.jpg"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/24824i20353826FCF527C3/image-size/large?v=v2&amp;amp;px=999" role="button" title="11.jpg" alt="11.jpg" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;At the last, start address to 0x0003F120, end address to 0x0003F230, but start is changed to 0x0003F100 and end is to 0x0003F27X automatically.&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="12.jpg"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/25036i92BBD50DA56852A4/image-size/large?v=v2&amp;amp;px=999" role="button" title="12.jpg" alt="12.jpg" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="13.jpg"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/24957i25464D191533FEF4/image-size/large?v=v2&amp;amp;px=999" role="button" title="13.jpg" alt="13.jpg" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="14.jpg"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/25000i946AC422015D8426/image-size/large?v=v2&amp;amp;px=999" role="button" title="14.jpg" alt="14.jpg" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;So I think the &lt;STRONG&gt;start and end address are aligned on 128 bytes boundary for LPC15XX.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 24 Jan 2018 08:49:01 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1549-How-to-calculate-flash-signature-by-original-code/m-p/744252#M30019</guid>
      <dc:creator>fukudatakuya</dc:creator>
      <dc:date>2018-01-24T08:49:01Z</dc:date>
    </item>
    <item>
      <title>Re: LPC1549 How to calculate flash signature by original code?</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1549-How-to-calculate-flash-signature-by-original-code/m-p/744253#M30020</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi &lt;SPAN class=""&gt;&lt;A _jive_internal="true" class="" data-content-finding="Community" data-userid="291909" data-username="fukudatakuya" href="https://community.nxp.com/people/fukudatakuya"&gt;Fukuda Takuya&lt;/A&gt;&lt;/SPAN&gt;,&lt;/P&gt;&lt;P&gt;Thanks for your clarification.&lt;BR /&gt;Have a great day,&lt;BR /&gt;TIC&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;-----------------------------------------------------------------------------------------------------------------------&lt;BR /&gt;Note: If this post answers your question, please click the Correct Answer button. Thank you!&lt;BR /&gt;-----------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 31 Jan 2018 06:13:42 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1549-How-to-calculate-flash-signature-by-original-code/m-p/744253#M30020</guid>
      <dc:creator>jeremyzhou</dc:creator>
      <dc:date>2018-01-31T06:13:42Z</dc:date>
    </item>
  </channel>
</rss>

