最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

ubantu環(huán)境編譯micropython(lvgl for esp32s3)固件

2023-02-22 01:07 作者:fvstory  | 我要投稿

分三個(gè)部分:
一.編譯micropython esp32相應(yīng)內(nèi)存配置固件。

二.編譯lv_micropython的esp32默認(rèn)固件。

三.編譯esp32s3的lv_micropython相應(yīng)內(nèi)存配置固件。

首先,下載安裝VMware虛擬機(jī),自行安裝。
然后選擇最新版本的ubantu進(jìn)行虛擬系統(tǒng)安裝。

安裝完成后(推薦安裝英文),我們進(jìn)入第一部分:

一、編譯micropython。

1.打開HOME文件夾,新建一個(gè)esp文件。

2.打開自帶瀏覽器,輸入www.github.com,搜索micropython。

3.點(diǎn)擊第一個(gè)進(jìn)入。

4.網(wǎng)頁往下翻,是有簡易的英文教程的。

進(jìn)入那個(gè)ports的支文件中,繼續(xù)打開esp32,下方還有具體教程:

5.在esp32目錄下的教程是先下載esp-idf,進(jìn)行esp32編譯環(huán)境的建立。

簡易教程

6.打開自己建立的esp文件中的終端,準(zhǔn)備下載esp-idf。

7.復(fù)制esp-idf地址,準(zhǔn)備按教程下載。

8.粘貼復(fù)制,是一個(gè)clone分支,回車鍵確認(rèn)下載。

git clone -b v4.0.2 --recursive https://github.com/espressif/esp-idf.git

網(wǎng)絡(luò)不好的話,下載成v4.2要塊很多,網(wǎng)絡(luò)非常好就直接下載v4.4

例如 :

git clone -b v4.2 --recursive https://github.com/espressif/esp-idf.git

(因?yàn)榇藭r(shí)下載版本為v4.0/4.2,由于網(wǎng)絡(luò)原因,會出現(xiàn)文件下載不全,各種false,但是不用管,我們會在下一步處理)

9.打開下載的文件夾,剛才的終端中輸入:

cd esp-idf

再輸入:

git checkout v4.4

這里是檢查文件內(nèi)容是否更新到v4.4版本(因?yàn)槭莋it clone,clone的文件會儲存下載的地址)

再輸入:

git submodule update --init --recursive

這里會將這個(gè)clone的文件夾里的所有子項(xiàng)目全部更新下載一遍(記住,這里一定要把所有文件全部下載,一個(gè)false都不能有)。

9.這里只需要一次又一次調(diào)用git submodule update --init --recursive就行,直到調(diào)用后沒有任何clone就算是下載完成。(主要還是網(wǎng)絡(luò)原因)

10.下載完成后,然后調(diào)用這個(gè)執(zhí)行文件進(jìn)行安裝:

./install.sh

(安裝只需要進(jìn)行第一次就行)一般安裝結(jié)果會提醒你沒有python,實(shí)際上是有python3,終端中輸入python無響應(yīng),輸入python3就有響應(yīng),處理辦法是將python給映射到python3,不然很多地方都要給你報(bào)這個(gè)問題,然后pip3 也要更新到最新版本,終端安裝python3.10輸入:

sudo apt-get install python 3.10

刪除原有python鏈接(python有可能鏈接到python2.0,總之每個(gè)人問題可能不一樣),輸入:

sudo rm /usr/bin/python

建立新鏈接:

ln -s /usr/bin/python3 /usr/bin/python

測試鏈接是否成功:

python --version

安裝pip3,終端輸入:

sudo apt-get install python3-pip

升級pip3,輸入:

python3 -m pip install --update pip

11.將python和pip解決后再重新安裝esp-idf,就不會有其他出錯(cuò)了。記住只需要成功安裝一次就行。安裝輸入:

./install.sh

12.用sourse執(zhí)行這個(gè)程序,效果就是打開esp-idf的編譯環(huán)境,而且打開后只能在這個(gè)shell中才能編譯,終端輸入:

source export.sh

終端會生成一個(gè)idf_shell,這個(gè)shell可以先不關(guān),也可以關(guān)掉之后重新在esp-idf文件夾中打開終端輸入source export.sh重新進(jìn)入一個(gè)編譯環(huán)境。

13.下載microPython,先復(fù)制下載地址。

14.在esp文件的終端中下載microPython。

git clone https://github.com/micropython/micropython.git

15.下載完成后,返回網(wǎng)頁microPython/ports/esp32下的教程:

在終端中輸入:

cd ~/esp/micropython

進(jìn)入microPython目錄,并準(zhǔn)備開始預(yù)編譯microPython所需的一些文件,終端輸入:

make -C mpy-cross

打開esp32芯片的文件夾中(microPython支持了多種芯片),輸入:

