NUC972-Linux系統燒錄過程


一、介紹:

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 七種文件類型

  1. 普通文件類型
    Linux中最多的一種文件類型, 包括 純文本文件(ASCII);二進制文件(binary);數據格式的文件(data);各種壓縮文件.第一個屬性為 [-]
  2. 目錄文件
    就是目錄, 能用 # cd 命令進入的。第一個屬性為 [d]
  3. 塊設備文件
    塊設備文件 : 就是存儲數據以供系統存取的接口設備,簡單而言就是硬盤。例如一號硬盤的代碼是 /dev/hda1等文件。第一個屬性為 [b]
  4. 字符設備
    字符設備文件:即串行端口的接口設備,例如鍵盤、鼠標等等。第一個屬性為 [c]
  5. 套接字文件
    這類文件通常用在網絡數據連接。可以啟動一個程序來監聽客戶端的要求,客戶端就可以通過套接字來進行數據通信。第一個屬性為 [s],最常在 /var/run目錄中看到這種文件類型
  6. 管道文件
    FIFO也是一種特殊的文件類型,它主要的目的是,解決多個程序同時存取一個文件所造成的錯誤。FIFO是first-in-first-out(先進先出)的縮寫。第一個屬性為 [p]
  7. 鏈接文件
    類似Windows下面的快捷方式。第一個屬性為 [l],例如 [lrwxrwxrwx]

2.3.2 查看文件類型的三種方法

  1. ls -l + 文件     ls-ld + 路徑    
  2. file命令
  3. 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命令(部分):
  1. ls -a 列出文件下所有的文件,包括以“.“開頭的隱藏文件(linux下文件隱藏文件是以.開頭的,如果存在..代表存在着父目錄)。
  2. ls -l 列出文件的詳細信息,如創建者,創建時間,文件的讀寫權限列表等等。
  3. ls -F 在每一個文件的末尾加上一個字符說明該文件的類型。"@"表示符號鏈接、"|"表示FIFOS、"/"表示目錄、"="表示套接字。
  4. ls -s 在每個文件的后面打印出文件的大小。  size(大小)
  5. ls -t 按時間進行文件的排序  Time(時間)
  6. ls -A 列出除了"."和".."以外的文件。
  7. ls -R 將目錄下所有的子目錄的文件都列出來,相當於我們編程中的“遞歸”實現
  8. ls -L 列出文件的鏈接名。Link(鏈接)
  9. ls -S 以文件的大小進行排序
  10. ls-h 人性化顯示容量信息
  11. 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(百度)

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM