0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

RK3568笔记分享——如何挂载SPI FRAM铁电存储芯片

飞凌嵌入式 2023-09-22 08:01 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

对于做快速存储采集数据类产品的用户来说,在处理突发掉电情况时需要保存现有数据并避免数据丢失,这种情况下有很多种解决方案,铁电存储器(FRAM) 就是个很好的选择。FRAM是一种具有快速写入速度的非易失性存储器,既可以进行非易失性数据存储,又可以像RAM一样操作。

本文将借助飞凌嵌入式OK3568-C开发板来为大家介绍一种采用FRAM的方案——使用SPI0挂载PB85RS2MC (FRAM) 芯片。本文所描述的驱动文件和应用文件,可联系飞凌嵌入式的技术支持获取。

wKgaomUNLLWAGEVUAAswXLOa2P8057.png

修改思路——

我们要添加一个SPI设备,需要进行如下操作:在设备树中添加描述→设备树描述中对应设备驱动→设备驱动添加到内核。

修改结果——

修改 OK3568-linux-source/kernel/arch/arm64/boot/dts/rockchip/OK3568-C-common.dtsi

修改如下:

wKgZomUNLLSANdvaAABPzdVFgIY691.png

接下来笔者为大家介绍一下适配的过程。

1驱动程序

我们在menuconfig中搜索fm25、pb85等比较常用的FRAM字眼,发现并没有类似的驱动程序,这时就需要手写或者移植一个驱动程序。在搜遍各大网站之后找到了一个W25Q64的驱动,对比了一下PB85RS2MC的各种操作码以后,发现两者的操作码大差不差,因此就决定将W25Q64的驱动移植过来。根据PB85RS2MC芯片手册中叙述,各种操作码为:

wKgaomUNLLSALoEvAABtDv-Auc8420.pngwKgaomUNLLSAZXBHAACtEB3NdO8457.png

因此,在驱动程序中宏定义以下操作码,以便在接下来的驱动程序中使用:

wKgaomUNLLSAEDX6AABfbutbbhc581.png

首先要在驱动程序中进行初始化函数和退出函数,也就是spidev_init和spidev_exit,init函数里就是进行字符设备的初始化,注册等的操作,exit函数就是要把我们注册的东西在退出时都释放掉,再者就是驱动程序和设备树匹配,匹配是通过compatible属性值匹配的,这里我们一定要和设备树中的compatible属性值一致,否则会匹配不成功。驱动程序中.compatible值如下图所示。

wKgZomUNLLSADSg2AAAn3A8N7PU443.png

驱动和设备树匹配成功以后就要执行probe函数,这里probe函数执行了一些初始化和注册主次设备号的操作。我们可以通过是否打印spi_probesuccess!来判断驱动程序,是否和设备树匹配成功。

wKgaomUNLLWAE5y9AAEy-kKXQ6A161.png

从PB85RS2MC芯片手册中看读的条件,读取FRAM存储单元的数据,需要READ的操作码,任意24位地址输入到SI。第一个spi_transfer 结构体用于发送命令cmd 到SPI设备,在读取数据之前准备设备,第二个是发送地址到SPI设备,第三个是接收从设备读取的数据。

wKgZomUNLLWAW-zNAAEMDpORhwQ830.png

这段代码实现了从 SPI设备中同步读取数据,并将数据复制到用户空间的功能。

wKgZomUNLLWAdGWzAADO54z3BBY537.png

从PB85RS2MC芯片手册中看写的条件,WREN命令用于设置写使能锁存器。需要在写操作(WRITE命令)之前使用WREN命令设置写使能锁存器,WRITE命令将数据写入 FRAM存储单元阵列。WRITE操作码、任意24位地址和8位写入数据输入到 SI。

下面这段代码实现了向SPI设备发送写入使能命令的功能。

wKgZomUNLLaAZW4qAACHMMXcNdA300.png

这段代码实现了向SPI设备同步写入数据的功能。它先发送写入使能命令,然后发送地址信息和数据。

wKgZomUNLLaAV59NAAEcFHGFPcA629.png

