Linux驱动入门(二)——嵌入式处理器介绍和构建驱动程序开发环境

news2024/12/25 13:01:30

文章目录

  • 嵌入式处理器和开发板介绍
    • 处理器简述
    • 处理器种类
      • Intel的PXA系列处理器
      • StrongARM系列处理器
      • MIPS处理器
      • 摩托罗拉龙珠(DragonBall)系列处理器
      • 日立SH3处理器
      • 德州仪器OMAP系列处理器
    • ARM处理器
      • ARM处理器简介
      • ARM处理器的特点
      • ARM处理器系列
      • ARM处理器的应用
      • ARM处理器选型
    • STM32MP157开发板
  • 构建嵌入式驱动程序开发环境
    • 小结
  • Linux操作系统复习
    • Linux内核子系统
      • 进程管理
      • 内存管理
      • 文件系统
      • 设备管理
      • 网络功能


嵌入式处理器和开发板介绍

在实际工程项目中,Linux驱动程序一般是为嵌入式系统而写的。因为嵌入式系统因用途、功能、设计厂商不同,硬件之间存在很多的差异。这些差异性,不能通过写一个通用的驱动程序来完成,需要针对不同的设备书写不同的驱动程序。要写驱动程序,必须了解处理器和开发板的相关信息。

处理器简述

处理器是解释并执行指令的功能部件。每个处理器都有一个独特的诸如mov 、add或sub这样的操作命令集,这个操作集被称为指令系统。在计算机诞生初期,设计者喜欢将计算机称为机器,所以该指令系统也被称作机器指令系统
处理器以惊人的速度执行指令指定的工作。一个称作时钟的计时器准确地发出定时电信号,该信号为处理器工作提供有规律的脉冲,通常叫时钟脉冲。测量计算机速度的术语引自电子工程领域,称作兆赫(MHz),兆赫意指每秒百万个时钟周期。一个8MHz的处理器中,执行执行速度高达了每秒8百万次。

处理器种类

处理器作为一种高科技产品,其技术含量非常高,目前全世界只有少数厂商能够设计。这些厂商主要有Intel、AMD、ARM、中国威盛、Cyrix、IBM和龙芯等,目前,处理器在嵌入式领域应用十分广泛,各大厂商都推出了自己的嵌入式处理器,嵌入式处理器主要有Intel的PXA系列处理器、StrongARM系列处理器、MIPS处理器、摩托罗拉龙珠(DragonBall)系列处理器、日立SH3处理器和德州仪器OMAP系列处理器。了解这些嵌入式处理器的特性,是驱动开发人员必须补的一课。

Intel的PXA系列处理器

这个系列最大的改建就在于较大地提高了性能,并且全面兼容旧款产品。
优点:性能和通用性得到了提高,具备了一些先进特性。例如无线局域网、通用串行总线、蓝牙技术等。
缺点:此款处理器在缺乏软件支持情况下,在性能上会被打折扣,甚至略低于旧款的StrangARM处理器。

StrongARM系列处理器

StrongARM系列处理器是Intel旗下的ARM公司推出的,一款旨在支持WinCE3.0 PocketPC系统的RISC(精简指令集)处理器,简称ARM处理器。ARM处理器由ARM公司设计,与MIPS公司类似,采用发放许可权方式,由其他公司生产。
优点:性能较高,并且使用了基于StrongARM处理器的终端设备不用再担心兼容新问题。
缺点:功耗过大一直是困扰高频率处理器的首要问题

MIPS处理器

MIPS实际上是芯片设计商MIPS Technologies公司的名字。MIPS Technologies不生产芯片,它只是把设计许可给其他公司,由其他公司制造生成。

摩托罗拉龙珠(DragonBall)系列处理器

摩托罗拉在1995年推出了第一款龙珠芯片,它的推出主要是为了应对Intel等厂商的竞争。摩托罗拉龙珠处理器走的是低功耗低成本的路线,虽然处理速度没有优势,但却特别适合小巧的PDA使用。因此摩托罗拉设计的龙珠系列处理器可以算是掌上电脑里的奔腾一代处理器,是一款具有历史意义的CPU。
优点:低功耗、低频率、稳定性好。
缺点:缺少了多媒体的支持能力和一些高级应用协议接口的能力(如安全加密、无线局域网、MPEG解码)。

