• 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(百度)
    
  • 相关阅读:
    前端开发:如何正确地跨端?
    开源微服务运行时 Dapr 发布 1.0 版本
    Flink 如何实时分析 Iceberg 数据湖的 CDC 数据
    为了让你在“口袋奇兵”聊遍全球,Serverless 做了什么?
    Serverless 如何在阿里巴巴实现规模化落地?
    altas(ajax)控件(十三):悬浮菜单HoverMenu
    MasterPage嵌套及MasterPage中的控件和变量的访问
    Linux下将CD音乐提取为mp3的方法和中文乱码问题的解决
    altas(ajax)控件(十四):为下拉控件添加快捷键查找功能的ListSearchExtender
    在atlas(ajax)中请不要使用Response.Write,请使用ClientScript.RegisterClientScriptBlock替换
  • 原文地址:https://www.cnblogs.com/learning-zjx/p/10135912.html
Copyright © 2020-2023  润新知