- 博客(60)
- 资源 (5)
- 收藏
- 关注
转载 arm-linux内存管理
http://blog.csdn.net/tianxiawuzhei/article/details/7538334毛德操《嵌入式系统》读书笔记。接着第二篇说1、与通用计算机系统相比,嵌入式系统中内存的组成与布局更加多样。因为长采用不同质的存储器件,如ROM/RAM等外设接口的寄存器,按内存统一编址。2、ARM-Linux内核的代码不应该是专门针对某一种特定系统的,
2013-06-08 09:36:22 701
转载 X86架构内存管理寄存器
处理器提供了4个内存管理寄存器(GDTR、LDTR、IDTR和TR),用于指定内存分段管理所用系统表的基地址,如图4-2所示。处理器为这些寄存器的加载和保存提供了特定的指令。 GDTR、LDTR、IDTR和TR都是段基址寄存器,这些段中含有分段机制的重要信息表。GDTR、IDTR和LDTR用于寻址存放描述符表的段。TR用于寻址一个特殊的任务状态段(Task State Segmen
2013-06-07 21:40:00 791
转载 kthread_create与kernel_thread的区别
从表面上来看,这两个函数非常的类似,但是实现却是相差甚远。kthread_create是通过work_queue来实现的,kernel_thread是通过do_fork来实现的。 kernel thread可以用kernel_thread创建,但是在执行函数里面必须用daemonize释放资源并挂到init下,还需要用 completion等待这一过程的完成。kthread_c
2013-05-14 09:14:34 2061
原创 用c写的一个栈的链表实现
#include "stdio.h"#include "stdlib.h"struct node{ int data; struct node *next;};typedef struct node *p;typedef int ElementType;typedef p stack;void error(char *s);stack creat_stack
2013-05-13 15:46:07 571
转载 s3c6410关于SD卡启动
要研究裸机程序的编写,必须要有一个“全裸”的环境。友善提供的superboot可以提供执行用户自定义程序的能力,但其实这样运行的程序环境还是依赖于superboot的, 那些内存初始化、时钟初始化,串口初始化等工作都已经由superboot做了。tiny6410支持nandflash和sd卡启动两种模式,nandflash的烧写还是依赖superboot,所以比较简便的方法是通过sd卡启动,sup
2013-05-13 08:22:16 833
转载 linux进程及进程控制
Linux进程控制 程序是一组可执行的静态指令集,而进程(process)是一个执行中的程序实例。利用分时技术,在Linux操作系统上同时可以运行多个进程。分时技术的基本原理是把CPU的运行时间划分成一个个规定长度的时间片,让每个进程在一个时间片内运行。当进程的时间片用完时系统就利用调度程序切换到另一个进程去运行。因此实际上对于具体单个CPU的机器来说某一个时刻只能运行一个进程。但由
2013-04-30 10:17:03 908
转载 大学十年(一个程序员的路程)
作者 :林锐(一)写此文使我很为难,一是担心读者误以为我轻浮得现在就开始写自传,二是担心朋友们误以为我得了绝症而早早留下遗作。 不论是落俗套还是不落俗套地评价,我在大学十年里都是出类拔萃的好学生。并且一直以来我对朋友们和一些低年级的学生们都有很大的正面影响。这十年是一个从幼稚到成熟的过程,交织着聪明与蠢笨、勤奋与懒散、狂热与怯懦、成功与失败。做对了的事可树立为榜样,做错的事可挂作
2013-04-22 09:08:53 2306
原创 linux用户空间和内核空间的延时函数
用户空间:#include 1、unsigned int sleep(unsigned int seconds);秒级 2、int usleep(useconds_t usec); 微秒级 内核空间: include 1、void ndelay(unsigned long nsecs); 纳秒级
2013-04-08 20:12:27 925
原创 linux 信号处理函数一个例子
#include "signal.h"#include "stdio.h"void csdn_function(int signal){ if(signal==SIGQUIT) printf("sigquit received!\n");}int main(int argc,char **argv){
2013-04-08 20:09:29 557
翻译 LPC32xx电源管理 部分译
PLL锁相环起到调频的作用时钟运行模式:1、运行模式(Run) 2、直接运行模式(Direct Run) 3、停止模式(Stop)运行模式下的时钟来自于PLL提供的高频率,直接运行模式下就是绕过PLL,CPU运行在较低的频率下,停止模式就是时钟停止直到事件发生唤醒时钟。LPC3250大部分功能块都有时钟使能不使能控制寄存器,通
2013-04-08 20:00:10 844
原创 LPC32xx启动过程
1、 启动首先把IROM(16KB)映射到0x00的地址上,从0x00出执行程序加载nanflash上的kickstart到IRAM(就相当于SRAM),然后再由kickstart加载s1L,s1L被加载进IRAM去执行。(NandFlash从0到1 是一段kickstart引导代码。从2 到20是一段S1L 引导代码。20以后才是应用程序)2、S1L在延时以后加
2013-04-08 19:57:23 988
原创 LPC32xx定时器中断
一个项目用LPC3250做的,需要一个定时器中断,自己写了一个,附上全部代码,希望那些想用LPC3250的人儿少走弯路/**********************************************************************与定时器0中断有关的结构****************************************************
2013-04-08 19:49:45 1006
转载 摄像头V4L2架构分析
http://blog.csdn.net/scg881008/article/details/71789593 、 Video 核心层的实现 参见内核 /drivers/media/videodev.c( 1 )注册 256 个视频设备 static int __init videodev_init(void){int ret;
2013-03-27 20:29:25 631
转载 TCP/IP 源码分析
一.linux内核网络栈代码的准备知识1. linux内核ipv4网络部分分层结构:BSD socket层: 这一部分处理BSD socket相关操作,每个socket在内核中以struct socket结构体现。这一部分的文件主要有:/net/socket.c /net/protocols.c etc INET socket层:BSD socket是个可以用于各种网络协议的接口,
2013-03-19 21:59:03 1344 2
转载 揭开ZigBee 2006协议栈Z-Stack的”开源“面纱 以及其它的开源协议
转载地址http://blog.chinaunix.net/space.php?uid=20788636&do=blog&id=1841379 我们都在说ZigBee 2006协议栈Z-Stack是开源的,但是这个协议栈到底是全部开源的,还是只是开源一部分,让我们来揭开它的“开源”面纱? Z-Stack是在2007年4月,德州仪器推出业界领先的ZigBee协议栈,Z
2013-03-15 20:44:40 1363
转载 amba_device amba总线
什么是AMBA? ---AMBA是一个片内总线规范。ARM官网的介绍:http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0224b/index.htmlAMBA 协议是用于连接和管理片上系统 (SoC) 中功能块的开放标准和芯片上互连规范。使用它,可以帮助开发带有大量控制器和外设的多处理器设计。AMBA 通
2013-03-14 16:53:58 1048
转载 zimage 生成uimage
内核编译(make):make menuconfigmake defmake 内核编译(make)之后会生成两个文件,一个Image,一个zImage,其中Image为内核映像文件,而zImage为内核的一种映像压缩文件,Image大约为4M,而zImage不到2M。 那么uImage又是什么的?它是uboot专用的映像文件,它是在zImage之前加上一个长度为64字节的
2013-03-12 14:41:08 1025
转载 使用cdev_add注册字符设备的一个例子
1.2.3 使用cdev_add注册字符设备在Linux 2.6内核中的字符设备用cdev结构来描述,其定义如下:struct cdev { struct kobject kobj; struct module *owner; //所属模块 const struct file_operations *ops; //文件操作结构 struct
2013-03-01 19:06:44 2439 2
转载 linux字符设备驱动总结之:全自动创建设备及节点 .
/*************************************************************************************************** linux字符设备驱动总结之:全自动创建设备及节点看了LDD3,深入浅出LDD,以及各个博文,还是需要总结下的。张永辉 2012年10月9
2013-03-01 16:46:41 449
转载 linux tty驱动架构分析
再看Linux tty驱动过程中发现linux的驱动构架中,面向对象的思想已经根深蒂固。就比如这串口驱动,代码中经常有一些貌似和串口无关的代码,比如,tty_register_driver等。但我们却删它不得。因为正是这些代码实现了tty_core和具体的tty_driver(比如串口驱动)的联系和纽带。tty驱动中tty_core为最上层,tty_driver为最下层,线路规程层为中间层。tty
2013-02-27 20:12:43 1768
转载 linux IIC驱动分析
一:前言I2c是philips提出的外设总线.I2C只有两条线,一条串行数据线:SDA,一条是时钟线SCL.正因为这样,它方便了工程人员的布线.另外,I2C是一种多主机控制总线.它和USB总线不同,USB是基于master-slave机制,任何设备的通信必须由主机发起才可以.而 I2C 是基于multi master机制.一同总线上可允许多个master.关于I2C协议的知识,这里不再赘述.可
2013-02-27 14:48:11 568
转载 linux设备模型 很好
OverviewLinux的sysfs文件系统一般mount在/sys目录。本文主要介绍sysfs文件系统中设备驱动模型的建立过程,内核版本2.6.29。设备驱动信息主要用来表示设备以及驱动的层次关系,以及处理热插拔等。/sys中与之相关的数据有:class 代表一类设备,比如mtd、net、tty等等bus 总线,比如PCI、USB、I2
2013-02-27 10:21:29 377
转载 基于platform总线的中断(按键)字符设备驱动设计
原文地址:基于platform总线的中断(按键)字符设备驱动设计 作者:gongping11我的环境:主机:Fedora 14,内核版本2.6.38.1开发板:ARM9 tq2440移植内核版本:linux-2.6.30.41、platform简介为了理解platform总线设备驱动模型的实际运用,我首先分析了基于S3C2410的看门狗驱动实现过程,我本着将自己
2013-02-26 08:02:58 444
转载 class/rtc建立过程
http://hi.baidu.com/renling456000/item/93f9e7117d84dc483b176e5cRTC实时时钟驱动程序分析 在文件interface.c中对函数集s3c_rtcops中的各函数进行包装,以供上层函数调用。rtc-dev.c :该文件主要实现了RTC字符设备的操作函数集:static const struct file_o
2013-02-25 19:48:19 511
转载 linux 设备模型浅析
http://bbs.chinaunix.net/thread-1916621-1-1.html好久都没来过啦.最近又在重看linux device driver这本书.之前看的时候忽略掉了linux设备模型这个章节,这次仔细看了一下,可看的相当头痛,迷迷糊糊...话说源代码时最好的工具书,于是查阅了一下源代码,也大致阅读了一些,没太仔细的句句分析,只是关注了与设备模型相关的。
2013-02-25 09:46:00 487
转载 class_creat()函数应用
class_create()函数应用转载▼ //主要是在/sys/class/ 下创建一个 “name”的文件夹 ! 从linux内核2.6的某个版本之后,devfs不复存在,udev成为devfs的替代。相比devfs,udev有很多优势,在此就不罗嗦了,提醒一点,udev是应用层的东东,不要试图在内核的配置选项里找到它;加入对udev的支持很简单,以作者所写的一个字
2013-02-22 09:58:01 410
转载 linux中container_of(ptr, type, member)
linux中container_of(ptr, type, member)宏的作用是传入结构体类型type的域member地址ptr,返回该结构体变量的首地址,定义如下:#define container_of(ptr, type, member) ({ \ const typeof( ((type *)0)->member ) *__mptr = (ptr); \
2013-02-22 08:27:02 504
转载 linux IIC驱动笔记
最近看了百问网的linux驱动视频,关于IIC部分总结如下: 一、IIC 驱动框架应用层 open read write——————————————————驱动层IIC设备驱动(drv_open drv_read drv_write) IIC总线驱动 ——————————————————硬件 (例如: AT24C02 )
2013-02-21 14:05:18 453
转载 各种initcall的执行先后顺序(module_init、postcore_initcall、arch_initcall、subsys_initcall、 fs_initcall)
现在以module_init为例分析initcall在内核中的调用顺序在头文件init.h中,有如下定义:#define module_init(x) __initcall(x);很明显,module_init()只是一个面具而已,揭开这个面具,下面藏着的是__initcall()__initcall()又是何方神圣呢?继续揭露真相:#define __initcall
2013-02-20 20:41:24 642
转载 linux I2C设备那点事之I2C设备理论篇
一:I2C 概述 I2C是philips提出的外设总线.I2C只有两条线,一条串行数据线:SDA,一条是时钟线SCL ,使用SCL,SDA这两根信号线就实现了设备之间的数据交互,它方便了工程师的布线。因此,I2C总线被非常广泛地应用在EEPROM,实时钟,小型LCD等设备与CPU的接口中。 二:在linux下的驱动思路 谈到在linux系统下编写I2C驱动,目
2013-01-23 10:52:36 812
转载 Linux环境下段错误的产生原因及调试方法小结
最近在Linux环境下做C语言项目,由于是在一个原有项目基础之上进行二次开发,而且项目工程庞大复杂,出现了不少问题,其中遇到最多、花费时间最长的问题就是著名的“段错误”(Segmentation Fault)。借此机会系统学习了一下,这里对Linux环境下的段错误做个小结,方便以后同类问题的排查与解决。1. 段错误是什么 一句话来说,段错误是指访问的内存超出了系统给这个程序所设定的
2013-01-22 21:35:44 472
转载 cygwin下载及安装
关于Cygwin,看一下官方网站(http://www.cygwin.com)上对其的描述吧:What Is Cygwin?■ Cygwin is a Linux-like environment for Windows. It consists of two parts: A DLL (cygwin1.dll) which acts as a Linux API emulation la
2013-01-21 13:51:00 560
转载 windows下编译linux0.11内核
真正能在windows下编译的linux 0.11,不是在Cygwin,也不是在虚拟机里!2008年09月18日 星期四 21:30一、简介 这就是能在windows环境下直接编译的Linux 0.11了,不是在Cygwin,也不是在虚拟机里,而是使用MinGW gcc,这是GNU gcc在Windows下的移植版本.在oldlinux上的论坛看见有许多人在问怎样
2013-01-20 17:13:53 1018
转载 Eclipse IDE for C/C++ Developers安装配置详解,让你用Eclipse开发C/C++ .
最近所学的内容涉及到了C,比如JNI,数据结构算法(C语言描述)……不得不重新捡起C来看,其实我最不愿意学C,原因有二:C太麻烦,大一学的,现在忘记的差不多了;另一个就是它的IDE,即VC,用惯了Eclipse就感觉VC缺少点什么。但是为了以后的学习,现在又不得不重新温习C,早就知道Eclipse可以用来编译C/C++,只需安装一个插件就可以了(即CDT),只是一直没有用过,到Eclipse的官网
2013-01-19 15:43:38 796
转载 linux I2C架构
最近在看Linux 2.6.21内核的I2C驱动,也在网上查了一下资料,有错也有对,有些心得,记录下来吧。里面认识或许多有不当之处,还恳请指正。 1. I2C 协议 1.1 I2C总线工作原理 I2C总线是由数据线SDA和时钟SCL构成的串行总线,各种被控制器件均并联在这条总线上,每个器件都有一个唯一的地址识别,可以作为总线上的一个发送器件或接收器件(具体由器件的
2013-01-18 14:43:12 402
转载 平台rtc驱动最后的疑惑解决driver->probe到平台->probe
通过Platform机制开发发底层驱动的大致流程为: 定义 platform_device---注册 platform_device ---定义 platform_driver-----注册 platform_driver。 1. Platform_device 定义于 kernel/include/linux/platform_device.h中,struct platform_de
2013-01-15 16:00:15 472
转载 subsys_initcall
在linux内核代码里, 到处充满了subsys_initcall,这个调用是用来干吗的呢?有人回答是系统启动时候用来初始化某些系统的,具体怎么初始化的呢,说起来还是有点复杂。以2.6.21内核作为例子。在linux/init.h里,有这样一段代码:#define pure_initcall(fn) __define_initcall("0",fn,1)#define core_in
2013-01-15 13:43:51 356
转载 rtc应用程序编写
这个是linux内核文档关于rtc实时时钟部分的说明,此文档主要描述了rtc实时时钟的作用和编程接口,分别介绍了老的rtc接口和新的rtc类架构。并给出了一个测试rtc驱动的程序。 linux 实时时钟(RTC)驱动 翻译:窗外云天yaozhe
2013-01-14 22:05:40 1371
转载 probe函数何时被调用
最近看到linux的设备驱动模型,关于Kobject、Kset等还不是很清淅。看到了struct device_driver这个结构时,想到一个问题:它的初始化函数到底在哪里调用呢?以前搞PCI驱动时用pci驱动注册函数就可以调用它,搞s3c2410驱动时只要在mach-smdk2410.c中的struct platform_device *smdk2410_devices {}中加入设备也会调用
2013-01-14 21:34:58 463
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人