6-STM32物聯網開發WIFI+GPRS基礎篇(編譯lua固件NodeMcu 8266)

http://www.javashuo.com/article/p-nnsjjcfg-ch.htmlhtml

由於我如今的Wifi的教程是lua語言編寫的,可是有些功能須要本身編譯lua固件才能夠,這篇文章就詳細說一下怎麼編譯固件node

準備一臺linux的機子python

我把固件放到了git上,方便電腦用http下載linux

我先用這個鏈接linux git

你們隨意哈,只要是一臺linux的機子就能夠,無論是圖形頁面仍是命令行形式使用,只要本身能夠操做就能夠ubuntu

我用的是ubuntu16.4vim

若是本身的ubuntu什麼都沒有安裝,,先執行個命令windows

apt-get update         更新一下軟件庫列表,實際上是發行ubuntu的人們爲咱把幾乎全部可能用到的軟件都放到了一個地方.咱執行這個命令,就能夠把全部軟件的https下載連接存起來,咱想安裝某個軟件的時候(假設調用的是Ubuntu自帶的安裝軟件指令), 這樣的話系統先檢查你輸入的是下載哪一個軟件的指令,而後找到相應的連接,而後下載下來安裝

有些指令我就不嘮叨了,請自行百度,看看各自的指令究竟是什麼意思,不少東西其實都是一層紙(也有多是鋼板),只要你肯下功夫戳破.....工具

 

 

 

 安裝另一些軟件測試

apt-get install make gedit git tar unzip srecord python python-serial gcc g++             分開看(tar    unzip   ......自行百度都是幹什麼的)  

 

gedit : 至關於記事本

tar : 解壓tar類型的壓縮包

unzip:解壓zip類型的壓縮包

srecord:裁剪拼接文件用

...等等等等吧!!!自行百度去.....領進門,修行靠我的..

 

 

 

進入opt文件夾,本身靠本身進去哈....

 

 

 不知道git  請

https://www.cnblogs.com/yangfengwu/category/1462061.html      git是管理和開發的工具

 而後

git clone https://gitee.com/yang456/NodemcuCompile.git     這是我上傳到git的,方便編譯固件

 

 

 

 

cd NodemcuCompile

ls

 

 

 nodemcu-firmware-2.0.0-master  這個是lua的源碼

 xtensa-lx106-elf  這個是編譯8266所須要的環境

 

解壓出來這兩個文件 

 

tar -xvf nodemcu-firmware-2.0.0-master.tar.bz2      

 

 

接着解壓

tar -xvf  xtensa-lx106-elf-ccf1cfd2.tar.bz2

 

ls

 

 修改下xtensa-lx106-elf  文件的權限,讓文件可讀可寫,防止後續編譯中出現沒有權限問題

文件是綠色就不用修改...你們本身百度文件顏色和對應的權限

chmod -R 777 ./xtensa-lx106-elf                自行百度  ./    和 chmod    把xtensa-lx106-elf及其內部文件全部的權限都是可讀可寫

 

設置環境環境     windows 都是鼠標點點點,鍵盤敲敲敲     linux就是鍵盤敲敲敲

 vim /etc/environment

 

 

在文檔的後面加上

 :/opt/NodemcuCompile/xtensa-lx106-elf/bin

 

https://www.runoob.com/linux/linux-vim.html     vim命令看這個

 

這是我一開始的

 

 先按鍵盤 i

移動到上面的位置,輸入

 

 

    

 

source /etc/environment     當即生效環境變量

 

 echo $PATH     查看當前環境變量

 

咱測試一下

xtensa-lx106-elf-gcc -v

 

 爲了防止編譯出錯,咱也設置 nodemcu-firmware-2.0.0-master  裏面全部的權限

chmod -R 777 ./nodemcu-firmware-2.0.0-master

進入  nodemcu-firmware-2.0.0-master

 

cd  nodemcu-firmware-2.0.0-master

//解壓esp-open-sdk.tar.xz
tar -Jxvf tools/esp-open-sdk.tar.xz

//配置環境變量
export PATH=$PATH:$PWD/esp-open-sdk/xtensa-lx106-elf/bin

 

//獲取日期
export BUILD_DATE=$(date +%Y%m%d)

//編譯
make EXTRA_CCFLAGS="-DBUILD_DATE='\"'$BUILD_DATE'\"'" all

 

好了

如今清理一下工程

make clean

 

進入bin文件

cd bin

ls

 

 

 裏面有兩個bin

一個從0x00000地址開始刷  一個從 0x10000  地址開始刷,刷進去這兩個就是咱lua 開發的固件

  可是刷兩個比較麻煩,,咱就把這兩個合成一個

//把0x00000和0x10000合成1.bin
srec_cat -output "1.bin" -binary 0x00000.bin -binary -fill 0xff 0x00000 0x10000 0x10000.bin -binary -offset 0x10000

說一下srec_cat 是文件合成指令

