历史上的今天

今天是:2024年10月11日(星期五)

正在发生

2018年10月11日 | OK6410块设备驱动内存模拟nor_flash

发布者:Joyful222Life 来源: eefocus关键字:OK6410  块设备  驱动内存  模拟nor_flash 手机看文章 扫描二维码
随时随地手机看文章

ram_nor.c源码:

//参考: drivers\mtd\chips\map_ram.c 

#include "linux/module.h"

#include "linux/types.h"

#include "linux/kernel.h"

#include "linux/sched.h"

#include "linux/init.h"

#include "asm/io.h"

#include "asm/byteorder.h"

#include "linux/errno.h"

#include "linux/slab.h"

#include "linux/delay.h"

#include "linux/interrupt.h"

#include "linux/reboot.h"

#include "linux/bitmap.h"

#include "linux/mtd/xip.h"

#include "linux/mtd/map.h"

#include "linux/mtd/mtd.h"

#include "linux/mtd/compatmac.h"

#include "linux/mtd/cfi.h"

#define RAM_BLOCK_SIZE (512*1024)

static unsigned char *ramnor_buf;

static struct mtd_info *ram_nor_mtd;

static int ram_nor_erase(struct mtd_info *mtd, struct erase_info *instr)

{

    int i;

    unsigned char *buf = ramnor_buf + instr->addr;

    static int cnt = 0;

    printk("%s : %d\n", __FUNCTION__, cnt++);

    

    for (i = 0; i < instr->len; i++)

    {

        buf[i] = 0xff;

    }

    

    instr->state = MTD_ERASE_DONE;

    mtd_erase_callback(instr);

    return 0;

}

static int ram_nor_read(struct mtd_info *mtd, loff_t from, size_t len, size_t *retlen, u_char *buf)

{

    static int cnt = 0;

    printk("%s : %d\n", __FUNCTION__, cnt++);

    printk("thread: pid = %d, name = %s\n", current->pid, current->comm);

    memcpy(buf, ramnor_buf+from, len);

    *retlen = len;

    return 0;

}

static int ram_nor_write(struct mtd_info *mtd, loff_t to, size_t len, size_t *retlen, const u_char *buf)

{

    static int cnt = 0;

    printk("%s : %d\n", __FUNCTION__, cnt++);

    memcpy(ramnor_buf+to, buf, len);

    *retlen = len;

    return 0;    

}

static void ram_nor_sync_nop(struct mtd_info *mtd)

{

}

static int ram_nor_init(void)

{

    ramnor_buf = kmalloc(RAM_BLOCK_SIZE, GFP_KERNEL);

    memset(ramnor_buf, 0xff, RAM_BLOCK_SIZE);

    // alloc/setup mtd_info 

    ram_nor_mtd = kzalloc(sizeof(*ram_nor_mtd), GFP_KERNEL);;

    ram_nor_mtd->type = MTD_NORFLASH;

    // Fill in the default mtd operations 

    ram_nor_mtd->erase   = ram_nor_erase;

    ram_nor_mtd->read    = ram_nor_read;

    ram_nor_mtd->write   = ram_nor_write;

    ram_nor_mtd->name    = "ram_nor";

    ram_nor_mtd->size    = RAM_BLOCK_SIZE;

    ram_nor_mtd->sync    = ram_nor_sync_nop;

    ram_nor_mtd->flags   = MTD_CAP_RAM;

    ram_nor_mtd->writesize = 1;

    ram_nor_mtd->erasesize = 512;

    add_mtd_device(ram_nor_mtd); // add_mtd_partitions

    

    return 0;

}

static void ram_nor_exit(void)

{

    del_mtd_device(ram_nor_mtd);

    kfree(ram_nor_mtd);

    kfree(ramnor_buf);

}

module_init(ram_nor_init);

module_exit(ram_nor_exit);

MODULE_LICENSE("GPL");

=====================================================================

Makefile文件:

all:

    make -C /media/sda8/wei/linux-2.6.28_smdk6410 M=`pwd` modules

clean:

    make -C /media/sda8/wei/linux-2.6.28_smdk6410 M=`pwd` clean

obj-m += ram_nor.o

=====================================================================

测试详情可以参考:“JZ2440之NOR FLASH驱动程序”


关键字:OK6410  块设备  驱动内存  模拟nor_flash 引用地址:OK6410块设备驱动内存模拟nor_flash

上一篇:OK6410默认u-boot启动参数
下一篇:OK6410块设备驱动之用内存模拟磁盘

