2009年4月7日 星期二

SLIM 改版 - ㄚ凡

目前計畫要做的事:

  • 加上用GEF製作的介面

基本上是先拿之前給OpenESL用的介面過來套用

  • 加入component測試環境

就是在我們設計出一個新的component時
系統能依據使用者的輸入資料
建立一個測試環境
提供一組components與待測試的component連接
分別負責餵資料和輸出資料的動作
至於資料是否正確 還是要component的作者自己判斷

--

【加入component測試環境】的實作方式
應該是要分別針對pcm raw data、mp3這些不同的資料型態,先寫好一些測試用的components
使用者只需填好需要設定的資料屬性,系統就能自動連接並產生xml檔,進行單一component的測試

--

目前知道的就是這些
如果還有哪些要注意的地方 或是有什麼問題或建議
也麻煩提出來 謝謝

--
090327

這幾天在改GEF的介面
把學長的GraphGen跟SLIM要用的介面同時修改
下面列的是SLIM的介面需要修改的地方
(從OpenESL介面來改)

  • repository的讀取
    • component的XML描述不同
      • port type只有data/signal兩種
      • port id 應該是只作連接用 是否可以不用讀進來
    • <Property>
      • property有ro_runtime屬性 需要在介面中讓使用者改嗎 要的話就得多增加一個屬性來對應 不然一個屬性沒辦法對應兩個值
      • 沒有版本控制 少一層資料夾也不用做版本判別
  • project存取
    • 還要去問一下 有些xml檔裡有<Config>用來記錄Watchdog是否開啟 有些xml檔則是沒有這個tag  如果要記錄<Config>我想在目錄選單裡加一個頁面來設定watchdog的開啟
    • 還有 在<Filter>裡有<item>似乎是存這個component的屬性 可是有的xml裡沒有這個tag 有的是只有部分屬性 我不太清楚他的作用
    • 連線(buffer)有property要存 ex.type, maxsize

附上一個component的xml

<SMPFilter version="0.1">
  <!-- Filter Spec Here -->
  <!--     One XML should contain only 1 filter spec -->
  <Filter name="freader" version="2.0">
    <InputPort name="control" type="signal" id="0" />
    <OutputPort name="output" id="0" />
    <OutputPort name="read_filename" type="signal" id="0" />
    <OutputPort name="read_progress" type="signal" id="1" />
    <!-- Properties to export (changable)-->
    <!-- default: runtime read only (default true) -->
    <Property name="buffer_size" value="65536" runtime_ro="true"/>
    <Property name="repeat" value="0" runtime_ro="false"/>
    <Property name="filename" value="" runtime_ro="true"/>
    <Property name="read_dir" value="0" runtime_ro="true"/>
    <Property name="filter" value="" runtime_ro="true"/>
  </Filter>
  
  <!-- Filter Property (Java GUI) : parse when Java UI is present-->
  <!--    original Exampleinterface.xml -->
  <Frame name="freader" width="400" height="150">
    <label name="label1" caption="Buffer Size" gridx="0" gridy="0" />
    <textField name="buffer_size" text="65536" fill="horizontal" gridx="0" gridy="1" columnNum="6" />
    <button name="button1" caption="OK" gridx="0" gridy="2" />
  </Frame>
</SMPFilter>


應該還有其它的地方要改  目前我只發現這些
現在關於 repository的讀取 部分已經改好了

project存取 的部分還有些疑惑要去釐清



----------------------------
090407

讀寫project的部分大致上也弄好了

<Buffer from="0:0" from_port="output" id="0" to="1:0" to_port="input" type="default" maxsize="53" />

port id還是要保留  不然SLIM會沒辦法讀取
可是為了讓GEF比較好讀取連線 所以連線兩端的port name還是留在xml中

    <Filter name="freader" id="0" version="2.0" positionX="61" positionY="88" height="98" width="200">
      <item name="buffer_size" value="655360" />
    </Filter>

比較麻煩的地方是當時OpenESL的module裡並沒有property值可讓人修改
但SLIM的component都有property
在儲存project的時候也就要把這些改過的property存起來
這邊我是先找出哪些property有改過
再把他們用<item>這個標籤來存

