摘要:
“小王,告诉你一个好消息,最难理解的部分不知不觉中已经讲完了,今天的课程就简单多了,而且最重要的是咱们的Linux设备驱动核心理论课也差不多了…” “最难的部分?已经讲完了?我咋没感觉呢..你讲的真是太好了,太通俗易懂了,太..”小王调皮的说。 “切,就你嘴甜,我还不知道你啊,小脑筋..”我白了小王一样。 那么今天呢?今天就讲讲IO内存静态映射。在将Linux移植到目标电路板中,通常会建立外设IO内存物理地址到虚拟地址的静态映射,这个映射通过在电路板对应的 map_desc结构体数组中添加新的成员来完成,map_desc结构体的定义如下: struct map_desc{ unsigne... 阅读全文
摘要:
时间:晚上7点 地点:寝室中.. “小王,今天就不多话了,接着昨天没讲完的,不然连不起来了,都..”我催促着。 上节讲到kmalloc()申请的内存若要被映射到用户空间可以通过mem_map_reserve()设置为保留后进行。具体怎么操作呢,给你一个模版吧: // 内核模块加载函数int __init kmalloc_map_init(void){ ../申请设备号,添加cedv结构体 buffer = kmalloc(BUF_SIZE, GFP_KERNEL); //申请buffer for(page = virt_to_page(buffer); page< virt_to_... 阅读全文