芯片到底是怎么访问外设

微型计算机的组成:CPU+RAM+硬盘等

什么是FLASH?

FLASH存储器又称闪存,它结合了ROM和RAM的长处,不仅具备电子可擦除可编程(EEPROM)的性能,还不会断电丢失数据同时可以快速读取数据(NVRAM的优势),U盘和MP3里用的就是这种存储器。在过去的20年里,嵌入式系统一直使用ROM(EPROM)作为它们的存储设备,然而近年来Flash全面代替了ROM(EPROM)在嵌入式系统中的地位,用作存储Bootloader以及操作系统或者程序代码或者直接当硬盘使用(U盘)。

目前Flash主要有两种NOR Flash和NADN Flash。

CPU执行SPI上的程序,第一个程序和第一条指令在哪里?

硬件知识LED原理图:

1.确定引脚; 2. 看主芯片的芯片手册,确定如何设置/控制引脚; 2.写程序。

原理:

如果引脚驱动能力不足,引入三极管。

方法一、

方法二、

所以我么一般控制主芯片引脚输出高电平是还低电平。就可以改变LED状态:

我们不关心GPIO引脚输出的电压是3.3V还是0V。只关心输出的是1还是0。

三极管原理:

什么时候导通? p > N

编程:

1.引脚的模式选择 PIN mode;

2.模块的使能enable;

3.方向:输入功能还是输出功能;

4.数据:高电平还是低电平。

写寄存器一种低效的方法:

方法一:

因为他需要三个步骤。

方法二:

所以有些处理器引入了设置寄存器和清楚寄存器。

直接让它为去为某一个值。

如:

同理:清楚寄存器也还是同样的操作方法。(置1即可)

编程:

1.

Bit3 设置为 1,并且不能影响到其他的位。

2.GPIOB 方向输出:


数据输出:

电阻的功能:防止电流过大,烧毁LED。

CPU一上电:之后就进入Reset Hander:

在ARM看来,内存和IO的操作是一样的:

精简指令集:

相关推荐
VekiSon2 小时前
Linux内核驱动——杂项设备驱动与内核模块编译
linux·c语言·arm开发·嵌入式硬件
AI+程序员在路上2 小时前
Nand Flash与EMMC区别及ARM开发板中的应用对比
arm开发
17(无规则自律)8 小时前
深入浅出 Linux 内核模块,写一个内核版的 Hello World
linux·arm开发·嵌入式硬件
梁洪飞21 小时前
内核的schedule和SMP多核处理器启动协议
linux·arm开发·嵌入式硬件·arm
代码游侠1 天前
学习笔记——Linux字符设备驱动
linux·运维·arm开发·嵌入式硬件·学习·架构
syseptember2 天前
Linux网络基础
linux·网络·arm开发
代码游侠2 天前
学习笔记——Linux字符设备驱动开发
linux·arm开发·驱动开发·单片机·嵌入式硬件·学习·算法
程序猿阿伟2 天前
《Apple Silicon与Windows on ARM:引擎原生构建与模拟层底层运作深度解析》
arm开发·windows
wkm9562 天前
在arm64 ubuntu系统安装Qt后编译时找不到Qt3DExtras头文件
开发语言·arm开发·qt
unicrom_深圳市由你创科技2 天前
基于ARM+DSP+FPGA异构计算架构的高速ADC采集卡定制方案
arm开发·fpga开发