剩下的部分是在介面中呼叫SLIM

18 則留言:

centcent 提到...

測試平台部分,可以像中午和小明一起討論那樣,在component的XML裡再加入新的tag,讓系統知道這個component是要用哪種的資料傳輸

這樣應該比較好做,不用動到component的原始碼

alandai 提到...

好 不過我還不了解SLIM是怎麼讀取component的
也還沒仔細看各種資料需要些設定哪些屬性
我先看看這禮拜有沒有拜法把介面搭上去同時看一下有哪些類型的port要做測試環境

SCREAMLab 提到...

我記得你應該知道怎麼寫SLIM component, 要不然自己寫一個看看. 不懂的部分找學長教你一下.

基本上, 要注意communication就對了.

Mark Kuo 提到...

In reply to ㄚ凡: simply put, what SLIM does is dynamically loading components at runtime. It is a concept well implemented in various softwares used nowadays. As for the revision of SLIM, I have to reinforce that, IMO, what SLIM tries to finally give software developers is a form of practical/useful/overhead-free construction block of the final software. NOT a tool for building the final end-user software. As a result, what we have left out at that time is a practical EXPORT tool for SLIM. For instance, one uses SLIM to construct core multimedia related part, and gets a shared object SLIM outputs, which is later called by the GUI part of the software. This is one of what SLIM lacks so far. In other words, the important thing is: while trying to build development environments, it is not only about how convenient the tool interface is. It is also about how much time and efforts SLIM is going to reasonably save for developers. Hope that in the process of revision SLIM will get stronger and more complete.

SCREAMLab 提到...

基本上, data and signal communication是不管你的資料是mp3, pcm,...等. 你見到有類似系統要管這個的嗎?

Let's make communication just communication. This is the rule.

centcent 提到...

我想 可能我講的不好,應該是說在component的XML裡加入一個tag,例如:mp3,這樣測試平台知道這個component是 mp3 decoder之後,可以自動將前後所需的component(filereader,pcmplayer)連接上
這樣不用去變動到 channel

87showmin 提到...

就我跟阿凡討論的感想是,老師想要阿凡做一個 testing environment, not a develop environment. 如果他要做的東西是for development,那就如同starry所說的那樣;但如果是for testing,就必須要走向「客制化」,因為阿凡所說的「測試」並非只是單純的測說你的文法有沒有寫對,或 SLIM API 有沒有叫錯,而是要提供一個「環境」讓programmer看結果對不對。

Starry跟阿凡講的其實是兩件事,也因此,我跟cent在提出建議時,是以「不動到kernel」為基礎,單純做好「客制化」,舉例來說,提供一個介面讓programmer勾選要 import 哪些測試用的 component,然後gen出這個project file以便讓 SLIM 執行。而這個 project file (XML) 就是老師想要的 test bench。

至於starry文中所提到"It is also about how much time and efforts SLIM is going to reasonably save for developers." 該如何做,也許得請有使用過 SLIM 的人來給建議。

或許阿凡可以改一下標題,因為做個 testing environment其實跟 SLIM 的改版是獨立的,這樣比較不會模糊焦點。

SCREAMLab 提到...

我現在都希望往幫我们的軟體的potential users多想一點. 這次的改版確實是以IDE為主. 不過, 基於我過去做HW的經驗, 產生測試環境是每一個designer都要為他的電路做的. 因為沒有一個電路是獨自存在的.

當SW來到Component Based, 以我有限及短淺與故步自封的經驗, 幫component designer自動做一些測試要用的codes就成為我想要的.

試問一下, 假如你使用著SLIM來開發程序, 你會希望有個IDE嗎? 你會希望有一個工具來幫你建component測試環境呢? 還是自己寫呢?

我想這樣應該夠清楚表達我要的是甚麼? 我的希望合理嗎?

87showmin 提到...

我是自以為我瞭解老師跟starry想要的東西是什麼,所以才會說starry跟阿凡要做的是兩件事 (因為阿凡是照老師說的做)。不過如果我有誤會的話,還請starry指出。