-output "1.bin" -binary  給它說最後輸出一個名字是1.bin的二進制文件(-binary)
0x00000.bin -binary  找到第一個文件名字是0x00000.bin的二進制文件(-binary)
-fill 0xff 0x00000 0x10000 先把0x00000到0x10000所有填充0xff(其實內部會先生成一個用於存儲的文件)
0x10000.bin -binary -offset 0x10000  找到第二個文件名字是0x10000.bin的二進制文件(-binary),設置合成的時候,
把本身的地址偏移到0x10000開始

 

 如今這個1.bin就能夠用了...不過如今若是用這個軟件編譯,若是要下載下來,要麼用git 傳上去,要麼用ftp......

怎麼把linux上的文件弄下來本身百度去....

而後刷進去

 

 

 

接着說

爲了好敘述我仍是用圖形頁面的linux說明....這個沒有圖形頁面,敘述起來比較麻煩

 

 

 

 

 

 修改完最後別忘了點擊保存

 

而後向上面那樣編譯就能夠

不事後期的編譯只須要

//進入cd nodemcu-firmware-master

//獲取日期
export BUILD_DATE=$(date +%Y%m%d)

//編譯
make EXTRA_CCFLAGS="-DBUILD_DATE='\"'$BUILD_DATE'\"'" all

//清理編譯
make clean

 而後到bin文件裏面找到編譯好的固件,下載到wifi裏面就能夠(能夠先合成一個再下載,比較方便)

//把0x00000和0x10000合成1.bin

cd  bin
srec_cat -output "1.bin" -binary 0x00000.bin -binary -fill 0xff 0x00000 0x10000 0x10000.bin -binary -offset 0x10000

而後刷進去

 

咱如今看另外一個事情,

 

 

 

 一個一個的刷文件是否是感受很不爽

刷完固件刷程序,還要一個一個的下載......麻煩

如今咱把咱寫的lua程序打包進bin文件裏面

我就寫個簡單的文件測試測試給你們看,多

 

 而後把咱的程序文件放到

 

 

 而後編譯

//進入cd nodemcu-firmware-master

//獲取日期
export BUILD_DATE=$(date +%Y%m%d)

//編譯
make EXTRA_CCFLAGS="-DBUILD_DATE='\"'$BUILD_DATE'\"'" all

//清理編譯
make clean

 

 

 而後咱看看bin文件裏面

 

 

 如今下載的話能夠

 

 程序默認一啓動就運行了咱寫的程序

 

 

 不過這樣多麻煩,,我仍是喜歡刷一個固件

 

//進入bin目錄
cd bin

 

//把0x00000和0x10000合成1.bin
srec_cat -output "1.bin" -binary 0x00000.bin -binary -fill 0xff 0x00000 0x10000 0x10000.bin -binary -offset 0x10000

 

 

 

 

//把0xa0000-32mb.bin和1.bin合成nodemcu_32mb.bin
srec_cat -output "nodemcu_32mb.bin" -binary 1.bin -binary -fill 0xff 0x00000 0xa0000 0xa0000-32mb.bin -binary -offset 0xa0000

 

 

 好了,,最後下載這一個就能夠了

 

 

 

 

注意,因爲程序文件大小不同,因此這個地址也可能不同

 

 

 

 我留下幾個

 

//把0x80000-8mb.bin和1.bin合成nodemcu_8mb.bin(有時候是0x70000注意本身的)
srec_cat -output "nodemcu_8mb.bin" -binary 1.bin -binary -fill 0xff 0x00000 0x80000 0x80000-8mb.bin -binary -offset 0x80000


//把0x80000-32mb.bin和1.bin合成nodemcu_32mb.bin
srec_cat -output "nodemcu_32mb.bin" -binary 1.bin -binary -fill 0xff 0x00000 0x80000 0x80000-32mb.bin -binary -offset 0x80000

 

//把0x70000-8mb.bin和1.bin合成nodemcu_8mb.bin
srec_cat -output "nodemcu_8mb.bin" -binary 1.bin -binary -fill 0xff 0x00000 0x70000 0x70000-8mb.bin -binary -offset 0x70000

//把0x70000-32mb.bin和1.bin合成nodemcu_32mb.bin
srec_cat -output "nodemcu_32mb.bin" -binary 1.bin -binary -fill 0xff 0x00000 0x70000 0x70000-32mb.bin -binary -offset 0x70000

 

//把0xb0000-8mb.bin和1.bin合成nodemcu_8mb.bin
srec_cat -output "nodemcu_8mb.bin" -binary 1.bin -binary -fill 0xff 0x00000 0xb0000 0xb0000-8mb.bin -binary -offset 0xb0000

//把0xb0000-32mb.bin和1.bin合成nodemcu_32mb.bin
srec_cat -output "nodemcu_32mb.bin" -binary 1.bin -binary -fill 0xff 0x00000 0xb0000 0xb0000-32mb.bin -binary -offset 0xb0000

 

 

注意:

若是把本身的程序打包進bin下載的那麼清除程序的時候

 

 清除不了程序

你須要

 

 

相關文章
相關標籤/搜索