总胆汁酸高是什么原因| 璎珞是什么意思| mint什么颜色| 梦见大狼狗是什么意思| 凌晨12点是什么时辰| 释迦摩尼是什么意思| 属牛跟什么属相最配| 骨结核是什么病| 莴苣是什么| ecg什么意思| 骨肉相连是什么肉| 抖腿是什么毛病| 飞行模式是什么意思| 阴道黑是什么原因| 立春之后是什么节气| 幽门螺旋杆菌是什么原因造成的| 骶椎腰化什么意思| 什么叫安置房| 护理专业是干什么的| 口甲读什么| 什么是漂洗| 换什么机油好| 炖猪蹄放什么调料| 水猴子长什么样| 五劳七伤指的是什么| 九月八号什么星座| 内外兼修是什么意思| 贬低是什么意思| 硫脲是什么| 假菌丝是什么意思| 胰腺挂什么科| 鼎是干什么用的| 流泪痣是什么意思| hbv是什么病毒| 什么防晒霜防晒效果好| 觉的部首是什么偏旁| 竹节麻是什么面料| 好女人的标准是什么| 海鸥手表是什么档次| 79年的羊是什么命| 婵字五行属什么| 山竹什么人不能吃| 天干指的是什么| 玉米须有什么作用| 过期的酸奶有什么用| 血糖高可以吃什么主食| 内招是什么意思| 牙痛是什么原因引起的| 撸铁是什么意思| 精疲力尽是什么意思| 烧心反酸水吃什么药| adh是什么激素| 净化心灵是什么意思| 天河水是什么意思| 什么是代沟| 地头蛇比喻什么样的人| 酒后头疼吃什么| 厉兵秣马什么意思| 什么是脑死亡| 男人喜欢女人什么| linen是什么面料成分| 超声心动图检查什么| 为什么叫中日友好医院| 三伏贴有什么功效| 豚的右边念什么| 脱发应该挂什么科室| 随波逐流什么意思| 怀孕为什么会恶心想吐| 温州有什么特产| 低频是什么意思| 细菌性阴道炎用什么药好| 气短心悸是什么意思| 腰突挂什么科| 乳粉是什么| 梦见雪地是什么征兆| 肺坠积性改变什么意思| 感染幽门螺旋杆菌会出现什么症状| 十二生肖它第一是什么生肖| 什么品牌的书包质量好| 血清和血浆有什么区别| 十点半是什么时辰| lmy是什么意思| 不成敬意是什么意思| 失眠缺什么维生素| 有什么好看的国漫| 慢阻肺吃什么药最有效最好| 凝血酶是什么| 什么运动可以让孩子长高| 美国为什么打朝鲜| 百分位是什么意思| 向日葵是什么季节| 什么果酒最好喝| 腥臭味是什么妇科病| 查性激素六项挂什么科| 螺蛳粉有什么危害| 胃胀气吃什么药见效快| 北京佑安医院擅长什么| 外感病是什么意思| 看乳房挂什么科| 碗打碎了预示着什么| 荷兰豆炒什么好吃| 白细胞高说明什么| 什么什么一惊| 肾病可以吃什么水果| 胃酸烧心吃什么药| 子宫息肉有什么症状| 喉咙细菌感染吃什么药| 孩子发烧手脚冰凉是什么原因| 甲胎蛋白偏高是什么原因| 两鬓斑白是什么意思| 声音的高低叫什么| 为什么不能摸猫的肚子| 腱鞘囊肿是什么原因引起的| 分差是什么意思| 牛骨煲汤搭配什么最好| 肺部高密度影是什么意思| 小便次数多是什么原因| 什么米最贵| 沙门氏菌用什么药最好| 什么叫自负| 杨八妹属什么生肖| 安抚是什么意思| 奶粉可以做什么美食| 为什么会流口水| 脂肪肝吃什么好| 兵马俑在什么地方| 曙光什么意思| 儿保挂什么科| 麦芽糖是什么糖| 夏天适合养什么花| 人为什么会缺钾| bcl是什么意思| 圆是什么图形| 开心水是什么| 什么样的西瓜| 专一是什么意思| 七月份生日是什么星座| 九六年属什么的| vb是什么| 抽血抽不出来是什么原因| 孔雀翎是什么东西| 2025年属什么生肖| 麸皮是什么东西| 八月一日是什么日子| 什么原因会引起胎停| alex是什么意思| 自由职业可以做什么| 低压48有什么危险| 先敬罗衣后敬人是什么意思| 山竹为什么这么贵| 卷心菜是什么菜| 腱鞘炎有什么治疗方法| 恙是什么意思| 锁骨上的痣代表什么| 男人结扎对身体有什么影响| 公历是什么意思| 肺阴虚吃什么食物最好| 627是什么意思| 热玛吉是做什么的| 11月份什么星座| 带状疱疹有什么症状| 不宁腿综合症吃什么药| 尿路感染是什么原因造成的| 阿司匹林肠溶片什么时候吃| 防晒隔离什么牌子好| 吹风扇感冒了吃什么药| vogue什么意思| 嘴里起血泡是什么原因| cnc男装是什么档次| 调侃是什么意思| 脖子后面长痘痘是什么原因| 小熊衣服叫什么牌子| 山大王是什么意思| 为什么男人吃石榴壮阳| 温良是什么意思| dep是什么意思| 黄芪的读音是什么| 场景是什么意思| 墨鱼和鱿鱼有什么区别| 黄芪补什么| 脖子后面有痣代表什么| 肾气不足吃什么中药| 277是什么意思| 喝什么茶可以降血脂| 什么是早恋| 愚公移山是什么意思| elephant什么意思| 精神病挂什么科| 妲己是什么生肖| 北戴河是什么海| 月子吃什么最下奶| 原位癌是什么意思| 排卵试纸什么时候测最准确| 池塘边的榕树上是什么歌| 夏至该吃什么| 青黄不接是什么意思| 月经不调是什么意思| 小姨子是什么关系| 术后引流管什么时间可以拔| 即视感是什么意思| 良性反应性改变是什么意思| 上嘴唇上有痣代表什么| 疣是什么意思| 秋老虎是什么意思| 什么一笑| 夏天是什么| mk是什么牌子| 怀孕吃什么药可以流掉| 波字五行属什么| 黄体不足吃什么| 纷至沓来什么意思| 肠易激综合征吃什么药好| 痦子是什么| 什么是激素类药物| 生粉和淀粉有什么区别| 送男朋友什么礼物合适| 脖子疼是什么原因引起的| 眼底出血用什么眼药水| 书字五行属什么| 小211是什么意思| 胎儿宫内缺氧孕妇有什么症状| a-l-岩藻糖苷酶偏高是什么原因| 围产期是什么意思| 林黛玉属什么生肖| 为什么警察叫条子| 枸杞加什么泡水喝壮阳| 大鱼际发青是什么原因| 什么是主观什么是客观| 梦见妖魔鬼怪是什么意思| 吃什么助于长高| 香肉是什么肉| 全日制专科是什么意思| 输血前八项指什么| 让是什么词| 糖尿病什么症状| 碳14是检查什么的| 喝水都长肉是什么原因| 安全期什么时候| 中药学专业学什么| 吃什么可以补充雌激素| 眉毛旁边长痘痘是什么原因| 盆腔炎有什么明显症状| 澳门什么时候回归祖国| 吃什么补充维生素b| 不宁腿综合症是什么原因引起的| 春天有什么花开| 肾虚挂什么科| 山东古代叫什么| 路亚什么意思| 小腿浮肿是什么原因| 阿波罗是什么神| 白细胞计数高是什么原因| 为什么辰不能见亥| 什么时候做nt| 质子是什么| 白内障是什么| 去医院测血糖挂什么科| 防腐剂是什么| 现实是什么意思| 麦芯粉是什么面粉| 7月14什么星座| 骤雨落宿命敲什么意思| 61年属什么| 均为是什么意思| 百度
这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 ? 论坛首页 ? 嵌入式开发 ? MCU ? 关于cache的初始化问题?

