阿胶糕什么时候吃最好| 妊娠期是什么意思| 甲状腺是什么部位| 月经为什么是黑色的| 水能变成什么| 独角戏什么意思| 心率过快会有什么后果| 天伦之乐是什么意思啊| 申遗是什么意思| 反流性胃炎吃什么药| 大学记过处分有什么影响| 什么飞什么舞| 吃东西恶心想吐是什么原因| 孕期什么时候补充dha| 无毒不丈夫是什么意思| 13年属什么| 外阴溃烂用什么药| 3加2是什么意思| 羊水偏多对胎儿有什么影响| 人参是什么参| ojbk是什么意思| 肺部肿瘤3cm什么期| 阿司匹林治疗什么病| 东施效颦什么意思| 上师是什么意思| 系统b超主要检查什么| 近水楼台先得月是什么生肖| 吃黄瓜有什么好处和坏处| 河堤是什么意思| 胡萝卜和什么不能一起吃| 失眠去医院挂什么科| 什么季节掉头发最厉害| 年庚是什么意思| 什么是腐女| dm医学上是什么意思| 扁桃体肥大有什么症状| 彪是什么动物| 梦见前夫是什么兆头| 吃什么可以缓解孕吐恶心| 嘴唇有点发黑是什么原因引起的| 血压200意味着什么| 肚子胀气放屁吃什么药| 胃酸的主要成分是什么| 心寒是什么意思| 12月14号是什么星座| 牛肉跟什么炒好吃| 破屋是什么意思| 雨污分流什么意思| 什么原因导致尿酸高| 桂鱼是什么鱼| 免疫力是什么意思| 亏电是什么意思| 发财树用什么肥料最好| 李嘉诚是什么国籍| 8月11日是什么星座| 血脉是什么意思| 均金念什么| 后背疼去医院挂什么科| 小便无力吃什么药| 蒙脱石散不能和什么药一起吃| 至多是什么意思| 93鸡和94狗生什么宝宝| 营养学属于什么专业| 黄芪和北芪有什么区别| 温柔的动物是什么生肖| 身体怕冷什么原因| 肠胃炎吃什么食物| 加字五行属什么| 什么是褪黑素| 什么叫辟谷减肥法| 72年属什么的生肖| 什么血型招蚊子咬| 肝胆湿热用什么药| 来月经吃什么排得最干净| 吃了螃蟹后不能吃什么| 青鱼和草鱼有什么区别| 应该说什么| 山海经讲的是什么| 习惯是什么意思| 初中毕业可以考什么证| 幽门螺旋杆菌有什么症状| 孕期便秘吃什么通便快| 频繁什么意思| 头发白是什么原因引起的| 蕊字五行属什么| 挂钩疼挂什么科| 小孩脱水有什么症状| 女人三十如狼四十如虎什么意思| 腰上有痣代表什么| 七杀大运是什么意思| 朱迅是什么民族| 维生素b2有什么作用和功效| 灵芝不能和什么一起吃| 老虎头上为什么有王字| 睡觉多梦是什么原因引起的| 司空见惯什么意思| 八月13号是什么星座| 心火旺吃什么药| 很low是什么意思| 戊辰五行属什么| 建执位是什么意思| 白事随礼钱有什么讲究| 吃什么对牙齿好| 妞字五行属什么| 香草是什么意思| 梁字五行属什么| 姓蓝的是什么民族| 脂肪瘤是什么引起的| 肾结石能吃什么| 妍五行属什么| 儿童经常头晕什么原因导致的| 钾在人体中起什么作用| 生化是检查什么的| 什么是玫瑰痤疮| 月经没来吃什么药可以催月经来| 珠地棉是什么面料| 鸾凤是什么意思| 肌酐低是什么意思啊| 宜祭祀是什么意思| 男性更年期吃什么药| 一个车一个罔是什么字| 女孩子学什么专业| 1940年出生属什么生肖| 跑步对身体有什么好处| 今年是什么年号| 疙瘩疤痕有什么方法可以去除| 四十不惑是什么意思| 林深时见鹿是什么意思| 内痔有什么症状与感觉| 晕倒是什么原因引起的| 什么是慰安妇| 四川九寨沟什么时候去最好| 焦虑症吃什么中成药能根治| 空谷幽兰下一句是什么| 双手发麻是什么病的前兆| 生化常规主要是检查什么的| 什么叫收缩压和舒张压| 胃不好可以吃什么| 知了猴什么时候结束| 过问是什么意思| 炖鸡汤用什么鸡| 砗磲是什么| 肺部结节是什么原因引起的| 特勤是干什么的| 什么是子宫憩室| 钻牛角尖是什么意思| 小孩发烧吃什么药| 生姜吃多了有什么害处| 正月二十一是什么星座| 月经不调是什么原因造成的| 伸什么缩什么| 氟利昂什么味道| 痃癖是什么病| 印堂发红是什么的征兆| 血糖和血脂有什么区别| 日在校园讲的是什么| 青椒炒什么好吃| 网络诈骗打什么电话| 白细胞计数高是什么原因| 为什么在| npc是什么意思| 六个口是什么字| 嗜是什么意思| 感冒能吃什么| 女人梦见蛇是什么预兆| 生理期可以吃什么水果| 梦见梯子是什么意思| 头晕恶心挂什么科| 脚气用什么药最好| 安欣是什么电视剧| 希爱力是什么药| 复合维生素是什么| 禾加一笔是什么字| 校长是什么级别| 亟须什么意思| 什么是妇科病| 痔疮的症状有些什么| 嚼舌根是什么意思| mchc是什么意思| 见什么知什么| 狮子座和什么星座最配| 手脚发麻是什么原因引起的| 乘务员是干什么的| 什么是芝士| 为什么喝酒| 小儿风寒感冒吃什么药| cin3是什么意思| 优生四项是检查什么| 五谷指的是什么| 杭州都有什么区| 百草枯是什么| 中午一点是什么时辰| 梦到涨大水预示着什么| 多心是什么意思| 吃什么补锌| 米粉是用什么做出来的| 肝阳上亢吃什么药| 度是什么意思| 儿童低烧吃什么药| 伐木累是什么意思| 什么叫增值税| 线性骨折是什么意思| 辛属什么五行| 全脂牛奶是什么意思| 放我一个人生活是什么歌| 阿哥是什么意思| 唐僧取经取的是什么经| 香港特首什么级别| 酸野是什么| 铜锣湾有什么好玩的| 五月初七是什么星座| 1939年属什么生肖| 什么人容易高原反应| 肉便器是什么东西| 什么是动物奶油| 党内警告处分有什么影响| 6.16是什么星座| loveyourself什么意思| 膝关节退行性改变是什么意思| 菜花病是什么| 头皮发麻是什么原因| 西洋参有什么功效和作用| 查染色体挂什么科| 千山鸟飞绝的绝是什么意思| 有事钟无艳无事夏迎春是什么意思| 舌根起泡是什么原因| 血糖有点高吃什么食物好| 42天产后复查都查什么| 公主病是什么意思| 土命适合什么颜色| 喉咙干痒吃什么药| 腰酸背痛挂什么科| 什么是梅毒| 红酒配什么菜| omega3是什么| 什么是m属性| 小孩喉咙发炎吃什么药好| 妇炎康片主要治什么妇科病| 泌尿系统感染挂什么科| 攫住是什么意思| fsw是什么意思| 方脸适合什么发型| 吃蓝莓有什么好处| 什么火海| 梦到拉粑粑是什么意思| 糖化高是什么意思| 冬虫夏草有什么作用| c1是什么| 家字是什么结构| 金达莱花是什么花| 吃什么对肝好| 着床是什么意思| 专情是什么意思| 人生感悟是什么意思| 西铁城手表属于什么档次| 什么花走着开| 女生腰疼是什么原因| 元素是什么| 蛞蝓是什么| 隐喻的意思是什么| gcp是什么意思| 六月二十三号是什么星座| 脑梗三项是检查什么| 生菜不能和什么一起吃| 百度
这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 ? 论坛首页 ? 嵌入式开发 ? MCU ? [讨论]ppc860t 的串行调试和scc3,4的中断冲突解决(老站转)

