硬件开发/芯片架构
颇锐克
Graphics, GPU, device driver,Android Framwork
展开
-
linux设备驱动
前言:(总结已经基本写完,这段时间我会从新排版和修正。错误总会有的,望能指正!)前段时间学习了嵌入式驱动,趁着没开始找工作,这段时间我会每天抽出时间来复习。我的总结是根据学习时的笔记(李杨老师授课)、《linux内核设计与实现》第三版、《linux设备驱动程序》第三版和《linux设备驱动开发详解》第一版来归纳的。文章中涉及一些自己的想法,并不能保证所说的一定正确。我也转载 2015-12-23 20:57:58 · 470 阅读 · 0 评论 -
ARM 学习笔记(四) 快速上下文切换(FCSE)技术
接上回说, 我们已经了解存储器管理的方法,现在我们来看一下,ARM 对不同进程的地址管理-------快速上下文切换技术(Fast Context Switch Extension ,FCSE ). FCSE 通过修改系统中不同进程的虚拟地址,避免在进行进程间切换时造成的虚拟地址到物理地址的重映射,从而提高系统的性能。 FCSE的原理 通常情况下,转载 2017-08-04 09:59:46 · 2184 阅读 · 0 评论 -
Linux内核学习实践之红外驱动分析—RCA38KHz软解码
说明:本分析基于AM6C平台Linux3.0.8内核,其他内核版本仅供参考。本文以Amlogic的红外驱动代码片段为例;对之前内核学习有一个很好的实践:1.平台总线、设备及驱动部分;《Linux总线、设备与驱动》uvc设备分析,主要是总线驱动的match函数、设备和驱动的互相发现机制等。2.中断处理部分,中断处理底半部;《Linux中断编程》中断处理底半部,复习中断的注转载 2017-12-11 11:00:40 · 2099 阅读 · 0 评论 -
Android原子操作的实现原理
http://blog.sina.com.cn/s/blog_dae890d10101dqfp.htmlAndroid原子操作的实现方式和CPU的架构有密切关系,现在的原子操作一般都是在CPU指令级别实现的,这样不但简单,而且效率非常高。下面看看arm平台下Android是如何实现原子操作的。虽然原子操作的接口函数有十来个,但是实际上只有两个函数中通过汇编代码实现了原子操作:函数and转载 2017-12-13 11:20:48 · 1415 阅读 · 0 评论 -
GitHub 嵌入式项目
https://www.zhihu.com/question/27835930首页发现话题登录加入知乎GitHub 上有什么嵌入式方面的项目?关注问题写回答嵌入式系统转载 2018-01-13 17:21:34 · 5458 阅读 · 0 评论 -
V-by-one 与lvds
导读:V-by-One HS是由日本赛恩电子公司(THine Electornics)开发的适用于平板显示器的信号传输接口标准。目前,广泛应用在多功能打印ntent " style="word-break:break-all"> V-by-One HS是由日本赛恩电子公司(THine Electornics)开发的适用于平板显示器的信号传输接口标转载 2018-01-22 16:12:35 · 17898 阅读 · 2 评论 -
linux fdt 扁平设备树
ARM Linux 3.x的设备树(Device Tree)转载:http://blog.csdn.net/21cnbao/article/details/84575461. ARM Device Tree起源Linus Torvalds在2011年3月17日的ARM Linux邮件列表宣称“this whole ARM thing is af*cki转载 2018-01-05 10:48:55 · 2214 阅读 · 0 评论 -
Linux设备驱动程序学习笔记 高级字符驱动学习--阻塞型I/0
提出问题:若驱动程序无法立即满足请求,该如何响应? 比如:当数据不可用时调用read,或是在缓冲区已满时,调用write解决问题:驱动程序应该(默认)该阻塞进程,将其置入休眠状态直到请求可继续。 休眠:当一个进程被置入休眠时,它会被标记为一种特殊状态并从调度器运行队列中移走,直到某些情况下修改了这个状态,才能运行该进程。安全进入休眠两原则:1.永远不要在原子上下文中进入休眠转载 2018-01-05 14:27:04 · 343 阅读 · 0 评论 -
linux等待队列wait_queue_head_t和wait_queue_t
等待队列在linux内核中有着举足轻重的作用,很多linux驱动都或多或少涉及到了等待队列。因此,对于linux内核及驱动开发者来说,掌握等待队列是必须课之一。 Linux内核的等待队列是以双循环链表为基础数据结构,与进程调度机制紧密结合,能够用于实现核心的异步事件通知机制。它有两种数据结构:等待队列头(wait_queue_head_t)和等待队列项(wait_queue_t)。等待队列头和等待转载 2018-01-05 14:42:27 · 389 阅读 · 0 评论 -
list_for_each and kernel panic problem
list_for_each()的定义:[plain] view plain copy /** * list_for_each - iterate over a list * @pos: the &struct list_head to use as a loop counter. * @head: the head for you转载 2018-01-05 15:39:42 · 204 阅读 · 0 评论 -
NB-iot开发平台
我们设计了一款基于移远BC95的NB最小系统NB100,NB100包含了天线射频、供电、SIM卡座、ESD防护等电路。接上电源、串口即可使用。用户只需要注重上层应用,可以最快的速度推出NB产品!其实早在一个多月前,NB100就已经生产完成,迟迟未上市的原因是在等我们的重量级的云服务产品:轻量级的云平台,http://cloud.iotxx.com,因为我们的云平台解决了当下NB模块使用的几大痛点:转载 2018-01-08 23:40:15 · 7789 阅读 · 0 评论 -
《Linux内核设计与实现》读书笔记(十二)- 内存管理
《Linux内核设计与实现》读书笔记(十二)- 内存管理内核的内存使用不像用户空间那样随意,内核的内存出现错误时也只有靠自己来解决(用户空间的内存错误可以抛给内核来解决)。所有内核的内存管理必须要简洁而且高效。主要内容:内存的管理单元获取内存的方法获取高端内存内核内存的分配方式总结 1. 内存的管理单元内存最基本的管理单元是页,同时按照内存地址的大小,大致分为3转载 2017-06-17 14:30:31 · 519 阅读 · 0 评论 -
PAGE_ALIGN()
将物理地址addr修整为页边界地址(页的上边界)#define PAGE_ALIGN(addr) (((addr)+PAGE_SIZE-1)&PAGE_MASK) |------------|PAGE_ALGN(addr) | | | | |转载 2017-06-17 10:40:16 · 2555 阅读 · 0 评论 -
DMABUF, DMA mapping,IOMMU的区别
1. DMABUF can be used as a wrapperto encapsulate other memory management frameworks. All these memory managementframework(I mean mostly for graphics), buffer is the keypoint. DMABUF defines astandard转载 2017-06-06 09:39:00 · 3286 阅读 · 0 评论 -
MMU tlb
1-3、ARM开发步步深入之MMU初窥实验目的:启用MMU,映射SDRAM的地址空间,操作虚拟地址实现“点灯大法”,借此掌握MMU的使用。实验环境及说明:恒颐S3C2410开发板H2410。H2410核心板扩展有64MB的K4S561632 SDRAM(4M*16bit*4BANK),地址范围是0x30000000~0x33FFFFFF。GPIO端口的地址范围是0x转载 2016-06-01 10:55:06 · 2404 阅读 · 0 评论 -
TLB
TLB(Translation Lookaside Buffer)传输后备缓冲器是一个内存管理单元用于改进虚拟地址到物理地址转换速度的缓存。TLB是一个小的,虚拟寻址的缓存,其中每一行都保存着一个由单个PTE组成的块。如果没有TLB,则每次取数据都需要两次访问内存,即查页表获得物理地址和取数据。中文名传输后备缓冲器外文名Translation Lookaside Buffer简转载 2016-05-09 19:11:55 · 874 阅读 · 0 评论 -
S5PV210——内存配置(DDR2)
S5PV210有两个独立的DRAM控制器,分别是DMC0和DMC1,其中,DMC0最大支持512MByte,DMC1最大支持1GByte,而DMC0和DMC1又同时支持两个片选CS0和CS1。S5PV210的内存模块相比2440和6410来讲要更加复杂一些,要想正确的配置S5PV210的内存,应该仔细阅读芯片手册相关部分,在配置参数时也应该适当的阅读下内存芯片的手册。这部分的寄存器和配置过转载 2016-07-27 13:12:06 · 1040 阅读 · 0 评论 -
cache type
IA32中的5种caching type(也叫memory type)大部分内容来至于IA32手册第三卷10.3 METHODS OF CACHING AVAILABLE英文部分是绝对正确的,因为是原文。中文部分是一些自己的总结与理解,凑活着看吧。 IA32现在一共有5种caching type(也叫memory type)Table 10-2. Memor转载 2016-07-18 20:04:51 · 1215 阅读 · 0 评论 -
MMU 段映射
MMU_段式映射 27100本文以S3C2440 MMU的段式映射作为例程来讲解MMU的工作原理 首先, 段式映射的示意图如下:该例程有5个文件构成:head.s-------------入口程序mmu.lds-----------连接文件init.c---------------初始化文件makefile------转载 2016-07-19 13:06:35 · 1422 阅读 · 0 评论 -
MMU 工作原理
一、内存管理单元MMU介绍内存管理单元简称MMU,它负责虚拟地址到物理地址的映射,并提供硬件机制的内存访问权限检查。MMU使得每个用户进程拥有自己独立的地址空间,并通过内存访问权限的检查保护每个进程所用的内存不被其他进程破坏。重点就在于地址映射:页表的结构与建立、映射的过程。1、S3C2440 MMU地址变换过程 1)地址的分类一个程序在运行之前,没有必要全部装入内存,仅需转载 2016-07-19 15:24:03 · 15259 阅读 · 1 评论 -
arm 上电过程以及uboot
要截图另存插入等等),我把文章的PDF版本上传到了CSDN下载资源中。为了给自己赚点积分,所以标价2分,没有积分的同学可以直接留言跟我要,记得留下邮箱。以下是文章内容,由于我懒得编辑图片了,所以文章看来会很不爽,强烈推荐点击以上红色链接下载pdf版。文件编号:DCC01版本号:1.0 ARM上电启动及Uboot代码分析部转载 2016-08-05 13:23:05 · 3356 阅读 · 0 评论 -
arm 多核处理器启动
说明:该流程图按照代码执行时间顺序划分为4部分:1. Bootloader在图片上半部,最先启动;2. Kernel在图片下半部,由bootloader引导启动;3.CPU0执行流程在图片左半部,bootloader代码会进行判断,先行启动CPU0;4. Secondary CPUs在图片右半部,由CPU唤醒 具体启动流程如下:1. 在bo转载 2016-08-05 14:34:20 · 1358 阅读 · 0 评论 -
ioctrl 详解
.ioctl的实现 一、ioctl的简介:虽然在文件操作结构体"struct file_operations"中有很多对应的设备操作函数,但是有些命令是实在找不到对应的操作函数。如CD-ROM的驱动,想要一个弹出光驱的操作,这种操作并不是所有的字符设备都需要的,所以文件操作结构体也不会有对应的函数操作。 出于这样的原因,ioctl就有它的用处了————一些没办法归类的函转载 2016-10-03 14:59:01 · 4691 阅读 · 0 评论 -
内存 tunning
adb shell dumpsys procstats原创 2016-11-17 15:11:38 · 381 阅读 · 0 评论 -
LCD接口
LCD常用接口原理点击打开链接点击打开链接点击打开链接点击打开链接点击打开链接点击打开链接点击打开链接点击打开链接 xubin平台信息:内核:linux2.6/linux3.0系统:android/android4.0 平台:samsung exynos 4210、exynos 4412转载 2017-05-02 18:57:43 · 480 阅读 · 0 评论 -
workqueue 概述
项目需要,在驱动模块里用内核计时器timer_list实现了一个状态机。郁闷的是,运行时总报错“Scheduling while atomic”,网上搜了一下:"Scheduling while atomic" indicates that you've tried to sleep somewhere that you shouldn't - like within a spinlo转载 2018-01-10 11:03:52 · 1023 阅读 · 0 评论