<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Abby</title>
    <description>The latest articles on DEV Community by Abby (@abby06).</description>
    <link>https://dev.to/abby06</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F436206%2Fa61fe71f-3578-400d-9ce3-f5ea22a74a07.jpg</url>
      <title>DEV Community: Abby</title>
      <link>https://dev.to/abby06</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/abby06"/>
    <language>en</language>
    <item>
      <title>Tell a Story about You &amp; RT-Thread.</title>
      <dc:creator>Abby</dc:creator>
      <pubDate>Thu, 14 Jul 2022 08:53:46 +0000</pubDate>
      <link>https://dev.to/abby06/tell-a-story-about-you-rt-thread-mkc</link>
      <guid>https://dev.to/abby06/tell-a-story-about-you-rt-thread-mkc</guid>
      <description>&lt;p&gt;&lt;a href="https://github.com/RT-Thread/rt-thread"&gt;Open Source RT-Thread IoT OS Project&lt;/a&gt; has hit 12000 followers on social media platforms.&lt;br&gt;
THANK YOU ALL FOR THE SUPPORT!&lt;/p&gt;

&lt;p&gt;So we’re launching this Campaign: Tell a Story About You &amp;amp; RT-Thread!&lt;/p&gt;

&lt;p&gt;We want to invite you to share your journeys and experiences with RT-Thread, eg, how did you get to know about RT-Thread? What features of RT-Thread IoT OS impressed you the most? What you’ve done with RT-Thread? Project Showcase? What do you expect to be featured on RT-Thread IoT OS next? Just anything you want to share.&lt;/p&gt;

&lt;p&gt;A post or a paragraph of code, or a picture or an article, all works! Remember to mention RT-Thread IoT OS on social media platforms or send us a message to inform us.&lt;/p&gt;

&lt;p&gt;Let’s make it more detailed:&lt;/p&gt;

&lt;p&gt;To Enter:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Follow RT-Thread IoT OS on &lt;a href="https://twitter.com/rt_thread"&gt;Twitter&lt;/a&gt;, F&lt;a href="https://www.facebook.com/RT-Thread-IoT-OS-110395723808463"&gt;acebook&lt;/a&gt;, or &lt;a href="https://www.linkedin.com/company/73004322"&gt;Linkedin&lt;/a&gt;, to keep updated with this campaign.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Share a post, a paragraph of code, a picture, or an article that can tell your stories with RT-Thread on &lt;a href="https://club.rt-thread.io/"&gt;RT-Thread Club&lt;/a&gt; or anywhere you like! If you’re sharing on social media platforms don’t forget to mention RT-Thread IoT OS.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Winners: We’ll send out 10 RISC-V Instruction full picture Desk Mat to 10 participants!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--qwLr_LmW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qu92jxfelhnn61x48c19.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qwLr_LmW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qu92jxfelhnn61x48c19.png" alt="Image description" width="880" height="495"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Winners Announcement: August 15&lt;/p&gt;

&lt;p&gt;Let’s Party! We are very much looking forward to receiving anything!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Day 3 of the 2022 RT-Thread IoT OS Global Tech Conference is about to Begin.</title>
      <dc:creator>Abby</dc:creator>
      <pubDate>Fri, 03 Jun 2022 14:54:15 +0000</pubDate>
      <link>https://dev.to/abby06/day-3-of-the-2022-rt-thread-iot-os-global-tech-conference-is-about-to-begin-4kk9</link>
      <guid>https://dev.to/abby06/day-3-of-the-2022-rt-thread-iot-os-global-tech-conference-is-about-to-begin-4kk9</guid>
      <description>&lt;p&gt;Howdy Developers!&lt;br&gt;
2022 RT-Thread IoT OS Global Tech Conference is about to begin! &lt;br&gt;
Click the link below to join the conference from Teams or Click the LINK here. &lt;a href="https://bit.ly/391C3pE"&gt;https://bit.ly/391C3pE&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3qPGlABJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/t3206gz01nvig3wahh4z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3qPGlABJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/t3206gz01nvig3wahh4z.png" alt="Image description" width="880" height="1411"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Looking forward to seeing you all!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>ONE Hour To GO! 2022 Open Source RT-Thread IoT OS Global Tech Conference.</title>
      <dc:creator>Abby</dc:creator>
      <pubDate>Wed, 01 Jun 2022 15:06:49 +0000</pubDate>
      <link>https://dev.to/abby06/one-hour-to-go-2022-open-source-rt-thread-iot-os-global-tech-conference-47n6</link>
      <guid>https://dev.to/abby06/one-hour-to-go-2022-open-source-rt-thread-iot-os-global-tech-conference-47n6</guid>
      <description>&lt;p&gt;Howdy Developers!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2022 RT-Thread IoT OS Global Tech Conference is about to begin! &lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--pDGxXhGU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ga1ikb782808bcjq2gqs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pDGxXhGU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ga1ikb782808bcjq2gqs.png" alt="Image description" width="880" height="495"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Register to join us: &lt;a href="https://forms.gle/niSBX2miBHEBUt8Q6"&gt;https://forms.gle/niSBX2miBHEBUt8Q6&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>2022 IoT OS Global Tech Conference Online &amp; Free</title>
      <dc:creator>Abby</dc:creator>
      <pubDate>Thu, 26 May 2022 13:56:01 +0000</pubDate>
      <link>https://dev.to/abby06/2022-iot-os-global-tech-conference-online-free-2ik1</link>
      <guid>https://dev.to/abby06/2022-iot-os-global-tech-conference-online-free-2ik1</guid>
      <description>&lt;p&gt;The 2021 RT-Thread IoT OS Tech Conference has 1500+ developers registered for the conference, over 20 topics were shared, featured on the open-source RT-Thread OS projects and the new development RT-Smart Micro-Kernel OS, RISC-V ecosystems and associated manufacturers introduced, STM32 ecosystems, embedded projects showcase, IoT security, trending technical knowledge such as AI, ROS, Rust, Micropython, and more!&lt;/p&gt;

&lt;p&gt;The 2022 RT-Thread IoT OS Global Tech Conference will continue kicking off with unique insights, exciting innovative technologies, inspiring projects showcases.&lt;/p&gt;

&lt;p&gt;As the time for the 2022 RT-Thread IoT OS Global Tech Conference approaches, we’re happy to attach more details to this conference so you’ll know what to expect.&lt;/p&gt;

&lt;p&gt;Free Register: &lt;a href="http://bit.ly/3GNujSQ"&gt;http://bit.ly/3GNujSQ&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The virtual conference will feature 29 trending topics, starting from June 1 to June 3. Here’s the Agenda:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Kq47j8uE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/klawnzlzbq1it2ihcmac.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Kq47j8uE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/klawnzlzbq1it2ihcmac.png" alt="Image description" width="880" height="1408"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dev Boards GiveAway&lt;/strong&gt;&lt;br&gt;
We’ll randomly giveaway the RT-Thread inside Dev Boards for participants, each day 3 times, and on June 3, we’ll have a Super Luxury Dev Boards Package to give away, so keep closely with the conference and stay tuned, you’re the lucky one!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--oVV2z17y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/foo5c9ml4vqthwh768zt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oVV2z17y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/foo5c9ml4vqthwh768zt.png" alt="Image description" width="880" height="462"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vmaa-GYo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fkmxayczbiabzroahet9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vmaa-GYo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fkmxayczbiabzroahet9.png" alt="Image description" width="880" height="462"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>June 1-3 2022 RGTC! 28 Topics + 9 Times Dev Boards Giveaway | Free&amp;Online</title>
      <dc:creator>Abby</dc:creator>
      <pubDate>Thu, 19 May 2022 05:39:51 +0000</pubDate>
      <link>https://dev.to/abby06/june-1-3-2022-rgtc-28-topics-9-times-dev-boards-giveaway-freeonline-2a8p</link>
      <guid>https://dev.to/abby06/june-1-3-2022-rgtc-28-topics-9-times-dev-boards-giveaway-freeonline-2a8p</guid>
      <description>&lt;p&gt;Hey Embedded &amp;amp; IoT Developer,&lt;/p&gt;

&lt;p&gt;We're Back! The 2022 RT-Thread IoT OS Global Tech Conference&lt;/p&gt;

