S3C6410嵌入式应用平台构建(二)

发布者:Wanderlust123最新更新时间:2024-09-12 来源: cnblogs关键字:S3C6410  嵌入式 手机看文章 扫描二维码
随时随地手机看文章

经过之前的实验,对Uboot已经有了大体的了解,前我们已经把led灯给点亮,但这不是我们的根本目的,我们是要进入boot启动,经过两天的分析代码和反复的实验,终于可以进入正常的uboot启动了。


接下来,我们看看关闭MMU,至于为什么要关闭MMU,网上大家都说的很清楚,我就不再重述,但关于关闭MMU有如下代码:


/*

* disable MMU stuff and caches

*/

mrc p15, 0, r0, c1, c0, 0

bic r0, r0, #0x00002300 @ clear bits 13, 9:8 (--V- --RS)

bic r0, r0, #0x00000087 @ clear bits 7, 2:0 (B--- -CAM)

orr r0, r0, #0x00000002 @ set bit 2 (A) Align

orr r0, r0, #0x00001000 @ set bit 12 (I) I-Cache

/* Prepare to disable the MMU */

mcr p15, 0, r0, c1, c0, 0

#if 0 //I don't know why mark blow

/* Prepare to disable the MMU */

adr r1, mmu_disable_phys

/* We presume we're within the first 1024 bytes */

and r1, r1, #0x3fc

ldr r2, _TEXT_PHY_BASE

ldr r3, =0xfff00000

and r2, r2, r3

orr r2, r2, r1

b mmu_disable


.align 5

/* Run in a single cache-line */

mmu_disable:

mcr p15, 0, r0, c1, c0, 0

nop

nop

mov pc, r2

#endif

#endif



我尝试不去注释掉if0的内容,但是连灯都亮不起来,我不是太清楚这是问什么,反正mcr p15, 0, r0, c1, c0, 0将MMU关闭清楚就行了。


接下来就进入bl    lowlevel_init        /* go setup pll,mux,memory */,进行系统时钟,nandflash控制器,ddr内存控制室,led等简单的 初始化。


接下来也是大多数移植过程中需要改的地方了:


重定位代码->从nandflash复制到DDR中并执行!


我自己写的代码如下:


#ifdef CONFIG_BOOT_NAND

relocate:

adr r0, _start /* 当前指令地址 */

ldr r1, =_start /* 链接地址 */

//ldr r2, _armboot_start

//ldr r3, _bss_start

cmp r0, r1

beq after_copy


copy_from_nand:

ldr r0, _armboot_start

ldr r1, _bss_start

ldr sp, _TEXT_PHY_BASE /* setup temp stack pointer */

sub sp, sp, #12

bl copy_nand2ram

tst  r0, #0x0

bne copy_fail


copy_fail:

nop    /* copy from nand failed */

b copy_fail

#endif


首先比较r0,r1, 大家可以用反汇编来看看代码执行过程(反汇编生成方法为:arm-linux-objdump –D uboot > uboot.dis),反汇编后发现,


r0 存放的是程序当前指令地址,即r0 =0,而r1 = 0x57e00000,因此需要重定位。而关键在于,我想通过r0,r1来把代码的起始地址和终止地址传入nandcopy2ram函数,这样就灵活了,但是奇怪的是,传参并传不进去,会导致启动不来,后来我们把这些零零碎碎的判断啊,重定位什么的都不要了,就两句代码:设置栈指针,跳入c函数的copy_nand2ram ,而copy_nand2ram 函数复制uboot代码大小固定死了,为0x3c000,结果烧进去,咦!终于看到希望,终于起来了!!!!


甚是高兴,后来我们又改回r0,r1来传参,还是不行,算了,这肯定是由某个原因导致的。


我们对于汇编指令不是特别熟悉,特别是adr,ldr,还有ldr, =XXX、tst,beq, bnq这些指令太陌生了。后面需要去深入理解。


我同学的这个想法很好,什么都不用做,我们最终的结果不就是去nandflash复制到ram嘛,干脆用以下两句:


