IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> I.MX6U嵌入式Linux应用编程学习 -> 正文阅读

[系统运维]I.MX6U嵌入式Linux应用编程学习

I.MX6U嵌入式Linux应用编程学习

〇、备忘

0.0 本文大写字母缩写说明

  • B: Board 开发板串口终端
  • T: Terminal Ubuntu命令行
  • F: Function 函数
  • P: Path 文件路径

0.1 C编译

  • 使能环境变量 T: source /opt/fsl-imx-x11/4.1.15-2.1.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi
  • 查看环境变量 T: arm-poky-linux-gnueabi-gcc -v
  • 编译 T: $CC -o v4l2_camera v4l2_camera.c

0.2 NFS与文件夹挂载

  • 挂载 B: mount -t nfs -o nolock,nfsvers=3 192.168.1.110:/home/chorgy/WorkSpace/i.MX6/NFS nfs/
  • 查看 B: df
  • 卸载 B: umount nfs

一、应用编程概念

1.1 系统调用

1.2 库函数

  • 存放在P: /lib目录

1.3 标准C语言函数库

  • Linux使用glibc(GNU C语言函数库)

1.4 传参main函数

  • F: int main(int argc, char **argv)

二、文件I/O基础

2.1 文件描述符

  • 某某函数的返回值

  • 一个进程可打开多个文件,T: ulimit -n指令查看一个进程可打开的最大文件数

  • 打开的文件分配文件描述符是从最小的未被占用的文件描述符(1~1023)开始,关闭时释放

  • F: open()

  • F: write()

  • F: read()

  • F: close()

  • F: lseek():返回从文件头部开始算起的位置偏移量(字节为单位),也就是当前的读写位置

2.2 静态文件

  • 未打开时存储在磁盘
  • 磁盘最小存储单位扇区sector,0.5KB
  • 系统一次性读取一个块block,多个扇区,是文件存取的最小单位,常见为4KB
  • 磁盘分区时分为两个区域
    • 数据区
    • inode区,存放inode table,每个inode对应一个文件
      • T: ls -i查看文件inode号
      • T: stat xxx.c查看某文件属性
      • Windows 快速格式化 就是删除inode表
        在这里插入图片描述

2.3 动态文件

  • 进程控制块PCB,Process Control Block,每个进程设置一个专门的数据结构进行管理,记录状态
    • PCB有一个指针指向文件描述符表
    • 文件描述符表每一个元素索引到对应的文件表
    • 文件表记录文件的状态,包括i-node指针,指向inode
      在这里插入图片描述

2.4 返回错误处理

  • F: strerror(),返回对应错误编号的字符串描述信息
  • F: perror(),不需要传入 errno变量

2.5 退出函数

  • 清除其使用的内存空间,销毁其在内核中的各种数据结构,关闭进程的所有文件描述符,并结束进程、将控制权交给操作系统
  • F: exit()
  • F: _exit(),系统调用的
  • F: _Exit(),与_exit()等价

2.6 空洞文件

  • 使用移位函数从中间地址开始写数据,造成空洞空间
  • 有利于多线程共同操作文件

三、标准I/O库

四、文件属性与目录

4.1 Linux系统文件类型

  • 普通文件
    • 文本文件
    • 二进制文件
  • 目录文件
  • 字符设备文件块设备文件
    • 不对应磁盘文件
    • 由文件系统虚拟出来的
    • 由内存维护
    • 路径P: /dev/
  • 符号链接文件
    • 超链接
  • 管道文件
    • 用于进程间通信
  • 套接字文件
    • 网络通信

五、字符串处理

六、系统信息与系统资源

七、信号

基本概念

  • 软件中断
  • 用来通信
  • 发送给对应的进程处理

八、进程

8.1 概念

  • 进程: 应用程序被加载到内存中运行
  • 进程号: process ID,PID,T: ps查看进程号
  • 环境变量:
    • T: env 查看所有环境变量
    • T: export xxx=xxxx 新增环境变量
    • T: export -n xxx 删除环境变量
  • 应用程序获取当前进程的环境变量 C: extern char **environ
  • 虚拟地址:
    • 实际的物理内存有限
    • 通过硬件 MMU(内存管理单元)映射到实际的物理地址空间中
    • 进程与进程、进程与内核相互隔离
    • 多进程能够共享内存

8.2 子进程

  • F: fork(void); 创建子进程
  • 父子进程文件共享
    • 子进程获得父进程所有文件描述符的副本
  • T: ps -aux 查看所有进程
    • 开发板自带程序为进程613 /opt/QDestop
  • 进程终止
    • return
    • exit()
    • _exit()
    • _Exit()
  • 监视子进程
    • F: wait()

    • F: waitpid()

    • 僵尸进程:子进程先结束

    • 孤儿进程:父进程先结束

8.3 进程状态与进程关系

  • 进程状态

    • 就绪态
    • 运行态
    • 僵尸态
    • 可中断睡眠状态
    • 不可中断睡眠状态
    • 暂停态
  • 进程关系

    • 无关系
    • 父子进程关系
    • 进程组:多进程集合

8.4 守护进程

8.5 进程间通信

九、线程

9.1 概念

  • 线程:

    • 系统调度的最小单位
    • 进程中有主线程
    • 进程不能运行,运行的是进程中的线程
    • 进程是容器,包含线程需要的数据结构、环境变量等信息
    • 同一进程的多个线程共享系统的全部资源,虚拟地址空间、文件描述符、信号处理等
  • 并发和并行:

    • 并发强调时分复用,可打断当前任务切换到下一任务

    你吃饭吃到一半,电话来了,你一直到吃完了以后才去接电话,这就说明你不支持并发也不支持并行,仅仅只是串行

    你吃饭吃到一半,电话来了,你停下吃饭去接了电话,电话接完后继续吃饭,这说明你支持并发

    你吃饭吃到一半,电话来了,你一边打电话一边吃饭,这说明你支持并行

线程同步

十、高级I/O

应用一、LED

1.1 应用层操控硬件的两种方式

  • 通过文件I/O

  • 设备节点方式:

    • P: /dev 设备节点
    • 字符设备文件:串口设备、音频设备
    • 块设备文件:存储设备
    • 设备文件就是硬件向应用层提供的接口
  • sysfs文件系统

    • 挂载在P: /sys 目录下
    • 与devfs、proc一样,为虚拟文件系统
    • 将内核信息以文件的方式提供给应用层

在这里插入图片描述

文件夹说明
./devices存放系统设备
./block存放块设备,与./device功能重合,已过时
./bus设备按照总线类型分类
./class设备按照功能分类
./dev设备按照设备号放置
./firmware内核固件
./fs描述系统所有的文件系统
./kernel内核可调参数
./module系统所有模块信息
./power电源选项

应用二、视频监控

2.1 流媒体传输协议

  • RTSP,Real-Time Stream Protocol
    • 实时性好
    • 视频聊天、视频监控
  • RTMP,Real-Time Message Protocol
    • 低延迟
    • 高稳定
    • 支持所有摄像头格式
    • 浏览器加载flash即可播放

2.2 RTMP简介

  • 推流端

    • FFmpeg
  • 流媒体服务器

    • Nginx
  • 拉流端

    • VLC播放器
  • Nginx移植

应用三、4G模块-EC20

3.1 4路ttyUSB

在这里插入图片描述

3.2 ppp拨号上网

需要固化最新系统

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-04-01 00:32:30  更:2022-04-01 00:36:13 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 23:32:09-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码