<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: u-boot bootcount functionality in i.MX Processors</title>
    <link>https://community.nxp.com/t5/i-MX-Processors/u-boot-bootcount-functionality/m-p/2036225#M233503</link>
    <description>&lt;P&gt;Hello&amp;nbsp;&lt;a href="https://community.nxp.com/t5/user/viewprofilepage/user-id/209988"&gt;@AB22&lt;/a&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I hope you are doing very well.&lt;/P&gt;
&lt;P&gt;You can see the &lt;A href="https://github.com/nxp-imx/uboot-imx/blob/lf_v2022.04/drivers/bootcount/bootcount_env.c" target="_self"&gt;bootcount_env.c&lt;/A&gt; file under uboot-imx/drivers/bootcount.&lt;/P&gt;
&lt;LI-CODE lang="c"&gt;// SPDX-License-Identifier: GPL-2.0+
/*
 * (C) Copyright 2013
 * Heiko Schocher, DENX Software Engineering, hs@denx.de.
 */

#include &amp;lt;common.h&amp;gt;
#include &amp;lt;env.h&amp;gt;

void bootcount_store(ulong a)
{
	int upgrade_available = env_get_ulong("upgrade_available", 10, 0);

	if (upgrade_available) {
		env_set_ulong("bootcount", a);
		env_save();
	}
}

ulong bootcount_load(void)
{
	int upgrade_available = env_get_ulong("upgrade_available", 10, 0);
	ulong val = 0;

	if (upgrade_available)
		val = env_get_ulong("bootcount", 10, 0);

	return val;
}&lt;/LI-CODE&gt;
&lt;DIV id="tinyMceEditorAlejandro_Salas_0" class="mceNonEditable lia-copypaste-placeholder"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;P&gt;&lt;SPAN&gt;You need to set the environment variable called upgrade_available on your U-boot.&lt;/SPAN&gt;&lt;/P&gt;
&lt;LI-CODE lang="markup"&gt;u-boot=&amp;gt; setenv upgrade_available 1&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;After reset:&lt;/P&gt;
&lt;LI-CODE lang="markup"&gt;u-boot=&amp;gt; printenv bootcount
bootcount=2&lt;/LI-CODE&gt;
&lt;DIV id="tinyMceEditorAlejandro_Salas_1" class="mceNonEditable lia-copypaste-placeholder"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;P&gt;I hope this can helps to you.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Best regards,&lt;/P&gt;
&lt;P&gt;Salas.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Thu, 30 Jan 2025 16:22:56 GMT</pubDate>
    <dc:creator>Manuel_Salas</dc:creator>
    <dc:date>2025-01-30T16:22:56Z</dc:date>
    <item>
      <title>u-boot bootcount functionality</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/u-boot-bootcount-functionality/m-p/2035853#M233475</link>
      <description>&lt;P&gt;I have made the following modifications to the u-boot configuration (Yocto Scarthgap/i.MX8M Plus):&lt;/P&gt;&lt;P&gt;CONFIG_BOOTCOUNT=y&lt;BR /&gt;CONFIG_BOOTCOUNT_LIMIT=y&lt;BR /&gt;CONFIG_BOOTCOUNT_BOOTLIMIT=3&lt;/P&gt;&lt;P&gt;Every time I printenv bootcount at the u-boot prompt, the value is 1. I would like for the bootcount functionality to indicate when to fallback to a working partition during dual-copy update (SWUpdate) in the event the boot process repeatedly fails. What conditions cause the bootcount to increment? I can corrupt files and cause a stall at the u-boot prompt but nothing is providing a mechanism to initiate fallback.&lt;/P&gt;</description>
      <pubDate>Wed, 29 Jan 2025 20:52:15 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/u-boot-bootcount-functionality/m-p/2035853#M233475</guid>
      <dc:creator>AB22</dc:creator>
      <dc:date>2025-01-29T20:52:15Z</dc:date>
    </item>
    <item>
      <title>Re: u-boot bootcount functionality</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/u-boot-bootcount-functionality/m-p/2035969#M233483</link>
      <description>&lt;P&gt;It should not be a question.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;A href="https://github.com/nxp-imx/uboot-imx/blob/lf-6.1.55-2.2.0/drivers/bootcount/Kconfig" target="_blank"&gt;https://github.com/nxp-imx/uboot-imx/blob/lf-6.1.55-2.2.0/drivers/bootcount/Kconfig&lt;/A&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;config BOOTCOUNT_ENV&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;bool "Boot counter in environment"&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;help&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; If no softreset save registers are found on the hardware&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; "bootcount" is stored in the environment. To prevent a&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; saveenv on all reboots, the environment variable&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; "upgrade_available" is used. If "upgrade_available" is&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; 0, "bootcount" is always 0. If "upgrade_available" is 1,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; "bootcount" is incremented in the environment.&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; So the Userspace Application must set the "upgrade_available"&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; and "bootcount" variables to 0, if the system booted successfully.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 30 Jan 2025 03:46:25 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/u-boot-bootcount-functionality/m-p/2035969#M233483</guid>
      <dc:creator>xacov</dc:creator>
      <dc:date>2025-01-30T03:46:25Z</dc:date>
    </item>
    <item>
      <title>Re: u-boot bootcount functionality</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/u-boot-bootcount-functionality/m-p/2036225#M233503</link>
      <description>&lt;P&gt;Hello&amp;nbsp;&lt;a href="https://community.nxp.com/t5/user/viewprofilepage/user-id/209988"&gt;@AB22&lt;/a&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I hope you are doing very well.&lt;/P&gt;
