xzffff
驱动小牛
驱动小牛
  • 注册日期2003-07-06
  • 最后登录2012-09-20
  • 粉丝0
  • 关注0
  • 积分377分
  • 威望41点
  • 贡献值0点
  • 好评度34点
  • 原创分0分
  • 专家分0分
20楼#
发布于:2005-01-27 15:02
终于可以加载了,万分感谢wwei_wang大侠。
但是现在又有个新问题,就是我的16554的4个串口是用4个GPIO口做中断的,而这4个GPIO口的硬件中断号是一样的,所以我就把4个串口的系统中断号设成一样,结果初始化第一个串口时没问题,其它3个串口调用函数LoadIntChainHandler时会出错,因为同该硬件中断号已经与一个系统中断号对应了,后面再注册可能会失败。

然后进wince后对串口进行操作(不是16554第一个串口),结果在超级终端里狂打印:

DEVICE:About to wait on CleanDoneEvent
DEVICE:Got CleanDoneEvt

我查了一下,这个打印语句是在device.c里的RegisterDeviceEx函数里答应出来的。

现在我的4个串口只有一个硬件中断号,会不会有问题?
wwei_wang
驱动大牛
驱动大牛
  • 注册日期2002-06-07
  • 最后登录2006-06-23
  • 粉丝0
  • 关注0
  • 积分77分
  • 威望9点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
21楼#
发布于:2005-01-27 16:00
终于可以加载了,万分感谢wwei_wang大侠。
但是现在又有个新问题,就是我的16554的4个串口是用4个GPIO口做中断的,而这4个GPIO口的硬件中断号是一样的,所以我就把4个串口的系统中断号设成一样,结果初始化第一个串口时没问题,其它3个串口调用函数LoadIntChainHandler时会出错,因为同该硬件中断号已经与一个系统中断号对应了,后面再注册可能会失败。

然后进wince后对串口进行操作(不是16554第一个串口),结果在超级终端里狂打印:

DEVICE:About to wait on CleanDoneEvent
DEVICE:Got CleanDoneEvt

我查了一下,这个打印语句是在device.c里的RegisterDeviceEx函数里答应出来的。

现在我的4个串口只有一个硬件中断号,会不会有问题?


(1)你想给我10000分,太客气了吧,1000就行了:)))
(2)我觉得为了保证四个串口都能正常的工作,确保中断不丢失,应该采用不同的中断号吧。
Come on, let us drive the world.
xzffff
驱动小牛
驱动小牛
  • 注册日期2003-07-06
  • 最后登录2012-09-20
  • 粉丝0
  • 关注0
  • 积分377分
  • 威望41点
  • 贡献值0点
  • 好评度34点
  • 原创分0分
  • 专家分0分
22楼#
发布于:2005-01-27 17:19
(1)可惜我不够10000分,呵呵。
(2)你是说用不同的系统中断号吗?硬件中断号是固定的,没办法改了。
wwei_wang
驱动大牛
驱动大牛
  • 注册日期2002-06-07
  • 最后登录2006-06-23
  • 粉丝0
  • 关注0
  • 积分77分
  • 威望9点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
23楼#
发布于:2005-01-28 09:46
(1)可惜我不够10000分,呵呵。
(2)你是说用不同的系统中断号吗?硬件中断号是固定的,没办法改了。


(1)四个串口共用一个硬件中断,你在硬件上已经做死了是吗?
(2)它们几个可以共用一个逻辑中断。
Come on, let us drive the world.
xzffff
驱动小牛
驱动小牛
  • 注册日期2003-07-06
  • 最后登录2012-09-20
  • 粉丝0
  • 关注0
  • 积分377分
  • 威望41点
  • 贡献值0点
  • 好评度34点
  • 原创分0分
  • 专家分0分
