<?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>MCUXpresso Generalのトピックmaking a cast from void pointer to pointer to struct results in hardware fault</title>
    <link>https://community.nxp.com/t5/MCUXpresso-General/making-a-cast-from-void-pointer-to-pointer-to-struct-results-in/m-p/778880#M538</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I am writing a simple blinking LED program in MCUXpresso with ksdk 2.4 and Amazon Freertos.&amp;nbsp; I intended to create two instances of the same thread definition by passing a void pointer to my structure which contains the GPIO type and pin number to the thread&amp;nbsp; and later typecast the void pointer to pointer to my structure. however, during debugging, i realised that the new pointer points to a completely different address from my struct data and it always causes a hardware fault. This is however a code which works very well in Kinetis Design studio. I will appreciate help in understanind this problem.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;#include &amp;lt;stdio.h&amp;gt;&lt;BR /&gt;#include "board.h"&lt;BR /&gt;#include "peripherals.h"&lt;BR /&gt;#include "pin_mux.h"&lt;BR /&gt;#include "clock_config.h"&lt;BR /&gt;#include "MK22F51212.h"&lt;BR /&gt;#include "fsl_debug_console.h"&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;typedef struct BLINKY_param {&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;GPIO_Type* GPIO;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;uint8_t Pin_name;&lt;BR /&gt;} BLINKY_param_t;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;enum PINS {&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;PTD2&amp;nbsp; = 2,&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;&amp;nbsp;&amp;nbsp; // LED_A&lt;BR /&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#include "FreeRTOS.h"&lt;BR /&gt;#include "task.h"&lt;BR /&gt;#include "semphr.h"&lt;BR /&gt;#include "timers.h"&lt;BR /&gt;#include "queue.h"&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;void air_blinky(void* blinky_parameters) ;&lt;BR /&gt;#define mask(x)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ( uint32_t )( 1U &amp;lt;&amp;lt; (x) )&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;int main(void) {&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;CLOCK_EnableClock(kCLOCK_PortD);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;PORT_SetPinMux(PORTD,PTD2,kPORT_MuxAsGpio);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;gpio_pin_config_t config = { kGPIO_DigitalOutput, 0 };&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;GPIO_PinInit(GPIOD, PTD2, &amp;amp;config);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;BLINKY_param_t Board_A_blinky = {GPIOD,PTD2};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (xTaskCreate(air_blinky, "air_blinky_A", 50, &amp;amp;Board_A_blinky, 2,&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;NULL) == errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;exit(-1);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;vTaskStartScheduler();&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;while (1) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;return 0;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;void air_blinky(void* blinky_parameters) {&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;const BLINKY_param_t* LED = (BLINKY_param_t*) blinky_parameters;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;TickType_t Lastwakeuptime = xTaskGetTickCount();&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;uint8_t Flash_Time = 100;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;for (;;)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;GPIO_PortToggle(LED-&amp;gt;GPIO, mask(LED-&amp;gt;Pin_name));&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // on&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;vTaskDelayUntil(&amp;amp;Lastwakeuptime,((Flash_Time * configTICK_RATE_HZ) / (float) 1000));&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;GPIO_PortToggle(GPIOD, mask(PTD2));&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // off&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;vTaskDelayUntil(&amp;amp;Lastwakeuptime,((Flash_Time * configTICK_RATE_HZ) / (float) 1000));&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;GPIO_PortToggle(GPIOD, mask(PTD2));&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // on&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;vTaskDelayUntil(&amp;amp;Lastwakeuptime,((Flash_Time * configTICK_RATE_HZ) / (float) 1000));&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;GPIO_PortToggle(GPIOD, mask(PTD2)); &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // off&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;vTaskDelayUntil(&amp;amp;Lastwakeuptime,((2000 * configTICK_RATE_HZ) / (float) 1000));&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 13 Jun 2018 20:15:25 GMT</pubDate>
    <dc:creator>richardmensah</dc:creator>
    <dc:date>2018-06-13T20:15:25Z</dc:date>
    <item>
      <title>making a cast from void pointer to pointer to struct results in hardware fault</title>
      <link>https://community.nxp.com/t5/MCUXpresso-General/making-a-cast-from-void-pointer-to-pointer-to-struct-results-in/m-p/778880#M538</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I am writing a simple blinking LED program in MCUXpresso with ksdk 2.4 and Amazon Freertos.&amp;nbsp; I intended to create two instances of the same thread definition by passing a void pointer to my structure which contains the GPIO type and pin number to the thread&amp;nbsp; and later typecast the void pointer to pointer to my structure. however, during debugging, i realised that the new pointer points to a completely different address from my struct data and it always causes a hardware fault. This is however a code which works very well in Kinetis Design studio. I will appreciate help in understanind this problem.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;#include &amp;lt;stdio.h&amp;gt;&lt;BR /&gt;#include "board.h"&lt;BR /&gt;#include "peripherals.h"&lt;BR /&gt;#include "pin_mux.h"&lt;BR /&gt;#include "clock_config.h"&lt;BR /&gt;#include "MK22F51212.h"&lt;BR /&gt;#include "fsl_debug_console.h"&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;typedef struct BLINKY_param {&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;GPIO_Type* GPIO;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;uint8_t Pin_name;&lt;BR /&gt;} BLINKY_param_t;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;enum PINS {&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;PTD2&amp;nbsp; = 2,&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;&amp;nbsp;&amp;nbsp; // LED_A&lt;BR /&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#include "FreeRTOS.h"&lt;BR /&gt;#include "task.h"&lt;BR /&gt;#include "semphr.h"&lt;BR /&gt;#include "timers.h"&lt;BR /&gt;#include "queue.h"&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;void air_blinky(void* blinky_parameters) ;&lt;BR /&gt;#define mask(x)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ( uint32_t )( 1U &amp;lt;&amp;lt; (x) )&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;int main(void) {&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;CLOCK_EnableClock(kCLOCK_PortD);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;PORT_SetPinMux(PORTD,PTD2,kPORT_MuxAsGpio);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;gpio_pin_config_t config = { kGPIO_DigitalOutput, 0 };&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;GPIO_PinInit(GPIOD, PTD2, &amp;amp;config);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;BLINKY_param_t Board_A_blinky = {GPIOD,PTD2};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (xTaskCreate(air_blinky, "air_blinky_A", 50, &amp;amp;Board_A_blinky, 2,&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;NULL) == errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;exit(-1);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;vTaskStartScheduler();&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;while (1) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;return 0;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;void air_blinky(void* blinky_parameters) {&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;const BLINKY_param_t* LED = (BLINKY_param_t*) blinky_parameters;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;TickType_t Lastwakeuptime = xTaskGetTickCount();&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;uint8_t Flash_Time = 100;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;for (;;)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;GPIO_PortToggle(LED-&amp;gt;GPIO, mask(LED-&amp;gt;Pin_name));&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // on&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;vTaskDelayUntil(&amp;amp;Lastwakeuptime,((Flash_Time * configTICK_RATE_HZ) / (float) 1000));&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;GPIO_PortToggle(GPIOD, mask(PTD2));&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // off&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;vTaskDelayUntil(&amp;amp;Lastwakeuptime,((Flash_Time * configTICK_RATE_HZ) / (float) 1000));&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;GPIO_PortToggle(GPIOD, mask(PTD2));&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // on&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;vTaskDelayUntil(&amp;amp;Lastwakeuptime,((Flash_Time * configTICK_RATE_HZ) / (float) 1000));&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;GPIO_PortToggle(GPIOD, mask(PTD2)); &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // off&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;vTaskDelayUntil(&amp;amp;Lastwakeuptime,((2000 * configTICK_RATE_HZ) / (float) 1000));&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 13 Jun 2018 20:15:25 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MCUXpresso-General/making-a-cast-from-void-pointer-to-pointer-to-struct-results-in/m-p/778880#M538</guid>
      <dc:creator>richardmensah</dc:creator>
      <dc:date>2018-06-13T20:15:25Z</dc:date>
    </item>
    <item>
      <title>Re: making a cast from void pointer to pointer to struct results in hardware fault</title>
      <link>https://community.nxp.com/t5/MCUXpresso-General/making-a-cast-from-void-pointer-to-pointer-to-struct-results-in/m-p/778881#M539</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Richard:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Could you please attach your project so I can reproduce your issue on my side?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;Daniel&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 04 Jul 2018 00:52:28 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MCUXpresso-General/making-a-cast-from-void-pointer-to-pointer-to-struct-results-in/m-p/778881#M539</guid>
      <dc:creator>danielchen</dc:creator>
      <dc:date>2018-07-04T00:52:28Z</dc:date>
    </item>
    <item>
      <title>Re: making a cast from void pointer to pointer to struct results in hardware fault</title>
      <link>https://community.nxp.com/t5/MCUXpresso-General/making-a-cast-from-void-pointer-to-pointer-to-struct-results-in/m-p/778882#M540</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi, Thanks for responding, Please find attached my project&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 04 Jul 2018 20:34:00 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MCUXpresso-General/making-a-cast-from-void-pointer-to-pointer-to-struct-results-in/m-p/778882#M540</guid>
      <dc:creator>richardmensah</dc:creator>
      <dc:date>2018-07-04T20:34:00Z</dc:date>
    </item>
    <item>
      <title>Re: making a cast from void pointer to pointer to struct results in hardware fault</title>
      <link>https://community.nxp.com/t5/MCUXpresso-General/making-a-cast-from-void-pointer-to-pointer-to-struct-results-in/m-p/778883#M541</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Richard:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Sorry for lost tracking this thread.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;It seems your issue&amp;nbsp; resulted from the second parameter of vTaskDelayUntil, it is a const TickType_t.&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; vTaskDelayUntil(&amp;amp;Lastwakeuptime,((Flash_Time * configTICK_RATE_HZ) / (float) 1000));&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I suggest you use macro pdMS_TO_TICKS .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;Daniel&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 31 Aug 2018 06:45:54 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MCUXpresso-General/making-a-cast-from-void-pointer-to-pointer-to-struct-results-in/m-p/778883#M541</guid>
      <dc:creator>danielchen</dc:creator>
      <dc:date>2018-08-31T06:45:54Z</dc:date>
    </item>
  </channel>
</rss>

