2009年7月16日 星期四

Porting GNU GDB to a new target RISC32-ELF-GDB

Porting GNU GDB to a new target RISC32-ELF-GDB
之前寫了一半文件, 此文件完整度只有30%
不過至少還是有列出大概需要改什麼檔案與編譯時需要注意什麼
留給品皓日後研究與補充
1. 前言
2. 以下所列文件為移值GDB至少必須新增的檔案
3. 編譯GDB
4. 其他



另一份文件是如何使用Eclipse CDT加入自己的toolchain(使用Zylin Embedded CDT)
Using Eclipse CDT and risc32-elf-gdb with RISC32 simulator

發文注意事項

由於昨天我不小心post了篇只有link的文章,所以早上blog被鎖住了。
所以請大家留意一下,以後發文請要有"充實"的內容,不能只有link,不然會被當成spam blog.

ESL裡的SoC轉運站

一顆SoC裡可能會有一顆到多顆CPUs, 還有周邊, 記憶體,...,等什麼的. 靠什麼來把資料在這中間搬來搬去呢? 太特殊的東西不談, 大概就是屬Bus以及NoC (Network on Chip). OpenESL比不上CoWare的有幾點, 但是最主要的就是我們缺乏一些IP的ESL Models. 其中又以Bus與CPU為最重要.

CPU方面, Aaa的32-bit RISC拿來做研究可以, 但是想必沒人真正會拿來用在產品上, 所以品皓的8051與DSP16(實際上是AD2191的clone)會是我們的主角, 至於32-bit RISC就要靠電機系陳中和老師的研究了.

Bus方面, Gary按照TLM2.0做了一版堪用的Bus, 不過這不太切合實際, 同樣也是拿來做研究而已. 我們需要的是標準的Bus models. 所以ruru的重點是:

1. OCP

2. AMBA2 or even AMBA3

這是短時間我們要弄出來的. 再加上一些週邊介面所常用的Model如I2C, 以及利用PC的resources來做simulation的呈現也是方便在simulation時可以watch結果的好工具.

ruru的工作的定義很簡單, spec都在標準裡, 請加油!

Pitch/Partial Tracking的新方向

雖然文森學長的work做得很好, 但是我們的心中有一點點缺憾, 那就是學長的方法, 除了WGCDV是以前AL學長做的之外, 多半還是來自其他世界上其他的研究者的想法, 縱使為bff學長所開發的High Order HMM. 而過去我也曾經講過, 利用HMM來做tracking似乎不做第二人想, 但是我們除了HMM之外, 能有其他的創見嗎?

文森的Pitch/Partial Tracking



這一點, 我跟DNA學長聊過, 在過去, 我們利用Partial Group似乎得到一些效果, 不過一切的方法似乎比較像是在做影像處理或圖形識別的研究, 也就是試著找所謂的Feature(特徵), 然後用HMM的方式把他們在時間軸上連起來. 但是老實說, 我對影像類的特徵找法不是太有好感, Heuristic或Empirical是我一直用來形容這類方法的名詞, 我對Neural Network的感覺也是如此.

這讓我希望回到用Data Decomposition的比較正統的數學方法來定義Features, 可是怎麼做呢? 我沒十足把握, 所以這一篇不好寫.

一般的數學做法是找eigenvectors, 利用eigenvectors來當tracking(可以是HMM也可以不是)用的Features似乎可行, 不過在我們要對付的問題上, 一般的decomposition的方法卻可能會有問題, 要是可以, 那麼PCA(Principle Component Analysis)或ICA(Independent Component Analysis)的方法就可能派得上用場. 不過, 因為八度音, 甚至五度關係都會讓這類方法破功, 其原因我就不在這裡細講. 因此在這裡我們要定義的Feature Vectors一定有別於一般Linear Algebra中的eigenvectors, 而如何找到演算法來算這Feature Vectors以及如何避開八度與五度的問題是關鍵所在.

