7006|23

73

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

4.2升级到5.0的BSP,中断问题 [复制链接]

小弟目前尝试在做BSP的移植,使用了wince5.0的内核,和从4.2升级而来的bsp,我想把5.0 PUBLIC目录下的SD卡驱动移植过来,可是始终不成功,有以下几点疑惑:
(1)看帖理解是中断的问题导致SDHC_SC2410.DLL无法加载,5.0的是动态中断映射,使用KernelIoControl实现物理中断和系统中断的映射,4.2的是静态的,直接在OEMInterruptHandler中采用if else搞定,那么如果要把5.0中的SD驱动移植到4.2BSP下,是否需要删除KernelIoControl等语句,而armint.c中是否又需要添加静态映射的代码?
(2)目前很郁闷的是:不能在SD驱动的相关代码中通过RETAILMSG输出任何调试信息,但是我试过在armint.c中用RETAILMSG就可以串口输出的,是不是因为一个在PUBLIC文件夹下就不支持,而另一个在PLATFORM文件夹下就可以呢?那么应该怎么修改呢?

最新回复

我的2410 ce5 跑不出來,怎麼幫你查問題?  详情 回复 发表于 2010-1-26 15:33
点赞 关注

回复
举报

96

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
RETAILMSG在PUBLIC下一样可以使用
是不是因为一个在PUBLIC文件夹下就不支持,而另一个在PLATFORM文件夹下就可以呢?
你的意思是PUBLIC下和PLATFORM有同样的驱动?那肯定是PLATFORM中的覆盖掉了PUBLIC下的
 
 

回复

79

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
引用 1 楼 veabol 的回复:
RETAILMSG在PUBLIC下一样可以使用
是不是因为一个在PUBLIC文件夹下就不支持,而另一个在PLATFORM文件夹下就可以呢?
你的意思是PUBLIC下和PLATFORM有同样的驱动?那肯定是PLATFORM中的覆盖掉了PUBLIC下的


不是这个意思,我是说我加在C:\WINCE500\PUBLIC\COMMON\OAK\CSP\ARM\SAMSUNG\S3C2410X\SDHC\SDHCBase下的sdhcmain.cpp中的RETAILMSG不起作用,但是在C:\WINCE500\PLATFORM\smdk2410\KERNEL\HAL\ARM\armint.c中的RETAILMSG就起作用,是不是因为PUBLIC不支持,还是由于没有编译进去?

 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

4
 
今天又试了下,sdhcmain.cpp中的RETAILMSG可以输出了,大概是编译的问题,先clean后build了sdhc工程,然后又点击了右键菜单的第二项Build and Sysgen Current Project,最后点了Build OS->Sysgen,这样就行了。现在的问题是,是不是其中有步骤是多余的?
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

5
 
改动PUBLIC中的代码后 要Build and Sysgen的
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

6
 
这样做代价很大,我做过4.2 到真的5.0的驱动一些移植,必须把中断换成5.0 的ISR不然 搞不成的。这样难度最低。
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

7
 
支持PQOAL格式的BSP是通过KernelIoControl动态映射中断的
    if (!KernelIoControl(IOCTL_HAL_REQUEST_SYSINTR, &m_dwSDIOIrq, sizeof(DWORD), &m_dwSDIOSysIntr, sizeof(DWORD), NULL))

如果用4.2升级后的5.0bsp 直接
        m_dwSDIOSysIntr = SYSINTR_SDMMC;
即可
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

8
 
引用 5 楼 gooogleman 的回复:
这样做代价很大,我做过4.2 到真的5.0的驱动一些移植,必须把中断换成5.0 的ISR不然 搞不成的。这样难度最低。


这一阵子总是有别的事情要忙,现在终于有点空了。

“必须把中断换成5.0 的ISR” 是不是说放弃整个4.2的BSP构架,而采用5.0的那种文件夹格式,那样的话是不是必须移植每一个驱动?
是不是可以保留4.2的bsp架构,仅仅移植5.0的中断部分到4.2的bsp中去?
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

9
 
引用 7 楼 autolu 的回复:
引用 5 楼 gooogleman 的回复:
这样做代价很大,我做过4.2 到真的5.0的驱动一些移植,必须把中断换成5.0 的ISR不然 搞不成的。这样难度最低。


这一阵子总是有别的事情要忙,现在终于有点空了。

“必须把中断换成5.0 的ISR” 是不是说放弃整个4.2的BSP构架,而采用5.0的那种文件夹格式,那样的话是不是必须移植每一个驱动?
是不是可以保留4.2的bsp架构,仅仅移植5.0的中断部分到4.2的bsp中去?


这样和没有改动没有区别,我曾经试图改动,后来我换个5.0BSP来改动不用几天就搞好了。呵呵
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

10
 
gooogleman, "换个5.0BSP来改动"是不是说在5。0的bsp基础上添加原来的4。2驱动,同时修改驱动中的中断啊?
 
 
 

回复

49

帖子

0

TA的资源

一粒金砂(初级)

11
 
引用 9 楼 autolu 的回复:
gooogleman, "换个5.0BSP来改动"是不是说在5。0的bsp基础上添加原来的4。2驱动,同时修改驱动中的中断啊?


对就这样。
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

12
 
好,我这两天试试,谢谢!
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

13
 
