|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
為啥我的RTL8019AS芯片的BD0,BD1(85,84腳)隨便接工作照樣正常啊? |
| 作者:computer00 欄目:ARM技術(shù) |
它們是SELECT I/O base用的.熟悉這個芯片的朋友給說說,是怎么回事呀?懶得去datasheet里面去找了,太長了~~~ |
| 2樓: | >>參與討論 |
| 作者: zhenglixin 于 2007/5/10 15:24:00 發(fā)布:
re: 圈圈太懶啦,打PP哈 |
|
| 3樓: | >>參與討論 |
| 作者: computer00 于 2007/5/10 15:53:00 發(fā)布:
反正都能用了,我懶得去細(xì)讀了呀 就隨便看了看,知道它是選擇I/O基地址的,并且在復(fù)位時讀入. 可是不管我怎么接,它都可以工作正常,暈,那還要它干啥...... 要是沒人回答,那也只要硬著頭皮慢慢讀了...... |
|
| 4樓: | >>參與討論 |
| 作者: gdtyy 于 2007/5/10 17:35:00 發(fā)布:
8019AS.html">RTL8019AS有3種工作方式: 第一種為跳線方式,網(wǎng)卡的i/o和中斷由跳線決定 第二種為即插即用方式,由軟件進(jìn)行自動配置plug and play 第三種為免跳線方式,網(wǎng)卡的i/o和中斷由外接的93C46.html">93C46里的內(nèi)容決定。 當(dāng)65腳JP為低電平或懸空(內(nèi)部接有100K下拉電阻)時,網(wǎng)卡工作在第2,3種工作方式,需要使用93C46.html">93C46芯片。網(wǎng)卡的I/O基址和中斷由93C46內(nèi)容決定. 把65腳JP拉高,就選擇了跳線模式,此時,網(wǎng)卡的I/O基址和中斷由64,65,78,79,80,81,82,84,85等引腳配置決定。 引腳85,84,82,81(IOS3-IOS0)決定I/O基址,如下圖所示: ![]() 引腳80,79,78(IRQS2..IRQS0)決定中斷源,如下圖所示: ![]() 本來I/O基址和中斷純粹是ISA總線的要求,我們用ARM7接8019就不用這樣分配地址空間和中斷源,但是,8019只認(rèn)ISA的分配,所以我們模擬一個類似的地址分配欺騙8019,此時需要把我們的地址空間映射到8019地址空間上去。8019里面的地址比較器會比較ARM7發(fā)來的地址和引腳配置的地址,相同的話就輸出片選使能。8019的中斷從跳線選擇的中斷引腳輸出,把ARM7的中斷輸入引腳接上對應(yīng)的8019中斷引腳即可,高電平有效。 你是否選擇了跳線模式(65腳JP拉高)? 可能85、84直接接地了,不論你接什么電平都被拉低,你把管腳撬起來試試,那樣的話隨便接肯定不能正常工作。 www.armecos.com自助商城有51+8019資料銷售。 * - 本貼最后修改時間:2007-5-10 18:26:25 修改者:gdtyy |
|
| 5樓: | >>參與討論 |
| 作者: computer00 于 2007/5/10 18:25:00 發(fā)布:
恩,謝謝樓上的朋友, 我的65腳(JP)是懸空的, 并且電路板上沒有插9346芯片,應(yīng)該是工作在即插即用模式了. 照這么說,就是由程序來決定IO基地址了?或者是芯片中這個寄存器的默認(rèn)值(因為我沒裝9346). 而復(fù)位值應(yīng)該為0,所以實(shí)際的基地址為0x300? 而我的電路板上,A8,A9是接高的,其它接低,所以基地址應(yīng)該是0x300的,因此我的程序剛好可以訪問這個網(wǎng)卡?那么這個時候的I/O基地址選擇這幾根引腳就是沒用的了,所以接哪都無所謂了? 不知道我這樣理解是否正確? 現(xiàn)在還有個問題就是,我在這個BIOS下可以通過網(wǎng)線下載,但是啟動linux之后,就無法ping通了,而這個linux跟這個BIOS是配套的(網(wǎng)上下載的,我還沒仔細(xì)去研究),既然BIOS可以用,怎么到了linux下就不行了呢?有點(diǎn)暈...... |
|
| 6樓: | >>參與討論 |
| 作者: gdtyy 于 2007/5/10 18:33:00 發(fā)布:
Linux會重新配置網(wǎng)卡,與BIOS無關(guān)。 不管是不是配套的,他們其實(shí)是兩種程序,互相之間沒有內(nèi)在聯(lián)系。 例如:redboot和ecos用的是如同一個HAL,但互相之間沒有調(diào)用關(guān)系,各自用各自的網(wǎng)卡驅(qū)動,而且BIOS中一般不用中斷模式。 VxWorks和bootrom也是同一個配置,但他們之間也沒有內(nèi)在關(guān)系,只不過是引導(dǎo)一下,然后把控制權(quán)交給OS。估計是你的Linux網(wǎng)卡驅(qū)動不正確;蛑鳳ING回應(yīng)沒使能(出于安全目的)。 如果JP懸空,可能就象你說的那樣。 * - 本貼最后修改時間:2007-5-10 18:37:36 修改者:gdtyy |
|
| 7樓: | >>參與討論 |
| 作者: computer00 于 2007/5/10 18:48:00 發(fā)布:
是的,linux是可以重新配置網(wǎng)卡, 但問題是這個BIOS和這個linux是配套的,即都是在同一個硬件上跑的.既然BIOS上的網(wǎng)絡(luò)可以,為什么linux下的不行呢?程序是從網(wǎng)上下載的,開發(fā)板也基本上一樣,并且他們提供的linux應(yīng)該是在他們的開發(fā)板上可以上網(wǎng)的.而現(xiàn)在BIOS中的網(wǎng)絡(luò)可以在我的開發(fā)板上連通了,但是啟動linux后,就不能ping通了。我想BIOS中的網(wǎng)卡配置跟linux下的配置應(yīng)該是一樣的,因為都是針對同一個硬件.所以我才懷疑是不是那幾個I/O基地址連接的問題. 也許我要仔細(xì)看看linux的源碼才知道是怎么回事了,不過我對linux還不熟,估計會很頭暈了........ |
|
| 8樓: | >>參與討論 |
| 作者: XWJ 于 2007/5/10 19:10:00 發(fā)布:
嵌入式應(yīng)用一般用跳線方式(65腳上拉),這樣考慮起來最簡單:-) |
|
| 9樓: | >>參與討論 |
| 作者: XWJ 于 2007/5/10 19:12:00 發(fā)布:
當(dāng)然,默認(rèn)方式可以用軟件去配置地址,但是麻煩些哦 |
|
| 10樓: | >>參與討論 |
| 作者: gdtyy 于 2007/5/10 22:42:00 發(fā)布:
我猜是中斷問題, 因為BIOS一般不用中斷,都采用輪詢模式,這樣穩(wěn)定簡單。而OS考慮到效率一般都基于中斷模式工作,所以,檢查你的中斷跳線是否連接上了(如果有的話),中斷號是不是不一樣,I/O地址是否不同。由于都是基于同樣的體系架構(gòu),都是使用8019,所以,如果提供者確保在他的板子上能正常工作,那你只要關(guān)心硬件平臺細(xì)節(jié)上的差異即可,不必全看一遍。還有要確保你的網(wǎng)卡已經(jīng)啟動了(用ifconfig查看)!/proc/interrupts”和“/proc/stat”中可以查看中斷情況,看看是否發(fā)生了期望的網(wǎng)卡中斷。 還可以用sniffer抓包看看是否有包在傳輸。 BIOS正常工作只能說明網(wǎng)絡(luò)硬件正確,BIOS和OS不一定完全基于相同的設(shè)計,工作模式也不一定相同,所以要分開來各自單獨(dú)調(diào)試。 |
|
| 11樓: | >>參與討論 |
| 作者: computer00 于 2007/5/11 0:43:00 發(fā)布:
恩,估計是中斷的問題,我檢查過硬件連接,中斷連接是一樣的 使用sniffer抓包,有看到響應(yīng)的數(shù)據(jù)包,但是就是linux沒有收到,估計是中斷信號沒有收到? linux應(yīng)該會自己初始化中斷吧?我在BIOS中是將所有中斷源都關(guān)了的.在“/proc/interrupts”和“/proc/stat”中查看中斷狀態(tài),我不會查,呵呵,interrupts里面有些文件,但是stat怎么打開,我就不清楚了。 ifconfig返回的數(shù)據(jù) # ifconfig eth0 LINK encap:Ethernet HWaddr 00:80:48:12:34:56 inet addr:192.168.0.100 Bcast:192.168.0.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 Interrupt:24 lo LINK encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 # 抓到的數(shù)據(jù)包,會不會跟里面的數(shù)據(jù)長度有關(guān)啊:
|
|
| 12樓: | >>參與討論 |
| 作者: gdtyy 于 2007/5/11 8:16:00 發(fā)布:
可能與長度有關(guān), 如果有響應(yīng),那中斷可能沒問題。 以太網(wǎng)上發(fā)送數(shù)據(jù)包長度最小為60字節(jié)(不夠的補(bǔ)0),最大1514字節(jié),可能協(xié)議棧認(rèn)為小于60字節(jié)的包是錯誤的,全拋了,所以你收不到回應(yīng)。 用cat /proc/stat查看。 |
|
| 13樓: | >>參與討論 |
| 作者: mybao 于 2007/5/11 8:37:00 發(fā)布:
我也試過 SELECT I/O base的配置引腳好像真的有問題,上拉電阻去掉、接上 網(wǎng)絡(luò)都能正常工作。 反正都能工作,沒有仔細(xì)研究 |
|
| 14樓: | >>參與討論 |
| 作者: computer00 于 2007/5/11 12:37:00 發(fā)布:
但是那個響應(yīng)是windows發(fā)出的呀,應(yīng)該沒錯才是 估計跟IP有關(guān),也許它認(rèn)為IP不對,所以沒有返回?如果IP對上,應(yīng)該還有echo請求和回復(fù)的,真是有點(diǎn)暈菜.下面這個圖是用BIOS時,用windows ping開發(fā)板的返回結(jié)果,它有echo。
|
|
| 15樓: | >>參與討論 |
| 作者: gdtyy 于 2007/5/11 16:26:00 發(fā)布:
還沒到IP層呢, 只涉及ARP,看樣子你的板子發(fā)出了60字節(jié)的ARP包,收到PC機(jī)42字節(jié)的回應(yīng),但是沒有起作用。是不是你的板子(指Linux系統(tǒng))把小于60字節(jié)的包都拋了?可能你的驅(qū)動里有檢查是否小于60字節(jié)的部分,去掉可能就好了。 * - 本貼最后修改時間:2007-5-11 16:28:22 修改者:gdtyy |
|
| 16樓: | >>參與討論 |
| 作者: computer00 于 2007/5/11 18:35:00 發(fā)布:
也有可能. 我再到linux下去ping試試,或許那邊的包就長了 但到那邊就沒有sniffer了,應(yīng)該用什么軟件抓包呢? TCP/IP我不清楚,呵呵.不過ping的時候,里面應(yīng)該會用IP地址來比較吧?只有IP地址相等了,才會echo吧?如果IP不對,那就不會響應(yīng)了。 關(guān)于驅(qū)動,可能要花一段時間才能搞得清楚了,都沒玩過。 |
|
| 17樓: | >>參與討論 |
| 作者: gdtyy 于 2007/5/11 21:25:00 發(fā)布:
那你再試試吧, 我也猜不出什么原因,也許只是一個小問題,說不定的。 你的第一張sniffer抓包圖好象還沒到ICMP階段,所以我才說與IP無關(guān)。 驅(qū)動可以在現(xiàn)有的基礎(chǔ)上改,不必從頭開始。 我有幾篇關(guān)于ARP、ICMP、NE2000驅(qū)動的文檔,可能對你有幫助(省得看很厚的書了),想要的話就來信索取asdjf@163.com 。 |
|
| 18樓: | >>參與討論 |
| 作者: mybao 于 2007/5/11 22:28:00 發(fā)布:
oo 圈圈能不能給個ultra network sniffer的 注冊碼 |
|
| 19樓: | >>參與討論 |
| 作者: computer00 于 2007/5/11 22:59:00 發(fā)布:
呵呵,我也還沒搞到注冊碼,就是昨天晚上臨時去搜了這個軟件裝了 現(xiàn)在一直還是在試用呢.不知道有沒有期限?到時再說吧.既然可以上網(wǎng),去搜個注冊碼或者注冊機(jī)或者破解版應(yīng)該不難的,何況這個軟件應(yīng)該比較多人用呢。 謝謝gdtyy了,我已經(jīng)給您發(fā)郵件過去拉,麻煩幫我發(fā)一下。 前幾天去圖書館抱了一摞 關(guān)于linux的書回來,光講內(nèi)存管理的那本就600多頁,暈死,不過有書是好事,總比什么 資料都沒強(qiáng)多了。但恐怕沒多少時間來看拉,因為就要準(zhǔn)備期末考試了,能看多少就看 多少吧,暑假再慢慢來,來日方長~~~~~~~~ |
|
| 20樓: | >>參與討論 |
| 作者: computer00 于 2007/5/12 12:01:00 發(fā)布:
應(yīng)該是中斷的原因,收不到數(shù)據(jù),沒有產(chǎn)生接收中斷請求 # cat interrupts 3: 1460 s3c44b0_uart_tx 7: 151 s3c44b0_uart_rx 8: 19971 timer 24: 0 eth rx isr Err: 0 其中eth rx isr是0,就表示沒有產(chǎn)生中斷吧? 那也許應(yīng)該就是中斷初始化或者中斷安裝出了問題,或者是IO口設(shè)置出了問題吧,我再找找. |
|
| 21樓: | >>參與討論 |
| 作者: computer00 于 2007/5/12 13:36:00 發(fā)布:
哈哈~~~終于搞定了,果然是中斷的問題,特別感謝gdtyy的幫忙~~~ 我又回到了BIOS中(原本這個BIOS應(yīng)該是在ADS下的,我現(xiàn)在將它移植到了keil下,所以跟原本 的BIOS有些區(qū)別,改的時候有些地方漏掉了),將網(wǎng)口對應(yīng)的IO口設(shè)置為中斷輸入,并設(shè)置 中斷觸發(fā)模式,然后重新燒入BIOS,再啟動ucLinux,再ping,哈哈,終于通了~~~然后還可以 打開開發(fā)板中嵌入的網(wǎng)頁了~~~~~~而再看中斷,也對了~~~~ # cat interrupts 3: 1128 s3c44b0_uart_tx 7: 105 s3c44b0_uart_rx 8: 115974 timer 24: 184 eth rx isr Err: 0 # 我原本以為這些初始化工作linux的啟動代碼會做,所以就沒注意. 看來我現(xiàn)在用的這個linux包 并未做這些工作,而是建立在BIOS的基礎(chǔ)之上,認(rèn)為BIOS已經(jīng)將它們配置好了,故沒有再去 初始化。上次串口也是這樣的問題,BIOS中設(shè)置好了系統(tǒng)時鐘和波特率寄存器,我為了使速度 更快點(diǎn),就提高了系統(tǒng)時鐘,當(dāng)然也修改了波特率設(shè)置的寄存器,可啟動linux后,串口就不通了, 暈死,后來才發(fā)現(xiàn)原來linux的初始化代碼只配置了波特率寄存器,并且是根據(jù)以前的系統(tǒng)時鐘 頻率來配置的,結(jié)果當(dāng)然就不對了. 后來我只好將系統(tǒng)時鐘調(diào)回,而沒有去重新修改編譯linux了。
|
|
|
|
| 免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |