保存桌面快捷方式 - - 设为首页 - 手机版
凹丫丫旗下网站:四字成语大全 - 故事大全 - 范文大全
您现在的位置: 范文大全 >> 理工论文 >> 电子通信论文 >> 正文

Blob在S3C44B0上的移植


*根据用户选择,进入命令行模块或启动kernel。

在我们使用的开发板上,kernel选用uClinux。由于Flash的存储空间有限,所以存放在Flash中的uClinux内核是经过压缩的。Blob将压缩的uClinux内核加载到SDRAM地址0x0C300000。如果选择启动uClinux,那么压缩的uClinux内核将自解压.Text段到0x0c00800(见uClinux/arch/armnommu/Makefile),然后再跳转到核处,开始运行uClinux。具体的uClinux移植

在此就不详细讨论了。

在SDRAM的存储器空间分配图中,可以看到有blob_base和blob_abs_base两部分。blob_abs_base大家已经知道了,是Blob将自身的第二阶段代码复制到SDRAM所在的区域,而blob_base则是从Blob进行自升级或调试的区域。举例说明,假如Blob已经能正常运行了,但是对于Flash的擦写还不能支持得很好,就可以使用已经运行的Blob通过串口将所新编译好的Blob下载到SDRAM中该区域进行运行调试。调试通过后,可以通过Blob烧写进Flash,覆盖原来的Blob进行升级。这样就不必因为对Blob做了一点小的改动就重新烧写Flash,从而减少了烧写Flash的次数。

3 Blob的移植

对Blob的运行有了一定了解后,就可以进行Blob的具体移植了。首先要修改的start.s文件,具体工作如下:

*屏蔽掉看门狗WTCON;

*配置寄存器SYSCFG暂时关闭缓存,等Blob运行稳定后再开启提高性能;

*初始化I/O寄存器;

*屏蔽中断;

*配置PLLCON寄存器,决定系统的主频;

*调用ledasm.s,在串口未初始化时led状态对于程序是否正常运行很重要;

*调用memsetup-s3c44b0.s中的memsetup进行初始化存储器空间,初始化SDRAM刷新速率等;

*将第二阶段复制到SDRAM,并且跳转到第二阶段。

在ledasm.s中,提供了led的汇编的语言驱动程序。在Blob还有个led.c文件,它和ledasm.s原理一样,只不过是在C语言中调用的。修改led是为了方便初期阶段的调试。在这里根据自己的开发板进行修改。

在memsetup-s3c44b0.s中,修改MEMORY_CONFIG中设置存储器相关的配置,并设定SDRAM刷新速度,相关源码如下所示:

MEMORY_CONFIG:

.long 0x11101002 /*进行存储器的配置,SDRAM刷新速度配置等*/

… /*这里需要根据不同情况进行修改*/

.long 0x20

.globl memsetup /*定义全局标号,以便能被start.s调用*/

memsetup:

ldr r0,=MEMORY_CONFIG /*进行配置*/

ldmia r0,{r1-r13}

ldr r0,=0x01c80000

stmia r0,{r1-r13}

《Blob在S3C44B0上的移植(第2页)》
本文链接地址:http://www.oyaya.net/fanwen/view/140556.html

★温馨提示:你可以返回到 电子通信论文 也可以利用本站页顶的站内搜索功能查找你想要的文章。