ARM裸机--基于MDK
文章平均质量分 81
ARM裸机--基于MDK
玖零大壮
这是个还有梦的傻小子
展开
-
一起学mini2440裸机开发(五)--定时器0的基础实验
本篇文章接上一篇关于定时器原理:http://blog.csdn.net/mybelief321/article/details/8916775实验前的准备 既然是关于定时器的实验,肯定要用到系统时钟,所以一定要保证系统时钟设置好,在这里需要的PCLK为50MHz。第二节分析MDK自带的S3C2440.c可以知道,默认的是不初始化系统时钟(是否选择初始化可以通过修改S3C244原创 2013-05-15 13:47:00 · 2846 阅读 · 0 评论 -
s3c2440 地址分配硬件连接及其启动原理分析
s3c2440 地址分配硬件连接及其启动原理分析一.CPU 地址分配:1. s3c2440A 的存储器控制器有以下特性:l 大小端(通过软件选择)l 地址空间:每个bank有128M 的字节(总共1G字节/8个banks)l 可编程的访问位宽,bank0(16/32 位),其他bank(8/16/32 位)l 共8个存储器banksl 6 个是ROM,SRAM 等类型存转载 2013-07-24 08:15:52 · 2051 阅读 · 1 评论 -
mini2440也即S3C2440地址分配问题
写这篇文章完全是回答一个网友的问题,因为我之前也是对这里不理解,现在简单说一下。源引问题“mini2440的地址到底是怎么分配的呢?内部rom ram 外部的ram和rom分别占用的地址是多少啊,我从板子上看到有3个k4561632N芯片还有一个S29AL016J70TF102.但是看了相关的电路图也不知道他的地址是怎么分配的” 你问的是mini2440的地址怎么分配。我只能再细节一下你原创 2013-07-23 08:46:33 · 2908 阅读 · 4 评论 -
一起学mini2440裸机开发(十三)--ADC原理与实验
概述 S3C2440的CMOS模拟数字转换器ADC可以对8通道模拟输入信号进行循环检测,S3C2440的ADC和触摸屏公用一个ADC转换器,所以学习ADC也是学习触摸屏的基础。 S3C2440ADC的主要特性如下: ●分辨率:10位 ●最大转换速率:500KSPS ●微分线性度误差:±1.0 LSB ●积分线性度误差:±2.0 LSB原创 2013-05-27 19:24:40 · 3136 阅读 · 4 评论 -
一起学mini2440裸机开发(十二)--mini2440的串口中断实验
这一节实现利用中断实现串口的中断功能,关于串口的原理我就不再讲述了,如果不明白,就请查看我的另一篇博客 http://blog.csdn.net/mybelief321/article/details/8931064 下面我还是贴出自己的实验代码,我上传到了网站,可以自行下载,下载后,打开工程文档,直接编译后,利用Flash/Dowmload功能下载到nor flash,关于下载到原创 2013-05-27 10:46:55 · 2881 阅读 · 2 评论 -
一起学mini2440裸机开发(十一)--mini2440定时器0中断实验
在前边讲解系统时钟和定时器时,曾给出一个实验,实现的功能是:使用定时器0的功能,使LED每秒钟闪烁一次,当时是使用查询方式实现的,现在使用中断方式实现上述功能。 下图为我的工程文件布局: 下面贴出我的代码,你也可以去这里下载, http://download.csdn.net/detail/mybelief321/5457371 下载下来之后,直接编译,点击Fl原创 2013-05-27 09:49:07 · 2488 阅读 · 1 评论 -
一起学mini2440裸机开发(十)--mini2440外部中断实验
我今天一整天都在试着将TQ2440的那种处理中断的方法(即安装中断向量表)移植到MDK中的mini2440,但是一直没成功,这种方法一直没成功,后来又想,还是先从最简单的开始吧,就是不利用中断向量表,直接像利用51单片机那样的中断一样使用它,但是也没成功。考虑到程序跑飞的可能性,将程序利用MDK中的Download功能下载到了Nor Flash中去,竟然行了,想了想原因,明白是怎么回事了。我原来是原创 2013-05-26 21:18:46 · 4166 阅读 · 7 评论 -
一起学mini2440裸机开发(九)--ARM中断控制系统
ARM处理器程序的执行流程种类 ●正常执行:每执行一条ARM指令,程序计数器PC的值自动加4。这一过程描述了应用程序顺序执行的状态。 ●跳转执行:通过B、BL跳转执行,实现程序在一定范围内的跳转执行。这一过程描述了ARM处理器程序执行过程中的过程调用。 ●中断处理:在应用程序执行过程中,发生中断后,ARM处理器在执行完当前指令后,跳转到上述中断对应的中断处理程序处去执行,执行完中原创 2013-05-26 09:16:51 · 3107 阅读 · 0 评论 -
堆(heap)和栈(stack)有什么区别?
简单的可以理解为: heap:是由malloc之类函数分配的空间所在地。地址是由低向高增长的。 stack:是自动分配变量,以及函数调用的时候所使用的一些空间。地址是由高向低减少的。 预备知识—程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据转载 2013-05-10 21:36:26 · 30005 阅读 · 2 评论 -
一起学mini2440裸机开发(二)--MDK自带的S3C2440.s分析
上一节,咱们在建立工程的时候,默认的是使用MDK自带的启动代码,这些启动代码到底做了什么工作呢?在这里我想探究一下,探究不全没什么事,能看懂个大概就行了。 我先申明一下,其实我并不是头一次学ARM裸机,我先前已经按照韦东山的使用arm-linux-gcc在linux下编译裸机程序的方法走了一遍了,用那个方法的话对以后的uboot移植非常有帮助,但是有一个不方便的就是,使用Linux系统下编原创 2013-05-11 13:39:41 · 4537 阅读 · 6 评论 -
ARM 常见问题
1.ARM: Advanced RISC Machine 高级精简指令集计算机2.RISC: Reduce Instruction set Computer 精简指令集,周期执行等长,固定指令长度3.哈佛与冯诺依谩的区别: CPU在一个周期内能否同时操作数据和指令instruction cache 和data cache分开为哈佛结构,没有分开为冯诺依谩结构 Note:转载 2013-05-17 13:59:33 · 2588 阅读 · 0 评论 -
ldr与adr指令、相对地址与绝对地址的理解
之前在阅读arm的汇编代码时,碰到了adr指令,查arm的指令手册,只说该指令是采用相对地址的,但这个相对地址应该怎么理解,却没有具体说明。之后在网上以adr指令为关键字进行搜索,也没有找到进一步的知识。结果,今天在搜索android资料的时候,意外的发现了adr指令与ldr指令的不同,一下子解决了心中的问题。以adr指令与ldr指令对比作为关键字,甚至可以搜到好几篇文章,实在是......转载 2013-05-17 10:20:01 · 8109 阅读 · 0 评论 -
一起学mini2440裸机开发(八)--Nand Flash原理与基础实验
其实nand flash的原理我早就会了,也利用韦东山的方法成功运行了,但是利用MDK开发,我碰到了一个难题,那就是怎么从MDK下载到nand flash,我发现我还需要了解很多知识点,估计得好几天,我能力提高的机会来了,完全搞懂之后估计就会有很大的帮助!原创 2013-05-16 21:53:28 · 2114 阅读 · 6 评论 -
一起学mini2440裸机开发(七)--UART高级实验,可变参函数
概述: 在C语言中,使用printf()进行格式化输出非常方便,例如,printf("%d\n",a)可以将a的值以十进制的格式输出,然后换行。printff()函数的原型为:int printf(const char *format,...),在函数参数中的...表示可变参数,即输入参数的个数不确定(例如,printf("%d\n",a)和printf("%d%d\n",a,b)都可以原创 2013-05-16 14:50:28 · 2740 阅读 · 0 评论 -
一起学mini2440裸机开发(六)--UART原理与基础实验
我个人感觉UART也不算是很难,学过单片机的相信都用过UART,在这里还是说说它吧,并且在写基础实验并调试的时候,出现了一个问题,就是我们平时使用jlink调试程序都是基于在sdram中运行的,由于ram的掉电易失性,所以咱们的裸机程序根本就不能脱机工作,也即是说复位之后程序就没有了,当然,我知道可以利用以后学的知识将它下载到NAND Flash中去,这个以后再说。貌似还有一个办法,就是使用mdk原创 2013-05-16 12:34:18 · 4736 阅读 · 0 评论 -
一起学mini2440裸机开发(三)--S3C2440时钟学习
前言 首先,我们应该知道一点,mini2440开发板在没有开启时钟前,整个开发板全靠一个12MHz的外部晶振提供频率来工作运行的,也就是说CPU、内存、UART、ADC等所有需要用到时钟频率的硬件都工作在12MHz下,而S3C2440A可以正常工作在400MHz下,可想而知两者速度相差会有多大了。如果CPU工作在12MHz频率下,开发板的使用效率非常低,所有依赖系统时钟工作的硬件,原创 2013-05-12 13:39:53 · 4330 阅读 · 4 评论 -
一起学mini2440裸机开发(四)--S3C2440定时器学习
S3C2440定时器原理概述 s3c2440有5个16位定时器,定时器0、1、2和3有脉冲宽度调制(PWM)功能,因此这4个定时器也被称为PWM定时器。定时器4是一个内部的定时器,没有外部输出引脚。 定时器的时钟源是PCLK,定时器工作所需频率并不等于PCLK,还要进一步将PCLK通过内部的分频器分频才能得到。这里也可以看出外部设备所需的工作频率不一定等于它的时原创 2013-05-13 13:56:49 · 4018 阅读 · 0 评论 -
一起学mini2440裸机开发(一)--第一个led灯点亮
开发板:mini2440, NandFlash:K9F2G08U0B 256M大小,CPU:S3C2440A 。 开发环境:MDK4.11 仿真器:Jlink v8 这是我用csdn发表的第一个文章,之前使用过arm-linux-gcc裸机开发mini2440,但是很多函数什么的不能直接调用(我的技术问题),准备重新整理一下ARM裸机,整理好之后准备下一阶段学习。关原创 2013-05-10 20:12:57 · 8770 阅读 · 10 评论