
Linux驱动程序开发(Uboot)
文章平均质量分 78
elvinsys
实验代码库在:github.com/elvinsys
请多多指教!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
ARM立即数讲解--LDR和MOV的区别
LDR和MOV的区别转载 2016-08-18 09:59:05 · 546 阅读 · 0 评论 -
1-5 核心初始化
1. 设置中断向量表(可参考《ARM Architecture Reference Manual -A2.6》) 1.1 异常(Exceptions)的概念:因为内部或外部的一些事件,导致处理器停下正在处理的工作,转而去处理发生的事情。 1.2 种类 Mode Ad原创 2016-09-06 09:17:46 · 380 阅读 · 0 评论 -
1-4 bootloader初探
一、 bootloader简介 1. bootloader相当于台式机的BIOS,用来在操作系统启动前对硬件进行初始化以及自检,然后把控制权交给操作系统。 嵌入式操作系统的启动流程一般是bootloader->boot parameters->kernel->rootfilesystem 2. 其设计方法可参考U-BOOT,U-原创 2016-09-05 11:22:31 · 429 阅读 · 0 评论 -
1-10 C语言环境初始化与建立
详细的实验代码请查看:https://github.com/elvinsys/arm_tq2440/blob/master/1_uboot/1-5._start/start.S一、 堆栈初始化 1. 栈,是一种具有“后进先出”性质的数据组织方式 栈底,第一个进栈的数据所处的位置 栈顶,最后一个进栈的数据所处的位置原创 2016-09-06 17:37:48 · 796 阅读 · 0 评论 -
1-11 MMU在U-boot中的配置与实现
一、 MMU的功能解析作用 1. 将虚拟地址转化为物理地址 2. 访问权限的管理二、 关于MMU的地址转换 1. 地址转化的原理和转换过程(可参看ARM920T手册 Memory Management Unit一节) 三、 MMU的配置与使用 1. 以使用段式转换为例,可将步骤分解为: 1.1 建立一原创 2016-09-07 15:24:39 · 516 阅读 · 0 评论 -
1-12 S3C2440中断的原理与实践
一、 中断处理流程 1. CPU工作过程中,需要与外设进行交互的方式分为: 轮询方式:CPU不断地查询设备的状态,该方式实现简单,但CPU利用率低,而且不适合多任务系统。 中断方式:CPU告知硬件开始一项工作后,就去做别的事了,当硬件王城该项工作后,像CPU发送一个信号。 2. 中断的生命周期 2.1 中断信号的产生原创 2016-09-07 16:07:32 · 675 阅读 · 0 评论 -
1-13 NandFlash的原理与实践
一、 NandFlash的原理解析 1. NandFlash一般充当的是嵌入式系统中存放数据的“硬盘”的角色。 2. 分类 SLC(Single Level Cell):单层式存储,在存储格上只存放一位数据 MLC(Multe Level Cell) :多层式存储,在存储格上则能存放两位数据 3. SLC与MLC的对比原创 2016-09-07 18:40:03 · 661 阅读 · 0 评论 -
1-14 串口在S3C2440上的原理、配置与驱动实现
一、 基本概念 1. 作用:作为数据传输的途径,或者作为控制台来提供用户对设备的控制方式 2. 通讯格式的几个概念 2.1 波特率:每秒传输bit的个数,常用的波特率有38400/115200 2.2 常用的参数: 起始位:当线路空闲时,电平为高,一旦检测到一个下降沿,则视为一个起始位原创 2016-09-08 08:12:02 · 1161 阅读 · 0 评论 -
1-15 DMA的原理和应用
(详细的实验代码,请参看https://github.com/elvinsys/arm_tq2440/tree/master/1_uboot/1-15.dma)一、 DMA原理分析 1. DMA(Direct Memory Access)直接内存存储,用于内存到内存,或者内存到外设(接口、芯片寄存器等) 2. DMA控制器:2440为4通道;6410为四控制器,每个控原创 2016-09-08 14:25:43 · 519 阅读 · 0 评论 -
1-16 LCD的原理与应用
一、 LCD的工作原理解析 1. LCD硬件体系结构 1.1 液晶的概念 属于一种有机化合物,分子形态为长棒状,在不同的电流作用下,分子会做有规律的旋转,对光线产生一定的控制形成一个像素,而多个像素构成完整的图像。 1.2 分类:STN、GF、TFD、还有常用的TFT 1.3 LCD驱动芯片原创 2016-09-08 14:56:44 · 558 阅读 · 0 评论 -
1-17 触摸屏原理及基于S3C2440的代码实现
(本节笔记的实验代码,在这里:https://github.com/elvinsys/arm_tq2440/tree/master/1_uboot/1-17.touchscreen)一、 原理解析 1. 分类:电阻式、电容式、红外线技术、表面声波技术、矢量压力传感技术;现代主要用到电阻式和电容式两种触摸屏。 2. 电阻屏工作原理: 当手指触屏是,两原创 2016-09-08 19:58:07 · 739 阅读 · 0 评论 -
1-6 S3C2440的GPIO初探
(可参考2440芯片手册第九节 I/O Ports)一、 基础概念 GPIO(General-Purpose Input / Output Ports),通用输入输出端口,通过控制I/O口的寄存器,从而控制引脚的输入输出功能。一般控制两个寄存器,分别是: 控制寄存器GPXCON : 主要是对引脚的功能设置,如INT, OUTPUT, INPUT等原创 2016-09-06 11:44:59 · 278 阅读 · 0 评论 -
1-7 2440时钟初探
一、 概念解析 1. 时钟脉冲信号:按照一定的电压富都,一定的时间间隔连续发出的脉冲信号,是时序逻辑的基础。 2. 时钟脉冲频率:一秒钟内产生的时钟脉冲个数(Hz)。 3. 信号产生源: 3.1 晶振:晶体振荡器,也就是石英晶体经切割、镀上电极后加电。 优点:结构简单、噪声低。缺点:频率越高,价格越高,交货期长原创 2016-09-06 15:21:17 · 447 阅读 · 0 评论 -
1-1-1 裸机工具安装
一,交叉编译工具链的安装与测试安装方法1. gcc用的是arm-linux-gcc-4.3.2,对压缩包进行解压,路径设为根目录下(ubuntu需sudo) tar xzvf arm-linux-gcc-4.3.2.tar.gz -C / 修改环境变量 (针对RHEL6) vim /root/.bash原创 2016-08-18 11:37:24 · 301 阅读 · 0 评论 -
1-1-2 交叉编译工具链
(此笔记是对上一篇《1-1-1 的工具安装与测试》的补充)1. arm-linux-gcc 说明:gcc为常规编译器,头文件一般存放于 /usr/local/arm/lib中 用法举例: arm-linux-gcc hello.c -o hello arm-linux-gcc -static hel原创 2016-08-18 11:38:27 · 221 阅读 · 0 评论 -
1-2 ARM概况
1. 一些对比 芯片 6410 210 2440 ARM核 arm11 A8 arm9 指令结构 armv6 armv7 armv4 芯片手册(S342440)中的Product Overview可查看ARM核 ARM核手册(ARM920T)可查看指令结原创 2016-08-18 11:41:18 · 376 阅读 · 0 评论 -
1-3-1 ARM汇编概述
1. 概述 汇编一般用于bootloader对处理器进行初始化,因为C语言堆栈还没建立,汇编语言相对来说效率高,多用于内核驱动中与C进行混合编程。2. 分类 ARM标准汇编,适用于ADS,RVDS等ARM公司汇编器 Linux GNU汇编,适用于Linux平台的GNU交叉编译工具3. 汇编语言程序框架.section .data原创 2016-08-18 12:29:53 · 294 阅读 · 0 评论 -
1-1-3 Makefile工程管理初探
1. makefile的用途:用来描述程序编译、链接的规则,使程序编译自动化2. makefile的构成:规则、变量3. makefile的执行:执行make 或者 make clean等命令。4. 格式为:/* 注意空格,“|”表示行首,“”表示table键 */ |targets : prerequisites |comma原创 2016-08-18 11:39:22 · 290 阅读 · 0 评论 -
1-1-5 安装集成开发环境Eclipse
/* 以下笔记针对RHEL6为平台,针对2440开发的安装过程,其他发行版需稍作修改 */1. 安装gdb server(arm-linux-gdb-7.5.tar.gz),直接解压后biuld-all,编译后会在/opt目录下自动生成/arm-linux-gdb目录,里面包含gdb的可执行文件。然后: export PATH=$PATH:/opt/arm-linu原创 2016-08-18 11:40:42 · 606 阅读 · 2 评论 -
1-3-2 ARM指令分类
(本篇内容可参考《ARM汇编手册》)1. 算术与逻辑 1.1 mov说明:相当于赋值,目的寄存器为通用寄存器,共32bit传递,其中12bit传递立即数(8bit为基数,4bit为移位数)举例: mov r0,r1mov r0,#1mov r0,#0b0101mov r0,#0xff原创 2016-08-19 10:12:46 · 803 阅读 · 0 评论 -
1-3-3 ARM伪指令以及协处理器访问指令
1. ARM机器码 用命令“arm-linux-objdump -D -Sstart.elf”可以查看start.elf的反汇编信息,例如其中的一行:30008000: e59f008c 翻译成汇编,就是ldr r0, [pc, #140],其中的e59f008c就是32bit的ARM机器码。关于ARM机器码的详细解释,可参看《ARM Architecture Reference Ma原创 2016-08-30 20:12:38 · 526 阅读 · 0 评论 -
1-9 S3C2440启动流程实现
详细的实验代码请查看:https://github.com/elvinsys/arm_tq2440/blob/master/1_uboot/1-5._start/start.S一、 代码搬运的流程(从作为stepping stone的SRAM开始) 1. 起点(SRAM,0x0000 0000, 4K) 2. 终点(内存, BANK6, 0x3000 00原创 2016-09-06 17:28:55 · 319 阅读 · 0 评论 -
1-8 内存的概念、分类、初始化方法
详细的实验代码请查看:https://github.com/elvinsys/arm_tq2440/blob/master/1_uboot/1-5._start/start.S一、 分类 主要分为:DRAM——小电容充电,需要不断刷新数据,速度慢;SRAM——不需要刷新,速度快名单功耗大,成本高(stepping stone为4K的SRAM) DRAM原创 2016-09-06 15:33:05 · 1173 阅读 · 0 评论 -
1-1-4 链接器脚本
1. 程序由 段(SECTIONS)和堆栈(STACK)组成,而段(SECTIONS)包括四个部分,分别为:代码段(.text)、数据段(.data)以及bss段(.bss) 1.1 代码段(.text):存放要执行的程序指令 1.2 数据段(.data):存放已初始化的全局变量 1.3 bss段(.bss) :存放未初始化的全局变量 1.4 栈原创 2016-08-18 11:40:11 · 305 阅读 · 0 评论