上一页 1 ··· 13 14 15 16 17 18 19 20 21 ··· 71 下一页
摘要: 看三个图就清楚了。分别是平移、旋转和缩放的矩阵计算。如果没有额外的第四个量w(也就是齐次坐标),那么这三种变换是无法都使用矩阵乘法来解决的。变换都统一成矩阵乘法之后,就给硬件设计和软件架构带来了巨大的好处。 阅读全文
posted @ 2012-04-05 12:36 super119 阅读(695) 评论(0) 推荐(0)
摘要: 这个workqueue比较实用,在suspend的时候会freeze,这样就会避免当suspend的时候,一些设备被关闭(或者clock被gate,或者power被gate),但是workqueue中还有work在运行从而导致一些问题。跟了一下代码,这个system_freezable_wq主要就是在create workqueue的时候加上了一个FREEZABLE的flag,然后当suspend发生的时候,在没有开始真正suspend device之前,有一个suspend_prepare会调用suspend_freeze_processes,这样一路调用下来,最终会调用到freeze_w. 阅读全文
posted @ 2012-04-05 11:25 super119 阅读(1841) 评论(0) 推荐(0)
摘要: 需要齐次坐标的原因:在欧几里得几何空间里,两条平行线永远都不会相交。但是在投影空间中,两条铁轨在地平线处却是会相交的,因为在无限远处它们看起来相交于一点。在欧几里得(或称笛卡尔)空间里描述2D/3D 几何物体是很理想的,但在投影空间里面却并不见得。 我们用 (x, y) 表示笛卡尔空间中的一个 2D 点,而处于无限远处的点 (∞,∞) 在笛卡尔空间里是没有意义的。投影空间里的两条平行线会在无限远处相交于一点,但笛卡尔空间里面无法搞定这个问题(因为无限远处的点在笛卡尔空间里是没有意义的)。由 August Ferdinand Möbius 提出的齐次坐标(Homogeneous coo 阅读全文
posted @ 2012-04-03 18:36 super119 阅读(414) 评论(0) 推荐(0)
摘要: 转自:http://www.wretch.cc/blog/hamer/1724101gamma correction簡單的說就是亮度校正, 但是調整gamma值不僅會影響image的亮度, 也會影響到R,G,B的比例gamma指的就是power function的指數, i.e. p(x) = x^(gamma) for example, x = 3, and gamma = 2, then x 經過 power function p的作用後其輸出的值不會是原來的 3 而變成 9 為什麼要考慮到gamma呢, 因為一般來說當我們想要再螢幕上看image時, 因為螢幕對於接受到的輸入能量會有一. 阅读全文
posted @ 2012-04-03 15:33 super119 阅读(380) 评论(0) 推荐(0)
摘要: 代码位于:power/suspend.c,从函数pm_suspend开始。suspend的逻辑和driver相关的主要就是遍历所有device,并调用他们相关driver的suspend函数指针(包括该device的class,bus这些的suspend函数指针)。至于device调用的先后次序是这样的:当我们执行device_add的时候,这些device会被加到一个dpm_list的list中,而且晚add的device会出现在list的靠前位置。也就是说,早add的device会晚一点被suspend,最后add的device会第一个被suspend。resume的时候就正好反过来,.. 阅读全文
posted @ 2012-04-03 14:40 super119 阅读(340) 评论(0) 推荐(0)
摘要: 因为kernel启动的CMDLINE有两个来源:(1)来自bootloader。比如u-boot会将CMDLINE放在一个地址中,然后kernel从这个地址就可以取到。当然这个地址uboot和kernel的代码中必须一致。(2)来自make menuconfig的时候的指定。在make menuconfig的时候,在Boot options->Kernel command line type中,可以指定kernel的CMDLINE是来自uboot还是来自kernel自身配置的,还是extend from bootloader(这个是指将bootloader给出的cmdline和kerne 阅读全文
posted @ 2012-04-03 13:48 super119 阅读(1608) 评论(0) 推荐(0)
摘要: 转自:http://blog.chinaunix.net/space.php?uid=20643761&do=blog&id=1594837platform_device_add最终还是调用老接口device_add,只是多了将resource注册进内核的步骤。platform_driver_register也是调用driver_register,而且在driver_register中,会调用到driver的probe函数。platform_device_register()注册过程------------------------------------/* arch/arm/ 阅读全文
posted @ 2012-04-02 17:17 super119 阅读(400) 评论(0) 推荐(0)
摘要: 转自:http://blog.csdn.net/lanmanck/article/details/4455692从Linux 2.6起引入了一套新的驱动管理和注册机制:Platform_device和Platform_driver。 Linux中大部分的设备驱动,都可以使用这套机制, 设备用Platform_device表示,驱动用Platform_driver进行注册。 Linux platform driver机制和传统的device driver 机制(通过driver_register函数进行注册)相比,一个十分明显的优势在于platform机制将设备本身的资源注册进内核,由内核统.. 阅读全文
posted @ 2012-04-02 17:07 super119 阅读(284) 评论(0) 推荐(0)
摘要: 在文章《ARM linux kernel从入口到start_kernel代码分析 -- 只到machine type选中为止》中,bootloader将machine type(是一个数字)放在了R5寄存器里面,然后linux kernel枚举所有machine type数字,找到匹配的,然后执行machine_desc结构中的一系列初始化函数。那在编写kernel driver的时候,如何给板子申明一个machine type的数字?这个数字就是machine_desc结构中nr这个member的值。当使用MACHINE_START宏定义自己板子的machine_desc结构的时候,假设给. 阅读全文
posted @ 2012-04-02 15:07 super119 阅读(603) 评论(0) 推荐(0)
摘要: 转载自:http://blog.sina.com.cn/bytex本文针对arm linux, 从kernel的第一条指令开始分析,一直分析到进入start_kernel()函数.我们当前以linux-2.6.19内核版本作为范例来分析,本文中所有的代码,前面都会加上行号以便于和源码进行对照.例:在文件init/main.c中:00478: asmlinkage void __init start_kernel(void)前面的"00478:" 表示478行,冒号后面的内容就是源码了.在分析代码的过程中,我们使用缩进来表示各个代码的调用层次.由于启动部分有一些代码是平台特定 阅读全文
posted @ 2012-04-02 14:58 super119 阅读(498) 评论(1) 推荐(0)
上一页 1 ··· 13 14 15 16 17 18 19 20 21 ··· 71 下一页