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/ ...
随机推荐
- 一个长耗时SQL在TiDB和Mysql上的耗时测试
之前看到的TiDB和MySql的性能对比都是大量短耗时请求下的压测,单机情况下TiDB和MySql的确有些差距,不过笔者最近碰到的场景更多是sql要扫描的行数不小的情况下单sql比较耗时的问题,所以自 ...
- docker容器与主机之间的文件复制
Easy—— 注意:“容器名与文件路径中间的冒号后不能有空格!” 1.从容器复制到主机: sudo docker cp 容器名:文件路径 主机文件/夹路径 2.从主机复制复制到容器: sudo doc ...
- 【LEETCODE】54、数组分类,简单级别,题目:605、532
数组类,简单级别完结.... 不容易啊,基本都是靠百度答案.... 希望做过之后后面可以自己复习,自己学会这个解法 package y2019.Algorithm.array; /** * @Proj ...
- 阅读笔记——《How a Facebook rejection pushed me to start and grow a profitable business in 12 months》
阅读笔记——<How a Facebook rejection pushed me to start and grow a profitable business in 12 months> ...
- HuTool之判断上传文件的文件类型
文件类型判断-FileTypeUtil 由来 在文件上传时,有时候我们需要判断文件类型.但是又不能简单的通过扩展名来判断(防止恶意脚本等通过上传到服务器上),于是我们需要在服务端通过读取文件的首部几个 ...
- Shell变量一览
Shell变量一览 $# Shell命令的参数个数 $$ Shell本身的进程ID $! Shell最后运行的后台进程的进程ID $? Shell最后运行的命令的退出码(返回值) $- Shell使用 ...
- zipkin的安装与搭建
下载与部署 jar中yaml文件配置 启动传入并参数 web界面 目录 zipkin是分布式链路调用监控系统,聚合各业务系统调用延迟数据,达到链路调用监控跟踪. 下载与部署 wget -O zipki ...
- Java调用WebService方法总结(2)--JAX-WS调用WebService
用JAX-WS(Java API for XML Web Services)调用WebService不需要引入其他框架,都是JDK自带的:文中所使用到的软件版本:Java 1.8.0_191.Dom4 ...
- 解决此报错:Cannot create Woodstox XMLInputFactory: java.lang.NoClassDefFoundError: com/ctc/wstx/stax/WstxInput
最近在研究webservice服务的技术,可是写完webservice例子后,项目正常启动,但是在输入url地址后报如下的错误: Cannot create Woodstox XMLInputFact ...
- iOS 10.0前的Notification推送
前言 推送为远程推送,一般由苹果APNS服务器发送给苹果设备(iPhone,iPad) 推送分在前台和后台.在前台时 用户可以在application 的代理回调接口中做相应处理:在后台时 系统会全权 ...