2011年3月11日 星期五

Win7-64下虛擬電腦的使用

64位元作業系統下,軟體的不相容是一大問題。
而做為嵌入式工程師,就是有一些舊軟體要用。
許多工具都無法在Win7-64下執行是一個頭痛問題。

經過數個月和Win7-64的奮戰,總算告一段落。整理結果如下:

1.執行到16位元程式不相容。建議找軟體公司。

  唉,我就是軟體開發人員。還真的要找Source Code重編?
  我還真的做,為了將S19檔案轉成燒錄檔(bin),找了不少程式,總算是找到了,不過人家好心已編好執行檔。
  然後,命令格式不同,還是要改。重編譯,No,先改批次檔,重編是最後手段。
 
  ->此路不要走,真的沒有產能。

 
2.使用DosBox

  部分程式轉由DosBox來執行,不過要設定好連接的目錄夾,還有點費工。
 
  ->缺點,因為要載入轉入等等動作,執行起來比較慢。
    不過純DOS程式支援度不錯。Windows3.1也可以跑。

 
3.使用VirtualBox

  真是救星啊!早點知道就不用這樣辛苦了。
 
  第一個就是安裝WinXP。
  果然什麼問題也沒有,熟悉的環境。
  只有一個小小問題,安裝3D顯示卡Driver要進安全模式下安裝。
  雖然模擬出來的電腦效率有限,但比公司配給我的電腦還快。
  不過對硬碟取存較慢,沒關係,共享資料夾是RAMDisk,這下就不慢了。
 
  再來安裝了OS X 10.6
  這個是插花試玩的。不是完整支援。
 
  安裝Win98
  有一些網卡模擬要用的,也不是完整支援。不過可以改MAC,這點比VMware來得好。
  和外部是用網路芳鄰來通。所以也是可以作業。
  DOS就沒有裝了,因為和主端電腦不通,用DosBox還比較方便。
 
  安裝Win7-64
  一定會有人問,裝這個做什麼?
  就是用來試爆,哦!不是,試裝才對。
  因為新電腦安裝又移除許多試用軟體,沒二個月就不太對勁了。
  所以決定產生分身來試用,反正不好用,就用"快照回復"。就不會留下任何痕跡。
 
  安裝Ubuntu
  也是很好裝,只是環境不熟。
  不過,終於可以正式玩Linux了。
  只是每次都要mount來連得出來,還要再熟一段時間才行。
 
  安裝WinXP(二號試爆用)
  其實是在玩網路連線,現在一台電腦可以同時開三、四個WinXP。
  所以可以試玩網路連線。將來可以試一些網路連線程式,做分散式程式設計試驗用。
  這個不用重安裝,只要將原先的WinXP滙出,再滙入就行了。
      
為了搞這些虛擬電腦。原先的筆電做了一些調整。
記憶體升到8G,硬碟升到750G。
只差顯示卡,和我二年前買的桌機差不多同等級配備了。

現在的電腦真是不值錢。
(作業系統和電腦一樣貴,這是什麼世界?)


2011年2月3日 星期四

筆電記憶體擴充到8GB

最近因公司有需求,開始使用VirtualBox做其他作業系統的安裝及試用。

原先4GB的記憶體似乎不夠用,趁現在記憶體價格低,敗了二條4GB回來。

這下可以同時開二個以上的VirtualBox來用了。


XP是用來執行舊軟體。
                                               
OS X是公司要試的,這個真的很難裝,試了好多版本。

Ubuntu是試裝來玩。


然後看看資源監視器,這個以前沒有注意到應用程式。
原先就用了快2GB!可是Bee明明記得每次開機只用1.3GB。

記憶體只是從4BG加到8GB,怎麼又多用了700MB。


又是M$在做怪。

難怪Win7宣稱不用太多記憶體,因為它一直保留一半的實體記憶體給使用者看。

其實能有效的使用要到4GB以上,那1GB能用都是被騙的。苦的是硬碟。

所以有人一直說Win7容易讓硬碟掛掉。其實是記憶體不足,使用硬碟做為記憶體使用的結果。


顯示卡太重改裝

現在的獨立顯卡再加專用散熱片,整個很重。

