土豆12 发表于 2024-7-28 00:04

【Sipeed MAix BiT AIoT 开发套件】1,固件烧录,开发环境准备

<div class='showpostmsg'><p>感谢EEWorld提供的评测机会,经历千辛万苦终于收到了这块开发板。包装非常不错,所有配件都被收纳在一个小盒子中。</p>

<p>&nbsp;</p>

<p> &nbsp;</p>

<p>打开后,里面一共有以下这些东西:</p>

<p> &nbsp;</p>

<p>Sipeed官方有非常详细的资料,在官方的wiki页面上。这块板子使用的开发环境是MaixPy,注意这个MaixPy有多个版本,互相不兼容。适配我们手上K210开发板的是v1,因此我们看这个网页:</p>

<p><a href="https://wiki.sipeed.com/soft/maixpy/zh/index.html" target="_blank">https://wiki.sipeed.com/soft/maixpy/zh/index.html</a></p>

<p>&nbsp;</p>

<p>在开发之前,我们先把摄像头和屏幕接上,给开发板上电,可以看到一个红色的页面:</p>

<p> &nbsp;</p>

<p>红色屏幕上很清楚的写着当前固件的版本。这些信息我们也可以通过串口来得到。板载的串口芯片使用的是CH552,最新版的Win11可以免驱动直接用。串口波特率是115200,随便用一个串口工具连接,连接好后按板上的RESET重置,启动后使用Ctrl + C 终止程序,便可以看到固件信息:</p>

<p> &nbsp;</p>

<p>如果需要更新固件,我们可以去到<a href="https://dl.sipeed.com/shareURL/MAIX/MaixPy/release/master" target="_blank">https://dl.sipeed.com/shareURL/MAIX/MaixPy/release/master</a>下载最新固件,目前最新是v0.6.3_2. 下载来的固件是bin文件。</p>

<p>&nbsp;</p>

<p>接着还需要去下载一下刷固件的工具:kflash_gui:<a href="https://github.com/sipeed/kflash_gui/releases" target="_blank">https://github.com/sipeed/kflash_gui/releases</a></p>

<p>&nbsp;</p>

<p>下载好后,加载固件,其他设置保持默认,可以和我下面的图确认一下各项设置,没有问题后点击下载就可以完成固件更新。</p>

<p> &nbsp;</p>

<p>&nbsp;</p>

<p>接下来我们可以准备一下开发环境。开发环境移植自OpenMV,有相应开发经验的小伙伴应该非常熟悉。可以去这个链接下载,如果想用免安装版,直接下载7z压缩包的版本即可:<a href="http://dl.sipeed.com/MAIX/MaixPy/ide/" target="_blank">http://dl.sipeed.com/MAIX/MaixPy/ide/</a></p>

<p>&nbsp;</p>

<p>下载后打开,选择好开发板,按左下角按钮连上开发板,运行默认打开的helloworld,就可以看到熟悉的界面:</p>

<p> &nbsp;</p>

<p>从上图可以看到,我们的摄像头和屏幕已经正常开始工作。当然,不使用MaixPy IDE的话,我们也可以简单的测试一下硬件。只需要在开发板上电后快速按住BOOT按钮,再短在看到显示当前在测试模式后,我们就可以看到摄像头上的画面被显示在屏幕上。这就说明硬件都可以正常工作。</p>

<p> &nbsp;</p>

<p> &nbsp;</p>

<p>如果小伙伴们好奇这些功能都是怎么做到的,其实非常简单。MaixPy的固件是移植自Micropython,这个默认的红色背景,以及测试模式,其实都是板子出厂自带的main.py程序。通过使用uPyLoader-win我们可以把程序下载下来。具体程序如下:</p>

<pre>
<code class="language-python">
try:
    import gc, lcd, image, sys, os
    from Maix import GPIO
    from fpioa_manager import fm
    test_pin=16
    fm.fpioa.set_function(test_pin,fm.fpioa.GPIO7)
    test_gpio=GPIO(GPIO.GPIO7,GPIO.IN,GPIO.PULL_UP)
    fm.fpioa.set_function(17,fm.fpioa.GPIO0)
    lcd_en = GPIO(GPIO.GPIO0,GPIO.OUT)
    lcd_en.value(0)
    lcd.init()
    lcd.clear(color=(255,0,0))
    lcd.draw_string(lcd.width()//2-68,lcd.height()//2-4, "Welcome to ", lcd.WHITE, lcd.RED)
    if test_gpio.value() == 0:
      print('PIN 16 pulled down, enter test mode')
      lcd.clear(lcd.PINK)
      lcd.draw_string(lcd.width()//2-68,lcd.height()//2-4, "Test Mode, wait ...", lcd.WHITE, lcd.PINK)
      import sensor
      import image
      sensor.reset()
      sensor.set_pixformat(sensor.RGB565)
      sensor.set_framesize(sensor.QVGA)
      sensor.run(1)
      lcd.freq(16000000)
      while True:
            img=sensor.snapshot()
            lcd.display(img)

    loading = image.Image(size=(lcd.width(), lcd.height()))
    loading.draw_rectangle((0, 0, lcd.width(), lcd.height()), fill=True, color=(255, 0, 0))
    info = "Welcome to MaixPy"
    loading.draw_string(int(lcd.width()//2 - len(info) * 5), (lcd.height())//4, info, color=(255, 255, 255), scale=2, mono_space=0)
    v = sys.implementation.version
    vers = 'V{}.{}.{} : maixpy.sipeed.com'.format(v,v,v)
    loading.draw_string(int(lcd.width()//2 - len(info) * 6), (lcd.height())//3 + 20, vers, color=(255, 255, 255), scale=1, mono_space=1)
    lcd.display(loading)
    tf = None
    try:
            os.listdir("/sd/.")
    except Exception as e:
      tf ="SDcard not mount,use flash!"
      loading.draw_string(int(lcd.width()//2 - len(info) * 7), (lcd.height())//2 + 10, tf, color=(255, 255, 255), scale=1, mono_space=1)
    if not tf:
      tf ="SDcard is mount,use SD!"
      loading.draw_string(int(lcd.width()//2 - len(info) * 6), (lcd.height())//2 + 10, tf, color=(255, 255, 255), scale=1, mono_space=1)
    lcd.display(loading)
    del loading, v, info, vers
    gc.collect()
finally:
    gc.collect()

</code></pre>

<p>&nbsp;</p>

<p>阅读上面的代码,就可以看到程序含义:如果启动时检测BOOT被按下,那么就进入测试模式,抓取摄像头画面并在LCD上显示;如果没有检测到BOOT,则显示红色屏幕。</p>

<p>&nbsp;</p>

<p>至此,开发环境搭建,硬件测试,一切准备工作都已经完成。下一期我们正式开始项目开发。</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>
页: [1]
查看完整版本: 【Sipeed MAix BiT AIoT 开发套件】1,固件烧录,开发环境准备