<?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: TWR-K60N512 Save Data e.g. Calibration of LCD in Flash Memory (nonvolatile) in Kinetis Microcontrollers</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/TWR-K60N512-Save-Data-e-g-Calibration-of-LCD-in-Flash-Memory/m-p/173281#M1335</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV class="lia-message-body lia-component-body"&gt;&lt;DIV class="lia-message-body-content"&gt;&lt;DIV&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The NormalDemo has a&amp;nbsp;pFlashEraseAllBlock command that will cause exception if you run it from flash.&lt;/P&gt;&lt;P&gt;If you want to use that from flash, you have to modify the demo so it doesn't touch the portion you are using for your app.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Addtional information:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;This type of flash doesn't not support read-while-write operation, so you can access the 2nd (upper 256k) bank only while your code is in 1st bank.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;To access flash area that is in the same bank with your program, you have to put the code that exexute flash command to RAM. It is only a portion in FlashCommandSequence function. You can choose to put only that some commands&lt;/P&gt;&lt;PRE&gt;/* clear CCIF bit */
    REG_WRITE(PSSDConfig-&amp;gt;ftflRegBase + FTFL_SSD_FSTAT_OFFSET, FTFL_SSD_FSTAT_CCIF);

    /* check CCIF bit */
    while(FALSE == (REG_BIT_TEST(PSSDConfig-&amp;gt;ftflRegBase + FTFL_SSD_FSTAT_OFFSET, FTFL_SSD_FSTAT_CCIF)))
    {
        /* wait till CCIF bit is set */
        /* serve callback function if counter reaches limitation */
        if(NULL_CALLBACK != PSSDConfig-&amp;gt;CallBack)
        {
            (PSSDConfig-&amp;gt;CallBack)();
        }
        else
        {
            /* do nothing */
        }
    }&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;, or you can put the whole&amp;nbsp;FlashCommandSequence function into RAM.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The procedure to put a function into RAM in Codewarrior was&amp;nbsp; discussed some where else in this forum:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV&gt;&lt;EM&gt;1.) &amp;nbsp; Modify the linker command file to add this:&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;EM&gt;_ROMCodeToCopy = ___ROM_AT + SIZEOF(.app_data);&amp;nbsp;&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;EM&gt;.copyToRAM: AT(_ROMCodeToCopy) {&amp;nbsp;&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;EM&gt;. = ALIGN (0x4);&amp;nbsp;&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;EM&gt;__START_COPYTORAM = .;&amp;nbsp;&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;EM&gt;*(CopyToRAM)&amp;nbsp;&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;EM&gt;__END_COPYTORAM = .;&amp;nbsp;&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;EM&gt;} &amp;gt;&amp;gt; m_data&lt;/EM&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;EM&gt;2.) &amp;nbsp;You have to add some pragmas around code you want to execute from ram (as code warrior does not support the __ramfunc keyword like IAR). &amp;nbsp; &amp;nbsp;The set_sys_dividers in the MCG.c file needs to run from ram.&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;EM&gt;#pragma section CopyToRAM begin&lt;/EM&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;EM&gt;void set_sys_dividers(uint32 outdiv1, uint32 outdiv2, uint32 outdiv3, uint32 outdiv4)&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;EM&gt;{&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;EM&gt;..&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;EM&gt;...&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;EM&gt;..&lt;/EM&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;P&gt;&lt;EM&gt;&lt;SPAN style="border-collapse: collapse; color: #202020; font-family: 'Droid Sans',arial,sans-serif; font-size: 13px; line-height: normal;"&gt;}&lt;/SPAN&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&lt;SPAN style="border-collapse: collapse; color: #202020; font-family: 'Droid Sans',arial,sans-serif; font-size: 13px; line-height: normal;"&gt;#pragma section CopyToRAM end&lt;/SPAN&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="border-collapse: collapse; color: #202020; font-family: 'Droid Sans',arial,sans-serif; font-size: 13px; line-height: normal;"&gt;I tested it with the whole FlashCommandSequence in RAM and it works fine.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="border-collapse: collapse; color: #202020; font-family: 'Droid Sans',arial,sans-serif; font-size: 13px; line-height: normal;"&gt;Regards&lt;/SPAN&gt;&lt;EM&gt;&lt;SPAN style="border-collapse: collapse; color: #202020; font-family: 'Droid Sans',arial,sans-serif; font-size: 13px; line-height: normal;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/EM&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 29 Oct 2020 09:21:44 GMT</pubDate>
    <dc:creator>Dekiru</dc:creator>
    <dc:date>2020-10-29T09:21:44Z</dc:date>
    <item>
      <title>TWR-K60N512 Save Data e.g. Calibration of LCD in Flash Memory (nonvolatile)</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/TWR-K60N512-Save-Data-e-g-Calibration-of-LCD-in-Flash-Memory/m-p/173270#M1324</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;because of,&amp;nbsp; that the K60N512 has no Data Flash Memory.&lt;/P&gt;&lt;P&gt;Can I save Data, for example the Calibrate the TouchScreen﻿ values nonvolatile.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Best Regards&lt;/P&gt;&lt;P&gt;Thomas&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 10 Oct 2011 03:50:42 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/TWR-K60N512-Save-Data-e-g-Calibration-of-LCD-in-Flash-Memory/m-p/173270#M1324</guid>
      <dc:creator>Thommi_Tulpe</dc:creator>
      <dc:date>2011-10-10T03:50:42Z</dc:date>
    </item>
    <item>
      <title>Re: TWR-K60N512 Save Data e.g. Calibration of LCD in Flash Memory (nonvolatile)</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/TWR-K60N512-Save-Data-e-g-Calibration-of-LCD-in-Flash-Memory/m-p/173271#M1325</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Thomas&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The K60 has Flash with 2k sector size. This can thus be simply used as data Flash without the need for other types.&lt;/P&gt;&lt;P&gt;The only restriction when writing to memory is that the write size should be long word length.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Mark&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 10 Oct 2011 17:24:17 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/TWR-K60N512-Save-Data-e-g-Calibration-of-LCD-in-Flash-Memory/m-p/173271#M1325</guid>
      <dc:creator>mjbcswitzerland</dc:creator>
      <dc:date>2011-10-10T17:24:17Z</dc:date>
    </item>
    <item>
      <title>Re: TWR-K60N512 Save Data e.g. Calibration of LCD in Flash Memory (nonvolatile)</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/TWR-K60N512-Save-Data-e-g-Calibration-of-LCD-in-Flash-Memory/m-p/173272#M1326</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Mark,&lt;/P&gt;&lt;P&gt;thank you&amp;nbsp; for help.&lt;/P&gt;&lt;P&gt;For the MC56F8323 i have a module called IFsh.c to handle the Flash.&lt;/P&gt;&lt;P&gt;I can erase sectors with IFsh1_EraseSector(Address);&lt;/P&gt;&lt;P&gt;And after that I can write words with IFsh1_﻿SetWordFlash.&lt;/P&gt;&lt;P&gt;Have you got something like that for the K60N512 from the tower ?&lt;/P&gt;&lt;P&gt;On which address begins the flash data memory ?&lt;/P&gt;&lt;P&gt;I need this for a bare metal project.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you&lt;/P&gt;&lt;P&gt;Thomas&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 11 Oct 2011 14:37:16 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/TWR-K60N512-Save-Data-e-g-Calibration-of-LCD-in-Flash-Memory/m-p/173272#M1326</guid>
      <dc:creator>Thommi_Tulpe</dc:creator>
      <dc:date>2011-10-11T14:37:16Z</dc:date>
    </item>
    <item>
      <title>Re: TWR-K60N512 Save Data e.g. Calibration of LCD in Flash Memory (nonvolatile)</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/TWR-K60N512-Save-Data-e-g-Calibration-of-LCD-in-Flash-Memory/m-p/173273#M1327</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Thommi&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;You have the flash drivers for Kinetis, here:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;﻿﻿&lt;A href="http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=K60&amp;amp;nodeId=01624698C9&amp;amp;fpsp=1&amp;amp;tab=Design_Tools_Tab#" rel="nofollow" target="_blank"&gt;C90TFS_FLASH_DRIVER&lt;/A&gt;: TFS Flash Driver Software.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;﻿﻿&lt;/P&gt;&lt;P&gt;&lt;A href="http://cache.freescale.com/files/32bit/software/C90TFS_FLASH_DRIVER.zip?fpsp=1&amp;amp;WT_TYPE=Device" rel="nofollow" target="_blank"&gt;http://cache.freescale.com/files/32bit/software/C90TFS_FLASH_DRIVER.zip?fpsp=1&amp;amp;WT_TYPE=Device&lt;/A&gt; Drivers&amp;amp;WT_VENDOR=FREESCALE&amp;amp;WT_FILE_FORMAT=zip&amp;amp;WT_ASSET=Downloads&amp;amp;sr=16&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Best Regards,&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 11 Oct 2011 19:35:22 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/TWR-K60N512-Save-Data-e-g-Calibration-of-LCD-in-Flash-Memory/m-p/173273#M1327</guid>
      <dc:creator>LuisCasado</dc:creator>
      <dc:date>2011-10-11T19:35:22Z</dc:date>
    </item>
    <item>
      <title>Re: TWR-K60N512 Save Data e.g. Calibration of LCD in Flash Memory (nonvolatile)</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/TWR-K60N512-Save-Data-e-g-Calibration-of-LCD-in-Flash-Memory/m-p/173274#M1328</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thomas&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The uTasker project includes flash drivers for the Kinetis internal Flash as well as for various other external Flash types (I2C, SPI, parallel via FlexBus).&lt;/P&gt;&lt;P&gt;It also allows you to work with the flash as simple file system (for FAT compatibilily a second file system can also be used but the simple one is very often adequate, faster and requires much less code).&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The internal Flash in your device starts at 0x00000000. The file system (or low level read/write/erase routines) allow multiple memory types and multiple devices (eg. often multiple SPI Flash are connected to greatly extend Flash with minimum space requirements and cost) to be worked with without needing to know which type is actually being accessed in the file system memory map, or which one of several devices is being accessed physically. This is all described in detail in the following documents:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.utasker.com/docs/uTasker/uTaskerFileSystem_Revision1.pdf" rel="nofollow" target="_blank"&gt;http://www.utasker.com/docs/uTasker/uTaskerFileSystem_Revision1.pdf&lt;/A&gt;﻿&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.utasker.com/docs/uTasker/uTaskerFileSystem_3.PDF" rel="nofollow" target="_blank"&gt;http://www.utasker.com/docs/uTasker/uTaskerFileSystem_3.PDF&lt;/A&gt;﻿&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.utasker.com/docs/uTasker/uTaskerFileSystemSPI_FLASH_003.PDF" rel="nofollow" target="_blank"&gt;http://www.utasker.com/docs/uTasker/uTaskerFileSystemSPI_FLASH_003.PDF&lt;/A&gt;﻿&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Mark&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 11 Oct 2011 20:27:36 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/TWR-K60N512-Save-Data-e-g-Calibration-of-LCD-in-Flash-Memory/m-p/173274#M1328</guid>
      <dc:creator>mjbcswitzerland</dc:creator>
      <dc:date>2011-10-11T20:27:36Z</dc:date>
    </item>
    <item>
      <title>Re: TWR-K60N512 Save Data e.g. Calibration of LCD in Flash Memory (nonvolatile)</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/TWR-K60N512-Save-Data-e-g-Calibration-of-LCD-in-Flash-Memory/m-p/173275#M1329</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Luis,&lt;/P&gt;&lt;P&gt;thank you for the link.&lt;/P&gt;&lt;P&gt;I did not find a demo for the CodeWarrior 10.1.&lt;/P&gt;&lt;P&gt;I think its for The IAR Workbench.&lt;/P&gt;&lt;P&gt;The CodeWarrior demo is only for the MCF51JF128﻿.&lt;/P&gt;&lt;P&gt;I need the flash driver for the TWR-K60N512 and the CW10.1&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 12 Oct 2011 01:31:21 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/TWR-K60N512-Save-Data-e-g-Calibration-of-LCD-in-Flash-Memory/m-p/173275#M1329</guid>
      <dc:creator>Thommi_Tulpe</dc:creator>
      <dc:date>2011-10-12T01:31:21Z</dc:date>
    </item>
    <item>
      <title>Re: TWR-K60N512 Save Data e.g. Calibration of LCD in Flash Memory (nonvolatile)</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/TWR-K60N512-Save-Data-e-g-Calibration-of-LCD-in-Flash-Memory/m-p/173276#M1330</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Luis, hello Mark,&lt;/P&gt;&lt;P&gt;I have the K60N512 Tower and so i think i have following flash derivate:&lt;/P&gt;&lt;P&gt;(FTFL_KX_512K_0K_0K&amp;nbsp; == FLASH_DERIVATIVE)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Endianness */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #define ENDIANNESS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LITTLE_ENDIAN&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* cpu core */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #define CPU_CORE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ARM_CM4&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* FTFL module base */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #define FTFL_REG_BASE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x40020000&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #define DFLASH_IFR_BASE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0xFFFFFFFF&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* unused */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #define PFLASH_BLOCK_BASE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x00000000&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #define DEFLASH_BLOCK_BASE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0xFFFFFFFF&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* There is not DFlash */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #define EERAM_BLOCK_BASE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x14000000&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Flash sector size */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #define FTFL_SECTOR_SIZE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x00000800&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* 2 KB size */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #define PBLOCK_SIZE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x00080000&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* 512 KB size */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #define DEBLOCK_SIZE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x00000000&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* 0 KB size */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #define EERAM_BLOCK_SIZE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x00001000&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* 4 KB size */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;This derivate has no d flash. Can i save my values in a special space of the program flash ?&lt;/P&gt;&lt;P&gt;Is the P Flash protected ?&lt;/P&gt;&lt;P&gt;Can I import the SSD to my project (add the .c files and include the .h files) ? And than I can read and write to the flash.&lt;/P&gt;&lt;P&gt;The demo for kinetis K60 and K40 in the C90TFS folder is only for the IAR Workbench.&lt;/P&gt;&lt;P&gt;Have you got a demo for the CodeWarrior ?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Many Thanks&lt;/P&gt;&lt;P&gt;Thomas&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 12 Oct 2011 19:58:31 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/TWR-K60N512-Save-Data-e-g-Calibration-of-LCD-in-Flash-Memory/m-p/173276#M1330</guid>
      <dc:creator>Thommi_Tulpe</dc:creator>
      <dc:date>2011-10-12T19:58:31Z</dc:date>
    </item>
    <item>
      <title>Re: TWR-K60N512 Save Data e.g. Calibration of LCD in Flash Memory (nonvolatile)</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/TWR-K60N512-Save-Data-e-g-Calibration-of-LCD-in-Flash-Memory/m-p/173277#M1331</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I think there is not any working example for CW10.1 yet.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Yes, you can save your data in P-Flash as well. Just reserve a flash page for that and remove that page from code in linker file.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Best Regards,&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 13 Oct 2011 19:40:49 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/TWR-K60N512-Save-Data-e-g-Calibration-of-LCD-in-Flash-Memory/m-p/173277#M1331</guid>
      <dc:creator>LuisCasado</dc:creator>
      <dc:date>2011-10-13T19:40:49Z</dc:date>
    </item>
    <item>
      <title>Re: TWR-K60N512 Save Data e.g. Calibration of LCD in Flash Memory (nonvolatile)</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/TWR-K60N512-Save-Data-e-g-Calibration-of-LCD-in-Flash-Memory/m-p/173278#M1332</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hallo Luis,&lt;/P&gt;&lt;P&gt;thank you for your request.&lt;/P&gt;&lt;P&gt;First I copied the header files in the folder of my project headers.&lt;/P&gt;&lt;P&gt;Than I added the .c files to my project. I took the code of the NormalDemo.c in my main program.&lt;/P&gt;&lt;P&gt;I can compile my project, but it will not work.&lt;/P&gt;&lt;P&gt;The programcounter jumps in the kinetis_sysinit.c voit isr_default(void)&lt;/P&gt;&lt;P&gt;How do I have to change the .lcf-file.&lt;/P&gt;&lt;P&gt;Do I have to change the length of m_text e.g. in LENGTH = 0x00040000 (256K) instead of 0x00080000 (512K).&lt;/P&gt;&lt;P&gt;So I think I have 256K for D-Flash.&lt;/P&gt;&lt;P&gt;Now I think I can take the NormalDemo.c code of the K40 for my K60N512 project because I have the same P and D Flash as ihe K40X256. Is that correct ?&lt;/P&gt;&lt;P&gt;In the demo project they took the program code in the RAM. I want to lokate it in the flash. Do I have to change something else.&lt;/P&gt;&lt;P&gt;I only need the code for erase, write and read the D-Flash.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Hope you can help&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thomas&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 14 Oct 2011 19:51:14 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/TWR-K60N512-Save-Data-e-g-Calibration-of-LCD-in-Flash-Memory/m-p/173278#M1332</guid>
      <dc:creator>Thommi_Tulpe</dc:creator>
      <dc:date>2011-10-14T19:51:14Z</dc:date>
    </item>
    <item>
      <title>Re: TWR-K60N512 Save Data e.g. Calibration of LCD in Flash Memory (nonvolatile)</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/TWR-K60N512-Save-Data-e-g-Calibration-of-LCD-in-Flash-Memory/m-p/173279#M1333</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;You can make the flash driver running on CW10.1 as below:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;- Take the helloworld example in CW installed folder: \Freescale\CW MCU v10.1\MCU\CodeWarrior_Examples\ARM_Examples\k60\hello_world&lt;/P&gt;&lt;P&gt;- Add driver sources (\Freescale\Standard Software Driver vBeta025\C90TFS\drvsrc) in to that project. Remember to add Paths to project setting&lt;/P&gt;&lt;P&gt;- Add demo source file (NormalDemo.c and&amp;nbsp;NormalDemo.f for example) to the project. Then change main function of the&amp;nbsp;NormalDemo to a different name, and call it in helloworld's main function.&lt;/P&gt;&lt;P&gt;- Change Flash devirative type in SSD_FTFL.h to the value for K60N512 (I assume you want to run the example on TWR-K60N512)&lt;/P&gt;&lt;PRE&gt;/* Derivative selection */#define FLASH_DERIVATIVE            FTFL_KX_512K_0K_0K&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;That is all. Good luck.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 29 Oct 2020 09:21:42 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/TWR-K60N512-Save-Data-e-g-Calibration-of-LCD-in-Flash-Memory/m-p/173279#M1333</guid>
      <dc:creator>Dekiru</dc:creator>
      <dc:date>2020-10-29T09:21:42Z</dc:date>
    </item>
    <item>
      <title>Re: TWR-K60N512 Save Data e.g. Calibration of LCD in Flash Memory (nonvolatile)</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/TWR-K60N512-Save-Data-e-g-Calibration-of-LCD-in-Flash-Memory/m-p/173280#M1334</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Dekiru,&lt;/P&gt;&lt;P&gt;the application worsks well in RAM.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;What do I have to change if it has to run in Flash ?&lt;/P&gt;&lt;P&gt;Have I to change the Start and End Address of PFlash IFR and DFlash IFR?&lt;/P&gt;&lt;P&gt;Have I also change the linker Command file ?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks Thomas&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 16 Oct 2011 13:47:08 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/TWR-K60N512-Save-Data-e-g-Calibration-of-LCD-in-Flash-Memory/m-p/173280#M1334</guid>
      <dc:creator>Thommi_Tulpe</dc:creator>
      <dc:date>2011-10-16T13:47:08Z</dc:date>
    </item>
    <item>
      <title>Re: TWR-K60N512 Save Data e.g. Calibration of LCD in Flash Memory (nonvolatile)</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/TWR-K60N512-Save-Data-e-g-Calibration-of-LCD-in-Flash-Memory/m-p/173281#M1335</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV class="lia-message-body lia-component-body"&gt;&lt;DIV class="lia-message-body-content"&gt;&lt;DIV&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The NormalDemo has a&amp;nbsp;pFlashEraseAllBlock command that will cause exception if you run it from flash.&lt;/P&gt;&lt;P&gt;If you want to use that from flash, you have to modify the demo so it doesn't touch the portion you are using for your app.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Addtional information:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;This type of flash doesn't not support read-while-write operation, so you can access the 2nd (upper 256k) bank only while your code is in 1st bank.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;To access flash area that is in the same bank with your program, you have to put the code that exexute flash command to RAM. It is only a portion in FlashCommandSequence function. You can choose to put only that some commands&lt;/P&gt;&lt;PRE&gt;/* clear CCIF bit */
    REG_WRITE(PSSDConfig-&amp;gt;ftflRegBase + FTFL_SSD_FSTAT_OFFSET, FTFL_SSD_FSTAT_CCIF);

    /* check CCIF bit */
    while(FALSE == (REG_BIT_TEST(PSSDConfig-&amp;gt;ftflRegBase + FTFL_SSD_FSTAT_OFFSET, FTFL_SSD_FSTAT_CCIF)))
    {
        /* wait till CCIF bit is set */
        /* serve callback function if counter reaches limitation */
        if(NULL_CALLBACK != PSSDConfig-&amp;gt;CallBack)
        {
            (PSSDConfig-&amp;gt;CallBack)();
        }
        else
        {
            /* do nothing */
        }
    }&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;, or you can put the whole&amp;nbsp;FlashCommandSequence function into RAM.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The procedure to put a function into RAM in Codewarrior was&amp;nbsp; discussed some where else in this forum:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV&gt;&lt;EM&gt;1.) &amp;nbsp; Modify the linker command file to add this:&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;EM&gt;_ROMCodeToCopy = ___ROM_AT + SIZEOF(.app_data);&amp;nbsp;&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;EM&gt;.copyToRAM: AT(_ROMCodeToCopy) {&amp;nbsp;&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;EM&gt;. = ALIGN (0x4);&amp;nbsp;&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;EM&gt;__START_COPYTORAM = .;&amp;nbsp;&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;EM&gt;*(CopyToRAM)&amp;nbsp;&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;EM&gt;__END_COPYTORAM = .;&amp;nbsp;&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;EM&gt;} &amp;gt;&amp;gt; m_data&lt;/EM&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;EM&gt;2.) &amp;nbsp;You have to add some pragmas around code you want to execute from ram (as code warrior does not support the __ramfunc keyword like IAR). &amp;nbsp; &amp;nbsp;The set_sys_dividers in the MCG.c file needs to run from ram.&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;EM&gt;#pragma section CopyToRAM begin&lt;/EM&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;EM&gt;void set_sys_dividers(uint32 outdiv1, uint32 outdiv2, uint32 outdiv3, uint32 outdiv4)&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;EM&gt;{&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;EM&gt;..&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;EM&gt;...&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;EM&gt;..&lt;/EM&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;P&gt;&lt;EM&gt;&lt;SPAN style="border-collapse: collapse; color: #202020; font-family: 'Droid Sans',arial,sans-serif; font-size: 13px; line-height: normal;"&gt;}&lt;/SPAN&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&lt;SPAN style="border-collapse: collapse; color: #202020; font-family: 'Droid Sans',arial,sans-serif; font-size: 13px; line-height: normal;"&gt;#pragma section CopyToRAM end&lt;/SPAN&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="border-collapse: collapse; color: #202020; font-family: 'Droid Sans',arial,sans-serif; font-size: 13px; line-height: normal;"&gt;I tested it with the whole FlashCommandSequence in RAM and it works fine.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="border-collapse: collapse; color: #202020; font-family: 'Droid Sans',arial,sans-serif; font-size: 13px; line-height: normal;"&gt;Regards&lt;/SPAN&gt;&lt;EM&gt;&lt;SPAN style="border-collapse: collapse; color: #202020; font-family: 'Droid Sans',arial,sans-serif; font-size: 13px; line-height: normal;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/EM&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 29 Oct 2020 09:21:44 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/TWR-K60N512-Save-Data-e-g-Calibration-of-LCD-in-Flash-Memory/m-p/173281#M1335</guid>
      <dc:creator>Dekiru</dc:creator>
      <dc:date>2020-10-29T09:21:44Z</dc:date>
    </item>
    <item>
      <title>Re: TWR-K60N512 Save Data e.g. Calibration of LCD in Flash Memory (nonvolatile)</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/TWR-K60N512-Save-Data-e-g-Calibration-of-LCD-in-Flash-Memory/m-p/173282#M1336</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Dekiru,&lt;/P&gt;&lt;P&gt;thank you for your help.&lt;/P&gt;&lt;P&gt;Now I can write into the flash memory. &lt;IMG alt=":smileyhappy:" class="emoticon emoticon-smileyhappy" id="smileyhappy" src="http://freescale.i.lithium.com/i/smilies/16x16_smiley-happy.gif" title="Smiley Happy" /&gt;&lt;/P&gt;&lt;P&gt;Reading from flash is also okay.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Sometimes when i debug&amp;nbsp; while I watch the flash with the memory browser the program counter jumps into a isr.&lt;/P&gt;&lt;P&gt;When I did not use the memory browser everything is okay.&lt;/P&gt;&lt;P&gt;My pflash base address is 0x40000. This address is far away from my code. I did not change the LCF. I only have to save&lt;/P&gt;&lt;P&gt;700 words.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks a lot&lt;/P&gt;&lt;P&gt;Thomas&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 21 Oct 2011 04:11:06 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/TWR-K60N512-Save-Data-e-g-Calibration-of-LCD-in-Flash-Memory/m-p/173282#M1336</guid>
      <dc:creator>Thommi_Tulpe</dc:creator>
      <dc:date>2011-10-21T04:11:06Z</dc:date>
    </item>
    <item>
      <title>Re: TWR-K60N512 Save Data e.g. Calibration of LCD in Flash Memory (nonvolatile)</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/TWR-K60N512-Save-Data-e-g-Calibration-of-LCD-in-Flash-Memory/m-p/173283#M1337</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;That can be the problem with flash cache in early Kinetis revision.&lt;/P&gt;&lt;P&gt;Check this thread if it helps: &lt;A href="https://community.freescale.com/message/88872#88872" title="https://community.freescale.com/message/88872#88872"&gt;https://community.freescale.com/message/88872#88872&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 21 Oct 2011 08:58:25 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/TWR-K60N512-Save-Data-e-g-Calibration-of-LCD-in-Flash-Memory/m-p/173283#M1337</guid>
      <dc:creator>Dekiru</dc:creator>
      <dc:date>2011-10-21T08:58:25Z</dc:date>
    </item>
  </channel>
</rss>

