一、MaixPy 與 C 開發有什么異同,我該怎么選擇#
MaixPy 是基于 Micropython 的腳本語言, 不需要編譯,在運行時解析,編寫起來更簡單方便,只是運行時時實性不如 C 語言。
所以如果是快速驗證、新手、只會 python、頭發少等都可以用 MaixPy; 追求極限性能效率或者熟悉 C ,以及對 MaixPy 的長期運行的穩定性不太有信心的都可以使用 C 語言開發
二、MaixPy IDE 無法成功連接開發板#
現象:
開發板到手之后,一直無法連接 MaixPy IDE
檢查固件是否支持 IDE, 早期的固件以及名字帶minimum的固件都不支持
檢查串口是否被占用(其它軟件也打開了串口)
點擊連接后,不用和終端工具同時使用,否則會出現串口占用無法打開
如果一直無法成功連接成功, 檢查:
請檢查是否開發板型號選擇錯誤;
觀察開發板屏幕是否有變化,如果沒有反應可能是串口選擇錯誤;
嘗試升級到最新的 master 分支固件, 以及最新的 MaixPy IDE 軟件
MaixPy 版本號低于 0.5.0_v0 不支持連接 MaixPy IDE
三、Micro SD 卡讀取不到#
Micro SD 讀取不到現象及解決方法:
確認 SD 能否在電腦上正常使用,如果不能即 SD 已損壞,
電腦能夠正常使用,讀取 SD,但 MaixPy 開發板無法使用:
SD 卡未格式化為 MBR 分區 FAT32 格式
電腦能夠正常使用 SD 卡,也確認 SD 卡的磁盤格式為 FAT32,但 MaixPy 開發板依舊無法使用:
可能存在的原因:部分 SD 出廠時,sd 中沒有磁盤分區表,或者磁盤分區表類型不是 MBR
解決的方法:使用第三方磁盤管理軟件,將 sd 分區表類型轉換為 MBR, 并且將 sd 格式格式化為 FAT32
這里使用Diskgenius來轉換磁盤分區表格式
SD 卡不支持 SPI 協議
目前硬件只能支持 SPI 協議讀取, 盡量購買正規的卡
比如:下圖左邊兩張卡 MaixPy 的驅動不支持, 中間和右邊的都支持, 但是中間的 class10 卡速度最快(最高測過 128GB可用)
另外測試過網上購買的幾張閃迪、金士頓、三星的卡,其中發現有一張三星的卡無法使用
四、SD 卡支持多大容量#
最大測試過1TB可以使用
五、使用 SD 加載文件、模型不成功#
現象:我們在使用過程中可能遇到加載模型提示錯誤,
可能存在的問題原因: sd 不兼容,掛載不成功
驗證 sd 卡是否掛載方法:
import os print(os.listdir("/")) >>['flash'] # 沒有掛載 SD 卡 >>['flash', 'sd'] # 掛載 SD 卡成功
Copy
六、為什么連接了 IDE 幀率降低了很多#
K210 沒有 USB 外設, 因此只能使用串口與 IDE 通信, 速度不如 USB 設備快,因此會影響幀率, 可以關閉 IDE 的攝像頭預覽
七、為什么 IDE 上預覽的攝像頭圖像很模糊#
K210 沒有 USB 外設, 因此只能使用串口與 IDE 通信, 速度不如 USB 設備快, 因此對圖片進行了壓縮,如果需要看清晰的圖像請在開發板的屏幕上看,或者保存成圖片傳到電腦查看
所以 IDE 的圖像預覽功能主要是給教學和演示使用, 平時建議使用屏幕,
可以使用以下代碼來設置預覽圖質量
sensor.set_jb_quality(95)
Copy
這樣就將預覽圖的質量設置為了 95%, 但是幀率會有明顯降低
八、怎么提高攝像頭幀率#
換更好的攝像頭,比如 ov7740 幀率會比 ov2640 高一點。 但前提是攝像頭電路必須與開發板的電路兼容
增加攝像頭時鐘頻率(sensor.reset(freq=)),但是注意不要太高,太高會讓畫面變差
可以自己編譯源碼,打開攝像頭雙緩沖選項(默認打開),并且 sensor.reset(dual_buff=True),幀率會有所增加,但是相應地,耗費的內存也會增加(大約為 384KiB )
九、IDE 幀緩沖區成像方向不正確,LCD 顯示方向不正確#
由于 MaixPy 支持的硬件型號較多,在使用 MaixPy IDE 或者 LCD 顯示的時候會出現顯示的方向不正確,那么這時候我們就需要對圖像進行旋轉了;
在修正顯示方向之前,我們需要確認是 Sensor 方向旋轉(MaixPy IDE 右上角的圖像即為 Sensor 直接輸出的圖像)了,還是 LCD 方向旋轉了
修正方法:
sensor 方向修正:
# 設置攝像頭水平鏡像 # `enable`: 1 表示開啟水平鏡像 0 表示關閉水平鏡像 sensor.set_hmirror(enable) # 設置攝像頭垂直鏡像 # `enable`: 1 表示開啟垂直鏡像 0 表示關閉垂直鏡像 sensor.set_vflip(enable)
Copy
lcd 方向修正:
# 設置 `LCD` 屏幕方向 # 參數: `dir`: 取值范圍 [0,3], 從`0`到`3`依次順時針旋轉 # 返回值: 當前方向,取值[0,3] lcd.rotation(dir) # 設置 `LCD` 是否鏡面顯示 # 參數: `invert`: 是否鏡面顯示, `True` 或者 `False` # 返回值: 當前設置,是否鏡面顯示,返回`True`或者`False` lcd.mirror(invert)
Copy
十、燒錄 MaixPy 之后,MaixPy 出現無法啟動#
現象:我們在使用過程中可能遇到燒錄 MaixPy 之后,MaixPy 出現無法啟動(表象為 無法點亮屏幕,白屏 等),
問題原因: 出現這種現象很大一部分是內部文件系統中的配置文件讀取出錯,或者我們設置的系統配置值(如 gc heap 值過大)出錯導致系統無法啟動。
解決方法:擦除文件系統(擦除全部 flash)
使用 kflash_gui 右上角選擇擦除功能,然后加載MaixPy 文件系統模板,地址變成0xD00000, 長度變為3MiB
或者直接燒錄擦除固件: 點擊下載 K210-chip_erase.kfpkg
擦除后再重新燒錄一次目標固件即可
十一、使用 JTAG 調試器一直無法接連 K210#
現象:使用裸機開發 K210, JTAG 調試器一直無法接連 K210
可能的原因:
OpenOCD 調試環境搭建有問題(細節這里不說明)
燒錄過 key_gen.bin 之后,將永久禁用 K210 的 JTAG 調試功能
十二、下載,保存腳本到 MaixPy 內部flash 之后,板子無法更新固件,無法啟動運行腳本#
可能現象:下載,保存腳本到 MaixPy 內部flash 之后,板子無法更新固件,板子無法啟動
程序中拉高了 GPIO16, 造成了自動下載點電路無法拉低 GPIO16,使 K210 進入 ISP 模式,手動拉低 16 號管腳即可
十三、kflash 無法燒錄/更新 MaixPy 固件#
kflash_gui 配置選項
開發板型號
開發板型號選錯
燒錄空間(SRAM/Flash)
燒錄空間選錯
波特率&下載速度模式
下載波特率過高
十四、出現 type object 'board_info' has no attribute 'XX'#
請看開發板配置文件,對開發板進行重新配置
十五、TF卡格式沒有問題,但是無法讀取TF卡,掛載失敗#
請使用
from machine import SDCard SDCard.remount()
Copy
進行重新掛載
使用
def sd_check(): import os try: os.listdir("/sd/.") except Exception as e: return False return True print(sd_check())
Copy
進行檢測是否掛載成功
十六、ValueError:[MAIXPY]kpu: load error:2002, ERR_KMODEL_VERSION: onlysupport kmodel V3/V4 now#
1、更新固件,更新固件,更新到最新版本支持v3/v4的MaixPy固件,具體更新方法看前面的文檔
2、檢查存放模型的位置是否與讀取的位置是否一致,如果將模型放到sd上,然后讀取的位置為flash的0x300000時就會出現這樣的錯誤
3、如果是使用以 smodel 為后綴模型,必需使用自己開發板上的機器碼來獲取模型。
十七、在 MaixPyIDE 上運行 boot.py 文件時,卡死,沒有顯示,沒有報錯#
如果你的模型是燒錄到flash上,你需要在串口終端上運行boot.py里面的代碼,輸出一段紅色的報錯信息為Out of memory,這時你需要將模型放到sd上,然后再進行讀取(一定要可以掛載的sd卡,否則都是白干)
十八、運行模型的時候報 ValueError: [MAIXPY]kpu: load error:2006, ERR. NO_ MEM: memory not enough#
同上 Out of memory ,請使用更小的固件獲得更多的運行內存,標準固件大于 2m 剩余 1m 多,同理選用 600kb 可以獲得 3m 多的運行內存,查看剩余運行內存看 demo_view_mem.py。
這是內存不足了,不是 flash 或者是 sd 內存不夠,是運行內存不夠了。解決辦法:
這時需要跟換 mini 固件得以解決,如果還是不行,那就要減少訓練的時候使用的數據集
或者通過查看【內存管理】這篇教程進行對內存和 GC 進行調整
十九、OSEerror: [Errno 2] ENOENT#
所需要讀取的文件不存在對應的路徑上,如果這個文件是在sd卡上的話,建議查看sd卡是否掛載了
使用一下代碼判斷內存是否掛載上,如果掛載不上會放回False,可能是卡不兼容,或者是卡沒有格式化好,如果不是在官方店買的卡,不能保證能用(官方卡出現不能使用的及時與客服反饋)
def sd_check(): import os try: os.listdir("/sd/.") except Exception as e: return False return True print(sd_check())
Copy
可以使用下面代碼進行重新掛載
from machine import SDCard SDCard.remount()
Copy
二十、串口終端打不開板子,但是ide可以運行#
1、檢查串口是不是被ide占用了,因為串口只能用一個軟件進行打開。
2、使用 ide 中軟件菜單的串口終端打開
二十一、ValueError: [MAIXPY]kpu: load error:2005,ERR_READ_FILE: read file failed#
讀取文件失敗(read file failed)
重新獲取模型,重新燒錄模型,重新導入模型。
檢查文件是不是損壞了,用校驗工具對比一下。
檢查sd卡上的模型模型和代碼中的名字與路徑是不是一樣的。
檢查模型下載地址是不是和程序一樣。
二十二、燒錄了 key_gen.bin 之后的操作#
燒錄 key_gen.bin 之后,通過串口軟件來連接開發板,然后按下 reset 按鍵,重啟開發板,可以看到機器碼打印到串口的接收區中。也可以通過 MaixPy IDE 中的 串口終端來連接開發板查看機器碼。
獲取到機器碼之后,需要重新燒錄需要使用的固件才能運行對應的代碼。否則是連 IDE 都無法連接的
二十三、攝像頭拍攝的模糊#
使用 OV5642 攝像頭拍攝出來的畫面模糊,可以通過扭動攝像頭來進行調整焦距。如果使用其他的攝像頭拍攝的模糊也是同理,但有些攝像頭特性就是如此,只能通過更改攝像頭來進行修改
二十四、燒錄模型或者固件,出現花屏、屏幕顏色不對、屏幕顏色單一#
這時需要使用 kflash 來對 flash 整片擦除,然后重新燒錄 固件 和 模型。
燒錄模型到 flsah 的時候一定要注意燒錄的位置,是否正確(數清楚對應 0 的個數)。
比如常見的白色花屏就是固件燒錯,需要擦除重燒標準固件就正常了,主要因為屏幕配置不同導致的。
比如綠屏可能是攝像頭損壞了輸出了綠色圖像。
比如紅屏是正常的,但需要用戶下載程序。
藍屏的話需要完全擦除片內 flash 后再重新燒錄。
二十五、TypeError: Can't convert to type 錯誤#
Maixpy ide 掛著運行時內存不足,就會出現的常見錯誤,解決方法,換成菜單的打開終端運行,或讓內存有一定預留就不會出現了。
二十六、kpu:check img format err!#
注意看終端輸出提示,特別強調!!!
灰色字體的錯誤 kpu img w=320, h=240 but model w=224, h=224
意思是說,這個模型的要求是 224 224 ,但輸入的是 320 240 。
所以要改圖片為 224 224 輸入,如果是 128 128 同理修改圖片尺寸!!!!!
要么使用 sensor.set_windowing 改變攝像頭輸入大小,要么對 圖像 img.resize 改變圖像大小。
二十七、ValueError input not support#
檢查一下 Python 代碼出錯行,排查 ValueError 錯誤,一般發生在輸入的類型不與目標函數所需的類型一致導致的錯誤,可能是內存不足導致對象為 None 也可能是類被回收了。
二十八、OSError reset failed#
這種情況可能是攝像頭接錯、接反或被燒壞了。可以先檢查攝像頭是否正確且正常被連接,確定沒相關出現人為錯誤后只能確認是攝像頭壞了。
建議使用 Sipeed 所提供的攝像頭,用戶自行配備的可能因為線序不符或者攝像頭驅動不支持等原因而不能用。
二十九、后綴名為 kmodel 和 smodel 的模型文件有什么區別?#
后綴名為 kmodel 的模型文件是用來闡述這個模型的形狀結構和參數。
而 smodel 模型需要用到機器碼;機器碼是一機一碼的一種加密方式,用于模型文件的加密。如果使用別的機器碼去加密或者下載其他以 smodel 為文件后綴的模型文件,開發板是無法使用這些模型文件的!!
三十、MemoryError: Out of normal MicroPython Heap Memory#
前往 : https://neucrack.com/p/325 查閱相關解決方法
三十一、如何同時運行多個模型#
其實也不是同時運行,而是分時運行。
如果有足夠內存,就一次性把幾個模型加載到內存, 然后分別分時運行推理。
如果內存不足,加載第一個模型,運行后注銷(使用 kpu.deinit),再加載運行第二個模型部分或全部模型。使用 load_flash 的方式加載模型,實時從 flash 讀取內容。
三十二、如何加載大模型#
由于 K210 的 RAM 的運行限制,當需要加載大模型文件時,可以通過直接 Flash 中動態加載并運行。
具體用法前往 github:
使用說明:點我github
具體倉庫:點我github
三十三、could not open port 'COMxx':Permission 錯誤#
這種情況是因為串口被占用了,自己將使用過串口的程序關閉掉就行。實在不會解決的話重啟電腦也能達到關閉所有使用串口程序的效果。
三十四、Maix Dock 串口不能用#
Maix Dock 不能使用 MobaXterm 或其他 不支持手動串口流控制的軟件 來進行串口通信。
為了不浪費時間,建議使用 MaixPy IDE 來進行通信。
可以在 MaixPy IDE 頂部菜單欄 工具->打開終端->新終端->連接到串口->選擇正確的串口->115200波特率 來新建一個終端,在這里面使用串口。
審核編輯 黃昊宇
-
RISC-V
+關注
關注
44文章
2141瀏覽量
45712 -
Micropython
+關注
關注
0文章
68瀏覽量
4681
發布評論請先 登錄
相關推薦
評論