基于ARM的嵌入式系统Bootloader启动流程分析2008-2-26 22:33:00
0
推荐
摘要:讲述了基于ARM处理器的嵌入式系统在上电启动后应用程序或操作系统运行前,对处理器及其内部功能模块进行初始化的过程,并结合经过实际验证的代码详细的分析了S3C44B0 Bootloader的运行过程。关键字:ARM 嵌入式系统 Bootloader
一.引言: 对于PC机,其开机后的初始化处理器配置、硬件初始化等操作是由BIOS(Basic Input /Output System)完成的,但对于嵌入式系统来说,出于经济性、价格方面的考虑一般不配置BIOS,因此我们必须自行编写完成这些工作的程序,这就是所需要的开机程序。而在嵌入式系统中,通常并没有像 BIOS 那样的固件程序,启动时用于完成初始化操作的这段代码被称为Bootloader程序,因此整个系统的加载启动任务就完全由Bootloader 来完成。简单地说,通过这段程序,可以初始化硬件设备、建立内存空间的映射图(有的CPU没有内存映射功能如S3C44B0),从而将系统的软硬件环境设定在一个合适的状态,以便为最终调用操作系统内核、运行用户应用程序准备好正确的环境。Bootloader依赖于实际的硬件和应用环境,因此要为嵌入式系统建立一...

>> 阅读全文

刚才仔细看了一下12232的资料,发现,它的逻辑电平1必须达到3.5V以上,而44b0的逻辑电平1只有3.3V,差了0.2V,所以12232一直不显示。但也有矛盾的地方,就是如果,我把程序设定为静态时,在开显示命令执行的时候,屏幕的所有像素都会点亮,这说明,命令指令被12232接受到了,十分诡异的问题

>> 阅读全文

我用的是44b0,就是当单片机使了,程序调了好长时间,就是不显示,大家帮我看看,谢谢啦,还有,液晶显示的静态和动态有什么差别?这个程序里,我没有让它显示汉字,我想先让它全屏都亮(先试试好不好使),然后再显示汉字,所以,hp()程序我给修改了。
如果改成静态模式那么在这一步之后lcd12232_WriteCommondMaster(0xaf);lcd12232_WriteCommondSlave(0xaf); //开显示器屏幕所有像素都亮了,但无法显示我要的东西,也无法清屏
以下是程序#define setA0 rPDATE |= 0x0008;//A0=1 #define clrA0 rPDATE &= 0xfff7;//A0=0#define setE1 rPDATE |= 0x0040;//E1=1 #define clrE1 rPDATE &= 0xffbf;//E1=0#define setE2 rPDATE |= 0x0020;//E2=1 #define clrE2 rPDATE &= 0xffdf;//E2=0#define setReset rPDATE|= 0x0080;//Reset=1#define clrReset rPDATE&= 0xff7f;//Reset=0#define setR rPDATE |= 0x0010;//R/W=1#define clrR rPDATE &= 0xffef;//R/W=0#define DatarPDATC ;#define fuwei(0xe2);#define kxshq0xaf;#define gxshq0xae;#define dtqd0xa4;#define jtqd0xa5;#define zkb10xa9;#define zkb20xa8;#define szx10xa0;#def...

>> 阅读全文

这是一段44b0的uart初始化程序,差不多都看懂了,就是那个a是干什么的?程序没有返回什么值,也没有调用指针,那么,那个定义的变量a都干什么了?
void UartInit(int ch, int baud){U8 a;if(!ch){rUFCON0 = 0x0; //禁止使用FIFO rUMCON0 = 0x0; //禁止使用FIFO rULCON0 = 0x3; //正常无奇偶校验,一个停止位,8个数据位 rUCON0 = 0x45; //TX RX 都用PULSE非LEVEL中断 //rx=edge,tx=level,disable timeout int.,enable rx error int.,normal,interrupt or polling rUBRDIV0 = (int)(MCLK/(16.0*baud)+0.5)-1; a = rURXH0;}else{rUFCON1 = 0x0; //禁止使用FIFO rUMCON1 = 0x0; //禁止使用FIFO rULCON1 = 0x3; //正常无奇偶校验,一个停止位,8个数据位 rUCON1 = 0x45; //rx=edge,tx=level,disable timeout int.,enable rx error int.,normal,interrupt or polling //baud *= 16; rUBRDIV0 = (int)(MCLK/(16.0*baud)+0.5)-1; a = rURXH1;}}

>> 阅读全文

已经是大三了,这三年,除了弄了个校电子大赛的二等奖,似乎毫无建树。
这里是号称全国前十的重点大学,可郁闷的是,我们专业是新建的,没有相应师资力量,地处分校区,是个独立的小天地。学院是从以前的电子学院分离的,仅包括俩专业,一个电气,一个测控。
学院很重视那个索尼杯的电子大赛,年年都参加,还有暑期培训。我已经三次参加学院的预选赛了,可每次都被刷了,不能不说郁闷。最近才发现,那个比赛其实不是很适合我,基本都是硬件的,软件很少。
从去年暑期,开始决定自学嵌入式,可去年下半年课太多,一周我们上了25大节!(每节一个半小时,还不包括后来加上的实验)揠苗助长啊,上了那么多课,都走马观花了,一个都没记住。
直到今年三月份,才真正开始学习嵌入式。先是看了一本《arm体系结构与编程》,没细看,当手册了,正在看《嵌入式系统开发与应用》,田泽写的,本人认为还不错。买了一个核心板,贪便宜,买了零零IC的s3c44b0,根本就没有售后服务,我这个郁闷!早知道这样就买个好点的了。现在一边看书一边看bootloader程序,主要是为了熟悉arm的各个功能如何设置。
现在有些后悔了,后悔当初干...

>> 阅读全文

今天开始我的征程

>> 阅读全文

我已经在嵌入式在线BLOG安家了,欢迎你时常过来做客,大家多多交流哦。我会把一些新鲜有趣的东西记录下来一块与你分享。也希望你记住我的BLOG地址,常来逛逛,你可以把“她”添加到你的收藏夹,也可以把“她”复制下来告诉你的朋友们。快来免费注册吧,马上拥有自己的网络家园。发布文章,分享相片,创建个性化的部落,结交嵌入式行业的网友……嵌入你的生活,嵌入你的梦想!我的BLOG地址: http://blog.mcuol.com/dadong

>> 阅读全文