驱动开发
文章平均质量分 64
ssdsafsdsd
因为喜欢所以关注因为热爱所以投入
展开
-
I/O驱动相关__raw_readl和__raw_writel
1.S3C2410_GPB5是端口编号,定义在regs-gpio.h中,#define S3C2410_GPIO_BANKB (32*1)#define S3C2410_GPIONO(bank,offset) ((bank) + (offset))#define S3C2410_GPB5 S3C2410_GPIONO(S3C2410_GPIO_BANKB, 5)转载 2012-12-25 15:53:18 · 901 阅读 · 0 评论 -
vboot源码详细分析-1
最近一直在研究bootloader之vboot,vboot短小精悍,如果只是用来进行系统的引导,而不要提供其他复杂的功能时候,我认为这是绝佳的上选。这里以MINI2440开发板配套的源码进行分析。这个源码只支持曾NANDFLASH进行启动。由于代码精短,总的代码量不超过4K,所以,就不需要像uboot那样需要将启动代码分两段进行运行,而是可以直接在芯片自带的ram里面进行运行。当然,如果要想使用复原创 2013-03-21 22:27:44 · 3281 阅读 · 9 评论 -
vboot详细分析之-2
程序首先是从head.S里面进行执行的。这个代码有点长,我一次贴出 #define __ASSEMBLY__#include "s3c2440.h"#include "smdk2440.h"#include "parameters.h"@ Start of executable code /* Fin = 12MHz */#define S3C2440_原创 2013-03-21 22:24:20 · 2730 阅读 · 0 评论 -
Failed to execute /linuxrc. Attempting defaults... 解决方案
今天想移植个根文件系统,使用的板子是友善之臂的S3C2440,这个很多书上都有介绍。难度倒也不是很大,按照手册一步步的来。移植完之后,烧写到flash里面,发现不能运行。怎么回事?检查了一遍,发现和教材上一样,难道教材有问题?在网上找了移植到mini2440上的案例,发现应该也没大问题。后来,反复几次后,仔细看了下提示的错误:Failed to execute /linuxrc. Atte原创 2013-03-21 20:23:54 · 8436 阅读 · 1 评论 -
Linux-2.6.32.2内核在mini2440上的移植(四)---根文件系统制作(1)
移植环境(红色粗字体字为修改后内容,蓝色粗体字为特别注意内容)1,主机环境:VMare下CentOS 5.5 ,1G内存。2,集成开发环境:Elipse IDE3,编译编译环境:arm-linux-gcc v4.4.3,arm-none-linux-gn?i-gcc v4.5.1。4,开发板:mini2440,2M nor flash,128M nand flash。5,u-b转载 2013-03-21 20:27:10 · 6680 阅读 · 0 评论 -
链接脚本.lds文件分析
本篇文章是我特地转载的,以作为我博客中其他文章的基本知识的补充,同时也方便自己学习使用。本篇详细全面的介绍了连接脚本lds文件的介绍与使用,这个脚本文件很重要,在最后的链接阶段,决定了各个文件的位置安排。感谢原作者的辛勤劳动! 连接脚本的格式====================连接脚本是文本文件.你写了一系列的命令作为一个连接脚本. 每一个命令是一个带有参数的关键字,或者转载 2013-03-18 15:23:57 · 9623 阅读 · 2 评论 -
U-Boot启动第一阶段代码分析
1. 了解u-boot主要的目录结构和启动流程,如下图。 u-boot的stage1代码通常放在cpu/xxxx/start.S文件中,他用汇编语言写成; u-boot的stage2代码通常放在lib_xxxx/board.c文件中,他用C语言写成。 各个部分的流程图如下: U-Boot启动第一阶段代码分析 这里我选择下载u-boot-转载 2013-03-12 17:08:29 · 1543 阅读 · 0 评论 -
source insight中添加.S文件
source insight中添加.S文件【转】http://blog.sina.com.cn/s/blog_61b5fb9c0100wxyp.html2010年12月23日 星期四 10:55(1) 做ARM嵌入式开发时,有时得整汇编代码,但在SIS里建立PROJECT并ADD TREE的时候,根据默认设置并不会把该TREE里面所有汇编文件都包含进来,默认只加转载 2013-03-13 14:02:45 · 1101 阅读 · 0 评论 -
.globl _start
_start和.globl之间有一个空格.globl指示告诉汇编器,_start这个符号要被链接器用到,所以要在目标文件的符号表中标记它是一个全局符号(在第 5.1 节 “目标文件”详细解释)。_start就像C程序的main函数一样特殊,是整个程序的入口,链接器在链接时会查找目标文件中的_start符号代表的地址,把它设置为整个程序的入口地址,所以每个汇编程序都要提供一个_start符号并且原创 2013-03-12 18:10:56 · 1865 阅读 · 0 评论 -
u-boot移植时出现inline function 'coloured_LED_init' cannot be declared weak及相关错误时的解决办法
board.c:127: error: inline function 'coloured_LED_init' cannot be declared weakboard.c:129: error: inline function 'red_LED_on' cannot be declared weakboard.c:131: error: inline function 'red_LED_转载 2013-03-11 16:08:51 · 1446 阅读 · 0 评论 -
mini2440 Norflash驱动移植过程
我不知道友善linux2.6.32的内核是否支持了mini2440的norflash,我在这里还是亲自的把mini2440的norflash支持上。移植过程分享如下: 一.添加配置项1、修改 drivers/mtd/maps/Kconfig文件,在config_EDB7312配置项下添加如下内容:config MTD_MINI2440tristate转载 2013-01-22 11:26:23 · 1044 阅读 · 0 评论 -
MINI2440开发板PWM驱动与测试程序简要分析
先看下电路原理图#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #incl原创 2013-01-18 15:49:48 · 3218 阅读 · 2 评论 -
驱动程序涉及到的头文件
驱动程序:#include 是在linux-2.6.29/include/linux下面寻找源文件。#include 是在linux-2.6.29/arch/arm/include/asm下面寻找源文件。#include 是在linux-2.6.29/arch/arm/mach-s3c2410/include/mach下面寻找源文件。#include //最基本的文件,支转载 2013-01-17 21:37:35 · 1225 阅读 · 0 评论 -
2410下寄存器地址虚实映射的实现
2410下寄存器地址虚实映射的实现 我们知道在我们的驱动里面一般操作的寄存器的地址都是虚拟地址, 然而一般在cpu的datasheet里描述的寄存器的地址都是物理地址, 那linux内核是如何把我们驱动中指定操作的虚拟地址转换成正真可寻址并操作的物理地址的呢? 这篇文档以s3c2410为例, 将详细的描述这么一个实现流程。通过这篇文章,将能够很好了解的虚实映射的过程。(本篇文章并非原创 2013-01-16 13:25:43 · 1677 阅读 · 0 评论 -
杂项设备miscdevice
杂项设备也是在嵌入式系统中用得比较多的一种设备驱动。在 Linux 内核的include\linux目录下有Miscdevice.h文件,要把自己定义的misc device从设备定义在这里。其实是因为这些字符设备不符合预先确定的字符设备范畴,所有这些设备采用主编号10 ,一起归于misc device,其实misc_register就是用主标号10调用register_chrdev()的。原创 2013-01-15 21:23:21 · 1031 阅读 · 0 评论 -
__iomem
__iomem是2.6.9中加入的特性。是用来个表示指会指向一个I/O的内存空间。主要是为了driver的通用性考虑。由于不同的CPU体系结构对 I/O空间的表示可能不同。当使用__iomem时,compiler会忽略对变量的检查(因为用的是void __iomem)。但sparse会对它进行检查,当__iomem的指针和正常的指针混用时,就会发出一些warnings原创 2013-01-15 21:21:58 · 4777 阅读 · 1 评论 -
mini2440 led驱动程序经典分析
*************************转载请注明出处*****************************************************Linux内核为2.6.32.2源码分析工具source insight前言:在裸机中操作几个gpio口很简单,对控制寄存器和数据寄存器进行配置即可,但要在linux系统中实现同样的功能还是得费上一番周折的。以下是原创 2013-01-16 21:03:12 · 5998 阅读 · 4 评论 -
Mini2440开发板自带的mjpg‐stream使用方法
本文转自http://blog.csdn.net/zhaole20094463/article/details/7026252 Mjpeg‐stream 是一个开源软件,用于把mjpeg格式的文件变成流媒体输出。1. 环境平台 目标板:mini2440开发板上运行的系统: 内核 Linux‐2.6.32.2, 默认文件系统 root_qtopia2 在 mini2440 上转载 2013-03-26 15:01:04 · 2364 阅读 · 0 评论