今天很郁闷,网上下载了googleman上传的“真正的”5.0 BSP,没有作修改。可以在我的硬件平台上正常显示桌面,但是触摸屏没反应。
把原来4.2下的bsp中的Touch驱动移植过来,修改了中断,也是一样的效果。
郁闷的是系统启动以后串口也没有打印信息,我估计串口驱动也需要根据硬件作修改,可是目前在串口和触屏都有问题的情况下,我应该怎么调试呢?感觉没有突破口。。。
 
 
 

回复

90

帖子

0

TA的资源

一粒金砂(初级)

14
 
Gooogleman,不好意思,还要麻烦你

我试过了网上下载的SMDK2410_ZY_V11好像是周立功的5.0BSP,直接build and sysgen产生的映像可以正常显示,我的LCD是640*480的,但是用这里边的触屏驱动好像没有反应。

以下过程就是我用4.2的触屏驱动移植到5.0下的过程,请你帮我看看问题出在了哪里?

我用我原来的 4.2 下的BSP中的PLATFORM\smdk2410\DRIVERS\TOUCHP文件夹替代了SMDK2410_ZY_V11 BSP 中的PLATFORM\SMDK2410_ZY_V11\SRC\DRIVERS\TOUCH文件夹,文件夹名字改成了TOUCH,其中的tchpdd.cpp改名为s3c2410x_touch.cpp,其中找不到的头文件都从4.2下拷贝到了PLATFORM\SMDK2410_ZY_V11\SRC\INC,编译能够通过了。

然后修改ADC和TIMER3中断:先试了在DdsiTouchPanelEnable中动态申请系统中断号,用KernelIoControl做的,触屏没有反应;

再试在PLATFORM\SMDK2410_ZY_V11\SRC\KERNEL\OAL\intr.c中的BSPIntrInit()函数添加静态中断申请:

    OALIntrStaticTranslate(SYSINTR_TOUCH, IRQ_ADC);
    OALIntrStaticTranslate(SYSINTR_TOUCH_CHANGED, IRQ_TIMER1);

其中的SYSINTR_TOUCH和SYSINTR_TOUCH_CHANGED我在bsp_cfg.h中随便定义了两个数,0x17和0x18(因为原来在4.2中SYSINTR_TOUCH为0x11,被占了,这样定义是否可以?)

这样修改了中断之后触屏还是没有反应,是不是说4.2的驱动移植到5.0BSP上来以后除了中断还需要改其他的东西,还是我的中断设置不正确?

Gooogleman,你说你用5.0的BSP做改动成功了,一定要帮我看看啊,先谢谢了!
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

15
 
顶一下,我也在关注静态中断申请问题
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

16
 
mark。
其中的SYSINTR_TOUCH和SYSINTR_TOUCH_CHANGED我在bsp_cfg.h中随便定义了两个数,0x17和0x18(因为原来在4.2中SYSINTR_TOUCH为0x11,被占了,这样定义是否可以?

这个问题应该是不能随便定义的。至少不能重复的。
 
 
 

回复

59

帖子

0

TA的资源

一粒金砂(初级)

17
 
引用 13 楼 autolu 的回复:

我试过了网上下载的SMDK2410_ZY_V11好像是周立功的5.0BSP,直接build and sysgen产生的映像可以正常显示,我的LCD是640*480的,


autolu請教一下,我剛好也是下載SMDK2410_ZY_V11 5.0的bsp.
當然編譯ok..
可是用eboot燒錄nk.bin後,無法開機,也把nandflash block-0洗掉了.
請問你是怎麼燒nk.bin的
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

18
 
引用 16 楼 harktrip 的回复:
autolu請教一下,我剛好也是下載SMDK2410_ZY_V11 5.0的bsp.
當然編譯ok..
可是用eboot燒錄nk.bin後,無法開機,也把nandflash block-0洗掉了.
請問你是怎麼燒nk.bin的


我用的是原来在4.2上的Nboot和Eboot,自己经过修改的。烧录4.2的IMAGE和SMDK2410_ZY_V11 5.0编译出的IMAGE都是没有问题的阿,你把nboot擦除应该可以重新烧录的吧
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

19
 
引用 15 楼 xumercury 的回复:
这个问题应该是不能随便定义的。至少不能重复的。


我看了一下bsp_cfg.h中,只有以下的定义:
// Static SYSINTR Mapping for driver.
#define SYSINTR_OHCI            (SYSINTR_FIRMWARE+1)        //0x11
#define        SYSINTR_ETHERNET                (SYSINTR_FIRMWARE+6)        //0x16

那么是不是说我只要不和0x11、0x16重复就行了?

我定义了
#define SYSINTR_TOUCH            (SYSINTR_FIRMWARE+7)        //0x17
#define        SYSINTR_TOUCH_CHANGED                (SYSINTR_FIRMWARE+8)        //0x18

算不算是重复呢?
 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

20
 
引用 17 楼 autolu 的回复:
引用 16 楼 harktrip 的回复:
autolu請教一下,我剛好也是下載SMDK2410_ZY_V11 5.0的bsp.
當然編譯ok..
可是用eboot燒錄nk.bin後,無法開機,也把nandflash block-0洗掉了.
請問你是怎麼燒nk.bin的


我用的是原来在4.2上的Nboot和Eboot,自己经过修改的。烧录4.2的IMAGE和SMDK2410_ZY_V11 5.0编译出的IMAGE都是没有问题的阿,你把nboot擦除应该可以重新烧录的吧



問題就是這樣麻煩阿.
我拿4.2的nboot和eboot來燒,就是會導致把block0都清掉了

autolu可以分享你的nboot和eboot嗎?
我的QQ:43545076

 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
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
快速回复 返回顶部 返回列表