摘要: 参数检查 跨目录执行脚本但维持脚本与"."的相对位置不变 彩色日志输出 使用临时文件, 防止使用的文件与已知文件重名而被替换 输出到标准输出的同时写入到文件 逐行处理文本文件,注意文本要set fileformat=unix确保格式正确 阅读全文
posted @ 2017-09-04 23:52 Abnor 阅读(666) 评论(0) 推荐(0) 编辑
摘要: 双网卡使用无线网卡上互联网,使用以太网卡连局域网,在/etc/network/interfaces里对以太网卡设置static ip无效,使用ifconfig临时设置也仅能工作一会,设置的ip马上就消失了,因为桌面版的ubuntu使用自己的NetworkManager来管理网络设备,要么kill掉下 阅读全文
posted @ 2017-07-26 21:31 Abnor 阅读(4556) 评论(0) 推荐(0) 编辑
摘要: 现象1: 用了一年多的unity的右上角的网络图标和网易云音乐的图标消失不见了,我也不记得最近有update或upgrade过,然而这两个功能还是可以正常用 解决1: 安装Gnome,果然相应的图标就出来了 现象2: Gnome3在PC上一点不好用,很明显是针对触控设备设计的,于是在登录界面设置选择 阅读全文
posted @ 2017-07-23 10:05 Abnor 阅读(943) 评论(0) 推荐(0) 编辑
摘要: 最近鼓捣一个新基于debian的服务器,修改sources.list之后update的时候报类似如下错误: W: GPG error: http://ftp.us.debian.org lenny proposed updates Release: The following signatures 阅读全文
posted @ 2017-07-22 23:10 Abnor 阅读(907) 评论(0) 推荐(0) 编辑
摘要: 在忍受了一整周的磁盘将满的报警之后,今天终于着手准备将占据64G磁盘中的44G的Home迁移至另外一块磁盘,当然,这也是使用Linux做PC OS的正确使用方式。在Linux的目录管理风格的基础上,这个问题的实质就是将另一块盘挂载在home目录下而已。流程如下,希望能给后来者一些借鉴 1. 准备一块 阅读全文
posted @ 2017-07-12 00:01 Abnor 阅读(2045) 评论(0) 推荐(0) 编辑
摘要: 在面向对象的程序设计中,类之间有6中关系,分别是 继承, 组合, 聚合,关联, 依赖,实现 ,如果使用C语言实现,上面的这些关系通过"结构体包含结构体、结构体包含结构体指针以及函数指针等语法实现",C语言本身的语法并不支持这些逻辑关系的实现,所以使用C语言实现面向对象的程序设计很多时候需要我们自己来 阅读全文
posted @ 2017-04-07 14:40 Abnor 阅读(4862) 评论(0) 推荐(1) 编辑
摘要: Linux素来以其强大的网络功能著名,同时, 网络设备也作为三大设备之一, 成为Linux驱动学习中必不可少的设备类型, 此外, 由于历史原因, Linux并没有强制对网络设备贯彻其"一切皆文件"的思想, 网络设备不以/dev下的设备文件为接口,用户程序通过socket作为访问硬件的接口。本文以Li 阅读全文
posted @ 2017-03-28 08:23 Abnor 阅读(9739) 评论(0) 推荐(6) 编辑
摘要: MTD(Memory Technology Device)即常说的Flash等使用存储芯片的存储设备,MTD子系统对应的是块设备驱动框架中的设备驱动层,可以说,MTD就是针对Flash设备设计的标准化硬件驱动框架。本文基于3.14内核,讨论MTD驱动框架。 MTD子系统框架 设备节点层 :MTD框架 阅读全文
posted @ 2017-03-25 08:53 Abnor 阅读(6062) 评论(0) 推荐(1) 编辑
摘要: 磁盘驱动就是实现磁盘空间和内存空间数据上的交互 ,在上一篇中我们讨论了内存端的Page Segment Block Sector相关的概念,本文以3.14内核为例,讨论这部分内存是如何被组织管理的。我们知道,为了解决CPU和内存的速度不匹配,计算机系统引入了Cache缓存机制,这种硬件Cache的速 阅读全文
posted @ 2017-03-24 14:13 Abnor 阅读(2870) 评论(0) 推荐(0) 编辑
摘要: 块设备是Linux三大设备之一,其驱动模型主要针对磁盘,Flash等存储类设备, 块设备(blockdevice) 是一种具有一定结构的随机存取设备,对这种设备的读写是按 块 (所以叫块设备)进行的,他使用缓冲区来存放暂时的数据,待条件成熟后,从缓存一次性写入设备或者从设备一次性读到缓冲区。 作为存 阅读全文
posted @ 2017-03-21 07:30 Abnor 阅读(19197) 评论(0) 推荐(5) 编辑
摘要: "./drivers/usb/usb skeleton.c"是内核提供给usb设备驱动开发者的海量存储usb设备的模板程序, 程序不长, 通用性却很强,十分经典, 深入理解这个文件可以帮助我们更好的理解usb子系统以及usb设备驱动框架, 写出更好的usb海量存储设备驱动。 匹配前 既然是一个usb 阅读全文
posted @ 2017-03-14 08:14 Abnor 阅读(4084) 评论(0) 推荐(5) 编辑
摘要: USB总线是一种典型的热插拔的总线标准,由于其优异的性能几乎成为了当下大小设备中的标配。 USB的驱动可以分为3类:SoC的USB控制器的驱动,主机端USB设备的驱动,设备上的USB Gadget驱动,通常,对于USB这种标准化的设备,内核已经将主机控制器的驱动编写好了,设备上的Gadget驱动通常 阅读全文
posted @ 2017-03-10 09:36 Abnor 阅读(5094) 评论(2) 推荐(0) 编辑
摘要: "./drivers/i2c/busses/i2c s3c2410.c"是3.14.0内核中三星SoC的i2c控制器驱动程序, 本文试图通过对这个程序的分析, 剥离繁复的细节, 总结一套编写i2c主机控制器驱动的框架以及一个分析内核驱动的流程. 匹配之前 1291 将主机控制器驱动在系统启动的时候就 阅读全文
posted @ 2017-03-09 09:28 Abnor 阅读(2427) 评论(0) 推荐(2) 编辑
摘要: 如果你也遇到了填充了id_match_table,compitible怎么看都一样,但probe就是不执行(让我哭一会),你可以回头看一下上一篇的模板,我们这里 虽然使用的是设备树匹配,但和platform的设备树匹配只填充i2c_match_table不同,i2c_driver的设备树匹配需要同时 阅读全文
posted @ 2017-03-08 08:02 Abnor 阅读(8080) 评论(0) 推荐(2) 编辑
摘要: 另外一种驱动 应用层除了使用上述的使用i2c_driver接口来访问i2c设备,Linux内核还提供了一种简单粗暴的方式——直接通过虚拟i2c设备驱动的方式,即上一篇中的i2c dev提供的方式,这种方式使用的i2c_client是随着open的操作临时创建的虚拟的client,即不是挂接在i2c_ 阅读全文
posted @ 2017-03-08 08:01 Abnor 阅读(4525) 评论(0) 推荐(1) 编辑
摘要: i2c总线是一种十分常见的板级总线,本文以linux3.14.0为参考, 讨论Linux中的i2c驱动模型并利用这个模型写一个mpu6050的驱动, 最后在应用层将mpu6050中的原始数据读取出来 i2c子系统框架 下图就是我理解的i2c驱动框架示意图, 类似中断子系统, i2c子系统中也使用一个 阅读全文
posted @ 2017-03-07 09:22 Abnor 阅读(25048) 评论(0) 推荐(6) 编辑
摘要: 为uboot添加网卡功能可以让uboot通过tftp下载内核, 方便我们的开发, 对于网卡功能的移植,我们依然在在一遍又一遍的实践这个uboot改造的套路。 1. 找运行逻辑 ,即插入代码的位置。 2. 根据运行逻辑编写功能代码。 3. 找配置逻辑 ,即修改哪些文件使配置生效。 4. 根据配置逻辑修 阅读全文
posted @ 2017-03-06 08:24 Abnor 阅读(4328) 评论(1) 推荐(2) 编辑
摘要: 串口作为一种非常简单的通信方式,才是嵌入式系统调试的王道,通过设置串口输出,我们可以将程序运行的情况直接通过串口线输出到屏幕上,对于这种异常重要的功能,uboot原生就提供了支持,但为此我们需要做一些准备工作, 流程还是那套: 1. 找运行逻辑 ,即插入代码的位置。 2. 根据运行逻辑编写功能代码。 阅读全文
posted @ 2017-03-05 14:04 Abnor 阅读(4417) 评论(0) 推荐(1) 编辑
摘要: 这一节主要讨论1个问题:点灯。点灯是实际开发中,特别是裸板开发中常见的调试手段,相当于主机开发中漫天飞舞的printf/printk。为了追踪程序的现场执行情况,很多时候我们都使用点一个灯的方法来进行初步的判断。如果你把刚才编译的程序烧录到SoC,你又怎么知道这个Uboot有没有工作呢?所以,我们在 阅读全文
posted @ 2017-03-05 10:40 Abnor 阅读(3138) 评论(0) 推荐(2) 编辑
摘要: 前两篇介绍了uboot 2013.01的配置原理以及大体的运行流程,本文将讨论如何对uboot源码进行配置,将一个可用的uboot烧录到SD卡中。 定制自己的core board 市面上能买到的开发板的核心板基本都是基于官方参考板制作的,所以虽然标准操作是"定制"自己的core board,但鉴于我 阅读全文
posted @ 2017-03-04 08:32 Abnor 阅读(2966) 评论(0) 推荐(1) 编辑