本書以MT7688無(wú)線路由器為例,按產(chǎn)品開發(fā)流程,詳細(xì)講解了OpenWrt系統(tǒng)開發(fā)知識(shí),通過一套完整的物聯(lián)網(wǎng)網(wǎng)關(guān)實(shí)現(xiàn)方案,逐步做出一臺(tái)可量產(chǎn)的無(wú)線路由器產(chǎn)品。
本書共3章,主要內(nèi)容包括:OpenWrt開發(fā)前的準(zhǔn)備、OpenWrt開發(fā)基礎(chǔ)、OpenWrt開發(fā)實(shí)戰(zhàn)。本書語(yǔ)言通俗易懂,即使從來(lái)沒接觸過OpenWrt和路由器開發(fā)的讀者也能順利上手。
本書對(duì)于想要從事物聯(lián)網(wǎng)網(wǎng)關(guān)開發(fā)工作的在校學(xué)生、程序開發(fā)愛好者或轉(zhuǎn)行從業(yè)者而言,是一本很好的入門教材;對(duì)于正在從事路由器開發(fā)的工程師,也有一定的參考和指導(dǎo)作用。
本書的硬件平臺(tái)選定的是MT7688,它是目前IoT(物聯(lián)網(wǎng))開發(fā)的首選平臺(tái)。MT7688系統(tǒng)單芯片可應(yīng)用于家庭自動(dòng)化的橋接中心,它集成了1T1R 80211n WiFi radio、580 MHz MIPS 24KEcTM CPU、1-port fast Ethernet PHY、USB 20 host、PCIe、SD-XC、I2S/PCM,并支持多種低速輸出、輸入接口。MT7688支持兩種運(yùn)作模式:IoT gateway模式與IoT device模式。在IoT gateway模式下,MT7688可通過PCIe接口連接至80211ac芯片組,并作為雙頻80211ac同步閘道。高速的USB 20接口可讓MT7688連接至額外的3G/LTE Modem硬件,或連接到H264 ISP,用作無(wú)線IP相機(jī)。IoT gateway模式也支持觸摸板、Bluetooth Low Energy(BLE)、Zigbee/Z-Wave和Sub-1 GHz RF等智能家庭應(yīng)用所需的硬件。
本書的軟件開發(fā)平臺(tái)是目前比較流行的OpenWrt。OpenWrt是嵌入式設(shè)備上運(yùn)行的Linux系統(tǒng)。OpenWrt的文件系統(tǒng)是可寫的,開發(fā)者無(wú)需在每一次修改后重新編譯整個(gè)系統(tǒng),而且可以自由安裝同一款平臺(tái)編譯的*ipk軟件,令它更像一個(gè)小型的Linux電腦系統(tǒng),這樣也加快了開發(fā)速度。
如果對(duì)Linux系統(tǒng)有一定的認(rèn)識(shí),并想學(xué)習(xí)或接觸嵌入式 Linux系統(tǒng),那么OpenWrt是很適合的。OpenWrt支持各種處理器架構(gòu),對(duì)ARM、X86、PowerPC或MIPS都有很好的支持作用。OpenWrt擁有多達(dá)3000多種的軟件包,如工具鏈(toolchain)、BootLoader(Uboot)、內(nèi)核(Linux kernel)及根文件系統(tǒng)(rootfs)等。用戶只需一個(gè)簡(jiǎn)單的make命令,即可方便快速地定制一個(gè)具有特定功能的嵌入式系統(tǒng)固件(Firmware)。
一般嵌入式Linux的開發(fā),無(wú)論是ARM、PowerPC或MIPS的處理器,都必須經(jīng)過以下6個(gè)步驟。
(1) 創(chuàng)建Linux 交叉編譯工具鏈(toolchain)。
(2) 移植BootLoader(主要是Uboot)。
(3) 移植Linux kernel。
(4) 創(chuàng)建rootfs(根文件系統(tǒng))。
(5) 編寫設(shè)備驅(qū)動(dòng)程序。
(6) 編寫應(yīng)用軟件。
OpenWrt可以快速構(gòu)建一個(gè)包括上述6個(gè)步驟的完整的SDK開發(fā)環(huán)境。隨著Linux技術(shù)的成熟,大量不同的處理器內(nèi)核和應(yīng)用軟件相繼出現(xiàn)。熟悉這些嵌入式Linux的基本開發(fā)流程后,不應(yīng)再局限于MIPS處理器和無(wú)線路由器的開發(fā),可以嘗試在其他處理器或者非無(wú)線路由器的系統(tǒng)移植嵌入式Linux,定制適合自己的應(yīng)用軟件,并完成一個(gè)完整的嵌入式產(chǎn)品。
1.本書的內(nèi)容
本書的內(nèi)容幾乎涵蓋了shell、Makefile、裸機(jī)編程、Linux驅(qū)動(dòng)開發(fā)中的所有知識(shí)點(diǎn),雖然有些知識(shí)點(diǎn)講得并不是很深入,但作者會(huì)拋磚引玉,告訴讀者如何獲取相關(guān)資料。書中的各章節(jié)內(nèi)容都是根據(jù)實(shí)際項(xiàng)目開發(fā)步驟,按照從易到難的順序編排的,建議讀者按順序?qū)W習(xí)。第1、2章是與OpenWrt平臺(tái)相關(guān)的基礎(chǔ)知識(shí),讀者首先需掌握開發(fā)環(huán)境的配置,然后掌握系統(tǒng)的編譯方法。只有配置好開發(fā)環(huán)境,學(xué)會(huì)使用相應(yīng)的指令編譯代碼并使之編譯通過,才能進(jìn)行后面章節(jié)的學(xué)習(xí)。在講解完所有的知識(shí)點(diǎn)后,本書配套了一個(gè)商用的物聯(lián)網(wǎng)網(wǎng)關(guān)平臺(tái),作為讀者實(shí)戰(zhàn)開發(fā)的調(diào)試設(shè)備,目的是以項(xiàng)目實(shí)戰(zhàn)來(lái)提高讀者的學(xué)習(xí)興趣,讓讀者學(xué)會(huì)如何運(yùn)用前面所學(xué)的知識(shí)點(diǎn)開發(fā)產(chǎn)品。
2.本書的特點(diǎn)
(1) 實(shí)用性強(qiáng)。以真實(shí)的商用產(chǎn)品方案MT7688為例,全面講解了Linux驅(qū)動(dòng)開發(fā)的流程和技能。雖然是以MT7688為例進(jìn)行講解,但是其中相應(yīng)的知識(shí)可以衍生到任何使用Linux的設(shè)備中。
(2) 專業(yè)權(quán)威。本書的作者是物聯(lián)網(wǎng)網(wǎng)關(guān)的一線開發(fā)者,擁有多年網(wǎng)關(guān)項(xiàng)目開發(fā)經(jīng)驗(yàn),負(fù)責(zé)了多款網(wǎng)關(guān)產(chǎn)品的開發(fā)及量產(chǎn)維護(hù)工作,書中很多內(nèi)容是作者對(duì)真實(shí)項(xiàng)目的開發(fā)總結(jié)。
(3) 內(nèi)容全面。本書基本涵蓋了網(wǎng)關(guān)開發(fā)的所有知識(shí)點(diǎn)。
(4) 實(shí)驗(yàn)可靠。書中所有源碼都經(jīng)過真實(shí)環(huán)境驗(yàn)證,有極高的含金量。
(5) 售后答疑。所有讀者都可在https://wwwfengkeclub/GeekMart/su_fRTZ3qKY0jsp官網(wǎng)社區(qū)提問,作者會(huì)不定期答疑。
3.本書的適用范圍
(1) 想了解IoT網(wǎng)關(guān)設(shè)備的開發(fā)方法的開發(fā)者。
(2) 想從事IoT網(wǎng)關(guān)設(shè)備驅(qū)動(dòng)研發(fā)工作的在校學(xué)生、程序開發(fā)愛好者或轉(zhuǎn)行從業(yè)者。
(3) 已經(jīng)入行或正在從事IoT網(wǎng)關(guān)設(shè)備驅(qū)動(dòng)開發(fā)的工程師。
(4) 進(jìn)行IoT網(wǎng)關(guān)設(shè)備驅(qū)動(dòng)開發(fā)培訓(xùn)的機(jī)構(gòu)和單位。
(5) 高校教師或?qū)W生。本書可用于高校實(shí)驗(yàn)課程教材。
本書由劉燃統(tǒng)稿,由陳萬(wàn)里、劉燃編寫。在此要特別感謝深圳瘋殼團(tuán)隊(duì)的各位小伙伴為本書的編寫提供的可靠技術(shù)支持與精神鼓勵(lì)。此外,還要感謝西安電子科技大學(xué)出版社給予了大力支持。
由于時(shí)間倉(cāng)促,雖然本書的所有內(nèi)容都經(jīng)過作者認(rèn)真校核,但難免會(huì)有一些紕漏,讀者可通過社區(qū)論壇與作者互動(dòng)。
作 者
2019年1月