&lt;p&gt;When: June 1- June 3&lt;/p&gt;

&lt;p&gt;Location: Microsoft Teams &lt;a href="http://bit.ly/3GNujSQ"&gt;http://bit.ly/3GNujSQ&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Join us for an exclusive event! You'll learn all about game-changing inventions from our speakers, get much more useful tips for embedded and IoT development, and hear a real review from experts.&lt;/p&gt;

&lt;p&gt;28 Topics + 9 Times Dev Boards Giveaway + Certificate for every participant.&lt;/p&gt;

&lt;p&gt;Agenda: &lt;a href="https://bit.ly/3lflwkq"&gt;https://bit.ly/3lflwkq&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Register to join us: &lt;a href="http://bit.ly/3GNujSQ"&gt;http://bit.ly/3GNujSQ&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Cheers!&lt;br&gt;
RT-Thread Cathy&lt;/p&gt;

</description>
    </item>
    <item>
      <title>June1-2: Free Virtual IoT OS Tech Conference</title>
      <dc:creator>Abby</dc:creator>
      <pubDate>Sat, 02 Apr 2022 06:02:55 +0000</pubDate>
      <link>https://dev.to/abby06/june1-2-free-virtual-iot-os-tech-conference-2jh7</link>
      <guid>https://dev.to/abby06/june1-2-free-virtual-iot-os-tech-conference-2jh7</guid>
      <description>&lt;p&gt;The most inspired event for developers! You’re invited to talk, to share, to express, to discover, to explore the most cutting-edge advancements in IoT&amp;amp;Embedded with the others!&lt;/p&gt;

&lt;p&gt;The 2021 RT-Thread IoT OS Tech Conference has 1500+ developers registered for the conference, over 20 topics were shared, featured on the open-source RT-Thread OS projects and the new development RT-Smart Micro-Kernel OS, RISC-V ecosystems and associated manufacturers introduced, STM32 ecosystems, embedded projects showcase, IoT security, trending technical knowledge such as AI, ROS, Rust, Micropython, and more!&lt;/p&gt;

&lt;p&gt;The 2022 RT-Thread IoT OS Global Tech Conference will continue kicking off with unique insights, exciting innovative technologies, inspiring projects showcases.&lt;/p&gt;

&lt;p&gt;So join us to experience the next generation of IoT innovation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Register Now:&lt;/strong&gt; &lt;a href="https://bit.ly/3GNujSQ"&gt;https://bit.ly/3GNujSQ&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Call for Proposal:&lt;/strong&gt; &lt;a href="https://forms.gle/VytZsuTstebyqkA4A"&gt;https://forms.gle/VytZsuTstebyqkA4A&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  About RT-Thread IoT OS:
&lt;/h2&gt;

&lt;p&gt;RT-Thread is an open-source embedded real-time operating system, with its rich middle-tier components and extensive hardware and software ecosystem delivering robust support for the Internet of Things (IoT) industry. Since its inception in 2006, RT-Thread has powered 1 billion devices, which includes applications for wearable devices, smart home appliances, energy, automotive electronics, medical electronics, consumer electronics, and many other industries.&lt;/p&gt;

&lt;p&gt;Go to RT-Thread Github: &lt;a href="https://github.com/RT-Thread/rt-thread"&gt;https://github.com/RT-Thread/rt-thread&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Embedded GUI Contest</title>
      <dc:creator>Abby</dc:creator>
      <pubDate>Mon, 21 Mar 2022 02:57:11 +0000</pubDate>
      <link>https://dev.to/abby06/embedded-gui-contest-3h3j</link>
      <guid>https://dev.to/abby06/embedded-gui-contest-3h3j</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Fu4I8gIw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rrd68ynwnlna6d0riyqz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Fu4I8gIw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rrd68ynwnlna6d0riyqz.png" alt="Image description" width="880" height="495"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Internet of Everything extends the embedded devices that emphasize human-computer interaction to describe a more intelligent connection with graphical user interface (GUI) and voice to best clarify the value of the Internet of Things.&lt;/p&gt;

&lt;p&gt;We now have easy access to enjoy high-definition, high-nature interaction experiences pervaded through daily life, for example, the smartphone. However, introducing a colorful UI into a resource-limited embedded device (MCU) is not easy.&lt;/p&gt;

&lt;p&gt;So &lt;a href="https://www.rt-thread.io/"&gt;RT-Thread IoT OS&lt;/a&gt; partnered with &lt;a href="https://lvgl.io/"&gt;LVGL&lt;/a&gt;, &lt;a href="https://www.st.com/"&gt;STMicroelectronics&lt;/a&gt;, &lt;a href="https://www.nuvoton.com/"&gt;Nuvoton&lt;/a&gt;, and &lt;a href="https://www.nxp.com/"&gt;NXP&lt;/a&gt; to bring this contest, opening an opportunity for embedded developers that come from everywhere to explore more possibilities with embedded GUI.&lt;/p&gt;

&lt;p&gt;The mission is to develop a project with provided hardware and run the opensource RT-Thread IoT OS and LVGL(Light and Versatile Graphics Library). &lt;/p&gt;

&lt;p&gt;The hardware available for this contest: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;NXP RT1060EVKB *20 (Free Hardware) &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;STM32F469 Discovery*20 (Free Hardware) &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Nuvoton NuMaker-HMI-N9H30*20 (Free Hardware) &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All participants whose project is selected will receive the hardware.&lt;/p&gt;

&lt;p&gt;Cash prizes are on the line for the Embedded GUI Contest, and the stakes are extremely high:&lt;/p&gt;

&lt;p&gt;1st prize is $1,000*1 Participant+Certificate &lt;/p&gt;

&lt;p&gt;2nd prize is $500*2 Participants+Certificate&lt;/p&gt;

&lt;p&gt;3rd prize is $100*5 Participants+Certificate&lt;/p&gt;

&lt;p&gt;Getting started is easy, &lt;a href="https://forms.gle/6zGDt4nm8rnYVPQE6"&gt;write your project proposal Now&lt;/a&gt;! Be creative, and wow us!&lt;/p&gt;

&lt;p&gt;(Submissions deadline: May 1,2022 at 11:59 pm PST)&lt;/p&gt;

&lt;h2&gt;
  
  
  Resources Attached:
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Open Source RT-Thread IoT OS! What’s about it?&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;RT-Thread is an open-source embedded real-time operating system, with its rich middle-tier components and extensive hardware and software ecosystem delivering robust support for the Internet of Things (IoT) industry. Since its inception in 2006, RT-Thread has powered 1 billion devices, which includes applications for wearable devices, smart home appliances, energy, automotive electronics, medical electronics, consumer electronics, and many other industries.&lt;/p&gt;

&lt;p&gt;Go to RT-Thread Github: &lt;a href="https://github.com/RT-Thread/rt-thread"&gt;https://github.com/RT-Thread/rt-thread&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;RT-Thread website: &lt;a href="https://www.rt-thread.io/"&gt;https://www.rt-thread.io/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Open Source LVGL!&lt;/strong&gt;&lt;br&gt;
LVGL (Light and Versatile Graphics Library) is a free and open-source graphics library providing everything you need to create an embedded GUI with easy-to-use graphical elements, beautiful visual effects, and a low memory footprint.&lt;/p&gt;

&lt;p&gt;Check out the project: &lt;a href="https://lvgl.io/"&gt;https://lvgl.io/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NXP Semiconductors:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;NXP Semiconductors enables a smarter, safer and more sustainable world through innovation. As the world leader in secure connectivity solutions for embedded applications, NXP is pushing boundaries in the automotive, industrial &amp;amp; IoT, mobile, and communication infrastructure markets.&lt;/p&gt;

&lt;p&gt;Our Purpose: Bringing together bright minds to create breakthrough technologies that make the connected world better, safer and more secure&lt;/p&gt;

