<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<p>definitions for microcontrollers are available in the
rtl/embedded/arm directory, there is one (sometimes several)
pascal file for a class of microcontrollers of one vendor.</p>
<p>There is some light glue in the compiler/arm/cpuinfo.pas and
systems/t_embed.pas directory to make a new microcontroller
available.</p>
<p>What I do is to auto-generate the main microcontroller file from
the header files of the microcontroller vendor.</p>
<p>On top of this you can then build your own library or extend pxl.</p>
<p><br>
</p>
<p>Michael<br>
</p>
<p><br>
</p>
<div class="moz-cite-prefix">Am 07.09.18 um 12:45 schrieb Alfred:<br>
</div>
<blockquote type="cite"
cite="mid:emed5f1096-fa77-460c-9825-14a2d451aea0@alfsacer">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<style><![CDATA[#x99140e0c1d6a4e40a91fdb9ce47b12e0{
font-family:'Segoe UI';
font-size:12pt;
}#x2edaf26808594c9ab09bf5a9bacf8cc1{
font-family:'Segoe UI';
font-size:12pt;
}#xdd7be2969fb2492f940c0c10e0ff1c6b{
font-family:'Segoe UI';
font-size:12pt;
}#xa8e42006782f4540a05bd685b14e35b2{
font-family:'Segoe UI';
font-size:12pt;
}#xea798b92e0cf41ae81b06163a50020e8{
font-family:'Segoe UI';
font-size:12pt;
}#xebf1bcb88d134ec7a43afb100f84807a{
font-family:'Segoe UI';
font-size:12pt;
}#x550a2a54d1cb483085428ba56062d351{
font-family:'Segoe UI';
font-size:12pt;
}]]></style>
<style id="css_styles"><![CDATA[
blockquote.cite { margin-left: 5px; margin-right: 0px; padding-left: 10px; padding-right:0px; border-left: 1px solid #cccccc }
blockquote.cite2 {margin-left: 5px; margin-right: 0px; padding-left: 10px; padding-right:0px; border-left: 1px solid #cccccc; margin-top: 3px; padding-top: 0px; }
a img { border: 0px; }
li[style='text-align: center;'], li[style='text-align: right;'] { list-style-position: inside;}
body { font-family: Segoe UI; font-size: 12pt; }
]]></style>
Hello,
<div><br>
</div>
<div>Intro.</div>
<div><br>
</div>
<div>After a long period of using C for writing firmware for
Microchip PIC24 and PIC32, I am now switching hardware and
software.</div>
<div>For future projects, I will use:</div>
<div>* the Atmel/Microchip ATSAM series; these are Cortex M-0/3/4
MPU.</div>
<div>
<div id="xebf1bcb88d134ec7a43afb100f84807a">
<div>
<div>* FPC for writing the firmware.</div>
</div>
</div>
</div>
<div>First tests show a successful use of FPC on ATSAMD14 and
ATSAMD21 and ATSAMCx.</div>
<div><br>
</div>
<div>Sidenote.</div>
<div><br>
</div>
<div>As abstraction-layer, I use the pxl library.</div>
<div>See : <a href="https://asphyre.net/products/pxl"
style="font-size: 12pt;" moz-do-not-send="true">https://asphyre.net/products/pxl</a></div>
<div>This library allows me to use apps, that access hardware,
transparent on nearly all platforms, including Ultibo.</div>
<div>Code using pxl will look like this:</div>
<div>const<br>
PinLED = 9;</div>
<div>var</div>
<div> FGPIO : TCustomGPIO;<br>
begin<br>
FGPIO := TMicroGPIO.Create; //<- for arm embedded on ATSAM.</div>
<div> //FGPIO := TFastGPIO.Create; //<- for RPi running Linux.<br>
FGPIO.PinMode[PinLED] := TPinMode.Output;<br>
FGPIO.PinValue[PinLED] := TPinValue.High;</div>
<div>
<div id="xea798b92e0cf41ae81b06163a50020e8">
<div>
<div> FGPIO.Destroy;</div>
</div>
</div>
</div>
<div>end;</div>
<div><br>
</div>
<div>Question.</div>
<div><br>
</div>
<div>There are many different ATSAM processors. All with many
different features and peripherals.</div>
<div>I would like to add (many of) them as embedded targets.</div>
<div><br>
</div>
<div>To prevent cluttering of directories, I propose to use small
definition units, that use include and switches to make a
(rough) differentiation between ATSAM-processors. The switches
are used in the include-files to filter features.</div>
<div><br>
</div>
<div>************************************************</div>
<div>unit samd10c14;<br>
<br>
{$define samd10c14}<br>
<br>
interface<br>
<br>
const<br>
FLASH_SIZE = $4000; //* 16 kB */<br>
FLASH_PAGE_SIZE = 64;<br>
FLASH_NB_OF_PAGES = 256;<br>
FLASH_USER_PAGE_SIZE = 64;<br>
HMCRAMC0_SIZE = $1000; //* 4 kB */<br>
<br>
{$i atmel/sam/sam-base.inc}<br>
{$i atmel/sam/sam-irq.inc}<br>
{$i atmel/sam/sam-ac.inc}<br>
{$i atmel/sam/sam-adc.inc}</div>
<div>......</div>
<div>end;</div>
<div>
<div id="x550a2a54d1cb483085428ba56062d351">
<div>
<div>************************************************</div>
</div>
<div>The {$define samd10c14} is used in the include-files to
enable/disable features.</div>
<div>This allows for a very efficient re-use of code.</div>
<div><br>
</div>
<div>Would the above be acceptable to be included in FPC trunk
?</div>
<div>Or are there other (better) ways to add ATSAM embedded
targets ?</div>
<div><br>
</div>
<div>Thanks for your advice.</div>
</div>
</div>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<pre class="moz-quote-pre" wrap="">_______________________________________________
fpc-devel maillist - <a class="moz-txt-link-abbreviated" href="mailto:fpc-devel@lists.freepascal.org">fpc-devel@lists.freepascal.org</a>
<a class="moz-txt-link-freetext" href="http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel">http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel</a>
</pre>
</blockquote>
</body>
</html>