共1条 1/1 1 跳转至

[讨论]ppc860t 的串行调试和scc3,4的中断冲突解决(老站转)

菜鸟
2025-08-04 21:28:14     打赏
ppc860t 的串行调试和scc3,4的中断冲突解决 gao 于 2002/04/15 15:41 加贴在 嵌入式系统论坛 设为精华 删除 贴子主题:小弟恳请各位大虾帮忙!ppc860t 的串行调试和scc3,4的中断有冲突??*(十万火急) 飞扬 工程师 来自: 发表总数:13   查看   短消息   电子邮件   OICQ   引用   回复 -------------------------------------------------------------------------------- ppc860t 的串行调试和scc3,4的中断有冲突?? 小弟在TORNADO下的一个bsp。用scc1做串口调试. scc3.4开64个信道传送数据,接收到数据到缓冲区之后,应该通过cpm产生中断,调用中断服务程序,但是却没有,终端循环队列里有scc3,4产生的中断,中断号和原因都对,但是服务程序却没有响应。 后来关掉WDB之后,可以进入中断服务程序,又没法调试。要改为FEC方式调试,会很麻烦。求教各位大虾,一定要帮助小弟啊! 小弟刚工作半年多点,仰仗各位了!!!!!!!! zwb781023@sohu.com, qq:23775835. -------------------------------------------------------------------------------- 编辑 发表於:2025-08-04 - 16:39:57 IP: 10.7.*.* 飞扬 工程师 来自: 发表总数:13 查看   短消息   电子邮件   OICQ   引用   回复 -------------------------------------------------------------------------------- 难道没人肯帮小弟一把??? -------------------------------------------------------------------------------- 编辑 发表於:2025-08-04 - 18:15:50 IP: 10.7.*.* hongwind 高级工程师 来自: 发表总数:101 查看   短消息   电子邮件   引用   回复 -------------------------------------------------------------------------------- 可以把你初始化,链接中断服务程序的代码贴出来吗,这样大家也可以看看,不然谁知道到底是怎么回事呢? -------------------------------------------------------------------------------- 编辑 发表於:2025-08-04 - 21:00:07 IP: 61.177.*.* hongwind 高级工程师 来自: 发表总数:101 查看   短消息   电子邮件   引用   回复 -------------------------------------------------------------------------------- 希望对你有用了。 串口驱动(Serial Drivers)编写实例解读(连载:一) <--- 〖回复该帖子〗 串口驱动(Serial Drivers)编写实例解读(连载:一) [代码步骤:Code Steps] 。初始化 。定义支持的串口通道数 。初始化驱动的设备描述 。写你的设备初始化代码 。写入口程序(entry point routines) 。写ISRs(中断服务程序)来管理设备 。使用模板 wind/target/src/drv/ssio/templateSio.c 注意:串口驱动在VxWorks系统开始的代码里初始化 [设备描述:The Device Descriptor] 。XX_DRV结构每个通道有一个XX_CHAN 。每个XX_CHAN指向SIO_DRV_FUNCS 。SIO_DRV_FUNCS引诱驱动的入口(entry point) 。XX_DRV是xxDrv使用的中心数据结构 。xx_CHAN包括: 。xxDrv需要的通道特定信息 。指向驱动SIO_DRV_FUNCS结构的指针 。例: /* device and channel structures */ typedef struct { /* must be first */ SIO_CHAN sio; /* standard SIO_CHAN element */ /* callbacks */ STATUS (*getTxChar) (); STATUS (*putRcvChar) (); void * getTxArg; void * putRcvArg; /* register addresses */ volatile char * cr; /* channel control register */ volatile char * dr; /* channel data register */ volatile char * sr; /* channel status register */ volatile char * ms; /* channel modem status register */ volatile char * mc; /* channel modem control register */ volatile short * br; /* channel baud constant register */ /* misc */ int mode; /* current mode (interrupt or poll) */ int baudFreq; /* input clock frequency */ int options; /* Hardware options */ } TEMPLATE_CHAN; typedef struct { TEMPLATE_CHAN portA; /* DUSRAT has two channels */ TEMPLATE_CHAN portB; volatile char * masterCr; /* master control register */ } TEMPLATE_DUSART; [SIO_CHAN结构] 。对一般字符驱动,一个指向DEV_FDR的指针被用来在驱动和I/O system 之间通讯 。对一个串口驱动,一个指向SIO_CHAN的指针用来在驱动和高层协议之间通讯 在 wind/target/h/sioLib.h;里,SIO_CHAN如下定义: typedef struct sio_chan/* a serial channel */ { SIO_DRV_FUNCS * pDrvFuncs; /* device data */ } SIO_CHAN; .由于高层协议不知道驱动的XX_CHAN结构,SIO_CHAN被用来允许一个精心定义的数据类型在协议间交换数据 .ttyDrv通过SIO_DRV_FUNCS里的入口向xxDrv发送信息,而xxDrv通过回调向ttyDrv发送信息 [入口:Entry Points] xxCallBackInstall() 安装到高层协议的入口(I/O system,target agent(目标代理),等等) xxPollOutPut() 轮巡模式输出 xxPollInput() 轮巡模式输入 xxIoctl() 支持设备特定的ioctl命令 xxTxStaartup() 初始化一个传输循环(transmit cycle) [驱动回调安装程序] int xxCallbackInstall(pSsioChan,callbackType,callback,callbbackArg) pSioChan 指向SIO_CHAN的指针 callbackType SIO_CALLBACK_GET_TX_CHAR 或 SIO_CALLBACK_PUT_RCV_CHAR callback 指向回调程序的指针 callbackArg 回调的参数 。初始化SIO_CHAN结构里的特定成员 。返回OK 或 ENOSYS(当callbackType不是上两种中的一种) /******************************************************************************** templateCallbackInstall - install ISR callbacks to get/put chars This driver allows interrupt callbacks for transmitting characters and receiving characters. In general, drivers may support other types of callbacks too. * * RETURNS: OK on success, or ENOSYS for an unsupported callback type.*/ LOCAL int templateCallbackInstall ( SIO_CHAN * pSioChan, /* channel */ int callbackType, /* type of callback */ STATUS (*callback)(), /* callback */ void * callbackArg /* parameter to callback */ ) { TEMPLATE_CHAN * pChan = (TEMPLATE_CHAN *)pSioChan; switch (callbackType) { case SIO_CALLBACK_GET_TX_CHAR: pChan->getTxChar = callback; pChan->getTxArg = callbackArg; return (OK); case SIO_CALLBACK_PUT_RCV_CHAR: pChan->putRcvChar = callback; pChan->putRcvArg = callbackArg; return (OK); default: return (ENOSYS); } } [驱动初始化] 。参数是没一个指向XX_DRV的指针 。初始化XX_CHAN 。带你的程序的SIO_DRV_FUNCS 。傀儡回调 。所有设备特定 。重启芯片 /* local variables */ LOCAL SIO_DRV_FUNCS templateSioDrvFuncs = { templateIoctl, templateTxStartup, templateCallbackInstall, templatePollInput, templatePollOutput }; void templateDevInit ( TEMPLATE_DUSART * pDusart ) { /* initialize each channel`s driver function pointers */ pDusart->portA.sio.pDrvFuncs = &templateSioDrvFuncs; pDusart->portB.sio.pDrvFuncs = &templateSioDrvFuncs; /* install dummy driver callbacks */ pDusart->portA.getTxChar = dummyCallback; pDusart->portA.putRcvChar = dummyCallback; pDusart->portB.getTxChar = dummyCallback; pDusart->portB.putRcvChar = dummyCallback; /* reset the chip */ TEMPLATE_REG_WRITE(pDusart, masterCr, TEMPLATE_RESET_CHIP); /* setting polled mode is one way to make the device quiet */ templateIoctl ((SIO_CHAN *)&pDusart->portA, SIO_MODE_SET, (void *)SIO_MODE_POLL); templateIoctl ((SIO_CHAN *)&pDusart->portB, SIO_MODE_SET, (void *)SIO_MODE_POLL); } /******************************************************************************* * * dummyCallback - dummy callback routine * * RETURNS: ERROR. */ LOCAL STATUS dummyCallback (void) { return (ERROR); } ※ 作 者: 自由妹妹 01-5-22 下午 05:10:58 ※ 已拜读,请教! <--- 〖回复该帖子〗 我发现在usrSerial.c中定义了TY_NAME_BASE `/tyCo/` 如果我使用scc3做uart串口,设备名是否只能为`/tyCo/x`形式? 还是任意取名tty 设备名,然后该设备名通过一个SIO_CHAN,在xxCallbackInstall函数中传给上层协议, 上层在通过SIO_CHAN调用IOCTL来控制串口驱动. 请你指教,谢谢! ※ 作 者: little 01-5-23 下午 02:31:59 ※ reply little <--- 〖回复该帖子〗 Little: 设备名只要是唯一的就可以了... 另,你用scc3做uart一定使用st16c552或者st16c554吧? 我现有st16c552(可扩展两个串口)的完全驱动程序.正开发st16c554(带4个 ACE,可扩展4个串口)的驱动, 欢迎多多交流... ※ 作 者: 自由妹妹 01-5-23 下午 02:59:45 ※ re:自由妹妹 <--- 〖回复该帖子〗 我用的是860t的scc,不是16552串口芯片. 不过,我对16554很熟,我以前写过串口卡的驱动. ※ 作 者: little 01-5-23 下午 04:11:30 ※ To Dear Little <--- 〖回复该帖子〗 Little哥哥: 太好了,居然找到一个做相同工作的同道,呜呜(感动得泣不成声)。 小妹现正在搞16c554的驱动程序. 860的scc可以扩展4个串口,smc可以扩展两个,但是我们的板子需要更多(8个),所以决定用两个16c554. 你能给我一些写16554驱动的心得和资料吗?谢谢... ※ 作 者: 自由妹妹 01-5-23 下午 08:18:38 ※ To Dear Little <--- 〖回复该帖子〗 关于硬件的问题可以问我,因为我身边有一个比较厉害的博士后. ※ 作 者: 自由妹妹 01-5-23 下午 10:13:43 ※ send me E-mail! <--- 〖回复该帖子〗 我有些忙,你用?cpu,我把E-mail地址给你,请你和我联系,好吗? psos@telekbird.com.cn. QQ:67511196 ※ 作 者: little 01-5-26 上午 10:06:43 ※ Re:reply little <--- 〖回复该帖子〗 这么基础的东西都不会,是不是刚入门呀!本人写过不少VXWORKS、PSOS的驱动程序,有些很复杂,有空和大家交流一下,比如多通道HDLC、DMA、100M、PPP等. dc_peng@hotmail.com ※ 作 者: duccy 01-6-5 上午 10:44:43 ※ Re:Re:reply little <--- 〖回复该帖子〗 我可以问一个很才的问题吧! 在vxworks下面怎么和串口进行通讯,希望能帮我 谢谢、11 ※ 作 者: nhqing 01-7-9 下午 01:41:21 ※ Re:reply little <--- 〖回复该帖子〗 自由妹妹姐姐,我可以问你一个问题吗 ※ 作 者: 陈虹 01-6-6 下午 04:10:29 ※ Re:串口驱动(Serial Drivers)编写实例解读(连载:一) <--- 〖回复该帖子〗 自由妹妹: 拜读了您的程序,受益良多,我想问如果是用1655X系列作的扩展串口卡,可不可以将Vxworks的标准串中驱动直接扩展到自己卡上用呢? ※ 作 者: 化民 01-5-28 上午 07:39:13 ※ Re:Re:串口驱动(Serial Drivers)编写实例解读(连载:一) <--- 〖回复该帖子〗 化民: VXworks标准的串口驱动是采用SMC(串口通讯控制器)的两个通道,1655x的机制与之不同,故虽然其驱动程序架构相同,但实现起来差异较大. 我现在在把SMC和16c554整合到一起,而且现在已经有阶段性成果,希望我们可以多交流... 另外,我很快会推出一篇关于这个的文章(顺便回击一下论坛上某些人对我的指责),请期待... 自由妹妹 ※ 作 者: 自由妹妹 01-5-28 下午 10:23:03 ※ Re:Re:Re:串口驱动(Serial Drivers)编写实例解读(连载:一) <--- 〖回复该帖子〗 我也要用到166C554,166654;请各位大虾指教!能否赠阅部分心得或原程序! ※ 作 者: sleac 01-5-29 下午 06:06:24 ※ Re:串口驱动(Serial Drivers)编写实例解读(连载:一) <--- 〖回复该帖子〗 大家好,看了大家的高作,有找到亲人的感觉,我现在正在vxworks下进行协议开发,但是对vxworks的机制很是不熟,在对串口驱动的开发中,我扩展了12个串口(用3片16c554),利用epld进行地址译码(地址0x1000开始),中断的合并(把16c554的12个中断合成一个x86的中断),完全按照汇编的方式对串口进行编程。我想做成标准的驱动程序的方式,请大家多多指导。 我的程序如下,有些语句是调试用的,没有一一去掉,请多包涵: /*初始化函数,iosign为第几个串口,0--11)*/ void comini(int iosign) { /*清空原来状态*/ sysInByte(0x1000*iosign+0x1100+lsr);/*read LSR*/ sysInByte(0x1000*iosign+0x1100+msr);/*READ MSR*/ sysInByte(0x1000*iosign+0x1100+iir);/*READ IIR*/ sysInByte(0x1000*iosign+0x1100+rbr);/*READ RBR*/ sysOutByte(0x1000*iosign+0x1100+lcr,0); /* DLAB=0 */ sysOutByte(0x1000*iosign+0x1100+ier,0); /* CLOSE INT */ sysInByte(0x1000*iosign+0x1100+lsr);/*read LSR*/ sysInByte(0x1000*iosign+0x1100+msr);/*READ MSR*/ sysInByte(0x1000*iosign+0x1100+iir);/*READ IIR*/ sysInByte(0x1000*iosign+0x1100+rbr);/*READ RBR*/ sysOutByte(0x1000*iosign+0x1100+lcr,0x80);/*set DLAB=1*/ sysOutByte(0x1000*iosign+0x1100+dlm,0);/*DLM=0*/ sysOutByte(0x1000*iosign+0x1100+dll,0x30);/*DLL=0x0c,set 9600*/ sysOutByte(0x1000*iosign+0x1100+lcr,0x03);/*set n,8,1*/ sysOutByte(0x1000*iosign+0x1100+mcr,0x0b);/*mcr=0x0b,P527*/ sysInByte(0x1000*iosign+0x1100+lsr);/*read LSR*/ sysInByte(0x1000*iosign+0x1100+msr);/*READ MSR*/ sysInByte(0x1000*iosign+0x1100+iir);/*READ IIR*/ sysInByte(0x1000*iosign+0x1100+rbr);/*READ RBR*/ #ifndef ENABLE_FOLLOW sysOutByte(0x1000*iosign+0x1100+ier,0x03); #else sysOutByte(0x1000*iosign+0x1100+ier,0x0b); #endif } 再在初始化中循环调用12次,12个串口的初始化就能完成。 用 vectot7 = INUM_TO_IVEC((INT_NUM_IRQ0)+7); intConnect(vectot7,FunIRQ7,0); 把中断7定向到函数FunIRQ7(),这个函数处理8个串口,另外4个类似 void FunIRQ7() /*com0--7*/ { unsigned char temp; #ifdef ENABLE_FOLLOW unsigned char mymsr; #endif int mycnt; int ionumber; int i; unsigned char _flag; for(i=0;i<=7;i++) _flag[i]=sysInByte(0x1000*i+0x1100+iir); do { for(ionumber=0;ionumber<=7;ionumber++) { if((_flag[ionumber]&0x01)==0) { do { switch(_flag[ionumber]&0x0f) { #ifdef ENABLE_FOLLOW case 0: /*处理流控*/ break; #endif case 4: case 12: /*接收数据*/ break; case 2: /*发送数据*/ break; default: break; } }while(((_flag[ionumber]=sysInByte(0x1000*ionumber+0x1100+iir))&0x01)==0); } } for(i=0;i<=7;i++) _flag[i]=sysInByte(0x1000*i+0x1100+iir); }while(((_flag[0]&0x01)==0)||((_flag[1]&0x01)==0)||((_flag[2]&0x01)==0)\||((_flag[3]&0x01)==0)||((_flag[4]&0x01)==0)||((_flag[5]&0x01)==0)\||((_flag[6]&0x01)==0)||((_flag[7]&0x01)==0)); } 希望大家多联系,freedom_zj@163.com -------------------------------------------------------------------------------- 编辑 发表於:2025-08-04 - 21:02:58 IP: 61.177.*.* 飞扬 工程师 来自: 发表总数:13 查看   短消息   电子邮件   OICQ   引用   回复 -------------------------------------------------------------------------------- hongwind 兄:你好!我现在把我的config.h贴出来,请你看看有什么毛病,另外,我的以太网口用的lxt972。硬件自协商方式,是不是还要在syslib。c里加上对MII控制寄存器的配置啊?好象是不需要程序配置的,但我看文档上说得好象是必需的。 Selecting the Interface The MPC860T provides support for MII and 7-pin interfaces. The mode is controlled by bit 29 (MII_MODE) of the Receive Control (R_CNTRL) register. • Set bit 29 = 1 to select MII mode for 10/100M. 我用的是fec。另外还有860t的寄存器ECNTRL里的FEC_PINMUX FEC enable,ETHER_EN Ethernet enable。这些都应该设的吧?我没有860t fec的bsp,所以一切都很迷茫。万望指教。 下面是config.h,我自己改的。 #ifndef INCconfigh #define INCconfigh /* BSP version/revision identification, should be placed * before #include `configAll.h` */ #define BSP_VER_1_1 1 #define BSP_VERSION `1.1` #define BSP_REV `/2` /* 0 for the first bsp revision */ #include `configAll.h` #define INCLUDE_STAT_SYM_TBL #define CTC_860T /* define it in the case of a CTC860T */ #ifdef CTC_860T #define DEFAULT_BOOT_LINE \ `motfec(0,0)host:/usr/vw/config/fec/vxWorks h=10.7.201.198 e=10.7.201.111 u=target` #else /* CPM_860T */ #define DEFAULT_BOOT_LINE \ `cpm(0,0)host:/usr/vw/config/ads860/vxWorks h=90.0.0.3 e=90.0.0.50 u=target` #endif /* CTC_860T */ /* Number of TTY definition */ #define N_SIO_CHANNELS 1 /* No. serial I/O channels zwb */ #undef NUM_TTY #define NUM_TTY N_SIO_CHANNELS /* **2001.10.11 added for windview */ /*#undef INCLUDE_WINDVIEW */ #define INCLUDE_SHELL /* zwbd 02.4.3*/ /* #define INCLUDE_USER_APPL */ #undef EDO_DRAM /* to define if the DRAM is EDO */ #undef INCLUDE_TIMESTAMP /* no timestamp driver support */ /* Cache and MMU not supported */ #undef INCLUDE_CACHE_SUPPORT /* no cacheLib support */ #undef USER_I_CACHE_ENABLE #undef USER_I_CACHE_MODE #define USER_I_CACHE_MODE CACHE_DISABLED #undef USER_D_CACHE_ENABLE #undef USER_D_CACHE_MODE #define USER_D_CACHE_MODE CACHE_DISABLED #undef USER_B_CACHE_ENABLE /* MMU configuration */ #undef INCLUDE_MMU_BASIC /* no MMU support */ #undef INCLUDE_MMU_FULL /* no MMU support */ #undef USER_I_MMU_ENABLE #undef USER_D_MMU_ENABLE /*Network driver configuration */ #define INCLUDE_ICMP /*zwbr 02.4.3*/ #define INCLUDE_TELNET /*zwbr 02.4.3*/ #define FOLDER_TCPIP_CONFIG /*zwbr 02.4.3*/ #define FOLDER_TCP_IP /*zwbr 02.4.3*/ #define INCLUDE_BSD_SOCKET /*zwbr 02.4.3*/ #define INCLUDE_BSD /*zwbr 02.4.3*/ #define INCLUDE_TCP /*zwbr 02.4.3*/ #define INCLUDE_IP /* zwbr 02.4.3*/ #define INCLUDE_NET_SETUP /*zwbr 02.4.3*/ #define INCLUDE_NETWORK /* zwbr 02.3.5*/ #define INCLUDE_NET_INIT /*zwbr 02.3.20 */ #undef INCLUDE_EX #undef INCLUDE_ENP #undef INCLUDE_SM_NET /* Enhanced Network Driver (END) support */ #define INCLUDE_END /* Enhanced Network Driver (see configNet.h) zwbr 02.3.6*/ #undef END_OVERRIDE /* define if you are using old boot ROMs. */ #undef INCLUDE_VME /* Optional timestamp support */ #undef INCLUDE_TIMESTAMP /* clock rates */ /* SYS_CLK_RATE_MIN/MAX used in sysClkRateSet() in target\src\drv\timer\ppcDecTimer.c */ #define SYS_CLK_RATE_MIN 3 /* minimum system clock rate */ #define SYS_CLK_RATE_MAX 5000 /* maximum system clock rate */ #define AUX_CLK_RATE_MIN 3 /* minimum auxiliary clock rate */ #define AUX_CLK_RATE_MAX 5000 /* maximum auxiliary clock rate */ /* * Cristal Frequency - This macro defines the input oscillator frequency * clocking the PPC860. */ #define CRISTAL_FREQ 4000000 /* 4 Mhz */ #define FREQ_20_MHZ 20000000 /* 20 Mhz */ #define FREQ_25_MHZ 25000000 /* 25 Mhz */ #define FREQ_50_MHZ 50000000 /* 50 Mhz */ /* * SPLL_FREQ_REQUESTED - This macro defined the expected system PLL (SPLL) * frequency divided by 2. The two supported frequencies are either 25 * or 50 MHz. */ #define SPLL_FREQ_REQUESTED FREQ_50_MHZ /* 50 Mhz */ /* * DRAM refresh frequency - This macro defines the DRAM refresh frequency. * e.i: A DRAM with 1024 rows to refresh in 16ms: * DRAM_REFRESH_FREQ = 1024/ 16E-3 = 64E3 hz */ #define DRAM_REFRESH_FREQ 64000 /* 64 kHz */ /* * Baud Rate Generator division factor - 0 for division by 1 * 1 for division by 4 * 2 for division by 16 * 3 for division by 64 */ #define BRGCLK_DIV_FACTOR 0 /* remove unnecessary drivers */ #undef INCLUDE_CPM /* exclude the CPM ethernet driver zwb? 02.3.20*/ #undef INCLUDE_BP #undef INCLUDE_EX #undef INCLUDE_ENP #undef INCLUDE_SM_NET #undef INCLUDE_SM_SEQ_ADD /*#undef INCLUDE_NET_INIT ZWBD 02.4.3*/ #ifdef CTC_860T #ifdef INCLUDE_NETWORK #define INCLUDE_MOT_FEC /* define if you are using the FEC. */ #endif /* INCLUDE_NETWORK */ #undef INCLUDE_CPM /* define, if you want to use the */ /* CPM ethernet driver */ #undef USER_D_CACHE_ENABLE /* data cache not supported for now */ #else /* CTC_860T */ #undef INCLUDE_MOT_FEC /* define if you are using the FEC. */ #ifdef INCLUDE_NETWORK #define INCLUDE_CPM /* include the CPM ethernet driver */ #endif /* INCLUDE_NETWORK */ #endif /* CTC_860T */ #ifdef INCLUDE_MOT_FEC #ifndef INCLUDE_END #define INCLUDE_END /* define if you are using the FEC */ #endif /* INCLUDE_END */ #endif /* INCLUDE_MOT_FEC */ /* Memory addresses */ #define LOCAL_MEM_LOCAL_ADRS 0x00000000 /* Base of RAM */ #define LOCAL_MEM_SIZE 0x02000000 /* 32 Mbyte memory available */ /* * The constants ROM_TEXT_ADRS, ROM_SIZE, and RAM_HIGH_ADRS are defined * in config.h, MakeSkel, Makefile, and Makefile.* * All definitions for these constants must be identical. */ #define ROM_BASE_ADRS 0xFFF00000 /* base address of ROM */ #define ROM_TEXT_ADRS ROM_BASE_ADRS + 0x100 #define ROM_SIZE 0x000FFFFF /* 1024 K ROM space */ /* RAM address for ROM boot */ #define RAM_HIGH_ADRS (LOCAL_MEM_LOCAL_ADRS + 0x00800100) /* RAM address for sys image */ #define RAM_LOW_ADRS (LOCAL_MEM_LOCAL_ADRS + 0x00100100) /*#ifdef ROM_RESIDENT zwb 02.03.20*/ /* since rules.bsp build vxworks.res_rom using RES_LOW_FLAGS (== -Ttext $(ROM_TEXT_ADRS) -Tdata $(RAM_LOW_ADRS)), and in bootinit.c romstart() routine, copy data segment from ROM to RAM`s adress RESIDENT_DATA ( defined to be RAM_DST_ADRS in bootinit.c), so, make RAM_DST_ADRS to be RAM_LOW_ADRS to be consistent ). */ /* #define RAM_DST_ADRS RAM_LOW_ADRS #else #define RAM_DST_ADRS RAM_HIGH_ADRS #endif */ #define USER_RESERVED_MEM 0x00000000 /* user reserved memory size */ /* * Default power management mode - selected via vxPowerModeSet() in * sysHwInit(). */ #define DEFAULT_POWER_MGT_MODE VX_POWER_MODE_DISABLE #define BUS 0 /* bus-less board */ #define CPU PPC860 /* CPU type */ /* * SPLL Multiplication Factor: use to set the MF bits of the PLPRCR register. * PLPRCR is set by sysHwInit() in sysLib.c. * SPLL_FREQ_REQUESTED and CRISTAL_FREQ are defined in config.h */ #define SPLL_MUL_FACTOR ((SPLL_FREQ_REQUESTED / CRISTAL_FREQ) - 1) /* * SPLL Multiplication Factor to get a 20 MHZ running frequency */ #define SPLL_MUL_FACTOR_20MHZ ((FREQ_20_MHZ / CRISTAL_FREQ) - 1) /* * SPLL Frequency - gives the SPLL real frequency divide by 2 */ #define SPLL_FREQ ((SPLL_MUL_FACTOR + 1) * CRISTAL_FREQ) /* * Baud Rate Generator Clock - gives the Baud Rate Generator Clock (BRGCLK) * Frequency. */ #define BRGCLK_FREQ (SPLL_FREQ / ( 1 << (2 * BRGCLK_DIV_FACTOR))) /* * Refresh value - defines the number of BRGCLK period between two * DRAM refresh cycle. */ #define REFRESH_VALUE (BRGCLK_FREQ / DRAM_REFRESH_FREQ) /* * Periodic Timer A period - value used to set the PTA bits of * the Machine A Mode Register (MAMR). This register is used to * controle the User_Programmable Machine A (UPM). The UPM is part of * the memory controller. */ #define PTA_VALUE (( REFRESH_VALUE / 64) != 0 ? (REFRESH_VALUE / 64) : \ ((REFRESH_VALUE / 32) != 0 ? (REFRESH_VALUE / 32) : \ ((REFRESH_VALUE / 16) != 0 ? (REFRESH_VALUE / 16) : \ ((REFRESH_VALUE / 8) != 0 ? (REFRESH_VALUE / 8) : \ ((REFRESH_VALUE / 4) != 0 ? (REFRESH_VALUE / 4) : \ (REFRESH_VALUE / 2)))))) /* * Periodic Timer Prescaler Division Factor - gives the division factor * of the Periodic Timer Prescaler (PTP). The PTP is part of the * memory controller. It divide the BRGCLK (Baud Rate Generator Clock) by * either 2, 4, 8, 16, 32 or 64 and send this divided clock to the * Periodic Timer. * This macro is used to set the DRAM refresh cycle period. */ #define PTP_DIV_FACTOR (REFRESH_VALUE / PTA_VALUE) /* * PTP Value - translate the Periodic Timer Prescaler Division Factor * to the value to place in the PTP register. */ #define PTP_VALUE ( PTP_DIV_FACTOR == 2 ? MPTPR_PTP_DIV2 : \ (PTP_DIV_FACTOR == 4 ? MPTPR_PTP_DIV4 : \ (PTP_DIV_FACTOR == 8 ? MPTPR_PTP_DIV8 : \ (PTP_DIV_FACTOR == 16 ? MPTPR_PTP_DIV16 : \ (PTP_DIV_FACTOR == 32 ? MPTPR_PTP_DIV32 : \ MPTPR_PTP_DIV64))))) #define TMBCLK_FREQ CRISTAL_FREQ /* define the decrementer input clock frequency */ #define DEC_CLOCK_FREQ TMBCLK_FREQ /* Internal Memory Map base Address */ #define INTERNAL_MEM_MAP_ADDR 0xFF000000 #define INTERNAL_MEM_MAP_SIZE 0x00010000 /* 64 K bytes */ /* CPU type in the PVR */ #define CPU_TYPE_860 0x0050 /* value for PPC860 */ #define CPU_REV_A1_MASK_NUM 0x0010 /* revision mask num */ #endif /* INCconfigh */ -------------------------------------------------------------------------------- 编辑 发表於:2025-08-04 - 11:14:42 IP: 10.7.*.* 飞扬 工程师 来自: 发表总数:13 查看   短消息   电子邮件   OICQ   引用   回复 -------------------------------------------------------------------------------- 是在syslib.c 里加吗? 里边有这个函数。 STATUS sysFecEnetEnable ( UINT32 motCpmAddr /* base address of the on-chip RAM */ ) { int intLevel = intLock(); /* mask IRQ7 off, as it is shared with MII_TX_CLK */ *SIMASK (motCpmAddr) &= ~SIMASK_IRM7; /* also clear any pending interrupt */ *SIPEND (motCpmAddr) |= SIPEND_IRQ7; /* * set the arbitration level for the FEC. Do not enable * FEC aggressive mode. */ *SDCR (motCpmAddr) |= SDCR_FAID_BR6; /* set Port D to use MII signals */ *PDPAR (motCpmAddr) = 0x1fff; *PDDIR (motCpmAddr) = 0x1FFF; intUnlock (intLevel); return (OK); } -------------------------------------------------------------------------------- 编辑 发表於:2025-08-04 - 11:20:28 IP: 10.7.*.* embedfree 高级工程师 来自: 发表总数:142 查看   短消息   电子邮件   引用   回复 -------------------------------------------------------------------------------- 以下文件名是不一定的!!! 使用MPC860BSP,双网口的启动过程 1) 在860PC.h中,通过定义INCLUDE_CPM,做一些10M口的定义,包括名称、BD表、中断等; #ifdef INCLUDE_CPM /* CPM ethernet driver */ #define INCLUDE_IF_USR #define IF_USR_NAME `cpm` /* device name */ #define IF_USR_ATTACH sysCpmAttach /* driver attach routine */ /* address of SCC param RAM */ #define IF_USR_ARG1 (char *) INTERNAL_MEM_MAP_ADDR + 0x3c00 #define IF_USR_823ARG1 (char *) INTERNAL_MEM_MAP_ADDR + 0x3d00 /* address of SCC regs */ #define IF_USR_ARG2 (int)INTERNAL_MEM_MAP_ADDR + 0x0a00 #define IF_USR_823ARG2 (int)INTERNAL_MEM_MAP_ADDR + 0x0a20 #define IF_USR_ARG3 (int) IV_SCC1 /* int number for SCC1 */ #define IF_USR_823ARG3 (int) IV_SCC2 /* int number for SCC2 */ /* address of transmit BDs */ #define IF_USR_ARG4 (int) INTERNAL_MEM_MAP_ADDR + 0x2000 /* address of receive BDs */ #define IF_USR_ARG5 (int) INTERNAL_MEM_MAP_ADDR + 0x2100 #define IF_USR_ARG6 (int) 0x20 /* number of transmit BDs */ #define IF_USR_ARG7 (int) 0x20 /* number of receive BDs */ #define IF_USR_ARG8 (int) NONE /* allocate mem for buffers */ #endif /* INCLUDE_CPM */ 2) 在CONFIGNET.H中,如果是MPC860,则定义了FADS_860T。同时通过判断是否定义了FADS_860T,来决定DEFAULT_BOOT_LINE的定义是100M口还是10M口。 #ifdef FADS_860T # define DEFAULT_BOOT_LINE \ `motfec(0,0)host:/usr/wind/target/config/ads860P/vxWorks.st h=192.103.54.45 e=192.103.54.224:ffffff00 u=swamy pw=` #else /* FADS_860T */ # define DEFAULT_BOOT_LINE \ `cpm(0,0)host:/usr/vw/config/ads860/vxWorks h=90.0.0.3 e=90.0.0.50 u=target` #endif /* FADS_860T */ 3) 在CONFIGNET.H中,通过定义INCLUDE_CPM,ENDDEVTBL[ ]包含调用CPM_LOAD_FUNC==sysMotCpmEndLoad;如果定义了FADS_860T,那么ENDDEVTBL[ ]调用FEC_LOAD_FUNC==motFecEndLoad #ifdef FADS_860T END_TBL_ENTRY endDevTbl [] = { { 0, FEC_LOAD_FUNC, FEC_LOAD_STRING, 1, NULL, FALSE}, #ifdef INCLUDE_CPM { 1, CPM_LOAD_FUNC, CPM_LOAD_STRING, 1, NULL, FALSE}, #endif /* INCLUDE_CPM */ { 0, END_TBL_END, NULL, 0, NULL, FALSE}, }; #else /* FADS_860T */ END_TBL_ENTRY endDevTbl [] = { { 0, CPM_LOAD_FUNC, CPM_LOAD_STRING, 1, NULL, FALSE}, { 0, END_TBL_END, NULL, 0, NULL, FALSE}, }; #endif /* FADS_860T */ 4) 在SYSMOTCPMEND.C中,使用sysMotCpmEndLoad装载CPM. 该函数是CPM以太网驱动程序的一部分 * :::::::: * 同时,在该文件中,定义了netFuncs结构,并通过motCpmEndLoad来调用 LOCAL NET_FUNCS netFuncs = { (FUNCPTR)motCpmEndStart, /* start func. */ (FUNCPTR)motCpmEndStop, /* stop func. */ (FUNCPTR)motCpmEndUnload, /* unload func. */ (FUNCPTR)motCpmEndIoctl, /* ioctl func. */ (FUNCPTR)motCpmEndSend, /* send func. */ (FUNCPTR)motCpmEndMCastAddrAdd, /* multicast add func. */ (FUNCPTR)motCpmEndMCastAddrDel, /* multicast delete func. */ (FUNCPTR)motCpmEndMCastAddrGet, /* multicast get fun. */ (FUNCPTR)motCpmEndPollSend, /* polling send func. */ (FUNCPTR)motCpmEndPollReceive, /* polling receive func. */ endEtherAddressForm, /* Put address info into a packet. */ endEtherPacketDataGet, /* Get a pointer to packet data. */ endEtherPacketAddrGet /* Get packet addresses. */ }; if (END_OBJ_INIT (&pDrvCtrl->endObject, (void *)pDrvCtrl, MOT_DEV_NAME,pDrvCtrl->unit, &netFuncs,END_OBJ_STRING) == ERROR) return (NULL); 在MOTFECEND.C中,使用motFecEndLoad装载FEC, 该函数是FEC以太网驱动程序的一部分 * * `::::: * ::::::` * 同时,在该文件中,定义了netFuncs结构,并通过motFecEndLoad来调用 LOCAL NET_FUNCS netFuncs = { (FUNCPTR) motFecStart, /* start func. */ (FUNCPTR) motFecStop, /* stop func. */ (FUNCPTR) motFecUnload, /* unload func. */ (FUNCPTR) motFecIoctl, /* ioctl func. */ (FUNCPTR) motFecSend, /* send func. */ (FUNCPTR) motFecMCastAddrAdd, /* multicast add func. */ (FUNCPTR) motFecMCastAddrDel, /* multicast delete func. */ (FUNCPTR) motFecMCastAddrGet, /* multicast get fun. */ (FUNCPTR) motFecPollSend, /* polling send func. */ (FUNCPTR) motFecPollReceive, /* polling receive func. */ endEtherAddressForm, /* put address info into a NET_BUFFER */ (FUNCPTR) endEtherPacketDataGet, /* get pointer to data in NET_BUFFER */ (FUNCPTR) endEtherPacketAddrGet /* Get packet addresses */ }; if (END_OBJ_INIT (&pDrvCtrl->endObj, (DEV_OBJ*) pDrvCtrl, MOT_FEC_DEV_NAME, pDrvCtrl->unit, &netFuncs, `Motorola FEC Ethernet Enhanced Network Driver`) == ERROR) goto errorExit; 5) 在USRCONFIG.C中,USRROOT函数调用了usrBootLineInit和usrNetInit函数 ifdef INCLUDE_NET_INIT usrBootLineInit (sysStartType); /* crack the bootline */ usrNetInit (BOOT_LINE_ADRS); /* initialize network support */ #if CPU==SIMNT { extern int simProcnum; char ulipIP[] = `90.0.0.1`; ulipIP[7] = `1`+simProcnum; routeAdd(`0.0.0.0`,ulipIP); } #endif /* CPU==SIMNT */ #endif /* INCLUDE_NET_INIT */ 6) 在USRNETWORK.C中,usrNetInit调用了muxDevLoad、muxDevStart、 for (count = 0, pDevTbl = endDevTbl; pDevTbl->endLoadFunc != END_TBL_END;pDevTbl++, count++) { /* Make sure that WDB has not already installed the device. */ if (!pDevTbl->processed) { pCookie = muxDevLoad(pDevTbl->unit, pDevTbl->endLoadFunc, pDevTbl->endLoadString, pDevTbl->endLoan, pDevTbl->pBSP); if (pCookie == NULL) { printf(`muxDevLoad failed for device entry %d!\n`, count); } else { pDevTbl->processed = TRUE; if (muxDevStart(pCookie) == ERROR) { printf(`muxDevStart failed for device entry %d!\n`, count); } } } } 7) 在WdbEndPktDrv.C中, wdbEndPktDrv调用 muxBind函数 8) 在USRNETWORK.C中, usrNetIfConfig函数调用了ifAddrSet 和hostAdd函数 /* set inet address */ if (ifAddrSet (ifname, inetAdrs) != OK) { printf (`Error setting inet address of %s to %s, errno = %#x\n`, ifname, inetAdrs, errno); return (ERROR); } /* add host name to host table */ if ((inetName != NULL) && (*inetName != EOS)) hostAdd (inetName, inetAdrs); return (OK); 9) SOCKET编程 -------------------------------- /***********************/ 宠辱不惊, 看庭前花开花落; 去留无意, 任天上云卷云舒 /***********************/ -------------------------------------------------------------------------------- 编辑 发表於:2025-08-04 - 12:54:12 IP: 211.99.*.* 飞扬 工程师 来自: 发表总数:13 查看   短消息   电子邮件   OICQ   引用   回复 -------------------------------------------------------------------------------- 谢谢回复:) 我的以太网口是不用cpm的,用的是MII,以避免和scc3,4的中断冲突。 #undef INCLUDE_CPM /* exclude the CPM ethernet driver zwb? 02.3.20*/ 对了,我只知道ip地址在bootline里有,对目标机的ip设置,只在bootline里设ip够吗? -------------------------------------------------------------------------------- 编辑 发表於:2025-08-04 - 13:27:53 IP: 10.7.*.* hongwind 高级工程师 来自: 发表总数:101 查看   短消息   电子邮件   引用   回复 -------------------------------------------------------------------------------- 我用过lxt970,应该是一个系列了,对于网口的phy是要进行一些设置的,这些通常是在呢的系统初始化的时候,应该是在呢的ehternet驱动文件中包含了,一旦系统决定安装ethernet,那么对网口就该初始化,而且一定要复位,然后进行。 -------------------------------------------------------------------------------- 编辑 发表於:2025-08-04 - 13:45:44 IP: 61.177.*.* hongwind 高级工程师 来自: 发表总数:101 查看   短消息   电子邮件   引用   回复 -------------------------------------------------------------------------------- 通常的bootline是一个缺省的方式,可以配置网络口的特性,然后在系统load网络设备的时候会对你的bootline进行parse,得到需要参数,配置相应的end_device。 有时可以从你的flash rom中获取,或者从IIC rom,或者就是使用你的缺省的设置,不过你要对读取配置的地方设置位缺省的方式才可以了。 -------------------------------------------------------------------------------- 编辑 发表於:2025-08-04 - 13:50:30 IP: 61.177.*.* embedfree 高级工程师 来自: 发表总数:142 查看   短消息   电子邮件   引用   回复 -------------------------------------------------------------------------------- FEC和CPM只是一个是MII,一个是SCCx。 不要太绝对了! IP地址的指定在驱动有效后什么地方都可以, 你可以在BSP中做,也可以在应用程序中做, MAC地址才是最重要的,需要在BSP中做。 我的文档是两个网口都考虑了, 你是否需要看仔细些呢? 如果你的驱动中没有对MII的支持, 光改头文件有什么用? -------------------------------- 总务科长 -------------------------------------------------------------------------------- 好啊,以后多交流! embedfree 于 2002/04/15 19:01 加贴在 嵌入式系统论坛 设为精华 删除 -------------------------------- -------------------------------------------------------------------------------- 我的确还没看仔细。请多包涵。 飞扬 于 2002/04/15 17:55 加贴在 嵌入式系统论坛 设为精华 删除 这两天再看860t的um.我的程序现在能进入中断了。不过进入之后就出现错误。immr->cpmi_civr |= CIVR_IACK; 执行这么一句之后,也就是Set IACK bit in CIVR to request current interrupt vector,civr寄存器就变成0x00. 表示出错了,但是在scce里看不到是什么错误。 对了,我看了一下。我的tornado里没有motfecend.c,但是有motfecend.h,后来我问别人找到motfecend.c发现这才是fec的驱动程序。看来我的tornado不全。我会仔细看embedfree兄的程序。看通了再请教:) -------------------------------- 哈哈,小弟向各位前辈学习了!要教我啊:) -------------------------------------------------------------------------------- 我的确还没看仔细。请多包涵。 飞扬 于 2002/04/15 17:43 加贴在 嵌入式系统论坛 设为精华 删除



关键词: 讨论     ppc860t     串行     调试     中断     冲突     解决    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]
腺苷钴胺片治什么病 甲基苯丙胺是什么 属鼠的本命佛是什么佛 匈奴是什么民族 郭富城什么星座
陆勤合格什么意思 夫复何求是什么意思 心内科全称叫什么 一路长虹是什么意思 生长激素分泌的高峰期是什么时候
尿蛋白高不能吃什么食物 cln是什么意思 孕妇吃什么 乐子是什么意思 大便有点绿色是什么原因
牵牛花为什么叫牵牛花 胸口闷疼是什么原因 四个火读什么字 68年猴五行属什么 嘴皮发白是什么原因
2003属什么hcv8jop4ns2r.cn 浔是什么意思hcv9jop0ns2r.cn 睾丸炎吃什么药最有效hcv9jop3ns0r.cn 大麦茶有什么功效hcv8jop0ns9r.cn ib是什么单位hcv9jop6ns7r.cn
宫颈癌是什么引起的hcv9jop1ns4r.cn 大便深褐色是什么原因weuuu.com simon什么意思hcv8jop9ns1r.cn 经常吃红枣有什么好处和坏处hcv7jop4ns7r.cn 白果是什么东西sscsqa.com
韩国的思密达是什么意思adwl56.com m代表什么单位hcv8jop7ns6r.cn 什么牌子的电饭锅好hcv8jop5ns3r.cn 什么什么一笑96micro.com 倏地是什么意思hcv9jop0ns0r.cn
北京朝阳医院擅长什么hcv8jop6ns1r.cn 三星堆是什么意思hcv9jop5ns6r.cn 三五成群十双在是什么生肖xjhesheng.com 吃什么可以来月经最快最有效hcv8jop6ns0r.cn 膀胱癌早期是什么症状zsyouku.com
百度