共1条 1/1 1 跳转至

关于cache的初始化问题?

院士
2025-08-05 18:25:17     打赏
系统初始化 主题:关于cache的初始化问题? 我在看别人提供的ARM9的BSP,在romInit()函数里对cache进行的操作为: 1.设置几个cache区; 2.flush caches(通过以下代码实现: LDR R0,=0x00000000 MCR p15,0,R0,c7,c5,0 MCR p15,0,R0,c7,c6,0 ) 我的问题是: 1.flush cache是什么意思? 2.在romInit()函数里一般对cache进行的操作是什么? 谢谢! Re:关于cache的初始化问题? 我试着回答一下, 1.flush cache是什么意思? 使所有的 IDC 无效,这样CPU读取数据和指令时可以直接到原存储地址去读取,而不必从cache中得到,因为cache保留的是以前的数据,而当前原地址的数据可能发生了变化,这样保证了数据的正确性.使CPU得到最新的数据,当然,这样会降低CPU的处理速度. 2.在romInit()函数里一般对cache进行的操作是什么? 在romInit()函数里,对cache主要的操作就是flush cache,因为对系统初始化前,必须要保证初始化过程的正确和连续,所以要有flush cache,disable interrupt 等操作. 以上只是我的看法,可能不全面,谢谢   主题:Tornado/VxWorks + SBC 够了么? 请教各位高手: 想开发基于ARM7和VxWorks的嵌入式系统,Tornado/VxWorks 和一个基于ARM7TDMI的单板机是否足够了?VxWorks 怎么样装入单板机运行?不用JEENI可以装入么? 先谢谢了! Re:Tornado/VxWorks + SBC 够了么? 把 VXWORKS IMGAGE 装入ARM 的过程大体上是这样的: ARM 7 内部有 128 BYTE 的 BOOT ROM,和 2K 的 SRAM,当需要DOWNLOAD VXWORKS 时 ARM 采用 BOOT 方式启动运行存在 BOOTROM 中的程序初始化 ARM 内部的 COM 口,从 COM 口接受数据到 2K 的 SRAM,这 2K 程序是用来真正 LOAD VXWORKS 的,2K 程序 LOAD 完毕后系统自动跳转到这 2K 程序执行它的作用是首先通过 COM 口接受 VXWORKS 到 DRAM ,然后由 DRAM 写入 FLASH 。 写入完毕后,切换到 NORMAL 模式重新启动系统,系统自动跳到 FLASH 0X00000000 开始运行 VXWORKS。 你可以用 PC 机上的 COM1 与 ARM 内部的 UART1(COM) 通信来 DOWNLOAD VXWORKS。 主题:vxworks 下的驱动的问题 各位好: 我记得在vxworks中有两种驱动模式,一个是是分层结构,特别对网络协议栈来说有network protocol/MUX/network driver(END,BSD).还有一种就是没有层次的概念,在应用程序中直接访问硬件的。比方说现在有两种类型的驱动,譬如USB 和ATM,他们需要直接交换数据,不想走OS那一套标准的流程,也就是我们想用后面的一种(OS Independent)。有人做过这方面的工作吗? Re:vxworks 下的驱动的问题 我没有做过 ATM,USB 的驱动,在 VXWORKS 上做过其它驱动, MODEM,SPI等,我认为如果 VXWORKS 不支持莫种协议的话,可以在 VXWORKS 上直接对硬件操作,自己按照相关协议标准封装数据包按照硬件定义放入相应的地址空间。这等于自己写协议和驱动。 这种方法是可行的,当然如能找到 VXWORKS 下支持该协议的驱动更好。 这种程序和 VXWORKS 系统也是相关的: 1。MMU 对该硬件的地址映射正确 (改 BSP ) 2。中断向量表(改 BSP ) 3。硬件中断登记 (INTCONNECT ),及 ISR 4。系统任务协调,保证在该程序执行时,没有其它任务占用 CPU 基本上和开发其它的驱动程序是一样的。 返回页首   硬件中断 主题:请高手指引:EP7312的中断 请高手指引:在C语言下EP7312,怎样将中断(比如:EINT1)与一段需要执行的程序挂钩。这里先谢谢啦! Re:请高手指引:EP7312的中断 EP72xx定义IRQ的中断向量地址为0x18,你可以在该地址处放一跳转指令,跳到你的中断处理函数(IRQHandler),这个中断处理函数的主要作用是根据中断标志寄存器的标志位来分析IRQ中断类别(EINT1,EINT2...),然好根据中断的类别跳转到相应的中断服务程序(ISR)进行处理. 大概步骤基本如上,不过一般这些程序是操作系统已经有的,用相应的函数(如intConnect)直接使用即可. 你不会是在写操作系统吧? 另外,ARM的中断有FIQ和IRQ,FIQ的优先级总是高于IRQ的优先级,由于某些操作系统本身的问题,可能导致有时FIQ的中断屏蔽了IRQ的中断,使IRQ中断不能及时响应,这种情况下,可能需要从新写这些程序来进行替换. 不知这些是否对你有所帮助. Re:Re:请高手指引:EP7312的中断 您好! 我是个新手,资料也不全,您说的intConnect函数我没有查到,您能告诉我它的功能,基本用法吗?谢谢! Re:Re:Re:请高手指引:EP7312的中断 intConnect()是VxWorks的函数,如果你的操作系统不是VxWorks,就不能用这个函数,你的操作系统也应该提供类似的函数,你可以找找看.这个函数主要是把中断和中断例程联系起来.就是解决你提到的问题. Re:Re:Re:Re:请高手指引:EP7312的中断 谢谢您, 我的操作系统是linux的,有类似的函数吗? 再问CDYAN:怎样在EP72xx中断向量地址为0x18中放置一跳转指令(比如 goto:),跳到中断处理函数呢? Re:Re:Re:Re:Re:请高手指引:EP7312的中断 linux操作系统下,函数应该是request_irq(),你可以查一下这个函数的具体用法. 不过,我建议最好不要对中断的入口地址进行操作,因为系统已经做得很完善了,并提供了了接口函数,如果你对这个地址操作不当的话,会严重影响系统,会破环整个系统的中断响应. 如果一定要重新写的话,可用memmove()将你的跳转函数放到0x18处,注意这个跳转函数不能大于4个字节,跳转在C程序中就是简单的函数调用,和goto是不一样的. Re:Re:Re:Re:Re:Re:请高手指引:EP7312的中断 真的谢谢您 ,您给我这么多知识。 主题:怎样实现在程序中产生一个系统中断 怎样实现在程序中产生一个系统中断,比如向串口发一个中断? Re:怎样实现在程序中产生一个系统中断 一般中断的产生是由硬件定义的,如串口中断的定义: 1.接收中断:当接收数据存储器 RxData 存在有效数据,则产生中断. 2.发送中断:当发送数据存储器 TxData 为空,则产生中断. 所以要产生一个串口中断,主要有两步: 1.使能这两个串口中断,RX Enable,TX Enable,函数intEnable(). 2.用intConnect()登记中断号,和相应的中断例程ISR. 只要TX中断使能,什么都不必做,因为数据存储器 TxData 本身为空,就会有TX中断产生,自动执行你的中断程序. 同样,RX中断产生,只要做程序向串口发送数据,使RxData中有数据,也会产生中断. 好像不行 vxworks也没有软中断。如果你知道了办法,请告诉我。 Re:好像不行 为什么不行呢?能否说一下你的理由呢? 这里我没有用软中断,这是用程序来触发串口的硬件中断呀,RX中断我曾经用过多次. VxWorks中好像没有实现软中断的函数,一般硬件定义有软中断的(Software Interrupt或Program Interrupt),如PowerPC 定义软中断向量地址为0x0700,由tw和twi指令来触发中断.ARM定义软中断向量地址为0x8,由SWI指令来触发中断. 如果想在VxWorks中使用软中断的话,可能最好的办法是在BSP中写一个汇编程序,然后在其他地方调用. 我猜测软件中断一般和系统联系紧密如系统错误等等,应用层和一般的系统编程基本上用不到,所以VxWorks没有提供这样的函数. 讨教 你的串口硬件中断的产生我没看明白。你是针对的哪种cpu或是cpu+外围芯片?860没有这样的机制。 Re:讨教 串口硬件中断的定义应该和CPU的种类没有关系,也和cpu或cpu+外围芯片形式无关. 我曾用过IBM PowerPC4xx和ARM7(clps7xxx),这两种CPU都集成了两个内部的串口UART,我还在外部扩展过串口芯片ns16552,基本上是一样的. MPC860的结构和上面两种不同,尽管它的核也是PowerPC,它集成了两个处理块,一个处理块是嵌入的PowerPC核,另一个是通信处理模块(CPM).通信处理模块有4个SCC和2个SMC,这六个通信口可以通过设置来支持多种协议和通信方式,也可设置为串口UART模式(大概是通过寄存器GSMR或SMCMR),功能和中断的定义和通常的串口没有区别,你可以查一下寄存器SCCM/SCCE的位15和位16定义,这里定义了在何种情况下产生硬件中断. 所以MPC860也有这样的机制. Re:Re:讨教 860的cpm我还算熟悉,但我实在想不出如何能用程序触发一个中断,即使在看了你的贴子之后。你能不能说仔细些? Re:Re:Re:讨教 根据MPC860中SCC UART Event Register(SCCE)的位14和位15定义,如位15是数据接收中断标志位,如果串口收到数据,则产生硬件中断,所以可以写程序向串口发数据,并不是程序产生的的中断,而是用程序发送数据,数据到达串口后,串口有数据收到就会产生RX中断,通知系统有数据到达,有相应的中断例程ISR来取数据. 发送的情况类似,数据FIFO为空,产生中断,告诉系统发送准备就绪,可以发送,ISR把数据放入FIFO中,发送中断位清零.当发送完毕后,FIFO再为空,再次产生中断,告诉系统发送准备就绪,继续发送. 不知这样解释的是否清楚. Re:Re:Re:Re:讨教 你说: “所以可以写程序向串口发数据,并不是程序产生的的中断,而是用程序发送数据”。 如何向串口发送数据? 我明白你的意思 "如何向串口发送数据?" 这一点主要是实现的问题,和中断关系不大 有三种方法实现: 1.一般串口都支持LOOP BACK模式,即片子内部自发自收,设置成这种模式即可. 2.将串口的发送脚TX和接收脚TX连接. 3.用PC机上的Hyper Terminal和串口相连,不用做程序,直接可通过终端向串口发数据. Re:Re:请教 看了半天,我想最初的问题提出是,第一个字符怎么发出,当然,如果使能中断的化不成问题,问题在于,如果发送并不时常,那中断不是一直都有?很浪费.最初应该是针对这种情况提出的.所以平时并没有使能发送中断,只有当有数据时,对于第一个数据怎么发出的问题.当最后一个(当然是可预见的了)发送时,关闭中断.这种情况我两次碰到,都是采用此办法的,在一个基于linux驱动中,数据以包形式异步通信,在包头使能,包未关闭.在异步数据加密应用中,单个数据的到来不确定,我甚至发送都没有采用中断,而是用查询,其实还更节省时间(当然了,这个不是用操作系统的了,全汇编的).   返回页首   Intel Flash芯片 问题 1 :我们现在用的是intel E28F640 J3A120型号的falsh芯片。 在该芯片上要存放配置信 息、某些标志位、动态增长、减少的数据。现在有个问题:在向某个地址写数据之前,是否一定要擦除该地址所在的块? 不一定要擦除该地址所在的块,但一定要Unlock这个块,然后向该块写操作。通常的操作都是这样。 问题 2 :(一个块是128KBytes,这样我仅仅为了改写一个Byte,就必须读128Kbytes,然后擦 除该块,然后再写128KBytes,太累了,不可能吧??)有没有擦除一个字节或子的方式? 我想肯定是这样的,因为flash的命令:Unlock,Erase,Write对flash的操作都是以块为单位的,即使你想只擦除一个字节,实际上擦除的是一个块,即128k.这是flash硬件定义的,对编程来说并不麻烦,是一样的。没有擦除一个字节或子的方式。 问题 3 : 我现在要实现对INTEL 28F320J3A的操作,但是有一个很大的问题就是我感>觉擦除和写数据都比较慢,我想和我没有使用它提供的写BUFFER的命令有关,所以想向您请教写BUFFER的问题。请问是不是每一个大小为128K的块只有32bytes的buffer,如果我想用写buffer操作,应该注意哪些问题呢? 对Flash擦除和写数据是慢的,如果用写BUFFER的命令肯定会快一点,具手册上说,会快20倍,我没试过,不知道.32bytes的buffer不是每个block都有,是整个flash只有一个32bytes的buffer,用写BUFFER命令对所有的blocks写操作,都要用同一个buffer,写Buffer是主要要检查buffer是否available,其实buffer起缓冲作用,来提高工作效率, 写Buffer的主要步骤: 1.写write buffer命令到该Block的首地址. 2.先查status,看buffer是否available, 3.写入所写数据的的字节数到Flash的实际地址. 4,写数据 5.写WRITE_BUFF_CONFIRM命令到该Block的首地址 6.写READ_ARRAY命令到该Block的首地址 其中要注意同一组数据跨越不同block时的处理. 上述步骤是肯定对的,你可以先试着写出程序,有什么问题,我们再交流,不要客气, 问题 4 :如果我不使用写buffer的命令操作是不是就会很慢(写300多K大小的东西要半分多钟),如果写300多K大小的东西要半分多钟,我觉得是不正常的,另外,我对block erase suspend command和>program suspend command等suspend命令的作用也不是很明白,一下子提了这么多问题,希望您没看烦,也很希望你能给我一些帮助,先谢过了 你应该检查一下程序,是不是程序有问题,不应该这么慢.这些suspend命令,我也没有用过,应该是在对一个block造作过程中,暂停操作,来对另一个block操作(读数据或执行程序),待完成后,再恢复原来的.block erase suspend command和program suspend command其实是一个命令B0H   返回页首   Cillus网卡CS8900A Re: 谁做过网络接口控制芯片CS8900A的驱动? 我曾经写过这种网卡的驱动,它相对来说比其它的驱动要难一些主要在于EEPROM 和 I/O MODE上,EEPROM 是你必须要操作的,因为一般网卡的 MAC 地址要侟在这里,另外还有一些用户设置。如果你只用网卡默认的设置,可暂时不用,网卡有两种运行模式, MEMORY MODE 和 I/O MODE,MEMORY MODE 较为简单,对任何寄存器直接操作,不过你的硬件电路应支持才行,主要看 有多少地址线和网卡连。 如果采用 I/O MODE 则较为麻烦,对任何寄存器操作均要通过 I/O PORT 0X300 写入 写入或读出。 你所做的只是对一些寄存器进行必要的设置(TX RX ENABLE,IP FILTER,。。),然后将莫一地址的数据包放入数据寄存器即可,无须考虑 MAC 封包解包的事。 你的问题我看了一下,我没有在linux下做过这类程序,不过我原来用的操作系统 VxWorks是从UNIX移植过来的,和linux的环境相似,用的都是GNU环境,另外我不清楚或模 糊的地方也查了一些资料.对你的问题回答了一下.大概基本上是正确的. 有什么不清楚的,再来信,能帮得上你,我很高兴. 问题 1 :在<>P371:如果一个驱动程序做为主流Linux核心的一部分发行的话,它并不声明自己的device结构,而是使用在drivers/net/Space.c中声明的结构。Space.c声明了所有网络设备的链表,即包括plip1一类驱动程序特定的结构,也包括通用目的的eth设备。以太网根本不关心它们的device结构,因为它们使用通用目的的结构。这种通用的eth设备结构声明ethif_probe为它们的init函数。程序员要想在主流核心中插入一个新的以太网接口只需要在ethif_probe中加入一个对驱动程序初始化函数的调用。另一方面,非eth驱动程序的作者需要在Space.c中插入它们的device结构。在两种情况下,如果驱动程序必须被链到核心,只需要修改源文件Space.c。 在Space.c中: ethif_probe(struct device *dev) { u_long base_addr = dev->base_addr; if ((base_addr == 0xffe0) || (base_addr == 1)) return 1; /* ENXIO */ if (1 /* All PCI probes are safe, and thus should be first. */ #ifdef CONFIG_DE4X5 /* DEC DE425, DE434, DE435 adapters */ && de4x5_probe(dev) #endif #ifdef CONFIG_UCCS8900 && cs89x0_probe(dev) #endif ................. ................. 这里我想问的是,当我写完了自己的驱动代码比如cs89x0.c,cs89x0.h,并在space.c中#define CONFIG_UCCS8900,接 下来在编译内核的时候我该去修改哪个文件,可以将cs89x0.c直接编译到内核中? 如果是按模块化方式写驱动,那么编译生成.o文件然后insmod一下就可以了;但现在要按非模块化的方式,直接编译到内核里去,该怎么做呢? 1. 把cs89xx编译成独立模块,执行下列命令:   gcc -D_KERNEL_-I/usr/src/linux/include-I/usr/src/linux/net/inet-Wall -Wstrictprototypes -02 -fomit-frame-pointer -DMODULE -DCONFIG_MODVERSIONS -ccs89x0.c  编译结果是名为cs89x0.o的驱动程序目标模块。要装载此驱动程序, 输入下列命令: insmod cs89x0.o io=0x360 irq=10 //假如网卡的起始端口号为0x360,中断号为10   要卸载此驱动程序,用rmmod命令:   rmmod cs89x0.o 2.如果要将驱动程序编进系统核心,  修改/usr/src/linux/drivers/net/CONFIG,加入:  CS89x0_OPTS=  修改/usr/src/linux/drivers/net/Config.in,加入:  tristate‘CS8920 Support’CONFIG_CS8920  以上两行是为了让make config在配置过程中询问是否增加CS89xx网卡的支 持。 修改/usr/src/linux/drivers/net/Makefile加入:  ifeq((CONFIG_CS8920),y)  L_OBJS+=cs89x0.o  endif  修改/usr/src/linux/drivers/net/Space.c,加入:  extern int cs89x0_probe(struct device *dev);  ……  #ifdef CONFIG_CS8920&& cs89x0_probe(dev);  #endif  以上两段是为了编译并输出网卡驱动程序及其例程。  把驱动程序源代码拷到/usr/src/linux/drivers/net目录下。  在/usr/src/linux目录下执行 make config或 make menuconfig,选择核心CS89xx网卡支 持。   执行make dep、make clean命令。最后用 make zImage 编译Linux核心。 问题 2 :.uCcs8900.c中的send_test_pkt函数有什么用呢?其中定义的test_packet数组 那样赋值该怎么理解? send_test_pkt(struct device *dev) { int ioaddr = dev->base_addr; char test_packet[] = { 0,1,2,3,4,5,0,3,4,5,6,7, 0, 46, /* A 46 in network order */ 0, 0, /* DSAP=0 & SSAP=0 fields */ 0xf3, 0 /* Control (Test Req + P bit set) */ }; long timenow = jiffies; unsigned short event; writereg(dev, PP_LineCTL, readreg(dev, PP_LineCTL) | SERIAL_TX_ON); memcpy(test_packet, dev->dev_addr, ETH_ALEN); memcpy(test_packet+ETH_ALEN, dev->dev_addr, ETH_ALEN); outw(TX_AFTER_ALL, ioaddr + TX_CMD_PORT); outw(ETH_ZLEN, ioaddr + TX_LEN_PORT); /* Test to see if the chip has allocated memory for the packet */ while (jiffies - timenow < 5) if (readreg(dev, PP_BusST) & READY_FOR_TX_NOW) break; if (jiffies - timenow >= 5) return 0; /* this shouldn't happen */ /* Write the contents of the packet */ outsw(ioaddr + TX_FRAME_PORT,test_packet,(ETH_ZLEN+1) >>1); if (net_debug > 1) printk("Sending test packet "); /* wait a couple of jiffies for packet to be received */ for (timenow = jiffies; jiffies - timenow < 60; ) ; if (((event = readreg(dev, PP_TxEvent)) & TX_SEND_OK_BITS) ==TX_OK) { if (net_debug > 1) printk("succeeded\n"); return 1; } if (net_debug > 1) printk("failed \n"); return 0; } 这是一个测试程序,不仅过linux操作系统和上层TCP/IP,直接向网卡发数据包,来 测试网卡是否工作正常,数组使用的标准的以太网帧格式(参见相关的RFC文档),不用管 它,直接拿来就用的,这个数组的意思是向网络个点发包,网络点收到包好,进行回复. 问题 3 :我在别的一些cs89x0.c文件中看到这个函数是被detect_aui,detect_bnc等这样 的函数所调用,但在uCcs8900.c中的detect_tp中没有用到? BNC基本上现在网络都不用了,一般是RJ45的插头,你可以看一下现在的网卡,没有BNC 头.AUI类似串口通信,尽管现在网卡都支持,但很少用到.所以这里只用了detect_tp()来检测RJ45连线是否存在. 问题 4 :这个函数里还用到了ETH_ALEN和ETH_ZLEN这两个宏,这两个宏的解释我看到过,但 理解的不是很清楚,在这里test_packet,ETH_ALEN和ETH_ZLEN相互间是什么样的关系呢? ETH_ZLEN时所发数据包的长度,ETH_ALEN应该是6,是MAC地址的字结数. 问题 5 :.驱动编译到内核里,生成映像文件当到目标板上让系统在目标板上运行起来后, 该怎么测试我的驱动程序呢?需要再写相应的测试代码吗? 测试应该是两步: 1.底层硬件测试,可用它的send_test_pkt()来测,或自己写一个LOOPBACK测试程序,具体方法可参见CS89手册,test mode. 2.上层网络测试,可用BSD写一个网络通信程序,开发板和PC及通信传送大量数据. 或用linux上FTP服务来传送文件. 问题 6 :request_irq(IRQ_MACHSPEC | 20, cs8900_interrupt, IRQ_FLG_STD, "CrystalLAN_cs8900a", NULL)) panic("Unable to attach cs8900 intr\n"); IRQ_MACHSPEC | 20, 该是硬件中断号,不知道为什么要这样写 IRQ_FLG_STD ,这个标志是要做些什么设置?中断共享等等? IRQ_MACHSPEC | 20中20是硬件中断号, IRQ_MACHSPEC 应该是(0x10000000L),第一位1只是一个说明标志,说明是特殊设备中断. IRQ_FLG_STD是中断处理的一些属性设置,如快速,屏蔽等,我没有找到这个的定义, 可能是标准中断处理吧. 返回页首 LCD 与触摸屏 主题:LCD 与触摸屏分辨率不一样 我的LCD 分辨率与触摸屏的分辨率不一样, 但尺寸相同, 在触摸屏 上点击的坐标与LCD显示的坐标不一致, 请问各位高手有什么办法可 以解决(软件或硬件解决方案均可)。 环境: CodeWarrior for 68K, with PPSM Re:LCD 与触摸屏分辨率不一样 LCD 分辨率与触摸屏的分辨率一般来说是不一样,坐标也不一样,这需要做程序进行转换. 我曾做过这样的转换,我的LCD分辨率是320*240,坐标原点在右下角. 触摸屏分辨率是900*900,坐标原点在左上角. 计算公式如下: xLCD=320-[320*(x-x2)/(x1-x2)]; yLCD=240-[240*(y-y2)/(y1-y2)]; 其实就是中学学的坐标转换.这种方法肯定能行的,试试看吧. 返回页首   Modem拨号 主题:在vxWorks下,通过串口、Modem建立PPP连接时的问题! 我现在在ARM7TDMI下用vxWorks开发一个应用系统。该系统需要提供一个拨号上网的功能。我采用串口1“/tyCo/0”连接modem,再通过电话网络连接到某个拨号服务器。一下情况已经确认: 1、modem是没有问题的,可以在windows下或超级终端下拨号到96169。 2、目标板的串口是没有问题的,在超级终端里可以收到下发的at指令。 如:“atdt996169\r\n”.(内线电话,先拨9)。 另外: 3、目标板的串口与modem连接时只接了以下线:TXD,RXD,GND,DSR,DTR. 现在,遇到如下奇怪的问题: 1、下发的atdt指令必须发两次,modem才开始拨号。 2、拨号服务器回应“please input username:”后,程序发送用户名:“96169\r\n”,通过示波器可以看到下发给了modem,拨号服务器端一直没有收到这个用户名,最后因为超时而中止连接。 WHY????(命苦啊!!) 1、串口与modem的连接线是否不够,需要添加其他线吗?(RTS、CTS、CD等信号线,系统UART芯片可没有提供) 2、解释解释以上现象及解决对策。不胜感激。 Re:在vxWorks下,通过串口、Modem建立PPP连接时的问题! 你是否可以用这个步骤试一下 1. off hook,发出摘机命令(ATH1\r), 等待modem返回状态,如果是"OK",则表示成功.进行第二步. 2. on hook 发出挂机命令(ATH\r), 等待modem返回状态,如果是"OK",则表示成功.进行第三步. 3. off hook,dialing,摘机拨号(ATDT....\r), 等待modem返回状态,如果是"CONNECT",则表示成功.进行第四步. 4. send data,发送数据. 最好按上述步骤一步一步调,并要等待正确的返回值后再进行下一步. 具体程序例子如下,拨号: // 清空接收FIFO REG(FCR, nsChan) |=FCR_RXCLR; // 等待,直到清空为止 while((REG(FCR, nsChan) & FCR_RXCLR) != 0x00); // 拨号 while(atdt1[i]!=0) { // 检查发送FIFO是否准备好,为空 while((REG(LSR, nsChan) & LSR_THRE) == 0x00); // 在发送FIFO中放入数据 REG(THR, nsChan) = atdt1[i]; i++; } // 等待是否有数据到达,即modem返回数据. while((REG(LSR, nsChan) & LSR_DR) == 0x00); // 接收数据并判断返回值 response[i-19]=REG(RBR,nsChan); if(response[0]!=0x43) .................. else .................. // 如果返回值是"connect", while(*data!=0) { while((REG(LSR, nsChan) & LSR_THRE) == 0x00); REG(THR, nsChan) = *data++; } 其他步骤基本一样. 我碰巧在ARM7上做过modem驱动,只不过不一样的地方是和你的硬件设计方法不同,我们的modem是做在板子上的,没有用ARM7的串口,modem是用片选地址直接对硬件操作的.比你的要复杂.你的方法应该没有问题的.这个例子可能对你没用,仅供你参考. 希望能帮得上你. [em27]



关键词: 关于     cache     初始化     问题     系统     函数     一般         

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]
生粉是什么粉 脸发麻是什么病的前兆 抵抗力差是什么原因 三十六计第一计是什么 梦见小狗是什么意思
单核细胞是什么 摧枯拉朽什么意思 4.4是什么星座 硌人什么意思 脂肪肝吃什么药
榴莲坏了是什么味道 随餐服用是什么意思 脚底出汗什么原因 gbs筛查是什么 一什么善心
什么的大叫 孕妇不能吃什么东西 苍耳是什么 健康管理是什么 盆腔炎用什么消炎药好
宇宙之外还有什么hcv8jop6ns6r.cn 维生素b6主治什么病hcv9jop6ns8r.cn 很长很长的什么填空dajiketang.com 12.28是什么星座hcv9jop5ns7r.cn 肱骨外上髁炎用什么药travellingsim.com
成字五行属什么hcv9jop6ns4r.cn 什么马不能跑hcv9jop5ns2r.cn superstar什么意思hcv9jop4ns5r.cn 子宫小结节是什么意思hcv9jop4ns2r.cn 翼字五行属什么hcv7jop9ns2r.cn
冬天怕冷夏天怕热是什么体质hcv7jop4ns8r.cn 什么是割礼hcv8jop3ns3r.cn 红丹是什么hcv9jop0ns3r.cn 白面是什么hcv8jop0ns9r.cn 翊字五行属什么qingzhougame.com
九出十三归指什么生肖xinmaowt.com 外甥是什么意思hcv9jop2ns0r.cn 1961属什么生肖hcv8jop5ns3r.cn 什么眉头hcv8jop5ns0r.cn 一孕傻三年是什么意思hcv7jop6ns0r.cn
百度