Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5488212
  • 博文数量: 579
  • 博客积分: 1548
  • 博客等级: 上尉
  • 技术积分: 16621
  • 用 户 组: 普通用户
  • 注册时间: 2012-12-12 15:29
个人简介

http://www.csdn.net/ http://www.arm.com/zh/ https://www.kernel.org/ http://www.linuxpk.com/ http://www.51develop.net/ http://linux.chinaitlab.com/ http://www.embeddedlinux.org.cn http://bbs.pediy.com/

文章分类

全部博文(579)

文章存档

2018年(18)

2015年(91)

2014年(159)

2013年(231)

2012年(80)

发布时间:2012-12-28 19:20:15

    在移植内核的时候,通常会遇到引脚复用(MUX)的配置问题。在现在的Linux内核中,对于TI的ARM芯片,早已经有了比较通用的MUX配置框架。这对于许多TI的芯片都是通用的,这次看AM335X的代码顺手写一下分析,以备后用。一、硬件    对于许多TI的芯片来说,引脚复用的配置是在Control Module(配置模块)的寄存器里配置的,(这个和三星的CPU有点不同,三星的一般在GPIO的寄存器中配置)。所以当你需要配置这些寄存器的时候,请到数据手册的Control Module的Pad Control Registers查找。TI的CPU芯片手......【阅读全文】

阅读(1868) | 评论(0) | 转发(0)

发布时间:2012-12-27 19:12:34

从Linux2.6起,引入了一套新的驱动管理和注册机制:Platform_device和Platform_driver。Linux中大部分的设备驱动,都可以使用这套机制,设备用platform_device表示,驱动用platform_driver进行注册。   Linux platform driver机制和传统的device_driver机制相比,一个十分明显的优势在于platform机制将本身的资源注册进内核,由内核统一管理,在驱动程序中使用这些资源时通过platform_device提供的标准接口进行申请并使用。这样提高了驱动和资源管理的独立性,并且拥有较好的可移植......【阅读全文】

阅读(2227) | 评论(0) | 转发(1)

发布时间:2012-12-27 17:18:05

LINUX ARM平台的GPIO 2011-04-20 20:21:35|  分类: 默认分类 |  标签:define  pin  unsigned  int  0x10     字号:大中小 订阅 首先是代码中的几个宏定义:   2.6.31内核:arch/arm/mach-2410/include/mach/regs-gpio.h   #define S3C2......【阅读全文】

阅读(1429) | 评论(0) | 转发(0)

发布时间:2012-12-27 17:13:20

1.1 U-Boot工作过程 U-Boot启动内核的过程可以分为两个阶段,两个阶段的功能如下: (1)第一阶段的功能 Ø 硬件设备初始化 Ø 加载U-Boot第二阶段代码到RAM空间 Ø 设置好栈 Ø 跳转到第二阶段代码入口 (2)第二阶段的功能 Ø 初始化本阶段使用的硬件设备 Ø 检测系统内存映射 Ø 将内核从Flash读取到RAM中 Ø 为内核设置启动参数 Ø 调用内核 1.1.1 U-Boot启动第一阶段代码分析 第一阶段对应的文......【阅读全文】

阅读(1617) | 评论(0) | 转发(0)

发布时间:2012-12-27 17:06:42

   两年前总结的东西,一时没时间整理,放了很久居然差点忘了,现在重见天日了。但是还不是很完整,先放上来,以后有时间就完善她。~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   最近需要在板子上加上一块WatchDog,以确保在系统出错时自动重启,所以看了一些在嵌入式系统中使用看门狗的资料,现在总结如下:一、看门狗原理    在产品化的嵌入式系统中,为了使系统在异常情况下能自动复位,一般都需要引入看门狗。    看门狗其实就是一个可以在一定时间内被复位的计数器。当看门狗启动后,计数器开始自动计......【阅读全文】

阅读(1389) | 评论(0) | 转发(0)

