自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

程序猿Ricky的日常干货

学而不思则罔,思而不学则殆! (xiehaocheng127@163.com)

  • 博客(12)
  • 资源 (4)
  • 收藏
  • 关注

原创 内核中的宏定义__init,__initdata,__exitdata

在linux内核中,我们经常会使用到一些宏定义,比如__init,__initdata,__exitdata等等。那么这些宏定义到底什么意思呢?接下来我们就来看一下。kernel/include/linux/init.h: 我们来选择一些常用的宏定义,如下所示:/* These are for everybody (although not all archs will actually d

2016-05-31 15:15:32 7192

原创 linux gic驱动

GIC———-ARM Generic Interrupt Controller一、GIC简介: GIC是的ARM研发的一个通用的中断控制器,它在硬件上的实现形态分为两种: 一种是ARM体系中的半导体公司在研发自己的SOC的时候,向ARM公司购买GIC的IP,这些GIC的型号有:GIC-400,GIC-500等等。另一种形态是ARM vensor直接购买ARM公司已经集成了GIC的多核方案,比如C

2016-05-30 15:31:02 5262

原创 嵌入式linux init系统(busybox init)

(一)System V init 首先我们来讨论PC上运行的Linux系统,它启动后从BIOS开始,进入bootloader,有bootloader加载内核,进入内核初始化。内核启动的最后一步就是创建一个pid为1的init进程。这是系统的第一个进程,它负责生产其他所有用户进程,因此它是所有其他进程的祖先。 Linux如果仅仅将内核运行起来,实际上对用户来说没有任何可操作性,所以需要init进程

2016-05-28 15:53:50 2924

原创 采用usb线刷linux固件的原理

通过其他文章,我已经提到过,一款SOC都是自带BROM的,上电后都首先运行BROM中的代码,那么线刷固件和BROM有什么关系呢?我们接下来来研究下。对于BROM它的作用有两个,一个是用来正常启动固件,另一个就是刷机了。一般BROM中的固化程序会检测当前SOC的状态,到底是刷机状态呢,还是正常启动的状态,它一般是通过检测SOC上的寄存器来判断,并且SOC会引出跟这个寄存器相关的引脚来供硬件工程师添加按

2016-05-27 15:08:49 1917

原创 arm裸机程序启动流程

Linux系统的引导: 一个SOC拿过来,它是有内部BROM和SRAM的,这个BROM中会固化芯片厂商的最初引导代码,我们叫它RBL(ROM boot loader),它是SOC上电后开始运行的地方,它会判断是哪种启动方式,如果是nand启动,就会从nand的起始地址处读取UBL(user boot loader)并且复制到ARM的内存里面,也就是上面说的片内SRAM,UBL运行在ARM的内存里,

2016-05-27 12:25:59 4530

原创 内核中断处理-从CPU说起

当ARM CPU接收到中断线上过来的信号以后,会执行一系列操作,如下面所示:1、把cpsr保存到相应模式下的spsr(spsr_mode)2、把pc保存到相应模式下的lr (lr_mode)3、设置cpsr为相应异常模式,并屏蔽中断4、设置pc为相应异常处理程序的入口地址这些都是硬件上帮你做好的,接下来的工作就需要软件来处理了,进入了异常处理程序的入口,也就是linux内核中所设置的异常向量

2016-05-27 11:23:26 1534

原创 kernel启动过程中的调试打印

内核启动过程中涉及到多个地方,启动过程的代码由汇编代码和C代码组成。其中的打印函数也有多个。 1. 汇编阶段 打印函数包括如下几种: printascii printch printhex8 printhex4 printhex2这些函数定义在kernel/arch/arm/kernel/debug.S中,需要在make menuconfig中使能Kernel low-level

2016-05-26 14:59:01 4062

原创 内核引导过程

BROM引导 ARM CPU刚上电时,它的PC寄存器指针指向IC内嵌的一片ROM的起始位置处,这片ROM称之为BROM(boot rom),系统就是通过这片BROM引导起来的。BROM的空间比较小,一般是32/64KB,IC上的ShareRAM大小也不尽相同,所以IC引导过程也是会有所不同。 BROM中会存储上电引导程序,这段程序也一般会包括以下几个内容:1. CPU上电初始化操作。2.

2016-05-23 17:00:21 4044 1

转载 内核中断子系统框架

本文是作者看了蜗窝科技上的技术贴后经过自己的思考,做出的一个整理,通过这个过程记录自己的学习心得。主要从框架的角度着手,具体内容不做深入介绍。 索引:http://www.wowotech.net/linux_kenrel/interrupt_subsystem_architecture.html 简介从硬件说起 中断硬件系统,主要由三种器件组成,分别是CPU、中断控制器(Interrupt C

2016-05-19 14:54:49 1424

原创 内核input子系统

简介 input子系统的设计是为了支持linux中所有的输入设备。它由三部分组成,分别是设备驱动层,核心层,事件处理层。在使用之前必须要先加载核心层模块(input core),然后在加载相应的设备驱动(device driver)和事件处理层(event handler)。子系统框架 核心层(core):作为input子系统的核心,它提供了input子系统所需要的大部分功能和接口,向下提

2016-05-17 19:27:20 610

原创 Linux自定义timer实现(基于setitimer)

概论不管是用户空间的程序开发,还是内核空间的程序开发,很多时候都需要有定时器的支持,定时器属于程序开发中的基本组件。定时器一般按照使用场景分为两种类型:1.Single-Shot Timer2.Repeating Timer其中第一种定时器,从注册到终止只执行一次,而第二种定时器,在每次执行完以后,自动重新开始。本质上,可以认为 Repeating Timer 是在 Single-Shot Time

2016-05-17 13:57:58 1215

原创 linux系统中的时间及操作函数

(一)Linux系统中的时间rtc由rtc芯片提供的时间,可以转换为格林尼治时间,linux中把这一类时间称为wall time,墙上时间。rtc时间由rtc芯片来维护更新,它通常由一个专门的计时硬件来实现,软件可以读取该硬件来获得年月日、时分秒等时间信息。rtc时间是可持续计时的,通常硬件上会加上一个后备电池供电,这样即使系统关闭,rtc时间依然是正常更新的,这样就可以保证...

2016-05-17 10:05:19 3110

linux gtk hello test

gtk hello world,test for gtk lib

2016-01-14

linux v4l2 camera config

linux v4l2 camera config

2016-01-14

v4l2 camera capture and config

linux系统下的camera capture和camera config实例

2015-08-17

linux v4l2 camera capture

v4l2接口,camera capture实例,合法合规!

2003-07-28

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除