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