一、介紹:
nuc972開發板+EC21模塊,實現PPP撥號。
二、相關知識:
BSP(board support package):板級支持包,介於主板硬件和操作系統之間的一層,屬於操作系統的一部分。包含:U-Boot,Linux內核,交叉編譯工具以及根文件系統。
u-boot(universal boot loader):系統引導,用於嵌入式系統的開機載入程序
nboot命令:完成NAND開機:內核影像燒錄至NAND,偏移量為0x200000,讀取到0x7fc0位置,再通過bootm命令完成Linux內核的開機。
2.1 驅動在Linux中地位

設備驅動是應用程序訪問系統設備以及進行數據傳遞的橋梁和通道。
2.2 Linux內核模塊
Linux 內核具有很強的可裁剪性,很多功能或者外設驅動都可以編譯成模塊,在系統運行中動態插入或者卸載,在此過程中無需重啟系統。模塊化設計使得 Linux 系統很靈活,可以將一些很少用到或者暫時不用的功能編譯為模塊,在需要的時候再動態加載進內核,可以減小內核的體積,加快啟動速度,這對嵌入式應用極為重要。
2.3 Linux文件類型
2.3.1 七種文件類型
-
普通文件類型Linux中最多的一種文件類型, 包括 純文本文件(ASCII);二進制文件(binary);數據格式的文件(data);各種壓縮文件.第一個屬性為 [-]
-
目錄文件就是目錄, 能用 # cd 命令進入的。第一個屬性為 [d]
-
塊設備文件塊設備文件 : 就是存儲數據以供系統存取的接口設備,簡單而言就是硬盤。例如一號硬盤的代碼是 /dev/hda1等文件。第一個屬性為 [b]
-
字符設備字符設備文件:即串行端口的接口設備,例如鍵盤、鼠標等等。第一個屬性為 [c]
-
套接字文件這類文件通常用在網絡數據連接。可以啟動一個程序來監聽客戶端的要求,客戶端就可以通過套接字來進行數據通信。第一個屬性為 [s],最常在 /var/run目錄中看到這種文件類型
-
管道文件FIFO也是一種特殊的文件類型,它主要的目的是,解決多個程序同時存取一個文件所造成的錯誤。FIFO是first-in-first-out(先進先出)的縮寫。第一個屬性為 [p]
-
鏈接文件類似Windows下面的快捷方式。第一個屬性為 [l],例如 [lrwxrwxrwx]
2.3.2 查看文件類型的三種方法
-
ls -l + 文件 ls-ld + 路徑
-
file命令
-
stat命令:查看文件的詳細屬性
2.3.3 Linux中文件擴展名
linux里文件擴展名和文件類型沒有關系。但為了容易區分和兼容用戶使用windows的習慣,我們還是會用擴展名來表示文件類型。舉例如下:
-
源碼.tar、.tar.gz、.tgz、.zip、.tar.bz表示壓縮文件,創建命令一般為tar,gzip,zip等。
-
sh表示shell腳本文件,通過shell語言開發的程序。
-
pl表示perl語言文件,通過perl語言開發的程序。
-
py表示python語言文件,通過python語言開發的程序。
-
html、.htm、.php、.jsp、.do表示網頁語言的文件。
-
conf表示系統服務的配置文件。
-
.rpm表示rpm安裝包文件。
-
.img鏡像文件
-
.ub文件影像文件
-
.config文件是linux內核配置文件,當執行#make uImage編譯生成內核時,頂層的Makefile會讀取.config文件的內容,根據這個配置文件來編譯所定制的內核。
2.3.4 文件屬性
ls命令(部分):
- ls -a 列出文件下所有的文件,包括以“.“開頭的隱藏文件(linux下文件隱藏文件是以.開頭的,如果存在..代表存在着父目錄)。
- ls -l 列出文件的詳細信息,如創建者,創建時間,文件的讀寫權限列表等等。
- ls -F 在每一個文件的末尾加上一個字符說明該文件的類型。"@"表示符號鏈接、"|"表示FIFOS、"/"表示目錄、"="表示套接字。
- ls -s 在每個文件的后面打印出文件的大小。 size(大小)
- ls -t 按時間進行文件的排序 Time(時間)
- ls -A 列出除了"."和".."以外的文件。
- ls -R 將目錄下所有的子目錄的文件都列出來,相當於我們編程中的“遞歸”實現
- ls -L 列出文件的鏈接名。Link(鏈接)
- ls -S 以文件的大小進行排序
- ls-h 人性化顯示容量信息
- ls-i 列出文件或者目錄的索引節點號
linux下文件的一些文件顏色的含義
綠色---->代表可執行文件,(綠色代表通行證的意思)呵呵
紅色---->代表壓縮文件
深藍色---->代表目錄
淺藍色----->代表鏈接文件
灰色---->代表其它的一些文件
三、移植步驟
3.1 Uboot編譯
arm-linux-gcc 等一些命令在/usr/local/*/bin下,
用export PATH=/usr/local/*/bin:$PATH命令添加進去
用echo $PATH驗證
安裝完畢
生成文件u-boot.bin;u-boot-spl.bin make distclean make nuc970_config make all
3.2 內核編譯
(2)默認設置
make nuc972_defconfig Enable CONFIG_USB_SERIAL_OPTION [*] Device Drivers → [*] USB Support → [*] USB Serial Converter support → [*] USB driver for GSM and CDMA modems Configure Kernel to Support PPP [*] Device Drivers → [*] Network device support → [*] PPP (point-to-point protocol) support
make menuconfig 出現 Unable to find the ncurses libraries or the required header files.
解決:
1:sudo apt-get install ncurses-dev
2:重新make menuconfig
添加Yaffs2文件系統支持
General setup ---> [ ] Initial RAM filesystem and RAM disk (initramfs/initrd) support File systems ---> [*] Miscellaneous filesystems ---> <*> yaffs2 file system support <*> Autoselect yaffs2 format <*> Enable yaffs2 xattr support Device Drivers ---> Generic Driver Options ---> <*> Nuvoton NUC970 FMI function selection Select FMI device to support (Support MTD NAND Flash) ---> -*- Memory Technology Device (MTD) support ---> <*> Command line partition table parsing <*> Caching block device access to MTD devices -*- NAND Device Support ---> -*- Nuvoton NUC970 MTD NAND ---> NUC970 NAND Flash pin selection (Port C) --->
Image uImage與zImage區別
內核編譯(make)之后會生成兩個文件,一個Image,一個zImage,其中Image為內核映像文件,而zImage為內核的一種映像壓縮文件。
uImage是uboot專用的映像文件,它是在zImage之前加上一個長度為
64字節(實際不是:未知原因)的“頭”,說明這個內核的版本、加載位置、生成時間、大小等信息;
3.3 BusyBox制作文件系統
別忘了make install
1 參考:https://blog.csdn.net/zxw2580/article/details/81132651
2 在制作的文件夾里面,/etc/fstab加入
fstab文件詳解:https://blog.csdn.net/richerg85/article/details/17917129
/dev/mtdblock2 /mnt yffs2 defaults 0 0
編譯ppp-2.4.7
#./configure #make CC= arm-linux-gcc
編譯成功后把chat目錄"chat",pppd的"pppd",pppdump的"pppdump",pppstats的"pppstats"復制到/usr/sbin下。
3 配置撥號文件
mkdir /etc/ppp/peers sudo gedit quectel-ppp sudo gedit quectel-chat-connect sudo gedit quectel-chat-disconnect
添加內容:參考https://blog.csdn.net/zhaoxd200808501/article/details/72637695
sudo gedit wcdma sudo gedit wcdma-chat-connect sudo gedit wcdma-chat-disconnect
添加內容參考:https://blog.csdn.net/wwt18811707971/article/details/54291747
系統/var目錄下 mkdir /var/run -p mkdir /var/lock -p
3.4 文件系統打包
參考:https://blog.csdn.net/zxw2580/article/details/81144551
3.5 燒錄
注意地址與位置
燒錄的環境變量:
bootcmd=set bootargs "noinitrd root=/dev/mtdblock2 rootfstype=yaffs2 rootflags=inband-tags console=ttyS0,115200n8 rdinit=/sbin/init mem=64M mtdparts=nand0:0x200000@0x0(u-boot)ro,0x1400000@0x200000(kernel)ro,-(user)"; saveenv; nboot 0x7fc0 0 0x200000; bootm 0x7fc0 (沒有換行)
3.6 測試
撥號命令 pppd call wcdma & ping -I ppp0 202.108.22.5(百度)