Component Gen, Project Gen, GUI, ...這些東西對我們開發者而言當然是越完整越好,怎麼會不合理呢?:D 而且這些東西跟 component 間一定有某種程度的「共通性」,介面清楚的話要嵌入或取代都可以。至於我上篇回的論點其實有點太偏細節了 (針對阿凡現階段的任務),阿凡的內文提的通通是跟測試有關的事,而非 SLIM 改版後的大方向,我自然就栽進去了 orz

SCREAMLab 提到...

喔! centcent跟showmin都太客氣了, 我只是說出一個user的希望而已.

你們說的都對, 而我是將發展與測試都加在一起, 希望這次改版都涵蓋進去. 傳統上的HW design, coding, simulation都分開的. 只是我覺得時代在變, 應該多幫programmers考慮而已, 何況SLIM是SW, 用SLIM做出來的也是SW.

請大家繼續發表意見, 這樣SLIM這個授到大家寵愛的tool會更好.

Mark Kuo 提到...

To be honest, my coding experiences tell me that I prefer using simple code editor such as VIM to do the programming. Only when I want to build GUI will I come to the IDE, such as QDesigner for QT, or Eclipse/NetBeans for Java... IDE's purpose is to help save time, or save some tedious job. Apparently SLIM is not mainly for building GUI. If some essential testing environment can be provided to assist SLIM users to do basic testing, it will be welcomed by programmers. Somehow, there is only that programmer who understands what testing procedures are necessary. We can only provide a basic testing environment for components, and it is always there for programmers. In conclusion, IDE is not the point, nor is the testing environment. Because we can not provide a testing environment which suits all needs. Programmers always know it is his/her job, not the tool, to do the testing. If we think too much for programmers, it will be more difficult for programmers like me, to use SLIM. This is my opinion...XD

alandai 提到...

不好意思 我還是不太清楚
如果我們要提供一個basic testing environment 那應該要做到什麼樣的程度
我們要提供測試用的資料流
要顯示待測試component所輸出的資料流
可是這些bitstream應該以什麼樣的型態展現才能符合使用者的需求 並帶來幫助

SCREAMLab 提到...

Though the DSL keiko mentioned may be a way, I still do not think we can achieve that at this moment. Like ESL, what we can do now is to check the communication interfaces among components to see if they operate as expected. In our past experience, this bothers most beginner users of SLIM, of course, of ESL tools. As for the functionality together with other programming issues, we cannot do anything about it at this moment.

I am sorry that I did not make it clear before.

Nevertheless, I still dreamed about the day that some languages pop up such that programming is not just the privilege of young men.

Let me repeat: check the communication interfaces among components to see if they operate as expected. Period.

逼逼逼 提到...

hi, 能夠把我們Cell的介面獨立開一個討論串嗎 ^^"
不然看起來好雜喔 哈哈
感謝你

SCREAMLab 提到...

加由, 可以demo時可以先找個時候demo一下給我看嗎?

許喬斐 提到...
作者已經移除這則留言。
許喬斐 提到...

以我所理解的SLIM,好像是希望做好一些小"零件",讓使用者可以隨心所欲的兜出他想要的處理音訊的"機器"~如果這樣理解沒錯的話,提供我一點小小的意見,有一套處理類神經網路的軟體"NeuroSolution"好像也有點在做類似的事,不過它把所有的元件通通圖示化操作也很直覺http://www.filetransit.com/images/screen/dd61214f0e5fd367dbda989aba24b04f_NeuroSolutions.gif
連不會寫程式的人也會用....或許會是一個好的操作介面設計的參考,這是它的官網http://www.neurosolutions.com/
提供一點外行人的意見^^

SCREAMLab 提到...

Thx.

做這種工具最麻煩的就是刻出圖形介面出來, 我們實在沒這本事, 所以是套用Eclipse的工具.

此外, 我們做的是一般性的工具, 不是只給audio用的.

以後我們應該請vivi來給我們操做設計上的意見.