摘要: 前言 为了方便其他人搭建dm368 ipnc3.0环境,我写了个脚本,执行脚本就可以自动搭建好环境了,绝对的傻瓜操作了,不过有一个地方让我很郁闷,那就是在用sed替换掉某段内容的时候(143行 156行),替换的文本有很多行且里面某些行必须要tab开头(makefile要求,这里看不出,上传的问题) 阅读全文
posted @ 2017-10-14 10:20 rongpmcu 阅读(466) 评论(0) 推荐(0) 编辑
摘要: 前言 之前对uboot的构建进行了分析,现在再对linux kernel的构建进行分析。几年前的确也分析过,但是只是停留在笔记层面,没有转为文章,这次下定决定来完善它。 环境 同样,采用的还是zynq平台的linux,从Makefile可以看到版本: linux Makefile支持的选项(最常用到 阅读全文
posted @ 2017-10-14 10:20 rongpmcu 阅读(1729) 评论(0) 推荐(0) 编辑
摘要: 前言 函数的目的是从用户空间拷贝数据到内核空间,失败返回没有被拷贝的字节数,成功返回0。它内部的实现当然不仅仅拷贝数据,还需要考虑到传入的用户空间地址是否有效,比如地址是不是超出用户空间范围啊,地址是不是没有对应的物理页面啊,否则内核就会oops的。不同的架构,该函数的实现不一样。下面主要以arm和 阅读全文
posted @ 2017-10-14 10:19 rongpmcu 阅读(14674) 评论(0) 推荐(4) 编辑
摘要: 前言 内核调试是做底层开发必须会的手段。有n多中调试方式,不过呢,我最终还是觉得直接printk打印是最省事的,不依赖安装其他工具,不受限与中断上下文、进程上下文、持锁、smp等(当然,在某些情景下不会省时)。下面就总结下printk的一些技巧,毕竟也没那么简单^_^ printk使用 printk 阅读全文
posted @ 2017-10-14 10:19 rongpmcu 阅读(1752) 评论(0) 推荐(0) 编辑
摘要: 前言 项目中需要通过驱动与fpga通讯,获取fpga往内存里写的数据。因为数据量比较大,需要驱动分配600多M的内存给fpga来写数据,且因为是与fpga通讯,需要连续的内存,还得是uncached的,因此打算采用dma接口 来分配如此大的内存。然而,在分配的过程中遇到了一些问题,下面对这次的调试进 阅读全文
posted @ 2017-10-14 10:19 rongpmcu 阅读(4714) 评论(0) 推荐(0) 编辑
摘要: 前言 本文纯粹的纸上谈兵,我并未在实际开发过程中遇到需要编写或调试这类驱动的时候,本文仅仅是根据源码分析后的记录!基于内核版本:2.6.35.6 。主要是想对spi接口的wifi驱动框架有一个整体的把控,因此会忽略一些硬件上操作的系统,同时里面涉及到的一些驱动基础,比如数据结构、设备模式也不进行详细 阅读全文
posted @ 2017-10-14 10:19 rongpmcu 阅读(1635) 评论(0) 推荐(0) 编辑
摘要: 前言 主要是想对Linux 串口、usb转串口驱动框架有一个整体的把控,因此会忽略某些细节,同时里面涉及到的一些驱动基础,比如字符设备驱动、平台驱动等也不进行详细说明原理。如果有任何错误地方,请指出,谢谢! 声明:图和个别段落(我做了小的修改)是直接从网上截取 整体概述 linux下的串口或者usb 阅读全文
posted @ 2017-10-14 10:19 rongpmcu 阅读(1326) 评论(0) 推荐(0) 编辑
摘要: 前言 主要是想对Linux mmc子系统(包含mmc sd sdio)驱动框架有一个整体的把控,因此会忽略某些细节,同时里面涉及到的一些驱动基础,比如平台驱动、块设备驱动、设备模型等也不进行详细说明原理,涉及到sd/mmc/sdio协议部分也只会简单带过,因为linux内核mmc子系统里面已经实现了 阅读全文
posted @ 2017-10-14 10:19 rongpmcu 阅读(2854) 评论(0) 推荐(0) 编辑
摘要: 前言 编写驱动的时候,经常会用到中断,这时候我们在驱动初始化时就得申请中断,那么问题来了,中断号是多少呢?以前的中断号在板级相关的头文件里面已经静态定义好了,bsp的代码在内核启动过程也会根据那个帮我们建立好hw irq到irq的映射,我们直接用它静态定义的irq就可以了。但是在硬件越来越复杂的今天 阅读全文
posted @ 2017-10-14 10:19 rongpmcu 阅读(2089) 评论(0) 推荐(0) 编辑
摘要: 前言 devm是内核提供的基础机制,用于方便驱动开发者所分配资源的自动回收。参考内核文档devres.txt。总的来说,就是驱动开发者只需要调用这类接口分配期望的资源,不用关心释放问题。这些资源的释放会在device对象销毁时自动释放。 devres使用 不同的内核模块提供了对应的devm_xxx接 阅读全文
posted @ 2017-10-14 10:19 rongpmcu 阅读(6570) 评论(0) 推荐(0) 编辑