cd ports/esp32(前提是開啟了esp-idf編譯環(huán)境)

這里需要用到esp-idf的編譯環(huán)境,所以一般是從打開了esp-idf的終端進(jìn)行切換目錄

先cd ~/esp/esp-idf

然后source export.sh開啟編譯環(huán)境

再是cd ~/esp/micropython/ports/esp32進(jìn)入目錄下執(zhí)行:

make submodules

然后開始編譯制作esp32固件所需要的一些模塊。

16.接下來就是制作默認(rèn)的esp32固件,可以在modules中加入想加的py文件(會給你編譯成固件存在)(記住只能是py文件,如果是自己寫的c文件以及對于的py接口,需要利用lv_binding_micropython的一些工具)終端中繼續(xù)輸入:

make

然后在~/esp/micropython/ports/biuld_GENERIC這個(gè)文件中找到一個(gè)firmware.bin的固件,把這個(gè)上傳到自己的百度云就可以自行下載了(ubantu中進(jìn)行VMtool文件傳輸很麻煩,只能鼠標(biāo)右鍵復(fù)制粘貼一些東西,不能直接拖拽的)

17.如果是其他需求的開發(fā)板,比如s3,就輸入:

make BOARD=GENERIC_S3

就可以制作,對應(yīng)的型號就是~/esp/micropython/ports/esp32/boards文件中哪個(gè)板子的名字,復(fù)制過來就行,然后s3系列涉及到psram和外置大一點(diǎn)的flash,這里如果有psram(也是spiram),直接使用這個(gè)GENERIC_S3_SPIRAM_OCT,用的8進(jìn)制(另外一個(gè)GENERIC_S3_SPIRAM能編譯成功,但是燒錄進(jìn)板子會一直報(bào)錯(cuò),說你硬件是沒有SPIRAM,但是軟件開啟這個(gè)選項(xiàng),搜索了一下,發(fā)現(xiàn)param是用的8進(jìn)制,也就是OCT)

18.然后記得要更改這個(gè)BOARD文件下的sdkconfig.board里面flash的大小,默認(rèn)是8M,如果沒更改,你本來是16M,燒錄好以后,會發(fā)現(xiàn)進(jìn)入microPython中,采用esp函數(shù)進(jìn)行查看flash大小會顯示8M,相當(dāng)于只使用了8M,而不是廠家給你的板子大小不對,有疑惑,可以直接win安裝一個(gè)esp-idf,使用esptool.py flash_id這些函數(shù)直接查看最底層最真實(shí)的flash大小)

比如我這個(gè)板子就是16M,把y寫在對應(yīng)位置就行,上面有一個(gè)開機(jī)檢查SPIRAM的選項(xiàng),寫上y會每次開機(jī)先檢查一遍SPIRAM是否存在(我查到某個(gè)文檔說是會大約花費(fèi)0.5s),然后再進(jìn)入microPython這些主函數(shù)。(默認(rèn)是關(guān)閉就可以了)

第二部分:

進(jìn)行l(wèi)vgl_micropython的固件編譯:

1.網(wǎng)址https://github.com/lvgl