24楼#
发布于:2005-01-28 10:01
(1)硬件中断已经做死了,没办法改了。
(2)你说的逻辑中断是指系统中断SYSINTR吧,但是这样会出现我上面说的错误:一个硬件中断绑定一个逻辑中断4次,后面3次会报错。所以我考虑想用不同的SYSINTR号。
(3)顺便问一下,我的驱动里用的MDD是pb自带的,已经编译成.dll了,我想把MDD的源代码改了,那要如何让pb重新编译MDD的.dll呢?我直接把MDD的.dll文件删了,结果编译时会报错。
wwei_wang
驱动大牛
驱动大牛
  • 注册日期2002-06-07
  • 最后登录2006-06-23
  • 粉丝0
  • 关注0
  • 积分77分
  • 威望9点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
25楼#
发布于:2005-01-28 10:39
(2)只绑定一次就行了;
(3)在命令行先编译好。
Come on, let us drive the world.
xzffff
驱动小牛
驱动小牛
  • 注册日期2003-07-06
  • 最后登录2012-09-20
  • 粉丝0
  • 关注0
  • 积分377分
  • 威望41点
  • 贡献值0点
  • 好评度34点
  • 原创分0分
  • 专家分0分
26楼#
发布于:2005-01-28 11:14
要怎样编译呢?用什么命令?
wwei_wang
驱动大牛
驱动大牛
  • 注册日期2002-06-07
  • 最后登录2006-06-23
  • 粉丝0
  • 关注0
  • 积分77分
  • 威望9点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
27楼#
发布于:2005-01-28 11:55
在命令行用bulid 命令编译,pb里有关于build命令的使用方法。
Come on, let us drive the world.
zouyingmyfriend
驱动牛犊
驱动牛犊
  • 注册日期2003-11-09
  • 最后登录2007-09-14
  • 粉丝0
  • 关注0
  • 积分83分
  • 威望12点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
28楼#
发布于:2005-01-28 16:25
NK.bin比NK.nb0要庞大许多,但是里面的东西好像都是一样的,我用UE打开看的。当然,dll也可以看见。不过比较费劲。不过个人觉得UE还是相当好用的。^_^看那堆BIB应该比较清楚。
wwei_wang
驱动大牛
驱动大牛
  • 注册日期2002-06-07
  • 最后登录2006-06-23
  • 粉丝0
  • 关注0
  • 积分77分
  • 威望9点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
29楼#
发布于:2005-01-29 09:10
其实,NK.bin和NK.nb0是一样的,只是NK.nb0是用于烧到flash里面的。
Come on, let us drive the world.
zouyingmyfriend
驱动牛犊
驱动牛犊
  • 注册日期2003-11-09
  • 最后登录2007-09-14
  • 粉丝0
  • 关注0
  • 积分83分
  • 威望12点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
30楼#
发布于:2005-01-29 12:20
我编译出来的nk.nb0比nk.bin大很多,但是板子上恰恰是flash比ram要小的多,我烧写nk.bin到flash也行吧应该,因为nb0太大,超过flash容量了。bin还没有超过。不知道行不行。
xzffff
驱动小牛
驱动小牛
  • 注册日期2003-07-06
  • 最后登录2012-09-20
  • 粉丝0
  • 关注0
  • 积分377分
  • 威望41点
  • 贡献值0点
  • 好评度34点
  • 原创分0分
  • 专家分0分
31楼#
发布于:2005-01-29 13:35
nk.nb0怎样下载到FLASH呢?
我用一个download程序,先把eboot.nb0下载到FLASH里,再用pb通过网口下载nb.bin到FLASH,结果这个东西把网络、串口拔了就跑不了了。
zouyingmyfriend
驱动牛犊
驱动牛犊
  • 注册日期2003-11-09
  • 最后登录2007-09-14
  • 粉丝0
  • 关注0
  • 积分83分
  • 威望12点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
