
ARM
depaJun
这个作者很懒,什么都没留下…
展开
-
RAM,SRAM,DRAM,SDRAM,ROM,PROM,EPROM,EEPROM,NAND FLASH,NOR FLASH
(一)RAM,SRAM,DRAM,SDRAM都是RAM的一种,RAM为random access memory的缩写,断电数据丢失,通常作为数据存储器 SRAM(static RAM)为静态随机存储器,它不需要刷新数据,不像动态随机存储器那样,每隔一段时间要刷新一次数据;但是它集成度比较低,不适合做容量大的内存,一般是用在处理器的缓存里面; DRAM(d原创 2013-08-21 21:01:42 · 951 阅读 · 0 评论 -
c语言可变参数
首先在介绍可变参数表函数的设计之前,我们先来介绍一下最经典的可变参数表printf函数的实现原理。一、printf函数的实现原理在C/C++中,对函数参数的扫描是从后向前的。C/C++的函数参数是通过压入堆栈的方式来给函数传参数的(堆栈是一种先进后出的数据结构),最先压入的参数最后出来,在计算机的内存中,数据有2块,一块是堆,一块是栈(函数参数及局部变量在这里),而栈是从内存的高地址向转载 2013-09-04 09:45:46 · 599 阅读 · 0 评论 -
ubuntu12.04各种问题的解决方法
1、进入VI模式时出现方向键乱码、backspace等问题在Ubuntu下编辑一些文件,这就涉及到了vi这个编辑器了。在Ubuntu下,初始使用vi的时候有点问题,就是在编辑模式下使用方向键的时候,并不会使光标移动,而是在命令行中出现[A [B [C [D之类的字母,而且编辑错误的话,就连平时关于的退格键(Backspace键)都使用不了,只能用Delete来删除。针对这个问题,网上的答案有很原创 2013-09-11 19:20:30 · 625 阅读 · 0 评论 -
linux 消息队列
消息队列提供了一种在两个不相关的进程之间传递数据的相当简单且有效的方法。与命名管道相比,消息队列的优势在于,它独立于发送和接收进程而存在,这消除了在同步命名管道的打开与关闭的可能产生的一些困难。Linux系统有两个宏定义MSGMAX和MSGMNB,它们以字节为单位分别定义了一条消息的最大长度和一个队列的最大长度。#includeint msgctl(int msgid , int cm转载 2013-09-13 20:22:13 · 586 阅读 · 0 评论 -
Linux IPC总结(全)
IPC进程间通信(Inter-Process Communication)就是指多个进程之间相互通信,交换信息的方法。Linux IPC基本上都是从Unix平台上继承而来的。主要包括最初的Unix IPC,System V IPC以及基于Socket的IPC。另外,Linux也支持POSIX IPC。System V,BSD,POSIX System V是Unix操作系统最早的商业发转载 2013-09-13 20:45:30 · 602 阅读 · 0 评论 -
__attribute__机制介绍
1. __attribute__ GNU C的一大特色(却不被初学者所知)就是__attribute__机制。__attribute__可以设置函数属性(Function Attribute)、变量属性(Variable Attribute)和类型属性(Type Attribute)__attribute__前后都有两个下划线,并且后面会紧跟一对原括弧,括弧里面是相应的__attrib转载 2013-09-14 11:58:29 · 498 阅读 · 0 评论 -
BootLoader的启动过程分析
在嵌入式系统中,内核映像与根文件系统映像可以直接在ROM或Flash等固态存储设备中直接运行,但该做法是以牺牲运行速度为代价的。本系统中内核映像与根文件系统映像都被加载到RAM中运行。大多数BootLoader的启动分为stagel和stageZ两个阶段,依赖于CPU体系结构的代码(如设备初始化代码等),通常都放在stagel中,且常用汇编语言实现,以达到短小精悍的目的。而stageZ则用C语转载 2013-09-18 09:42:50 · 837 阅读 · 0 评论 -
Makefile中=与:=的区别
先看下面的Makefile: #example B := $(A) A = later all: @echo $(B) 执行make命令,我们发现什么都没输出,我们将第2行的:=换成= #example B = $(A) A = later all: @echo $(B)转载 2013-09-19 09:33:23 · 587 阅读 · 0 评论 -
Linux makefile 教程 非常详细,且易懂
英文地址:http://www.gnu.org/software/make/manual/make.html#Introduction最近在学习Linux下的C编程,买了一本叫《Linux环境下的C编程指南》读到makefile就越看越迷糊,可能是我的理解能不行。 于是google到了以下这篇文章。通俗易懂。然后把它贴出来,方便学习。 后记转载 2013-09-19 10:04:26 · 935 阅读 · 0 评论 -
Ubuntu下tftp服务搭建
1、安装软件包 命令:sudo su 进入root权限 apt-get install tftpd tftp xinetd安装tftp的服务器端、客户端和xinetd2、建立配置文件在/etc/xinetd.d/下建立一个配置文件tftpvi /etc/xinetd.d/tftp service tftp {原创 2013-09-22 18:55:38 · 655 阅读 · 0 评论 -
深入理解ARM体系架构(S3C6410)---认识S3C6410
本系列文章由muge0913整理,转载请注明出处:http://blog.youkuaiyun.com/muge0913/article/details/7358731芯片架构如图S3C64xx系列的应用处理器芯片是三星主推的16/32 RISC 微处理器,三星目前推出了S3C6400和S3C6410,都是基于ARM11架构的,而且硬件管脚兼容,应该说大致的功能基本相同,比较明显的区别就是转载 2013-09-04 01:08:01 · 709 阅读 · 0 评论 -
LDR指令和LDR伪指令区别
ARM指令集中,LDR通常都是作加载指令,但是它也可以作伪指令。初学者一般不会注意到它们的区别,其实在嵌入式开发过程中,这两条指令时非常常用的!我们应该了解他们的区别。LDR伪指令的形式是“LDR Rn,=expr”。作用是装在一个32bit常数和一个地址到寄存器。下面举一个例子来说明它的用法。COUNT EQU 0x56000054LDR R1转载 2013-09-03 15:24:42 · 1198 阅读 · 0 评论 -
nandflash的启动原理
大部分ARM9的CPU内部都集成有一个SRAM,SRAM是英文Static RAM的缩写,它是一种具有静止存取功能的内存,不需要刷新电路即能保存它内部存储的数据。这样他不需要初始化就能够直接使用。这与我们在外部扩展的大容量的SDRAM是不一样的,外部大容量的SDRAM是需要初始化后才能使用的,这点大家务必要搞清楚。这点在我做过移植的处理器:s3c2410(arm920t),s3c2440(arm9转载 2013-08-21 21:26:58 · 954 阅读 · 1 评论 -
s3c6410系统时钟
系统时钟配置这篇主要介绍s3c6410在时钟设置上面是怎么处理的.对于arm大家应该都不陌生,在使用的时候很多时候也非常关心主频是多少多少.经常听到的533Mhz 133Mhz 66Mhz 这些是比较典型的时钟频率了那么这些值是怎么来的,时钟源在选择的时候,又是通过哪些寄存器.怎么一步步的设置过来的呢.今天就来解析arm的clock系统.到底如何配置,才能让CLK_ARM CLK_转载 2013-08-22 10:46:34 · 784 阅读 · 0 评论 -
S3C6410,Tiny6410,Mini6410,MoblieDDR内存驱动
++++++++++++++++++++++++++++++++++++++++++本文系本站原创,欢迎转载! 转载请注明出处:http://blog.youkuaiyun.com/mr_raptor/article/details/6621741++++++++++++++++++++++++++++++++++++++++++ 1. 概述S3C6410内存控制器是采用的转载 2013-09-08 11:20:26 · 868 阅读 · 0 评论 -
简单的启动代码 IMPORT |Image$$RO$$Limit|
IMPORT |Image$$RO$$Limit| IMPORT |Image$$RW$$Base| IMPORT |Image$$ZI$$Base| IMPORT |Image$$ZI$$Limit| IMPORT Main ; 声明C程序中的Main()函数 AREA Start,CODE,READONLY ;声明代码段Start ENTRY ; 标识程序入口 COD转载 2013-09-08 13:02:31 · 964 阅读 · 0 评论 -
S3C6410学习——Nand flash陷阱
当系统以Nand方式启动时,硬件将Nand Flash的前8KB拷贝到Steppingstone,然后从0地址开始运行程序,在这8KB以内代码中,我们需要完成必要的硬件初始化,如果代码超过8K,我们还需要将剩余代码的搬移到链接地址处,一般在SDRAM/DDR中。其中,硬件部分需要初始化系统时钟、DDR和NAND Flash三部分。这就是S3C6410以Nand方式启动时的大致流程,看上去跟ARM9转载 2013-09-02 23:47:12 · 797 阅读 · 0 评论 -
arm-linux-gcc 常用参数讲解
我们需要编译出运行在ARM平台上的代码,所使用的交叉编译器为arm-linux-gcc。下面将arm-linux-gcc编译工具的一些常用命令参数介绍给大家。在此之前首先介绍下编译器的工作过程,在使用GCC编译程序时,编译过程分为四个阶段:1. 预处理(Pre-Processing)2. 编译(Compiling)3. 汇编(Assembling)4. 链接(Linking)原创 2013-09-03 00:47:19 · 897 阅读 · 0 评论 -
基于AT91RM9200与LINUX2.6.26内核的嵌入式平台开发全过程
一、ARM9+LINUX开发历程 使用了51系列和MOTOROLA单片机若干年,觉得自己已经跟不上嵌入式发展的时代了。决定开发一种新的硬件平台,综合比较了一下,觉得ARM9+LINUX模式不错。先从头捋一遍32位嵌入式开发平台的流程:芯片选型——使用DXP画原理图(如果有可能买块开发板可以极快加快进度)——使用DXP画PCB图——芯片购买/PCB投板生产——芯片焊接—— 使用ADS编转载 2013-09-08 22:40:23 · 1747 阅读 · 0 评论 -
I2C
一:I2C 概述I2C是philips提出的外设总线.I2C只有两条线,一条串行数据线:SDA,一条是时钟线SCL ,使用SCL,SDA这两根信号线就实现了设备之间的数据交互,它方便了工程师的布线。因此,I2C总线被非常广泛地应用在EEPROM,实时钟,小型LCD等设备与CPU的接口中。二:在linux下的驱动思路谈到在linux系统下编写I2C驱动,目前主要有两种方法,一种是把I转载 2013-09-09 09:44:31 · 725 阅读 · 0 评论 -
I2C总线(2)
1.I2C协议 2条双向串行线,一条数据线SDA,一条时钟线SCL。 SDA传输数据是大端传输,每次传输8bit,即一字节。 支持多主控(multimastering),任何时间点只能有一个主控。 总线上每个设备都有自己的一个addr,共7个bit,广播地址全0. 系统中可能有多个同种芯片,为此addr分为固定部分和可编程部份,细节视芯片而定,看datas转载 2013-09-09 09:52:29 · 757 阅读 · 0 评论 -
搭建tftp平台,使ARM板和虚拟机linux之间通讯
1、 在虚拟机上搭建tftp服务器,这个在我博客中有详细步骤,我的共享文件夹是/tftpboot2、 检验tftp服务器是否正常工作:netstat -a | greptftp --查看是否启动成功,可以看到udp 0 0 *:tftp *:*3、 用串口线将s3c6410开发板和电脑连接起来,在DNW中进入U-BOOT模式,在DNW中用命令printenv查看开发板的原创 2013-09-23 11:18:24 · 2213 阅读 · 0 评论