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/ ...
随机推荐
- 【LEETCODE】51、数组分类,简单级别,题目:581,830,1010,665
package y2019.Algorithm.array; /** * @ClassName FindUnsortedSubarray * @Description TODO 581. Shorte ...
- 有助于改善性能的Java代码技巧
前言 程序的性能受到代码质量的直接影响.这次主要介绍一些代码编写的小技巧和惯例.虽然看起来有些是微不足道的编程技巧,却可能为系统性能带来成倍的提升,因此还是值得关注的. 慎用异常 在Java开发中,经 ...
- 【转载】Extjs设置Ajax请求的超时时间timeout
在Extjs中的Ajax请求中,Ext.Ajax.request 默认超时时间是30秒,有时候我们有比较耗时的操作需要设置更长时间,此时我们就需要修改Ext.Ajax.Requset的超时时间为更长, ...
- linux 下 shell脚本报错:-bash: ./build.sh: /bin/sh^M: bad interpreter: No such file or directory
主要原因是build.sh是在windows下编辑然后上传到linux系统里执行的..sh文件的格式为dos格式.而linux只能执行格式为unix格式的脚本. 我们可以通过vi编辑器来查看文件的fo ...
- Kconfig和Makefile
内核源码树的目录下都有Kconfig和Makefile.在内核配置make menuconfig时,从Kconfig中读出菜单,用户勾选后保存到.config中.在内核编译时,Makefile调用这个 ...
- java git .gitignore常用规则
# Created by .ignore support plugin (hsz.mobi).gitignore # Operating System Files *.DS_Store Thumbs. ...
- MySQL Hardware--FIO压测
FIO参数 .txt 支持文件系统或者裸设备,-filename=/dev/sda2或-filename=/dev/sdb direct= 测试过程绕过机器自带的buffer,使测试结果更真实 rw= ...
- mysql学习之基础篇04
五种基本子句查询 查询是mysql中最重要的一环,我们今天就来说一下select的五种子句中的where条件查询: 首先我们先建立一张商品表:goods 由于商品数目太多,我就不一一列举了. 在这里我 ...
- 【HICP Gauss】数据库 环境的搭建 -1
1.安装规则 1.主机名必须网络唯一 2.主机名必须两位数以上 可以中划线 不能下划线 3.固定IP地址 4.端口号 1888 新增账户 omm 用户组 dbgrp ,家目录 /home/ ...
- 批处理引擎MapReduce编程模型
批处理引擎MapReduce编程模型 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. MapReduce是一个经典的分布式批处理计算引擎,被广泛应用于搜索引擎索引构建,大规模数据处理 ...