什么是双飞| 弱酸性是什么意思| 熊猫属于什么科动物| 润月是什么意思| 一面什么| 917是什么意思| 意味深长的意思是什么| 小孩抵抗力差吃什么提高免疫力| 复原是什么意思| mid是什么意思| 男性硬下疳是什么样子| 上海仁济医院擅长什么| 喉咙痛咽口水都痛吃什么药| 非特异性阴道炎是什么意思| 肝主疏泄是什么意思| andy是什么意思| 眼晴干涩模糊用什么药| ppe是什么| 供是什么意思| 七月九号是什么日子| 糖尿病能吃什么零食| 哈利波特是什么意思| 没经验开什么店最简单| 嗓子不舒服做什么检查| 胸胀痛什么原因| dna倍体异常细胞是什么意思| 三奇贵人是什么意思| 胆汁为什么会反流到胃里面| 治便秘吃什么| 老烂腿抹什么药膏最好| 舌头干涩是什么病前兆| 三级士官是什么级别| 5月26是什么星座| 老人肚子胀是什么原因| 利率是什么意思| 药品gmp是什么意思| 紫癜有什么症状| 薄谷开来为什么杀人| 人是由什么组成的| 手腕疼是什么原因| 形同陌路什么意思| 女人小便出血是什么原因| 11月22是什么星座| 肝内钙化灶是什么意思| 血栓是什么症状| 肌张力高有什么症状| 睡觉趴着睡什么原因| 赤日对什么| 端午节安康是什么意思| 一毛不拔是什么动物| 8月1日是什么日子| 复方对乙酰氨基酚片是什么药| 什么叫布施| 籍贯填写什么| 小腿浮肿什么原因| 718什么星座| 什么是卫校| 我好想你是什么歌| 空杯是什么意思| 虾肚子上的黑线是什么| 腮腺炎是什么症状| 一直咳嗽不好是什么原因| 胃酸不能吃什么食物| 什么是伤官配印| 清宫是什么意思| 甲胎蛋白偏低说明什么| 流明是什么意思| 浅显是什么意思| 恃势之刑是什么意思| 用酒擦身体有什么好处| 心率过缓吃什么药| 什么时候血压最高| 为什么会得腱鞘炎| 李字五行属什么| 心脏有个小洞叫什么病| 急性肠炎吃什么食物好| 小暑节气吃什么| 胰管扩张是什么意思| 肾盂肾炎吃什么药| 奶瓶pp和ppsu有什么区别| 甘草泡水喝有什么好处和坏处| 吃茄子对身体有什么好处| 杏花什么季节开| 1月29日什么星座| 关羽字什么| 子宫肌瘤吃什么食物| 发烧能吃什么食物| 微信密码是什么| 子宫内膜双层什么意思| 曼妥思是什么糖| 祈福什么意思| 孕囊是什么| 双胞胎代表什么生肖| 为什么润月| 悱恻是什么意思| 三叶香是什么菜| 红豆泥是什么意思| 非洲人说什么语言| 磨牙是什么原因怎么治疗| 梦见和死人一起吃饭是什么意思| 投影仪什么牌子好| 月经量多是什么原因导致的| 农历七月初七俗称什么| 天地始交是什么意思| 三位一体是什么意思| 灯五行属什么| 四联单是什么| 胆小如鼠是什么生肖| 乳头胀痛什么原因| 保健是什么意思| 苏慧伦为什么不老| 皮肤瘙痒是什么病的前兆| 学位证书有什么用| 电动汽车什么牌子好| 疖肿什么意思| 虫草对身体有什么好处| 什么样的人容易抑郁| 白带是绿色的是什么原因| 降血脂吃什么药| 殿试是什么意思| 治疗梅毒用什么药最好| 对偶是什么意思| 梦见自己穿新衣服是什么意思| 同人文什么意思| 祛痣后应注意什么| 牙齿痛是什么原因| 癫痫是什么症状| 乌龟一般吃什么| 大姨妈期间不能吃什么东西| 直销是什么意思| 鬼针草长什么样| 反胃是什么意思| 小年是什么时候| 造血干细胞是什么| 饧是什么意思| 什么东西能补肾壮阳| 什么是低聚果糖| 理疗师是做什么的| 鼻窦炎有什么症状| 乙肝两对半15阳性是什么意思| c罗全名叫什么| 海竹是什么| 中午适合吃什么| 为什么晚上不能剪指甲| 阳历2月份是什么星座| 驻马店有什么大学| 肩胛骨发麻是什么原因| 先兆流产是什么意思| 肝胆湿热吃什么中成药| 甲亢吃什么盐好| 什么节气| 医院dr检查是什么| 鲜卑人是现在的什么人| 1007是什么星座| 血小板高是什么原因| 脸上长毛什么原因| 晚黄瓜什么时候种| 中医减肥挂什么科| 囫囵吞枣是什么意思| 学名是什么意思| 怡字五行属什么的| 妇科臭氧治疗是什么| 现在什么最赚钱| 仿佛是什么意思| 狗眼看人低是什么意思| 2003年出生属什么| 德字五行属什么| 山竹树长什么样子图片| 长生不老是什么意思| 炖羊肉放什么| 脸上长粉刺是什么原因引起的| 夏天有什么植物| 偏财代表什么| 属龙和什么属相最配| pab是什么意思| 轻度异常脑电图是什么意思| 尿等待是什么原因| 什么的礼物| 黄连泡水喝能治什么病| 为什么白带是绿色| 阴阳两虚用什么药| 同比增长是什么意思| 淋巴细胞低是什么原因| 天无二日指什么生肖| 梧桐树长什么样子| 为什么井盖是圆的| 三个七念什么| 来大姨妈血块多是什么原因| 铜钱癣用什么药| 什么是hpv| 经常打屁是什么原因| 冒汗是什么原因| 血小板低是什么引起的| 时过境迁什么意思| 厄瓜多尔说什么语言| 肛门下坠感是什么原因| 汉坦病毒是什么病| 什么是危险期| 心力憔悴是什么意思| 卢字五行属什么| 肚脐连着什么器官| 鱼周念什么| 动物园有什么动物| 火麻是什么植物| 经常放屁是什么病| 魑魅魍魉什么意思| 这个表情是什么意思| 孟力念什么| silk是什么意思| 山竹和什么不能一起吃| 光合作用是什么| 井柏然原名叫什么| 来月经前有什么症状| 肉桂属于什么茶| ppq是什么意思| 大运正官是什么意思| 副厅级是什么级别| ige高是什么意思| 萎缩性胃炎吃什么药效果好| 明心见性什么意思| 嫖娼什么意思| 亚米是什么意思| 尿道感染流脓吃什么药| 小三最怕什么| 摆地摊卖什么最赚钱而且很受欢迎| 古怪是什么意思| 黄褐斑是什么样的图片| 素鸡是用什么做的| 梅雨是什么| 尿多尿频是什么原因造成的| 咳嗽想吐是什么原因| classy是什么意思| 偶见是什么意思| ec是什么意思| 女人梦见掉牙齿是什么征兆| 90年什么命| 月经有黑色血块是什么原因| 胆结石忌吃什么| 经常耳鸣是什么原因| 用盐水洗脸有什么好处和坏处| 包皮过长会有什么影响| 活检是什么意思| 男性睾丸一边大一边小是什么原因| 碎片化是什么意思| 牙刷属于什么垃圾| 今天是什么日子老黄历| 查血型挂什么科| 肾虚型脱发是什么样子| 没有高中毕业证有什么影响| 什么水果贵| 孕妇吃什么是补铁的| 一面之词是什么意思| 小麦什么时候成熟| 殁送是什么意思| 姜枣茶什么时间喝最好| 信天翁是什么鸟| 肺气不足吃什么食物可以补肺气| 生活方式是什么意思| 69什么意思| 97属什么生肖| 青榄配什么煲汤止咳做法| 不问世事什么意思| 脑供血不足食补吃什么| 祸不单行什么意思| 百度
这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 ? 论坛首页 ? 嵌入式开发 ? 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 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]
熬夜流鼻血是什么原因 木薯粉是什么做的 心灵手巧什么意思 娃娃衫配什么裤子图片 阑尾炎可以吃什么
重阳节的习俗是什么 一什么花 肥波是什么品种的猫 阳痿早泄吃什么药好 黑枸杞的功效是什么
攫住是什么意思 黄芪的读音是什么 梦见进监狱是什么兆头 声字五行属什么 想怀孕需要检查什么项目
百褶裙搭配什么上衣 挂急诊和门诊有什么区别 什么东西能补肾壮阳 3p 什么意思 奶粉可以做什么美食
脚底板痛什么原因hcv9jop1ns3r.cn 胃酸分泌过多吃什么药hcv9jop3ns6r.cn 软著有什么用hcv8jop6ns4r.cn 洗发水和洗发露有什么区别hcv9jop1ns5r.cn 血压的低压高是什么原因hcv7jop7ns1r.cn
脚痛什么原因引起的hcv8jop0ns8r.cn 158是什么意思1949doufunao.com 手上起皮是什么原因hcv9jop4ns7r.cn 腰椎间盘突出吃什么药hcv8jop2ns0r.cn 米肠是什么做的hcv9jop1ns3r.cn
点痣挂什么科hcv8jop0ns5r.cn 甾体是什么意思hcv8jop9ns9r.cn 女人喝黄酒有什么好处hlguo.com 陶渊明是什么先生hcv8jop1ns6r.cn 什么是风象星座zhiyanzhang.com
针灸后需要注意什么gangsutong.com 痛风不能吃什么蔬菜hcv9jop2ns9r.cn 肺部结节有什么症状hcv9jop7ns2r.cn 辅酶q10是什么hcv7jop7ns2r.cn 六畜兴旺是什么意思1949doufunao.com
百度