
ARM
Tommy_wxie
Tommy_wxie
展开
-
s3c2440硬件学习笔记----存储控制器
一、使用存储控制器访问外设的原理 1、S3C2440的地址空间S3C2440对外引出27根地址线ADDR0-ADDR26,访问范围只有128MB,CPU对外还引出8根片选信号nGCS0-nGCS7,对应BANK0-BANK7,当访问BANKx的地址空间时,nGCSx引脚输出低电平来选中外接设备。 这样每个128MB空间,共8个片选,对应1GB的地址空间。空间分布图如下:原创 2012-03-27 19:44:39 · 2193 阅读 · 1 评论 -
ARM CP15协处理器
4.1.1 访问CP15寄存器的指令访问CP15寄存器指令的编码格式及语法说明如下:31 2827 2423 212019 1615 1211 87 543 0cond1 1 1 0opcode_1转载 2013-05-13 10:51:19 · 1069 阅读 · 0 评论 -
android 最新bootloader LK加载kernel的问题
MMU 执行boot命令的时候,会执行以下跳入kernel的函数,这和其他bootloader的做法是一样的,唯一的不同是LK使用了MMU和Cache来支持多线程,所以在跳到内核之前要先disable mmu和cache,代码如下uboot使用了MMU吗??体系结构有关,可以打开也可以不打开。一般uboot代码很少,为了简化设计,都是不使用mmu,如原创 2013-04-24 22:02:41 · 2543 阅读 · 1 评论 -
B BL BLX BX详解
B、BL、BX、BLX 和 BXJ跳转、带链接跳转、跳转并切换指令集、带链接跳转并切换指令集、跳转并转换到 Jazelle 状态。语法op1{cond}{.W} labelop2{cond} Rm其中:op1是下列项之一:B跳转。BL带链接跳转BLX带链接跳转并切换指令集。op2转载 2013-04-24 21:58:24 · 2531 阅读 · 0 评论 -
ARM Linux静态映射分析 machine_desc
在华清远见上课过程中,发现静态映射方面初学者比较难于掌握和理解,下面分析一下静态映射机制的原理并通过GPIO和USB、LCD等的静态映射作为例子来说明如何通过这种静态映射的方式访问外设资源。内核提供了一个重要的结构体struct machine_desc ,这个结构体在内核移植中起到相当重要的作用,内核通过machine_desc结构体来控制系统体系架构相关部分的初始化。machine转载 2013-03-20 11:10:47 · 2445 阅读 · 1 评论 -
linux内存管理之uboot第一步
在进入讲解linux内存管理的kernel阶段以前,了解一下uboot阶段是如何准备好内存物理设备的,这是非常有意义的。通常进入到linux内核阶段之后,对内存芯片的物理特性寄存器访问是比较少的,强调的是linux在管理上的用法,而大部分必要工作由uboot阶段进行处理,如打开内存功能,配置内存,初始化内存设备,获得内存基本信息等。 下面以笔记的形式讲述调试uboot内存的方法,分别以A转载 2013-03-14 13:59:26 · 4508 阅读 · 0 评论 -
AMBA AHB APB总线简单学习
AMBA(Advanced Microcontroller Bus Architecture)是ARM公司推出的SoC片上总线规范,目前是2.0版本。主要包括AHB、APB、ASB和Test Metholodgy。AHB(Advanced High-performance Bus)是主从式总线,总线上可以有16个主模块,如果主模块多于16个,那就要采用Multi-layer的总线结构,从模块可原创 2012-08-29 13:48:38 · 3097 阅读 · 0 评论 -
ARM处理器工作模式
1.1 ARM处理器工作模式ARM处理器共有7种工作模式,如表3-1所示:表3-1 ARM处理器工作模式处理器工作模式特权模式异常模式说明用户(user)模式 用户程序运行模式系统(system)模式该组模式下可以任意访问系统资源转载 2012-05-18 19:29:59 · 1165 阅读 · 0 评论 -
系统调用与软件中断SWI的实现
1 系统调用操作系统的主要功能是为应用程序的运行创建良好的环境,保障每个程序都可以最大化利用硬件资源,防止非法程序破坏其它应用程序执行环境,为了达到这个目的,操作系统会将硬件的操作权限交给内核来管理,用户程序不能随意使用硬件,使用硬件(对硬件寄存器进行读写)时要先向操作系统发出请求,操作系统内核帮助用户程序实现其操作,也就是说用户程序不会直接操作硬件,而是提供给用户程序一些具备预定功能的内核原创 2012-05-18 19:28:22 · 1403 阅读 · 0 评论 -
ARM处理器异常处理
1.1 ARM处理器异常处理所谓异常就是正常的用户程序被暂时中止,处理器就进入异常模式,例如响应一个来自外设的中断,或者当前程序非法访问内存地址都会进入相应异常模式。1.1.1 异常分类(1)复位异常当CPU刚上电时或按下reset重启键之后进入该异常,该异常在管理模式下处理。(2)一般/快速中断请求CPU和外部设备是分别独立的硬件执行单元,CPU对全部设备进行管理和资原创 2012-05-18 19:26:15 · 2524 阅读 · 0 评论 -
ARM--嵌入式系统启动例程
通常PC在开机之后,会进入带有PC机厂商信息的BIOS画面,并且会显示出当前PC机的硬件信息,比如:内存大小,CPU信息等,它其实是PC机启动之后运行的第一段程序,它主要完成一些基本硬件初始化操作和硬件检测工作,保证拥有操作系统正常运行的软硬件环境,随后会加载并且启动操作系统。该段小程序是烧制到主板上的BIOS存储硬件里的。由此可见计算机系统在启动过程中必须依赖软硬件,在嵌入式系统中同样需要软硬件原创 2012-05-18 09:48:02 · 2483 阅读 · 1 评论 -
代码的加载地址与运行地址
下面内容是技术讨论群里的读者的提问:问:程序下载到NOR中,在ADS中加载地址却是0x30000000,是SDRAM的地址,难道是调试器自动搬运的?答:一个地址是加载 地址一个是运行地址不一样的你下载到Nor里,是加载地址,ADS里ROBase设置的是运行地址问:奥加载地址是从0开始的吧答:Yes问:是谁将其复制到RAM中的啊?A转载 2012-05-18 09:32:30 · 1160 阅读 · 0 评论 -
S3C6410 存储器映射存储器映射
存储器映射存储器映射 S3C6410 支持 32 位物理地址域,并且这些地址域分成两部分,一部分用于存储,另一部分用于外设。 2.1 存储器系统模块图 通过 SPINE总线访问主存,主存的地址范围是0x0000_0000~0x6FFF_FFFF。主存部分分成四个区域:引导镜像区、内部存储区、静态存储区和动态存储区。 引导镜像区的地址范围是从 0x00原创 2012-03-20 14:15:24 · 1619 阅读 · 0 评论 -
ARM Linux为什么要引进Device Tree
1. 原因 A lot of very similar C code to support each and every board. Linux kernel老的Probing机制 关键是: 要提供一个board file,用于registers SOC的各个设备. 要提供一转载 2013-12-18 17:01:34 · 3529 阅读 · 0 评论