显示技术介绍(3)_CRT技术
作者:wowo 发布于:2016-1-30 22:18 分类:显示
CRT(Cathode Rays Tube,阴极射线管)是最原始的电子显示技术,在上世纪被广泛运用于模拟电视(Analog television)系统中。本文将以模拟电视系统为背景,介绍CRT显示技术的原理、特性以及一些关键术语。
众所周知,CRT显示已经逐步被数字显示取代,已有退出历史舞台之势,本文之所以介绍它,原因有三:
1)模拟电视是我们这一代人童年的记忆,美好又神秘。现在回头去看,发觉其中的技术是那么的简单、有趣,值得一说。
2)帮助理解显示时序(video mode,or display timings)。对写过显示驱动的人来说,显示屏的那长长一串的时序相关的参数(xres, yres, hsync len, vsync len, left margin, etc.),足以让自己崩溃。追根溯源,它们产生于CRT技术,现在之所以还存在,很大程度上是CRT的延续,没有太多实质的意义。
3)现在很多前沿的显示技术,如PDP、FED等,都和CRT的工作机制类似(具体可以参考“显示技术介绍(2)_电子显示的前世今生”中的介绍)。理解CRT是理解这些新技术的基础。
标签: CRT scan blank unblank front porch back
蓝牙协议分析(2)_协议架构
作者:wowo 发布于:2016-1-14 22:20 分类:蓝牙
本文是蓝牙协议分析的第二篇文章,在“蓝牙协议分析(1)_基本概念”的基础上,从整体架构的角度,了解蓝牙协议的组成,以便加深对蓝牙的理解。标签: Bluetooth l2cap profile hci gap
显示技术介绍(2)_电子显示的前世今生
作者:wowo 发布于:2015-11-30 22:19 分类:显示
从1907年证实CRT(Cathode Ray Tube)技术可用于电视显示至今,电子显示技术经历了近100年的发展。100年的时间,说长不长,说短也不短;显示技术的发展,说快不快,说慢也不慢。
CRT技术是最原始的显示技术,但它的生命周期一直持续到2000年后,随着LCD(Liquid Crystal Display)的普及才逐渐退出历史舞台,跨度近90年,这是“不快”的由来。
而最近10年,各种新显示技术,又有层出不穷、快速发展之势,如OLED(Organic light-emitting diode display)、电子墨水(E Ink)、激光电视(Laser TV)、IMOD(Interferometric modulator display)等2D显示技术,如激光显示(Laser display)、光场显示(Light field display)等3D显示技术,这是“不慢”的由来。
蜗蜗本来只打算focus在Linux显示子系统的分析上,不想涉及太多的“题外话”,但专业技术的诱惑力,实在不比linux kernel小。另外,网上真正关注“技术”本身的资料又太少(大多是为了卖电视而写的软文)。因此就在兴趣的驱动下,对显示技术的发展做了一些较深入的了解,顺便在此记录一下。这就是本文以及后续相关文章的由来。
当然,只有兴趣还远远不够,因为任何商业化的技术背后,都有很多基础学科的支撑,数学、物理学、化学、材料学、等等。而离开学校越久远,对这些基础知识越生疏,也只能浅尝辄止了。不过还好,有强大的WJ百科,可以事半功倍,本文大多参考并翻译自下面链接,有兴趣的读者可以自行阅读:
https://en.wikipedia.org/wiki/History_of_display_technology
https://en.wikipedia.org/wiki/Display_device
ARM64的启动过程之(六):异常向量表的设定
作者:linuxer 发布于:2015-11-24 18:22 分类:ARMv8A Arch
本文主要描述了4.1.10内核初始化过程中如何初始化异常向量表。当然,首先需要准备一些异常的基础知识,这主要在第二章,如果你非常熟悉 ARM64的异常,那么可以忽略这个章节。 第三章描述了ARM64上各种形形色色的异常,第四章描述了ARM64上硬件提供的协助,最后一章描述了代码过程。
为了简化,本文对所描述的异常进行了限制:
1、所有的exception level的运行状态都是AArch64,不考虑异常发生在AArch32 excution state的时候
2、不考虑支持security extension,也就是说EL3状态的异常处理也不在本文描述
3、不考虑virtualization的支持,也就是说EL2的异常处理不会在本文描述
一句话总结,本文主要描述EL0和EL1这两个exception level下的异常向量表的设定。
显示技术介绍(1)_概述
作者:wowo 发布于:2015-11-22 21:44 分类:显示
本文是显示子系统的第一篇文章,介绍嵌入式系统显示有关的硬件组成,进而拆分为相对独立的模块,以便在后续的文章中一一介绍。ARM64的启动过程之(五):UEFI
作者:linuxer 发布于:2015-10-30 19:27 分类:ARMv8A Arch
在准备大刀阔斧进入start_kernel之际,我又重新review了一下head.S文件,看看是否有一些遗漏的知识点,很不幸,看到了 CONFIG_EFI这个配置项。当然,在一年前阅读kernel代码的时候就了解过相关的内容,但是,做为一个嵌入式工程师总是或多或少对其有些排斥, 因此习惯性的忽略掉CONFIG_EFI相关的代码,逃避总不是办法,在本文中,我们一起来探讨ARM64平台上UEFI相关的内容。ARM64的启动过程之(四):打开MMU
作者:linuxer 发布于:2015-10-24 12:35 分类:ARMv8A Arch
经过漫长的前戏,我们终于迎来了打开MMU的时刻,本文主要描述打开MMU以及跳转到start_kernel之前的代码逻辑。这一节完成之后,我们就会离开痛苦的汇编,进入人民群众喜闻乐见的c代码了。标签: 打开MMU
ARM64的启动过程之(三):为打开MMU而进行的CPU初始化
作者:linuxer 发布于:2015-10-21 19:32 分类:ARMv8A Arch
上一节主要描述了为了打开MMU而进行的Translation table的建立,本文延续之前的话题,主要是进行CPU的初始化(注:该初始化仅仅为是为了turn on MMU)。
本文主要分析ARM64初始化过程中的__cpu_setup函数,代码位于arch/arm64/mm/proc.S中。主要的内容包括:
1、cache和TLB的处理
2、Memory attributes lookup table的构建
3、SCTLR_EL1、TCR_EL1的设定
ARM64的启动过程之(二):创建启动阶段的页表
作者:linuxer 发布于:2015-10-13 18:18 分类:ARMv8A Arch
本文主要描述了ARM64启动过程中,如何建立初始化阶段页表的过程。我们知道,从bootloader到kernel的时候,MMU是off的 (顺带的负作用是无法打开data cache),为了提高性能,加快初始化速度,我们必须某个阶段(越早越好)打开MMU和cache,而在此之前,我们必须要设定好页表。
在 初始化阶段,我们mapping三段地址,一段是identity mapping,其实就是把物理地址mapping到物理地址上去,在打开MMU的时候需要这样的mapping(ARM ARCH强烈推荐这么做的)。第二段是kernel image mapping,内核代码欢快的执行当然需要将kernel running需要的地址(kernel txt、dernel rodata、data、bss等等)进行映射了,第三段是blob memory对应的mapping。
在本文中,我们会混用下面的概念:page table和translation table、PGD和Level 0 translation table、PUD和Level 1 translation table、PMD和Level 2 translation table、Page Table和Level 3 translation table。最后,还是说明一下,本文来自4.4.6内核,有兴趣的读者可以下载来对照阅读本文。
ARM64的启动过程之(一):内核第一个脚印
作者:linuxer 发布于:2015-10-10 15:06 分类:ARMv8A Arch
kernel的整个启动过程涉及的内容很多,不可能每一个细节都描述清楚,因此我打算针对部分和ARM64相关的启动步骤进行学习、 整理,并方便后续查阅。本文实际上描述在系统启动最开始的时候,bootloader和kernel的交互以及kernel如何保存bootloader 传递的参数并进行校验,此外,还有一些最基础的硬件初始化的内容。
本文中的source来自4.1.10内核,这是一个long term的版本,后续一段时间的文章都会基于这个long term版本进行。
功能
最新评论
- wangjing
写得太好了 - wangjing
写得太好了! - DRAM
圖面都沒辦法顯示出來好像掛點了。 - Simbr
bus至少是不是还有个subsystem? - troy
@testtest:只要ldrex-modify-strex... - gh
Linux 内核在 sparse 内存模型基础上实现了vme...
文章分类
随机文章
文章存档
- 2025年4月(5)
- 2024年2月(1)
- 2023年5月(1)
- 2022年10月(1)
- 2022年8月(1)
- 2022年6月(1)
- 2022年5月(1)
- 2022年4月(2)
- 2022年2月(2)
- 2021年12月(1)
- 2021年11月(5)
- 2021年7月(1)
- 2021年6月(1)
- 2021年5月(3)
- 2020年3月(3)
- 2020年2月(2)
- 2020年1月(3)
- 2019年12月(3)
- 2019年5月(4)
- 2019年3月(1)
- 2019年1月(3)
- 2018年12月(2)
- 2018年11月(1)
- 2018年10月(2)
- 2018年8月(1)
- 2018年6月(1)
- 2018年5月(1)
- 2018年4月(7)
- 2018年2月(4)
- 2018年1月(5)
- 2017年12月(2)
- 2017年11月(2)
- 2017年10月(1)
- 2017年9月(5)
- 2017年8月(4)
- 2017年7月(4)
- 2017年6月(3)
- 2017年5月(3)
- 2017年4月(1)
- 2017年3月(8)
- 2017年2月(6)
- 2017年1月(5)
- 2016年12月(6)
- 2016年11月(11)
- 2016年10月(9)
- 2016年9月(6)
- 2016年8月(9)
- 2016年7月(5)
- 2016年6月(8)
- 2016年5月(8)
- 2016年4月(7)
- 2016年3月(5)
- 2016年2月(5)
- 2016年1月(6)
- 2015年12月(6)
- 2015年11月(9)
- 2015年10月(9)
- 2015年9月(4)
- 2015年8月(3)
- 2015年7月(7)
- 2015年6月(3)
- 2015年5月(6)
- 2015年4月(9)
- 2015年3月(9)
- 2015年2月(6)
- 2015年1月(6)
- 2014年12月(17)
- 2014年11月(8)
- 2014年10月(9)
- 2014年9月(7)
- 2014年8月(12)
- 2014年7月(6)
- 2014年6月(6)
- 2014年5月(9)
- 2014年4月(9)
- 2014年3月(7)
- 2014年2月(3)
- 2014年1月(4)