日立SH3处理器

SuperH3(SH3)处理器由日立公司生产,该公司设计并生产这些芯片。SH3处理器比较少见,只使用在惠普Jornada 540系列Pokcket PC上。

德州仪器OMAP系列处理器

OMAP是一款面向多媒体操作系统的高性能低功耗处理器。它集成了包括一个数字协议处理器在内的多媒体单元,并且加入了GSM/GPRS接口和蓝牙无线协议等一些当前的高级功能。
优点:接口全面,并且具有较低的功耗和不错的性能表现。
缺点:耗电基本和旧款的彩色机型持平,但要想达到昔日的辉煌是不可能了。

ARM处理器

ARM(Advanced RISC Machines)处理器价格便宜,功能相对较多,是目前最流行的嵌入式处理器之一。ARM处理器分为很多种类,适用于不同的应用。

ARM处理器简介

ARM是微处理器行业的一家知名企业,设计了大量高性能、廉价、低功耗的RISC处理器。ARM处理器具有性能高、成本低和能耗低的特点。适用于多种领域,比如嵌入式控制、消费/教育类多媒体、DSP和移动式应用等。
ARM公司将其技术授权给世界上许多著名的半导体、软件和OEM厂商。每个厂商得到的都是独一无二的ARM相关技术及服务。利用这种合作关系,ARM很快称为了许多全球性RISC标准的缔造者。
目前,总共有100多家半导体公司与ARM签订了硬件技术使用许可协议,其中包括Intel、IBM、LG半导体、NEC、SONY、飞利浦和国民半导体这样的大公司。至于软件系统的合伙人,则包括微软、IBM和MRI等一系列知名公司。

ARM处理器的特点

  • 16/32位双指令集,节省存储空间
  • 小体积、低功耗、低成本、高性能
  • 支持DSP指令集,支持复杂的算数运算,对于多媒体处理非常有用
  • Jazeller技术,对Java代码运行速度进行了优化
  • 全球众多的合作伙伴,ARM32位体系结构被公认为业界领先的32位嵌入式RISC处理器结构,所有ARM处理器共享这一体系结构。这可确保开发者转向更高性能的ARM处理器时,由于所有产品均采用一个通用的软件体系,所以基本上相同的软件可在所有产品中运行,从而使开发者在软件开发上可获得最大回报。

ARM处理器系列

ARM7带有高速缓存处理器宏单元,广泛应用于多媒体和嵌入式设备。
ARM9主要应用于引擎管理,仪器仪表、安全系统、机顶盒、高端打印机等。
ARM9E为综合处理器,允许在硬件中执行Java字节码。
ARM10系列其核心在于使用向量浮点(VFP)单元VFP10提供高性能的浮点解决方案,从而极大地提高了处理器的整型和浮点运算性能。主要用于2D和3D图形引擎应用夯实基础。
SecurCore系列主要是针对安全市场,以一种全新的安全处理器设计为智能卡和其他安全IC开发提供独特的32位系统设计,并具有特定的反伪造方法,从而有助于防止对硬件和软件的盗版。
StrongARM系列和Xscale系列
StrongARM处理器将Intel处理器技术和ARM系统结构融为一体,致力于受体通信和消费电子类设备提供理想解决方案。Intel Xscale微体系结构则提供全性能、高性价比和低功耗的解决方案,支持16位Thumb指令和DSP指令。

ARM处理器的应用

在这里插入图片描述

ARM处理器选型