32楼#
发布于:2005-01-29 21:22
是这样的,你要是用Eboot来跑的话就需要通过PB来Launch你的内核,当然需要连上网口和串口了。如果你想系统只是自动起来就运行内核,那样得利用Nboot来引导内核,你的Nboot需要改设置才行。这个引导起来的话应该是不用网口和串口的。
xzffff
驱动小牛
驱动小牛
  • 注册日期2003-07-06
  • 最后登录2012-09-20
  • 粉丝0
  • 关注0
  • 积分377分
  • 威望41点
  • 贡献值0点
  • 好评度34点
  • 原创分0分
  • 专家分0分
33楼#
发布于:2005-01-31 11:43
谢谢,我去试试.
chang_nicolas
驱动小牛
驱动小牛
  • 注册日期2004-08-26
  • 最后登录2007-03-29
  • 粉丝0
  • 关注0
  • 积分370分
  • 威望39点
  • 贡献值0点
  • 好评度34点
  • 原创分0分
  • 专家分0分
34楼#
发布于:2005-01-31 12:03
你好厉害啊,连MDD都改了,是什么问题逼你改它的哦!一个硬件中断可以用于不同的几个逻辑中断,你的逻辑中断号当然不能一样了啊
xzffff
驱动小牛
驱动小牛
  • 注册日期2003-07-06
  • 最后登录2012-09-20
  • 粉丝0
  • 关注0
  • 积分377分
  • 威望41点
  • 贡献值0点
  • 好评度34点
  • 原创分0分
  • 专家分0分
35楼#
发布于:2005-01-31 16:52
我也没办法啊,也没改什么MDD,就是把调试信息都打印出来,因为我的驱动程序我想看看是在调用那一步时出问题的,这样才好改.但是改以后用不了,郁闷.

还有,我查了一下,在debug和release目录下没有Nboot.bin或Nboot.nb0文件啊,是不是编译时有什么选项啊?
xzffff
驱动小牛
驱动小牛
  • 注册日期2003-07-06
  • 最后登录2012-09-20
  • 粉丝0
  • 关注0
  • 积分377分
  • 威望41点
  • 贡献值0点
  • 好评度34点
  • 原创分0分
  • 专家分0分
36楼#
发布于:2005-01-31 17:41
我用的是4.2评估版
wwei_wang
驱动大牛
驱动大牛
  • 注册日期2002-06-07
  • 最后登录2006-06-23
  • 粉丝0
  • 关注0
  • 积分77分
  • 威望9点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
37楼#
发布于:2005-02-02 11:19
兄弟:前面的中断问题解决了吗?怎么解决的?
我是这样理解的:
因为你四个串口共用一个硬件中断,如果只用一个逻辑中断的话,创建一个ist就够了,在ist实现对四个串口的处理;如果四个口采用不同的逻辑中断,你需要创建四个ist分别进行处理,不过我觉得在这种情况下有可能有数据丢失。
Come on, let us drive the world.
xzffff
驱动小牛
驱动小牛
  • 注册日期2003-07-06
  • 最后登录2012-09-20
  • 粉丝0
  • 关注0
  • 积分377分
  • 威望41点
  • 贡献值0点
  • 好评度34点
  • 原创分0分
  • 专家分0分
38楼#
发布于:2005-02-02 11:24
还没有解决,现在我想先把第一个串口调通再说.
呵呵,没办法,只能一步一步来了.
对了,wwei_wang兄,你知不知道我上面说的问题怎么解决?
就是把nk.bin下载进开发板,拔掉网口和串口线就起不来了
xzffff
驱动小牛
驱动小牛
  • 注册日期2003-07-06
  • 最后登录2012-09-20
  • 粉丝0
  • 关注0
  • 积分377分
  • 威望41点
  • 贡献值0点
  • 好评度34点
  • 原创分0分
  • 专家分0分
39楼#
发布于:2005-02-02 11:30
我现在调一个串口,我的驱动接收不到中断,很奇怪.
我在oalintr里定义了SYSINTR,在interrupt.c里的oeminterrupt相关函数注册了我的中断,但是就是收不到中断.不知道是怎么回事.
游客

返回顶部