对于所有基于微控制器的嵌入式系统而言,存储器都是其中的主要元件。例如,开发人员需要足够的RAM以存储所有易失性变量、创建缓冲区以及管理各种应用堆栈。RAM对于嵌入式系统相当重要,同样,开发人员也需要一定空间用于存储应用代码、非易失性数据和配置信息。然而,问题在于非易失性存储器技术不断扩展,选择众多,使选择适合应用的存储器颇具挑战性。 本文对各种存储器技术进行了介绍,并以 ONSemiconductor、AdestoTechnologies、Renesas、ISSI、CypressSemiconductor、Advantech、GigaDeviceSemiconductor 和 S
原料:读卡器+EMMC芯片+PCB转接板原理:利用PCB将EMMC芯片接口转换为TF卡接口,EMMC芯片就可以当作TF卡来使用。如图:TF卡信号定义,这里需要用到的是SD协议。即:DATA0、DATA1、DATA2、DATA3、CMD、CLK、VDD、VSS这组信号。如图:EMMC引脚定义,EMMC芯片引脚有153个,其中用到的很少,下图彩色部分是用到的引脚。下面表格框起来的部分就是需要用到的信号,同时包括电源和地。 EMMC芯片的数据位是8位,这里只用到了DATA0、DATA1、DATA2、DATA3、CLK、CMD、电源、地,其它悬空即可。信号线上加了上拉电阻,不然有的读卡器不能识别。拆机
文章目录1.嵌入式Linux驱动开发基础知识的引导与说明1.1打算讲什么、怎么讲?1.2需要做什么准备工作1.嵌入式Linux驱动开发基础知识的引导与说明1.1打算讲什么、怎么讲?以几个简单的驱动程序,讲解嵌入式Linux驱动的框架,了解驱动开发的流程、方法,掌握从APP到驱动的调用流程。会涉及很多种开发板,让你明白“Linux驱动=软件框架+硬件操作”,让你“一通百通”,掌握了普适性的原理之后,在工作中很容易在其他板子使用这些知识。以LED驱动为例,会如下讲解:1.2需要做什么准备工作驱动程序依赖于Linux内核,你为开发板A开发驱动,那就先在Ubuntu中得到、配置、编译开发板A所使用的L
文章目录1.存储设备驱动程序分析1.1字符设备和块设备1.1.1APP与驱动程序的交互1.字符设备驱动程序2.块设备驱动程序教1.1.2驱动程序结构体1.1.3注册函数1.字符设备驱动程序注册函数2.块设备驱动程序注册函数1.2MTD设备1.3块设备驱动程序为MTD开了一个后门1.4怎么用内存模拟Flash1.4.1指定要使用的内存地址、大小1.4.2实现MtdDev结构体1.4.3怎么使用块设备2.使用内存模拟Flash2.1最终结果2.2原来的内存映射2.3在内存里挖出一块用来模拟FlashPs:这个鸿蒙系列是韦东山老师录制的视频和开发手册为基础,请大家支持韦老师。这个专栏是:1.学习的笔
文章目录Liteos-a编译系统分析1.1怎么编译子目录1.2编译哪些子目录1.2.1从链接命令看内核的组成1.2.2从Makefile开始分析1.3顶层Makefile分析1.3.1Makfile中常用变量1.3.2包含的文件1.STM32MP1572.IMX6ULL3.展开Makefile1.3.3分析make过程1.第1个目标2.目标:OUT3.目标:BUILD4.目标:LITEOS_TARGET1.4核心总结1.4.1生成内核的过程1.4.2增加模块Ps:这个鸿蒙系列是韦东山老师录制的视频和开发手册为基础,请大家支持韦老师。这个专栏是:1.学习的笔记记录。2.整理和知识点汇总。3.个人
文章目录1.PC和开发板之间传输文件1.1传输文件的多种方法1.2通过USB给开发板传文件1.3安装网络服务1.3.1在Ubuntu中安装、配置NFS1.3.2Ubuntu安装TFTP服务1.3.3在Windows安装TFTP服务1.4使用网络服务传输文件1.4.1开发板挂载Ubuntu的NFS目录1.4.2开发板通过tftp传输Ubuntu文件1.4.2.1在开发板上使用tftp命令下载文件1.4.2.2在开发板上使用tftp命令上传文件1.4.3在Windows上通过FileZilla和开发板传输文件1.4.3.1确保Windows和开发板之间网络联通1.4.3.2启动FileZilla连
文章目录1.I2C应用编程1.1I2C视频介绍1.1.1I2C硬件框架1.1.2I2C软件框架1.1.3我们讲什么1.2I2C协议1.2.1硬件连接1.2.2传输数据类比1.2.3IIC传输数据的格式==1写操作====2读操作====3.I2C信号====4.协议细节==1.3SMBus协议1.3.1SMBus是I2C协议的一个子集1.3.2SMBus协议分析SMBusQuickCommandSMBusReceiveByteSMBusSendByteSMBusReadByteSMBusReadWordSMBusWriteByteSMBusWriteWordSMBusBlockReadSMBu
文章目录添加一个单板1.1配置界面里添加单板1.2添加源码1.3Makefile中根据配置项修改1.4能否编译通过1.5解决链接错误1.6内核启动流程1.6.1启动文件分析1.6.2main函数分析1.6.3OsMain函数分析1.6.4SystemInit函数分析添加一个单板按照编译内核的流程,添加代码。补丁文件openharmony_100ask_v1.2.patch,已经添加了2个单板:STM32MP157、IMX6ULL。目标:仿照它们,添加一个新的单板,以后修改源码让它再次支持STM32MP157或IMX6ULL。新加的单板:芯片公司:DemoCom芯片名称:DemoChip本章节做
文章目录1.ARM架构内存映射简介1.1.1页表项1.1.2一级页表映射过程1.1.3二级页表映射过程1.1.4cache和buffer2.内存映射代码分析3.内存映射编程_IMX6ULL3.1最终结果3.2现场编程3.2.1内存地址范围3.2.2设备地址范围Ps:这个鸿蒙系列是韦东山老师录制的视频和开发手册为基础,请大家支持韦老师。这个专栏是:1.学习的笔记记录。2.整理和知识点汇总。3.个人做的项目经验汇总。1.ARM架构内存映射简介参考资料:DEN0013D_cortex_a_series_PG.pdf。1.1.1页表项ARM架构支持一级页表映射,也就是说MMU根据CPU发来的虚拟地址可
文章目录1.1面向对象1.2分层1.3分离8.4写示例代码1.5课后作业1.1面向对象字符设备驱动程序抽象出一个file_operations结构体;我们写的程序针对硬件部分抽象出led_operations结构体。1.2分层上下分层,比如我们前面写的LED驱动程序就分为2层:①上层实现硬件无关的操作,比如注册字符设备驱动:leddrv.c②下层实现硬件相关的操作,比如board_A.c实现单板A的LED操作1.3分离还能不能改进?分离。在board_A.c中,实现了一个led_operations,为LED引脚实现了初始化函数、控制函数:staticstructled_operationsb