下面这段代码向 SPI设备中同步写入数据的功能,将用户空间的数据复制到设备的发送缓冲区,并调用spidev_sync_write 函数将数据写入SPI 设备。

wKgaomUNLLWAKSgqAAC3OevAyvI947.png

2应用程序

向SPI设备写数据,调用lseek来改变写入数据的位置,这样就可以在整个SPI设备里写数据,如./writeframAPP /dev/pb85rs 0 forlinx

0是要写入的地址,forlinx是要写入的内容)。

wKgZomUNLLWAH16AAABAno9ueFo543.png

从SPI设备读数据,调用lseek来改变读取数据的位置,这样就可以在整个SPI设备里读数据,如./readframAPP /dev/pb85rs 0

0是要读取数据的地址)

wKgaomUNLLWAYI3SAACa-WUUmYY162.png

3实际测试

(1)首先将fram.ko,readframAPP, writefram APP拷贝到OK3568-C开发板的任意文件夹中。

wKgZomUNLLaAFlqKAAAHj-gd_2M770.png

(2)用insmod加载fram.ko模块,出现spi_probesuccess!说明驱动和设备树匹配成功。

wKgaomUNLLaAO9AAAAAQhaNT3o0389.png

(3)在/dev/下看有没有pb85rs设备。

wKgZomUNLLaAPZrEAABAHQ86q0g442.png

(4)使用./writeframAPP /dev/pb85rs 1500 forlinx

向设备写数据,1500是地址,forlinx是要写入的内容。

wKgaomUNLLaAaw_yAAAHhKDczY0550.png

(5)使用./readframAPP /dev/pb85rs 1500

1500是要读取数据的地址)

wKgaomUNLLaARx76AAAH51tqjbc199.png

4断电测试

断电一天后重新读取PB85RS2MC的数据,发现数据仍然存在。验证了PB85RS2MC铁电存储芯片的断电数据保留特性。

wKgaomUNLLaARky6AAAH3EAxK3A543.png