参考点:

  1. ARM处理器核
  2. 系统时钟控制器
  3. 内部存储容量
  4. GPIO数量
  5. 中断控制器
  6. IIS(Integerate Interface of Sound)接口
  7. nWAITE信号——外部总线速度控制信号
  8. RTC(Real Time Clock)时钟——实时时钟
  9. LCD控制器
  10. PWM输出
  11. ADC和DAC模数转换
  12. 扩展总线
  13. UART和lrDA
  14. DSP协处理器——协处理器是协助CPU完成相应功能的处理器,它除了与CPU通信之外,不会与其他部件进行通信。DSP是协处理器中的一种,全称叫数字辛哈处理器(Digtial Signal Processing)。
  15. 时钟计数器和看门狗
  16. 电源管理
  17. DMA控制器——有些AMR芯片内部集成有DMA可以和硬盘等外部设备高速交换数据,同时减少数据交换时对CPU资源的占用。

STM32MP157开发板

后面所有的操作都是基于该开发板,关于该开发板大家可以在韦东山老师的官网进行详细学习
100ask

构建嵌入式驱动程序开发环境

在编写驱动程序之前,需要构建一个合适的开发环境。这个环境包括适合的Linux操作系统,网络,交叉编译工具及NFS服务等。下面进行简单的介绍,详细的环境搭建过程建议大家上百问网直接看韦东山老师的视频。
在这里插入图片描述
Link

小结

关于Linux内核源码下载和如何愉快的阅读放在下一章和大家分享。

Linux操作系统复习

前一章博客已经较详细的介绍了Linux的基础知识。这里我们复习一下
Linux驱动入门(一)——基础概念

Linux内核子系统

编写设备驱动程序,涉及Linux内核的许多子系统,了解这些子系统对于了解Linux操作系统和编写驱动程序都非常有用。这些主要的子系统包括进程管理、内存管理、文件管理、设备管理和网络管理

进程管理

进程是操作系统中一个很重要的概念。进程是操作系统分配资源的基本单位,也是CPU调度的基本单位(最开始的Linux中没有线程概念)。可以给进程这样一个定义:进程是程序运行的一个实例,是操作系统分配资源和调度的一个基本单位。Linux将进程分为就绪态、执行态和阻塞态三个状态。Linux内核负责对这三种状态进行管理。下面对这三种状态的基本概念介绍如下。

  • 就绪状态:在这种状态中,进程具有处理器外的其他资源,进程不运行。当处理器空闲时,进程就被调度来运行。
  • 执行状态:进程处于就绪状态后,获得处理器资源,就能进入执行状态此时程序正在运行。
  • 阻塞状态:进程因为等待某种事件的发生而暂时不能运行。这些事件如设备中断,其他进程的信号。
    参考下图,当系统分配资源并创建一个进程后,进程就进入就绪状态。当调度程序分配了处理器资源后,进程便进入执行状态。相应地,当处理器资源用完后,进程又进入就绪状态。在执行状态中,因发生某些事件而使进程不能运行,则进程进入阻塞状态。在阻塞状态下,当外部事件得到满足后,进程就进入就绪状态。
    在这里插入图片描述

内存管理

内存是计算机的主要资源之一,可以将内存理解为一个线性的存储结构。用来管理内存的策略是决定系统性能的主要因素。内核在有限的资源上为每个进程创建一个虚拟地址空间,并对虚拟地址空间进行管理。为了方便内存的管理,内核提供了一些重要的函数。这些函数包括kmalloc()、kfree()等。另外设备驱动程序需要使用内存分配,不同的分配方式对驱动程序的影响不同,所以需要对内存分配有比较清晰的了解。

文件系统

在Linux操作系统中,文件系统是用来组织、管理、存放文件的一套管理机制。Linux文件系统的一大优点是,它几乎可以支持所有的文件格式。任何一种新的文件格式,都可以容易地写出相应的支持代码,并无缝地添加到内核中。虽然不同文件格式的文件以不同的存储方式存放在磁盘设备中,但是在用户看来,文件总以树形结构显示给用户。这种树形结构如下图所示:
在这里插入图片描述
另一方面,在Linux中,几乎每一个对象都可以当作文件来看待,最常见的就是设备文件。设备文件将设备当作文件来看待,这样就可以像操作文件一样操作设备。

设备管理

