您的位置 首页 设计

ARM 4510开发板移植uclinux手记

我并没有为arm体系结构的处理器移植uclinux操作系统,因为这方面的关键工作已经有人做完了。我只是让uclinux操作系统在恒坚ARM4510开发板上跑起来了。

我并没有为arm体系结构的处理器移植uclinux操作体系,由于这方面的要害作业现已有人做完了。我仅仅让uclinux操作体系在恒坚ARM4510开发板上跑起来了。

一、 了解开发板硬件构成和根本作业原理

恒坚ARM4510开发板选用32位的高功能三星4510微操控器、SST公司2Mx16bits的FLASH和现代公司的两片8Mx16bits的 SDRAM,一起构成了根本嵌入式硬件体系,属典型的嵌入式设备开发板,并且外围试验用件、开发及接口电路较为完全。恒坚开发板自带的集成开发环境,易学易用,作为嵌入式软件编译入门和了解开发板硬件构成,仍是不错的。在windows环境下,装置恒坚集成开发环境。然后,先跑恒坚开发板配的流水灯试验程序。从程序中,能够体会到几点:

1、 嵌入式软件构成

嵌入式软件一般由一段汇编程序(init.s)和随后的C程序构成。汇编程序作为开始部分,被定位在0x0地址,这个地址是硬件体系上电后,首要履行的地址。汇编程序经过写微操控器的各个硬件寄存器,完结硬件的初始化,如装备SDRAM地址、数据线位数(8位、16位、32位)等,然后跳转到后边的C程序中运转。

2、 嵌入式硬件构成

软、硬件是彼此相关的。尽管用放大镜查板子、万用表量电路,都是了解“硬”构成的根底。这方面,能够查一下微操控器的32位数据线是怎么与两片SDRAM的数据线相连的;还有低16位数据线与FLASH的16位数据线是怎么相连的。

经过软件编程,能够写数据到微操控器的寄存器中,以装备硬件结构、功用、功能等。比方,向微操控器的SDRAMCON0寄存器中写入 0x20040380,SDRAM的地址就映射在微操控器的存取地址区域0x1000000~0x2000000之间。假如再次向SDRAMCON0寄存器中写入0x10000380,则SDRAM的地址就映射到0x0~0x1000000之间了。一起合作改写FLASH(ROM)操控寄存器 ROMCON0的内容,可把FLASH由上电时的0x0地址,映射到0x1000000地址,这便是地址重映射(remap)原理。重映射的意图,是让程序能够在SDRAM中运转,而非FLASH中,其原因是多样的。

以上硬件相关内容,可参阅《ARM使用体系开发详解──根据S3C4510B的体系规划》一书的“使用体系规划与调试”一章,还有现代公司的SDRAM芯片数据资料、SST公司的FLASH芯片数据资料等。

3、 地址重映射的完成

在跑马灯试验程序中添加代码,能够完成地址重映射,并让程序在FLASH和SDRAM中循环跑动起来。

在汇编部分(init.s)的BL C_Entry 句子后,刺进如下代码:

ldr r0, =0x0 /* FLASH开始地址*/

ldr r1, =0x200000 /* FLASH巨细2M */

ldr r2, =0x1000000 /*SDRAM开始地址*/

rom2ram_copy_loop: /* copy image to ram*/

ldr r3, [r0], #4 /*[r0]->r3, r0=r0+4*/

str r3, [r2], #4 /*r3->[r2], r2=r2+4*/

subs r1, r1, #4 /*r1=r1-4*/

bne rom2ram_copy_loop /*将整个FLASH中的内容,悉数拷贝到SDRAM中*/

LDR r1, =rEXTDBWTH /*设置外围各芯片与微操控器连接的数据线宽度(位)*/

LDR r2, =rROMCON0_S /*设置FLASH(ROM)开始(0x1000000)、完毕地址*/

LDR r3, =rROMCON1 /*设置第二片ROM,本体系没有,可疏忽*/

LDR r4, =rROMCON2 /*同上*/

LDR r5, =rROMCON3 /*同上*/

LDR r6, =rROMCON4 /*同上*/

LDR r7, =rROMCON5 /*同上*/

LDR r8, =rSDRAMCON0_S /*设置SDRAM开始(0x0)、完毕地址*/

LDR r9, =rSDRAMCON1 /*设置第二片SDRAM,本体系没有,可疏忽*/

LDR r10,=rSDRAMCON2 /*同上*/

LDR r11,=rSDRAMCON3 /*同上*/

LDR r12,=rSREFEXTCON /*设置SDRAM刷新率及外部I/O组0的地址*/

LDR r0, =EXTDBWTH /*寄存器组的开始地址,0x3FF3010*/

STMIA r0, {r1-r12} /* remap![r1]->[r0], [r2]->[r0+4], [r3]->[r0+8]……*

/*把SDRAM的地址映射到0x0,FLASH则映射到0x1000000*/

BL C_Entry /*重映射后,再次循环走灯和闪耀*/

别的,还须更改C代码主程序C_Entry()中的内容如下:

{

//while(1) 不再进入死循环

//{

ledRun(10); //循环走灯10次

shineled(5); //闪耀5次

//}

}

用恒坚的集成编译环境编译并下载程序到开发板,调查相同的C程序在FLASH和SDRAM中运转时跑马灯的循环和闪耀速度是否不同。

恒坚开发板还配有几个程序,如串口通讯试验程序,LCD显现操控试验程序。这些程序都不大,很经典,值得花些时刻仔细研究一下。

最终需求阐明,集成开发环境多用于编译简略的程序,如单循环前后台式的、编程量不大的使用程序。假如要完成多任务下的杂乱调度,又要能简化软件规划和充分利用微操控器的高功能,就要嵌入操作体系了。在引进uclinux操作体系后,一般改用命令行式的编译东西,如arm-elf-gcc等,它们运转在 Linux操作体系之上,而非windows操作体系了。

二、 学用Linux操作体系

由于免费和开源,在科研和开发范畴,linux操作体系正在逐步替代windows操作体系,成为个人计算机的干流操作体系。

1、 为(宿)主机装置linux操作体系

挑选内核安稳的高版别linux操作体系,能够确保装置时对硬件设备的自动识别,更可确保今后编译和运转的可靠性。硬盘分区时,有必要树立交流分区 (swap),其巨细是主机内存的两倍;还要有一个ext3分区挂载在linux体系根目录(\)下,它至少要有3G;条件答应,还能够树立一个100M 巨细的分区,挂载在发动目录(\boot)下。挑选作业站方法装置linux体系即可。

2、 uclinux与linux的不同

uclinux源自linux,是对后者的削减、精化,也有一些改动。后者多用于台式机,对硬件设备要求高。前者则多用于嵌入式设备中,究竟嵌入式设备资源有限。

3、 其它虚拟操作体系

有些树立在windows操作体系之上的或并行的虚拟linux环境,如cygwin,VM等,但它们并不合适初度移植uclinux操作体系到嵌入式设备时选用。假如选用它们,就有必要更改uclinux体系源代码中的多份Makefile文件内容,以习惯编译时从规范linux操作体系到其仿真环境的改变。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ziliao/sheji/297897.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部