xhackerustc 发表于 2024-4-30 09:03

[FireBeetle 2 ESP32C6开发板]linux下开发环境搭建

<div class='showpostmsg'> 本帖最后由 xhackerustc 于 2024-5-1 19:19 编辑

<p>这块FireBeetle 2 ESP32C6开发板做工精良,拿在手里质感相当nice,主控采用乐鑫的ESP32C6FH4,据官方datasheet:F表示封装内flash(而且是QSPI的哦),H表示高温,后面的&ldquo;数字4&rdquo;表示封装内的flash是4MB的。</p>

<p>&nbsp;</p>

<p><strong>esp-idf获取</strong></p>

<p>笔者习惯于linux下做开发,恰巧esp-idf对linux支持非常好。如果从来没有下载过esp-idf,那么可以:</p>

<pre>
<code class="language-bash">git clone --recursive https://github.com/espressif/esp-idf.git</code></pre>

<p>如果以前有下载过esp-idf,笔者就属于这种情形,在esp32c3上用过,只是版本比较老还是v4.4的,所以必须和espressif仓库sync一下:</p>

<pre>
<code class="language-bash">cd YOUR_DIR_TO_esp-idf
git checkout master
git pull
git submodule update --init --recursive</code></pre>

<p><strong>esp-idf相关工具安装</strong></p>

<p>linux下,esp-idf相关工具(比如toolchain、openocd等等)会安装在~/.espressif/,笔者每次升级会删除这个目录后再次安装,这样会保证老版本完整删除,用和官方一致的新版本,当然这一步见仁见智,可以不删除老版本工具只安装新版本。笔者的操作是:</p>

<pre>
<code class="language-bash">rm -rf ~/.espressif/
./install.sh esp32c6</code></pre>

<p><strong>万事具备点个灯试试</strong></p>

<p>不过在此之前我们需要设置下环境变量:</p>

<pre>
<code class="language-bash">source export.sh</code></pre>

<p><span id="cke_bm_10662S" style="display: none;">&nbsp;</span>esp-idf里有现成的点灯例子:</p>

<pre>
<code class="language-bash">cd examples/get-started/blink</code></pre>

<p>因我们目标是esp32c6:</p>

<pre>
<code>idf.py set-target esp32c6</code></pre>

<p>我们需要配置一下(这和linux内核编译配置是非常像的):</p>

<pre>
<code class="language-bash">idf.py menuconfig</code></pre>

<p>当然esp-idf自带的这个例子用于esp官方的开发板,它和FireBeetle 2 ESP32C6板级设计上有些区别,所以我们要修改下配置</p>

<p>根据原理图,板载一LED接到GPIO15上,可通过GPIO拉高拉低来开/关LED:</p>

<pre>
<code class="language-bash">Example Configuration -&gt;
  Blink LED type -&gt; //把这里改成GPIO,默认是LED strip</code></pre>

<p>再把GPIO号改成15。整体如下图所示</p>

<div style="text-align: center;"></div>

<p>默认compiler options是带调试的,个人不爽需要gcc全速,所以回到menuconfig主界面,进compiler options,把Optimization Level改成-O2:</p>

<div style="text-align: center;"></div>

<p>esp-idf对于esp32c6默认flash是DIO,2MB大小,咱这板子上是芯片内置4MBflash支持QSPI,所以进Serial flasher config &nbsp;---&gt;改成QIO 4MB flash如图所示:</p>

<div style="text-align: center;"></div>

<p>idf默认串口输出到真实uart,咱让它输出到usb:</p>

<pre>
<code class="language-bash">Component config---&gt;
ESP System Settings---&gt;
    Channel for console output //把这个改成USB Serial/JTAG Controller</code></pre>

<p>整体如图所示:</p>

<div style="text-align: center;"></div>

<p>拿到的板子默认烧录了一个点灯固件,为有所区别咱改点代码,在LED两边加个*:</p>

<pre>
<code class="language-bash">diff --git a/examples/get-started/blink/main/blink_example_main.c b/examples/get-started/blink/main/blink_example_main.c
index 1b15c04904..7e290fdb88 100644
--- a/examples/get-started/blink/main/blink_example_main.c
+++ b/examples/get-started/blink/main/blink_example_main.c
@@ -95,7 +95,7 @@ void app_main(void)
   configure_led();

   while (1) {
-      ESP_LOGI(TAG, "Turning the LED %s!", s_led_state == true ? "ON" : "OFF");
+      ESP_LOGI(TAG, "Turning the *LED* %s!", s_led_state == true ? "ON" : "OFF");
         blink_led();
         /* Toggle the LED state */
         s_led_state = !s_led_state;</code></pre>

<p>编译烧录:</p>

<pre>
<code class="language-bash">idf.py build
esptool.py -p /dev/ttyACM0 --chip esp32c6 -b 460800 --before default_reset --after hard_reset write_flash --flash_mode dio --flash_size 4MB --flash_freq 80m 0x10000 build/blink.bin</code></pre>

<p>这时候板子上LED开始闪烁,电脑如果打开usb cdc串口会显示如图</p>

<div style="text-align: center;"></div>

<p>&nbsp;</p>
</div><script>                                        var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;"   style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
                                       
                                        if(parseInt(discuz_uid)==0){
                                                                                                (function($){
                                                        var postHeight = getTextHeight(400);
                                                        $(".showpostmsg").html($(".showpostmsg").html());
                                                        $(".showpostmsg").after(loginstr);
                                                        $(".showpostmsg").css({height:postHeight,overflow:"hidden"});
                                                })(jQuery);
                                        }                </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script>

Maker_kun 发表于 2024-4-30 09:11

<p>这个高级:)</p><br/>

damiaa 发表于 2024-4-30 10:26

<p>linux下玩更方便!<img height="48" src="https://bbs.eeworld.com.cn/static/editor/plugins/hkemoji/sticker/facebook/wanwan76.gif" width="48" /></p>

xhackerustc 发表于 2024-4-30 19:43

Maker_kun 发表于 2024-4-30 09:11
这个高级

<p>大家喜欢就好<img height="48" src="https://bbs.eeworld.com.cn/static/editor/plugins/hkemoji/sticker/facebook/handshake.gif" width="48" /></p>

xhackerustc 发表于 2024-4-30 19:45

damiaa 发表于 2024-4-30 10:26
linux下玩更方便!

<p>确实是*nix系统下开发更方便,原厂开发工具就是esp-idf,它在*nix环境下支持得比较好</p>

秦天qintian0303 发表于 2024-5-1 08:48

<p>还是感觉python比较方便&nbsp;&nbsp;</p>

xhackerustc 发表于 2024-5-1 10:12

秦天qintian0303 发表于 2024-5-1 08:48
还是感觉python比较方便&nbsp;&nbsp;

<p>要说方便那是python方便,但feature complete、性能综合考虑还是用官方的esp-idf,另外感觉要玩更复杂的东东用python不太好做,后面评测可以看出来,敬请期待。</p>

<p>&nbsp;</p>

xhackerustc 发表于 2024-5-1 10:19

xhackerustc 发表于 2024-5-1 10:12
要说方便那是python方便,但feature complete、性能综合考虑还是用官方的esp-idf,另外感觉要玩更复杂的 ...

<p>PS:顺着这次测评把esp-idf升级了一把,发现esp-idf做得更好了,功能更多,很多以前要自己移植的现在官方直接弄好了更方便了。要发挥芯片最大功能,综合考虑方便程度还是得上esp-idf</p>
页: [1]
查看完整版本: [FireBeetle 2 ESP32C6开发板]linux下开发环境搭建