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(百度)

 

 

posted on 2018-12-18 11:10  还没放弃的老张  阅读(3085)  评论(0编辑  收藏  举报

导航