&lt;p&gt;More info about NXP RT1060EVKB:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/i-mx-rt-crossover-mcus/i-mx-rt1060-crossover-mcu-with-arm-cortex-m7-core:i.MX-RT1060"&gt;https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/i-mx-rt-crossover-mcus/i-mx-rt1060-crossover-mcu-with-arm-cortex-m7-core:i.MX-RT1060&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/RT-Thread/rt-thread/tree/master/bsp/imxrt/imxrt1060-nxp-evk"&gt;https://github.com/RT-Thread/rt-thread/tree/master/bsp/imxrt/imxrt1060-nxp-evk&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/RT-Thread/rt-thread/tree/master/bsp/imxrt/imxrt1060-nxp-evk/applications/lvgl"&gt;https://github.com/RT-Thread/rt-thread/tree/master/bsp/imxrt/imxrt1060-nxp-evk/applications/lvgl&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ST Microelectronics:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;At ST, we are 48,000 creators and makers of semiconductor technologies mastering the semiconductor supply chain with state-of-the-art manufacturing facilities. An independent device manufacturer, we work with more than 200,000 customers and thousands of partners to design and build products, solutions, and ecosystems that address their challenges and opportunities, and the need to support a more sustainable world. Our technologies enable smarter mobility, more efficient power and energy management, and the wide-scale deployment of the Internet of Things and 5G technology. ST is committed to becoming carbon neutral by 2027. Further information can be found at &lt;a href="http://www.st.com"&gt;www.st.com&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;More info about STM32F469 discovery:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.st.com/en/evaluation-tools/32f469idiscovery.html"&gt;https://www.st.com/en/evaluation-tools/32f469idiscovery.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/RT-Thread/rt-thread/tree/master/bsp/stm32/stm32f469-st-disco/applications/lvgl"&gt;https://github.com/RT-Thread/rt-thread/tree/master/bsp/stm32/stm32f469-st-disco/applications/lvgl&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/RT-Thread/rt-thread/tree/master/bsp/stm32/stm32f469-st-disco"&gt;https://github.com/RT-Thread/rt-thread/tree/master/bsp/stm32/stm32f469-st-disco&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Nuvoton Technology:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Nuvoton Technology Corporation (Nuvoton) was founded to bring innovative semiconductor solutions to the market. Nuvoton was spun-off as a Winbond Electronics affiliate in July 2008 and went public in September 2010 on the Taiwan Stock Exchange (TWSE). Nuvoton focuses on the developments of microcontroller, microprocessor, smart home, cloud security IC, battery monitoring IC, component, visual sensing and IoT with security and has strong market share in Industrial, Automotive, Communication, Consumer and Computer markets. Nuvoton owns 6-inch wafer fabs equipped with diversified processing technologies to provide professional wafer foundry services. Nuvoton provides products with a high performance/cost ratio for its customers by leveraging flexible technology, advanced design capability, and integration of digital and analog technologies. Nuvoton values long term relationships with its partners and customers and is dedicated to continuous innovation of its products, processes, and services. Nuvoton has established subsidiaries in the USA, China, Israel, India, Singapore, Korea and Japan to strengthen regional customer support and global management. For more information, please visit &lt;a href="http://www.nuvoton.com"&gt;http://www.nuvoton.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;More info about Nuvoton HMI EVB, check: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://direct.nuvoton.com/tw/numaker-hmi-n9h30"&gt;https://direct.nuvoton.com/tw/numaker-hmi-n9h30&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/RT-Thread/rt-thread/tree/master/bsp/nuvoton/nk-n9h30"&gt;https://github.com/RT-Thread/rt-thread/tree/master/bsp/nuvoton/nk-n9h30&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.lvgl.io/2022-02-18/numaker-hmi-n9h30-review"&gt;https://blog.lvgl.io/2022-02-18/numaker-hmi-n9h30-review&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Let's explore the journey of Embedded GUI Development.&lt;/strong&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Embedded GUI Webinar</title>
      <dc:creator>Abby</dc:creator>
      <pubDate>Mon, 21 Feb 2022 08:46:08 +0000</pubDate>
      <link>https://dev.to/abby06/embedded-gui-webinar-1bad</link>
      <guid>https://dev.to/abby06/embedded-gui-webinar-1bad</guid>
      <description>&lt;p&gt;As you can see, the Internet of Everything extends the embedded devices that emphasize human-computer interaction to describe a more intelligent connection with graphical user interface (GUI) and voice to best clarify the value of the Internet of Things. We now get very easy to enjoy the high-definition, high-nature interaction experiences pervaded through daily life, for example, the smartphone. However, introducing a colorful UI into a resource-limited embedded device (MCU) is not easy.&lt;/p&gt;

&lt;p&gt;RT-Thread partnered with LVGL and manufacturers to bring this webinar(a design contest will soon be launching), opening an opportunity for embedded developers that come from everywhere to explore more possibilities with embedded GUI. Topics feature several, such as discussing the best-fitting GUI for your projects, hardware commits to human-computer interaction, skills to simplify GUI development. Also, many examples and projects showcases will be introduced. &lt;/p&gt;

&lt;p&gt;⏰ Time: 3/15/2022, 8:00 AM PST&lt;br&gt;
✅ Free &amp;amp; Virtual&lt;br&gt;
✅ The e-certificate is provided to attendees.&lt;br&gt;
👉 Register now:  &lt;a href="https://bit.ly/3rNzOg6"&gt;https://bit.ly/3rNzOg6&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--a5Rjpyw1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lj6bryf7r5jm6apl08qw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--a5Rjpyw1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lj6bryf7r5jm6apl08qw.png" alt="Image description" width="880" height="495"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Halloween Event! What's on your workspace?</title>
      <dc:creator>Abby</dc:creator>
      <pubDate>Thu, 21 Oct 2021 03:32:51 +0000</pubDate>
      <link>https://dev.to/abby06/halloween-event-whats-on-your-workspace-4639</link>
      <guid>https://dev.to/abby06/halloween-event-whats-on-your-workspace-4639</guid>
      <description>&lt;p&gt;Halloween Event! What's on your workspace?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Take a picture of your workspace&lt;/li&gt;
&lt;li&gt;Share the picture below&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The most liked comment counted on this Feed and &lt;a href="https://club.rt-thread.io/ask/question/88.html" rel="noopener noreferrer"&gt;RT-Thread Club&lt;/a&gt; Feed will receive a special Halloween Gift.&lt;/p&gt;

&lt;p&gt;The winner will be announced on November 1st.&lt;/p&gt;

&lt;p&gt;Make sure that you're following the open source RT-Thread &lt;a href="https://www.facebook.com/RT-Thread-IoT-OS-110395723808463" rel="noopener noreferrer"&gt;Facebook&lt;/a&gt;, &lt;a href="https://twitter.com/rt_thread" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;, or &lt;a href="https://www.linkedin.com/company/73004322" rel="noopener noreferrer"&gt;Linkedin&lt;/a&gt; so you'll be updated with the winner announcement!&lt;/p&gt;

&lt;p&gt;Happy Dev's Halloween!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbuarpl5ea2rs8bkpcmix.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbuarpl5ea2rs8bkpcmix.jpg" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>halloween</category>
      <category>workspace</category>
      <category>opensource</category>
      <category>embedded</category>
    </item>
    <item>
      <title>Rust for Embedded Development</title>
      <dc:creator>Abby</dc:creator>
      <pubDate>Wed, 18 Aug 2021 03:41:02 +0000</pubDate>
      <link>https://dev.to/abby06/rust-for-embedded-development-m00</link>
      <guid>https://dev.to/abby06/rust-for-embedded-development-m00</guid>
      <description>&lt;h2&gt;
  
  
  What is &lt;a href="https://www.rust-lang.org/" rel="noopener noreferrer"&gt;Rust&lt;/a&gt;?
&lt;/h2&gt;

&lt;p&gt;Rust is a language that empowers everyone to build reliable and efficient software. It features&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;High Performance: Amazing fast speed and high memory utilization&lt;/li&gt;
&lt;li&gt;Reliability: Memory errors are able to be eliminated during compilation&lt;/li&gt;
&lt;li&gt;Productivity:  Great documentation, a friendly compiler with useful error messages, and top-notch tooling — an integrated package manager and build tool, smart multi-editor support with auto-completion and type inspections, an auto-formatter, and more.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why use RUST on Embedded Development?
&lt;/h2&gt;

