<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://devzone.nordicsemi.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Enable GPIO IRQ in TFM 1.3 with zephry v2.7.0 on nrf5340DK</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/80705/enable-gpio-irq-in-tfm-1-3-with-zephry-v2-7-0-on-nrf5340dk</link><description>I want to enable GPIO IRQ in Trusted firmware-m 1.3 on nrf5340DK. I have TFM 1.3 which comes with zephyr v2.7.0 image flashed to board. followed the steps of https://www.trustedfirmware.org/docs/tech_forum_20210819BriefUpdatesInterruptHandling.pdf and</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Thu, 17 Feb 2022 14:21:51 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/80705/enable-gpio-irq-in-tfm-1-3-with-zephry-v2-7-0-on-nrf5340dk" /><item><title>RE: Enable GPIO IRQ in TFM 1.3 with zephry v2.7.0 on nrf5340DK</title><link>https://devzone.nordicsemi.com/thread/353646?ContentTypeID=1</link><pubDate>Thu, 17 Feb 2022 14:21:51 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:e8420381-64c4-420c-b505-639416b55159</guid><dc:creator>Einar Thorsrud</dc:creator><description>&lt;p&gt;Hi&amp;nbsp;Yaduvir,&lt;/p&gt;
&lt;p&gt;I am sorry for the late reply. I have checked with the team workin on TF-M, and this is still not supported. It is being worked on though, and I will update here as soon as soon as we have some code in (pull requests) you can refer to.&lt;/p&gt;
&lt;p&gt;Einar&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Enable GPIO IRQ in TFM 1.3 with zephry v2.7.0 on nrf5340DK</title><link>https://devzone.nordicsemi.com/thread/352999?ContentTypeID=1</link><pubDate>Tue, 15 Feb 2022 03:58:43 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:0f238e1c-1642-4f66-be2c-6f64b484ca22</guid><dc:creator>ys4861@intel</dc:creator><description>&lt;p&gt;I tried testing GPIO interrupts on&amp;nbsp;Zephyr 3.0.0-rc1 on the nrf5340DK board. It still not working though the release has GPIO interrupts added to nrf5340DK. I do see that there is some implementation missing from GPIO interrupts implementation.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;I wanted to enable interrupts on P0.0 - P0.7 pins of port0. and tested on both methods GPIOTE0 and GPIO but didnt&amp;nbsp;receive any of the SLIH&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;1./home/osboxes/zephyrproject/modules/tee/tf-m/trusted-firmware-m/platform/ext/target/nordic_nrf/common/nrf5340/tfm_interrupts.c&lt;/p&gt;
&lt;p&gt;+//spu_peripheral_config_non_secure((uint32_t)NRF_P0, false);&amp;nbsp; &amp;nbsp;(commented this line to enable Port 0 in secure mode)&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Enable pin P0.0 - P0.7 interrupts&lt;/p&gt;
&lt;p&gt;+//spu_gpio_config_non_secure(0, TFM_PERIPHERAL_GPIO0_PIN_MASK_SECURE, true);&lt;br /&gt;+ spu_gpio_config_non_secure(0, 0x0f, true);&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;2.modules/tee/tf-m/trusted-firmware-m/platform/ext/target/nordic_nrf/common/nrf5340/target_cfg.c&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Missing &amp;quot;struct tfm_peripheral_gpiote0&amp;quot;, i added this.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;#if TFM_PERIPHERAL_GPIOTE0_SECURE&lt;br /&gt;struct platform_data_t tfm_peripheral_gpiote0 = {&lt;br /&gt; NRF_GPIOTE0_S_BASE,&lt;br /&gt; NRF_GPIOTE0_S_BASE + (sizeof(NRF_GPIOTE_Type) - 1),&lt;br /&gt;};&lt;br /&gt;#endif&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;3.modules/tee/tf-m/trusted-firmware-m/platform/ext/target/nordic_nrf/common/nrf5340/tfm_peripherals_def.h&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp;3.1 This line was missing, so i added GPIOTE0&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+extern struct platform_data_t tfm_peripheral_gpiote0;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+ #define TFM_PERIPHERAL_GPIOTE0 (&amp;amp;tfm_peripheral_gpiote0)&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp;3.2 These macros are missing for GPIO Ports&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;TFM_GPIO0_IRQ,&amp;nbsp;TFM_GPIO1_IRQ as&amp;nbsp;GPIO0_IRQn number not defined in&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;4. modules/hal/nordic/nrfx/mdk/nrf5340_application.h&lt;/p&gt;
&lt;p&gt;Missing,&amp;nbsp;&lt;span&gt;GPIO0_IRQn, GPIO1_IRQn&amp;nbsp;&amp;nbsp;define in the header.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;5.modules/tee/tf-m/trusted-firmware-m/platform/ext/target/nordic_nrf/nrf5340dk_nrf5340_cpuapp/tfm_peripherals_config.h&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Missing, added these lines&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;+#define TFM_PERIPHERAL_GPIOTE0_SECURE 1&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;+#define TFM_PERIPHERAL_GPIO1_SECURE 1&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Questions:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;1) Only GPIOTE0 IRQ number is defined in number 3) above. does that mean GPIO interrupts can be received through GPIOTE and not through GPIO directly?&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;2)Timer0 and Timer1 interrupts are working but not GPIO, is GPIO interrupts implemented in Zephyr 3.0.0-rc1?, There is no test for gpio interrupts in tfm_regression_test. i tested GPIO interrupts by adding a test and modifying &amp;quot;.yaml&amp;quot; file.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt; &amp;quot;irqs&amp;quot;: [&lt;br /&gt; {&lt;br /&gt; &amp;quot;source&amp;quot;: &amp;quot;TFM_GPIOTE0_IRQ&amp;quot;,&lt;br /&gt; &amp;quot;name&amp;quot;: &amp;quot;TFM_GPIOTE0_IRQ&amp;quot;,&lt;br /&gt; &amp;quot;handling&amp;quot;: &amp;quot;SLIH&amp;quot;,&lt;br /&gt; }&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;OR&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;quot;irqs&amp;quot;: [&lt;br /&gt;{&lt;br /&gt;&amp;quot;source&amp;quot;: &amp;quot;TFM_GPIO0_IRQ&amp;quot;,&lt;br /&gt;&amp;quot;name&amp;quot;: &amp;quot;TFM_GPIO0_IRQ&amp;quot;,&lt;br /&gt;&amp;quot;handling&amp;quot;: &amp;quot;SLIH&amp;quot;,&lt;br /&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Build command is:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;west build -b nrf5340dk_nrf5340_cpuapp_ns zephyr/samples/tfm_integration/tfm_regression_test&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Thanks&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Yaduvir&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Enable GPIO IRQ in TFM 1.3 with zephry v2.7.0 on nrf5340DK</title><link>https://devzone.nordicsemi.com/thread/335754?ContentTypeID=1</link><pubDate>Mon, 25 Oct 2021 13:04:01 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:137a31b2-89f4-44be-8214-b85b4ce8bbb5</guid><dc:creator>Einar Thorsrud</dc:creator><description>&lt;p&gt;Hi&amp;nbsp;Yaduvir,&lt;/p&gt;
&lt;p&gt;I must admit this is quite new for us and there is a lot of work on this these days, so there are some differences between TF-M, Zephyr and NCS, and even between Zephyr 2.7.0 and Zephyr master.&lt;/p&gt;
&lt;p&gt;The IRQ tests does not fully work on the Nordic platform yet, so you should not rely on them. There is a fix in &lt;a href="https://review.trustedfirmware.org/c/TF-M/trusted-firmware-m/+/11820/4/platform/ext/target/nordic_nrf/common/core/plat_test.c"&gt;this PR&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The tests use TIMER0, so if you are running the tests in addition to your other code you may need to use a different timer instance.&lt;/p&gt;
&lt;p&gt;Regarding priorities, there are 8 interrupt priorities.&lt;/p&gt;
&lt;p&gt;Einar&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Enable GPIO IRQ in TFM 1.3 with zephry v2.7.0 on nrf5340DK</title><link>https://devzone.nordicsemi.com/thread/335609?ContentTypeID=1</link><pubDate>Mon, 25 Oct 2021 03:24:05 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:f75b811a-dca8-4e1a-b3f8-f96d8d18e986</guid><dc:creator>ys4861@intel</dc:creator><description>&lt;p&gt;Hi Einar,&lt;/p&gt;
&lt;p&gt;I see that &amp;#39;tfm_slih_test&amp;#39; works on my nrf5340DK board. But not tfm_flih_test. &amp;ldquo;timer0_handler()&amp;rdquo; is called both in tfm_slih_test.c or our custom tfm service as long as &amp;nbsp;&amp;ldquo;CONFIG_TFM_REGRESSION_NS=y&amp;rdquo; in tfm_regression_test client sample. Further by experimenting, I found that slih timer interrupt is called if I remove all tests except below 2 tests, and I see that &amp;lsquo;register_testsuite_ns_core_positive&amp;rsquo; just returns a &amp;lsquo;CORE_TEST_ERRNO_SUCCESS&amp;rsquo;, &amp;lsquo;register_testsuite_ns_qcbor&amp;rsquo; runs some 20 something qcbr lib test and nothing is related timer interrupt. But if these 2 test are run then timer0 interrupt always work. Commenting any of these tests just disable the timer interrupt.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;static struct test_suite_t test_suites[] = {&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* List test cases which are compliant with level 1 isolation */&lt;/p&gt;
&lt;p&gt;#if defined(TFM_PARTITION_INITIAL_ATTESTATION) || defined(FORWARD_PROT_MSG)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Non-secure QCBOR library test cases */&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;amp;register_testsuite_ns_qcbor, 0, 0, 0},&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;#endif&lt;/p&gt;
&lt;p&gt;/* Non-secure core test cases */&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;{&amp;amp;register_testsuite_ns_core_positive, 0, 0, 0},&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* End of test suites */&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0, 0, 0, 0}&lt;/p&gt;
&lt;p&gt;};&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;I see that SLIH, timer0_handler is when TFM_TIMER0_IRQ_SIGNAL is received in psa_wait() and send by SPM. This is how SLIH is working in test suite and my own custom service as long as &amp;ldquo;CONFIG_TFM_REGRESSION_NS=y&amp;rdquo; is enabled as discussed above.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;static void timer0_handler(void)&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; tfm_plat_test_secure_timer_stop();&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; psa_irq_disable(TFM_TIMER0_IRQ_SIGNAL);&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;static void slih_test_case_2(void) {&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; psa_irq_enable(TFM_TIMER0_IRQ_SIGNAL);&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; tfm_plat_test_secure_timer_start();&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (psa_wait(&lt;strong&gt;TFM_TIMER0_IRQ_SIGNAL&lt;/strong&gt;, PSA_BLOCK) != TFM_TIMER0_IRQ_SIGNAL);&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; timer0_handler();&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;In tfm_plat_test.h, defines a macro that put the timer start function in Read-only section of the partition.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;TFM_LINK_SET_RO_IN_PARTITION_SECTION(&amp;quot;TFM_SP_SLIH_TEST&amp;quot;, &amp;quot;APP-ROT&amp;quot;)&lt;/p&gt;
&lt;p&gt;tfm_plat_test_secure_timer_start, tfm_plat_test_secure_timer_stop&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;1. now I need to know why timer0 interrupt is working only when &amp;ldquo;register_testsuite_ns_qcbor&amp;rdquo; and &amp;ldquo;register_testsuite_ns_core_positive&amp;rdquo; is run in tests?&lt;/p&gt;
&lt;p&gt;2. Any clue why FLIH timer interrupts not working?&lt;/p&gt;
&lt;p&gt;3. What are&amp;nbsp;the number of configurable priorities on your Interrupt Controller (NVIC)?&lt;/p&gt;
&lt;p&gt;4. Is there any sample to enable GPTIOE or any other peripheral interrupt sample in TFM test suite? Currently, I see only the Timer interrupt sample.&lt;/p&gt;
&lt;p&gt;Thanks&lt;/p&gt;
&lt;p&gt;Yaduvir&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Enable GPIO IRQ in TFM 1.3 with zephry v2.7.0 on nrf5340DK</title><link>https://devzone.nordicsemi.com/thread/335306?ContentTypeID=1</link><pubDate>Thu, 21 Oct 2021 12:32:18 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:d40b8903-7834-4d2a-b482-512d2af063df</guid><dc:creator>Einar Thorsrud</dc:creator><description>&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;No update yet, unfortunately.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Enable GPIO IRQ in TFM 1.3 with zephry v2.7.0 on nrf5340DK</title><link>https://devzone.nordicsemi.com/thread/335159?ContentTypeID=1</link><pubDate>Wed, 20 Oct 2021 20:47:48 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:166cdb93-ba79-48a0-9ec3-a2aba94d0105</guid><dc:creator>ys4861@intel</dc:creator><description>&lt;p&gt;Hi Einar,&lt;/p&gt;
&lt;p&gt;Do you have any updates on the issue?&lt;/p&gt;
&lt;p&gt;Thanks&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Enable GPIO IRQ in TFM 1.3 with zephry v2.7.0 on nrf5340DK</title><link>https://devzone.nordicsemi.com/thread/334629?ContentTypeID=1</link><pubDate>Mon, 18 Oct 2021 13:12:16 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:e1c92ab8-d25d-4900-8404-5b697b14a23b</guid><dc:creator>Einar Thorsrud</dc:creator><description>&lt;p&gt;Thank you for the additional info. We are working on it and I will update here when we have something.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Enable GPIO IRQ in TFM 1.3 with zephry v2.7.0 on nrf5340DK</title><link>https://devzone.nordicsemi.com/thread/334364?ContentTypeID=1</link><pubDate>Fri, 15 Oct 2021 12:58:31 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:1feedf7b-15ff-4a85-b086-30a8a831081f</guid><dc:creator>ys4861@intel</dc:creator><description>&lt;p&gt;&lt;strong&gt;Step1,Step2&lt;/strong&gt;&lt;br /&gt;/*#####################################################################*/&lt;/p&gt;
&lt;p&gt;modules\tee\tfm\trusted-firmware-m\platform\ext\target\nordic_nrf\common\nrf5340\&lt;strong&gt;tfm_peripherals_def.h&lt;/strong&gt;&lt;br /&gt;#ifndef __TFM_PERIPHERALS_DEF_H__&lt;br /&gt;#define __TFM_PERIPHERALS_DEF_H__&lt;/p&gt;
&lt;p&gt;#include &amp;lt;nrf.h&amp;gt;&lt;/p&gt;
&lt;p&gt;#ifdef __cplusplus&lt;br /&gt;extern &amp;quot;C&amp;quot; {&lt;br /&gt;#endif&lt;/p&gt;
&lt;p&gt;#define TFM_TIMER0_IRQ (TIMER0_IRQn)&lt;br /&gt;#define TFM_TIMER1_IRQ (TIMER1_IRQn)&lt;br /&gt;#define TFM_GPIOTE0_IRQ (GPIOTE0_IRQn)&lt;br /&gt;#define TFM_SPIM4_IRQ (SPIM4_IRQn)&lt;/p&gt;
&lt;p&gt;struct platform_data_t;&lt;/p&gt;
&lt;p&gt;extern struct platform_data_t tfm_peripheral_std_uart;&lt;br /&gt;&lt;strong&gt;extern struct platform_data_t tfm_peripheral_timer0;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;extern struct platform_data_t tfm_peripheral_std_gpiote0;&lt;/strong&gt;&lt;br /&gt;extern struct platform_data_t tfm_peripheral_std_spim4;&lt;/p&gt;
&lt;p&gt;#define TFM_PERIPHERAL_STD_UART (&amp;amp;tfm_peripheral_std_uart)&lt;br /&gt;&lt;strong&gt;#define TFM_PERIPHERAL_TIMER0 (&amp;amp;tfm_peripheral_timer0)&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;#define TFM_PERIPHERAL_GPIOTE0 (&amp;amp;tfm_peripheral_std_gpiote0)&lt;/strong&gt;&lt;br /&gt;#define TFM_PERIPHERAL_SPIM4 (&amp;amp;tfm_peripheral_std_spim4)&lt;br /&gt;#define TFM_PERIPHERAL_FPGA_IO (0)&lt;/p&gt;
&lt;p&gt;#ifdef __cplusplus&lt;br /&gt;}&lt;br /&gt;#endif&lt;/p&gt;
&lt;p&gt;#endif /* __TFM_PERIPHERALS_DEF_H__ */&lt;/p&gt;
&lt;p&gt;modules\tee\tfm\trusted-firmware-m\platform\ext\target\nordic_nrf\common\nrf5340\target_cfg.c&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;struct platform_data_t tfm_peripheral_timer0 = {&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt; NRF_TIMER0_S_BASE,&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt; NRF_TIMER0_S_BASE + (sizeof(NRF_TIMER_Type) - 1),&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;};&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;struct platform_data_t tfm_peripheral_std_uart = {&lt;br /&gt; NRF_UARTE1_S_BASE,&lt;br /&gt; NRF_UARTE1_S_BASE + (sizeof(NRF_UARTE_Type) - 1),&lt;br /&gt;};&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;struct platform_data_t tfm_peripheral_std_gpiote0 = {&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt; NRF_GPIOTE0_S_BASE,&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt; NRF_GPIOTE0_S_BASE + (sizeof(NRF_GPIOTE_Type) - 1),&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;};&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;struct platform_data_t tfm_peripheral_std_spim4 = {&lt;br /&gt; NRF_SPIM4_S_BASE,&lt;br /&gt; NRF_SPIM4_S_BASE + (sizeof(NRF_SPIM_Type) - 1),&lt;br /&gt;};&lt;/p&gt;
&lt;p&gt;/*Secure partition manifest file change*/&lt;br /&gt;samplepartition.yaml&lt;br /&gt;{&lt;br /&gt; &lt;strong&gt;&amp;quot;psa_framework_version&amp;quot;: 1.1,&lt;/strong&gt;&lt;br /&gt; &amp;quot;name&amp;quot;: &amp;quot;TFM_SP_sample&amp;quot;,&lt;br /&gt; # Possible options: &amp;quot;PSA-ROT | APPLICATION-ROT&amp;quot;&lt;br /&gt; &amp;quot;type&amp;quot;: &amp;quot;APPLICATION-ROT&amp;quot;,&lt;br /&gt; &amp;quot;priority&amp;quot;: &amp;quot;NORMAL&amp;quot;,&lt;br /&gt; &amp;quot;model&amp;quot;: &amp;quot;IPC&amp;quot;,&lt;br /&gt; &amp;quot;entry_point&amp;quot;: &amp;quot;sample_partition_main&amp;quot;,&lt;br /&gt; &amp;quot;stack_size&amp;quot;: &amp;quot;0x200&amp;quot;,&lt;br /&gt; &amp;quot;services&amp;quot;: [&lt;br /&gt; # Define the secure service here.&lt;br /&gt; {&lt;br /&gt; "name": "TFM_EXAMPLE_SERVICE",&lt;br /&gt; # SIDs must be unique, ones that are currently in use are documented in&lt;br /&gt; # tfm_secure_partition_addition.rst on line 184&lt;br /&gt; "sid": "0x00001001",&lt;br /&gt; "non_secure_clients": true,&lt;br /&gt; "version": 1,&lt;br /&gt; "version_policy": "STRICT"&lt;br /&gt; },&lt;br /&gt; ],&lt;br /&gt; # Define all the IRQs that the service wants to handle.&lt;br /&gt; &lt;strong&gt;&amp;quot;mmio_regions&amp;quot;: [&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt; {&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt; "name": "TFM_PERIPHERAL_GPIOTE0",&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt; "permission": "READ-WRITE"&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt; },&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt; {&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt; "name": "TFM_PERIPHERAL_SPIM4",&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt; "permission": "READ-WRITE"&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt; },&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt; {&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt; "name": "TFM_PERIPHERAL_TIMER0",&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt; "permission": "READ-WRITE"&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt; },&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt; ],&lt;/strong&gt;&lt;br /&gt; &amp;quot;irqs&amp;quot;: [&lt;br /&gt; &lt;strong&gt;{&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt; "source": "TFM_GPIOTE0_IRQ",&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt; "name": "TFM_GPIOTE0_IRQ",&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt; "handling": "SLIH",&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt; "tfm_irq_priority": 64,&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt; },&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt; {&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt; "source": "TFM_SPIM4_IRQ",&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt; "name": "TFM_SPIM4_IRQ",&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt; "handling": "SLIH",&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt; "tfm_irq_priority": 64,&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt; },&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt; {&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt; "source": "TFM_TIMER0_IRQ",&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt; "name": "TFM_TIMER0_IRQ",&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt; "handling": "SLIH",&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt; "tfm_irq_priority": 64,&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt; }&lt;/strong&gt;&lt;br /&gt; ],&lt;br /&gt; &amp;quot;dependencies&amp;quot;: [&lt;br /&gt; "TFM_CRYPTO"&lt;br /&gt; ]&lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;Step3, Step4&lt;br /&gt;/*#####################################################################*/&lt;/p&gt;
&lt;p&gt;/*Secure partition Code*/&lt;br /&gt;sample_partition.c&lt;/p&gt;
&lt;p&gt;#define TIMER_RELOAD_VALUE (1*1000*1000)&lt;br /&gt;&lt;strong&gt;static void gpiote0_handler(void)&lt;/strong&gt;&lt;br /&gt;{&lt;br /&gt; LOG_INFFMT(&amp;quot;gpiote0_handler called!!\n&amp;quot;);&lt;br /&gt; psa_irq_disable(TFM_GPIOTE0_IRQ_SIGNAL);&lt;br /&gt; psa_eoi(TFM_GPIOTE0_IRQ_SIGNAL);&lt;br /&gt;}&lt;br /&gt;&lt;strong&gt;static void spim4_handler(void)&lt;/strong&gt;&lt;br /&gt;{&lt;br /&gt; LOG_INFFMT(&amp;quot;spim4_handler called !\n&amp;quot;);&lt;br /&gt; psa_irq_disable(TFM_SPIM4_IRQ_SIGNAL);&lt;br /&gt; psa_eoi(TFM_SPIM4_IRQ_SIGNAL);&lt;br /&gt;}&lt;br /&gt;&lt;strong&gt;static void timer0_handler(void)&lt;/strong&gt;&lt;br /&gt;{&lt;br /&gt; LOG_INFFMT(&amp;quot;timer0_handler called!\n&amp;quot;);&lt;br /&gt; psa_irq_disable(TFM_TIMER0_IRQ_SIGNAL);&lt;br /&gt; psa_eoi(TFM_TIMER0_IRQ_SIGNAL);&lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;static void timer_init(NRF_TIMER_Type * TIMER, uint32_t ticks)&lt;br /&gt;{&lt;br /&gt; nrf_timer_mode_set(TIMER, NRF_TIMER_MODE_TIMER);&lt;br /&gt; nrf_timer_bit_width_set(TIMER, NRF_TIMER_BIT_WIDTH_32);&lt;br /&gt; nrf_timer_frequency_set(TIMER, NRF_TIMER_FREQ_1MHz);&lt;br /&gt; nrf_timer_cc_set(TIMER, NRF_TIMER_CC_CHANNEL0, ticks);&lt;br /&gt; nrf_timer_one_shot_enable(TIMER, NRF_TIMER_CC_CHANNEL0);&lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;static void timer_stop(NRF_TIMER_Type * TIMER)&lt;br /&gt;{&lt;br /&gt; nrf_timer_task_trigger(TIMER, NRF_TIMER_TASK_STOP);&lt;br /&gt; nrf_timer_int_disable(TIMER, NRF_TIMER_INT_COMPARE0_MASK);&lt;br /&gt; nrf_timer_event_clear(TIMER, NRF_TIMER_EVENT_COMPARE0);&lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;static void timer_start(NRF_TIMER_Type * TIMER)&lt;br /&gt;{&lt;br /&gt; timer_stop(TIMER);&lt;br /&gt; nrf_timer_task_trigger(TIMER, NRF_TIMER_TASK_CLEAR);&lt;br /&gt; nrf_timer_int_enable(TIMER, NRF_TIMER_INT_COMPARE0_MASK);&lt;br /&gt; nrf_timer_task_trigger(TIMER, NRF_TIMER_TASK_START);&lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;void tfm_plat_test_secure_timer_start(void)&lt;br /&gt;{&lt;br /&gt; timer_init(NRF_TIMER0, TIMER_RELOAD_VALUE);&lt;br /&gt; timer_start(NRF_TIMER0);&lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;void tfm_plat_test_secure_timer_stop(void)&lt;br /&gt;{&lt;br /&gt; timer_stop(NRF_TIMER0);&lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;void sample_partition_main(void)&lt;br /&gt;{&lt;br /&gt; psa_signal_t signals;&lt;br /&gt; &lt;br /&gt; &lt;strong&gt;psa_irq_enable(TFM_SPIM4_IRQ_SIGNAL);&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt; psa_irq_enable(TFM_GPIOTE0_IRQ_SIGNAL);&lt;/strong&gt;&lt;br /&gt; &lt;br /&gt;&lt;strong&gt; /*Start timer interrupt*/&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt; psa_irq_enable(TFM_TIMER0_IRQ_SIGNAL);&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt; tfm_plat_test_secure_timer_start();&lt;/strong&gt;&lt;br /&gt; &lt;br /&gt; /* Continually wait for one or more of the partition&amp;#39;s RoT Service or&lt;br /&gt; * interrupt signals to be asserted and then handle the asserted signal(s).&lt;br /&gt; */&lt;br /&gt; while (1) {&lt;br /&gt; &lt;strong&gt;signals = psa_wait(PSA_WAIT_ANY, PSA_BLOCK);&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;if (signals &amp;amp; TFM_GPIOTE0_IRQ_SIGNAL) {&lt;br /&gt; gpiote0_handler();&lt;br /&gt; }else if (signals &amp;amp; TFM_SPIM4_IRQ_SIGNAL) {&lt;br /&gt; spim4_handler();&lt;br /&gt; }else if (signals &amp;amp; TFM_TIMER0_IRQ_SIGNAL) {&lt;br /&gt; timer0_handler();&lt;br /&gt; } else {&lt;br /&gt; psa_panic();&lt;br /&gt; }&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;/*#####################################################################*/&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Enable GPIO IRQ in TFM 1.3 with zephry v2.7.0 on nrf5340DK</title><link>https://devzone.nordicsemi.com/thread/334332?ContentTypeID=1</link><pubDate>Fri, 15 Oct 2021 11:51:24 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:a863ab2e-bd09-470d-9f6b-75f6acff1a54</guid><dc:creator>Einar Thorsrud</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;I am not sure about this to be honest, but I have asked the team working on TF-M support in the nRF Connect SDK to look at it.&lt;/p&gt;
&lt;p&gt;In the mean time, can you explain a bit more about your configuration, and perhaps share a code example of what you have done? Did you get the GPIOTE and timer&amp;nbsp;configuration in general to work in non-secure domain, so that this question is isolated to secure domain and TF-M? Please elaborate.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>