无论是桌面系统还是嵌入式系统,都存在各种类型的设备。操作系统的一个重要功能就是对这些设备进行统一管理。由于设备的种类繁多,不同设备的操作方式都不一样,使设备管理成为操作系统中非常复杂的部分。Linux系统通过某种方式较好地解决了这个问题,使设备的管理得到了统一。
设备管理的一个主要任务是完成数据从设备到内存的传输。一个完成的数据传输过程是:数据首先从设备传入内存,然后CPU对其进行处理,处理完后将数据传入内存或设备中。

网络功能

网络功能也由操作系统来完成。大部分的网络操作与用户进程都是分离的,数据包的接收和发送都是由相应的驱动程序来完成的,而与用户进程无关。进程处理数据之前,驱动程序必须先收集、标识和发送或重组数据。当数据准备好后,系统负责用户进程和网络接口之间的数据传送。另外内核也负责网络通信协议。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/563685.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Netty实战(八)

引导 一、引导1.1 什么是引导1.2 Bootstrap 类1.3 引导客户端和无连接协议1.4 引导客户端1.5 Channel 和 EventLoopGroup 的兼容性 二、引导服务器2.1 ServerBootstrap 类2.2 引导服务器 三、从 Channel 引导客户端四、在引导过程中添加多个 ChannelHandler五、使用 Netty 的 C…

1.实验技术-收藏吃灰去,深入浅出常规PCR

1.PCR 原理与过程 2.PCR 体系组分 3.PCR 应用 4.PCR 常见问题及解决方案 前言 PCR(Polymerase Chain Reaction,聚合酶链式反应)是现代生物学中一项必不可少的技术,能进行体外扩增DNA序列,为基因组研究和分子诊断提供…

27事务管理AOP

一、MySQL事务回顾 二、Spring事务管理 Spring框架的第一大核心:IOC控制反转 在DeptServiceImpl下删除部门方法下新加一个删除员工信息的操作,注意:此时的id是部门id。 1、问题分析 2、Transactional-Spring事务管理 一般是在Service实现类的…

想用Python做副业?看这一篇就够了

大家好,我是耿直。 随着人工智能、大数据、物联网的广泛应用,与之紧密关联的Python技术开始受到人们的极大关注。各行业对Python技术服务的需求量呈指数级暴增,尤以爬虫技术服务为甚,供不应求早已成为常态。 而近两年受到各种不…

Springboot +spring security,实现RememberMe和实现原理分析

一.简介 我们在登录网站的时候,除了让你输入用户名和密码,还会有个勾选框: 记住我。 比如下面这个截图: Spring Security 也提供了这个功能,今天来实践下。 二.创建项目 如何创建一个SpringSecurity项目&#xff0…

【精】MySQL5.7没有row_number()函数如何组内排序和求分组topN

当我们遇到一些需求,比如组内分组排序,分组topN等,很容易想到用row_number()函数 ​在MySQL8.0版本中支持row_number函数,本文不做讨论,如果是MySQL5.7版本,要怎么写SQL呢? 测试表:…

Three.js教程:点、线、网格模型介绍

推荐:将 NSDT场景编辑器 加入你的3D工具链 其他系列工具: NSDT简石数字孪生 点、线、网格模型介绍 经过前面几章学习相信你对点模型Points、线模型Line、网格模型Mesh已经有了大致了解,本节课就对点、线、网格模型模型进行简单总结。 点模型…

阿里大佬随手甩出一份覆盖全网的微服务架构笔记,让我涨薪60%

在这个凡事皆互联的时代,越来越多的人和物成为互联网上的节点,不断扩充着互联网这张大网的边界。节点即价值,更多的节点意味着更大的价值。 微服务在这个互联网时代依旧是最火热的技术之一,在当下互联网企业不懂微服务是不行的&a…

软件测试人员如何为项目的质量保障兜底?看完你就明白了...

上线前层层保障 01文档管理 关键词:需求文档、设计文档、测试文档 1.需求和设计产出方为产品、开发,测试需要做好流程监督,这里重点说下测试文档。 2.测试文档,从业务领域来说,一般有测试计划、测试用例、业务总结文…