&lt;p&gt;Rust is designed to guarantee both security and high performance. The design philosophy is right into what embedded development requires.&lt;br&gt;
While embedded software has running problems that are mostly due to its memory. The Rust language can be regarded as a compiler-oriented language, so you can be sure that you are using memory safely while compiling. Here are some of the benefits of Rust developing on embedded devices:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Powerful static analysis&lt;/li&gt;
&lt;li&gt;Flexible memory&lt;/li&gt;
&lt;li&gt;Fearless concurrency&lt;/li&gt;
&lt;li&gt;Interoperability&lt;/li&gt;
&lt;li&gt;Portability&lt;/li&gt;
&lt;li&gt;Community driven&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now, let's get it on the Open Source &lt;a href="https://github.com/RT-Thread/rt-thread" rel="noopener noreferrer"&gt;RT-Thread operating system&lt;/a&gt; to demonstrate how rust can be used for embedded development.&lt;/p&gt;
&lt;h2&gt;
  
  
  Call Rust in C
&lt;/h2&gt;

&lt;p&gt;When we're calling the Rust code in C code, requires us to package the Rust source code as a static library file. When the C code compiles, link it in.&lt;/p&gt;
&lt;h3&gt;
  
  
  Create lib Library
&lt;/h3&gt;

&lt;p&gt;1.Use &lt;code&gt;cargo init --lib rust_to_c&lt;/code&gt; to build a lib library in Clion. Add the following code to the lib.rs. The following function evaluates the sum of two values of type i32 and returns the result  :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight rust"&gt;&lt;code&gt;&lt;span class="nd"&gt;#![no_std]&lt;/span&gt;
&lt;span class="k"&gt;use&lt;/span&gt; &lt;span class="nn"&gt;core&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="nn"&gt;panic&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="n"&gt;PanicInfo&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nd"&gt;#[no_mangle]&lt;/span&gt;
&lt;span class="k"&gt;pub&lt;/span&gt; &lt;span class="k"&gt;extern&lt;/span&gt; &lt;span class="s"&gt;"C"&lt;/span&gt; &lt;span class="k"&gt;fn&lt;/span&gt; &lt;span class="nf"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;i32&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;i32&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;i32&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nd"&gt;#[panic_handler]&lt;/span&gt;
&lt;span class="k"&gt;fn&lt;/span&gt; &lt;span class="nf"&gt;panic&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;_info&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;PanicInfo&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;loop&lt;/span&gt;&lt;span class="p"&gt;{}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;2.Add the following code to the Cargo.toml file to tell Rustc what type of library to generate.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[lib]
name = "sum"
crate-type = ["staticlib"]
path = "src/lib.rs"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Cross-compilation
&lt;/h3&gt;

&lt;p&gt;1.Install armv7 target:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight rust"&gt;&lt;code&gt;   &lt;span class="n"&gt;rustup&lt;/span&gt; &lt;span class="n"&gt;target&lt;/span&gt; &lt;span class="n"&gt;add&lt;/span&gt; &lt;span class="n"&gt;armv7a&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;none&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;eabi&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;2.Generate static library file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight rust"&gt;&lt;code&gt;   &lt;span class="n"&gt;PS&lt;/span&gt; &lt;span class="n"&gt;C&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="n"&gt;Users&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="n"&gt;LiuKang&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="n"&gt;Desktop&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="n"&gt;RUST&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="n"&gt;rust_to_c&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;cargo&lt;/span&gt; &lt;span class="n"&gt;build&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;target&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;armv7a&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;none&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;eabi&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;release&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;verbose&lt;/span&gt;
          &lt;span class="n"&gt;Fresh&lt;/span&gt; &lt;span class="n"&gt;rust_to_c&lt;/span&gt; &lt;span class="n"&gt;v0&lt;/span&gt;&lt;span class="na"&gt;.1.0&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;C&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="n"&gt;Users&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="n"&gt;LiuKang&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="n"&gt;Desktop&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="n"&gt;RUST&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="n"&gt;rust_to_c&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
       &lt;span class="n"&gt;Finished&lt;/span&gt; &lt;span class="n"&gt;release&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;optimized&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="nf"&gt;target&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="mf"&gt;0.01&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Generate Header File
&lt;/h3&gt;

&lt;p&gt;1.Install &lt;a href="https://github.com/eqrion/cbindgen" rel="noopener noreferrer"&gt;cbindgen&lt;/a&gt;, cbindgen generates C/C++11 header file from the rust library:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;   cargo install --force cbindgen
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;2.Create a new &lt;code&gt;cbindgen.toml&lt;/code&gt; file under the project folder:&lt;/p&gt;

&lt;p&gt;3.Generate header file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;   cbindgen --config cbindgen.toml --crate rust_to_c --output sum.h
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Call Rust Library File
&lt;/h3&gt;

&lt;p&gt;1.Put the generated &lt;code&gt;sum.h&lt;/code&gt; and &lt;code&gt;sum.a&lt;/code&gt; files into the  &lt;code&gt;rt-thread\bsp\qemu-vexpress-a9\applications&lt;/code&gt; directory&lt;/p&gt;