ldr sp, _TEXT_PHY_BASE /* setup temp stack pointer */

bl copy_nand2ram


有时我们为了达到目的,确实可以去简化过程,达到目的后再来添加详细过程和步骤。


关键字:S3C6410  嵌入式 引用地址:S3C6410嵌入式应用平台构建(二)

上一篇:S3C6410嵌入式应用平台构建(三)
下一篇:S3C6410嵌入式应用平台构建(一)

推荐阅读最新更新时间:2024-11-12 21:52

嵌入式实时系统在通信系统中的应用
近年来,以PC机为代表的通用计算机系统在硬件和软件方面都取得了飞速的发燕尾服,处理器的运算速度已经达到了每秒10亿次的数量级。作为计算机系统核心的操作系统也从字符界面的单任务、单用户的DOS,发展到拥有图形界面的多用户、多任务的Windows 98、Windows NT。计算机的应用已经扩展到通信、交通、家电及医疗诸多领域。 然而,在经过了很长一段时间的快速发展,尤其是作为过去十年IT发展的推动力以后,以PC为代表的通用计算机系统出现了发展减缓的趋势;与此同时,新兴IT产生的发展要求越来越多的设备具有小型化、智能化的特点。为适应这一发展趋势,在计算机系统的应用过程中发展了一类特殊的系统——嵌入式计算机系统,即嵌入式系统。 由于具
[单片机]
<font color='red'>嵌入式</font>实时系统在通信系统中的<font color='red'>应用</font>
嵌入式视觉技术如何赋予机器观察能力
“看”的能力一直被认为是生物体独有的特质,它让我们能够识别形状、颜色、纹理和深度,进而与外部世界互动。而现在,这个能力正被赋予机器,这就是更专业地说是嵌入式视觉。 正是因为视觉的发展,使得可以避免碰撞,可以识别并抓取物体,医疗机器人可以辅助进行复杂的手术……简而言之,机器视觉使机器更为智能,更能够融入我们的日常生活。 嵌入式视觉的三大技术支柱 嵌入式视觉的核心是图像识别和处理。机器首先需要捕捉其所在环境的,将这些信息转化为可识别和可分析的数据。要实现图像的高效识别和处理,依赖于三大核心技术支柱:、和。 现代的汽车正是嵌入式视觉技术的最佳证明。当车辆在道路上行驶时,其传感器会实时捕捉周围的环境信
[机器人]
uC/OS-II嵌入式实时操作系统的几大特点
早在20世纪60年代,就已经有人开始研究和开发嵌入式操作系统。但直到最近,它才在国内被越来越多的提及,在通信、电子、自动化等需要实时处理的领域所日益显现的重要性吸引了人们越来越多的注意力。但是,人们所谈论的往往是一些著名的商业内核,诸如VxWorks、PSOS等。这些商业内核性能优越,但价格昂贵,主要用于16位和32位处理器中,针对国内大部分用户使用的51系列8位单片机,可以选择免费的uC/OS-II。 uC/OS-II的特点 1.uC/OS-II是由Labrosse先生编写的一个开放式内核,最主要的特点就是源码公开。这一点对于用户来说可谓利弊各半,好处在于,一方面它是免费的,另一方面用户可以根据自己的需要对它进行修改。缺点在于它
[嵌入式]
Linux内核开发工具介绍
进行嵌入式Linux产品开发,往往需要对内核进行裁剪和定制,以满足嵌入式产品的功能和性能需求。本文介绍几种阅读Linux内核源码的工具和方法。 这里所说的“Linux内核开发”仅仅是指嵌入式Linux产品开发中内核和驱动相关开发工作,与Linux所领导的内核开发团队的内核开发有很大不同。 俗话说“工欲善其事,必先利其器”,面对几百兆的Linux内核代码,要阅读、查看或者搜索其中的代码,大部分初次接触到Linux内核代码的开发人员,都有无从下手的感觉。下面推荐几个源码阅读和索引工具,能为后续内核开发提供一些便利。 1、Source Insight Source Insight是Windows平台下一款流行度极高的源码阅读和编辑
[嵌入式]
Linux内核开发工具介绍
详解嵌入式系统技术核心:DSP器件
  嵌入式系统的目的是提供一个以多任务和网络为信心,易于开发的复杂数字系统。从数字技术和信息技术的角度看,嵌入式系统已成为现代信息网络技术应用的基础技术,已成为现代工控领域的基本技术。   使用嵌入式系统技术,不仅可以实现硬件和软件的优化集成,更主要的是提供了使用 “数字基因技术”的基本工具。从计算机和信息网络技术发展的角度看,嵌入式系统标志着网络化计算机时代的到来,标志着计算机应用进入了“通用元素”化和 “数字基因”化发展的新阶段,因此,嵌入式系统在计算机应用具有里程碑的意义。   本文将讨论DSP内核嵌入式系统或芯片的基本技术特征,以及这种嵌入式系统的应用技术特点。    以DSP为核心的嵌入式系统   嵌入式系统实际上就是