发布时间:2012-12-27 16:08:03

    在移植bootloader到新嵌入式开发板的过程中经常会碰到初始化DDRx和DDR控制器的问题。而现在较高端的嵌入式CPU中早已集成了DDR2甚至DDR3控制器,这相较于早期使用SDRAM的CPU,在初始化的时候可能会复杂许多。再加上这些代码一般是在系统刚启动的时候运行的,通常为汇编代码,看着那一大坨汇编程序,不免有些恐惧感。但是如果对DDRx内存原理及其与DDRx控制器的关系有些了解的话,这个配置工作其实还是有章可循的。下面我根据自己的开发经验总结如下,但是此处不涉及具体代码,只对一般流程做描述,因为代码必须是和硬件配套的。如果你先看具体代码,......【阅读全文】

阅读(1361) | 评论(0) | 转发(0)

发布时间:2012-12-27 16:07:06

现在我们再来看看lib_arm/board.c中的第二阶段入口函数start_armboot : void start_armboot (void)                      {        init_fnc_t **init_fnc_ptr;   &nbs......【阅读全文】

阅读(1936) | 评论(0) | 转发(0)

发布时间:2012-12-27 16:03:47

本次移植使用的是U-boot-2009.11。    先来看看源码目录结构,再按照代码的执行顺序简单地分析源码 1.U-boot源码整体框架 源码解压以后,我们可以看到以下的文件和文件夹:  cpu 与处理器相关的文件。每个子目录中都包括cpu.c和interrupt.c、start.S、u-boot.lds。 cpu.c初始化CPU、设置指令Cache和数据Cache等 interrupt.c设置系统的各种中断和异常 start.S是U-boot启动时执行的第一个文件,它主要做最早其的......【阅读全文】

阅读(1201) | 评论(0) | 转发(0)

发布时间:2012-12-27 15:47:16

下载与烧写 使用U-boot将映像文件烧写到板上的Flash,一般步骤是:(1)通过网络、串口、U盘、SD卡等方式将文件传输到SDRAM;(2)使用Nand Flash或Nor Flash相关的读写命令将SDRAM中的数据烧入Flash。 下面是烧写范例:如果使用 SD卡和U盘形式更新U-boot,那么首先SD卡和U盘中必须有FAT32文件系统,并在里面存放了u-boot.bin 文件。1) 通过SD卡烧入Nand Flash: [u-boot@MINI2440]# mmc init mmc: Probing for SDHC ... mmc: SD 2......【阅读全文】

阅读(1414) | 评论(0) | 转发(0)

发布时间:2012-12-27 15:46:46