所以胤要對付的問題的真正解法在哪裡需要我們一起努力尋找, 而這一類問題要做得好, 數學要有一點底子, 別忘了, Higher Order HMM Tracking是數學系出身的bff學長想出來的. 這讓IRCAM與SCREAM首次在MIREX裡勝出.

MIREX2008 Multiple F0s estimation

我想, DNA與我會多花一點心思在這個問題上面, 請胤想法子趕快學好Matlab, 因為我不希望花太多時間自己寫matlab裡已經有的東西.

 

Codec, the long-short road

Codec據說是SCREAM Lab的強項之一, 而且應該是蠻強的, 不過我們卻一直低調而且有一點不甘願做. 可是多年來也一直做下來了, 我想因為codec紅, 而且似乎好找事, 所以我們還是有一串研究可以繼續下去.

實驗室的codec其實有audio也有image/video, 最近smallnew與daphne連手做出的image coder很棒的, 希望可以接續下去, 不過最popular的還是MPEG4/264與AAC.

在MPEG-4 video方面, 我們有一個PS3 Cell BE版本, 也是bbb學長的論文裡所用的例子, 還得過教育部比賽第三名, 不過口試委員吳安宇與洪士灝教授希望把SIMD完成, 所以這是雙魚要做的第一件事.



 

其二是在一般非Multicore環境下, 有中多寫得不錯的Open source, 希望雙魚可以將其速度改進並加到SCREAM Lab的SLIM之下.

其三是AAC decoder的改進, 這個跟第二部分相似, 不再贅述.

我必須等雙魚對一干codec有進一步的了解才可以決定下一步要怎麼走, 這是一個紅的領域, 競爭者眾. 不過請放心, 不管是Smallnew/Daphne的image coder或DNA的audio coder都可以跟世界一流的coder一比高下, 就看雙魚的努力有多少, 成就就有多少, 學長姐已經為你開出一條很平坦的路來了.

OpenESL/ModelSim/QEMU/FPGA

實驗室的OpenESL終於要announce了, 在ESL方面, 或者正確地說, 在HW設計的模擬方面, SCREAM Lab一直致力於異質工具的共同模擬, 過去我們也曾經將Matlab/SIMULINK加到裡面來, 但是, 現在我們要回到正軌來, 也就是 SoC設計的模擬方面. 說到模擬這方面, SCREAM Lab真是有一長串歷史可以交代, 我們接著要做的方像我把它稱之為:

Cyber-Physical-Simulation-Migration(CPSM)



也就是在Cyber Space做的模擬, 可以一部分一部份移到Physical Space去, 這中間做的模擬就叫做Cyber Physical Co-simulation. 由於是一部分一部份移到Physical Space去, 一直到全部的設計都移到Physical Space為止, 所以我叫它做Cyber Physical Migration. 不但是硬體設計, 連軟體的設計也是, 也就是在Cyber Model運做的軟體, 在Physical Space也要一樣可以運作. 這中間牽涉到非常多的轉換(Transformation)與介面(Interfacing)的問題, 所幸SCREAM Lab過去多年來做的一連串的Heterogeneous 與Mixed level simulation, 一堆Code Generation以及辛苦建的Programming/SW tools, 這一天的到來應該不會太遠.

目前的Physical Space的工具有以下幾種可能:

1. FPGA

2. ARM Versatile Platform Board

3. Socle SoC Board (Optional, 因為 2 太貴了)

Cyber Space的工具就多了, 我只列幾項, 有一些要保留一下, 因為還不確定:

1. ESL Platform: OpenESL/CoWare

2. QEMU

3. HDL Simulator

看到這些工具, 有經驗的人就知道SCREAM Lab想要做什麼:

先用比較高階的 QEMU的ARM Versatile PB版跑SW Simulation, 部分原件拉出來在ESL跑, 然後ARM移到ESL, 然後元件移到HDL Simulator, 之後再移到FPGA, 最後所有東西移到FPGA. 中間經過的順序以及要經過多少步驟要視狀況而定.

所以Long目前要補足一些SCREAM Lab所缺的主要區塊:

