am335x system upgrade kernel f-ram fm25l16b(十六)
1 Scope of Document
This document describes SPI F-RAM hardware design
2 Requiremen
2.1 Function Requirement
support spi f-ram fm25l16b in linux
2.2 Performance Requirement
NA
3 Hardware Overview
standard spi interface, four line cs sck mosi miso;
4 Functional Description
4.1 Functional Block Diagram
4.2 SPI F-RAM
4.2.1 Overview
advantage:
1) High-endurance 100 trillion (1014) read/writes.
2) Very fast serial peripheral interface
5 Porting
5.1 3.2.0 Kernel porting
Device Drivers --->
[*] Misc devices --->
EEPROM support --->
<*> SPI EEPROMs from most vendors
Register platform source:
static struct spi_eeprom fram = {
.byte_len = SZ_16K / 8,
.name = "fm25l16b",
.page_size = 256,
.flags = EE_ADDR2,
};
static struct spi_board_info am335x_spi0_slave_info[] = {
{
.modalias = "at25",
.platform_data = &fram,
.max_speed_hz = 2 * 1000 * 1000,
.bus_num = 1,
.chip_select = 0,
.irq = -1,
.mode = SPI_MODE_0,
},
};
/* setup spi0 */
static void spi0_init(int evm_id, int profile)
{
setup_pin_mux(spi0_pin_mux);
spi_register_board_info(am335x_spi0_slave_info,
ARRAY_SIZE(am335x_spi0_slave_info));
return;
}
Kernel log:
at25_proble
at25 spi1.0: 2 KByte fm25l16b eeprom, pagesize 256
Device access interface:
/sys/bus/spi/devices/spi1.0/eeprom
5.2 4.14.40 Kernel porting
Add in kernel configure option
Device Drivers --->
[*] Misc devices --->
EEPROM support --->
<*> SPI EEPROMs from most vendors
Change the dts file for support F-RAM
spi0_pins: pinmux_spi0 {
pinctrl-single,pins = <
AM33XX_IOPAD(0x950, PIN_INPUT_PULLUP | MUX_MODE0) /* spi0_sclk.spi0_sclk */
AM33XX_IOPAD(0x95C, PIN_INPUT_PULLUP | MUX_MODE0) /* spi0_cs0.spi0_cs0 */
AM33XX_IOPAD(0x954, PIN_INPUT_PULLUP | MUX_MODE0) /* spi0_d0.spi0_d0 */
AM33XX_IOPAD(0x958, PIN_INPUT_PULLUP | MUX_MODE0) /* spi0_d1.spi0_d1 */
>;
};
};
&spi0 {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&spi0_pins>;
fram@0 {
reg = <0x0>;
compatible = "atmel,at25", "cypress,fm25l16b";
spi-max-frequency = <2000000>;
pagesize = <256>;
size = <2048>;
address-width = <16>;
};
};
Kernel log:
[ 1.107399] at25 spi0.0: 2 KByte at25 eeprom, pagesize 256
Device access interface:
/sys/bus/nvmem/devices/spi0.00/nvmem
Note: in kernel 4.14.40 spi eeprom driver was register under nvmem framwork, so the device access interface different from 3.2.0 device interface.
6 Test Method
read/write test code in 3.2.0
int main ( int argc, char** argv )
{
int ret, fd, i, j;
char read_data[256];
char write_data[256];
char offset;
fd = open ( "/sys/bus/spi/devices/spi1.0/eeprom", O_RDWR );
if ( fd < 0 ) {
perror ( "Open at24c08 fail\n" );
return -1;
}
for ( i = 0; i < 256; i++ )
write_data[i] = i;
lseek ( fd, 0 , SEEK_SET );
ret = write ( fd, write_data, 256 );
if ( ret < 0 ) {
printf ( "Write error\n" );
return -1;
}
lseek ( fd, 0 , SEEK_SET );
ret = read ( fd, read_data, 256 );
if ( ret < 0 ) {
printf ( "Read error\n" );
return -1;
} else if ( ret < 256 ) {
perror ( "Incomplete read\n" );
printf ( "%d\n", ret );
return -1;
}
for ( i = 0; i < 256; i++ ) {
if ( i % 16 == 0 )
printf ( "\n" );
printf ( " %03d ", read_data[i] );
}
printf ( "\n" );
}
Using hexdump tool, read spi f-ram data
# hexdump -C /sys/bus/spi/devices/spi1.0/eeprom
00000000 08 74 65 73 74 5f 70 70 70 00 00 00 00 00 00 00 |.test_ppp.......|
00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00000800
read/write test methon in 4.14.40
root@IoTP:/sys/bus/nvmem/devices/spi0.00# echo "./test_123" > nvmem
root@IoTP:/sys/bus/nvmem/devices/spi0.00# hexdump -C nvmem
00000000 2e 2f 74 65 73 74 5f 31 32 33 0a 00 00 00 00 00 |./test_123......|
00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00000800
am335x system upgrade kernel f-ram fm25l16b(十六)的更多相关文章
- am335x system upgrade kernel usb stroage(十)
1 Scope of Document This document describes USB hardware design, support stardard usb2.0 port o ...
- am335x system upgrade kernel emmc(十八)
1 Scope of Document This document describes EMMC hardware design 2 Requiremen 2.1 Func ...
- am335x system upgrade kernel tf(五)
1 Scope of Document This document describes TF hardware design 2 Requiremen 2.1 Functi ...
- am335x system upgrade kernel ethernet(四)
1 Scope of Document This document describes ethernet hardware design and porting KZS8081 to ubo ...
- am335x system upgrade kernel gpio(九)
1 Hardware Overview gpio interface,pin map: AM335X_I2C0_W_C----------------------MCASP0_AXR1 /* ...
- am335x system upgrade kernel can(八)
1 Scope of Document This document describes can bus hardware design and can bus driver developm ...
- am335x system upgrade kernel uart(七)
1 Scope of Document This document describes UART hardware design, uart driver porting 2 Re ...
- am335x system upgrade kernel i2c rtc eeprom(六)
1 Scope of Document This document describes i2c bus hardware design and support i2c-devices: ee ...
- am335x system upgrade kernel ec20 simcom7600ce(十一)
1 Scope of Document This document describes 4G hardware design, support quectel ec20 4G module/ ...
随机推荐
- kubernetes 实践二:kubectl命令使用
这里记录kubernetes学习和使用过程中的内容. CentOS7 k8s-1.13 flanneld-0.10 docker-18.06 etcd-3.3 kubectl用法概述 kubectl是 ...
- SpringCloud之Ribbon负载均衡及Feign消费者调用服务
目的: 微服务调用Ribbon Ribbon负载均衡 Feign简介及应用 微服务调用Ribbon Ribbon简介 1. 负载均衡框架,支持可插拔式的负载均衡规则 2. 支持多种协议,如HTTP.U ...
- mysql数据库备份之主从同步配置
主从同步意义? 主从同步使得数据可以从一个数据库服务器复制到其他服务器上,在复制数据时,一个服务器充当主服务器(master),其余的服务器充当从服务器(slave).因为复制是异步进行的,所以从服务 ...
- 把时间戳转换为 datatime 格式
使用time timeStamp = 1381419600 timeArray = time.localtime(timeStamp) otherStyleTime = time.strftime(& ...
- centos下安装nginx(转载)
http://blog.csdn.net/u010246789/article/details/51501710 有声明,不能转载,所以,就把地址弄了过来
- Linux 内核/驱动开发总结
总体来看,需要一个阶段性总结了,因为现在SD卡的调试也进入了卡壳期.大概会出一系列的总结文章,主要涉及的主题在下面列出: 1.开发工具:gcc/gdb/vim/ctags 2.Makefile和KCo ...
- AOP初识
AOP是Aspect Oriented Programing的简称,面向切面编程.AOP适合于那些具有横切逻辑的应用:如性能监测,访问控制,事务管理.缓存.对象池管理以及日志记录.AOP将这些分散在各 ...
- Linux记录history命令
对后面的(1)方法的提取文件改写法(强烈推荐) 记录存储位置: mkdir -p /usr/local/records chmod 777 /usr/local/records/chmod +t /u ...
- MySQL Innodb--共享临时表空间和临时文件
在MySQL 5.7版本中引入Online DDL特性和共享临时表空间特性,临时数据主要存放形式为: 1.DML命令执行过程中文件排序(file sore)操作生成的临时文件,存储目录由参数tmpdi ...
- Spring Boot 笔记 (1) - Maven、基本配置、Profile的使用
一. Spring Boot 简介 开箱即用的一站式 Java EE 解决方案 Spring 技术栈的大整合 核心问题 暂时无法回答 Spring Boot 和 SOA 有什么区别? Spring B ...