&lt;p&gt;2.Modify the SConscript file and add static library:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight rust"&gt;&lt;code&gt;   &lt;span class="n"&gt;from&lt;/span&gt; &lt;span class="n"&gt;building&lt;/span&gt; &lt;span class="n"&gt;import&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;

   &lt;span class="n"&gt;cwd&lt;/span&gt;     &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;GetCurrentDir&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
   &lt;span class="n"&gt;src&lt;/span&gt;     &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;Glob&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="py"&gt;.c&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nf"&gt;Glob&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="py"&gt;.cpp&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
   &lt;span class="n"&gt;CPPPATH&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;cwd&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

   &lt;span class="n"&gt;LIBS&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;"libsum.a"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
   &lt;span class="n"&gt;LIBPATH&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nf"&gt;GetCurrentDir&lt;/span&gt;&lt;span class="p"&gt;()]&lt;/span&gt;

   &lt;span class="n"&gt;group&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;DefineGroup&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;'Applications&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;src&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;depend&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="err"&gt;''&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;CPPPATH&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;CPPPATH&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;LIBS&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;LIBS&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;LIBPATH&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;LIBPATH&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

   &lt;span class="nf"&gt;Return&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;'group&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;3.Call the sum function in the main function and get the return value and printf the value.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight rust"&gt;&lt;code&gt;   &lt;span class="err"&gt;#&lt;/span&gt;&lt;span class="n"&gt;include&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;stdint&lt;/span&gt;&lt;span class="py"&gt;.h&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
   &lt;span class="err"&gt;#&lt;/span&gt;&lt;span class="n"&gt;include&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;stdio&lt;/span&gt;&lt;span class="py"&gt;.h&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
   &lt;span class="err"&gt;#&lt;/span&gt;&lt;span class="n"&gt;include&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;stdlib&lt;/span&gt;&lt;span class="py"&gt;.h&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
   &lt;span class="err"&gt;#&lt;/span&gt;&lt;span class="n"&gt;include&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;rtthread&lt;/span&gt;&lt;span class="py"&gt;.h&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
   &lt;span class="err"&gt;#&lt;/span&gt;&lt;span class="n"&gt;include&lt;/span&gt; &lt;span class="s"&gt;"sum.h"&lt;/span&gt;

   &lt;span class="nb"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;void&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
   &lt;span class="p"&gt;{&lt;/span&gt;
       &lt;span class="n"&gt;int32_t&lt;/span&gt; &lt;span class="n"&gt;tmp&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

       &lt;span class="n"&gt;tmp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
       &lt;span class="nf"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"call rust sum(1, 2) = %d&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;tmp&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

       &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
   &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;4.In RT-Thread &lt;a href="https://www.rt-thread.io/download.html?download=Env" rel="noopener noreferrer"&gt;Env&lt;/a&gt; environment, use scons to compile the project and run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;      LiuKang@DESKTOP-538H6DE D:&lt;span class="se"&gt;\r&lt;/span&gt;epo&lt;span class="se"&gt;\g&lt;/span&gt;ithub&lt;span class="se"&gt;\r&lt;/span&gt;t-thread&lt;span class="se"&gt;\b&lt;/span&gt;sp&lt;span class="se"&gt;\q&lt;/span&gt;emu-vexpress-a9
      &lt;span class="nv"&gt;$ &lt;/span&gt;scons &lt;span class="nt"&gt;-j6&lt;/span&gt;
      scons: Reading SConscript files ...
      scons: &lt;span class="k"&gt;done &lt;/span&gt;reading SConscript files.

      scons: warning: you &lt;span class="k"&gt;do &lt;/span&gt;not seem to have the pywin32 extensions installed&lt;span class="p"&gt;;&lt;/span&gt;
      parallel &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;-j&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; builds may not work reliably with open Python files.
      File &lt;span class="s2"&gt;"D:&lt;/span&gt;&lt;span class="se"&gt;\s&lt;/span&gt;&lt;span class="s2"&gt;oftware&lt;/span&gt;&lt;span class="se"&gt;\e&lt;/span&gt;&lt;span class="s2"&gt;nv_released_1.2.0&lt;/span&gt;&lt;span class="se"&gt;\e&lt;/span&gt;&lt;span class="s2"&gt;nv&lt;/span&gt;&lt;span class="se"&gt;\t&lt;/span&gt;&lt;span class="s2"&gt;ools&lt;/span&gt;&lt;span class="se"&gt;\P&lt;/span&gt;&lt;span class="s2"&gt;ython27&lt;/span&gt;&lt;span class="se"&gt;\S&lt;/span&gt;&lt;span class="s2"&gt;cripts&lt;/span&gt;&lt;span class="se"&gt;\s&lt;/span&gt;&lt;span class="s2"&gt;cons.py"&lt;/span&gt;, line 204, &lt;span class="k"&gt;in&lt;/span&gt; &amp;lt;module&amp;gt;
      scons: Building targets ...
      scons: building associated VariantDir targets: build
      LINK rtthread.elf
      arm-none-eabi-objcopy &lt;span class="nt"&gt;-O&lt;/span&gt; binary rtthread.elf rtthread.bin
      arm-none-eabi-size rtthread.elf
     text    data     bss     dec     hex filename
   628220    2148   86700  717068   af10c rtthread.elf
      scons: &lt;span class="k"&gt;done &lt;/span&gt;building targets.

      LiuKang@DESKTOP-538H6DE D:&lt;span class="se"&gt;\r&lt;/span&gt;epo&lt;span class="se"&gt;\g&lt;/span&gt;ithub&lt;span class="se"&gt;\r&lt;/span&gt;t-thread&lt;span class="se"&gt;\b&lt;/span&gt;sp&lt;span class="se"&gt;\q&lt;/span&gt;emu-vexpress-a9
      &lt;span class="nv"&gt;$ &lt;/span&gt;qemu.bat
      WARNING: Image format was not specified &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="s1"&gt;'sd.bin'&lt;/span&gt; and probing guessed raw.
   Automatically detecting the format is dangerous &lt;span class="k"&gt;for &lt;/span&gt;raw images, write operations on block 0 will be restricted.
   Specify the &lt;span class="s1"&gt;'raw'&lt;/span&gt; format explicitly to remove the restrictions.

   &lt;span class="se"&gt;\ &lt;/span&gt;| /
      - RT -     Thread Operating System
   / | &lt;span class="se"&gt;\ &lt;/span&gt;    4.0.4 build Jul 28 2021
   2006 - 2021 Copyright by rt-thread team
      lwIP-2.1.2 initialized!
      &lt;span class="o"&gt;[&lt;/span&gt;I/sal.skt] Socket Abstraction Layer initialize success.
      &lt;span class="o"&gt;[&lt;/span&gt;I/SDIO] SD card capacity 65536 KB.
      &lt;span class="o"&gt;[&lt;/span&gt;I/SDIO] switching card to high speed failed!
      call rust &lt;span class="nb"&gt;sum&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;1, 2&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; 3
      msh /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Add, subtract, multiply and divide
&lt;/h3&gt;

&lt;p&gt;1.We can implement some complicated math in rust. In the lib.rs file, use the rust language to implement add, subtract, multiply and divide:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight rust"&gt;&lt;code&gt;     &lt;span class="nd"&gt;#![no_std]&lt;/span&gt;
     &lt;span class="k"&gt;use&lt;/span&gt; &lt;span class="nn"&gt;core&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="nn"&gt;panic&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="n"&gt;PanicInfo&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;


     &lt;span class="nd"&gt;#[no_mangle]&lt;/span&gt;
     &lt;span class="k"&gt;pub&lt;/span&gt; &lt;span class="k"&gt;extern&lt;/span&gt; &lt;span class="s"&gt;"C"&lt;/span&gt; &lt;span class="k"&gt;fn&lt;/span&gt; &lt;span class="nf"&gt;add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;i32&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;i32&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;i32&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
         &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;
     &lt;span class="p"&gt;}&lt;/span&gt;

     &lt;span class="nd"&gt;#[no_mangle]&lt;/span&gt;
     &lt;span class="k"&gt;pub&lt;/span&gt; &lt;span class="k"&gt;extern&lt;/span&gt; &lt;span class="s"&gt;"C"&lt;/span&gt; &lt;span class="k"&gt;fn&lt;/span&gt; &lt;span class="nf"&gt;subtract&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;i32&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;i32&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;i32&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
         &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;
     &lt;span class="p"&gt;}&lt;/span&gt;

     &lt;span class="nd"&gt;#[no_mangle]&lt;/span&gt;
     &lt;span class="k"&gt;pub&lt;/span&gt; &lt;span class="k"&gt;extern&lt;/span&gt; &lt;span class="s"&gt;"C"&lt;/span&gt; &lt;span class="k"&gt;fn&lt;/span&gt; &lt;span class="nf"&gt;multiply&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;i32&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;i32&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;i32&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
         &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;
     &lt;span class="p"&gt;}&lt;/span&gt;

     &lt;span class="nd"&gt;#[no_mangle]&lt;/span&gt;
     &lt;span class="k"&gt;pub&lt;/span&gt; &lt;span class="k"&gt;extern&lt;/span&gt; &lt;span class="s"&gt;"C"&lt;/span&gt; &lt;span class="k"&gt;fn&lt;/span&gt; &lt;span class="nf"&gt;divide&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;i32&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;i32&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;i32&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
         &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;
     &lt;span class="p"&gt;}&lt;/span&gt;

     &lt;span class="nd"&gt;#[panic_handler]&lt;/span&gt;
     &lt;span class="k"&gt;fn&lt;/span&gt; &lt;span class="nf"&gt;panic&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;_info&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;PanicInfo&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
         &lt;span class="k"&gt;loop&lt;/span&gt;&lt;span class="p"&gt;{}&lt;/span&gt;
     &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;2.Build library files and header files and place them in the application directory&lt;/p&gt;

