NUC972-Linux系统烧录过程

摘要:
py表示python语言文件,通过python语言开发的程序。conf表示系统服务的配置文件。
一、介绍:

nuc972开发板+EC21模块,实现PPP拨号。

二、相关知识:
BSP(boardsupportpackage):板级支持包,介于主板硬件和操作系统之间的一层,属于操作系统的一部分。包含:U-Boot,Linux内核,交叉编译工具以及根文件系统。
u-boot(universalbootloader):系统引导,用于嵌入式系统的开机载入程序
nboot命令:完成NAND开机:内核影像烧录至NAND,偏移量为0x200000,读取到0x7fc0位置,再通过bootm命令完成Linux内核的开机。

2.1 驱动在Linux中地位

NUC972-Linux系统烧录过程第1张
设备驱动是应用程序访问系统设备以及进行数据传递的桥梁和通道。

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.3Linux中文件扩展名

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

免责声明:文章转载自《NUC972-Linux系统烧录过程》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇基于MPLAB X IDE配置位设置讲解java的输入输出下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Linux基础-配置网络、集群内主机名设定、ssh登入、bash命令、通配符(元字符)

作业一:临时配置网络(ip,网关,dns)+永久配置 设置临时网络配置: 配置IP ifcongfigens33192.168.16.177/24 (ifconfig 网卡 ip地址 /24代表它子网掩码) 配置网关 route add default gw192.168.16.177netmask255.255.255.0 添加默认网关 配置 DN...

linux运维、架构之路-K8s二进制版本升级

一、升级说明        Kubernetes集群小版本升级基本上是只需要更新二进制文件即可。如果大版本升级需要注意kubelet参数的变化,以及其他组件升级之后的变化。 由于Kubernetes版本更新过快许多依赖并没有解决完善,并不建议生产环境使用较新版本。 二、软件准备 1、下载地址 https://github.com/kubernetes/ku...

小程序之模板消息

使用模板消息 获取模板 id 登录https://mp.weixin.qq.com获取模板,如果没有合适的模板,可以申请添加新模板,审核通过后可使用,详见模板审核说明 页面的 <form/> 组件,属性report-submit为true时,可以声明为需发模板消息,此时点击按钮提交表单可以获取formId,用于发送模板消息。或者当用户完成支...

VSFTP配置参考

仅供参考。不同的版本配置可能不同。 vsftpd推荐配置: 关于用户: userlist_enable=YES userlist_deny=NO userlist_file=/etc/vsftpd.user_list echo "需要使用ftp的用户" > /etc/vsftpd.user_list,其余用户不可以访问 关于切换目录: chroot_...

GVM安装

GVM安装 1.下载二进制文件 https://gitee.com/voidint/gvm/releases 2.解压 将压缩包解压至PATH环境变量目录下,如/usr/local/bin。 3.配置环境变量 vim .bashrc export GOROOT="${HOME}/.g/go" export PATH="${HOME}/.g/go/bin...

linux 下dd命令直接清除分区表(不用再fdisk一个一个的删除啦)

分区表是硬盘的分区信息,要删除一个硬盘的所有分区表很麻烦的,需要fdisk一个一个的删除,其实dd命令可直接清除分区信息,当然,这也是linux给root用户留下的作死方法之一。dd 命令主要参数如下if= in file 输入文件,linux下文件的概念应用范围相当广,通常是普通光盘镜像文件或者块设备of= out file 输出文件,通常是普通光盘镜像...