打開lv_micropython(直接輸網(wǎng)址https://github.com/lvgl/lv_micropython也行)

2.下載lv_micropython,打開esp文件夾,打開終端,輸入:

git clone https://github.com/lvgl/lv_micropython.git

3.終端中打開下載的文件夾:

cd lv_micropython

更新所需要的模塊,記住必須要使用Git更新,不能自行找到對應(yīng)文件再下載進(jìn)去,否則編譯會提示文件沒有鏈接(具體不清楚),終端中輸入:

git submodule update --init --recursive lib/lv_bindings

就算網(wǎng)絡(luò)不好,也不用換國內(nèi)源這些下載,多執(zhí)行上面這個(gè)代碼幾遍,直到全部clone成功,再執(zhí)行上述代碼沒有clone就OK了

然后開始預(yù)編譯lv_micropython,終端輸入:

make -C mpy-cross

4.打開網(wǎng)頁中文件的ports/esp32 里面會有這個(gè)板子的進(jìn)一步教程,也可以跟著我繼續(xù):

5.首先需要esp-idf的編譯環(huán)境:打開esp-idf所在的文件夾,空白地方點(diǎn)擊鼠標(biāo)右鍵選擇進(jìn)入終端,輸入:

source export.sh

執(zhí)行后進(jìn)入esp-idf的編譯環(huán)境,然后切換目錄:

cd ~/esp/lv_micropython/ports/esp32

在這個(gè)目錄下,我們可以編譯了,但我們需要先把lvgl的一些參數(shù)設(shè)置了,先調(diào)整最基礎(chǔ)的

打開文件lv_micropython/lib/lv_bindings下的lv_conf.h

6.將顏色深度從默認(rèn)32改成我們需要16,當(dāng)然也可以改成你所需要的,其余的配置根據(jù)你的要求自行閱讀修改,然后保存。

7.現(xiàn)在切換成我們的編譯終端來,并且終端處于esp32目錄:

cd ~/esp/lv_micropython/ports/esp32

進(jìn)行所需模塊的安裝下載,終端輸入:

make submodules

(這里我發(fā)現(xiàn)是下載一個(gè)叫berkeley-db-1.xx這個(gè)的文件,記得這里得自行clone,千萬別自己找文件去復(fù)制進(jìn)去,是不行的,會報(bào)錯(cuò),我試過了)(并且這個(gè)文件/軟件的作用就是去更改鏈接microPython中的c文件和py接口,包括GC,lvgl作者將lvgl的gc與microPython自帶的gc給合并了,也是通過這個(gè)軟件去修改的)

然后就是終端執(zhí)行:

make

目前官方給的lv_micropython只支持esp32板子不支持其他s2/s3等等,原因是其他系列的芯片的esp-idf底層重寫了接口,lvgl作者也發(fā)起了協(xié)作,希望大家可以一起完善其他esp32系列的板子(同時(shí)還兼任原本的esp32)


第三部分:

但是針對s3系列,在評論中,發(fā)現(xiàn)有一個(gè)作者修改了lvgl的底層c接口,滿足了新的底層接口,可以實(shí)現(xiàn)lv_micropython的s3的編譯,但是需要將c文件進(jìn)行替換,只能手動(dòng),只是稍微麻煩了一丟丟,來看看是怎么做的:

1.下載針對esp32s3的lv_binding_micropython模塊(lv_binding_micropython是lv_micropython其中的一個(gè)子模塊,只關(guān)乎lvgl的代碼和接口),打開esp文件夾,鼠標(biāo)右鍵打開終端,網(wǎng)址是https://github.com/imliubo/lv_binding_micropython/tree/dev_esp32_s3,下載作者的clone分支,esp文件終端輸入

git clone -b dev_esp32_s3 https://github.com/imliubo/lv_binding_micropython.git

2.然后打開lv_binding_micropython/driver/esp32文件夾,將里面的全部文件復(fù)制,粘貼到

lv_micropython/lib/lv_bindings/driver/esp32文件下,統(tǒng)統(tǒng)覆蓋掉原文件(雖然實(shí)際上只是更改幾個(gè)c文件,但是為了大家方便,直接全換)

3.然后剩下步驟跟之前編譯lv_micropython一樣。

4.額外注意一點(diǎn),lv_micropython/ports/esp32/boards中沒有GENERIC_S3_SPIRAM_OCT這個(gè)板子,直接將microPython相應(yīng)文件夾中GENERIC_S3_SPIRAM_OCT和sdkconfig.spiram_oct這兩個(gè)文件給復(fù)制過去就可以了,flash內(nèi)存配置也記得要更改哦。

5.然后esp32s3系列的板子,lv_micropython編譯出來,程序文件超過了1M,原本的內(nèi)存配置文件只給了1M的內(nèi)存,所以編譯到最后會報(bào)錯(cuò),提示內(nèi)存分配不夠,我選用的是外掛flash16M,所以打開lv_micropython/ports/esp32中的partitions-8MiB.csv,更改第三個(gè)factory,從0X010000 到0X210000,第四個(gè)改從0X220000開始,大小基本上剛好夠,然后就可以編譯成功,當(dāng)然lvgl的參數(shù)該調(diào)也得調(diào)整哦。

6.最后一步,終端繼續(xù)輸入:

make BOARD=GENERIC_S3_SPIRAM_OCT

然后找到固件上傳云就可以下載了

記得每次搞定完 在esp-idf編譯環(huán)境中clean一下,以便下次使用不出錯(cuò),并且騰出虛擬機(jī)內(nèi)存,終端輸入:

make BOARD=GENERIC_S3_SPIRAM_OCT clean


感謝大家的瀏覽,有什么不清楚,還可以下方留言,記得三連!

ubantu環(huán)境編譯micropython(lvgl for esp32s3)固件的評論 (共 條)

分享到微博請遵守國家法律
浠水县| 华阴市| 尼玛县| 东乌珠穆沁旗| 沙湾县| 丰台区| 昭苏县| 勐海县| 许昌县| 宜春市| 昌图县| 斗六市| 荥经县| 建阳市| 财经| 慈利县| 泗洪县| 酒泉市| 山东省| 新营市| 大港区| 嘉禾县| 津南区| 饶阳县| 荆门市| 和政县| 南靖县| 盈江县| 商都县| 濮阳市| 台南县| 金秀| 东乌珠穆沁旗| 浏阳市| 区。| 泗洪县| 稷山县| 友谊县| 文登市| 新龙县| 南木林县|