OpenMV N6

OpenMV N6 以意法半導體(STMicroelectronics)的 STM32N657(Cortex‑M55 @ 800 MHz)為核心,搭配一顆 1 GHz 的晶片內建 NPU,INT8 算力達 600 GOPS。此開發板將 NPU 與安裝於可拆卸載板上的 PAG7936 1 MP 全域快門感測器結合,並配備 gigabit 乙太網路、USB‑C 高速介面、Wi‑Fi 與 Bluetooth 5.1,可在進行即時視訊串流的同時以 30 FPS 執行 YOLOv8/YOLOv11 推論。

OpenMV N6

完整的規格書、照片與尺寸資訊,請參閱 OpenMV N6 產品頁面

重點特色

  • STM32N657 Cortex‑M55 運作於 800 MHz(1280 DMIPS),具備 ARM Helium 128 位元 SIMD —— 向量吞吐量達 6.4 gigaops。

  • 1 GHz NPU,INT8 算力 600 GOPS —— 可以 30 FPS 執行 YOLOv8/YOLOv11 偵測。

  • ISP 支援最高 5MP 的 RAW Bayer,2D GPU 用於縮放與 3D 旋轉,H.264 編碼 至 1080p,以及硬體 JPEG 編解碼器

  • 64 MB 外部 SDRAM(16 位元 @ 200 MHz DDR,800 MB/s)外加 4.2 MB 內部 SRAM32 MB octal 快閃記憶體(200 MHz DDR,400 MB/s)。

  • PAG7936 1 MP 彩色全域快門感測器。

  • 車載 IMU(加速度計+陀螺儀)與 麥克風,可進行音訊與動態融合。

  • 高速 USB‑C(480 Mb/s,1.5 A 電流限制)、gigabit 乙太網路(透過擴充板支援 PoE)、Wi‑Fi a/b/g/nBluetooth 5.1(晶片天線或 U.FL 選項)。

  • microSD 插槽 —— SD 最高 2 GB、SDHC 最高 32 GB、SDXC 最高 2 TB。

  • LiPo 充電器(500 mA 快充)、電池電壓 ADC、具備 8 KB 備援 RAM 的 RTC,以及專用的備援電池接腳。

  • 18 個 I/O 接腳,全部為 3.3 V 輸出/3.3 V 容忍,每腳 20 mA,並支援中斷。

  • 使用者 RGB LED、使用者按鈕,以及一個獨立的狀態 LED,用於顯示充電/USB/VIN 電源狀態。

警告

N6 的 I/O 接腳 不耐 5 V。請勿將本裝置直接連接到如 Arduino Mega 等 5 V MCU。請僅透過 VIN 為 N6 供電。

接腳配置

OpenMV N6 PAG7936 接腳配置

接腳參考

接腳名稱

功能

P0

SPI2 MOSI / I2S2 SDO

P1

SPI2 MISO / I2S2 SDI

P2

SPI2 SCLK / UART4 TX / CAN1 TX / I2S2 CK

P3

SPI2 SS / UART4 RX / CAN1 RX / I2S2 WS

P4

I2C2 SCL / UART3 TX / TIM2 CH3 / I3C2 SCL

P5

I2C2 SDA / UART3 RX / TIM2 CH4 / I3C2 SDA

P6