[嵌入式]
一种基于S3C6410和STM32的智能家居系统设计
  随着科学技术的发展和人们生活水平的提高,人们对家居的安全、舒适、便利等方面要求也逐步提高,现代家居向着高度智能化、人性化的智能家居方向发展。智能家居又称智能住宅,它是融合了自动化控制系统、计算机网络系统和网络通讯技术于一体的网络化智能化的家居控制系统。智能家居作为一个新生产业,市场消费潜力巨大。本文以三星公司S3C6410处理器为核心,利用S3C6410主控板、STM32、wifi模块、GSM模块及多种移动终端设计一个智能家居系统,使分立的设备通过无线和有线介质构成一个整体,实现了家居环境监视、防盗自动报警、灯具自动控制、燃气泄漏远程报警等功能,使家居更安全、更舒适、更方便。   1 系统整体方案   智能家居系统总体结构如图
[单片机]
一种基于<font color='red'>S3C6410</font>和STM32的智能家居系统设计
嵌入式激光显示手持式测量仪方案
  引言   激光显示是以红、绿、蓝(RGB)三基色激光为光源的显示技术,可以最真实地再现客观世界丰富、艳丽的色彩,提供更具震撼的表现力。我国激光显示研发的最终目标是在未来的几年内将激光显示技术推向产业化。在这样的背景下,激光显示系统的光色性能的检测也显得越发重要。然而,目前的各类光色性能的检测系统以及各类色度照度计,其测量目标主要还是针对具有较宽光谱范围的非相干光源,同时存在成本昂贵、检测精度不高的缺点。   本文针对显示用激光光源波长固定的特点,在获得精确被测光源对应的光电流值的情况下,只要给出被测光源的特定波长相对应的光电转换装置的光电转换系数,就能获得精确的被测光源的光功率分布,进而获得该被测光的光色性能的光通量、对比
[测试测量]
<font color='red'>嵌入式</font>激光显示手持式测量仪方案
基于嵌入式ARM9 S3C2440A 的USB设计与实现
引 言 USB(Universal Serial Bus)是通用串行总线的缩写,因其具有方便易用,动态分配带宽,容错性优越和高性价比等特点,现已成为计算机的主流接口。 随着嵌入式系统的广泛应用,各种小型终端需要开发出与外界联系的USB接口。目前,常用的技术有两种。基于单片机的USB接口,特点是需要外置芯片,电路复杂,留下的 CPU资源不多;基于ARM的USB接口,特点是资源丰富,但ARM系列产品较多,如果选型不当,还需要搭接较多的外围电路,且不能很好地发挥CPU性能。 该设计采用三星公司ARM9核的S3C2440A芯片作为CPU,因为该芯片内部集成了控制USB的所有部件,外围电路简单,易于实现。 1 S3C2440
[单片机]
基于<font color='red'>嵌入式</font>ARM9 S3C2440A 的USB设计与实现
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved