linux系统移植 书

第五章

flash硬件方案比较,nor,nand。基于flash的文件系统有jffs2(日志文件系统,主要用于nor,基于mtd驱动层),yaffs(主要用于nand),cramfs(使用时解压缩到ram,因此写操作困难,它是只读的),romfs(只读,顺序)。

ramdisk是划分一块内存作分区使用,不是一个实际的FS,而是将实际FS装入内存的一种策略。

第六章 LCD驱动程序移植

struct fb_info 记录帧缓冲的全部信息,参数,状态,操作函数指针等。唯一内核可见。

struct fb_info{

struct fb_var_screeninfo var;//当前可变参数

struct fb_fix_screeninfo fix;//当前固定参数

struct fb_monspecs monspecs;//当前的显示器模式

struct work_struct queue;//事件队列

...

struct fb_ops *fbops;//一些操作集指针

struct device *device;//指向 struct platform_device 中的dev成员

...

struct __iomem *screen_base;

...

};

 

fb_var_screeninfo 屏幕的分辨率,每像素比特数,时序变量等。

strcut fb_var_screeninfo{

__u32 xres;//实际分辨率

__u32 xres_virtual;//虚拟分辨率

__u32 xoffset;//虚拟分辨率到实际分辨率的偏移

__u32 bits_per_pixel;//BPP

__u32 height;//图像高度

//一些时序

__u32 pixclock;//像素时钟

__u32 left_margin;//帧同步时钟

__u32 hsync_len;//一行的像素数

__u32 vsync_len;//一帧的行数

...

};

fb_fix_screeninfo {

char id[16];//驱动中定义的设备名字

unsigned long smem_start;//frame buffer 的开始地址,这是物理地址

...

};

 

fbmem.c为上层提供调用,为下层提供接口。

struct fb_ops{

struct module *owner;

int (*fb_open)(struct fb_info *info, int user);

//设备属性的设置和获取

...};

注册注销:register_framebuffer(struct fb_info *fb_info);

了解LCD驱动结构,参考已有代码,修改。

初始化函数(初始化寄存器,分配显示缓冲)和fb_info的填充。

编写成员函数:读写,映射,IO控制。

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值