煩躁而無奈的一次除錯 記fpga驅動ad9854

2021-06-25 12:19:49 字數 1533 閱讀 1124

寫這篇東西,主要還是要發洩心中之不爽,畢竟debug不出來很影響食慾和心情,也沒心情陪妹紙了。

乙個月前,師兄便開始帶我fpga,先讓我驅動個dds作為訓練。由於暑假的原因,就停停放放的,在家先把vhdl簡單過了一遍,又反覆研究了一下ad9854的datasheet。什麼暫存器啊,時序啊都了解的差不多了。乙個星期前開始著手編。

但是菜鳥不會重頭編啊,所以先拿了乙個網上的驅動程式,根據板子的實際電路對程式作了修改。感覺不是很難吧,但示波器木有一丁點現象啊,晶元卻在發熱。然後我就開始一點一點的改啊,改了一段時間,**器出了點問題。這個學生版的usb-blaster也太弱了吧,於是上**買了個企業版的,等了兩天。

重新拿到好的**器,就又開始改一點,測一點。最後實在沒啥好改了,就是出不來現象。於是屁顛屁顛去跟學長講。

學長人真好,給我講了點經驗,然後給了我個程式跑跑看。我一看,我去,快一千多行**了,還分三個檔案,寫的還有點亂。我就靜下心來開始讀程式,邊讀邊注釋。其中有一段時鐘管理的程式實在是看不下去了,就想,先跑跑看吧,我到現在都不知道現象是什麼。結果真是出乎我意料,居然沒現象。

一方面,我和學長講,給我的程式好像沒法用,另一方面我又寫了另外乙個版本的狀態機程式,結果調啊調,還是出不來波形,我tm都快調吐了。

今天我學長突然和我說有現象了,叫我去看。我還真是在他那看到了現象,這還是我第一次看到這塊晶元應有的現象。他說改了個分頻的時鐘,再拿去試試看吧。然後我考了程式,新建工程,ctrlc-ctrlv檔案,然後經過一系列的編譯出來sof檔案,燒到板子裡。結果又瞎了我,還是沒現象!

我都有點蒙了,我看了看,這的確是學長剛給我的程式啊。最後再把學長資料夾中原有的sof檔案燒了進去,結果有波形的說!這回我真是瞎了!

然後我呢,洗了個衣服後繼續對學長的源程式檢查了引腳,編譯,還是沒現象。不過我倒是注意到一直有3個critical warning。雖然說warning這種東西我一般都是不理的,不過現在也只能看看是什麼warning了,況且還是crtical的。

有兩個warning是cannot find constraint file......。網上說是缺少時序約束檔案,好像10後的版本都需要,不然會有不確定的情況。於是我就跟著教程,去timing嚮導那generate了sdc檔案,然後在settings->timing那裡新增了sdc檔案。再重新編譯,兩個crtical warning沒有了,但是還是沒有現象。

繼續根據網上的說法,把優化選項設定為all pins,編譯水平設定為highest efforts。但還是沒有現象。

現在只剩最後乙個嚴重警告,timing requirements not met...。然後我就找到嚮導那裡打算改暫存器建立時間和保持時間。今天看了《深入理解altera fpga》剛好有講到這點,但是之前沒有改過,一下子不知道怎麼改sdc了,也不知道應該忘什麼方向改。倒是可以將警告去掉,但是還是沒有波形出來。說明可能改的不對,或者根本不是時序約束的問題呢。

乙個晶元除錯了這麼久,我也是淡然了,大部分時間是表示出無奈的表情。因為中秋到了,這個先放一放了,明天還要陪妹紙去798。

程式一樣但沒有結果,這和電路一樣但沒有現象是一種性質的問題,就是非確定性因素,未知的因素。因為未知,所以沒有思路,所以恐懼啊!

記一次除錯

這是我最近幾個月來遇到的最棘手的乙個問題 昨天花了4個小時找出第一層次的原因 這個糾結啊,本來和老婆說好準時下班回家吃飯的,結果被這個問題拖了老久。這是乙個gradle的plugin,用來resolve公司內部的dependency的,弄完了跑測試專案的,拋乙個npe,而且npe還不在自己的 裡面。...

記一次除錯

這是我最近幾個月來遇到的最棘手的乙個問題 昨天花了4個小時找出第一層次的原因 這個糾結啊,本來和老婆說好準時下班回家吃飯的,結果被這個問題拖了老久。這是乙個gradle的plugin,用來resolve公司內部的dependency的,弄完了跑測試專案的,拋乙個npe,而且npe還不在自己的 裡面。...

記一次nginx module 除錯

參考了 先進入nginx工作目錄 usr local nginx sbin 使用gdb q tui q選項是以安靜模式啟動,不顯示gdb版本等資訊。tui選項可以顯示 介面 然後在gdb中啟動nginx shell nginx 啟動之後,可以檢視當前nginx中的程序號 shell pidof ng...