山寨机的时代,很多年轻的朋友可能比较陌生,手机上会安装一个SD卡,做存储扩展;目前的智能手机会在PCB板上焊接一个EMMC芯片,做大容量数据存储,安全性好了很多,手机丢了也不用担心照片或者资料泄露的问题;
1、EMMC特性
-符合JEDEC/MMC标准版本5.0
-高级12信号接口
-x1、x4和x8I/O,可由主机选择
-SDR/DDR模式,可达52MHz时钟速度
-HS200/HS400模式
-命令类:class 0 (basic); class 2 (blockread); class 4 (block write); class 5 (erase);class 6 (write protection); class 7 (lock card)
关注微信公众号,回复“EMMC资料”,免费下载芯片手册资料包。
2、框图,MMC控制器和NAND存储;
3、MMC型号参数,对应选型表
4、引脚描述
标注底纹的部分引脚为有效引脚,其他引脚悬空;
看到以上的,引脚介绍是不是感觉和SD卡很相似;对了,包括控制命令类都和SD卡一样,就当成是一个SD卡操作就OK了;
5、功能框图
主要搞定以上寄存器即可。
6、硬件接线图参考:8线数据传输,速率快;
7、设备树
mmc0: mmc@f0000000 {
u-boot,dm-pre-reloc;
pinctrl-0 = <&pinctrl_mmc0_clk_cmd_dat0 &pinctrl_mmc0_dat1_3
&pinctrl_mmc0_dat4_7 &pinctrl_mmc0_cd>;//IO管脚定义,具体要参考硬件原理图
vmmc-supply = <&vcc_mmc0_reg>; //使用的控制器
vqmmc-supply = <&vcc_3v3_reg>;
status = “okay”;
slot@0 {
reg = <0>;
bus-width = <8>; //数据线位数,一定要正确
cd-gpios = <&pioE 0 GPIO_ACTIVE_LOW>; //
};
};
8、使用总结
EMMC芯片,使用过三星的芯片,还有一些国产的EMMC,都有一个共同的特点,就是型号更新特别快,过了几个月发现没有上一批次的芯片了,已经不生产了;在这里提醒各位,如果使用了EMMC做产品,最好多备货一些,或者选型对比参数上面找替换性更好的厂家及型号。
关键字:linux 底层 u-boot
引用地址:
[linux 底层]u-boot EMMC驱动
推荐阅读最新更新时间:2024-11-12 11:40
linux 2.6.22.6 移植
板子是国嵌的 GQ2440 主要移植步骤参考 韦东山老师的《嵌入式linux应用开发完全手册》 1、下载内核,打补丁 2、是用config_ok 配置内核 3、在 include/asm-arm/mach-types.h 中修改 MACH_TYPE_S3C2440 的值为 1999 因为MACH_TYPE_S3C2440 对应的机器结构在 arch/arm/mach-s3c2440/mach-smdk2440.c 中定义 所以 要把这个文件编译进内核,所以配置中有:System Type - s3c2440 Machines - SMDK2440 4、在arch/arm/mach-s3c2440/mach-smdk2440.c
[单片机]
u-boot之NAND启动与NOR启动的区别
nand启动与nor启动的区别主要分为以下几部分说明: 1、nand flash与nor flash的最主要区别 2、s3c2440的nand启动与nor启动原理 3、nand启动与nor启动的时候uboot做了什么 1、在JZ2440开发板上有两种Flash,分别为nand flash和nor flash。这两种flash的最主要的区别为:nor flash比较稳定,存在里面的数据不易丢失,但是容量小,nor flash在读的时候可以像内存一样操作;nand flash容量大,但是存在位反转,会导致数据丢失,读写需要通过一定的时序。所以一般nor flash里面存放的uboot代码,而nand flash里面存放的是占用容量
[单片机]
Arm linux内核构建关于.config的问题
首先下载内核的源代码。 然后tar -xvf 解压。 我们这里使用arch/arm/configs/xxx_defconfig默认的配置文件。 使用如下命令。make ARCH=arm xxx_defconfig 然后使用make menuconfig 这里可以根据需要更改配置。(如果不make menuconfig一下的话。有时候会提示Kconfig restart 类似的东西。让你手动去选择配置选项) 然后使用 make ARCH=arm CROSS_COMPILE=arm-linux-就可以开始编译了。 同样也可以不用make ARCH=arm CROSS_COMPILE=arm-linu
[单片机]
STM32G0实战—底层驱动
首先,我们讨论下HAL与LL之间的差异。HAL是硬件抽象层,它提供顶层API,这使之具备高度可移植性,并隐藏了复杂性。 LL提供以下服务: 一组静态内联函数,用于直接访问寄存器,单次操作,可以被HAL驱动程序或从应用层使用,独立于HAL且可以被单独使用,涵盖所支持外设特性的全部驱动。不过,从另一方面将,LL API在STM32系列之间并非完全兼容或可移植,因此一些微控制器的功能可用性取决于产品的实际物理特性,它虽然覆盖了大多数STM32外设,但不是全部,在代码合规性方面与HAL相同,这是就MISRA-C和ANSIC而言。在STM32CubeMX中可以使用底层驱动程序,这意味着用户可以选择使用HAL或LL/底层驱动程序。 S
[单片机]
谷歌做手机芯片的底层逻辑
去年,谷歌首席执行官桑达尔·皮查伊(Sundar Pichai)发表声明说,公司将在硬件方面投入大量资金,并为2021年制定完善的路线图。这引发了一系列猜测,因为按照技术专家预测,谷歌将涉足SoC领域,并不断发展自己的芯片,用于未来的Pixel和Chromebook。 现在,根据最近的泄漏,该芯片正在开发中,并将在今年晚些时候面世的Pixel 6智能手机和另一台设备上首次亮相。 据报道,这款代号为Whitechapel的5纳米工艺芯片将为下一代Pixel手机提供动能。它在内部被称为GS101 – Google Silicon芯片。这款先进的芯片将通过TPU(张量处理单元)进行三集群设置,给智能手机带来更强的机器学习能力,从
[半导体设计/制造]
Linux 3.11操作系统支持更多ARM处理器
随着ARM处理器的盛行,Linux系统内核也在逐步加大对ARM处理器的支持力度,Linux 3.11版本中除了Xen、KVM虚拟化将支持64-bit ARM平台之外,还有其它不少细节上的完善。 Linux 3.11操作系统将正式支持瑞芯微RK3xxx系列,包括最新的RK3168、RK3188等等,国产的ARM芯片正在得到越来越广泛的关注。 德州仪器基于Cortex-A15架构的KeyStone系列也已经进入支持列表。 PCI总线方面,开发人员正在尝试使其不再与特定的SoC代码相关联,而是让ARM PCI主控制器驱动直接成为可载入的内核模块。 此外还有其它大量关于ARM平台驱动、跨平台的相关支持,都在陆续添加中
[手机便携]
avast:中兴手机预装恶意软件 嵌入固件底层
著名安全机构avast发布报告称,旗下安全威胁实验室发现,中兴、爱可视、MyPhone等厂商的多款安卓手机居然预装了恶意广告软件。 该恶意软件被命名为“Cosiloon”,它会在用户使用浏览器上网的时候,在网页上方覆盖显示一个广告。 avast称这个恶意软件已经悄然存在了至少三年之久,而且预装在手机的固件层面,对于普通用户来说几乎不可能将其完全清除。 avast观察到,由于这些手机都未经过Google认证,已经导致数千用户中招,尤其是最近几个月,已经发现大约1.8万部手机存在此恶意软件,而且遍布100多个国家和地区,重灾区有俄罗斯、意大利、德国、英国和美国等。 avast已经将此报告给Google,后者
[手机便携]
Linux内核模块驱动之---led驱动
开发板:tiny6410 内核:linux2.6.38 要写led驱动首先要复习的是混杂设备驱动的设计流程、 内核file_ops结构体、硬件通信IO端口和IO内存、 ioctl系统调用的实现步骤和方法 按照顺序来对已经学习的内容复习 并把led模块驱动写出来 第一步:复习ioctl系统调用函数 一、什么是ioctl系统调用函数,驱动中的iodtl函数是什么样子的?为什么需要ioctl函数?》 虽然file_ops结构体提供了相当多的文件操作函数,但是要想对硬件操作,这个file_ops结构体无法完成了,所以操作系统又提供了另一个对硬件操作的函数,就是ioctl,ioctl分为在应用层 和 在驱动层。ioc
[单片机]