环信新鲜出炉的 React-UIKIT 库初体验,瞬间实现即时通讯功能!

一、前言 为了加快即时通讯需求产品开发速度,将更多的时间放在关系核心业务逻辑的处理上,环信正式推出可扩展,易使用的 React 版本的 UIKIT 库 此 UIKit 库 是基于 环信 Web SDK 开发的的 UI 组件库,它提供了常用的 UI 组件、包含…

【尚好房项目实战】:第一章项目架构介绍

编译软件:IntelliJ IDEA 2019.2.4 x64 操作系统:win10 x64 位 家庭版 Maven版本:apache-maven-3.6.3 Mybatis版本:3.5.6 spring版本:5.3.1 文章目录 前言尚好房项目实战系列文章目录一、项目介绍二、核心技术点三、项目…

次氯酸消毒剂制备中的全氟醚橡胶密封耐腐蚀电动阀门解决方案

摘要:次氯酸作为是一种新型消毒剂,近年来广泛应用于医疗卫生机构、公共卫生场所和家庭的一般物体表面、医疗器械、医疗废物等。由于次氯酸的酸性和强氧化性,使得次氯酸生产制备过程中会给流量调节阀门带来腐蚀并影响寿命和控制精度&#xff0…

电影票房之数据分析(Hive)--第1关

电影票房之数据分析(Hive) 第1关:统计2020年上映的电影中,当前总票房最高的10部电影 本关任务 基于EduCoder平台提供的初始数据集,统计 2020 年上映的电影中,当前总票房最高的 10 部电影。 编程要求 本…

论文阅读:GLOBAL PROTOTYPE ENCODING FOR INCREMENTALVIDEO HIGHLIGHTS DETECTION

摘要: 视频亮点检测 (VHD) 是计算机视觉中的一个活跃研究领域,旨在在给定原始视频输入的情况下定位最吸引用户的片段。然而,大多数 VHD 方法都是基于封闭世界假设,即预先定义固定数量的高亮类别,并且所有训练数据都是…

IDEA刷新太慢,非得强制reload from disk

IDEA刷新太慢,每次 reload from disk才能最新代码咋办。 比如我用 IDEA开发代码,但我用github desktop 等第三方客户端软件提交代码的,但是 IDEA显示还是未提交的代码。此时,必须强制reload from disk才跟得上磁盘改变。 安装这个…

校园能耗监测管理系统是什么?有什么作用?

随着全球气候变化和环境问题的日益严重,校园能耗监测管理系统成为了可持续发展的重要手段。校园能耗监测管理系统可以对校园的能源使用情况进行实时监测、统计和分析,进而优化能源使用,降低能源消耗和运营成本,为绿色校园建设提供…

单链表相交编程题——java实现

题目: 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结构中不存在环。 注意&#xf…

抖音账号矩阵系统源码开发功能模块分析

抖音账号矩阵系统源码是一款基于PHP语言开发的混剪工具,可以方便地将多个抖音账号的视频素材进行混剪,生成一个新的视频。该工具使用了多线程、协程和异步编程等技术,可以显著提高处理速度,并且支持自动去重和自动合成背景音乐等功…

报名开源之夏,与 StarRocks 一起畅游代码的海洋!

开源之夏是由中科院软件所“开源软件供应链点亮计划”发起并长期支持的一项暑期开源活动,旨在鼓励在校学生积极参与开源软件的开发维护,培养和发掘更多优秀的开发者,促进优秀开源软件社区的蓬勃发展,助力开源软件供应链建设。 202…

YOLOV5使用(一)

yolov5的工程使用(以人员检测为案例) 使用ubuntu为案例 docker run --gpus all -it -p 6007:6006 -p 8889:8888 --name my_torch -v $(pwd):/app easonbob/my_torch1-pytorch:22.03-py3-yolov5-6.0使用端口映射功能也就是说打开jupyter lab的指令是 http://localhost:8889/l…