管理提醒: 本帖被 mindee 设置为精华(2011-01-03)
以下文字来自附件中的文档描述:
一直以来我想做的事情就是真正的让eCos跑在我的MINI2440开发板上,前面做了一些准备的工作,先让eCos跑在vmware(i386)上,以及skyeye(3sc2410)上。我想我已经有了能够移植到MINI2440的知识基础了。
利用skyeye 模拟运行eCos根据前面在Skyeye上模拟运行的基础,很容易搭建一个模拟Skyeye的模拟环境,eCos的代码不需要修改,只要修改skyeye.conf文件即可,把里面的s3c42410换成s3c2440即可。这一步很容易,运行的结果和在S3C2410上的模拟结果一样。
移植eCos到MINI2440直接编一个eCos下载到我的MINI2440的板子上,运行失败,电脑串口没有任何的输出信息,不知道eCos是否在运行。
再次分析vectors.S这个eCos的系统启动代码:
复制代码- …
- start:
- LED 5
- #if defined(CYG_HAL_STARTUP_RAM) && \
- !defined(CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS)
- // If we get restarted, hang here to avoid corrupting memory
- ldr r0,.init_flag
- ldr r1,[r0]
- 1: cmp r1,#0
- bne 1b
- ldr r1,init_done
- str r1,[r0]
- #endif
- …
|
注意到了文件中的LED X 这样的代码分散在vectors.S中。看来这个是用于系统调试用的一个宏,使用LED灯调试系统是最常用的方法了。重新修改文件中关于LED这个宏的定义,定义成MINI2440上的控制LED灯亮的代码:
复制代码- .macro LED x
- ldr r6,=0x56000010
- ldr r7,=0x155555
- str r7,[r6]
- ldr r6,=0x56000014
- r7=x
- mov r7,r7,lsl #5
- ldr r5 ,[r6]
- orr r5,r5,#0x1f0
- bic r7 , r5 ,r7
- str r7,[r6]
- .endm
|
[ 此帖被mindee在2010-02-04 13:29重新编辑 ]