芯片分类:芯片通识课笔记
Published:
芯片分类:芯片通识课笔记
芯片分类
数字电路芯片
- 逻辑电路芯片:实现逻辑运算的芯片,如与门、或门、非门等。
- 通用处理器芯片:如CPU、GPU等,执行各种计算任务。
- 存储芯片:如RAM、ROM等,用于数据存储。
- 片上系统芯片(SoC):集成了CPU、内存、外设等功能的芯片,如智能手机、平板电脑等。
- 微控制器芯片(MCU):简化版SoC,也被称为单片机,用于控制和执行特定任务,如嵌入式系统。
- 专用集成电路芯片(ASIC):用于特定应用的集成电路芯片,如通信芯片、图像处理器等。
- 可编程逻辑器件芯片(FPGA):可编程的逻辑器件芯片,用户可以根据需求进行配置和编程。
MCU和SoC的区别不大,其实只是集成度不同。SoC集成度高,包含了CPU、内存、外设等多个功能模块,而MCU集成度低,通常只包含CPU、内存和一些外设。所以手机也是一个嵌入式系统。
感觉NPU本质是一个AISC,目前在逐渐向通用处理器芯片方向发展。
模拟电路芯片
- 分立器件和模组:如二极管,三极管等。
- 电源电路芯片:用于电源管理,电压变换,充电管理等。
- 信号检测电路芯片:用于检测和处理微弱电信号。
- 滤波器芯片:如低通滤波器、高通滤波器、带通滤波器等,用于信号处理。
- 转换电路芯片:如电压转换器、电流转换器等,用于信号转换。
- 信号发生器芯片:如正弦波发生器、方波发生器等,用于生成特定的模拟信号。
- 放大器芯片:如运算放大器、功率放大器等,用于信号放大。
数模混合芯片
- 模-数转换器芯片:ADC和DAC等,用于将模拟信号和数字信号进行转换。
- 光电转换芯片:如光电传感器、光电二极管等,用于将光信号转换为电信号。
- 基带芯片:用于处理基带信号的芯片,如4G,5G等芯片。
- 调制解调芯片:如调制解调器、解调解调器等,用于信号的调制和解调。
- 接口电路芯片:用于芯片内部,芯片和外部设备之间的接口电路芯片,如USB接口芯片、HDMI接口芯片等。
- 传感器芯片:如温度传感器、压力传感器等,用于检测环境参数并输出模拟或数字信号。
- 驱动器芯片:如LED驱动器、电机驱动器等,用于驱动外部设备。
特种电路芯片
- 军工级芯片:用于军事领域的芯片,具有高可靠性和安全性。
- 射频功率芯片:用于射频信号的功率放大和处理,如射频放大器、射频电源等。
- 超高压芯片:用于处理高电压信号的芯片,如高电压开关、高电压转换器等。
存储芯片
RAM
- SRAM:用于缓存
- DRAM,double DRAM,LPDDR,GDDR,HBM等:用于内存条
ROM
其实ROM变化还挺多的,逐渐变得可读可写了,要不然固件怎么升级呢?只不过主板厂商为了防止用户乱改,一般会把写保护打开。
- ROM,PROM,EPROM,EEPROM
- Flash ROM(闪存)NOR Flash,NAND Flash
- 目前UEFI/BIOS主流存储介质
- 手机/平板电脑等嵌入式设备的主流存储介质:UFS,eMMC
- 也是SSD的主要存储介质:NVMe SSD,SATA SSD
- 插在SATA接口上的SSD,速度较慢
- 插在M.2接口上的SSD,速度较快,但是协议不同,分为NVMe和SATA两种,前者速度更快,直接走PCIe总线
- U盘:USB闪存盘
- SD卡:SD,microSD等
- HDD:插在SATA上,走南桥芯片组;机械硬盘,所以需要有磁头和马达等机械结构,速度慢
- 文物
- 光盘:机械结构,CD,DVD,蓝光等;分为只读的和可读写的
- 磁带:机械结构,速度慢,主要用于备份和归档
- 软盘:机械结构,速度慢,已经淘汰了
制作系统和启动盘过程
TL;DR:
- windows:win11 ISO + 官方Media Creation Tool
- linux:ubuntu ISO + Rufus
技术细节
- 对于被安装的电脑,bios被主板厂商控制,基本只能升级,自己无法修改,但是可以修改启动项的,这一步没有修改bios程序,而是修改了bios的设置
- 电脑本身有一个启动项,也就是硬盘,
- 重装系统需要从另一个启动项启动,也就是U盘或者光盘等
- 旧的电脑使用BIOS,所以需要MBR分区表,新的电脑使用UEFI,所以需要GPT分区表
- 对于制作启动盘
- 根据1.3选择分区表,相当于给空白的书写上目录
- 还是因为bios的规则,首先读硬盘第一个扇区,也就是MBR,里面有一个分区表,告诉bios哪里是启动项;如果是UEFI,则bios会读取第二个扇区,也就是GPT,里面同样有一个分区表,一般是EFI分区,告诉bios哪里是启动项
- BIOS → 读MBR代码(446字节) → 代码加载活动分区引导扇区(bootloader加载内核) → 加载OS
- UEFI → 读GPT → 挂载EFI分区(FAT32)→ 直接执行.efi文件 → 加载OS
- 另一个要考虑的是文件系统,也就是书的内容组织方式,例如NTFS,FAT32,exFAT等
- grub以及windows boot manager等引导程序,负责加载内核和initramfs等文件就是bootloader
- 如果使用命令行替代Rufus
- Rufus干了什么?
- 选择分区表(MBR或GPT)
- 格式化U盘(FAT32或NTFS等)
- 将ISO文件中的内容写入U盘
- 设置引导标志,使U盘成为可启动设备,本来的ISO是为了光盘设计的
- 这些用命令行:
- 分区表:使用
parted或fdisk创建MBR或GPT分区表 - 格式化:使用
mkfs命令格式化分区 - 写入ISO:使用
dd命令将ISO文件写入U盘 - 设置引导标志:使用
parted或fdisk设置分区为活动分区(MBR)或创建EFI分区(GPT)
- 分区表:使用
- Rufus干了什么?
- 有真实的U盘,直接插上去会自动发现在/dev下,自动挂载,使用dd就可以复制ISO
- sudo dd if=./ubuntu.iso of=/dev/sdb bs=4M status=progress conv=fdatasync
- ISO已经包含了grub的引导程序,但如果自己做操作系统,需要自己安装grub,除了安装grub之外,还需要编译内核,以及制作initramfs,安装过程就是将grub的引导程序写入MBR或EFI分区,并配置grub.cfg文件,告诉grub如何加载内核和initramfs等
- 有真实的U盘,直接插上去会自动发现在/dev下,自动挂载,手工制作lunux系统
- sudo umount /dev/sdb*(相当于 Windows 的”安全弹出设备”)
- sudo parted /dev/sdb mklabel gpt,已经是相当于删除数据了
- sudo parted /dev/sdb mkpart primary fat32 1MiB 100%
- sudo parted /dev/sdb set 1 esp on
- sudo mkfs.fat -F32 /dev/sdb1,格式化,注意这里是sdb1,不是sdb,因为sdb是整个U盘,sdb1是第一个分区,插上就至少有一个分区
- 挂载并复制文件
- mkdir mnt
- sudo mount /dev/sdb1 mnt
- 复制kernel,initramfs,grub等文件到mnt
- 如果没有真实的U盘,可以使用一个文件来模拟U盘
- 创建一个大文件,例如1GB:
dd if=/dev/zero of=usb.img bs=1M count=1024 - 使用
losetup命令将文件关联到一个环回设备:sudo losetup /dev/loop0 usb.img - 然后对
/dev/loop0进行分区、格式化和复制文件,步骤与真实U盘类似 - 完成后,使用
sudo losetup -d /dev/loop0解除关联
- 创建一个大文件,例如1GB:
实际操作
- 在wsl中,Windows插入u盘,wsl无法识别,直接挂载也不适合对设备进行操作,需要在Linux机器上使用dd将iso直接放到u盘上
- 直接使用dd命令将iso文件写入u盘,会将u盘的分区表修改为iso9660,目前的笔记本需要关机再开机才能看到u盘,否则用重启的话,无法在bios的启动项中识别u盘
- 如果分步进行,将iso内容复制(不同于dd的操作),然后手动加boot loader(grub) ```sh
复制文件
sudo mount /dev/sda1 ubuntu_root sudo mount -o loop ubuntu.iso iso_mount sudo cp -r iso_mount/* ubuntu_root/
安装grub
sudo apt install grub-pc sudo grub-install –target=i386-pc –boot-directory=ubuntu_root/boot /dev/sda
这里会报错
### 笔记
1. 分区工具:fdisk,gdisk,parted
1. fdisk:既支持mbr,也支持gpt(新版本)
2. gdisk:只支持gpt
3. parted:既支持mbr,也支持gpt
2. 文件系统:NTFS,ext4,APFS,FAT32,exfat
1. NTFS:Windows系统默认的文件系统
2. ext4:Linux系统默认的文件系统
3. APFS:macOS系统默认的文件系统
4. FAT32:兼容性最好的文件系统,通用,启动盘最好用这个
5. exfat:没有4GB限制,U盘可以用这个
3. iso镜像
1. dd写入:分区和文件系统都不用管,直接写入,分区是gpt,文件系统是iso
2. cp -r,再自己安装grub
1. 使用mbr
2. 使用gpt
4. 内核加用户空间
1. 编译内核
2. 下载用户空间
1. 可以用Ubuntu Base,这个最简单
2. 也可以用debootstrap,就是再构建一下
### 开机
1. 装了系统之后,U盘的efi和系统被复制到了硬盘上,所以bios又回归到读取硬盘启动
2. 此时硬盘也是GPT分区表,bios读取GPT,挂载EFI分区,执行.efi文件,加载OS内核
3. OS内核被加载到内存中,开始执行,同时还有一些初始化工作,例如挂载根文件系统,启动init进程等,这些也占用一些内存
4. 剩下的操作系统文件和用户文件都存储在硬盘上,需要时从硬盘读取到内存中执行
### 参考:MBR vs GPT 详解
```text
MBR 硬盘空间
├── 扇区0: MBR (包含446字节代码 + 分区表)
├── (未使用空间,直到第一个分区开始)
├── 分区1 (例如C盘)
│ ├── **扇区X: 该分区的VBR (卷引导记录)** ← 这是核心!
│ ├── 文件系统元数据 (如NTFS的$Boot)
│ ├── 操作系统文件
│ └── 用户可用空间
├── 分区2 (例如D盘)
│ ├── **扇区Y: 该分区的VBR** (如果此分区也可启动)
│ ├── 文件系统元数据
│ └── 用户可用空间
└── ...
GPT 硬盘空间
├── 扇区0: **保护性MBR** (仅为了让老工具识别,防止其破坏GPT)
├── 扇区1: **GPT主头** (包含分区表位置、备份位置等关键信息)
├── 扇区2-33: **GPT主分区表** (最多128个分区条目,每个128字节)
├── (对齐空闲,通常从扇区34开始)
├── 分区1: **EFI系统分区** (ESP,必须第一个,FAT32格式)
│ ├── EFI/
│ │ ├── /Boot/bootx64.efi (默认启动文件)
│ │ ├── /Microsoft/Boot/ (Windows启动文件)
│ │ └── /ubuntu/ (Ubuntu的GRUB文件)
│ └── (其他UEFI应用和驱动)
├── 分区2: **MSR分区** (微软保留,16MB,Windows专用)
├── 分区3: **主分区 (例如C盘)**
│ ├── 文件系统元数据 (如NTFS的$Boot) ← 无传统VBR!
│ ├── 操作系统文件
│ └── 用户可用空间
├── 分区4: **其他数据分区 (例如D盘)**
│ ├── 文件系统元数据
│ └── 用户可用空间
├── (更多分区...)
├── (磁盘末尾预留空间)
├── **GPT备份分区表** (主分区表的完整拷贝)
└── 最后一个扇区: **GPT备份头** (用于灾难恢复)
