<?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>Does the nrf51 ARM M0 implement LDREX?</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/10099/does-the-nrf51-arm-m0-implement-ldrex</link><description>The nrf51 ARM Cortex-M0 processors, according to the documentation, are &amp;quot;code compatible with Cortex-M3&amp;quot;. Does this mean they implement LDREX/STREX instructions for atomic operations? These instructions are generally not implemented on M0 due to the architecture</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Fri, 06 Nov 2015 08:41:35 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/10099/does-the-nrf51-arm-m0-implement-ldrex" /><item><title>RE: Does the nrf51 ARM M0 implement LDREX?</title><link>https://devzone.nordicsemi.com/thread/37456?ContentTypeID=1</link><pubDate>Fri, 06 Nov 2015 08:41:35 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:c3c0fb73-20d5-4b1d-bcb8-2e05becea067</guid><dc:creator>Petter Myhre</dc:creator><description>&lt;p&gt;@donbluetooth You can accept Håkon&amp;#39;s answer by clicking the grey circle next to i.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Does the nrf51 ARM M0 implement LDREX?</title><link>https://devzone.nordicsemi.com/thread/37455?ContentTypeID=1</link><pubDate>Thu, 05 Nov 2015 17:54:27 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:815fae0e-e1a7-4fa7-a56d-60ef72d8e6c3</guid><dc:creator>donbluetooth</dc:creator><description>&lt;p&gt;Ahh, now I understand how that statement should be read. Thanks for clarifying, Håkon.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Does the nrf51 ARM M0 implement LDREX?</title><link>https://devzone.nordicsemi.com/thread/37454?ContentTypeID=1</link><pubDate>Thu, 05 Nov 2015 17:42:34 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:9d107a5a-7abe-47a3-9947-b61394be9e78</guid><dc:creator>H&amp;#229;kon Alseth</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;This means that binaries compiled for the Cortex M0 will be compatible with the Cortex M3/M4.
A binary compiled for M3/M4 will not be compatible with the M0 core.&lt;/p&gt;
&lt;p&gt;It&amp;#39;s the Cortex M3/M4 which has the full thumb instruction set, vs. the Cortex M0 which only has partial thumb: &lt;a href="https://en.wikipedia.org/wiki/ARM_Cortex-M#Cortex-M0"&gt;en.wikipedia.org/.../ARM_Cortex-M&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Cheers,
Håkon&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Does the nrf51 ARM M0 implement LDREX?</title><link>https://devzone.nordicsemi.com/thread/37453?ContentTypeID=1</link><pubDate>Thu, 05 Nov 2015 16:57:34 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:4287fc12-59b0-4893-bbf6-1ee4e77df9dd</guid><dc:creator>donbluetooth</dc:creator><description>&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;I realize that the M0 is based on the ARMv6-M architecture. But, your own documentation states the following, from nRF51822 Product Specification v3.1 (section 3.1: CPU):&lt;/p&gt;
&lt;p&gt;&amp;quot;&amp;quot;&amp;quot;&lt;/p&gt;
&lt;p&gt;The ARM Cortex Microcontroller Software Interface Standard (CMSIS) hardware abstraction layer for the ARM Cortex-M processor series is implemented and available for M0 CPU. Code is forward compatible with ARM Cortex M3 based devices.&lt;/p&gt;
&lt;p&gt;&amp;quot;&amp;quot;&amp;quot;&lt;/p&gt;
&lt;p&gt;Since code is &amp;quot;forward compatible&amp;quot; I was hoping that you magically implemented ldrex/strex. In what way is the M0 used on the nrf51 &amp;quot;forward compatible&amp;quot; with the M3?&lt;/p&gt;
&lt;p&gt;Thanks,&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Does the nrf51 ARM M0 implement LDREX?</title><link>https://devzone.nordicsemi.com/thread/37452?ContentTypeID=1</link><pubDate>Thu, 05 Nov 2015 14:13:24 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:a6e32144-3060-4f2e-b508-66ce8b066fe9</guid><dc:creator>H&amp;#229;kon Alseth</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;It&amp;#39;s the other way around.
M3 is code compatible with M0, not M0 is code compatible with M3.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dht0008a/ch01s02s01.html"&gt;From ARMs docs&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The ARMv7 architecture added these to
the Thumb instruction set in the A and
R profiles. ARMv7-M supports the byte
and halfword but not the doubleword
variants. ARMv6-M does not support
exclusive accesses.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Cortex M0 is based on the ARMv6-m, &lt;a href="https://en.wikipedia.org/wiki/ARM_architecture#Architectural_licence"&gt;as listed here.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Cheers,
Håkon&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>