(6) 内存/寄存器操作指令 nm      修改内存值 (指定地址)    格式: nm [.b, .w, .l] address   mm     修改内存值(地址自动加一)格式:  mm [.b, .w, .l] address   md       显示内存值格式:  md [.b, .w, .l] address [# of objects......【阅读全文】

阅读(1415) | 评论(0) | 转发(0)

发布时间:2012-12-27 15:45:39

(3)串口传输命令 命令:loadb   - load binary file over serial line (kermit mode)loadx   - load binary file over serial line (xmodem mode)loady   - load binary file over serial line (ymodem mode)   功能:以不同的协议从串口获取文件.。格式基本都为:load? [ off ] [ baud ]第1个参数是下载到SDRAM的地址,如果不填,就是用默认......【阅读全文】

阅读(1350) | 评论(0) | 转发(0)

发布时间:2012-12-27 15:16:44

   我一贯认为:对于一个技术类的东西,你连用都不会用,那根本就不可能会开发。就好像一个人连Linux不会用,那还谈何开发Linux程序呢?     同样的要开发和移植U-boot,首先要对U-boot有一定的了解,起码要会使用。     所以这里我们首先熟悉一下U-boot的使用以及如何将U-boot烧入mini2440。    当然在这之前首先必须保证你的板子上已经有了U-boot。如果没有那就先烧上一个吧。针对mini2440的U-boot-2009.11的bin文件我已经上......【阅读全文】

阅读(1432) | 评论(0) | 转发(0)

发布时间:2012-12-27 11:50:49

AM335x LCD Controller Driver's Guide /*******************************************************************      author:        卢浩*      time:      ......【阅读全文】

阅读(2525) | 评论(0) | 转发(1)

发布时间:2012-12-27 09:54:34

要深入的学习Linux的工作机制,就必须阅读其源代码。现已最新的2.6.19内核(可以在http://www.kernel.org下载)为例,简单的介绍下Linux内核源代码目录树结构。 arch:包 含和硬件体系结构相关的代码,每种平台占一个相应的目录。和32位PC相关的代码存放在i386目录下,其中比较重要的包括kernel(内核核心部 分)、mm(内存管理)、math-emu(浮点单元仿真)、lib(硬件相关工具函数)、boot(引导程序)、pci(PCI总线)和 power(CPU相关状态)。 block:部分块设备驱动程序。 crypto:常用加密......【阅读全文】

阅读(2295) | 评论(0) | 转发(1)

发布时间:2012-12-22 09:08:33

一.  输入子系统核心分析。    1.输入子系统核心对应与/drivers/input/input.c文件,这个也是作为一个模块注册到内核的。所以首先分析模块初始化函数。 [cpp] view plaincopy static int __init input_init(void)   {       int err;         ......【阅读全文】

阅读(939) | 评论(0) | 转发(0)

发布时间:2012-12-22 08:56:03

linux input子系统分析--主要函数  一. 各种注册函数     因为分析一所讲的每种数据结构都代表一类对象,所以每种数据结构都会对应一个注册函数,他们都定义在子系统核心的input.c文件中。主要有三个注册函数     input_register_device    向内核注册一个input设备     input_register_handle    向内核注册一个handle结构     input_regis......【阅读全文】

阅读(961) | 评论(0) | 转发(0)

发布时间:2012-12-22 08:55:40

linux input子系统分析--概述与数据结构         Input子系统处理输入事务,任何输入设备的驱动程序都可以通过Input输入子系统提供的接口注册到内核,利用子系统提供的功能来与用户空间交互。输入设备一般包括键盘,鼠标,触摸屏等,在内核中都是以输入设备出现的。下面分析input输入子系统的结构,以及功能实现。一. Input子系统结构与功能实现  1. Input子系统是分层结构的,总共分为三层: 硬件驱动层,子系统核心层,事件处理层。     (1)其中硬件驱动层负责操作具体的硬件设备,这......【阅读全文】

阅读(1070) | 评论(0) | 转发(0)

发布时间:2012-12-21 17:35:07

Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 AM335x开发板 红色为注释了的 蓝色为添加上的 PATH 表示当前修改文件的路径 line  表示要修改的代码在当前文件的开始行   1,在原来的开发板上 1,修改 LCD 的分辨率: ......【阅读全文】

阅读(4301) | 评论(1) | 转发(5)

发布时间:2012-12-21 12:55:46

2.3.1 tftp服务器的配置如果用下面一条命令能够看到服务已经启动, 则不用安装, 否则需要按1或2点安装tftp-server服务器.[arm@localhost arm]#netstat -a | grep tftpudp        0      0 *:tftp                 ......【阅读全文】

阅读(959) | 评论(0) | 转发(0)

发布时间:2012-12-17 11:11:52

         内核的输入子系统是对分散的,多种不同类别的输入设备(如键盘,鼠标,跟踪球,操纵杆,触摸屏,加速计和手写板)等字符设备进行统一处理的一层抽象,就是在字符设备驱动上抽象出的一层。输入子系统包括两类驱动程序:事件驱动程序和设备驱动程序。事件驱动程序负责和应用程序的接口,而设备驱动程序负责和底层输入设备的通信。鼠标事件生成文件mousedev属于事件驱动程序,而PS/2鼠标驱动程序是设备驱动程序。事件驱动程序是标准的,对所有的输入类都是可用的,所以要实现的是设备驱动程序而不是事件驱动程序。设备驱动程序可以利用一个已经存在的,合适的事件......【阅读全文】

阅读(1119) | 评论(0) | 转发(0)

发布时间:2012-12-14 18:32:53

七:evdev概述 Evdev对应的设备节点一般位于/dev/input/event0 ~ /dev/input/event4.理论上可以对应32个设备节点.分别代表被handler匹配的32个input device.可以用cat /dev/input/event0.然后移动鼠标或者键盘按键就会有数据输出(两者之间只能选一.因为一个设备文件只能关能一个输入设备).还可以往这个文件里写数据,使其产生特定的事件.这个过程我们之后再详细分析.为了分析这一过程,必须从input子系统的初始化说起. 八:input子系统的初始化Input子系......【阅读全文】

阅读(1108) | 评论(0) | 转发(1)

发布时间:2012-12-14 18:29:11

七:evdev概述 Evdev对应的设备节点一般位于/dev/input/event0 ~ /dev/input/event4.理论上可以对应32个设备节点.分别代表被handler匹配的32个input device.可以用cat /dev/input/event0.然后移动鼠标或者键盘按键就会有数据输出(两者之间只能选一.因为一个设备文件只能关能一个输入设备).还可以往这个文件里写数据,使其产生特定的事件.这个过程我们之后再详细分析.为了分析这一过程,必须从input子系统的初始化说起. 八:input子系统的初始化Input子系......【阅读全文】

阅读(965) | 评论(0) | 转发(0)

发布时间:2012-12-14 18:25:38

一,前言:1, 近日要写一个很特殊的键盘驱动,故对linux的input子系统分析了一番,写下分析笔记,以防不日即忘。2,  使用input子系统的一般流程为:input_allocate_device()申请一个input_dev设备――>初始化该 input_dev――>input_register_device()向子系统注册该设备――>中断时input_event()向子系 统报告事件。此流程一目了然,即使不看input子系统,我们按照它给出的一般流程也可以把自己写的IO驱动加入到input子系统里去,但 input_event()提交完数......【阅读全文】

阅读(1085) | 评论(0) | 转发(1)

发布时间:2012-12-14 18:19:50

         内核的输入子系统是对分散的,多种不同类别的输入设备(如键盘,鼠标,跟踪球,操纵杆,触摸屏,加速计和手写板)等字符设备进行统一处理的一层抽象,就 是在字符设备驱动上抽象出的一层。输入子系统包括两类驱动程序:事件驱动程序和设备驱动程序。事件驱动程序负责和应用程序的接口,而设备驱动程序负责和底 层输入设备的通信。鼠标事件生成文件mousedev属于事件驱动程序,而PS/2鼠标驱动程序是设备驱动程序。事件驱动程序是标准的,对所有的输入类都 是可用的,所以要实现的是设备驱动程序而不是事件驱动程序......【阅读全文】

阅读(1269) | 评论(0) | 转发(1)

发布时间:2012-12-14 18:17:23

         内核的输入子系统是对分散的,多种不同类别的输入设备(如键盘,鼠标,跟踪球,操纵杆,触摸屏,加速计和手写板)等字符设备进行统一处理的一层抽象,就 是在字符设备驱动上抽象出的一层。输入子系统包括两类驱动程序:事件驱动程序和设备驱动程序。事件驱动程序负责和应用程序的接口,而设备驱动程序负责和底 层输入设备的通信。鼠标事件生成文件mousedev属于事件驱动程序,而PS/2鼠标驱动程序是设备驱动程序。事件驱动程序是标准的,对所有的输入类都 是可用的,所以要实现的是设备驱动程序而不是事件驱动程序......【阅读全文】

阅读(1009) | 评论(0) | 转发(0)
给主人留下些什么吧!~~

Dafanzi2016-12-05 18:21

我找到代码了 不用了 谢谢

回复  |  举报

Dafanzi2016-12-05 17:20

大佬,在你这篇讲解内存池的博文(http://blog.chinaunix.net/uid-28458801-id-4254501.html)中,list.h源文件没有提供啊。你能提供这个博文的完整代码我学习学习吗?能的话发给我邮箱可以吗?brottfan@163.com谢谢啦

回复  |  举报
留言热议
请登录后留言。

登录 注册