讯为电子的框架学习法笔记

126 阅读3分钟

笔记资料总结自# 再谈Linux学习方法-框架学习法

1. 嵌入式技术

  • C语言
  • 数字电路基础(单片机)
  • ARM体系结构
  • 硬件设计(ARM接口技术)
  • Linux 系统与管理
  • Linux 系统开发
  • Linux 驱动开发
  • BootLoader(UBOOT)
  • QT 和 C++
  • Android 系统和 Java

2. 系统引导程序 UBOOT 学习框架

  • 入门级
    • 1.BootLoader 是首先执行的片外程序
    • 2.引导 Linux 内核
    • 3.生命周期和调用关系
    • 4.编译、烧写的命令
  • 工程师级
    • 5.启动过程简单分析
    • 6.修改读秒时间
    • 7.启动模式配置
    • 8.CMDLINE
    • 9.启动时的点灯方法
  • 专家级
    • 10.UBOOT源码分析
    • 11.系统移植
    • 12.增加功能和创新开发

3. Linux 系统框架

  • 应用程序(用户态)
  • Linux 内核(内核态)
    • 系统调用
    • 操作系统通用代码
    • 设备驱动
  • 硬件设备

ARM 处理器的工作模式:

  • 用户模式
  • 系统模式
  • 中断模式

Linux 的文件系统:

  • Linux启动后一定要挂载一个文件系统
  • 文件系统可大可小,通过构造文件系统可衍生为 QT、Ubuntu、Android、等系统
  • Linux 重要思想:一切皆是文件
  • 硬件的操作都可以归结为 :read,write,open,close 操作

Linux 的三个重要文件:

  • 引导程序(BootLoader):uboot.bin / uboot.imx
  • Linux 内核镜像 : zImage
  • 文件系统镜像:system.img / rootfs.tar.ba2

执行顺序:

  • BootLoader引导程序 => Linux内核(zImage) => 挂载文件系统(system.img)

4. Linux应用程序编程

  • 基于Linux内核之上,基于系统调用或者库函数的编程
  • 系统调用:Linux内核中预置的一组用于实现各种系统功能的子程序
  • 系统调用有操作系统核心提供,运行与核心态
  • 系统调用在 ARM 系统中一般使用软中断的方式来实现

包含内容:

  • 文件IO
    • 对文件的读写操作
      • open()
      • read()
      • write()
      • ioctl()
      • close()
      • 文件描述符(句柄) fd=open("/a.txt")
    • 标准IO
      • 调用标准 C 语言库,可移植
      • fopen()
      • fread()
      • fwrite()
    • IO模型
      • 阻塞式
      • 非阻塞式
      • 异步
      • IO多路复用
      • 信号驱动
  • 多进程
    • 进程状态
    • fork()
    • 进程间通信
      • 管道(匿名管道,命名管道)
      • 信号
      • 信号量
      • 消息队列
      • 共享内存
      • 套接字
  • 多线程
    • pthread_create()
    • 线程同步
      • 互斥锁
      • 条件变量
      • 读写锁
      • 信号量
  • 网络Socket编程
    • TCP/IP协议栈
    • socket是一种标准
  • 时间函数,文件系统操作
  • 用户管理,内存管理等

学习框架:

  • 入门
    • 文件IO基础
    • 多进程多线程基础
    • 网络socket编程
    • 时间函数
  • 进阶
    • IO模型
    • 进程通信
    • 线程同步
    • 标准IO/文件共享dup/文件锁fcntl

Linux 驱动

驱动架构时间线:

  • 原始架构(2001-2004)
    • v2.4
    • 设备节点:mknod
  • 平台总线(2004-2011)
    • v2.6
    • 自动生成节点
    • 引入了设备驱动模型(sysfs),使得热插拔/电源管理得以加强
    • 实现了 BSP(板级支持包)驱动的分离
  • 设备树(2011-2023)
    • v3.x
    • 设备资源独立出来(arch/arm/match-x/board.c),从C文件发展为 DTS 设备树脚本文件(arch/arm/boot/dts/xxx.dts)
    • Bootloard 参与传递设备资源(启动时把设备树文件传给内核)

参考资料