自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

何文的专栏

Stay Hungry, Stay Foolish.

  • 博客(53)
  • 收藏
  • 关注

原创 简述 Linux DRM 架构

这里写自定义目录标题PurposeOverviewArchitectureComponentsFramebuffera. Information storedPurposeOverview我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:DRM stands for Direct Renderi...

2019-04-17 20:16:22 2590

转载 嵌入式Linux 系统的优化策略和方法

嵌入式Linux 系统优化的那些事儿嵌入式Linux 系统启动优化时间测量工具以及用法Printk Times – 用于显示每个 printk 的执行时间配置 CONFIG_PRINTK_TIME Kernel hacking –> Show timing information on printks结果 dmesg > boot.log [ 3.038027] Memory: 315

2017-08-30 15:44:11 1387

原创 嵌入式Linux系统优化的那些事儿

% Keven @ [email protected] % \today从今天开始我们来扯一扯嵌入式Linux系统优化的那些事儿。。什么是嵌入式?官方解释请自行Google Or Wikipedia。嵌入式Linux ?嵌入式Linux 是嵌入式系统中比较主流的一种,其以Linux 为嵌入式设备的操作系统,并广泛用于消费电子,移动电话,航天航空电子中。 比起发行版的Linux 系统,嵌入式

2017-08-22 15:38:36 3084

原创 虚拟化技术的介绍

提到虚拟化技术,大家普遍想到的是虚拟机,脑海中很快飘过 Vmware[Vmware workstation],VirtualBox[Oracal VM VirtualBox],Qemu,Xen等,那么到底什么是虚拟机技术? 和虚拟机之前的关联是什么? 让我们来一一揭秘。发展历史线早在计算机还是庞然大物的上世纪60年代,虚拟化技术已经开始悄悄发展了。 - 基础概念什么是虚拟化?从维基百科以及各路大

2017-08-16 10:00:34 5151

原创 Kexec 引导内核内幕

目录目录前言基本概念基本用法Kexec 如何引导内核加载到内存运行新内核的完成跳转Kexec 技术应用场景Kexec 技术展望前言Linux 的引导流程,基本可以概括为两个阶段:分别是启动引导程序阶段以及引导程序引导启动内核阶段。 在嵌入式Linux中,第一个阶段常见的引导程序分别有bootloader/xloder/pmon/类bios等,以bootloader为例子,光开源的

2017-07-19 10:13:19 2569

原创 记录由于一次强制断电导致的服务器无法启动的恢复过程

From: 杂项事件起源年前的某天早上,还是一如既往的上班,解决bug,浮现问题; 正当修改调试代码,继续跑结果的时候,发现编译服务器一般公司编译是有专门的服务器的连不上了,好气啊,群中询问原因,说是隔壁的公司将’电闸’给拉下来蛋疼,服务器所在房间的电源是被别人控制的,发现后立马跑到隔壁将电闸拉了上来;; 恩恩,没事,就是一次非正常断电么,过了5分钟,编译服务器依然连不上,又是好气哦,询问说应该起

2017-02-22 20:37:57 12370 1

原创 Android Study

From: AndroidAndroid 第一弹.安装Android studio构建一个简单的用户界面在这一节中,你将创建一个包含一个文本字段和一个按钮的XML格式布局文件.在下一个章节中,当按下按钮发送带文本内容的字段到另一个Activity后你的app可以响应此动作;Android app的图形用户界面是使用层次结构View和ViewGroup对象以及对象类来构建的.View对象是一个是UI

2016-10-20 21:39:13 2236

原创 搭建自己的NAS存储之 - 选择一款属于自己NAS 系统

From: NAS/SANNASNAS介绍NAS(Network-Attached Storage,网络附加存储)是指连接到计算机网络的文件级别计算机数据存储,可以为不同客户端提供数据存取。 NAS被定义为一种特殊的专用数据存储服务器,包括存储器件(一个或多个硬盘驱动器的网络设备,这些硬盘驱动器通常安排为逻辑的、冗余的存储容器或者RAID阵列)和内嵌系统软件,可提供跨平台文件共享功能。NAS通常

2016-10-14 14:31:19 54422

转载 神器 Qemu 一 利用X11 渲染将qmeu 跑在Windows 上

