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 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下載的那麼清除程序的時候
清除不了程序
你須要