![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux驱动开发
文章平均质量分 89
贾贾乾杯
学无止境,为世界之光!
展开
-
嵌入式Linux开发29——platform设备驱动实验
文章目录Linux 驱动的分离与分层1、驱动的分隔与分离2、驱动的分层platform 平台驱动模型简介1.platform总线2.platform驱动3.platform设备实验程序编写编译测试 我们在前面的博客编写的设备驱动都非常的简单,都是对IO进行最简单的读写操作。像I2C、SPI、 LCD 等这些复杂外设的驱动就不能这么去写了, Linux 系统要考虑到驱动的可重用性,因此提出了驱动的分离与分层这样的软件思路,在这个思路下诞生了我们将来最常打交道的platform设备驱动,也叫做平台设备驱动原创 2021-11-02 21:46:36 · 1107 阅读 · 1 评论 -
嵌入式Linux开发28——异步通知实验
文章目录异步通知1.异步通知简介2. 驱动中的信号处理2.1 fasync_struct 结构体2.2 fasync 函数2.3 kill_fasync 函数3. 应用程序对异步通知的处理3.1 注册信号处理函数3.2 将本应用程序的进程号告诉给内核3.3 开启异步通知实验程序编写编译测试 在前面博客中使用阻塞或者非阻塞的方式来读取驱动中按键值都是应用程序主动读取的,对于非阻塞方式来说还需要应用程序通过 poll 函数不断的轮询。最好的方式就是驱动程序能主动向应用程序发出通知,报告自己可以访问,然后原创 2021-09-27 00:42:47 · 357 阅读 · 0 评论 -
嵌入式Linux开发27(续)——非阻塞IO实验
关于阻塞IO与非阻塞IO的原理介绍请参考上一篇博客 嵌入式Linux开发27——Linux阻塞和非阻塞IO。本篇文章延续上一篇内容,编写一个读取按键值的非阻塞IO实验。驱动程序编写#include <linux/types.h>#include <linux/kernel.h>#include <linux/delay.h>#include <linux/ide.h>#include <linux/init.h>#include原创 2021-09-19 20:23:25 · 133 阅读 · 0 评论 -
嵌入式Linux开发27——Linux阻塞和非阻塞IO
文章目录阻塞和非阻塞IO1.阻塞和非阻塞简介2.等待队列2.1 等待队列头2.2 等待队列项2.3 将队列项添加/移除等待队列头2.4 等待唤醒2.5 等待事件3.轮询3.1 select 函数3.2 poll函数3.3 epoll函数4. Linux 驱动下的 poll 操作函数阻塞 IO 实验1.程序编写2.编译验证阻塞和非阻塞IO1.阻塞和非阻塞简介 这里的“IO”并不是我们学习 STM32 或者其他单片机的时候所说的“GPIO”(也就是引脚)。这里的 IO 指的是 Input/Output原创 2021-09-19 17:16:40 · 3014 阅读 · 0 评论 -
嵌入式Linux开发26——Linux 中断(万字总结)
文章目录Linux中断简介:1. Linux 中断 API 函数1.1 中断号1.2 request_irq 函数1.3 free_irq 函数1.4 中断处理函数1.5 中断使能与禁止函数2.上半部与下半部2.1 软中断 不管是裸机实验还是 Linux 下的驱动实验,中断都是频繁使用的功能,在裸机中使用中断我们需要做一大堆的工作,比如配置寄存器,使能 IRQ 等等。 Linux 内核提供了完善的中断框架,我们只需要申请中断,然后注册中断处理函数即可,使用非常方便,不需要一系列复杂的寄存器配置。Li原创 2021-09-07 00:18:03 · 3412 阅读 · 1 评论 -
嵌入式Linux开发25——Linux 内核定时器实验
文章目录Linux 时间管理和内核定时器简介1.内核时间管理简介2.内核定时器简介2.1 init_timer 函数2.2 add_timer 函数2.3 del_timer 函数2.4 del_timer_sync 函数2.5 mod_timer 函数3. Linux 内核短延时函数定时器驱动程序编写 定时器是我们最常用到的功能,一般用来完成定时功能,本章我们就来学习一下 Linux 内核提供的定时器 API 函数,通过这些定时器 API 函数我们可以完成很多要求定时的应用。 Linux内核也提供了原创 2021-08-31 08:40:12 · 566 阅读 · 0 评论 -
嵌入式Linux开发24——Linux 按键输入实验
文章目录Linux 下按键驱动原理程序编写1.修改设备树文件1.1 添加 pinctrl 节点1.2 添加 KEY 设备节点1.3 检查 PIN 是否被其他外设使用2.按键驱动程序编写3.编写测试 APP运行测试 之前章我们都是使用的 GPIO 输出功能,还没有用过 GPIO 输入功能,本章我们就来学习一下如果在 Linux 下编写 GPIO 输入驱动程序,我们使用上一篇博客讲述的原子操作来对按键值进行保护。Linux 下按键驱动原理 按键驱动和 LED 驱动原理上来讲基本都是一样的,都是操作原创 2021-08-29 15:46:50 · 2482 阅读 · 0 评论 -
嵌入式Linux开发23——Linux并发与竞争
文章目录并发与竞争1.并发与竞争简介2.保护内容原子操作1.原子操作简介2.原子整形操作API函数3.原子位操作API函数自旋锁1.自旋锁简介2.自旋锁API函数3.其他类型的锁3.1 读写自旋锁3.2 顺序锁4.自旋锁使用注意事项信号量1.信号量简介2. 信号量 API 函数互斥体1.互斥体简介2.互斥体API函数并发与竞争1.并发与竞争简介 Linux 系统是个多任务操作系统,会存在多个任务同时访问同一片内存区域,这些任务可能会相互覆盖这段内存中的数据,造成内存数据混乱。针对这个问题必须要做处原创 2021-08-28 20:46:42 · 246 阅读 · 0 评论 -
嵌入式Linux开发22——Linux 蜂鸣器实验
文章目录蜂鸣器驱动原理程序编写1.修改设备树文件1.1 添加pinctrl节点1.2 添加 BEEP 设备节点 上一篇博客中我们借助 pinctrl 和 gpio 子系统编写了 LED 灯驱动,笔者的I.MX6ULL开发板上还有一个蜂鸣器,从软件的角度考虑,蜂鸣器驱动和 LED 灯驱动其实是一摸一样的,都是控制 IO 输出高低电平。本篇文章我们就来学习编写蜂鸣器的 Linux 驱动,也算是对上一章讲解的 pinctrl和 gpio 子系统的巩固。蜂鸣器驱动原理 开发板上的蜂鸣器是通过SNVS_原创 2021-08-25 21:32:31 · 1622 阅读 · 1 评论 -
嵌入式Linux开发21——pinctrl 和 gpio 子系统
文章目录I.MX6ULL 的 pinctrl 子系统驱动1. pin配置信息详解2. 设备树中添加 pinctrl 节点模板GPIO子系统1.设备树中的gpio信息2.gpio子系统API函数2.1 gpio_request 函数2.2 gpio_free 函数2.3 gpio_direction_input 函数2.4 gpio_direction_output 函数2.5 gpio_get_value 函数2.6 gpio_set_value 函数 我们先来回顾一下上一篇博客是怎么初始化 LE原创 2021-08-25 12:34:27 · 906 阅读 · 0 评论 -
嵌入式Linux开发20——设备树下的 LED 驱动实验
文章目录设备树LED驱动原理程序编写1.修改设备树文件2.LED驱动程序编写设备树LED驱动原理 在嵌入式Linux开发18——字符设备驱动开发2中,我们直接在驱动文件 newchrled.c 中定义有关寄存器物理地址,然后使用 io_remap 函数进行内存映射,得到对应的虚拟地址,最后操作寄存器对应的虚拟地址完成对 GPIO 的初始化。本章我们在第四十二章实验基础上完成,接下来我们使用设备树来向 Linux 内核传递相关的寄存器物理地址, Linux 驱动文件使用上一章讲解的 OF函数从设备树中原创 2021-08-17 22:54:31 · 444 阅读 · 0 评论 -
嵌入式Linux开发19——Linux设备树(万字总结)
提示:本文参考《 Devicetree SpecificationV0.2.pdf 》、《Power_ePAPR_APPROVED_v1.12.pdf》、《IMX6UL参考手册》以及正点原子的相关教程总结的学习笔记,万字总结,水平有限,仅供参考。 笔者偏嵌入式方向,故本文更多是关于实际开发中涉及的内容。文章目录设备树的概念DTS、 DTB 和 DTCDTS语法1.dtsi头文件2.设备节点3.标准属性3.1 compatible 属性3.2 model属性3.3 status 属性3.4 #add原创 2021-08-15 21:42:09 · 1406 阅读 · 2 评论 -
嵌入式Linux开发18——字符设备驱动开发2
文章目录字符设备驱动原理1.分配和释放设备号2.新的字符设备注册方法2.1字符设备结构2.2 cdev_init 函数2.3 cdev_add 函数2.4 cdev_del 函数自动创建设备节点:1.mdev机制2.创建和删除类3.创建设备设置文件私有数据程序编写 字符设备驱动开发重点是使用 register_chrdev 函数注册字符设备,当不再使用设备的时候就使用unregister_chrdev 函数注销字符设备,驱动模块加载成功以后还需要手动使用 mknod 命令创建设备节点。 registe原创 2021-08-13 20:32:26 · 211 阅读 · 0 评论 -
嵌入式Linux开发17——LED驱动开发
Linux下LED灯驱动原理 Linux 下的任何外设驱动,最终都是要配置相应的硬件寄存器。所以本章的 LED 灯驱动最终也是对 I.MX6ULL 的 IO 口进行配置,与裸机实验不同的是,在 Linux 下编写驱动要符合 Linux的驱动框架。1.地址映射 在编写驱动之前,我们需要先简单了解一下 MMU,MMU 全称叫做 Memory Manage Unit,也就是内存管理单元。在老版本的 Linux 中要求处理器必须有 MMU,但是现在Linux 内核已经支持无 MMU 的处理器了。 MMU原创 2021-08-10 16:02:00 · 1062 阅读 · 0 评论 -
嵌入式Linux开发17——字符设备驱动开发
字符设备驱动简介 前面的章节主要是进行裸机开发,也是为了对底层设备有更深刻的认识,后面做驱动开发的时候就会很流畅。从本文开始进入我们的重点内容——Linux驱动开发。首先学习字符设备的驱动开发,一些开发流程和驱动代码模板可以作为之后开发的“蓝本”。 字符设备是 Linux 驱动中最基本的一类设备驱动,字符设备就是一个一个字节,按照字节流进行读写操作的设备,读写数据是分先后顺序的。比如我们最常见的点灯、按键、 IIC、 SPI,LCD 等等都是字符设备,这些设备的驱动就叫做字符设备驱动。 在详细的原创 2021-08-09 18:52:56 · 663 阅读 · 1 评论 -
嵌入式Linux开发16——U-Boot使用及其常用操作命令(2)
U-Boot下FAT格式文件系统操作命令1. fatinfo命令 fatinfo 命令用于查询指定 MMC 设置指定分区的文件系统信息,格式如下:fatinfo <interface> [<dev[:part]>] interface 表示接口,比如 mmc, dev 是查询的设备号, part 是要查询的分区。比如我们要查询 EMMC 分区 1 的文件系统信息,命令如下:fatinfo mmc 1:12.fatls命令 fatls 命令用于查询 FAT 格式原创 2021-08-05 16:34:13 · 564 阅读 · 1 评论 -
嵌入式Linux开发15——U-Boot使用及其常用操作命令(1)
背景知识 之前的文章都是在做裸机开发,接下来我们要进行Linux系统移植。学习过STM32操作系统的同学都知道UCOS/FreeRTOS 移植就是在官方的 SDK 包里面找一个和自己所使用的芯片一样的工程编译一下,然后下载到开发板就可以了。Linux 的移植要复杂的多,在移植 Linux之前我们需要先移植一个 bootloader 代码,这个 bootloader 代码用于启动 Linux 内核, bootloader有很多,常用的就是 U-Boot。移植好 U-Boot 以后再移植 Linux 内核,原创 2021-08-04 15:12:38 · 708 阅读 · 0 评论 -
嵌入式Linux开发14——ADC实验
程序编写 ADC大家非常熟悉了,具体内容不再赘述,接下来只讨论和I.MX6ULL板子相关的ADC内容。首先要初始化ADC1_CH1相关的寄存器CFG寄存器、GC寄存器,初始化的过程中需要对初始化结果进行校准,我们单独编写一个校准函数,即需要关注GS寄存器的CALF位和HS寄存器的COCO0位,最后就是读取ADC寄存器R的值得到结果。ADC.h#include "imx6ul.h"int adc1ch1_init(void);status_t adc1_autocalibration(void)原创 2021-08-03 12:56:29 · 1732 阅读 · 0 评论 -
嵌入式Linux开发13——PWM输出实验
背景知识 我们用PWM信号控制LCD的背光,PWM 信号有两个关键的术语:频率和占空比,频率就是开关速度,把一次开关算作一个周期,那么频率就是 1 秒内进行了多少次开关。占空比就是一个周期内高电平时间和低电平时间的比例,一个周期内高电平时间越长占空比就越大,反之占空比就越小。占空比用百分之表示,如果一个周期内全是低电平那么占空比就是 0%,如果一个周期内全是高电平那么占空比就是100%。 我们给 LCD 的背光引脚输入一个 PWM 信号,这样就可以通过调整占空比的方式来调整LCD 背光亮度了。提高原创 2021-08-03 10:50:30 · 1678 阅读 · 0 评论 -
嵌入式Linux开发12——触摸屏实验
背景知识 关于电容屏的物理原理我们就不去研究了,毕竟我们不是开发电容屏的,而是电容屏的使用者,我们只需要关注如何使用电容屏,如何得到其多点触摸坐标值即可。 我们以触摸控制IC FT5426为例,FT5426 这款驱动 IC 采用 15*28 的驱动结构,也就是 15 个感应通道, 28 个驱动通道,最多支持 5 点电容触摸。笔者所用的电容触摸屏部分有 4 个 IO 用于连接主控制器: SCL、 SDA、RST 和 INT, SCL 和 SDA 是 I2C 引脚, RST 是复位引脚, INT 是中断原创 2021-08-02 18:00:19 · 2868 阅读 · 3 评论 -
嵌入式Linux开发11——SPI实验
背景知识 同 I2C 一样, SPI 是很常用的通信接口,也可以通过 SPI 来连接众多的传感器。相比 I2C 接口, SPI 接口的通信速度很快, I2C 最多 400KHz,但是 SPI 可以到达几十 MHz。SPI简介 上一章我们讲解了 I2C, I2C 是串行通信的一种,只需要两根线就可以完成主机和从机之间的通信,但是 I2C 的速度最高只能到 400KHz,如果对于访问速度要求比较高的话 I2C 就不适合了。本章我们就来学习一下另外一个和 I2C 一样广泛使用的串行通信: SPI, SP原创 2021-08-02 14:28:33 · 882 阅读 · 1 评论 -
嵌入式Linux开发11——I2C实验
背景知识I2C简介 I2C 是很常见的一种总线协议, I2C 是 NXP 公司设计的, I2C 使用两条线在主控制器和从机之间进行数据通信。一条是 SCL(串行时钟线),另外一条是 SDA(串行数据线),这两条数据线需要接上拉电阻,总线空闲的时候 SCL 和 SDA 处于高电平。 I2C 总线标准模式下速度可以达到 100Kb/S,快速模式下可以达到 400Kb/S。 I2C 总线工作是按照一定的协议来运行的,接下来就看一下 I2C 协议。 I2C 是支持多从机的,也就是一个 I2C 控制器下可以原创 2021-08-01 23:48:05 · 804 阅读 · 2 评论 -
嵌入式Linux开发10——RTC时钟
背景知识 如果学习过 STM32 的话应该知道, STM32 内部有一个 RTC 外设模块,这个模块需要一个32.768KHz 的晶振,对这个 RTC 模块进行初始化就可以得到一个实时时钟。 I.MX6U 内部也有个 RTC 模块,但是不叫作“RTC”,而是叫做“SNVS”。 SNVS 直译过来就是安全的非易性存储, SNVS 里面主要是一些低功耗的外设,包括一个安全的实时计数器(RTC)、一个单调计数器(monotonic counter)和一些通用的寄存器,本文我们肯定只使用实时计数器(RTC)原创 2021-07-31 18:47:07 · 978 阅读 · 0 评论 -
嵌入式Linux开发9——RGBLCD显示
背景知识1.分辨率 提起 LCD 显示器,我们都会听到 720P、 1080P、 2K 或 4K 这样的字眼,这个就是 LCD 显示器分辨率。 LCD 显示器都是由一个一个的像素点组成,像素点就类似一个灯(在 OLED 显示器中,像素点就是一个小灯),这个小灯是 RGB 灯,也就是由 R(红色)、 G(绿色)和 B(蓝色)这三种颜色组成的,而 RGB 就是光的三原色。 1080P 的意思就是一个 LCD 屏幕上的像素数量是1920*1080 个,也就是这个屏幕一列 1080 个像素点,一共 1920原创 2021-07-30 21:51:57 · 2611 阅读 · 2 评论 -
嵌入式Linux开发8——UART串口通讯
1. 背景知识1.1 UART通讯格式 串口全称叫做串行接口,通常也叫做 COM 接口,串行接口指的是数据一个一个的顺序传输,通信线路简单。使用两条线即可实现双向通信,一条用于发送,一条用于接收。UART为异步串行收发器。 数据位:数据位就是实际要传输的数据,数据位数可选择 5~8 位,我们一般都是按照字节传输数据的,一个字节 8 位,因此数据位通常是 8 位的。低位在前,先传输,高位最后传输。 具体通讯格式如下图所示:1.2 UART电平标准 UART 一般的接口电平有 TTL 和原创 2021-07-28 11:26:10 · 3265 阅读 · 1 评论 -
嵌入式Linux开发7——GPT定时器实验
背景知识 GPT 定时器是一个 32 位向上定时器(也就是从 0X00000000 开始向上递增计数), GPT 定时器也可以跟一个值进行比较,当计数器值和这个值相等的话就发生比较事件,产生比较中断。GPT 定时器有一个 12 位的分频器,可以对 GPT 定时器的时钟源进行分频, GPT 定时器特性如下:① 一个可选时钟源的 32 位向上计数器。② 两个输入捕获通道,可以设置触发方式。③ 三个输出比较通道,可以设置输出模式。④ 可以生成捕获中断、比较中断和溢出中断。⑤ 计数器可以运行在重新启动原创 2021-07-27 21:17:07 · 32732 阅读 · 0 评论 -
嵌入式Linux开发6——定时器LED灯实验
背景知识 EPIT 的全称是: Enhanced Periodic Interrupt Timer,直译过来就是增强的周期中断定时器,它主要是完成周期性中断定时的。学过 STM32 的话应该知道, STM32 里面的定时器还有很多其它的功能,比如输入捕获、 PWM 输出等等。但是 I.MX6U 的 EPIT 定时器只是完成周期性中断定时的,仅此一项功能!至于输入捕获、 PWM 输出等这些功能, I.MX6U 由其它的外设来完成。 EPIT 是一个 32 位定时器,在处理器几乎不用介入的情况下提供精准原创 2021-07-27 14:59:52 · 532 阅读 · 1 评论 -
嵌入式Linux开发5——按键中断实验
1. 背景知识1.1 中断向量表 中断向量表是一个表,这个表里面存放的是中断向量。中断服务程序的入口地址或存放中断服务程序的首地址成为中断向量,因此中断向量表是一系列中断服务程序入口地址组成的表。这些中断服务程序(函数)在中断向量表中的位置是由半导体厂商定好的,当某个中断被触发以后就会自动跳转到中断向量表中对应的中断服务程序(函数)入口地址处。中断向量表在整个程序的最前面。1.2 Cortex-A7中断系统简介 Cortex-A7与STM32相类似,向量中断表也放在代码最前面。Cortex-A7原创 2021-07-27 11:28:18 · 1760 阅读 · 6 评论 -
嵌入式Linux开发4——主频和时钟配置
1. 硬件分析 从图中可见,系统时钟来源主要有两部分:32.768KHZ和24MHZ的晶振,其中32.768KH晶振是RTC时钟源,24MHZ晶振是I.MX6U内核和其他外设的时钟源。2. 主频和时钟配置解析修改I.MX6U主频的步骤如下:①、 设置寄存器 CCSR 的 STEP_SEL 位,设置 step_clk 的时钟源为 24M 的晶振。②、 设置寄存器 CCSR 的 PLL1_SW_CLK_SEL 位,设置 pll1_sw_clk 的时钟源为step_clk=24MHz,通过这一步我转载 2021-07-21 14:28:52 · 792 阅读 · 0 评论 -
嵌入式Linux开发第三步——BSP工程管理
1. 前言 我们将所有的源码文件放到工程的根目录下,如果工程文件比较少的话这样做无可厚非,但是如果工程源文件达到几十、甚至数百个的时候,这样一股脑全部放到根目录下就会使工程显得混乱不堪。所以我们必须对工程文件做管理,将不同功能的源码文件放到不同的目录中。接下来,我们就来学习一下如何对一个工程进行整理,使其美观、功能模块清晰、易于阅读。2. 工程管理简介 我们可以参考STM32F103的工程目录结构来整理第十二章的例程工程,新建名为“ledc_bsp”的文件夹,在里面新建 bsp、 imx6ul、原创 2021-07-12 22:08:41 · 621 阅读 · 2 评论 -
嵌入式Linux开发第二步——C语言点灯实验
1. 前言 一般情况下用汇编写嵌入式驱动很难,只是在开始部分用汇编来初始化一下 C 语言环境,比如初始化 DDR、设置堆栈指针 SP 等等,当这些工作都做完以后就可以进入 C 语言环境,也就是运行 C 语言代码,一般都是进入 main 函数。所以我们有两部分文件要做:①、汇编文件 汇编文件只是用来完成 C 语言环境搭建。②、C 语言文件 C 语言文件就是完成我们的业务层代码的,其实就是我们实际例程要完成的功能。 其实 STM32 也是这样的,只是我们在开发 STM32 的时候没有想到这一原创 2021-06-26 22:54:01 · 830 阅读 · 1 评论 -
I.MX6U 启动方式详解
I.MX6U 支持多种启动方式以及启动设备,比如可以从 SD/EMMC、 NAND Flash、 QSPI Flash等启动。用户可以根据实际情况,选择合适的启动设备。启动方式选择 BOOT 的处理过程是发生在 I.MX6U 芯片上电以后,芯片会根据 BOOT_MODE[1:0]的设置来选择 BOOT 方式。BOOT_MODE[1:0]的值是可以改变的,有两种方式,一种是改写 eFUSE(熔丝),一种是修改相应的 GPIO 高低电平。第一种修改 eFUSE 的方式只能修改一次,后面就不能再修改了,原创 2021-06-18 23:26:11 · 302 阅读 · 0 评论 -
嵌入式Linux开发第一步——汇编点灯实验
I.MX6U IO 复用 以 IO“IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO00”为例,打开参考手册,如图所示: 从图中可以看到有个名为:IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO00 的寄存器,寄存器地址为 0X020E005C,这个寄存器是 32 位的,但是只用到了最低 5 位,其中bit0~bit3(MUX_MODE)就是设置 GPIO1_IO00 的复用功能的。 GPIO1_IO00 一共可以复用为9种功能 IO,分别对应 ALT0~ALT8原创 2021-06-16 18:42:16 · 955 阅读 · 6 评论 -
想做好嵌入式Linux驱动开发?先掌握基本的ARM汇编吧
前言 我们在进行嵌入式 Linux 开发的时候是绝对要掌握基本的 ARM 汇编,因为 Cortex-A 芯片一上电 SP 指针还没初始化, C 环境还没准备好,所以肯定不能运行 C 代码,必须先用汇编语言设置好 C 环境,比如初始化 DDR、设置 SP指针等等,当汇编把 C 环境设置好了以后才可以运行 C 代码。 C 语言中的函数调用涉及到出栈入栈,出栈入栈就要对堆栈进行操作,所谓的堆栈其实就是一段内存,这段内存比较特殊,由 SP 指针访问, SP 指针指向栈顶。芯片一上电 SP 指针还没有初始化原创 2021-06-15 16:00:05 · 479 阅读 · 0 评论 -
Cortex-A7 MPCore简单介绍
1.简介 在 28nm 工艺下, Cortex-A7 可以运行在 1.2~1.6GHz,并且单核面积不大于 0.45mm2(含有浮点单元、 NEON 和 32KB 的 L1 缓存),在典型场景下功耗小于 100mW, 这使得它非常适合对功耗要求严格的移动设备,这意味着 Cortex-A7 在获得与 Cortex-A9 相似性能的情况下,其功耗更低。 Cortex-A7 MPCore 支持在一个处理器上选配 1~4 个内核, Cortex-A7 MPCore 多核配置如图所示:2.Cortex-原创 2021-06-15 11:58:08 · 762 阅读 · 2 评论