1. HDL Simulator with ESL Platform

2. QEMU with ESL Platform

我的計劃是用OpenESL來當一切的轉接/轉運站, 舉凡data交換, protocol, ..., 等都是它. 只要建立好通道(channel), 以及準備好一堆Code Generation tools, 在一定的Framework下設計, 應該不難達到.

希望Long八月份可以把HDL Simulator打通, 接著回到QEMU來. 今年內應該可以看到一些成果的.

2009年7月14日 星期二

Qin Synthesis and SW tools/古琴合成研究

這是一個未完成的研究, 我們在未來一到兩年要把它完成. 最早是瑋倫學姊的古琴減字譜軟體的完成, 這是一個國科會數位典藏計劃的成果, 事實上受到許多人的重視, 不過跟多數的國科會計劃以及因為學生畢業的關係, 這個成果那時沒能延續下去. 多年來一直有人問, 連中研院院士都來問.

當時未能延續下去的一大原因是雖然古琴減字譜的輸入法很好, 可是聲音的合成一直沒能突破, 直到最近, 小明學長對起頭音的分析, 文森學長的pitch/Partial Tracking有了一些成果, 看來應該是東山再起的時候了. 在此我向眾多關心的朋友說聲道歉.

以下是相關的link:

古琴減字譜數位化

Centcent's Pitch and Partial Tracking

等小明過幾天把減字譜軟體頁面的圖準備好, 我再來更新.



由於古琴聲音與演奏的特性, 文森學長的pitch/Partial Tracking事實上需要一定程度的修改, 或者正確一點的說是Customization, 也就是量身訂做.

同樣的, 我來起這一串, 接著就由仕偉來接續. 第一個工作當然是把減字譜軟體回復, 這一部分比較簡單. 但是聲音的部分就困難一點. 整個軟體要怎麼做, 我會跟相關的人討論. 而要做的事情如下:

1. 琴音的分析, 也就是pitch/Partial Tracking, 這一部分會比較簡單, 因為我可以把音一個個分開來彈.

2. 分析結果的修正, 這一部分恐怕暫時需要人工來做, 不過SW工具還是需要的, 這部分可以跟authoring tools那邊合在一起, 所以這部分建議做成一個外掛. 我們再來討論要怎麼分工.

3. 根據輸入的減字將每個音合成出來, 這部分要動用additive synthesis以及起頭音合成, 我還不知道小明對提琴的起頭音那部份的成果是否可以直接用過來, 不過值覺是可以的.

4. 根據使用者對演奏articulation上的需求(多半指的是滑音, 少數是其他技法), 重新在合成.

5. 將每一個合成的音照使用者指定的時間排好.

至於其他的事就等這些做好再說!好吧! Let's go!

對了, 請小明將這串同時update到: 古琴減字譜數位化. 感謝!

Score Alignment and Following

在MIREX2008裡面有一個比賽項目叫做Score Alignment, 網址如下:

MIREX2008 Score Alignment or Score Following

其實就是冠廷學長的論文其中的一部分. 冠廷用的是Chroma Feature, 其論文我們過一陣子再Post出來, 但是我們一貫的討論可以在下面看到:

冠廷的Polyphonic Music Information Retrieval



這個問題對我們很重要, 不過一般的Score Alignment做的要是能從頭Follow到尾, 也就是冠廷做的. 研究上當然是要如此完整, 但是假如以短時間內能用到我們要做的應用, 那麼是可以有一些妥協的. 比如說, 我們可以讓使用者把一段Wave框起來, 在讓它來對Target的譜子, 而且一次只要對一部分的譜就好, 例如四小節, 八小節, 長短就看我們的演算法的好壞.

這個串今天由我來起個頭, 接下來就由小聽來接續. 我建議可以將冠廷學長的方法先弄起來, 然後找其他人的論文來Implement, 久了後, 相信會越做越好, 也許有一天我們也可以去參加比賽.

另外就是Score Alignment會是Authoring tool的一部分.