&lt;P&gt;You can see the &lt;A href="https://github.com/nxp-imx/uboot-imx/blob/lf_v2022.04/drivers/bootcount/bootcount_env.c" target="_self"&gt;bootcount_env.c&lt;/A&gt; file under uboot-imx/drivers/bootcount.&lt;/P&gt;
&lt;LI-CODE lang="c"&gt;// SPDX-License-Identifier: GPL-2.0+
/*
 * (C) Copyright 2013
 * Heiko Schocher, DENX Software Engineering, hs@denx.de.
 */

#include &amp;lt;common.h&amp;gt;
#include &amp;lt;env.h&amp;gt;

void bootcount_store(ulong a)
{
	int upgrade_available = env_get_ulong("upgrade_available", 10, 0);

	if (upgrade_available) {
		env_set_ulong("bootcount", a);
		env_save();
	}
}

ulong bootcount_load(void)
{
	int upgrade_available = env_get_ulong("upgrade_available", 10, 0);
	ulong val = 0;

	if (upgrade_available)
		val = env_get_ulong("bootcount", 10, 0);

	return val;
}&lt;/LI-CODE&gt;
&lt;DIV id="tinyMceEditorAlejandro_Salas_0" class="mceNonEditable lia-copypaste-placeholder"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;P&gt;&lt;SPAN&gt;You need to set the environment variable called upgrade_available on your U-boot.&lt;/SPAN&gt;&lt;/P&gt;
&lt;LI-CODE lang="markup"&gt;u-boot=&amp;gt; setenv upgrade_available 1&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;After reset:&lt;/P&gt;
&lt;LI-CODE lang="markup"&gt;u-boot=&amp;gt; printenv bootcount
bootcount=2&lt;/LI-CODE&gt;
&lt;DIV id="tinyMceEditorAlejandro_Salas_1" class="mceNonEditable lia-copypaste-placeholder"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;P&gt;I hope this can helps to you.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Best regards,&lt;/P&gt;
&lt;P&gt;Salas.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 30 Jan 2025 16:22:56 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/u-boot-bootcount-functionality/m-p/2036225#M233503</guid>
      <dc:creator>Manuel_Salas</dc:creator>
      <dc:date>2025-01-30T16:22:56Z</dc:date>
    </item>
    <item>
      <title>Re: u-boot bootcount functionality</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/u-boot-bootcount-functionality/m-p/2036227#M233504</link>
      <description>Thank you for pointing me to that file. It is quite helpful.</description>
      <pubDate>Thu, 30 Jan 2025 16:43:05 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/u-boot-bootcount-functionality/m-p/2036227#M233504</guid>
      <dc:creator>AB22</dc:creator>
      <dc:date>2025-01-30T16:43:05Z</dc:date>
    </item>
    <item>
      <title>Re: u-boot bootcount functionality</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/u-boot-bootcount-functionality/m-p/2036228#M233505</link>
      <description>That is quite helpful. I misunderstood the usage of upgrade_available. Thank you.&lt;BR /&gt;</description>
      <pubDate>Thu, 30 Jan 2025 16:45:36 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/u-boot-bootcount-functionality/m-p/2036228#M233505</guid>
      <dc:creator>AB22</dc:creator>
      <dc:date>2025-01-30T16:45:36Z</dc:date>
    </item>
  </channel>
</rss>

