- 博客(41)
- 资源 (10)
- 收藏
- 关注
原创 linux的睡眠框架及实现
待机后,系统就挂在当前的执行位置,当用户唤醒(按电源键或者键盘)系统时,bios先恢复CPU,然后CPU从当前位置开始唤醒系统,唤醒刚好是一个相反的过程,先从架构相关的底层开始,逐级唤醒系统,主要的代码流程是在 suspend_enter( )的后半段,也是从suspend_ops->enter( ) 开始,这个函数的退出,表示系统已开始唤醒,接着syscore_resume( ) -->... --> ahci_pci_device_resume ( ) ....;需配置CONFIG_SUSPEND。
2023-02-09 20:56:42 1155
原创 如何使用qemu调试内核
调试内核需要一个基本的文件系统,我们可以使用简单的 ramdisk来作为这个文件系统,如果,需要测试一些其它应用程序,我们还需要创建一个大一点根文件系统。也就是内核启动时的initrd.img,可以使用busybox来制作这个小文件系统,源码目录的INSTALL文件有编译和安装的说明。把 busybox拷贝到 initrd根目录,并切换到initrd根目录。创建init: ln -s bin/busybox init创建系统文件夹:mkdir dev etc proc sys配置etc目录。
2022-12-01 20:09:46 2318
原创 如何更新内核
安装内核:cp -av arch/x86/boot/bzImage /boot/vmlinuz-{ver}创建initrd: update-initramfs –c –k {ver}更新initrd :update-initramfs –u –k {ver}
2022-07-18 22:35:59 1259
原创 如何提交patch 到内核
内核的开发是在邮件列表来进行的,通过一个个patch来更新内核,patch即是代码又是文档。我以提交的两个内核bug为例,来具体说明一下这个过程。先同步本地内核源码,确保最新代码上还能复现对应的问题。阅读Documentation/process/submitting-pathes.rst 。 代码规范需符合 coding-style.rst,Linux 的缩进使用的是TAB(8个空格)。尽量使用祈使语句,说明碰到了什么问题,处理措施是什么。Subject: 对代码做了什么改变如:“fix sparse/b
2022-07-11 23:39:13 1516
原创 进程的内存占用情况分析
我们都知道进程运行时,会有一个栈空间(stack)和一个堆空间(heap), 栈空间用于函数调用和局部变量,堆空间是C语言的 malloc 来分配的全局指针。这些都是进程的私有数据,除了这些,还有映射进来的动态库,进程间的共享内存等共享空间。另外,操作系统还支持预留虚拟地址空间的功能(延迟分配),也就是在读写该内存的时候,操作系统才进行物理内存的分配,因此进程占用的空间情况还是比较复杂的。下面简单地说明一下。Linux VSZ:Virtual Memory Size(虚拟内存大小)。进程占用的全部地
2022-02-16 18:55:32 4729
原创 在子目录使用GtkBuilder
假定GTK app的目录在 gui/gtk 子目录下,也就是 GTK_APP_PATH= gui/gtk第一步:在GTK_APP_PATH目录下,创建 aimapp.gresource.xml 文件,内容如下:<?xml version="1.0" encoding="UTF-8"?><gresources> <gresource prefix="/org/gtk/aimapp"> <file preprocess="xml-stripbla
2020-09-14 14:20:54 478
原创 Makefile 报错: resources.c 文件 *** 遗漏分隔符
一般来说在Makefile中,如果报错“*** 遗漏分隔符”,应该是该使用 TAB的地方使用了空格, 可是我缺到的报错却是在.c 文件里面,特别奇怪,先说一下背景 --用Makefile 管理一个c++ 工程,全部是.cpp文件,然后,需要添加一个 resource.c 文件进来, Makefile 内容如下:SRCS += main.cpp \ Application.cpp \ resources.cDEPS += $(SRCS:%.cpp=..
2020-09-10 11:20:57 921 3
原创 ART工作流程及特性
首发于我的博客网站(prajna.top) 欢迎大家前去交流,有pdf版本。ART (Android Runtime)是运行于 Android 5.0(API 21)及以上的默认运行时环境,用来替换Dalvik,它大大提升了 Android 平台和应用的性能和流畅度。ART兼容Dalvik,能运行它的字节码,它的启用是系统默认的,不需要做什么配置,可以通过调System.getProperty...
2020-03-24 17:15:43 1362
原创 如何开始编码
***首发于我的博客网站(prajna.top) 欢迎大家前去交流,有pdf版本。本文主要是从应用的角度出发,分别阐述操作系统接口,计算机语言,文件系统等背后的一些知识,规范,原理,设计思想,应用法门,让初学者对编码有一个整体的,全局的认识,有一个物理的视角,找到自己的起点。前言写这篇文章主要是基于自己大学的经历,当时抱着一腔热血去学计算机编程,可是当把c/c++语言,数据结构,操作系统,...
2019-11-05 16:40:26 973
原创 Linux 设备驱动开发实例
编译和运行驱动编译要用到kernel的Makefile文件 — — 也就是源码树的编译系统。因此,源码需要被配置和编译,以ubuntu自带的源码为例:编译外部模块(.ko)的编译命令是:$ make -C <path_to_kernel_src> M=$PWD也就是进入到kernel目录,利用kbuild系统来编译驱动文件。obj-m 告诉编译系统需要编译成一个...
2019-10-25 16:08:03 630
原创 Linux 驱动架构简析
发表于我的博客网站(prajna.top): http://prajna.top/doc/3/3049 欢迎大家前去交流。这篇文章不是驱动开发教程,只不过作者读过内核源码后,想对知识做一个梳理,从源码的角度分析一下Linux的驱动架构的实现。行文也不大讲究,希望可以把问题说清楚。本文使用的kernel 源码版本是 3.13.3。学习kernel虽然没有捷径,但是有合理的方法。1) 首先...
2019-09-28 14:42:45 651
原创 Android 属性
属性是Android系统的一大特色,它用来进行系统配置,模块,组件间的通讯。这篇文章主要是聊一下Android property的应用和工作原理以及一些常用的系统属性。属性配置文件在主板系统上,属性文件分别是:/default.prop -- 对应编译系统 out 目录下的 …/root/default.prop/system/build.prop -- 对应编译系统 out 目录下…/...
2019-05-14 14:00:55 448
原创 Android 内存管理
发表于我的博客网站(prajna.top): http://prajna.top/doc/4/189 欢迎大家前去交流。这篇文章主要是解释 Android 是如何管理 app 进程和内存,低内存配置,和一些debug 手段, 本文的 android 版本是 4.4.堆与栈每个 proceess 都运行自己的虚拟内存空间里面, 对 32 位 OS 而言, 这个空间就是 4 G...
2019-05-05 14:39:19 2410
原创 Android Low Memory Killer 机制
发表于我的博客网站(prajna.top): http://prajna.top/doc/4/237 欢迎大家前去交流。LowMemoryKiller是Android 系统在Linux kernel的OOMKiller基础上打的一个补丁。OOMKiller在kernel 没法再分配内存的时候,寻找一个得分最高的进程来杀掉。LowMemoryKiller则提前一步,通过把剩余内存划分成不同的级别...
2019-04-26 15:40:35 701
原创 Android 输入设备子系统架构
发表于我的博客网站(prajna.top): http://prajna.top/doc/4/124 欢迎大家前去交流。Android TV开发过程中,主要的输入设备是摇控器(IR),键盘(keypad),以及一些USB的HID输入设备,本文主要讲讲这块的工作流程,使用的是AN5版本。 流程首先,Linux kernel 驱动层得到硬件设备按键的原始扫描码,触摸,移动等...
2019-04-22 14:28:56 447
原创 Android apk文件结构及其安装,校验流程
首发于我的博客网站(prajna.top): http://prajna.top/doc/4/278apk文件apk实际上就是一个zip文件,可以直接使用zip解压,它包含 classes.dex, 资源文件,证书,动态链接库等。classes.dex: 代码文件,包含可以被Dalvik解释执行的字节码。build ROM的时候,还可以使用dex2oat把.dex部分代码预编译成 .o...
2019-04-16 17:17:29 2689
原创 如何开发一个Linux/X11平台的输入法
做的第一个开源软件是一个辞典软件:AlphaDict, 发现 linux 下面的输入法,似乎都不太好用, 总觉得没有 搜狗,紫光拼音好用,决定自己做一个试试看, 没想到是好大的一个”坑“, 足足花了近一年的时间, 不过,好歹总算是做出了一个1.0版本,一个基本可用的输入法。 写这篇文章来同大家聊一下,开发输入法过程中的坑。一: 输入法协议.这是第一个大坑, X11 不像windows 那样
2017-01-06 17:16:07 5272 6
原创 Android Vold 架构简析
这篇文章中主要是分析一下,android系统里面的Vold——Vold是andorid系统的设备管理器,扮演着linux里面的udev的角色。它通过监听uevent的端口,取得uevent事件,dispatch到 相应的Listener,执行相应的动作。UEvent在linux平台上,uevent给系统软件提供设备事件,设备节点的权限管理等等,它由kernel发出。通过socket与udev守护进程通讯(systemd-udevd.service), 在sysfs下的很多kobject下都有uevent属性
2016-06-01 10:48:59 9703 1
转载 证书格式区别
文章来源: 百度文库 证书格式区别 (文档贡献者:弓游VS碧海)PKCS 全称是 Public-Key Cryptography Standards ,是由 RSA 实验室与其它安全系统开发商为促进公钥密码的发展而制订的一系列标准,PKCS 目前共发布过 15 个标准。 常用的有: PKCS#12 Personal Information Exchange Syntax S
2014-12-23 10:50:35 1497
原创 young tableaus
Young tableaus 是 Introduction_to_algorithms的一 道课后习题, 一度还把我难住了。现在把 python 代码贴出来,供大家参考。#! /usr/bin/python""" young tableau m x n matrix"""import sysclass element(): def __ini
2014-05-23 21:45:56 2034
原创 AlphaDict 软件发布
短短续续,经过了大约大半年的开发, 我的第一个软件作品:AlphaDict 终于 release 了1.0, 这是一段很困难的时间,需要从写文档开始,做所有的事情。为了保持代码的简洁, 可控,减少对系统平台的依赖性。我尽量使用 标准 c/c++ 库的 API, 不得不自己去封装打包一些东西。 有时候,碰到一些平时没有深入的问题,不得不中断手头的工作,来深入学习新的东西, UTF-8/16/32,
2014-05-23 07:54:18 2181
转载 Using Condition Variables
原文地址:http://docs.oracle.com/cd/E19455-01/806-5257/6je9h032r/index.htmlUsing Condition VariablesThis section explains using condition variables. Table 4-6 lists the functions that are available
2014-02-20 13:48:55 1257
原创 Andorid NDK 使用STL,以及 _alloc.h :_M_allocate出错处理
最近,转到 android 平台进行开发。 做了一个native service, 编译的时候,发现不能正常使用STL, 经过一番折腾,总算是搞掂了。我使用的是android 4。 error: STL 头文件找不到 ? 在Android.mk 增加 LOCAL_C_INCLUDES := ndk/sources/cxx-stl/stlport/stlport
2013-12-11 14:09:03 5551
转载 英语飙升的好方法
本文作者三年间从四级勉强及格到高级口译笔试210,口试232。找工作面试时给其口试的老外考官听了一分钟就说你的英语不用考了。虽不敢说方法一定是最好的,但从现在开始随便谁不要再去找学习资料,每天花两个钟头照说的做,坚持三个月的提高会超过你过去三年。听:网上比较有代表性的论坛是普特www.putclub.com上面的听力资源很丰富,沪江www.hjenglish.com和旺旺www.wwengli
2013-11-01 13:34:30 1351
原创 PCI协议简析
PCI协议是一套工业标准,这个就不细说了,这套协议有点类型IP协议,由多种不同功能的设备组成,主要是主机,主设备, bridge(桥) ,从设备等等组成, PCI bridge 类似于IP协议里面的 路由器, 链接自己的bus(有一个独立无一的bus id)到主的总线,它的主要作用是转发两个bus间的通信。 1)BUS Operation. 1.1) BUS com
2013-07-28 18:17:04 7422
转载 较全的国外学术论文网站与常用的学术搜索引擎
1.http://adswww.harvard.edu/The NASA Astrophysics Data System 世界最大免费全文网站,超过300,000篇全文 主要学科:天体物理学2.http://intl.highwire.org/HighWire Press 世界第二大免费全文网站,超过235,812篇全文主要学科:生物学、医学3.http
2013-07-17 14:19:34 65000
原创 红黑二叉树详解及理论分析
发表于我的博客网站(prajna.top): http://prajna.top/doc/2/175什么是红-黑二叉树? 红-黑二叉树首先是一颗二叉树,它具有二叉树的所有性质,是一种平衡二叉树。普通二叉树在生成过程中,容易出现不平衡的现象,即使是使用随机算法生成二叉树,也是有一定概率生成不平衡的二叉树. 如下图所示 :...
2013-04-29 14:00:37 30032 7
原创 xx.cpp undefined reference to xx 解决办法
网上相关的文章很多, 普通原因就那么两点。 1)link的时候,添加相应的 so,.a 。 2) so .a 文件次序不对。 一般被调用者放到调用者的后面——有点饶,总之问题发生, 调换下 次序,可以解决。 有时候,仍然会有一些莫名奇妙的 undefined reference to xx 出现,原因不在上面2点内—— so/.a 文件已经全部添加, 相对
2013-03-13 10:35:38 1533
原创 linux 下的 投影仪,HDMI 输出设置
前些日子研究xmbc的源代码,发现它里面的一个小工具,xbmc_xrandr有点意思,可以设置x11信号分辨率,输出通道(设备),当时我想,如果X11也有这么一个小工具,我把信号的输出通道选择VGA口,不就可以外接投影仪了吗?结果X11还真就带了这么小工具──xrandr。 运行xrandr,就会看到当前系统所以通道,及各通道下的信号格式。我的机器显示的是如下内容: Screen 0: minimum 320 x 200, current 1366 x 768, maximum 1600 x
2011-02-12 16:27:00 8819
原创 openGL API 搭配讲解
工作需要改写了xbmc里面的openGL部分代码,对opengl的API摸出来了些门道,写出来与大家分享,对自己也相当于是做个笔记。 1) glBindBuffer + glVertexPointer+ glEnableClientState 的用法。 glBegin .. glEnd已经是不推荐使用的方法。目前强烈推荐的是 glBufferData 搭配 glVertexPointer , glVertexAttribPointer 同系列函数的用法。 原因是
2011-02-11 15:32:00 8163 3
原创 MPlayer软件研究篇(一)──输出驱动
linux下面最好用的播放器当属mplayer了。一些多媒体的嵌入式产品都有用到mplayer。有的“方案“提供商,也会在mplayer上面开发,增加自己的解码器和输出驱动,然后提供下它的代理公司。究其原因还是mplayer开放的架构,很适合去些二次开发的工作,你可以增加自己的解码模块,输出驱动模块,视频滤镜等而不会破坏mplayer的整体架构。 目前有一个需求,用mplayer来作为另一个软件的后端视频播放器。 mplayer自身有提供一个slave模式作为后台进程,而不去拦截窗口
2010-11-26 16:00:00 7091 12
原创 xemacs中文乱码问题
1)显示中文乱码。 (setup-chinese-gb-environment) (set-language-environment "Chinese-GB") 或者M-x setup-chinese-gb-environment M-x set-language-environment 回车 再输入Chinese
2010-03-30 19:04:00 1812
原创 ubuntu卸载gnome,安装xfce4
一直认为,简洁的就是最好的,于是,在ubuntu上卸载了gnome,安装xfce4。忙活了两天,终于配置好了。把我所碰到的问题,都写下来,给大家一个参考吧! 本文所涉及的所有知识都来源于网上,经笔者亲身实践。 1:安装xfce的命令为:sudo apt-get install xfce4 或者 sudo apt-get instal l xubuntu-desktop,
2009-06-14 14:47:00 19743 2
原创 PKG_CONFIG_PATH和PKG_CONFIG的路径设置问题
最近,需要使用cscope功能,重新编译安装了一遍gvim。 第一次./configure的时候,进行到 check gtk --version 时,机器明显变慢,并停了下来,鼠标及其不灵活,估计是碰到死循环或者死锁之类的事情了,然后,慢慢地机器死掉。重启了一次。再重新./configure的时候,没有问题了,但是gvim的界面非常难看,感觉好象不是gnome的界面。仔细查看了一下./co
2008-12-16 18:28:00 51739 3
原创 mplayerplug-in播放不了www.1ting.com音乐的问题
我使用的是firefox浏览器,编译安装mplayerplug-in插件时,碰到一个很奇怪的问题: 之前,由于PKG_CONFIG_PATH路径设置不正确,编译安装后,可以正常播放一听音乐网里的音乐,可是没有界面。今天,设置好PKG_CONFIG_PATH路径后,重新编译了一遍。结果界面是有了,可是播放不了一听音乐网里的音乐了。点击链接后,马上就stop停掉了。 于是,决定使用shel
2008-12-16 17:40:00 2379
原创 ln 硬链接与软链接的主要区别
今天做了下实验,测试了一下linux ln的硬链接与软链接。 硬链接实质上是源文件的一个别名,如果把源文件分成数据和文件名两个部分的话,源文件的硬链接就是增加了源文件的文件名的个数而已。当删除源文件时,系统只是删掉一个文件名而已,数据部分完好无损,因而,通过该源文件的硬链接一样可以访问该文件。直到所有的硬链接删掉后,该文件的数据才会被释放。每个有硬链接的节点(innode)都有一个计数器
2008-11-21 17:33:00 1261
原创 Tlist插件不能使用的问题
病 以前一直在windos下面用UE查看学习linux的源代码,个人一直觉得UE实在是个了不的软件,看到linuxe有人介绍用VIM + taglist插件的使用方法,觉得不错,试着安装一下。 其实,VIM的插件是不需要安装的,直接放到相关的目录下面去,没有就自己建立一个。一切配置好以后,打开vi,输入:Tlist命令, 系统返回 Not an editor command: Tli
2008-11-20 21:34:00 4234 1
原创 ATAPI协议
这几天研究了下ATAPI的协议,到现在为止,基本上知道了是怎么回事。 ATA也就是IDE,是用来连接硬盘的。接口是29根或者44根,应该还有其它类型的,只是我不知道而已!其实,44根线就是多出了一些的地线,以使信号稳定。最基本的无非就是16根数据线(DD0~DD15),5根地址线(CS0,CS1,AD0~AD2),一根“读”状态信号线,一根“写”状态信号线,一根中断信号线(IRQ)。
2008-10-29 16:30:00 4624 5
Serial Programming Guide for POSIX Operating Systems.
2018-11-06
xlib编程手册
2017-01-06
XIM协议文档
2017-01-06
avisynth.dll(mplayerplug-in会用到)
2008-12-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人