linux 开发日记
文章平均质量分 63
faithsws
大连理工大学计算机硕士,主要从事嵌入式硬件设计和linux驱动开发,android优化
展开
-
linux 中的hook
相信熟悉windows编程的高手们都知道,windows为我们提供一些api,这些api用于hook 键盘,鼠标,消息等事件。windows的运行是来源于这些事件驱动的,所以一旦我们截获了这些事件,就可以篡改程序本来的功能了。但是在Linux中,并不存在这样的api。要抓获内核中的input事件,就必须另外编辑驱动进行额外的处理。 这是以前我在工作中遇到的一个需求:在用户按下某个功能键原创 2009-09-28 13:13:00 · 6450 阅读 · 4 评论 -
新板 debug
啊~~~,从上周三开始接手这个别扭的imx31的armadillo的蓝色破板子,到今天已经是周二了,马上就是一周了。终于把基本的过程跑通了,其中遇到不少的坎坎坷坷,现在都解决了,感觉真是不错。首先,一个基本的开发流程当然是 jtag,bootloader,kernel,rootfs。每一步都是建立在上一步的基础之上,只有上一步完成了,才能继续后面的工作。一.Jtag。所有的cpu都必须遵守的协议和原创 2010-03-15 13:54:00 · 2668 阅读 · 2 评论 -
嵌入式开发中的 链接
嵌入式开发中的链接这是一个一直困扰我的问题。当一个程序脱离了操作系统,直接运行在裸的硬件之上时,那么你的链接地址就在背后左右着程序的运行。首先,我遇到一个问题。当我使用别人的源码,编译,链接,然后下载运行,这一套的流程执行的很顺利,最终达到了想要的结果。而当我自己编写源码,然后用相同的流程,程序却总是跑飞了。由于当时的知识和时间,都没有达到一定的水平,所以这个问题搁置了很长时间。近期要离职了,工作原创 2010-03-18 11:11:00 · 1925 阅读 · 0 评论 -
linux 内核之旅
我不认为我是 linux 之上的高手,因为我的shell 没有达到c语言的 拿来即用的水平,而且我的内核开发主要集中于设备驱动的开发。但我确信我现在已经是一个入门者,可以再遇到问题的时候,迅速定位,然后给出正确的指导和答案。 linux内核难吗?接触之初,和现在完全是两种答案。在学习linux之前,我做过几年的单片机开发,基本的51系列,msp430系列等等。这为我理解linux的对硬原创 2010-03-23 09:24:00 · 1607 阅读 · 3 评论 -
嵌入设备电池电量
2009-09-20其实在公司,星期五就开始记录每天的工作了。感觉自己是在一个学习和上升的阶段,所有的进步都应该记录下来。等能够上网了,把自己学习的成果,发布一下,或许会有好的机会。 周五的时候写的嵌入式上的电源管理,基本上能够涵盖可以应用的部分。后来 L又过来重新讨论了方案的选择和可行性。但这些并没有与我概括的相冲突,只是在应用上的不同选择会导致系统的复杂度和开发成本的问题。原创 2010-03-24 08:55:00 · 1828 阅读 · 0 评论 -
linux程序崩溃调试技术
Linux 程序崩溃调试技术 一,起因在开发android的ril过程中,遇到了rild异常崩溃的现象。该进程直接控制android RIL相关的所有操作,如果异常终止,将导致android framework的重启。二,细节a)原创 2012-02-13 17:30:57 · 4670 阅读 · 1 评论 -
XX教你玩 MiniPC (一)拆解MK908
说些提前的话。很久没有过来写文章了,原因有两个。第一,感觉被骗了。在2012年末的时候,CSDN举办了一个活动:总结2012,写文章。如果被选中的话,就可以送书。实际上,我的文章被选中了,但是没有任何CSDN的人员联系送书的事,所以感觉被骗了。这让我伤心很长时间,对CSDN有些丧失兴趣。其次,换工作了以后,有些懒了,做的东西也没那么多开创性,所以也没写多少总结。再者,有很多人给我留言或者其原创 2013-12-06 10:05:51 · 15654 阅读 · 10 评论 -
XX教你玩 MiniPC (二)MK908升级包分析
前一篇已经讲完了怎么debug MK908的硬件,关键点是引出了调试用串口,这在后续的分析过程中起到很大作用。这一篇,将脱离MK908的硬件,从MK908的升级包的角度来看出厂时,MK908的启动和工作方式。先发布一下,这篇用到的工具的下载地址链接:http://pan.baidu.com/share/home?uk=3409825988这些是我这几个星期调查过程中,探索到的有用的工具原创 2013-12-09 14:26:48 · 12868 阅读 · 2 评论 -
XX教你玩 MiniPC (三)MK908之CPU RK3188启动 bootloader分析
上一篇我们已经弄明白了整个MiniPC的软件组成,但是并不是很清楚系统启动的细节,所以这一篇就仔细说明一下rk3188 从上电开始到启动内核为止的过程。再说明一点,这篇有一部分是翻译的内容,但针对翻译的内容,我亲自做了一些实际的实验,所以我还是自己坦白,这篇算是“伪原创”吧。先给大家发原创的链接:https://gist.github.com/sarg/5028505这个是国外的一个大原创 2013-12-10 18:46:00 · 20267 阅读 · 3 评论 -
XX教你玩 MiniPC (四) Mk908 bootloader行为分析
MiniPC mk908的深入DEBUG原创 2013-12-12 13:40:28 · 6717 阅读 · 1 评论 -
dvfs dptc dpm
经过四天的不断渗透,终于把linux关于动态电源管理的内核相关代码了解了。十分幸运的,这个项目启用了核心芯片是imx31,正因为他提供了电源动态管理的功能,所以才能在使用中接触到相关的知识。否则如果选择了不具备这个功能的芯片,那么接触到动态电源管理的知识的机会就很少了。同样抱着学习的态度,跟他一起解析这个部分相关的内核代码和用户层守护程序。在整个过程中,也是有过很多错误的理解,但是经过与他的不断沟原创 2010-03-15 13:36:00 · 6715 阅读 · 0 评论 -
内核更新方法
一方案,妄想1.jtag 烧写。jtag主要用于bootloader的烧写。但是同样也可以用于kernel 和rootfs的烧写。可是由于jtag是完全串行的数据输入,所以对于uboot 200k的空间大小,还算勉强可以接受。而对kernel 2M左右,rootfs几十M甚至几百M,变得不可接受。此时,jtag烧写工具对硬件完全是未知的,需要提供配置文档。2.uboot (boo原创 2010-03-15 13:29:00 · 3129 阅读 · 0 评论 -
工作记录 initrd initramfs
工作记录 initrd initramfs1. 编译内核确认内核中包含了initrd的宏定义 大约是CONFIG_BLK_DEV_INITRD ,CONFIG_BLK_DEV_RAM。具体的跟不同的内核版本和处理器架构相关。在内核代码中,主要对应于init 文件夹下的文档。编译内核时,可以使用make menuconfig,make xconfig 进行配置,推原创 2010-03-14 10:00:00 · 3591 阅读 · 0 评论 -
Linux kernel 关于keyboard部分
Linux kernel 关于keyboard部分keyboard.c 用于处理和键盘相关的input_handler。其中包括后续的键码转换和输出atkbd.c 常用的键盘布局,用于获得扫描码,并将其发送到input_handler 链表中struct input_handler kbd_handler; 即为input_handler 链表中的一个handler要hook键盘或者其他inpu原创 2010-03-15 10:04:00 · 1521 阅读 · 0 评论 -
grub 攻略
引导管理器Grub硬件基础========一块硬盘,它起始的一部分扇区为主引导扇区,包括MBR(主引导纪录)和DPT(分区表,您可以阅读分区概念章节中相关内容)每个分区起始的一部分扇区,为分区引导扇区。在分区引导扇区之后的部分,为文件系统的索引,文件系统通过它定位文件在硬盘上的位置。不同的文件系统采用不同的索引,例如FAT文件系统使用文件分配表和目录区。绝大多数操作系统,对硬盘的读写操作,通过文件转载 2010-03-15 10:06:00 · 3042 阅读 · 1 评论 -
udev hal
标题: 简单介绍udevd, hald, dbusd的关系 如果应用程序使用了libdbus就能够接收到来自内核的有关硬件热插拔的通知,比如U盘的插入和拔出。其中经过了怎样的过程呢。首先,udev通过NetLink注册内核的设备事件,当有设备插入/拔除时,udev就会收到通知,它会从事件中所带参数和sysfs中的信息,加载适当的驱动程序(也可以通过hald去运行应用程序让用户选择可用的驱转载 2010-03-15 10:19:00 · 3133 阅读 · 0 评论 -
背光设置方法 hal
insmod backlight.kohal-set-property --udi /org/freedestop/Hal/devices/computer_backlight --key linux.sysfs_path --string /sys/class/backlight/backlight_sws原创 2010-03-15 10:25:00 · 1033 阅读 · 0 评论 -
ubifs 操作实例
UBI文件系统简介 收藏 在linux-2.6.27以前,谈到Flash文件系统,大家很多时候多会想到cramfs、jffs2、yaffs2等文件系统。它们也都是基于文件系统+mtd+flash设备的架构。linux-2.6.27后,内核加入了一种新型的flash文件系统UBI(Unsorted Block Images)。这里简单介绍下UBI文件系统加入的原因,及使用方法。我也是刚接触到这个转载 2010-03-15 13:21:00 · 5388 阅读 · 0 评论 -
Acpi 和 apm
Acpi 和 apm 主要是针对在X86架构上存在bios芯片上的linux电源管理机制。acpi是新更多的依赖于操作系统,是今后发展的主流。同时还增加了cpu 和battery相关的状态检测。 在嵌入式系统上,由于不存在bios的硬件则在内核编译时就没有对应的配置选项。只存在apm emulation的模拟。此部分只支持几种apm的event,但在应用层可以使用apmd来原创 2010-03-15 13:34:00 · 7382 阅读 · 1 评论 -
关于 linux 内存
首先,内存的大小在linux内核中的获知方法1.通过bootloader 的 tag mem传入。Setup.c 中的函数如下:static int __init parse_tag_mem32(const struct tag *tag){if (meminfo.nr_banks >= NR_BANKS) {printk(KERN_WARNING"Ignorin原创 2010-03-15 13:42:00 · 1956 阅读 · 0 评论 -
ubifs & mtd
前天晚上在写完另一篇总结之时,赵XX向我咨询了关于mtd 和ubifs的相关内容。而我在这方面只是略懂皮毛,所以向他许愿共同调查这个方面的知识。经过昨天一天的调查,最后感觉是有了一定的经验和基础了,所以要赶紧记录下来。不知道按什么顺序来讲述这个方面的内容,那么还是按照我的疑问过程来一步步解析吧。MtdMtd的意思是Memory technology device,就是存储技术设备的意思,多指fla原创 2010-03-15 13:17:00 · 11829 阅读 · 10 评论 -
XX教你玩 MiniPC (五) Mk908 bootimg分析
文章写到现在,似乎在刚刚切入正题。但自己也感觉,如果有所有的源码,自己所写的就有点滑稽了。不管怎么样,还是秉着一种钻研的精神,从反向的角度来玩MiniPC吧。也希望一些玩家能从我的每步尝试中获得灵感,学到一些东西。承上一篇,我们得知,bootloader并不care kernel分区的内容,而是关心bootimg。在bootimg中包含了kernel和ramdisk。想要自由的玩转MiniPC原创 2013-12-19 14:29:05 · 6539 阅读 · 8 评论