推荐阅读

  据公开数据显示,中国2016-2017的动力电池容量达到101千瓦时,154千瓦时。2018的产能目前预计为168GWH。但另一方面,虽然中国2018年新能源汽车产量已超过一百万辆已成为可能事件,但动力电池出货量将仅达到45GWh。   超过350%的供需颠倒格局必将成为行业改组一段时间的主题。随着政策催化剂的升温,对动力电池能量密度的要求进一步提高。在此背景...
var videoObject = { container: '.video', variable: 'player', autoplay: true, ...
据国外媒体报道,近日多家苹果供应商曝出,苹果持续对其施压,要求它们将15%至30%的生产业务搬出中国。被施压的供应商包括台积电、富士康、纬创以及和硕等。据了解,主要的转移地点是越南、泰国、印度等东南亚国家。此外,和硕等苹果供应商始终在寻求投资于越南的供应计划,该公司可能会在越南生产新的苹果耳机 AirPods。公开资料显示,尽管苹果始终在努...
美国政府于9月23日召开的半导体峰会成为一场“鸿门宴”。这次会议的主题是应对新冠变种病毒对供应链的影响,如何缩小芯片厂商与客户之间的供需差。但是,美国政府在会议上提出向台积电、三星等半导体厂商索要库存量、订单、销售纪录等商业数据,理由是“提高危机处理的能力,并确定导致芯片短缺的根本原因”。此举引发了业界的轩然大波,因为这些数据是半...

史海拾趣

问答坊 | AI 解惑

好.欢迎.喜欢电子技术的朋友.加入45058465QQ群

好   欢迎 喜欢电子技术的朋友 加入 45058465  QQ群    一起研究  探讨   共同向上   促使 维修 技术上进…

查看全部问答∨

世界著名汽车品牌标识演化历史-------马自达

马自达 Mazda 马自达汽车的历史开始于1920年,它坐落在日本广岛市,当时的名字为Toyo Cork Kogyo Co.。那个时候,因为第一次世界大战的影响,软木非常缺乏,公司成立的目的就是用Abemaki(一种日本树)和中国软木橡树制造软木的替代品。这原 ...…

查看全部问答∨

求助基于DSP Builder的fir数字滤波器的设计

基于DSP Builder的fir数字滤波器的设计 这是的毕业设计题目要做3 、4、16阶的仿真 和硬件测试我一直都没做出来仿真都没做好 还请高手指导下啊 QQ314536709 邮箱[email=jiangpengtt@126]jiangpengtt@126[/email].com [ 本帖最后由 guipizi 于 2008-5 ...…

查看全部问答∨

研究:汽车配件2014年发展趋势

转自---高工在线 根据Frost & Sullivan最新发布的研究报告,诸如氖灯以及LED灯这样的汽车配件在今后的七年内会保持一个稳定增长,尽管这一增长的速度并不快。   在报告中,这家研究机构就汽车报警器等产品的消费习惯进行了分析,发现从2006年以 ...…

查看全部问答∨

求LABVIEW调用MATLAB脚本的程序、例子 急急急急急急

最好是关于 调MATLAB脚本处理声音的哦(比如男声变女声) 急急急急急急如律令 十分感激…

查看全部问答∨

【PDF电子书】基于uCos-II 的应用程序开发

《嵌入式应用程序开发综合实验9例》里面的例子都是基于uCos II的。上面的平台是用44b0的开发板。这个板子算是经典的入门板子了。个人感觉一本不错的书,很注重实践,配合uCOS理论的书一起看效果不错。刚注册的帐号,不知论坛以前有没有人上传过这本 ...…

查看全部问答∨

电路的方波的上下冲消除问题

各位,请问一个比较器输出波形有上下冲怎么消除,就是一般的方法,不针对某个芯片…

查看全部问答∨

出个二手s3c44b0板子 100包邮

1、三星S3C44B0X(Samsung ARM7TDMI)微处理器 2、2MB 16bit flash(SST39VF160) 3、8MB 16bit PC100/PC133兼容SDRAM 4、符合usb1.1规范USB设备控制器USBN9603 5、2路带有RS232电平转换UART接口 6、IDE接口及多功能扩展口:可挂硬盘或CompactFl ...…

查看全部问答∨

发个用nokia5110液晶画曲线的函数

本帖最后由 paulhyde 于 2014-9-15 04:22 编辑 上次做校内比赛的时候写的,画曲线部分参考了UCgui的写法。用来画温度曲线,伏安特性曲线等等效果挺不错 这里贴了两个关键函数。完整的在附件 /*画竖线*/ void drawVline(unsigned char x,unsigne ...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved