<rss version="2.0">
 <channel>
  <title>MicroZig Devlog</title>
  <link>https://microzig.tech/</link>
  <description>Curated list of changes to MicroZig</description>
  <generator>Zine -- https://zine-ssg.io</generator>
  <language>en-us</language>
  <lastBuildDate>Sun, 05 Apr 2026 18:53:47 +0000</lastBuildDate>
  
   
  
   
    <item>
     <pubDate>Wed, 07 Jan 2026 00:00:00 +0000</pubDate>
     <link>https://microzig.tech/devlog/#2026-01-07</link>
     <guid>https://microzig.tech/devlog/#2026-01-07</guid>
     <title>2026-01-07</title>
     <description>&lt;div id=&quot;2026-01-07&quot;&gt;&lt;h2&gt;&lt;a class=&quot;&quot; href=&quot;#2026-01-07&quot;&gt;MSP430 Support&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;/devlog/msp430-01.gif&quot;&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://www.ti.com/product-category/microcontrollers-processors/mcus/msp430/overview.html&quot; target=&quot;_blank&quot;&gt;MSP430&lt;/a&gt; is a microcontroller line from Texas Instruments. It’s a 16-bit RISC architecture with only two CPU variants. That combined with the excellent documentation, it’s a pleasure to read about. The board seen in the above gif is the Launch pad for the MSP430F5529, which is what I (Matthew Knight) learned on, in university.&lt;/p&gt;&lt;/div&gt;</description>
    </item>
   
  
   
    <item>
     <pubDate>Mon, 07 Jul 2025 00:00:00 +0000</pubDate>
     <link>https://microzig.tech/devlog/#2025-07-07</link>
     <guid>https://microzig.tech/devlog/#2025-07-07</guid>
     <title>2025-07-07</title>
     <description>&lt;div id=&quot;2025-07-07&quot;&gt;&lt;h2&gt;&lt;a class=&quot;&quot; href=&quot;#2025-07-07&quot;&gt;Printer&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;/devlog/printer-01.png&quot;&gt;&lt;/p&gt;&lt;p&gt;Printer is a tool to process logging output from your code and print it in a readable and pretty format. As of now it only annotates addresses from stack traces with source code locations, but it can be extended later to also print defmt (when this kind of logger will be added to microzig). You can also use it as a library to write build system tools (checkout the rp2xxx_flasher example).&lt;/p&gt;&lt;/div&gt;</description>
    </item>
   
  
   
    <item>
     <pubDate>Thu, 26 Jun 2025 00:00:00 +0000</pubDate>
     <link>https://microzig.tech/devlog/#2025-06-26</link>
     <guid>https://microzig.tech/devlog/#2025-06-26</guid>
     <title>2025-06-26</title>
     <description>&lt;div id=&quot;2025-06-26&quot;&gt;&lt;h2&gt;&lt;a class=&quot;&quot; href=&quot;#2025-06-26&quot;&gt;Segger RTT Support&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Segger makes a popular open source utility for sending and receiving data to/from an MCU via a JLink probe called &lt;a href=&quot;https://kb.segger.com/RTT&quot; target=&quot;_blank&quot;&gt;Real Time Trace&lt;/a&gt;. Support for this protocol was ported to pure Zig, and is available to be used by Arm Cortex-M targets. This enables both logging and sending data from/to the MCU via Segger’s &lt;a href=&quot;https://kb.segger.com/J-Link_RTT_Viewer&quot; target=&quot;_blank&quot;&gt;RTT Viewer&lt;/a&gt; utility.&lt;/p&gt;&lt;/div&gt;</description>
    </item>
   
  
   
    <item>
     <pubDate>Sun, 22 Jun 2025 00:00:00 +0000</pubDate>
     <link>https://microzig.tech/devlog/#2025-06-22</link>
     <guid>https://microzig.tech/devlog/#2025-06-22</guid>
     <title>2025-06-22</title>
     <description>&lt;div id=&quot;2025-06-22&quot;&gt;&lt;h2&gt;&lt;a class=&quot;&quot; href=&quot;#2025-06-22&quot;&gt;Regz Wizard&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;/devlog/regz-wizard-01.png&quot;&gt;&lt;/p&gt;&lt;p&gt;Regz is the program responsible for generating code to access MMIO within MicroZig. We’ve started building a GUI for it called Regz Wizard. It’s built on top of &lt;a href=&quot;https://github.com/david-vanderson/dvui&quot; target=&quot;_blank&quot;&gt;DVUI&lt;/a&gt;, and right now it displays the generated code for an ATDF or SVD file.&lt;/p&gt;&lt;p&gt;In the future it will aid in patching files. Keeping track of changes to an original register schema is important for when that schema is updated, and reproducing changes on similar hardware. &lt;a href=&quot;https://github.com/embassy-rs/stm32-data&quot; target=&quot;_blank&quot;&gt;Some projects exist&lt;/a&gt; just to provide consistent data structure between MCUs. This consistency makes it easier to write HALs that are portable across multiple MCUs.&lt;/p&gt;&lt;/div&gt;</description>
    </item>
   
  
   
    <item>
     <pubDate>Thu, 19 Jun 2025 00:00:00 +0000</pubDate>
     <link>https://microzig.tech/devlog/#2025-06-19</link>
     <guid>https://microzig.tech/devlog/#2025-06-19</guid>
     <title>2025-06-19</title>
     <description>&lt;div id=&quot;2025-06-19&quot;&gt;&lt;h2&gt;&lt;a class=&quot;&quot; href=&quot;#2025-06-19&quot;&gt;Initial micro:bit support&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Add support for the micro:bit 5x5 led display.&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;/devlog/microbit-display.jpeg&quot;&gt;&lt;/p&gt;&lt;/div&gt;</description>
    </item>
   
  
   
    <item>
     <pubDate>Wed, 18 Jun 2025 00:00:00 +0000</pubDate>
     <link>https://microzig.tech/devlog/#2025-06-18</link>
     <guid>https://microzig.tech/devlog/#2025-06-18</guid>
     <title>2025-06-18</title>
     <description>&lt;div id=&quot;2025-06-18&quot;&gt;&lt;h2&gt;&lt;a class=&quot;&quot; href=&quot;#2025-06-18&quot;&gt;Linker Script Generation&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Every firmware needs a linker script that places stuff where it belongs in memory. When porting microzig to a new target you must face the challenge of dealing with a linker script. But fear not as microzig has your back (in most cases). Let’s checkout the &lt;code&gt;linker_script&lt;/code&gt; field in &lt;code&gt;Target&lt;/code&gt;.&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;zig&quot;&gt;&lt;span class=&quot;constant variable_builtin type variable_member variable&quot;&gt;linker_script&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;constant variable_builtin type variable&quot;&gt;LinkerScript&lt;/span&gt; &lt;span class=&quot;operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;punctuation_delimiter&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;punctuation_bracket&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;punctuation_bracket&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;,&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code class=&quot;zig&quot;&gt;&lt;span class=&quot;keyword_modifier&quot;&gt;pub&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;constant variable_builtin type variable&quot;&gt;LinkerScript&lt;/span&gt; &lt;span class=&quot;operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;keyword_type&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;punctuation_bracket&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;comment_documentation comment spell&quot;&gt;/// Will anything be auto-generated for this linker script?&lt;/span&gt;
    &lt;span class=&quot;constant variable_builtin type variable_member variable&quot;&gt;generate&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;constant variable_builtin type variable&quot;&gt;GenerateOptions&lt;/span&gt; &lt;span class=&quot;operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;punctuation_delimiter&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;punctuation_bracket&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;punctuation_delimiter&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;constant variable_builtin type variable_member variable&quot;&gt;memory_regions_and_sections&lt;/span&gt; &lt;span class=&quot;operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;punctuation_delimiter&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;punctuation_bracket&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;punctuation_bracket&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;punctuation_bracket&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;comment_documentation comment spell&quot;&gt;/// Linker script path. Will be appended after what is auto-generated if it&amp;apos;s not null.&lt;/span&gt;
    &lt;span class=&quot;constant variable_builtin type variable_member variable&quot;&gt;file&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;operator&quot;&gt;?&lt;/span&gt;&lt;span class=&quot;constant variable_builtin type variable&quot;&gt;LazyPath&lt;/span&gt; &lt;span class=&quot;operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;constant_builtin&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;,&lt;/span&gt;

    &lt;span class=&quot;keyword_modifier&quot;&gt;pub&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;constant variable_builtin type variable&quot;&gt;GenerateOptions&lt;/span&gt; &lt;span class=&quot;operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;keyword_type&quot;&gt;union&lt;/span&gt;&lt;span class=&quot;punctuation_bracket&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;keyword_type&quot;&gt;enum&lt;/span&gt;&lt;span class=&quot;punctuation_bracket&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;punctuation_bracket&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;comment_documentation comment spell&quot;&gt;/// Only generates a comment with target info.&lt;/span&gt;
        &lt;span class=&quot;constant variable_builtin type variable&quot;&gt;none&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;comment_documentation comment spell&quot;&gt;/// Only generates memory regions.&lt;/span&gt;
        &lt;span class=&quot;constant variable_builtin type variable&quot;&gt;memory_regions&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;comment_documentation comment spell&quot;&gt;/// Generates memory regions and default sections based on the provided options.&lt;/span&gt;
        &lt;span class=&quot;constant variable_builtin type variable_member variable&quot;&gt;memory_regions_and_sections&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;keyword_type&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;punctuation_bracket&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;comment_documentation comment spell&quot;&gt;/// Where should rodata go?&lt;/span&gt;
            &lt;span class=&quot;constant variable_builtin type variable_member variable&quot;&gt;rodata_location&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;keyword_type&quot;&gt;enum&lt;/span&gt; &lt;span class=&quot;punctuation_bracket&quot;&gt;{&lt;/span&gt;
                &lt;span class=&quot;comment_documentation comment spell&quot;&gt;/// Place rodata in the first region tagged as flash.&lt;/span&gt;
                &lt;span class=&quot;constant variable_builtin type variable&quot;&gt;flash&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;comment_documentation comment spell&quot;&gt;/// Place rodata in the first region tagged as ram.&lt;/span&gt;
                &lt;span class=&quot;constant variable_builtin type variable&quot;&gt;ram&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;punctuation_bracket&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;punctuation_delimiter&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;constant variable_builtin type variable&quot;&gt;flash&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;punctuation_bracket&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;punctuation_bracket&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;punctuation_bracket&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;For an example let’s look at the target definition of rp2040. In this case we need a linker script that should also place the bootrom at the beginning of flash. Fortunately, we can still mostly auto-generate one and just patch it up a bit.&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;zig&quot;&gt;&lt;span class=&quot;comment_documentation comment spell&quot;&gt;// port/raspberrypi/rp2xxx/build.zig&lt;/span&gt;

&lt;span class=&quot;keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;constant variable_builtin type variable&quot;&gt;chip_rp2040&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;constant variable_builtin type variable&quot;&gt;microzig&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;constant variable_builtin type variable_member variable&quot;&gt;Target&lt;/span&gt; &lt;span class=&quot;operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;punctuation_delimiter&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;punctuation_bracket&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;comment_documentation comment spell&quot;&gt;// ...&lt;/span&gt;
    &lt;span class=&quot;punctuation_delimiter&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;constant variable_builtin type variable_member variable&quot;&gt;chip&lt;/span&gt; &lt;span class=&quot;operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;punctuation_delimiter&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;punctuation_bracket&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;comment_documentation comment spell&quot;&gt;// ...&lt;/span&gt;
        &lt;span class=&quot;punctuation_delimiter&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;constant variable_builtin type variable_member variable&quot;&gt;memory_regions&lt;/span&gt; &lt;span class=&quot;operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;operator&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;punctuation_bracket&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;punctuation_delimiter&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;punctuation_bracket&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;punctuation_delimiter&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;constant variable_builtin type variable_member variable&quot;&gt;tag&lt;/span&gt; &lt;span class=&quot;operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;punctuation_delimiter&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;constant variable_builtin type variable&quot;&gt;flash&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;punctuation_delimiter&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;constant variable_builtin type variable_member variable&quot;&gt;offset&lt;/span&gt; &lt;span class=&quot;operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;number&quot;&gt;0x10000000&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;punctuation_delimiter&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;constant variable_builtin type variable_member variable&quot;&gt;length&lt;/span&gt; &lt;span class=&quot;operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;number&quot;&gt;2048&lt;/span&gt; &lt;span class=&quot;operator&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;number&quot;&gt;1024&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;punctuation_delimiter&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;constant variable_builtin type variable_member variable&quot;&gt;access&lt;/span&gt; &lt;span class=&quot;operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;punctuation_delimiter&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;constant variable_builtin type variable&quot;&gt;rx&lt;/span&gt; &lt;span class=&quot;punctuation_bracket&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;punctuation_delimiter&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;punctuation_bracket&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;punctuation_delimiter&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;constant variable_builtin type variable_member variable&quot;&gt;tag&lt;/span&gt; &lt;span class=&quot;operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;punctuation_delimiter&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;constant variable_builtin type variable&quot;&gt;ram&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;punctuation_delimiter&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;constant variable_builtin type variable_member variable&quot;&gt;offset&lt;/span&gt; &lt;span class=&quot;operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;number&quot;&gt;0x20000000&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;punctuation_delimiter&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;constant variable_builtin type variable_member variable&quot;&gt;length&lt;/span&gt; &lt;span class=&quot;operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;number&quot;&gt;256&lt;/span&gt; &lt;span class=&quot;operator&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;number&quot;&gt;1024&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;punctuation_delimiter&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;constant variable_builtin type variable_member variable&quot;&gt;access&lt;/span&gt; &lt;span class=&quot;operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;punctuation_delimiter&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;constant variable_builtin type variable&quot;&gt;rwx&lt;/span&gt; &lt;span class=&quot;punctuation_bracket&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;punctuation_bracket&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;punctuation_bracket&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;punctuation_delimiter&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;constant variable_builtin type variable_member variable&quot;&gt;linker_script&lt;/span&gt; &lt;span class=&quot;operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;punctuation_delimiter&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;punctuation_bracket&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;comment_documentation comment spell&quot;&gt;// The `generate` field defaults to `.memory_regions_and_sections`.&lt;/span&gt;

        &lt;span class=&quot;comment_documentation comment spell&quot;&gt;// This will be appended at the end of the auto-generated linker&lt;/span&gt;
        &lt;span class=&quot;comment_documentation comment spell&quot;&gt;// script.&lt;/span&gt;
        &lt;span class=&quot;punctuation_delimiter&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;constant variable_builtin type variable_member variable&quot;&gt;file&lt;/span&gt; &lt;span class=&quot;operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;constant variable_builtin type variable&quot;&gt;b&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;type constant variable_builtin function_call variable_member variable&quot;&gt;path&lt;/span&gt;&lt;span class=&quot;punctuation_bracket&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;&amp;quot;ld/rp2040/sections.ld&amp;quot;&lt;/span&gt;&lt;span class=&quot;punctuation_bracket&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;punctuation_bracket&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;punctuation_bracket&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;punctuation_delimiter&quot;&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;/* port/raspberrypi/rp2xxx/ld/rp2040/sections.ld */

SECTIONS
{
  .boot2 : {
    __boot2_start__ = .;
    KEEP (*(.boot2))
    __boot2_end__ = .;
  } &amp;gt; flash0

  ASSERT(__boot2_end__ - __boot2_start__ == 256,
    &amp;quot;ERROR: Pico second stage bootloader must be 256 bytes in size&amp;quot;)
}
INSERT BEFORE .flash_start;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This is the generated linker script:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;/*
 * Target CPU:  cortex_m0plus
 * Target Chip: RP2040
 */

/*
 * This section was auto-generated by microzig.
 */
MEMORY
{
  flash0 (rx!w) : ORIGIN = 0x10000000, LENGTH = 0x00200000
  ram0 (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00040000
}
SECTIONS
{
  .flash_start :
  {
    KEEP(*(microzig_flash_start))
  } &amp;gt; flash0

  .text :
  {
    *(.text*)
    *(.srodata*)
    *(.rodata*)
  } &amp;gt; flash0

  .ARM.extab : {
    *(.ARM.extab* .gnu.linkonce.armextab.*)
  } &amp;gt; flash0

  .ARM.exidx : {
    *(.ARM.exidx* .gnu.linkonce.armexidx.*)
  } &amp;gt; flash0

  .data :
  {
    microzig_data_start = .;
    *(.sdata*)
    *(.data*)
    KEEP(*(.ram_text))
    microzig_data_end = .;
  } &amp;gt; ram0 AT&amp;gt; flash0

  .bss (NOLOAD) :
  {
    microzig_bss_start = .;
    *(.sbss*)
    *(.bss*)
    microzig_bss_end = .;
  } &amp;gt; ram0

  .flash_end :
  {
    microzig_flash_end = .;
  } &amp;gt; flash0

  microzig_data_load_start = LOADADDR(.data);
}
/*
 * End of auto-generated section.
 */
SECTIONS
{
  .boot2 : {
    __boot2_start__ = .;
    KEEP (*(.boot2))
    __boot2_end__ = .;
  } &amp;gt; flash0

  ASSERT(__boot2_end__ - __boot2_start__ == 256,
    &amp;quot;ERROR: Pico second stage bootloader must be 256 bytes in size&amp;quot;)
}
INSERT BEFORE .flash_start;
&lt;/code&gt;&lt;/pre&gt;&lt;h3&gt;FYI&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;If the ram memory region used by the linker script generator is executable, a &lt;code&gt;.ram_text&lt;/code&gt; section will be included for code that should be placed in ram. This applies to the rp2040 target where the section tagged as ram is executable.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;</description>
    </item>
   
  
 </channel>
</rss>