TIM12 CH1(此接腳無 ADC —— 請參閱 P6_ADC

P6_ADC

專用 12 位元 ADC 輸入(內部與 P6 相連)

P7

TIM4 CH1

P8

TIM4 CH2

P9

TIM17 CH1

P10

TIM15 CH2 / 影格同步 I/O

P11

喚醒(低電位有效,WKUP3)

P12

RESET —— 拉至 GND 可重置開發板(非 GPIO)

P13

UART7 RX

P14

UART7 TX

P15

SPI4 CS

P16

SPI4 SCK

P17

SPI4 MISO

P18

SPI4 MOSI

SW

使用者按鈕(低電位有效)

ONOFF (SW2)

深度睡眠喚醒按鈕(低電位有效,WKUP2)

ST

VIN 供電時為低電位,USB 供電時為高電位

CHG

低電位有效;當所接的 LiPo 電池正在充電時為低電位

PG

低電位有效;當有 VIN 或 USB 電源時為低電位

BAT_ADC

用於量測所接 LiPo 電池電壓的內部 ADC 通道

LED_RED

RGB LED 紅色通道(低電位有效)

LED_GREEN

RGB LED 綠色通道(低電位有效)

LED_BLUE

RGB LED 藍色通道(低電位有效)

備註

P10 影格同步線是一條共享匯流排。 它同時連接到 MCU、相機感測器的觸發/曝光接腳,以及使用者排針。其方向由應用程式定義 —— 視感測器的設定方式而定,MCU、感測器或外部訊號皆可驅動它(某些感測器可將同一接腳用作觸發輸入 曝光輸出)。請確保同一時間只有一個驅動端在作動。

備註

ONOFF 與 P11 是參考至常開的 RAW 電源軌(而非切換式的 3.3 V 電源軌),因此即使開發板其餘部分處於深度睡眠/低功耗模式,它們仍可運作。兩者皆為低電位有效輸入。

這些接腳會經過電位轉換器,以便搭載於 RAW 電源軌上。如果你確實需要 ONOFF 或 P11 具備 3.3 V 直連的 GPIO 行為(例如要從 3.3 V MCU 直接驅動它們而不經過轉換器),開發板提供了上拉與 0 歐姆跳線焊盤,可讓你繞過轉換器。這屬於進階硬體改裝 —— 大多數使用者應維持原狀。

備註

P15–P18 與 Gigabit 乙太網路 PHY 共用,後者預設已接線並啟用。若要將這些接腳用作使用者 I/O,你必須將開發板背面的 0 歐姆電阻回流焊至 GPIO 位置。此操作僅會停用 gigabit 乙太網路 —— 10/100 Mb/s 乙太網路仍會在其專用接腳上繼續運作。

電源接腳

  • 3.3V —— 已穩壓的 3.3 V 電源軌。在 N6 上 僅供輸出 —— 請勿將外部電源饋入此接腳。可為擴充板提供最高 1 A 的電流。

  • VIN —— 5 V 輸入。為開發板與板載 LiPo 充電器供電。

  • RAW —— 輸入/輸出,常開(3.6 V – 5 V)。承載當前作用中的任一電源(VIN、USB 或所接電池),也可用作輸入。當你向其饋入電源時,必須透過一顆串聯二極體驅動 RAW —— 否則電流會回灌至 VIN/USB,損壞電源供應或板載的保護電路。

  • GND —— 共用接地。

備註

板載電源管理晶片會自動選擇 USB 或 VIN 中電壓較高者 來為開發板與電池充電器供電。如果接有 LiPo 電池,它會利用剩餘的電壓餘裕進行充電;若 VIN/USB 電壓下降或被拔除,控制器會切換回電池以維持開發板運作。

備註

開發板背面有用於外接 3.3 V RTC 備援電池 的焊盤。將一顆鈕扣電池接到這些焊盤上,可在開發板其餘部分斷電時維持 RTC 與 8 KB 備援 RAM 的運作。

小訣竅

請使用 電池續航估算器 來模擬在給定的作動/深度睡眠工作週期下,N6 以電池供電可運作多久。

乙太網路接腳

N6 將乙太網路 PHY 的 MDI 訊號對引出至 GPIO 排針旁的專用焊盤。MDI 接腳不可直接接至 RJ45 —— PHY 與纜線之間 必須 加入乙太網路磁性元件(一顆隔離變壓器,可內建於 magjack 或裝在擴充板上)。OpenMV PoE 擴充板已內含這些元件;如果你要自製插座,請使用整合磁性元件的 RJ45,或外接變壓器。

  • ETH_LED —— 連線/活動 LED。連線建立時為低電位有效;有流量時會閃爍。

  • DA P / DA N —— A 對(10/100 中為 TX,所有速率皆使用)。

  • DB P / DB N —— B 對(10/100 中為 RX,所有速率皆使用)。

  • DC P / DC N —— C 對,僅在 gigabit 時使用。

  • DD P / DD N —— D 對,僅在 gigabit 時使用。

10/100 Mb/s 僅需 AB 對。Gigabit 則需要全部四對 A–D

復原與除錯接腳

  • RESET —— 拉至 GND 可重置開發板。釋放後 MCU 即可正常啟動。

  • BOOT0 —— 在為開發板供電時將其拉至 3.3 V,可進入 ROM bootloader 模式。OpenMV IDE 會利用此模式重新燒錄板載的 bootloader。

  • BOOT1 —— 一個開關,可將開發板置於開發者模式,以便搭配 ST 的工具(透過接至 ARM 10 腳 SWD/JTAG 排針的 ST‑LINK)使用。在以 OpenMV 韌體與工具正常運作時,請保持其停用。

板上配有專用的 ARM 10 腳 SWD/JTAG 排針,相容於 ST‑LINK 與 SEGGER J‑Link 轉接器。

板載周邊裝置

LED

N6 具有兩顆 RGB LED:

  • 使用者 RGB LED —— 可由軟體控制,以 LED_REDLED_GREENLED_BLUE 形式提供:

    from machine import LED
    
    LED("LED_RED").on()
    LED("LED_GREEN").on()
    LED("LED_BLUE").on()
    
  • 電源 LED —— 由板載電源管理硬體直接驅動,無法以軟體控制。可用它一眼判讀電源供應的狀態。

    運作期間:

    通道

    意義

    VIN 正在為開發板供電(USB 供電時熄滅)

    有 USB 或 VIN 電源

    正在為所接的 LiPo 電池充電

    在深度睡眠中所有通道皆熄滅,唯獨紅色除外,當 LiPo 正在充電時它仍會亮起。

使用者按鈕

N6 具有兩個按鈕:

  • SW —— 通用使用者按鈕。拉至低電位時作動。

  • ONOFF(SW2)—— 喚醒按鈕。唯一能將開發板從深度睡眠中喚醒的按鈕。

from machine import Pin

sw    = Pin("SW",    Pin.IN)   # user button
onoff = Pin("ONOFF", Pin.IN)   # SW2 — wakes from deep sleep
print(sw.value(), onoff.value())

若要讓開發板進入深度睡眠並由 ONOFF(SW2)將其喚醒,只需呼叫 machine.deepsleep() —— 不需要任何喚醒設定,此按鈕已直接接至 WKUP2 輸入:

import machine

machine.deepsleep()   # press ONOFF (SW2) to wake the board

你也可以將 ONOFF 接成軟性電源開關。請以 上升 緣觸發 —— 訊號線會在使用者鬆開按鈕後穩定於高電位,因此下一次按壓便能明確判定為一個喚醒事件:

import machine
from machine import Pin

def power_off(_):
    machine.deepsleep()

Pin("ONOFF", Pin.IN).irq(power_off, Pin.IRQ_RISING)

# ...rest of the application runs here. Press ONOFF once to sleep,
# press it again to wake.

電源狀態接腳

三個低電位有效的狀態輸入,可讓韌體得知板載電源管理晶片的運作狀態:

  • ST —— 開發板以 VIN 運作時為低電位,以 USB 電源運作時為高電位。

  • CHG —— 當所接的 LiPo 電池正在充電時為低電位。

  • PG —— 當有 VIN 或 USB 電源時為低電位。

from machine import Pin

on_vin    = not Pin("ST",  Pin.IN).value()
charging  = not Pin("CHG", Pin.IN).value()
power_ok  = not Pin("PG",  Pin.IN).value()

相機感測器

PAG7936 透過 csi --- 相機感測器 模組驅動:

import csi

cam = csi.CSI()
cam.reset()
cam.pixformat(csi.RGB565)
cam.framesize(csi.HD)         # 1280×800
cam.snapshot(time=2000)       # let auto‑exposure settle

while True:
    img = cam.snapshot()

此感測器位於一個 可拆卸模組 上 —— 可將其更換為任一其他 OpenMV 相機模組(全域快門、熱成像、更高解析度等),而無需更動開發板的其餘部分。

PAG7936 支援觸發模式 —— 像素積分會與每次 csi.CSI.snapshot 呼叫精確對齊,而非依循自由運行的影格時脈,這對於將擷取與外部事件或另一個感測器同步十分有用。可透過 csi.CSI.ioctl 搭配 csi.IOCTL_SET_TRIGGERED_MODE 啟用。由於讀出不再與下一影格的積分管線化,影格率會降至約自由運行模式的一半:

cam.ioctl(csi.IOCTL_SET_TRIGGERED_MODE, True)

NPU

N6 的 1 GHz Neural‑ART NPU(600 GOPS INT8)透過 ml --- 機器學習 模組提供。儲存在唯讀 /rom 檔案系統上的模型可直接從快閃記憶體載入,無需複製到 RAM,因此即使是大型偵測器也能與即時影格緩衝區舒適地並存。在每一影格上執行 YOLOv8 偵測器,並將預測結果繪製在即時影像之上:

import csi
import time
import ml
from ml.postprocessing.ultralytics import YoloV8

# Initialize the sensor.
csi0 = csi.CSI()
csi0.reset()
csi0.pixformat(csi.RGB565)
csi0.framesize(csi.VGA)

# Load YOLO V8 model from ROM FS.
model = ml.Model("/rom/yolov8n_192.tflite", postprocess=YoloV8(threshold=0.4))
print(model)

# Visualization parameters.
n = len(model.labels)
model_class_colors = [
    (int(255 * i // n), int(255 * (n - i - 1) // n), 255)
    for i in range(n)
]

clock = time.clock()
while True:
    clock.tick()
    img = csi0.snapshot()

    # boxes is a list of list per class of ((x, y, w, h), score) tuples
    boxes = model.predict([img])

    # Draw bounding boxes around the detected objects
    for i, class_detections in enumerate(boxes):
        rects = [r for r, score in class_detections]
        labels = [model.labels[i] for j in range(len(rects))]
        colors = [model_class_colors[i] for j in range(len(rects))]
        ml.utils.draw_predictions(img, rects, labels, colors, format=None)

    print(clock.fps(), "fps")

麥克風

板載麥克風透過 audio --- 音訊模組 擷取。每個緩衝區會以帶符號 16 位元 PCM 的 bytearray 形式抵達,因此能輕鬆地餵入 ulab/numpy 進行快速 DSP。以下是一個簡單的音量偵測器 —— 每當 RMS 音量超過某閾值時便印出訊息:

import audio
from ulab import numpy as np

def loudness(pcmbuf):
    samples = np.array(np.frombuffer(pcmbuf, dtype=np.int16), dtype=np.float)
    rms = np.sqrt(np.mean(samples ** 2))
    if rms > 10000:
        print("Loud!", int(rms))

audio.init(channels=1, frequency=16000, gain_db=24)
audio.start_streaming(loudness)

while True:
    pass

IMU

相機模組下方的板載加速度計+陀螺儀透過 imu --- imu 感測器 提供:

import imu
import time

while True:
    print(imu.acceleration_mg())   # (x, y, z) in milli‑g
    print(imu.angular_rate_mdps()) # (x, y, z) in milli‑deg/s
    time.sleep_ms(100)

Wi‑Fi

板載的 CYW43439 透過 network --- 網路設定 以 station 介面形式提供。連線後,ipconfig("addr4") 會回傳 (ip, netmask) 配對:

import network, time

wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect("ssid", "password")
while not wlan.isconnected():
    time.sleep(1)
print("Wi‑Fi IP:", wlan.ipconfig("addr4")[0])

Bluetooth

同一顆 CYW43439 也提供 Bluetooth 5.1。請使用 aioble --- 非同步 BLE 進行對 asyncio 友善的 BLE —— 例如,以周邊裝置形式進行廣播並等待 central 連線:

import asyncio
import aioble

async def run():
    while True:
        conn = await aioble.advertise(250_000, name="OpenMV-N6")
        print("Connected:", conn.device)
        await conn.disconnected()

asyncio.run(run())

乙太網路

當 RJ45(含磁性元件)連接到 MDI 焊盤時,gigabit PHY 會以 LAN 介面形式出現。連線建立後,DHCP 會自動執行:

import network, time

lan = network.LAN()
lan.active(True)
while not lan.isconnected():
    time.sleep(1)
print("Ethernet IP:", lan.ipconfig("addr4")[0])

microSD 記憶卡

插入記憶卡後,它會自動掛載於 /sdcard,並可透過一般檔案系統使用:

import os

for entry in os.listdir("/sdcard"):
    print(entry)

匯流排參考

GPIO

使用 machine.Pin 來讀取或驅動任何絲印標示的接腳。輸出為 3.3 V CMOS,每腳可吸入/輸出最高 20 mA。

from machine import Pin

out = Pin("P0", Pin.OUT)
out.on()
out.off()
out.value(1)

inp = Pin("P1", Pin.IN, Pin.PULL_UP)
print(inp.value())

任何輸入接腳也都可在邊緣轉態時觸發中斷:

def handler(pin):
    print("triggered:", pin)

Pin("P1", Pin.IN, Pin.PULL_UP).irq(
    handler, Pin.IRQ_FALLING | Pin.IRQ_RISING,
)

UART

匯流排

TX

RX

UART3

P4

P5

UART4

P2

P3

UART7

P14

P13

from machine import UART

uart = UART(3, baudrate=115200)
uart.write("hello")
uart.read(5)

I²C

匯流排

SCL

SDA

I2C2

P4

P5

from machine import I2C

i2c = I2C(2, freq=400_000)
i2c.scan()
i2c.writeto(0x76, b"hi")

同一套硬體也可透過 machine.I2CTarget 以目標(從屬)模式使用,向另一個 I²C 控制器公開一塊記憶體區域:

from machine import I2CTarget

buf = bytearray(32)
target = I2CTarget(2, addr=0x42, mem=buf)

SPI

匯流排

MOSI

MISO

SCK

CS

SPI2

P0

P1

P2

P3

SPI4

P18

P17

P16

P15

from machine import SPI
from machine import Pin

spi = SPI(2, baudrate=10_000_000)
cs = Pin("P3", Pin.OUT, value=1)   # CS is not driven by the SPI peripheral

cs.value(0)
spi.write(b"hello")
cs.value(1)

CAN

匯流排

TX

RX

CAN1

P2

P3

備註

在韌體 v5.0.0 中,本開發板尚未支援 CAN。

from machine import CAN

can = CAN(1, 500_000)
can.set_filters(None)
can.send(0x123, b"\xDE\xAD\xBE\xEF")
print(can.recv())

ADC

兩個 ADC 通道在抵達 MCU 之前都會先經過一個由運算放大器緩衝的分壓器,因此 read_u16() 在每個接腳上對應的滿刻度輸入電壓各不相同。

接腳

滿刻度

備註

P6_ADC

~3.3 V

通用焊盤,內部與 P6 相連

BAT_ADC

~5.0 V

用於 LiPo 電池的內部通道

from machine import ADC
import time

adc = ADC("P6_ADC")
bat = ADC("BAT_ADC")

while True:
    print("P6:", adc.read_u16() * 3.3 / 65535, "V")
    print("BAT:", bat.read_u16() * 5.0 / 65535, "V")
    time.sleep_ms(100)

PWM

接腳

計時器/通道

P4

TIM2 CH3

P5

TIM2 CH4

P6

TIM12 CH1

P7

TIM4 CH1

P8

TIM4 CH2

P9

TIM17 CH1

P10

TIM15 CH2

可透過 machine.PWM 驅動其中任一個:

from machine import Pin, PWM

pwm = PWM(Pin("P6"), freq=1_000, duty_u16=32768)

軟體位元拍打(bit‑banged)匯流排

如果你需要額外的匯流排,machine.SoftI2Cmachine.SoftSPI 可在任何 GPIO 上運作。

熱成像感測器(板外)

韌體內含 fir --- 熱感測器驅動程式 (fir == far infrared,遠紅外線) 驅動程式,供外接的熱成像儀使用:

  • MLX90621 —— 16 × 4 紅外線陣列

  • MLX90640 —— 32 × 24 紅外線陣列

  • MLX90641 —— 16 × 12 紅外線陣列

  • AMG8833 —— 8 × 8 紅外線陣列

將模組接到開發板的 I²C 匯流排,並以 fir.init()fir.snapshot() 讀取影格:

import time
import image
import fir

fir.init()                          # auto‑detects the sensor
clock = time.clock()

while True:
    clock.tick()
    try:
        img = fir.snapshot(x_scale=5, y_scale=5,
                           color_palette=image.PALETTE_IRONBOW,
                           hint=image.BICUBIC,
                           copy_to_fb=True)
    except OSError:
        continue
    print(clock.fps())

fir 驅動程式僅透過 I²C 2 與感測器通訊 —— 請將模組接至 P4(SCL)與 P5(SDA)。

時序

time

time 模組涵蓋阻塞式延遲、單調遞增的計時刻度,以及經過時間的量測:

import time

time.sleep(1)              # seconds
time.sleep_ms(500)
time.sleep_us(10)

start = time.ticks_ms()
# ...do work...
elapsed = time.ticks_diff(time.ticks_ms(), start)

虛擬計時器

machine.Timer 可排程週期性或單次的回呼函式,而不佔用硬體計時器的插槽。將 id 傳入 -1 即可使用虛擬(軟體)計時器:

from machine import Timer

one_shot = Timer(-1)
one_shot.init(period=5_000, mode=Timer.ONE_SHOT,
              callback=lambda t: print("once"))

periodic = Timer(-1)
periodic.init(period=2_000, mode=Timer.PERIODIC,
              callback=lambda t: print("tick"))

週期值以毫秒為單位。呼叫 deinit() 可停止並釋放該插槽。

即時時鐘

machine.RTC 可在多次重置之間(以及在接有選用的 3.3 V 備援電池至背面焊盤時,參見 電源接腳,在完全斷電之間)持續維持實際時間:

from machine import RTC

rtc = RTC()
rtc.datetime((2026, 4, 30, 4, 12, 0, 0, 0))   # Y, M, D, weekday, h, m, s, subsec
print(rtc.datetime())

RTC 在深度睡眠期間也會持續運行,因此你可以將它用作 machine.deepsleep() 的喚醒來源。

看門狗

machine.WDT 會在應用程式當機時重置開發板。一旦啟動便無法停止或重新設定 —— 請在主迴圈中週期性地餵食它:

from machine import WDT

wdt = WDT(timeout=5_000)   # 5 second window
while True:
    # ...do work...
    wdt.feed()

開機與執行階段資訊

USB bootloader 視窗

每次上電時,相機都會執行一段短暫的 bootloader(數秒鐘),讓 OpenMV IDE 無需使用者進入 DFU 模式即可更新韌體。此視窗過期後,bootloader 會交棒給 boot.py,接著是 main.py

執行中的指令碼可隨時呼叫 machine.bootloader() 重新進入 bootloader:

import machine

machine.bootloader()

檔案系統與開機順序

N6 韌體在開機時最多會掛載三個檔案系統:

  • 內部快閃記憶體 —— 始終掛載於 /flash。預設存放 main.pyREADME.txt;於首次開機時建立。

  • microSD 記憶卡 —— 若有插入記憶卡,則掛載於 /sdcard

  • ROMFS —— 位於 /rom 的唯讀、記憶體映射檔案系統,用於封裝可受益於零複製存取的大型資料資產(例如 AI 模型)。由 MicroPython 在啟動時、任何使用者 Python 執行之前自動掛載。

掛載完成後,當記憶卡存在時工作目錄會設為 /sdcard,否則為 /flash。直譯器接著會從該目錄執行指令碼:

  • boot.py 會在 每一次 軟重置時執行(冷開機、從 REPL 按下 Ctrl‑D,或每當執行中的指令碼回傳時)。

  • main.py 僅在冷開機時 執行,緊接在 boot.py 之後。後續的軟重置會重新執行 boot.py,但隨即進入 REPL —— 若要重新執行 main.py,你必須完全重置開發板。

boot.pymain.py 放入 SD 卡,會覆蓋快閃記憶體中的副本而不更動它 —— 這兩個檔案都會在開機目錄中查找(記憶卡已掛載時為 /sdcard,否則為 /flash)。

剛燒錄完成的開發板所附帶的預設 main.py,僅會閃爍使用者 RGB LED 的 藍色 通道作為心跳訊號(兩個短脈衝、短間隔),如此一來即使未連接任何主機,你也能判斷韌體已乾淨地開機。

sys.path 會被擴充以納入全部三個檔案系統及其 lib/ 子目錄,因此可匯入的模組可存放於 /flash/lib/sdcard/lib/rom/lib

若要強制系統忽略已插入的 SD 卡(例如即使有卡也要執行快閃記憶體中的 main.py),請在 /flash 的根目錄建立一個名為 SKIPSD 的空檔案。

透過 USB 連線時,開機檔案系統(有記憶卡時為 /sdcard,否則為 /flash)也會在主機上列舉為一個 USB 大容量儲存裝置,讓你直接編輯 boot.pymain.py 與任何其他檔案。在重置相機之前請先退出該磁碟,以便主機將其快取的寫入內容刷新。

備註

由於作業系統將此磁碟視為被動的區塊裝置,因此在 OpenMV Cam 上執行的程式碼所建立或修改的檔案,要等到主機重新掛載磁碟後才會顯示出來。如果作業系統與 OpenMV Cam 同時寫入同一個檔案系統,作業系統會勝出並覆蓋相機所做的變更。指令碼寫回的任何資料請使用 SD 卡,並在從主機讀取這些檔案前先重新掛載。

備註

當主機正在讀取或寫入 USB 大容量儲存磁碟時,使用者 RGB LED 的 紅色 通道可能會短暫亮起 —— 這是韌體驅動的活動指示,並非故障。

儲存容量

N6 出廠時配備:

  • /flash —— 4 MB FAT 檔案系統,可讀寫。

  • /rom —— 24 MB 唯讀記憶體映射 ROMFS,用於封裝可受益於零複製 mmap 存取的指令碼與 ML 模型。

  • /sdcard —— 所插入的 microSD 卡的完整容量(有卡時),可讀寫。

硬故障指示器

如果使用者 RGB LED 正在快速循環所有顏色 —— 快到看起來比較像一顆 閃爍的白色 LED 而非個別的色相 —— 表示韌體遇到了無法復原的硬故障(hard fault)。重新燒錄韌體即可復原;如果重新燒錄仍無濟於事,開發板可能已實體損壞。

軟體函式庫

完整的模組清單請參閱 函式庫索引 —— 其中包括哪些模組是 N6 版本所獨有的。