From: Virtual Machine 摘要 QEMU是一款高效而实用的模拟器及虚拟机监管器,本系列博客试图从最基本的安装使用开始,逐层深入地介绍QEMU。本篇文章从QEMU最基础的知识讲起,介绍了QEMU的安装使用、系统模拟的基本原理以及如何利用QEMU来创建和管理虚拟机。一、QEMU简介QEMU是一款开源的模拟器及虚拟机监管器(Virtual Machine Monitor, VM

2016-08-21 13:35:50 5221

原创 嵌入式系统制作神器 - Buildroot

From: Linux Hole 一件事对于我们的意义取决于你如何把这件事同其他的事情关联起来 - 雷.库兹韦尔上一小节我们简单的知道了入职自己制作交叉工具链子,有人肯定是说? 怎么还玩这么老旧的东西,不都是厂商给的吗?那么请问厂商的是谁给的? 在此我声明一点,我不是做产品的,也不是做互联网。我就是一个’嵌入式程序员’,我觉得我应该关心这些问题。 今天呢,我们来认识一下新朋友 - buildr

2016-08-20 16:28:49 8842 4

原创 编译工具链制作神器 - crosstool-ng

From: Linux hole 深呼吸,深呼吸 - XXXXHello,大家好。 最近一直忙着调试Bug,一直无果。很让人伤心,多模块糅合,Ps. 驱动 用户态 硬件全方位定位,搞的人很累。所以一直没有写点东西; 以前我一直以为要写东西就必须写的高大上的东东,后来才发现,高大上的东东搞起来除了很费力以外,反而可能让人觉得你不也是COPY过来的吗?你不是也是TS过来的吗? 拽什么拽啦。。鉴于此

2016-08-19 09:40:59 24445

翻译 全面解析Linux 内核 3.10.x - 调度算法 - Linux 调度器

From: 全面解析Linux 内核 3.10.x - 进程调度Linux 调度器 - Volker Seeker · 爱丁堡大学 2013.05.12本文档包含了Linux内核如何处理进程调度注意事项。 它们涵盖一般调度器框架、调度类、完全公平调度(CFS)算法、软实时调度以及负载均衡的实时和CFS。 在此文档中采用的Linux内核版本是3.1.10,使用的终端设备为搭载android

2016-06-10 19:22:44 3563

原创 全面解析Linux 内核 3.10.x - 进程调度 - 调度算法

From: 全面解析Linux 内核 3.10.x - 进程调度伟大的国家之所以伟大,那是因为一切都井然有序。何谓调度?调度算法作为内核的几大核心之一,其重要程度可见一斑。 一个形象的比喻是,硬件好比一个国家拥有的资源(水,土地,矿产,石油,能源等)。那么操作系统就好比执政党。而执政党(操作系统)的效率以及能力都是由办事的效率(进程的执行流程)处理事情的方式(进程的资源分配)等来决定.因为ZF的

2016-06-07 17:21:13 3066

转载 全面解析Linux 内核 3.10.x - 内存管理 - SLUB分配器

From: 全面解析Linux 内核 3.10.x - 内存管理全面解析Linux 内核 3.10.x - 内存管理 - SLUB分配器1、内核对象缓冲区管理Linux 内核在运行过程中,常常会需要经常使用一些内核的数据结构(对象)。例如,当进程的某个线程第一次打开一个文件的时候,内核需要为该文件分配一个称为 file 的数据结构;当该文件被最终关闭的时候,内核必须释放此文件所关联的 file 数

2016-06-07 17:19:04 1216

原创 全面解析Linux 内核 3.10.x - 内存管理 - 高端地址的内核映射

From: 全面解析Linux 内核 3.10.x - 内存管理若想无可替代,必须与众不同 - 每日一句上一节在buddy system中我们了解了内核中对于页框的高效利用方式,那么现在我们就来研究我们给内核的地址空间内核究竟是怎么去使用了? 这里我们在来简单描述一下地址空间的基本概念: 1、芯片地址空间 - 芯片地址空间一般都很小,只需要满足CPU内部寄存器范围的访问即可。(XLP316的C

2016-06-03 17:14:09 1761

原创 全面解析Linux 内核 3.10.x - 内存管理 - 伙伴系统算法(Buddy System)

From: 全面解析Linux 内核 3.10.x - 内存管理刨根问底是科学实践的基本要求 - XXX上节我们简单的描述了地址管理的几个基本点,包含页框,也大小,页表等。这一节我们站在这些基本概念上,升入了解一下内存使用的一些问题以及Linux Kernel 针对此问题的解决方法.1、内存碎片- 内碎片 && 外碎片大家可能都听过内存碎片,但是对于为什么出现这种问题并没有去深入研究,我简单的描述

2016-05-21 10:28:32 4590

原创 Smart L 中的设计模式

From: Smart L 每个人都是初学者 - Keven新的一年,事情总是很多。事情在多也需要时不时的跳出某一个圈子去读一些书,感受一下不一样的风景。 所以就抽空读了一本设计模式的书籍,叫图说设计模式,之前对与C++属于半吊子水<也许只是刚入门>,完全依靠的C基础开始,没有真正的去了解过C++。。那么为啥要去研究这本书呢,当然跟Smart L客户端有关系,想要不断的将架构优化就得去了解设计模

2016-02-28 21:14:18 1258

原创 Smart L - 架构设计

From: Smart L 你选择当木工还是建筑师? - The Architecture of Open Source Applications往往在去做一个事情之前,我们应该先描述一下要做的事情。 往往在去做一个架构之前,我们应该先再理解一下要做的事情。 编程是一门严苛的艺术,好似大多数人都习惯性的copy-paste..<很多被称之为”大牛”的人也是如此>,就算是copy-paste 那

2016-02-20 12:40:00 1215

原创 Smart L 客户端设计 - 主题布局

From: Smart L 我不是设计师,我只是一个程序员 - KevenSmart L 中的布局设计Smart L 主界面主界面采用上中下式的传统设计方法,颜色采用深浅深的设计,见下图: 头部主要显示当前时间 + 菜单栏操作。 中间为内容区域。 底部为功能菜单区域。 对应的代码部分为:main_widget.cpp的 Top_Init();函数 Smart_L_Init(

2016-02-19 22:56:19 805

原创 调试番外篇 - KGDB环境搭建与使用

From: 内核&调试调试调试番外篇 - KGDB环境搭建与使用测试环境宿主机环境:ubuntu 12.04 + linux kernel 2.6.32 目标机环境:ubuntu 12.04 + gdb + minicom 虚拟机:VirtualBox 4.3.10 1、安装VirtualBox新建一个标准的虚拟机镜像就OK!然后加载ISO一步一步安装就行!(磁盘大小最好稍微大点

2016-02-16 21:49:13 5173

原创 内核调试番外篇 - KDB的介绍与简单使用

From: 内核&调试调试内核调试番外篇 - KDB的介绍与简单使用1、什么是 KDB?kdb是一个Linux系统的内核调试器,它是由SGI公司开发的遵循GPL许可证的开放源码调试工具。kdb嵌入在Linux内核中,为内核&&驱动程序员提供调试手段。它适合于调试内核空间的程序代码,譬如进行设备驱动程序调试,内核模块的调试等。2、为什么要用KDB?Bug处处有,不同人的编码思维,以及架构思维!总是会

2016-02-16 21:47:51 8099 1

转载 嵌入式的瑞士军刀 - BusyBox

From: 文件系统事物总是有N多种表现形式 - XXLinux 内核启动到最后的时候,摇身一变,进入托管模式。内核就默默的退居幕后,应用程序变身前台主人,所有对于用户的交互都是都APPlication 来完成。 说到这里层次感就很明确。 对于操作系统而言,Application 是交互的前端,Application 可以是一个单独的程序,也可以是一个库 + 程序,秉承unix的设计理念(小即

2016-02-16 21:43:30 952

原创 全面解析Linux 内核 3.10.x - 启动1号进程

From: 全面解析Linux 内核 3.10.x - 本文章完全基于MIPS架构坚持也许就是胜利 - Keven当内核找到文件系统以后(这里已经挂载proc文件系统了),内核的主要启动使命就越来越少了。因为江山基本已经打下了,剩下的就是要坐江山了。来看下面的这段代码。static noinline void __init_refok rest_init(void){ int pid;

2016-01-14 21:09:11 1969 1

原创 全面解析Linux 内核 3.10.x - initramfs 启动流程

From: 全面解析Linux 内核 3.10.x - 本文章完全基于MIPS架构坚持也许就是胜利 - Keven早在之前,Linus提出要把cache当作文件系统装载。 这里有一份来自initramfs 合并的邮件请求,请点击。 我给大家翻译一些小片段(杜撰加翻译)。————————————–致亲爱的 Linus—————————— *亲爱的Linus:* 最近我苦思冥想

2016-01-14 21:06:08 4093 1

原创 全面解析Linux 内核 3.10.x - 进程链表

From: 全面解析Linux 内核 3.10.x - 进程管理把你的心、我的心、串一串串一株幸运草、串一个同心圆 - Love一、双向链表在内核中的运用传统的双向链表即表示链表有双头,双连表的好处在于不管是插入亦或是查找,其算法复杂度明显比单链表要优化很多,但是双连表由于其本身的复杂性,故而很多程序员都是避而不见,或者视而不见! 但是在这里我们必须将此重新掌握! 还记得链表的定义吗? 有指

2016-01-05 20:51:20 2688

原创 全面解析Linux 内核 3.10.x - Pid hash 链表

From: 全面解析Linux 内核 3.10.x - 进程管理不管千山万水,时间流逝,我们始终是有关系的 - 某某言情剧何谓进程之间的关系?在前面作总结的时候,说进程有一个标识ID,我们称之为进程描述符,描述符描述了进程的一些注册优先级,状态等一些值,其实这里也有给出字段描述了进程的一些关系。 程序创建的进程具体父/子关系,如果一个进程创建多个子进程,则子进程之间具有兄弟关系,在进程描述符中引

2015-12-25 21:31:52 2136

原创 全面解析Linux 内核 3.10.x - 内核进程

From: 全面解析Linux 内核 3.10.x - 进程管理三千大世界,五千小世界,却是由生命组成 - XXXX进程类似于人类,它们被产生,有或多或少的有效生命。可以产生一个或者多个子进程,最终都要走向”死亡”。为什么说进程是操作系统的灵魂?因为它之于操作系统就犹如生命对于自然,犹如人之于家。一、透过现象看本质从用户程序的角度看,进程就是一次运行活动,是程序的执行实体! 从内核的角度看,进程

2015-12-25 21:00:58 1939

原创 设备驱动的艺术之旅 - 简单网卡驱动模型

From: 设备驱动的艺术之旅上一节我知道了以太网环回设备的理论和使用方法。下面我就自己写一个简单的网卡驱动模型。写之前说点什么一个简单网卡驱动通用模型#include <linux/interrupt.h>#include <linux/module.h>#include <linux/moduleparam.h>#include <linux/kernel.h>#include <li

2015-12-20 20:16:49 1321

原创 设备驱动的艺术之旅 - loopback.c

From: 设备驱动的艺术之旅Ps.下面代码源于kernel 3.10.92#include <linux/kernel.h>#include <linux/jiffies.h>#include <linux/module.h>#include <linux/interrupt.h>#include <linux/fs.h>#include <linux/types.h>#includ

2015-12-20 20:14:54 1685

原创 设备驱动的艺术之旅 - Linux 网卡驱动

From: 设备驱动的艺术之旅时间是一把杀猪刀,去年,今年,今年,去年 - XX什么是网卡?通俗的讲网卡即网络设备卡,是计算机连接网络的入口。常见的网卡类型我们最常见的网卡就是PCI插槽的网卡,不管是你的台式机,笔记本,亦或是服务器等都随处可以见 ! 这里需要说明的是以太网控制器内部其实是游MAC(媒体访问控制器) + PHY(物理层编码解码芯片)组成。 所以其实一般有两种方案来实现以太网控

2015-12-20 18:37:49 1082

原创 Smart L 系列产品解决方案

From: Smart L这个世纪的哲学,将会是下一个世纪的常识 - 致未来随着(IOT)物联网时代的到来,智能家居方兴未艾,成为世界性的发展潮流,但是因为没有一套统一的强大平台支撑,碎片化的现象已经是越来越明显!而各大芯片级厂家的都在各自擦拳磨掌,看来未来十年这个领域将又将会是一场腥风血雨!为什么叫Smart L ?Google的新一代Android叫Android L.寓意为.. Smart

2015-12-19 22:06:46 1140

原创 GNU内联汇编之占位符的使用

From: 杂项用心感受,用心感受 - ..一、GNU内联汇编中常用修饰符一览 修饰符 输入输出 含义 = O 表示此Output操作表达式是只写的 + O 表示此Output操作表达式是可读可写的 & O 表示此Output操作表达式独占为其指定的寄存器 % I 表示此Input操作表达式中的C/C++表达式可以与下一个Input操作表

2015-12-18 23:03:59 2926

原创 全面解析Linux 内核 3.10.x - IPI核间中断的应用

From: 全面解析Linux 内核 3.10.x - 中断子系统前程往事,历历在目 - 佚名一、基本概念IPI 全称为Inter-Processor Interrupt,即处理中间的中断,需要可编程中断控制器PIC or APIC的支持! 操作流程大概如下: 需要向IPI 控制寄存器中写入需要recv interrupt vector,写入的IDB代表了类似IRT Entry的ID,最多

2015-12-11 22:49:30 5318

原创 设备驱动的艺术之旅 - Platform 总线的应用

From: 设备驱动的艺术之旅前程往事,历历在目 - 佚名总线的故事2011年linux创始人Linus Torvalds在社区的一句脏话,引发了社区震动!从而导致代码大换血!Dts(device tree source)则就是这个时候被应用在我们的各种处理器中目录下的!早期这种模式被用于IBM PowerPC等体系架构下使用的Flattened Device Tree(FDT)。Device T

2015-12-11 22:41:23 905

原创 设备驱动的艺术之旅 - MDIO 总线的应用

From: 设备驱动的艺术之旅前程往事,历历在目 - 佚名一、MDIO基本概念MDIO 即 Management Data Input/Out的简称,MDIO作为一种串行的数据接口,也被称之为媒体独立管理接口(MIIM),它作为一种串行的总线被IEEE802.3所定义,统称为MII!MDIO一般用于以太网物理层(phy)和MAC(Media Access Control)控制器的通信互联。 1、

2015-12-11 22:28:09 2305

原创 设备驱动的艺术之旅 - 无处不在的字符设备<二>

From: 设备驱动的艺术之旅一、字符设备 In Kernel 3.10.x 模版二、Smart L 通信处理架构以及源码待续… By: Keven - 点滴积累

2015-12-10 22:19:05 787

原创 体系架构番外篇 - 我们说MIPS的最佳页映射

From: ongoingcre如果再见不能红着眼,是否还能红著脸 - CCNN一、MIPS上地址空间的内存管理 上述空间在32位操作系统和64位操作系统下,地址空间范围分别是:32位系统中0x00000000 - 0x7fffffff, 无论用户态还是内核态都可以寻址!0x80000000 - 0x9f000000 && 0xc0000000 - 0xffffffff, 只有内核态的进程才

2015-12-09 22:13:34 1005

原创 设备驱动的艺术之旅 - 无处不在的字符设备<一>

From: 设备驱动的艺术之旅如果再见不能红着眼,是否还能红著脸 - CCNN楔子那一年我一直以为LDD是这世间最为复杂的书籍之一了,那一年网络上总是充斥着LDD学习XX等字面的Blog,但是总是浮于表面,沉不到底。那一年我还没有毕业,但却是一个满怀理想的小愤青。那一年整整一年都是在学校的实验室 + 机房度过的,但是依然阻挡不了我的那种学习的渴望!那一年,那一年… 我的那一年!一、2年前的回忆录

2015-12-09 22:08:50 1076

原创 设备驱动的艺术之旅 - Watch Dog 的 NMI 应用场景

From: 设备驱动的艺术之旅一、硬件描述1、器件品牌意法半导体 – STM706T/S/R。 2、硬件原理连接图 信号管教描述: MR :低有效收到复位! WDI:遇到一个上升沿/下降沿,内部定时器将清零。1.6s不发生跳变,溢出,WDO输出。 WDO:WDI1.6s不发生跳变,输出低。VCC低于1.2V 输出低。 RST:高有效,复位信号只能被VCC或者MR触发,WDO输出低

2015-12-08 20:58:30 8541

原创 设备驱动的艺术之旅 - 驱动和内核的关系

From: 设备驱动的艺术之旅一个故事

2015-12-08 20:56:52 813

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除