放在直立機箱內,過一段時間就會當機。

只要卡片拔起重插就會好了。

可是真的不好拔,每次都花了不少時間。

有這種狀況的應該也有不少人,不過好像沒有多少人說,有人連顯示卡都燒壞。

網路上找到的方法是用竹筷去支撐。也有在賣顯示卡支撐架。

不幸的是Bee的顯示卡沒有地方可以用支撐架。

所以只好用一塊保麗龍去支撐。不過幾個星期後一樣會當機。

原因是保麗龍被壓縮了。


過年又當機,重新改造,這次用鐵絲去吊。

另外找了原子筆內的彈簧做張力支撐,這樣就不會太硬了。


2011年1月19日 星期三

verilog中讀取BMP檔

在verilog中要使用影像處理,模擬時需要一張圖檔做為驗證用。

大部分verilog都是讀取文字檔,所以圖檔要轉成文字檔。

但圖檔會修改,用以測試運行狀況。直接修改圖檔是最直接,一但轉成文字又失去感覺。

所以利用verilog 2001的檔案功能,就可以做到直接讀取BMP檔。

這樣修改圖檔進行測試會方便許多。

程式如下:
module test;
  integer fileId, i, cc;
  reg [7:0]  bmp_data [0:2000000];
  integer bmp_width, bmp_hight, data_start_index, bmp_size;

  initial begin
    fileId = $fopen("gray.bmp","rb");
    cc = $fread(bmp_data, fileId);
    bmp_width = {bmp_data[21],bmp_data[20],bmp_data[19],bmp_data[18]};
    bmp_hight = {bmp_data[25],bmp_data[24],bmp_data[23],bmp_data[22]};
    data_start_index = {bmp_data[13],bmp_data[12],bmp_data[11],bmp_data[10]};
    bmp_size  = {bmp_data[5],bmp_data[4],bmp_data[3],bmp_data[2]};
    for(i = data_start_index; i < bmp_size; i = i + 1) begin
      $display("%h",bmp_data[i]);
    end
    $fclose(fileId);
  end
endmodule

這個程式並沒有將整個BMP檔解開,只是取得資料。

至於資料格式就看個人應用。

因為應用上一般只會針對一種資料格式。

所以就要自己想辦法去排了。


2011年1月18日 星期二

使用Virtual Box安裝Win32Forth

64位元作業系統還是有不方便的地方。

所以使用VM再去裝WinXP是一個取代的方法。

Bee是安裝Virtual Box,裏面再安裝WinXP。

終於又看到熟悉的Windows,真是感動。

然後在裏面安裝Win32Forth總算可以動了。

不過記憶體用很凶。原本就用1.5G,開VM再用1G。

沒有辦法,現在4G快要用光了。


2011年1月16日 星期日

虛擬機器模擬I/O方法2:列表

Bee在上次做好RTOS於Windows下的移植,就一直在苦惱IO模擬問題。

結果案子一趕,實在沒時間思考,心想先印出工作狀況。看到樣子再打算。

得到的圖很滿意。

於是逆向思考,何不修改這個輸出,將原先讀改為寫,倒寫回去。

這樣只要改表格,不用一個一個去Key。

要是照先前想的,模擬的時間一長,會Key到死。


另外也可以看到一些固定的週期動作,以及裝置名。

也可以將輸出的結果撈出來,就可以知道各裝置的動作。

這樣要寫IO模擬的程式,也有輸出可以參考比對。


在Win7-64下,沒有Win32Forth可以玩了

最近有一位Forth同好連絡上Bee,要Bee教Forth程式。

不過Bee換了Win7-64之後就沒有玩過Forth了。

那有人要,就翻出以前的檔案來安裝吧!

結果Run之前的安裝程式,裝到一半就被McAfee防毒軟體給砍了。

心想被砍的是Win32Forth 6.12版。那就再去抓新的版本回來。

不過Win32Forth也沒有再出新的版本。

載了數版都被砍。無奈,回去安裝最原始的版本4.2版,結果沒有被防毒軟體砍,但仍不行。

原因是執行檔版本太舊64位元下無法支援。


唉!和Forth真的斷了。