<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>compilador arm embarcado - MCU &amp; FPGA</title>
	<atom:link href="https://mcu.tec.br/tags/compilador-arm-embarcado/feed/" rel="self" type="application/rss+xml" />
	<link>https://mcu.tec.br</link>
	<description>Microcontroladores &#38; FPGA</description>
	<lastBuildDate>Sat, 19 Jul 2025 22:38:04 +0000</lastBuildDate>
	<language>pt-BR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://mcu.tec.br/wp-content/uploads/2025/02/Robo-para-o-site-MCU.tec_.br-512x512-1-150x150.png</url>
	<title>compilador arm embarcado - MCU &amp; FPGA</title>
	<link>https://mcu.tec.br</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Situação Atual do Suporte GCC/Clang para Cortex-M55 e STM32N6</title>
		<link>https://mcu.tec.br/geral/situacao-atual-do-suporte-gcc-clang-para-cortex-m55-e-stm32n6/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=situacao-atual-do-suporte-gcc-clang-para-cortex-m55-e-stm32n6</link>
		
		<dc:creator><![CDATA[Carlos Delfino]]></dc:creator>
		<pubDate>Sat, 19 Jul 2025 22:38:01 +0000</pubDate>
				<category><![CDATA[geral]]></category>
		<category><![CDATA[armclang vs gcc]]></category>
		<category><![CDATA[armv8.1-m suporte gcc]]></category>
		<category><![CDATA[clang cortex-m55]]></category>
		<category><![CDATA[compilador arm embarcado]]></category>
		<category><![CDATA[desempenho mve gcc]]></category>
		<category><![CDATA[desenvolvimento stm32 com helium]]></category>
		<category><![CDATA[extensão vetorial arm cortex-m]]></category>
		<category><![CDATA[gcc bugs cortex-m55]]></category>
		<category><![CDATA[gcc float16 cortex-m]]></category>
		<category><![CDATA[gcc para cortex-m55]]></category>
		<category><![CDATA[instruções helium mve]]></category>
		<category><![CDATA[intrínsecas helium stm32]]></category>
		<category><![CDATA[otimização llvm cortex-m]]></category>
		<category><![CDATA[regressões gcc arm]]></category>
		<category><![CDATA[stm32n6 compilador]]></category>
		<category><![CDATA[suporte helium em clang]]></category>
		<category><![CDATA[suporte helium gcc 11]]></category>
		<category><![CDATA[toolchain stm32n6]]></category>
		<category><![CDATA[vetorização cortex-m55]]></category>
		<guid isPermaLink="false">https://mcu.tec.br/?p=595</guid>

					<description><![CDATA[<p>Descubra os principais desafios e regressões no suporte ao Cortex-M55 e à extensão Helium (MVE) com os compiladores GCC e Clang. Saiba por que o GCC 11 ainda é preferido para o STM32N6 e o que esperar do armclang.</p>
<p>The post <a href="https://mcu.tec.br/geral/situacao-atual-do-suporte-gcc-clang-para-cortex-m55-e-stm32n6/">Situação Atual do Suporte GCC/Clang para Cortex-M55 e STM32N6</a> first appeared on <a href="https://mcu.tec.br">MCU & FPGA</a>.</p>]]></description>
										<content:encoded><![CDATA[<p class="wp-block-paragraph">Observando o fluxo atual de desenvolvimento, <strong>não há indícios de mudanças significativas no suporte ao Cortex-M55</strong> que já estejam em andamento para o GCC ou o ARM Compiler (armclang), até pelo menos <strong>novembro de 2022</strong>. O ecossistema parece estar em um momento de pausa estratégica, aguardando a implantação mais ampla dos microcontroladores baseados no <strong>Cortex-M55</strong> (como os da série <strong>STM32N6</strong>, ainda não amplamente distribuídos), o que naturalmente trará uma onda de inspeção crítica dos resultados e, potencialmente, uma nova fase de refinamentos para a arquitetura <strong>ARMv8.1-M</strong> e o conjunto de instruções vetoriais <strong>Helium (MVE &#8211; M-Profile Vector Extension)</strong>, além da implementação inicial.</p>



<h3 class="wp-block-heading">Erros de Compilação no GCC Identificados Durante Testes</h3>



<p class="wp-block-paragraph">Durante testes práticos com <strong>instruções vetoriais Helium</strong>, alguns erros de compilação foram observados no GCC:</p>



<ul class="wp-block-list">
<li><strong>Bug 107714</strong> – MVE: modo de endereçamento inválido gerado para instruções <code>VLD2</code></li>



<li><strong>Bug 107515</strong> – MVE: funções genéricas não aceitam escalares do tipo <code>_Float16</code></li>



<li><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1fa79.png" alt="🩹" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Outro problema relacionado ao manuseio de escalares genéricos foi endereçado neste patch:<br><a class="" href="https://gcc.gnu.org/pipermail/gcc-patches/2022-November/606575.html">https://gcc.gnu.org/pipermail/gcc-patches/2022-November/606575.html</a></li>
</ul>



<h3 class="wp-block-heading">Regressões de Código com GCC 12/13</h3>



<p class="wp-block-paragraph">Foi observado também que <strong>versões mais recentes do GCC (12 e 13)</strong> produzem código <strong>pior otimizado para Helium</strong> em comparação com o <strong>GCC 11</strong>. Isso foi confirmado por relatórios independentes:</p>



<ul class="wp-block-list">
<li><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f41e.png" alt="🐞" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong>Bug 107674</strong> – Regressões nas instruções <code>VCTP</code> e <code>LDR/STR</code> vetoriais em GCC 11/12/13</li>
</ul>



<p class="wp-block-paragraph">Até o momento da redação deste relatório, <strong>nenhum desses problemas havia sido totalmente resolvido</strong>.</p>



<h3 class="wp-block-heading">Situação do ARMCLANG (Compilador da ARM)</h3>



<p class="wp-block-paragraph">Nenhum erro de compilação foi encontrado utilizando o <code>armclang</code>, <strong>mas ele perdeu uma oportunidade significativa de otimização</strong>:<br>gerou <strong>muitas instruções redundantes de predição &#8220;todas as lanes&#8221;</strong> em loops Helium com unrolling completo.<br>Esse comportamento foi reportado internamente no caso <code>03389110</code>, <strong>mas nenhuma correção foi prometida</strong>.</p>



<p class="wp-block-paragraph">Também foram relatados <strong>problemas visuais no Arm Development Studio</strong> ao exibir a desmontagem (disassembly) e variáveis com Helium, com <strong>algumas correções em andamento</strong>.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Contexto Adicional para STM32N6 e Toolchains</h2>



<p class="wp-block-paragraph">A linha <strong>STM32N6</strong>, anunciada com suporte ao <strong>Cortex-M55 e Helium</strong>, ainda é recente e <strong>não está plenamente integrada aos toolchains open-source</strong>. Os problemas relatados afetam diretamente o uso de <strong>instruções SIMD vetoriais</strong> com o MVE, que são parte essencial da proposta de eficiência de DSP no M55.</p>



<h3 class="wp-block-heading">Sobre o <strong>GCC</strong>:</h3>



<ul class="wp-block-list">
<li>O suporte ao Helium em GCC ainda é considerado <strong>experimental</strong>.</li>



<li>O back-end para MVE começou a amadurecer no <strong>GCC 11</strong>, mas regressões apareceram nas versões seguintes.</li>



<li>Desenvolvedores interessados em performance com MVE devem <strong>testar múltiplas versões do GCC</strong> e usar <strong>flags específicas</strong> para controle de vetorização (<code>-march=armv8.1-m.main+mve.fp</code>, <code>-mfloat-abi=hard</code>, etc.).</li>
</ul>



<h3 class="wp-block-heading">Sobre o <strong>Clang/LLVM</strong>:</h3>



<ul class="wp-block-list">
<li>O <code>Clang</code> ainda <strong>não possui suporte pleno ao Helium (MVE)</strong>.</li>



<li>A ARM oferece o <code>armclang</code>, que é baseado em LLVM, mas com suporte proprietário ao MVE.</li>



<li>Esse compilador geralmente oferece <strong>melhor geração de código para ARMv8.1-M</strong>, mas é <strong>fechado e licenciado</strong>.</li>
</ul>



<h3 class="wp-block-heading">Dica para desenvolvedores STM32N6:</h3>



<p class="wp-block-paragraph"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f527.png" alt="🔧" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Para testar o suporte real no STM32N6:</p>



<ul class="wp-block-list">
<li>Use o <strong>toolchain oficial da ARM</strong> (<code>armclang</code>) para avaliar o uso das intrínsecas do Helium.</li>



<li>Ao usar GCC, prefira <strong>versões mais antigas como a 11</strong> para códigos críticos que dependam do vetorizar adequado.</li>



<li>Monitore os bugs na <a>Bugzilla da GCC</a> relacionados a <code>arm</code> + <code>MVE</code>.</li>
</ul><p>The post <a href="https://mcu.tec.br/geral/situacao-atual-do-suporte-gcc-clang-para-cortex-m55-e-stm32n6/">Situação Atual do Suporte GCC/Clang para Cortex-M55 e STM32N6</a> first appeared on <a href="https://mcu.tec.br">MCU & FPGA</a>.</p>]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">595</post-id>	</item>
	</channel>
</rss>