&lt;p&gt;3.Use scons to compile, if errors jumped on link up, find the solution on its official &lt;a href="https://github.com/rust-lang/compiler-builtins/issues/353" rel="noopener noreferrer"&gt;Github&lt;/a&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight rust"&gt;&lt;code&gt;      &lt;span class="n"&gt;LINK&lt;/span&gt; &lt;span class="n"&gt;rtthread&lt;/span&gt;&lt;span class="py"&gt;.elf&lt;/span&gt;
      &lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;software&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;env_released_1&lt;/span&gt;&lt;span class="na"&gt;.2.0&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;env&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;tools&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;gnu_gcc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;arm_gcc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;mingw&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;bin&lt;/span&gt;&lt;span class="o"&gt;/../&lt;/span&gt;&lt;span class="n"&gt;lib&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;gcc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;arm&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;none&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;eabi&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mf"&gt;5.4&lt;/span&gt;&lt;span class="na"&gt;.1&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;armv7&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;ar&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;thumb&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="n"&gt;libgcc&lt;/span&gt;&lt;span class="nf"&gt;.a&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;_arm_addsubdf3&lt;/span&gt;&lt;span class="py"&gt;.o&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="n"&gt;function&lt;/span&gt; &lt;span class="err"&gt;`&lt;/span&gt;&lt;span class="n"&gt;__aeabi_ul2d&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
      &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="py"&gt;.text&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;0x304&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="n"&gt;multiple&lt;/span&gt; &lt;span class="n"&gt;definition&lt;/span&gt; &lt;span class="n"&gt;of&lt;/span&gt; &lt;span class="err"&gt;`&lt;/span&gt;&lt;span class="n"&gt;__aeabi_ul2d&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;
      &lt;span class="n"&gt;applications&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="n"&gt;libsum&lt;/span&gt;&lt;span class="nf"&gt;.a&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;compiler_builtins&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;9&lt;/span&gt;&lt;span class="n"&gt;b744f6fddf5e719&lt;/span&gt;&lt;span class="py"&gt;.compiler_builtins&lt;/span&gt;&lt;span class="na"&gt;.20&lt;/span&gt;&lt;span class="n"&gt;m0qzjq&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;cgu&lt;/span&gt;&lt;span class="na"&gt;.117&lt;/span&gt;&lt;span class="py"&gt;.rcgu.o&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;cargo&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;registry&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;src&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;github&lt;/span&gt;&lt;span class="py"&gt;.com&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="n"&gt;ecc6299db9ec823&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;compiler_builtins&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;0.1&lt;/span&gt;&lt;span class="na"&gt;.35&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;src&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nb"&gt;float&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;conv&lt;/span&gt;&lt;span class="py"&gt;.rs&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;143&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;first&lt;/span&gt; &lt;span class="n"&gt;defined&lt;/span&gt; &lt;span class="n"&gt;here&lt;/span&gt;
      &lt;span class="n"&gt;collect2&lt;/span&gt;&lt;span class="py"&gt;.exe&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;error&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;ld&lt;/span&gt; &lt;span class="n"&gt;returned&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="n"&gt;exit&lt;/span&gt; &lt;span class="n"&gt;status&lt;/span&gt;
      &lt;span class="n"&gt;scons&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;***&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;rtthread&lt;/span&gt;&lt;span class="py"&gt;.elf&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="n"&gt;Error&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
      &lt;span class="n"&gt;scons&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;building&lt;/span&gt; &lt;span class="n"&gt;terminated&lt;/span&gt; &lt;span class="n"&gt;because&lt;/span&gt; &lt;span class="n"&gt;of&lt;/span&gt; &lt;span class="n"&gt;errors&lt;/span&gt;&lt;span class="err"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;4.Modify &lt;code&gt;rtconfig.py&lt;/code&gt; file, add the link parameter &lt;code&gt;--allow-multiple-definition&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight rust"&gt;&lt;code&gt;       &lt;span class="n"&gt;DEVICE&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="err"&gt;'&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;march&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;armv7&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;marm&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;msoft&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nb"&gt;float&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;
       &lt;span class="n"&gt;CFLAGS&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;DEVICE&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="err"&gt;'&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;Wall&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;
       &lt;span class="n"&gt;AFLAGS&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="err"&gt;'&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;DEVICE&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="err"&gt;'&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="n"&gt;assembler&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;with&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;cpp&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;D__ASSEMBLY__&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;I&lt;/span&gt;&lt;span class="err"&gt;.'&lt;/span&gt;
       &lt;span class="n"&gt;LINK_SCRIPT&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;'link&lt;/span&gt;&lt;span class="py"&gt;.lds&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;
       &lt;span class="n"&gt;LFLAGS&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;DEVICE&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="err"&gt;'&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;nostartfiles&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;Wl&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;gc&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;sections&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;Map&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;rtthread&lt;/span&gt;&lt;span class="py"&gt;.map&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;cref&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;u&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;system_vectors&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;allow&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;multiple&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;definition&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;
                         &lt;span class="err"&gt;'&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;T&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="n"&gt;LINK_SCRIPT&lt;/span&gt;

       &lt;span class="n"&gt;CPATH&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="err"&gt;''&lt;/span&gt;
       &lt;span class="n"&gt;LPATH&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="err"&gt;''&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;5.Compile and run QEMU:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;      LiuKang@DESKTOP-538H6DE D:\repo\github\rt-thread\bsp\qemu-vexpress-a9
      $ scons -j6
      scons: Reading SConscript files ...
      scons: done reading SConscript files.

      scons: warning: you do not seem to have the pywin32 extensions installed;
      parallel (-j) builds may not work reliably with open Python files.
      File "D:\software\env_released_1.2.0\env\tools\Python27\Scripts\scons.py", line 204, in &amp;lt;module&amp;gt;
      scons: Building targets ...
      scons: building associated VariantDir targets: build
      LINK rtthread.elf
      arm-none-eabi-objcopy -O binary rtthread.elf rtthread.bin
      arm-none-eabi-size rtthread.elf
     text    data     bss     dec     hex filename
   628756    2148   86700  717604   af324 rtthread.elf
      scons: done building targets.

      LiuKang@DESKTOP-538H6DE D:\repo\github\rt-thread\bsp\qemu-vexpress-a9
      $ qemu.bat
      WARNING: Image format was not specified for 'sd.bin' and probing guessed raw.
       Automatically detecting the format is dangerous for raw images, write operations on block 0 will be restricted.
       Specify the 'raw' format explicitly to remove the restrictions.

   \ | /
      - RT -     Thread Operating System
   / | \     4.0.4 build Jul 28 2021
   2006 - 2021 Copyright by rt-thread team
      lwIP-2.1.2 initialized!
      [I/sal.skt] Socket Abstraction Layer initialize success.
      [I/SDIO] SD card capacity 65536 KB.
      [I/SDIO] switching card to high speed failed!
      call rust sum(1, 2) = 3
      call rust subtract(2, 1) = 1
      call rust multiply(2, 2) = 4
      call rust divide(4, 2) = 2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Call C in Rust
&lt;/h2&gt;

&lt;p&gt;Great to know that Rust can be called in C code, let's give a try to call the  rt_kprintf function in Rust:&lt;/p&gt;

&lt;h3&gt;
  
  
  Modify the lib.rs file
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight rust"&gt;&lt;code&gt;    &lt;span class="c1"&gt;// The imported rt-thread functions list&lt;/span&gt;
    &lt;span class="k"&gt;extern&lt;/span&gt; &lt;span class="s"&gt;"C"&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;pub&lt;/span&gt; &lt;span class="k"&gt;fn&lt;/span&gt; &lt;span class="nf"&gt;rt_kprintf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;format&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="k"&gt;const&lt;/span&gt; &lt;span class="nb"&gt;u8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;...&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="nd"&gt;#[no_mangle]&lt;/span&gt;
    &lt;span class="k"&gt;pub&lt;/span&gt; &lt;span class="k"&gt;extern&lt;/span&gt; &lt;span class="s"&gt;"C"&lt;/span&gt; &lt;span class="k"&gt;fn&lt;/span&gt; &lt;span class="nf"&gt;add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;i32&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;i32&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;i32&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;unsafe&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nf"&gt;rt_kprintf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;b"this is from rust&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="k"&gt;const&lt;/span&gt; &lt;span class="nb"&gt;u8&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Generate Library File
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight rust"&gt;&lt;code&gt;    &lt;span class="n"&gt;cargo&lt;/span&gt; &lt;span class="n"&gt;build&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;target&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;armv7a&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;none&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;eabi&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;release&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;verbose&lt;/span&gt;
       &lt;span class="n"&gt;Compiling&lt;/span&gt; &lt;span class="n"&gt;rust_to_c&lt;/span&gt; &lt;span class="n"&gt;v0&lt;/span&gt;&lt;span class="na"&gt;.1.0&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;C&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="n"&gt;Users&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="n"&gt;LiuKang&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="n"&gt;Desktop&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="n"&gt;RUST&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="n"&gt;rust_to_c&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
         &lt;span class="n"&gt;Running&lt;/span&gt; &lt;span class="err"&gt;`&lt;/span&gt;&lt;span class="n"&gt;rustc&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="k"&gt;crate&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="n"&gt;sum&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;edition&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;2018&lt;/span&gt; &lt;span class="n"&gt;src&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;lib&lt;/span&gt;&lt;span class="py"&gt;.rs&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;error&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;format&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;json&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;diagnostic&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;rendered&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;ansi&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="k"&gt;crate&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="k"&gt;type&lt;/span&gt; &lt;span class="n"&gt;staticlib&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;emit&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;dep&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;info&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;link&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;C&lt;/span&gt; &lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;level&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;C&lt;/span&gt; &lt;span class="n"&gt;embed&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;bitcode&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;no&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;C&lt;/span&gt; &lt;span class="n"&gt;metadata&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;
    &lt;span class="mi"&gt;0723&lt;/span&gt;&lt;span class="n"&gt;fa112c78339&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;C&lt;/span&gt; &lt;span class="n"&gt;extra&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;filename&lt;/span&gt;&lt;span class="o"&gt;=-&lt;/span&gt;&lt;span class="n"&gt;a0723fa112c78339&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;out&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;dir&lt;/span&gt; &lt;span class="n"&gt;C&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="n"&gt;Users&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="n"&gt;LiuKang&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="n"&gt;Desktop&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="n"&gt;RUST&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="n"&gt;rust_to_c&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="n"&gt;target&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="n"&gt;armv7a&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;none&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;eabi&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="n"&gt;release&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="n"&gt;deps&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;target&lt;/span&gt; &lt;span class="n"&gt;armv7a&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;none&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;eabi&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;L&lt;/span&gt; &lt;span class="n"&gt;dependency&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;C&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="n"&gt;Users&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="n"&gt;LiuKang&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="n"&gt;Desktop&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="n"&gt;RUS&lt;/span&gt;
    &lt;span class="n"&gt;T&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="n"&gt;rust_to_c&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="n"&gt;target&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="n"&gt;armv7a&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;none&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;eabi&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="n"&gt;release&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="n"&gt;deps&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;L&lt;/span&gt; &lt;span class="n"&gt;dependency&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;C&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="n"&gt;Users&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="n"&gt;LiuKang&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="n"&gt;Desktop&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="n"&gt;RUST&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="n"&gt;rust_to_c&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="n"&gt;target&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="n"&gt;release&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="n"&gt;deps&lt;/span&gt;&lt;span class="err"&gt;`&lt;/span&gt;
        &lt;span class="n"&gt;Finished&lt;/span&gt; &lt;span class="n"&gt;release&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;optimized&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="nf"&gt;target&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="mf"&gt;0.11&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Run
&lt;/h3&gt;

&lt;p&gt;Copy the library files that generated by rust into the application directory.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;    LiuKang@DESKTOP-538H6DE D:&lt;span class="se"&gt;\r&lt;/span&gt;epo&lt;span class="se"&gt;\g&lt;/span&gt;ithub&lt;span class="se"&gt;\r&lt;/span&gt;t-thread&lt;span class="se"&gt;\b&lt;/span&gt;sp&lt;span class="se"&gt;\q&lt;/span&gt;emu-vexpress-a9                                                       
    &lt;span class="nv"&gt;$ &lt;/span&gt;scons &lt;span class="nt"&gt;-j6&lt;/span&gt;                                                                                                             
    scons: Reading SConscript files ...                                                                                  
    scons: &lt;span class="k"&gt;done &lt;/span&gt;reading SConscript files.                                                                                                     
    scons: warning: you &lt;span class="k"&gt;do &lt;/span&gt;not seem to have the pywin32 extensions installed&lt;span class="p"&gt;;&lt;/span&gt;                                                   
            parallel &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;-j&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; builds may not work reliably with open Python files.                                                  
    File &lt;span class="s2"&gt;"D:&lt;/span&gt;&lt;span class="se"&gt;\s&lt;/span&gt;&lt;span class="s2"&gt;oftware&lt;/span&gt;&lt;span class="se"&gt;\e&lt;/span&gt;&lt;span class="s2"&gt;nv_released_1.2.0&lt;/span&gt;&lt;span class="se"&gt;\e&lt;/span&gt;&lt;span class="s2"&gt;nv&lt;/span&gt;&lt;span class="se"&gt;\t&lt;/span&gt;&lt;span class="s2"&gt;ools&lt;/span&gt;&lt;span class="se"&gt;\P&lt;/span&gt;&lt;span class="s2"&gt;ython27&lt;/span&gt;&lt;span class="se"&gt;\S&lt;/span&gt;&lt;span class="s2"&gt;cripts&lt;/span&gt;&lt;span class="se"&gt;\s&lt;/span&gt;&lt;span class="s2"&gt;cons.py"&lt;/span&gt;, line 204, &lt;span class="k"&gt;in&lt;/span&gt; &amp;lt;module&amp;gt;                            
    scons: Building targets ...                                                                                                 
    scons: building associated VariantDir targets: build                                                                        
    LINK rtthread.elf                                                                                                           
    arm-none-eabi-objcopy &lt;span class="nt"&gt;-O&lt;/span&gt; binary rtthread.elf rtthread.bin                                                                   
    arm-none-eabi-size rtthread.elf                                                                                             
       text    data     bss     dec     hex filename                                                                            
     628812    2148   90796  721756   b035c rtthread.elf                                                                        
    scons: &lt;span class="k"&gt;done &lt;/span&gt;building targets.                                                                                               

    LiuKang@DESKTOP-538H6DE D:&lt;span class="se"&gt;\r&lt;/span&gt;epo&lt;span class="se"&gt;\g&lt;/span&gt;ithub&lt;span class="se"&gt;\r&lt;/span&gt;t-thread&lt;span class="se"&gt;\b&lt;/span&gt;sp&lt;span class="se"&gt;\q&lt;/span&gt;emu-vexpress-a9                                                       
    &lt;span class="nv"&gt;$ &lt;/span&gt;qemu.bat                                                                                                                  
    WARNING: Image format was not specified &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="s1"&gt;'sd.bin'&lt;/span&gt; and probing guessed raw.                                               
             Automatically detecting the format is dangerous &lt;span class="k"&gt;for &lt;/span&gt;raw images, write operations on block 0 will be restricted.    
             Specify the &lt;span class="s1"&gt;'raw'&lt;/span&gt; format explicitly to remove the restrictions.                                                    

     &lt;span class="se"&gt;\ &lt;/span&gt;| /                                                                                                                      
    - RT -     Thread Operating System                                                                                          
     / | &lt;span class="se"&gt;\ &lt;/span&gt;    4.0.4 build Jul 28 2021                                                                                          
     2006 - 2021 Copyright by rt-thread team                                                                                    
    lwIP-2.1.2 initialized!                                                                                                     
    &lt;span class="o"&gt;[&lt;/span&gt;I/sal.skt] Socket Abstraction Layer initialize success.                                                                    
    &lt;span class="o"&gt;[&lt;/span&gt;I/SDIO] SD card capacity 65536 KB.                                                                                         
    &lt;span class="o"&gt;[&lt;/span&gt;I/SDIO] switching card to high speed failed!                                                                               
    this is from rust                                                                                                           
    call rust &lt;span class="nb"&gt;sum&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;1, 2&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; 3                                                                                           
    call rust subtract&lt;span class="o"&gt;(&lt;/span&gt;2, 1&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; 1                                                                                                
    call rust multiply&lt;span class="o"&gt;(&lt;/span&gt;2, 2&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; 4                                                                                                
    call rust divide&lt;span class="o"&gt;(&lt;/span&gt;4, 2&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; 2                                                                                     
    msh /&amp;gt;                                                                                 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;a href="https://rt-thread.medium.com/rt-thread-iot-os-tech-conference-324182c7403c" rel="noopener noreferrer"&gt;RT-Thread IoT OS Global Tech Conference&lt;/a&gt; is open for registration! We welcome developers from different countries to come together to exchange ideas, showcase projects, identify solutions, discuss future strategies, and provide mutual learning opportunities on a wide variety of topics exploring embedded technologies.
&lt;/h3&gt;

&lt;h3&gt;
  
  
  Free Register: &lt;a href="https://forms.gle/8W1j2ZhCSLKFfyFQ8" rel="noopener noreferrer"&gt;https://forms.gle/8W1j2ZhCSLKFfyFQ8&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fatbqs90mzaodcic9m5vg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fatbqs90mzaodcic9m5vg.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>RT-Thread IoT OS Tech Conference Virtually on Sep.16–17, 2021.</title>
      <dc:creator>Abby</dc:creator>
      <pubDate>Mon, 05 Jul 2021 03:52:58 +0000</pubDate>
      <link>https://dev.to/abby06/rt-thread-iot-os-tech-conference-virtually-on-sep-16-17-2021-3mo0</link>
      <guid>https://dev.to/abby06/rt-thread-iot-os-tech-conference-virtually-on-sep-16-17-2021-3mo0</guid>
      <description>&lt;p&gt;The first-ever RT-Thread IoT OS Global Tech Conference will be holding from September 16–17,2021 features embedded technologies, new projects showcase, community contributors track. We welcome embedded developers from across different countries to come together to exchange ideas, showcase projects, identify solutions, discuss future strategies, and provide mutual learning opportunities on a wide variety of topics, let’s exploring embedded technologies.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Free Register: &lt;a href="https://forms.gle/8W1j2ZhCSLKFfyFQ8"&gt;https://forms.gle/8W1j2ZhCSLKFfyFQ8&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  About RT-Thread:
&lt;/h2&gt;

&lt;p&gt;RT-Thread is an embedded real-time operating system, with its rich middle-tier components and great hardware &amp;amp; software ecosystem delivered great support for the Internet of Things (IoT) industry. Born in 2006, till now, RT-Thread has powered 1 Billion devices, applied in Wearable Devices, Smart Home Appliances, Energy, Automotive Electronics, Medical Electronics, Consumer Electronics, and many other industries.&lt;/p&gt;

&lt;p&gt;RT-Thread, a community-powered open source project, we also want to take this time to thank all contributors who shared their time, energy, and talent to help RT-Thread growing! Working alongside the 100K+ community developers strongly inspires RT-Thread to continue exploring and delivering the Best Class of IoT operating system. Let open-source project benefits more people!&lt;/p&gt;

&lt;h2&gt;
  
  
  Call for Speakers 2021
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Submission Link:&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://forms.gle/ZFB3zww5spUWuziY6"&gt;https://forms.gle/ZFB3zww5spUWuziY6&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Register to Conference:
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://forms.gle/8W1j2ZhCSLKFfyFQ8"&gt;https://forms.gle/8W1j2ZhCSLKFfyFQ8&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--N6UM99FI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8xyhmdfx4p8vwpqc1y86.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--N6UM99FI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8xyhmdfx4p8vwpqc1y86.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>How to Port Operating System to Different Chip Architecture?</title>
      <dc:creator>Abby</dc:creator>
      <pubDate>Thu, 29 Apr 2021 07:30:10 +0000</pubDate>
      <link>https://dev.to/abby06/how-to-port-operating-system-to-different-chip-architecture-3od9</link>
      <guid>https://dev.to/abby06/how-to-port-operating-system-to-different-chip-architecture-3od9</guid>
      <description>&lt;p&gt;There are consolidate steps to transplant the OS onto other hardware platforms, which includes various chips of the same architecture, as well as of different architectures. This article will walk you through how to port OS to many various chips and we learn from open source &lt;a href="https://www.rt-thread.io/"&gt;RT-Thread OS&lt;/a&gt; as a case study.&lt;/p&gt;

&lt;p&gt;Here are the milestones developers should meet during the porting process:&lt;/p&gt;

&lt;p&gt;1.The C-language execution environment is prepared&lt;br&gt;
2.RT-Thread can output characters via a serial port&lt;br&gt;
3.The context switch code works fine&lt;br&gt;
4.Hardware timers are supported by RT-Thread&lt;br&gt;
5.The interrupt routine could handle received data via the serial port&lt;/p&gt;

&lt;h2&gt;
  
  
  The Execution Model
&lt;/h2&gt;

&lt;p&gt;For most advanced architectures, the operating system and user applications run at different privilege levels, in order to prevent malfunction code affects the integration and safety of OS. For example, In the architecture of ARMv7-A, OS usually runs in the System mode; while in ARMv8-A, OS could run in at the EL2 or EL3 privilege level. Usually, the chip executes the boot-up code at the highest privilege level when powered up. After that, the OS switches the privilege level to its target mode.&lt;/p&gt;

&lt;h2&gt;
  
  
  Execute C Code
&lt;/h2&gt;

&lt;p&gt;The key action of this step is to set the BSS section to zero and set up the stack pointers.&lt;/p&gt;

&lt;p&gt;In the C-language implementations, the uninitialized global variables and static variables are usually stored in the BSS  section, which doesn't occupy any space in the storage device. When the program is loaded, the corresponding space is allocated in memory and initialized to zero. When OS boots up, it has to do this work by itself.&lt;/p&gt;

&lt;p&gt;On the other hand, the OS has to initialize the stack space and set up the stack pointer as well. Since C-language programs save and restore local variables on the stack when entering and exiting a function, the stack pointer has to be set before invoking any C functions. RT-Thread must do this step for each newly created thread.&lt;/p&gt;

&lt;h2&gt;
  
  
  At least one serial drive
&lt;/h2&gt;

&lt;p&gt;RT-Thread outputs information and logs via the serial port, which also helps debug the code during the transplantation process. At this step, receiving data via serial ports is not required yet.&lt;br&gt;
If everything works fine, you should see the RT-Thread logo via the serial port.&lt;/p&gt;

&lt;h2&gt;
  
  
  Context switching logic
&lt;/h2&gt;

&lt;p&gt;The context of a task is its whole execution environment, which contains the generic registers, the program counter, the location of the stack frame, and so on. When a new thread is created, RT-Thread has to allocate and set up its context manually, so that the scheduler could switch to the new thread as it does to others.&lt;/p&gt;

&lt;p&gt;There are three things we need to pay attention to. First, When RT-Thread starts up, interrupts are disabled by default. They are enabled when the task scheduler is enabled for the first time, the process of which is implemented in assembly language during the context switch period. Second, the next scheduling starts when a thread exits, by which the resources owned will be reclaimed by the idle thread. Third, the order of pushing data into the stack must be consistent with that of poping data out of the stack. &lt;/p&gt;

&lt;p&gt;The sign to improve this function is well working is that you can enter the main function and the msh console normally. However, input control cannot be achieved because serial input interrupts are not implemented, and if serial interrupts have been implemented, msh inputs can be made.&lt;/p&gt;

&lt;h2&gt;
  
  
  The timer can be normally used
&lt;/h2&gt;

&lt;p&gt;RT-Thread requires a timer to generate interrupts periodically, which is used to count the ticks that elapse since the system startup. The tick number is used not only to provide software interrupt functions but also to instruct the kernel when to start a task scheduling.&lt;/p&gt;

&lt;p&gt;Please be careful about setting the value of the time slice, which is usually 10 ms or 1 ms. If a small time slice is chosen on a slow CPU, most of the time will be spent on task switching so that nothing could be done in effect.&lt;/p&gt;

&lt;h2&gt;
  
  
  Serial port works correctly
&lt;/h2&gt;

&lt;p&gt;In this step, users could interact with RT-Thread msh via the serial port. We input commands and type enter,  then msh executes the command and displays results. This process is usually not difficult to implement, however, developers should not forget to clear the interrupt flag on some platforms after the serial port interrupt is handled.&lt;/p&gt;

&lt;p&gt;Once the serial port works correctly, the fundamental transplantation process is done.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;To port different chip architectures, you should very clear about the architecture of the chip, and very familiar with the underlying code at the most critical point of the Operating System. However, chip manual combines with the actual work experience, you’ll need to learn the chip privilege mode, understand its register and its compilation method.&lt;/p&gt;

&lt;p&gt;Now you can give it a try with &lt;a href="https://www.rt-thread.io/"&gt;OpenSource RT-Thread OS&lt;/a&gt;. Any questions, feel free to ask for support in &lt;a href="https://club.rt-thread.io/"&gt;RT-Thread Club&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;RT-Thread Contact Info:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.rt-thread.io/"&gt;Website&lt;/a&gt;  |  &lt;a href="https://github.com/RT-Thread"&gt;Github&lt;/a&gt;  | &lt;a href="https://twitter.com/rt_thread"&gt;Twitter&lt;/a&gt; |  &lt;a href="https://www.facebook.com/RT-Thread-IoT-OS-110395723808463"&gt;Facebook&lt;/a&gt;   |   &lt;a href="https://www.youtube.com/channel/UCdDHtIfSYPq4002r27ffqPw"&gt;Youtube&lt;/a&gt; &lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
