<?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>S12 / MagniV MicrocontrollersのトピックRe: Using the GPAGE register from within a C program</title>
    <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Using-the-GPAGE-register-from-within-a-C-program/m-p/336611#M10465</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I've made some progress in writing FLASH access code for the CodeWarrier Development environment:&lt;/P&gt;&lt;P&gt;In the linker file:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PAGED_FLASH INTO PAGE_E0, PAGE_E1, PAGE_E2, PAGE_E3;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I've defined a CODE_BLOCK structure that has both the file information and an array to hold the data image.&lt;/P&gt;&lt;P&gt;typedef union _codecontrolblock {&lt;/P&gt;&lt;P&gt;&amp;nbsp; struct {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; WORD CRC;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Block CRC&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; char FileName[10];&amp;nbsp;&amp;nbsp; // general format name is xIMn_ssv&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; char Format;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // S (Motorola) or I (Intel) format.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; char TargetID;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // CANOpen NodeID of destination. (1 == us)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; WORD Size;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Size in WORDs.&lt;/P&gt;&lt;P&gt;&amp;nbsp; } f;&lt;/P&gt;&lt;P&gt;&amp;nbsp; unsigned long a[4];&lt;/P&gt;&lt;P&gt;} TCODE_CONTROL_BLOCK; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;typedef struct _codeblock {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; TCODE_CONTROL_BLOCK CodeInfo;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; WORD CodeImage[0x2000-0x10];&lt;/P&gt;&lt;P&gt;} TCODE_BLOCK;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;And then defined the variable &lt;/P&gt;&lt;P&gt;#pragma DATA_SEG __GPAGE_SEG PAGED_FLASH&lt;/P&gt;&lt;P&gt;TCODE_BLOCK CodeBlock = {{0x3456, "xIM1_nnv",'I',0x20,0xFFFF},0xFFFF};&lt;/P&gt;&lt;P&gt;#pragma CODE_SEG DEFAULT&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Finally a try at a pointer to this data although I haven't been able to make that work yet.&lt;/P&gt;&lt;P&gt;unsigned int far * far destPtr;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I've written a small serial port program along with a general purpose write to flash command.&lt;/P&gt;&lt;P&gt;void&lt;/P&gt;&lt;P&gt;WriteFlashCMD( BYTE cmd ) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (FSTAT_CBEIF == 0)&amp;nbsp; // Wait for not busy.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (FSTAT &amp;amp; (FSTAT_PVIOL_MASK | FSTAT_ACCERR_MASK))&amp;nbsp; // Was there an error?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FSTAT |= (FSTAT_PVIOL_MASK | FSTAT_ACCERR_MASK); // Clear it.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FCMD = cmd;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Issue command.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FSTAT_CBEIF = 1;&amp;nbsp; // Start the cmd.&amp;nbsp; // Start the command.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (FSTAT_CCIF == 0)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Wait for not busy.&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;And I can Display, Erase and Write to the Flash.&amp;nbsp; For example:&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;TD&gt;case 'E' : // FEn -- Erase block at n&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;TD&gt;pageAddr = GetHexWord(USB_NDX); &lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;TD&gt;CodeBlock.CodeImage[pageAddr] = 0;&amp;nbsp; // Set the Address to erase&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;TD&gt;WriteFlashCMD(FCMD_SECTOR_ERASE);&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;TD&gt;break;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;But what doesn't work is setting a point to this structure.&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;TD&gt;destPtr = (unsigned int * __far)&amp;amp;CodeBlock.CodeInfo.CRC;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;TD&gt;*destPtr = 0;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;TD&gt;WriteFlashCMD(FCMD_SECTOR_ERASE);// Erase the blocks/pages.&amp;nbsp; &lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;TD&gt;CodeBlock.CodeInfo.f.CRC = 0x4142;&amp;nbsp; // Now write the data and address&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;TD&gt;WriteFlashCMD(FCMD_WORD_PROGRAM);&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Is there even a way to convince the compiler to work with pointers in this manner?&lt;/P&gt;&lt;P&gt;And is there a way to mark the GPAGE section to not be auto-initialized?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 23 Sep 2014 15:37:55 GMT</pubDate>
    <dc:creator>jcdammeyer</dc:creator>
    <dc:date>2014-09-23T15:37:55Z</dc:date>
    <item>
      <title>Using the GPAGE register from within a C program</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Using-the-GPAGE-register-from-within-a-C-program/m-p/336610#M10464</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I've got a number of dsPIC modules connected via CAN bus to a 9S12XDP512.&amp;nbsp; A PC, through an FTDI 245 USB connection talks to the 9S12.&amp;nbsp; I want to be able to update both the 9S12 code and the dsPIC module code. &lt;/P&gt;&lt;P&gt;First I'd save the new code into 9S12 banked FLASH.&amp;nbsp; Then transfer the data over the CAN bus to one of the dsPIC devices where it can be initially stored in an external EEROM.&amp;nbsp; A reprogram command sent to the dsPIC modules will run their bootloader to read the new code from the EEROM and program the dsPIC Flash Memory.&amp;nbsp; &lt;/P&gt;&lt;P&gt;In the same manner I'd like to be able to upgrade the 9S12.&amp;nbsp; First put the code (&amp;lt;64K) into banked FLASH memory in the 9S12.&amp;nbsp; Then launch a bootloader that programs the unbanked code space with the image in FLASH.&lt;/P&gt;&lt;P&gt;One other feature I need is that the code sent from the PC into FLASH is encrypted.&amp;nbsp; The bootloader programmer code would be responsible for decrypting it either in the 9S12 or inside the dsPIC after it reads a block from EEROM.&lt;/P&gt;&lt;P&gt;The plan was to use the GPAGE register to point to one of the 16K flash pages in the 9S12 and just use 4 pages to serve as the code storage.&amp;nbsp; However, I can't find any app notes for using the GPAGE from a C program so I can transfer for performing the FLASH programming.&amp;nbsp; Even an app note specifically for the S12XFTX512K4V2 Flash seems to be non-existent.&lt;/P&gt;&lt;P&gt;So I'm looking for help/guidance/consulting to get this done.&lt;/P&gt;&lt;P&gt;Any suggestions are welcome.&lt;/P&gt;&lt;P&gt;Thanks&lt;/P&gt;&lt;P&gt;John&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 22 Sep 2014 22:42:36 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Using-the-GPAGE-register-from-within-a-C-program/m-p/336610#M10464</guid>
      <dc:creator>jcdammeyer</dc:creator>
      <dc:date>2014-09-22T22:42:36Z</dc:date>
    </item>
    <item>
      <title>Re: Using the GPAGE register from within a C program</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Using-the-GPAGE-register-from-within-a-C-program/m-p/336611#M10465</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I've made some progress in writing FLASH access code for the CodeWarrier Development environment:&lt;/P&gt;&lt;P&gt;In the linker file:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PAGED_FLASH INTO PAGE_E0, PAGE_E1, PAGE_E2, PAGE_E3;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I've defined a CODE_BLOCK structure that has both the file information and an array to hold the data image.&lt;/P&gt;&lt;P&gt;typedef union _codecontrolblock {&lt;/P&gt;&lt;P&gt;&amp;nbsp; struct {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; WORD CRC;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Block CRC&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; char FileName[10];&amp;nbsp;&amp;nbsp; // general format name is xIMn_ssv&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; char Format;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // S (Motorola) or I (Intel) format.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; char TargetID;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // CANOpen NodeID of destination. (1 == us)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; WORD Size;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Size in WORDs.&lt;/P&gt;&lt;P&gt;&amp;nbsp; } f;&lt;/P&gt;&lt;P&gt;&amp;nbsp; unsigned long a[4];&lt;/P&gt;&lt;P&gt;} TCODE_CONTROL_BLOCK; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;typedef struct _codeblock {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; TCODE_CONTROL_BLOCK CodeInfo;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; WORD CodeImage[0x2000-0x10];&lt;/P&gt;&lt;P&gt;} TCODE_BLOCK;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;And then defined the variable &lt;/P&gt;&lt;P&gt;#pragma DATA_SEG __GPAGE_SEG PAGED_FLASH&lt;/P&gt;&lt;P&gt;TCODE_BLOCK CodeBlock = {{0x3456, "xIM1_nnv",'I',0x20,0xFFFF},0xFFFF};&lt;/P&gt;&lt;P&gt;#pragma CODE_SEG DEFAULT&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Finally a try at a pointer to this data although I haven't been able to make that work yet.&lt;/P&gt;&lt;P&gt;unsigned int far * far destPtr;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I've written a small serial port program along with a general purpose write to flash command.&lt;/P&gt;&lt;P&gt;void&lt;/P&gt;&lt;P&gt;WriteFlashCMD( BYTE cmd ) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (FSTAT_CBEIF == 0)&amp;nbsp; // Wait for not busy.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (FSTAT &amp;amp; (FSTAT_PVIOL_MASK | FSTAT_ACCERR_MASK))&amp;nbsp; // Was there an error?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FSTAT |= (FSTAT_PVIOL_MASK | FSTAT_ACCERR_MASK); // Clear it.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FCMD = cmd;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Issue command.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FSTAT_CBEIF = 1;&amp;nbsp; // Start the cmd.&amp;nbsp; // Start the command.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (FSTAT_CCIF == 0)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Wait for not busy.&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;And I can Display, Erase and Write to the Flash.&amp;nbsp; For example:&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;TD&gt;case 'E' : // FEn -- Erase block at n&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;TD&gt;pageAddr = GetHexWord(USB_NDX); &lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;TD&gt;CodeBlock.CodeImage[pageAddr] = 0;&amp;nbsp; // Set the Address to erase&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;TD&gt;WriteFlashCMD(FCMD_SECTOR_ERASE);&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;TD&gt;break;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;But what doesn't work is setting a point to this structure.&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;TD&gt;destPtr = (unsigned int * __far)&amp;amp;CodeBlock.CodeInfo.CRC;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;TD&gt;*destPtr = 0;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;TD&gt;WriteFlashCMD(FCMD_SECTOR_ERASE);// Erase the blocks/pages.&amp;nbsp; &lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;TD&gt;CodeBlock.CodeInfo.f.CRC = 0x4142;&amp;nbsp; // Now write the data and address&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;TD&gt;WriteFlashCMD(FCMD_WORD_PROGRAM);&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Is there even a way to convince the compiler to work with pointers in this manner?&lt;/P&gt;&lt;P&gt;And is there a way to mark the GPAGE section to not be auto-initialized?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 23 Sep 2014 15:37:55 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Using-the-GPAGE-register-from-within-a-C-program/m-p/336611#M10465</guid>
      <dc:creator>jcdammeyer</dc:creator>
      <dc:date>2014-09-23T15:37:55Z</dc:date>
    </item>
    <item>
      <title>Re: Using the GPAGE register from within a C program</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Using-the-GPAGE-register-from-within-a-C-program/m-p/336612#M10466</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hello John.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Under CW5.1 install\Help\PDF. there is TN238 and TN240 that includes how to define data in global memory.&lt;/P&gt;&lt;P&gt;also&lt;/P&gt;&lt;P&gt;under CW5.1 install\(CodeWarrior_Examples)\HCS12X, there is sample code GlobalAddressing. it is about global address typical usage. S12X Examples.pdf documents the samples.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;please read above materials and see if it can resolve your doubt.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;==================================&lt;/P&gt;&lt;P&gt;this answer is for you. if it helps, please click on "Correct Answer" button. thanks!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Best Regards,&lt;/P&gt;&lt;P&gt;ZhangJun&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 01 Oct 2014 16:31:33 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Using-the-GPAGE-register-from-within-a-C-program/m-p/336612#M10466</guid>
      <dc:creator>ZhangJennie</dc:creator>
      <dc:date>2014-10-01T16:31:33Z</dc:date>
    </item>
  </channel>
</rss>