至此,我们就完成了在OK3568-C开发板上添加一个新的SPI铁电存储芯片的操作!

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 芯片
    +关注

    关注

    463

    文章

    54463

    浏览量

    469547
  • SPI
    SPI
    +关注

    关注

    17

    文章

    1900

    浏览量

    102168
  • 嵌入式开发
    +关注

    关注

    18

    文章

    1176

    浏览量

    50235
  • fram
    +关注

    关注

    2

    文章

    293

    浏览量

    81150
  • RK3568
    +关注

    关注

    5

    文章

    655

    浏览量

    8125
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    深入解析RK3568引脚控制核心:rk3568-pinctrl.dtsi文件的作用与实践(可应用rk全系列)

    在嵌入式 Linux 开发中,设备树(Device Tree) 是连接硬件与软件的关键桥梁,而针对 Rockchip RK3568 芯片rk3568-pinctrl.dtsi文件,更是掌控
    的头像 发表于 02-05 14:01 1062次阅读
    深入解析<b class='flag-5'>RK3568</b>引脚控制核心:<b class='flag-5'>rk3568</b>-pinctrl.dtsi文件的作用与实践(可应用<b class='flag-5'>rk</b>全系列)

    RK3568 Android11编译环境搭建及报错解决指南

    在嵌入式开发领域,RK3568 芯片凭借其出色的性能被广泛应用。基于 RK3568 进行 Android11 系统的开发,首先要搭建好编译环境。本文将详细介绍在 Ubuntu20.04 系统上搭建
    的头像 发表于 02-04 17:37 2144次阅读
    <b class='flag-5'>RK3568</b> Android11编译环境搭建及报错解决指南

    迅为RK3576对比RK3568:AI算力与接口的全面跃迁

    迅为RK3576对比RK3568:AI算力与接口的全面跃迁
    的头像 发表于 12-22 15:24 2493次阅读
    迅为<b class='flag-5'>RK</b>3576对比<b class='flag-5'>RK3568</b>:AI算力与接口的全面跃迁

    【迅为工业RK3568稳定可靠】itop-3568开发板Linux驱动开发实战:RK3568内核模块符号导出详解

    【迅为工业RK3568稳定可靠】itop-3568开发板Linux驱动开发实战:RK3568内核模块符号导出详解
    的头像 发表于 11-21 13:25 1676次阅读
    【迅为工业<b class='flag-5'>RK3568</b>稳定可靠】itop-<b class='flag-5'>3568</b>开发板Linux驱动开发实战:<b class='flag-5'>RK3568</b>内核模块符号导出详解

    【作品合集】合众HZ-RK3568开发板测评

    合众HZ-RK3568开发板测评作品合集 产品介绍: HZ-EVM-RK3568开发板采用核心板+底板组合形式设计,两者通过四个80PIN稳定可靠的板对板连接器连接,扩展RK3568全部资源接口功能
    发表于 09-10 10:22

    迅为RK3568开发板模型推理测试实战LPRNet 车牌识别

    迅为RK3568开发板模型推理测试实战LPRNet 车牌识别
    的头像 发表于 08-25 14:55 1579次阅读
    迅为<b class='flag-5'>RK3568</b>开发板模型推理测试实战LPRNet 车牌识别

    【HZ-RK3568开发板免费体验】HZ-RK3568开发板操作系统编译

    开发环境搭建好了后,接下来就是HZ-RK3568开发板操作系统编译工作。 一、menuconfig 先确保虚拟机的开发环境OK。 sudo apt install build-essential
    发表于 08-17 09:15

    rk3568快速开机 快速启动实现

    想了解下rk官方目前对rk3568快速开机的实现有哪些,是否有成熟的方案。在官方文档上看到rv1126方案,不知道可否应用在rk3568上。有专业人士回答吗
    发表于 08-07 08:37

    迅为RK3568 重制版RK3568驱动指南全面升级

    迅为RK3568 重制版RK3568驱动指南全面升级
    的头像 发表于 07-28 15:25 3659次阅读
    迅为<b class='flag-5'>RK3568</b> 重制版<b class='flag-5'>RK3568</b>驱动指南全面升级

    【HZ-RK3568开发板免费体验】合众HZ-RK3568开发板初次使用

    、HDMI接口 ⑤、4G与Debug Type-C接口、NVMe接口 ⑥、RK3568核心模块部分 至于底板提供的两路CAN接口,以及背面提供的MIPI-CS1接口,适配OV13850摄像头,这里就不
    发表于 07-27 23:52

    RK3568 EVB开发板 深度休眠与快速醒的工作流程

    RK3568 EVB开发板关于深度休眠和唤醒流程的分析
    的头像 发表于 07-22 09:49 1085次阅读
    <b class='flag-5'>RK3568</b> EVB开发板 深度休眠与快速醒的工作流程

    【HZ-RK3568开发板免费体验】1、开发板资源、SDK使用和镜像烧写

    的网络模型。 RK3568 具有高性能的DDR4,能够提供高性能场景下所需的内存带宽。 通过查看开发板的芯片型号,可知开发板板载1GB DDR4内存和8GB EMMC存储,开发板使用12V电源供电
    发表于 07-21 20:52

    【HZ-RK3568开发板免费体验】合众HZ-RK3568开发板测评

    5499.034MB/s、1531.39MB/s。 读写速度还是可以的。 2.eMMC读写测试 HZ-RK3568使用佰维存储的eMMC,读写速度测试命令如下: 读取测试: # time dd
    发表于 07-14 22:24

    【HZ-RK3568开发板免费体验】HZ-RK3568开发板初步接触

    首先感谢合众恒跃与发烧友论坛提供的机会! 一、开箱 首先是一个大盒子,上面赫然“工业领域嵌入式产品专家”! 打开后,一块很大的黑色PCB。 开发板由底板和核心板组成,核心板基于瑞芯微RK3568
    发表于 07-10 23:19

    Rockchip RK3568技术参考手册

    电子发烧友网站提供《Rockchip RK3568技术参考手册.pdf》资料免费下载
    发表于 05-17 17:24 57次下载