自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

漫不经心

路漫漫其修远兮,吾将上下而求索....

  • 博客(13)
  • 资源 (3)
  • 收藏
  • 关注

原创 回味经典——uboot1.1.6 之 第二阶段 第三阶段

第一阶段:http://blog.csdn.net/lizuobin2/article/details/52054293    上篇文章说到,再清 BSS 段之后,CPU 跳转到 sdram 里的 start_armboot() 函数,本文,分析 uboot 流程的第二阶段。    start_armboot函数在lib_arm/board.c中定义,是U-Boot第二阶段代码的入

2016-07-29 14:10:12 3030

原创 回味经典——uboot1.1.6 之 第一阶段

最近打算移植一个比较新的 uboot 到开发板,回想起来上一次移植 uboot1.1.6 已经差不多是一年前了,手头保留了一些当时移植分析时的笔记,但是没有归纳梳理,在移植新版 uboot 之前,再来回味一下经典。本文重点在于分析 uboot 启动流程以及 uboot 自身的细节,比如栈空间的划分、如何设置 tag 、如何添加一个自定义命令等。但是不涉及基本的硬件驱动的分析,比如内存初始化、时钟初

2016-07-28 20:52:54 4437 4

原创 位置无关码、位置有关码、链接地址、加载地址

在移植 uboot 时,接触到一个概念叫做 位置无关码,那么与它对应的就是位置有关码。提到这两个概念就还得提一提链接地址、加载地址。    链接地址,链接脚本里指定的,理论上程序运行时所处的地址。在编译时,编译器会根据链接地址来翻译位置有关码。    加载地址,程序运行时,实际所处的地址。    位置无关码,位置有关码,是相对于一条指令的正常目的来说的。比如 ldr r0 ,=标号,它

2016-07-27 23:48:45 7404 3

转载 制作uboot

mkimage工具位于 Uboot tools目录下    mkimage是在制作镜像文件时候, 在原来的image文件前增加一个0x40字节长度的头,增加的头结构描述如下/* * Legacy format image header, * all data in network byte order (aka natural aka bigendian). */typed

2016-07-27 16:36:46 1403

原创 实验探究 ioremap

ioremap 写驱动最常用的函数之一,但是对它始终一知半解,看了内核关于这部分的代码,功力不够也是一头雾水。本文通过实验的方法,了解 ioremap 到底干了些啥,本文献给那些看不懂内核源代码,还想知道 ioremap 能干些什么,干了些什么的同学。    实验方法:        点灯实验,LED接在GPB5~8,因此需要使用 gpbcon 配置,gpbdat 输出高低。

2016-07-27 16:19:20 3291

原创 自己写 bootloader

想想 uboot 的代码量,我们说自己写一个 bootloader 是不是口出狂言了?然而并没有,bootloader 的唯一目的只有一个,那便是启动内核。内核就是一大段可执行程序,我们只要跳转到它的入口地址去执行不就OK? 所以,写一个简单的 bootloader 并不困难。    现在来思考一下,目的是启动内核,那么内核在哪里?刚上电的时候,内核肯定是位于 nandflash 里的,我们得

2016-07-27 15:55:22 11327 2

原创 Jlink 烧写文件到 nandflash norflash

s3c2440开发板支持两种启动方式,一种是 nandflash 启动,此时 nandflash 中的前 4K 内容会由硬件自动拷贝至片内 SRAM 4K 内存中,这片内 4K 内存会被 map 到 nGCS0 也就是 bank0 ,起始地址为0 。如果是 Nor 启动,norflash 也是被接在 nGCS0 ban0 上的,Norflash 可以直接被读取,因此 cpu 从 Norflas

2016-07-25 17:14:05 7309 1

原创 USB驱动——键盘驱动(控制传输)

本文以 usbkbd.c 为例,分析 usb 键盘驱动程序。static int __init usb_kbd_init(void){ int result = usb_register(&usb_kbd_driver); if (result == 0) printk(KERN_INFO KBUILD_MODNAME ": " DRIVER_VERSION ":" DRIV

2016-07-21 12:25:56 5612 2

原创 USB驱动——鼠标驱动程序(中断传输)

本文以 usbmouse.c 为例,简单分析usb鼠标驱动程序。static int __init usb_mouse_init(void){ int retval = usb_register(&usb_mouse_driver); if (retval == 0) printk(KERN_INFO KBUILD_MODNAME ": " DRIVER_VERSION ":"

2016-07-20 17:46:19 3765

原创 USB驱动——描述符、URB、管道

大家常说,一个设备通常有多个配置,配置通常有多个接口,接口通常有多个端点。接口代表逻辑上的设备,比如声卡分为 录音和播放。访问设备时,访问的是某个接口(逻辑设备)。除了端点0之外,每个端点只支持一个传输方向,一种性质的传输传输数据时,读写某个端点,端点是数据通道。    本文首先分析设备、配置、接口、设置、端点之间的关系,然后根据 2440-ochi 驱动程序,分析一个设备注册到内核时,它的这

2016-07-19 11:44:03 8415

原创 USB主机控制器驱动——OHCI分析

首先,整个驱动框架的开始,是基于 platform 平台总线的。struct platform_device s3c_device_usb = { .name = "s3c2410-ohci", .id = -1, .num_resources = ARRAY_SIZE(s3c_usb_resource), .resource = s3c_usb_resource,

2016-07-18 22:34:05 9722 1

原创 PCI驱动框架简单分析

一、PCI 概念介绍    PCI是CPU和外围设备通信的高速传输总线。PCI规范能够实现32位并行数据传输,工作频率为 33MHz 或 66MHz ,最大吞吐率高达266MB/s,PCI的衍生物包括 CardBus、mini-PCI、PCI-Express、cPCI等。    PCI总线体系结构是一种层次式的体系结构。在这种层次体系结构中,PCI桥设备占据着重要的地位,它将父总线与子总线

2016-07-05 14:34:32 19597

原创 tty初探—uart驱动框架分析(二)uart_add_one_port

在前面的一篇文章中,我们分析了一个 uart_driver 的向上注册过程,主要是 tty 的一些东西,知道了 tty 注册了一个字符设备驱动,我们在用户空间 open 时将调用到 uart_port.ops.startup ,在用户空间 write 则调用 uart_port.ops.start_tx ,还知道了如何 read 数据等等。但是,这些都是内核帮我们实现好的,在真正的驱动开发过程中几

2016-07-01 19:24:58 14408 8

tny4412_12.16.patch

tiny4412-1506 版本的uboot 补丁

2016-12-16

dnw_fastboot_for2440

适用于2440平台的fastboot源码,同时含有 dnw 源码,superboot 部分实现代码,有详细注释便于学习,建议先看dnw代码再看fastboot

2016-12-11

LINUX设备驱动程序第三版配套源码

LINUX设备驱动程序第三版配套源码

2014-08-28

空空如也

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

TA关注的人

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