3741|9

71

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

OALPAtoVA函数问题 [复制链接]

void main(void)
{
        unsigned long i = 0;
        unsigned long dly;
        volatile S3C2410X_IOPORT_REG *s2410IOP = (S3C2410X_IOPORT_REG *)OALPAtoVA(S3C2410X_BASE_REG_PA_IOPORT, FALSE);
        //volatile S3C2410X_IOPORT_REG *s2410IOP = 0x91600000;
        s2410IOP->GPBDAT=0;
        while (1)
        {
                for(dly = 50000; dly > 0; dly--)
                {
                        ;
                }
                s2410IOP->GPBDAT = (~(i<<5));                 // 根据i的值,点亮LED1-4
                if(++i == 16)
                        i = 0;
        }

    // Clear LEDs.
    //   
    OEMWriteDebugLED(0, 0xf);

    // Common boot loader (blcommon) main routine.
    //   
    BootloaderMain();

    // Should never get here.
    //
    SpinForever();
}


我在MIAN中做了一个死循环点LED
        volatile S3C2410X_IOPORT_REG *s2410IOP = (S3C2410X_IOPORT_REG *)OALPAtoVA(S3C2410X_BASE_REG_PA_IOPORT, FALSE);   由于前面开了MMU了。使用这句LED不会闪,


        volatile S3C2410X_IOPORT_REG *s2410IOP = 0x91600000; 使用这句LED就可以闪烁了。这个是什么问题呢???
我怀疑是OALPAtoVA没启作用,是不是呢?



BIB文件
TARGETNAME=eboot
TARGETTYPE=PROGRAM
RELEASETYPE=PLATFORM
EXEENTRY=StartUp

SYNCHRONIZE_DRAIN=1

WINCECPU=1
NOMIPS16CODE=1

INCLUDES=$(INCLUDES);$(_PUBLICROOT)\common\oak\drivers\block\msflashfmd\inc
ADEFINES=-pd "_TGTCPU SETS \"$(_TGTCPU)\"" $(ADEFINES)
CDEFINES= $(CDEFINES) -DPPSH_PROTOCOL_NOTIMEOUT -DCOREDLL
LDEFINES=-subsystem:native /DEBUG /DEBUGTYPE:CV /FIXED:NO

NOLIBC=1

TARGETLIBS= \
    $(_PLATCOMMONLIB)\$(_CPUDEPPATH)\oal_cache_arm920t.lib      \
    $(_TARGETPLATROOT)\lib\$(_CPUDEPPATH)\oal_rtc_devemu.lib    \
    $(_PLATCOMMONLIB)\$(_CPUINDPATH)\oal_kitl.lib               \
    $(_PLATCOMMONLIB)\$(_CPUINDPATH)\oal_log.lib                \
    $(_PLATCOMMONLIB)\$(_CPUINDPATH)\oal_blnk.lib               \
    $(_PLATCOMMONLIB)\$(_CPUINDPATH)\oal_blcommon.lib           \
    $(_PLATCOMMONLIB)\$(_CPUINDPATH)\oal_blmemory_arm.lib            \
    $(_COMMONOAKROOT)\lib\$(_CPUDEPPATH)\eboot.lib              \
    $(_COMMONOAKROOT)\lib\$(_CPUINDPATH)\cs8900dbg.lib          \
    $(_COMMONOAKROOT)\lib\$(_CPUINDPATH)\ne2kdbg.lib            \
    $(_COMMONOAKROOT)\lib\$(_CPUINDPATH)\ddk_io.lib             \
    $(_COMMONOAKROOT)\lib\$(_CPUINDPATH)\gsnull.lib             \
    $(_TARGETPLATROOT)\lib\$(_CPUINDPATH)\smflashk_lib.lib      \
    $(_TARGETPLATROOT)\lib\$(_CPUINDPATH)\amdnork.lib           \
    $(_COMMONOAKROOT)\lib\$(_CPUINDPATH)\fulllibc.lib

SOURCES= \
    startup.s   \
    util.s      \
    main.c      \
    debug.c     \
    ether.c     \
    flash.c     \
    nand.c      \
    name.c
   

WINCETARGETFILES=BootImage

最新回复

找到原因了。是2410上移植到2440上的,2410头文件少定义了一些寄存器,所以导致转换后的地址不正确。  详情 回复 发表于 2009-10-9 21:33
点赞 关注

回复
举报

80

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
OALPAtoVA这个函数是根据oem_addresstable这个映射表进行转换的,看这个表有什么问题没!或者你直接跟踪下找找。
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
在而eboot中我刚使用过,很好啊,没有什么问题。
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

4
 
引用 1 楼 dot_line 的回复:
OALPAtoVA这个函数是根据oem_addresstable这个映射表进行转换的,看这个表有什么问题没!或者你直接跟踪下找找。


这个表没问题,最主要是用那个函数转出来的LED不会闪,我直接写对应表的地址写上去,LED就会闪。

在那个死循环里面。
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

5
 
引用 2 楼 gooogleman 的回复:
在而eboot中我刚使用过,很好啊,没有什么问题。


能借个2440的EBOOT参考参考吗?目前这个问题是一个,还有一个问题就是时钟我都设置不来。谢谢。
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(中级)

6
 
一般这个问题
1:oalpatova 有没有使用uncache
2;mmu有没有开启;
3;延时是不是太短,快得让人看不到灯闪了
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

7
 
查查你OALPAtoVA的返回是多少,应该也是0x91600000,否则就要跟踪进去瞧瞧。io memory都会有两个静态映射,看看你返回的是哪个。
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

8
 
目前我准备先开串口,但是时钟一直设置不对,我是2440 12MHz的晶振,大家一般是怎么设置的。
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

9
 
最好去看看那个函数体,记得只是CE6是系统给了这个函数吧。不过也能看到这个函数,eboot中药用uncahe地址,你也可以直接把你转化的地址和0x91600000比较一下,我感觉你这样转可能是转成了cahe地址了
 
 
 

回复
他妈的天使 该用户已被删除
10
 
提示: 作者被禁止或删除 内容自动屏蔽
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条
电源解决方案和技术 | DigiKey 应用探索站
当月好物、电源技术资源、特色活动、DigiKey在线实用工具,干货多多~

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表