2015-12-30

鄭州黃帝故里, 洛陽龍門石窟、嵩山少林功夫秀四日遊 2015/12/26~2015/12/29

第01天  桃園/鄭州~黃帝故里~二七廣場~德化步行街~鄭州

鄭州位於河南省中部,黃河南岸,是中國重要的工業城市之一。鄭州市位於中原腹地,交通位置極為重要。鄭州商業發達,又有《中原商城》之稱。現轄6區5市1縣,一個國家級新區,兩個國家級開發區、一個國家級出口加工區,是中國歷史文化名城、中國八大古都之一、中國優秀旅游城市、國家園林城市、國家衛生城市、國家綜合交通樞紐、中國中部重要的中心城市、擁有得天獨厚的自然資源。是中華人文始祖軒轅黃帝的故里,夏朝的都城陽城,商朝開國君主商湯所建的亳都,今河南省政治、經濟、教育、科研、文化中心。
黃帝故里景區位於河南省新鄭市區軒轅路,占地面積100餘畝,黃帝故里祠始建於漢代,後曾經毀建,明清修葺,清朝康熙五十四年(1751年),新鄭縣令徐朝柱立有“ 軒轅故里 ”碑,為弘揚中華民族優秀傳統文化,緬懷始祖功德,近年來,新鄭市人民政府對黃帝故里景區進行了擴建,黃帝故里是海內外炎黃子孫尋根拜祖的聖地,更在2000年被公佈為河南省重點文物保護單位,也列於鄭州市十大旅遊景點之一。
二七廣場鄭州最具代表性的商業區。位於鄭州市區中心,集大型商場和數百家中小型商店、 餐飲店, 是外地遊客的必到之處。 二七紀念塔坐落在二七廣場中心,為紀念1923年2月7日京漢鐵路工人大罷工而建。塔頂建有鐘樓, 六面直徑2.7米的大鐘,整點報時演奏《東方紅》樂曲, 鐘聲悠揚悅耳, 綿延數公里。 入夜後, 多種彩燈內透外照, 使雙塔更加絢麗多彩。
德化步行街百年德化風情購物街位於德化街以西,正興街以南,福壽街以東,裕元裏以北,北臨二七塔,處于二七商圈與火車站商圈傳統商業地帶,占地51.5畝,總面積6萬多平方米。

第02天 鄭州~開封(80KM,約1.5小時)~開封府~開封文化客廳(體驗木板年畫)~七盛角~鄭東新區~外觀河南省藝術中心~鄭州

開封府北宋時期天下首府,威名馳譽天下,包龍圖扶正祛邪、剛直不阿的美名傳於古今。一曲“包龍圖打坐在開封府”,令人蕩氣迴腸,引起幾多瑕思神往。開封府位於開封市包公湖東湖北岸,占地60餘畝,建築面積1.4萬平方米,氣勢恢弘,巍峨壯觀,與位於包公西湖的包公祠相互呼應,同碧波蕩漾的三池湖水相映襯,形成了“東府西祠”樓閣碧水的壯麗景觀。作主題景區,開封府堅持弘揚中華民族創造的優秀文化和歷史文明傳承,突出包公在府衙文化中的靈魂作用;堅持動靜結合、雅俗共賞、歷史與演義相映成趣的經營理念。在開封府,不僅有宋太宗、宋真宗、宋欽宗由此登基,還有寇准、包拯、歐陽修、范仲淹、蘇軾、司馬光、蘇頌、蔡襄、宗澤等一大批傑出的政治家、文學家、軍事家、書法家、科學家在此任職。您除了能夠看到大批珍貴史料,軼事和陳展外,還能夠看到一身浩然正氣,清正剛毅,栩栩如生,目前世界上最大的包公銅像。此外,您還能夠看到“開衙儀式”、“包公斷案”、“演武場迎賓表演”、“噴火變臉”等豐富多彩的表演活動,真切地體會到“游開封府,品味大宋文化;拜包龍圖,領略人間正氣”。
開封文化客廳(體驗木板年畫)位於碧波蕩漾的龍亭湖畔,緊鄰六朝皇宮龍亭。整個文化客廳契合古城開封的“宋韻彰顯、親切溫潤、外在古典、內在時尚”的人文氛圍。
 
第03天 鄭州~(80KM,約1.5小時)登封~(50KM,約1小時)少林寺(含電瓶車)~塔林~武術表演~(80KM,約1.5小時)~洛陽~龍門石窟(含電瓶車)~麗景門+明清一條街~鄭州

少林寺位於登封的嵩山,是少林武術的發源地,禪宗祖庭,由於其坐落嵩山的腹地少室山下的茂密叢林中,所以取名《少林寺》。少林寺在唐朝時期,享有盛名,以禪宗和武術並稱於世。
塔林號稱《中國古塔藝術博物館》的少林寺塔林,則保存了西元698年至1803年間,共241座古塔和兩座現代塔,是中國現存古塔數量最多的塔群,塔的層次一般為1至7級,最高可達15公尺,造型有正方形、長方形、六角形、圓形、柱形、錐體、瓶體、喇叭體等。時代歷經漢、魏到清代等朝代,上下兩千年,時間跨度極長,建築種類繁多,讓您一飽眼福。
武術表演少林景區和武術學校不同特色的少林武術絕學一一展示,更邀請您互動參與切磋少林十八班武藝,精湛武藝絕對會讓您嘖嘖稱"讚"。
龍門石窟與莫高窟、雲岡石窟齊名,並列為《中國三大石窟》。龍門石窟是中國現存三大國寶級石窟寺之一,主要建於北魏年間,連續營造達400年之久,現存窟盒2000多座,佛塔40餘座佛像10萬多尊,堪稱古典雕刻藝術之寶庫,而其中規模最大、名聲最響的是建于唐代武則天時期的奉先寺石窟,裏邊的佛像造型雍容典雅、面目傳神,所穿服飾紋路清晰、衣褶宛然。 以《龍門二十品》是代表的碑刻是書法藝術的精品,每年吸引了無數書法愛好者慕名前往。
麗景門+明清一條街古都洛陽從夏開始共13個朝代先後在此建都,麗景門建于隋唐,因是南北大運河的交匯處,為天下舟船所集,商銀貿易,車馬填塞。今日的麗景門由城門樓、瓮城、箭樓、城墻、護城河等部分組成,其城垣高厚,重門疊關,氣勢磅礡,其規模之宏大在河南古建築中居于首位,被稱為古都第一門。古城內仿古街店鋪林立,商賈雲集,熙熙攘攘,熱鬧非凡。

2015-12-22

用 Ultraiso/WinImage 製作 Bootable 大IMG軟盤鏡像

Reference 01: 用 WinImage 製作 大IMG軟盤鏡像
Reference 02: WinImage_製作_大IMG軟盤鏡像
Reference 03: The  MS-DOS  5.0 Floppy Disk Boot Record (on a 1200 KiB floppy diskette)
Reference 04: MSWIN4.1 (Windows 98) Floppy Disk Boot Record

Notes/Comments:

1. 要成功使用 Ultraiso 製作 bootable floppy image, 必須把有些隱藏檔確實拉到 image file 中. 若直接從 7z 中拉出, 就是會漏!!!

另外, 拉檔案進入 MS-DOS floppy image 時, IO.SYS/MSDOS.SYS 必須先放!!! 因為 MS-DOS floppy boot
sector 程式碼會去確認 IO.SYS 是不是第一個檔案, MSDOS.SYS 是不是第二個檔案.

至於 Windows 98(SE)/XP floppy boot sector 就沒有這樣的限制, 只要 IO.SYS 存在就好!

2. Imdisk 則無法指定 boot sector format ( dos622, w9x, ...). 無法 create new bootable floppy image. 只能修改現成的. 就不考慮了

3. WinImage 使用了那麼複雜的公式, 似乎只是想保證 n=C*H*S 四個參數值都是整數而已 (...待驗證...), 其中 C/H/S 各有其分別最大值的限制

使用 Ultraiso :

File->New->Floppy Image->select Image Size/Format->(fill in files)->save

使用 WinImage :

U盤作為維護系統,越來越受到關注,U盤的啟動也就成了為關鍵,其Syslinux引導的兼容性較高,U盤一般採用它來引導,但它對IMG鏡像啟動採用memdisk內存磁盤來引導,其memdisk普通只支持2.88MB以下的磁盤 對大於2.88MB的鏡像,要求給出其鏡像的C/H/S 值如何確定一個IMG鏡像正確的C/H/S 也就成了製作鏡像的關鍵

一、計算IMG容量:
軟盤的標準規格有 360 KB   720 KB   1440 KB 等 一般採用1440 KB為一個標準單位,也就是說一個標準的軟盤就是1.44MB. 這個標準也肯定兼容了 360 720 的規格,所以在製作軟盤鏡像時,我們就可以採用 360 720 的規格
   360除以1440等於0.25    360/1440=0.25
   720除以1440等於0.5    720/1440=0.5 (相當二個360/1440)
   0.25這個係數就給製作較大軟盤鏡像提供了一個基準參考,介於0~1之間就有 0.25 0.50 0.75 這三個數
   以 1440KB為一個標準單位來說, 就有 1440×0.25/1440×0.5/1440×0.75 從而得到製作鏡像容量的計算方法
   計算方法:
       鏡像容量=1440×n (n 整數)
       鏡像容量=1440×n.25 (n 整數)
       鏡像容量=1440×n.50 (n 整數)
       鏡像容量=1440×n.75 (n 整數)
例:1440×2.25=3240 KB 容量    1440×3.25=4680 KB 容量
    1440×2.50=3600 KB 容量    1440×3.50=5040 KB 容量
    1440×2.75=3960 KB 容量    1440×3.75=5400 KB 容量
    1440×3 =4320 KB 容量    1440×4 =5760 KB 容量 ............

二、確定C/H/S參數:
WinImage 工具製作 IMG軟盤鏡像 一般採用一個標準系統啟動盤為母盤(win98系統啟動盤),在其上進行擴容 (File->New->1.44MB->OK, then Image->Change Format->Select custom image format)

1.用WinImage打開母盤 選擇 更改格式中的自定義鏡像格式:
  其中設置:
文件系統(s): FAT 12/16 (只能選它,軟盤格式)
        每扇區字節數(B): 512 (一般選它)
        Sector per cluster (size in bytes) : 1 (512) ... 取最小值
        扇區總數(n): 鏡像容量×2 (計算方法四種之一)
        每磁道扇區數(T=S): 18(36) (採用1440×n.25 1440×n.75 選18;採用1440×n 1440×n.50 選36)
        磁頭(H): 2(8) (採用1440×n.25 1440×n.75 選2 ;採用1440×n 1440×n.50 選8 )
    註:扇區規範採用是18 36 ....進位; 磁頭採用 2 8 16....進位

2.計算C/H/S值
      C/H/S 三者相互關聯與依懶, 決定鏡像磁盤的標準參數, 其中一個有誤, 它們的關係就不存在了, 造成引導不成功
      S=每磁道扇區數(T)
      H=磁頭(H)
      C= 扇區總數(n)/(每磁道扇區數(T)×磁頭(H)) {C=整數}
      註:C 不等於整數,需重新計算容量或設置 每磁道扇區數(T)和磁頭(H)

      例一:鏡像容量=1440×2.25
            設置:
            扇區總數(n)=1440×2.25×2=6480
            每磁道扇區數(T):18    
            磁頭(H):2
       
            計算C=
            C=6480/(18×2) = 180 (整數)
                      這樣就得到了 C/H/S=180/2/18

       注意:如設置 每磁道扇區數(T)36磁頭(H)8 則C=6480/(36×8)=22.5 帶有小數, 磁道扇區沒有半個的標準,
               
       例二:鏡像容量=1440×2.50
            設置:
            扇區總數(n)=1440×2.50×2=7200
            每磁道扇區數(T):36    
            磁頭(H):8
       
            計算C=
            C=7200/(36×8) = 25 (整數)
                      這樣就得到了 C/H/S=25/8/36

      註:如設置 每磁道扇區數(T)18磁頭(H)2 則C=7200/(18×2)=200 整數也行

接下來, 就可以開始製作 bootable image:
1. Image->Boot sector properities->...
2. 放置 io.sys/kernel.sys... 至 image file.

PS:
1. Options ->Setting->Image->size limit for image loaded in memory (KB) 必須大於 floppy image file size.

3. Image->Change format->Select custom image format->Hidden sectors / Physical drive number must be 0.

4. 另外, 標準 image 容量大小可參考以下表格:


2015-12-12

How to reinstall GRUB2 EFI?

Reference 1 : How to reinstall GRUB2 EFI?
Reference 2 : Grub EFI Reinstall
Reference 3 : Linux UEFI 開機

Q : After successfully updating my bios, something went wrong and I ended up with a blinking cursor on the top left corner of a black screen. No errors, no nothing. The bios now only listed a SATA: <disc name> boot option in place of the usual UEFI ubuntu one. I'm using a GPT partitioning scheme.
I eventually found that the working solution was to properly reinstall grub-efi-amd64. So, how do I do this ?

PS: Actually, i succeeded to reinstall GRUB2 EFI on my own and will post my answer here as I was unable to find any complete how-to on this.

A : Boot your computer with a live-usb/CD in UEFI mode. I had two boot options <flash_drive> and UEFI: <flash_drive>, the second is needed to expose the efi variables in /sys/firmware/efi/ so that efibootmgr don't fail later on. Booting with the first option gives me the following error:
Fatal: Couldn't open either sysfs or procfs directories for accessing EFI variables.
Try 'modprobe efivars' as root.
modprobe efivars did'nt work for me.

chroot into the broken system (similar to the ubuntu grub2 help but with efi specificities):
sudo mount /dev/sda2 /mnt #sda2 is my root partition
sudo mount /dev/sda1 /mnt/boot/efi #sda1 is my efi partition
for i in /dev /dev/pts /proc /sys; do sudo mount -B $i /mnt$i; done
sudo cp /etc/resolv.conf /mnt/etc/ #makes the network available after chrooting
modprobe efivars # make sure this is loaded
sudo chroot /mnt

Depending on your linux distribution, you now do different things.
For Ubuntu/Debian:
apt-get install --reinstall grub-efi-amd64
or alternatively:
apt-get install --reinstall grub-efi
update-grub
should the above give you a grub, but not a bootable one (…???…)

For Fedora (up to 16, may work for others):
yum reinstall grub-efi

In the following command, you have to replace sdX with the device which has the EFI partition you want to boot from. In --part Y you have to replace the Y with the number of the EFI partition (as in /dev/sdXY).
efibootmgr -c --disk /dev/sdX --part Y
efibootmgr -v # verify a new record called Linux is there
Now type Ctrl+D to exit chroot, unmount everything and reboot:
for i in /sys /proc /dev/pts /dev; do sudo umount /mnt$i; done
sudo umount /mnt/boot/efi #please do this. corrupted efi partitions are not nice
sudo umount /mnt
sudo reboot

2015-12-10

Can't call grubx64.efi using startup.nsh in EFI

I installed debian on VirtualBox.
When I launched it I got the regular skip startup.nsh message with the counter and the prompt right after it.

My grubx64.efi resides under FS0:\EFI\debian\, when I tried to call it directly using absolute path it didn't work so I tried putting it in startup.nsh, same result, called it with single and double quotes on both sides, tried escaping the space, still not working.

What can I do in a case where the directory name has space in it?

[Solved], All I had to do is to add the storage device by name and double quotes to handle the space character.

Full procedure:
    edit FS0:\startup.nsh
    FS0:\EFI\debian\grubx64.efi
    < ctrl+s >
    Enter
    < ctrl+q >
    reset
    Watch the magic happens.

2015-12-05

Virtualbox 與 Avira 的問題

2015/12/02 Virtual machine 突然無法開啟, 等很久之後, 出現以下訊息:

Timed out after 60014 ms waiting for child request #1 (ClosedEvents).
(rc=258)
where: supR3HardNtChildWaitFor what:5
Unknown status 258 (0x102) (258)

好在 2015/11/28 有使用 ghost 做備份. 回復之後, 第一次執行 VirtualBox VM 沒問題, 但過一陣子之後, 問題又回來了.
感覺好像是防毒軟體 (Avira) 出問題. 將其移除後, 果然就可以了. Virtualbox forum 有人也是有相同問題 : [Solved] E_FAIL (0x80004005)

Avira 用了很久, 一直存在一些小問題, 但習慣了, 就繼續使用到今.

但 2015/12/04 開始, 決定試用 Bitdefender.

2015-11-14

使用 GRUB4DOS / RMPrepUSB 的注意事項

1. 可 mount 大部份 ISO 檔案的方法
A : 參考 www.rmprepusb.com
>>> 93 - Boot almost ANY linux ISO from a grub4dos USB drive (e.g. Tails, BackTrack or even Ophcrack)!
>>> 21 - GRUB4DOS GUIDE (with videos) - how to make a multi-boot drive (+examples)

2. Error 60: File for drive emulation must be in one contiguous disk area
A1 : RMprepUSB->Drive->Make all files on drive contiguous (Ctl+F2)
A2 : Run winimage
A3 : (最笨最有效的作法) Copy USB 內容到暫存目錄, delete USB 內容, 是 delete, 不是 format. Using the Ctrl-F2 hotkey in RMPrepUSB to make all the files on the E2B drive contiguous. 再將暫存木錄之內容, 回存到 USB.
A4 : (建議的作法): Comment from http://rmprepusb.blogspot.tw/.  A nice tool you can use to help you look at the files on the USB drive and understand what is happening is the free Piriform Windows utility Defraggler. 分析之後, 針對單一檔案進行處理, 不要中斷; 千萬不要全部重組.
defraggler
Defraggler also asks if you want to erase the Recycle Bin files when you Analyze or Defrag a drive.
As you can see from the screenshot above, you can select a drive, click Analyze and then immediately see the fragmented files (shown by the red squares). You can then select a red square and Defraggler will list what files are in that block. You can then tick the checkbox next to any of these files and defragment them separately by clicking the 'Defrag checked' button. Nice!
Defraggler is not a good tool to use on the whole USB drive however. It attempts to move all the files to the beginning of the drive as well as make them contiguous. This can take a longggg time and is also uneccessary. What is more, if you Stop Defraggler during a defrag operation, it can prevent the drive from being defragged again and prevent WinContig from being able to make all the files contiguous unless you first delete a large file from the USB drive to make more room! So I would advise that you only use Defraggler to defrag single files and don't interrupt it once it has started. If you need to make all files on a drive contiguous use WinContig (or Ctrl+F2 in RMPrepUSB).
P.S. In case you missed it, in a previous blog post, I describe a case where a 6GB ISO could not be copied and then defragged on an empty 8GB USB drive and the reason why this happens.

2015-10-29

影音轉檔及字幕使用

軟體:
1. Handbrake : 從光碟片抽取影音檔, 轉換影音格式. 不提供字幕檔格式設定/編輯.
2. Avidemux : 合併/裁剪影音檔
3. ConvertZ : 字幕檔簡繁體轉換 (Microsoft Office Word, Libreoffice Writer 也都有簡繁轉換功能; 接著利用 notepad++ 轉換至 UTF-8 (檔首無 BOM))
4. Notepad++ : 改變字幕檔編碼格式為 UTF-8; 檔案大小會比原本的檔案增大約 1.5 倍; UTF-8 以 3 bytes 存中文.
5. SrtEdit : 轉換字幕檔格式 (SRT, SSA, ASS), 中文簡繁轉換, 調整字幕大小及字型
6. VLC : media player
7. PLEX : media server


=============================================================================
影音檔格式差別:

MKV:
老牌封裝格式。以可以自由調節各項設置而備受視頻壓制人員的喜愛,而且後天可以提取內掛字幕和外掛字幕都很容易。只是這個格式在安卓和iOS等移動設備上不是默認支持的,因為其相同碼率和設置下體積較大,且由於充分開放自由設置而導致的編碼不同等問題不適合移動設備觀看,另外Mac OSX也不是原生支持這種格式的。

MP4:
新興封裝格式。雖然不及MKV那般高自由度的調節選項,但是由於其被移動設備、掌機以及Mac OSX等原生支持,在移動視頻領域異軍突起,成為了很多視頻網站和論壇開始大量採用的視頻格式。不過此種格式雖然也是可以封裝其他視頻格式的,但是由於其有限的調節設定導致其後天再編輯性不強,也無法提取內嵌字幕。


=============================================================================
字幕有兩種形式

1. softsub (軟)
可以是獨立的字幕檔,也可以封裝在影片檔內. 最大的特點是可以選擇、開啟/關閉指定字幕
常見文字格式: ASS、SSA、SRT、Plain Text
常見圖形格式: DVD字幕、Blu-ray字幕

2.hardsub (硬)
如果你的播放設備不支援字幕(softsub),你就要重新編碼視訊將字幕烙印在畫面上, 但轉換編碼格式很耗時還會損失畫質. 播放時一定有字幕,因為字幕是烙印在畫面上,有畫面就有字幕

輸入字幕

支援的字幕格式:
‧ Plain Text (純文字): 僅內建
‧ SubRip (SRT): 內建、外掛
‧ Advanced SubStation Alpha (ASS): 僅內建
‧ SubStation Alpha (SSA): 僅內建
‧ DVD Subtitles (IDX+SUB): 僅內建
‧ Blu-ray Subtitles (PGS/SUP): 僅內建

字元編碼格式:
‧ UTF-7
‧ UTF-8
‧ UTF-16
‧ UTF-32

前置作業

如果 SRT 之類的文字格式字幕的字元編碼不是 Unicode 格式, 你必須先將字元編碼轉為 UTF-8 或其他 Unicode 格式

http://www.mobile01.com/topicdetail.php?f=511&t=4192036

如果是獨立的字幕檔 (非 SRT),可用 mkvmerge 將所需的字幕、視訊、音訊重新封裝為單 MKV 檔給Handbrake 或 VidCoder 讀取。如果需要匯出內建字幕,可用 gMKVExtractGUI 匯出字幕。

http://www.mobile01.com/topicdetail.php?f=510&t=4192044

由於 Handbrake 不提供字幕樣式設定選項,所以純文字字幕只能使用預設的風格/樣式,但你可以將純文字字幕轉為 ASS,並直接在 ASS 字幕內設定風格/樣式。最後再用 mkvmerge 重新封裝成單 MKV 給 Handbrake 或 VidCoder 讀取。

http://www.mobile01.com/topicdetail.php?f=510&t=4192039

Handbrake 輸出字幕設定

開啟影片後切換到 "Subtitles" 分頁; 如果字幕來源是輸入影片,則點擊 [Add Track] 之後從 "Source" 的下拉式選單選取要使用的字幕, 如果字幕來源是 SRT 檔,則點擊 [Import SRT] 來選取字幕檔案,且必須設定正確的字元編碼 (Car Code), 如果你勾選 [Burn In],則該字幕會被燒錄(烙印)至畫面上,即 "hardsub"。


HandBrake 轉檔出現亂碼 = =
除了Handbreak設定要選UTF-8之外,.srt檔有些也要用文字編輯另存成UTF-8格式。

=============================================================================

2015-10-18

RS485 & RS232 簡介

RS485 & RS232

通訊可分成串列通訊與並列通訊兩種,串列通訊是以分時方式每次傳送一個位元(bit)給接收端,像是RS232、USB等等。
若以操作模式區分可以分成單端傳輸(Single-ended transmission)與差動傳輸(Differential transmission),單端傳輸資料傳送之電壓準位的參考是地GND;而差動傳輸資料傳送之電壓準位是參考則是兩端的電位差,換句話說資料不是對地在送。
單端傳輸之缺點是抗雜訊能力較差,傳輸距離無法遠與傳輸速率慢,例如 RS232。差動傳輸之優點則是抗雜訊能力強,傳輸距離較遠與傳輸速率快,例如RS485。

 


規格
RS232 RS423 RS422 RS485
操作模式 單端傳輸 單端傳輸 差動傳輸 差動傳輸
線上允許之傳送/接受數目 1 Driver/1 Receivers 1 Driver/10 Receivers 1 Driver/10 Receivers 32 Driver/32 Receivers
最大傳輸距離 50 feet (15 m) 4000 feet (1.2 km) 4000 feet (1.2 km) 4000 feet (1.2 km)
最大傳輸速率 20 kb/s 100 kb/s 10 Mb/s 10 Mb/s
接收端之輸入靈敏度 ±3 V ±200 mV ±200 mV ±200 mV

 

RS485 簡介

RS485是一種工業標準,RS485之傳輸距離最大為1.2公里,傳送速率最大為10 Mb/s。RS485優點是抗雜訊能力強,通訊過程只需要2條線,RS485是一種半雙工傳輸,半雙工意指同一時間只能做傳送或是接收的動作,無法同時傳送與接收,像是對講機就是半雙工通訊的一種。

RS232通訊至少需要3條線(一條發射線TxD、一條接收線RxD、一條接地線GND),RS232通訊電壓準位的參考是地;而RS485傳輸不需要地線,其電壓準位的參考標準不是地,而是兩端之電位差。
RS485的電氣規格:邏輯“1”以兩線間的電壓差為+(2~6)V表示;邏輯“0”以兩線間的電壓差為-(2~6)V表示。RS485之電壓準位相較於RS-232來的低,所以較不易損壞介面電路的IC。再者,RS485電壓準位TTL電壓準位相容,也方便與TTL 電路連接。

RS485介面是採用差動傳輸方式,其抗共模能力增強,即抗雜訊干擾性好。因為RS485組成的半雙工網路,只需二條線,所以RS485介面均採用遮罩雙絞線傳輸。

應用

RS485可以是1對多甚至是多對多通訊。RS485最大傳輸距離為1.2 km,另外RS232通訊只能是1對1傳輸,而RS-485通訊可允許多對多傳輸(32 Driver 32 Receiver),故可利用RS-485介面方便地建立起設備網路。

2015-03-10

Setup Raspberry’s wireless network and assign a static IP address in Raspbian

參考文件:
1. paulv's comment in /etc/network/interfaces changed,weird 2 LAN IPs instead of 1
2. Setting a static IP on Raspberry Pi on Raspbian 20150505

----------------------------------------------------------------------------------------
Setup wireless network:
NEVER modify /etc/network/interfaces again.

add theses codes to /etc/wpa_supplicant/wpa_supplicant.conf
network={
    ssid="SSID"
    psk="Your_wifi_password"
}


Set static IP address for an interface:
NEVER modify /etc/network/interfaces again.

Add these to /etc/dhcpcd.conf

interface eth0
static ip_address=192.168.0.200/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1

Replace eth0 and the addresses as what you want.

Fixing Raspberrypi’s WiFi Dropout Issues on EDUP EP-N8508GS

If you find your wifi 'drops out' from time to time, you can fix it by following procedures:

Create and edit a new file in /etc/modprobe.d/8192cu.conf

sudo vi /etc/modprobe.d/8192cu.conf
# Disable power saving (recommended)
options 8192cu rtw_power_mgnt=0 rtw_enusbss=0

Then reboot with sudo reboot. 結果反應在 /sys/module/8192cu/parameters/…

For details, please check "A Brief Introduction to RTL8192C driver Power Saving"

# In associated idle
rtw_power_mgnt=0|1|2
0 == disable power saving
1 == power saving on, minPS
2 == power saving on, maxPS

rtw_enusbss=0|1
0 == disable auto suspend
1 == enable auto suspend

rtw_hwpwrp_detect=0|1
0 == disable HW power pin detection
1 == enable HW power pin detection

# Under unassociated idle state
rtw_ips_mode=0|1
0 == low power, IPS_NORMAL
1 == higher power, IPS_LEVEL2

The conventional wisdom, because we're running our RPis as server systems not clients, is to set rtw_power_mgnt=0 and rtw_enusbss=0 to prevent the dongle going into power saving and to ignore the other two parms because they don't make any difference. If the server goes into power saving we'd need a process to wake it up. That's different from a client system where interaction from a keyboard user will trigger a request to wake up and associate the dongle.

2015-03-07

GNU / Linux 各種壓縮與解壓縮指令

.7z
套件名稱:p7zip-full。
壓縮:$ 7z a FileName.7z FileName
使用密碼 (PASSWORD) 壓縮:$ 7z a FileName.7z FileName -pPASSWORD
解壓縮:$ 7z x FileName.7z

.bz
壓縮:unkown。
解壓縮1:$ bzip2 -d FileName.bz
解壓縮2:$ bunzip2 FileName.bz

.bz2
套件名稱:bzip2。
壓縮:$ bzip2 -z FileName
解壓縮1:$ bzip2 -d FileName.bz2
解壓縮2:$ bunzip2 FileName.bz2

.gz
套件名稱:gzip。
壓縮 : $ gzip FileName
解壓縮1:$ gunzip FileName.gz
解壓縮2:$ gzip -d FileName.gz

.lha
套件名稱:lha。
壓縮:$ lha -a FileName.lha FileName
解壓縮:$ lha -e FileName.lha

.rar
套件名稱:rar, unrar。
壓縮:$ rar a FileName.rar DirName
解壓縮1:$ rar e FileName.rar
解壓縮2:$ unrar e FileName.rar
.tar (僅打包,無壓縮)
套件名稱:tar。
打包:$ tar cvf FileName.tar DirName
解包:$ tar xvf FileName.tar

.tar.bz
壓縮:unkown。
解壓縮:$ tar jxvf FileName.tar.bz

.tar.bz2
套件名稱:bzip2。
壓縮:$ tar jcvf FileName.tar.bz2 DirName
解壓縮:$ tar jxvf FileName.tar.bz2

.tar.gz
套件名稱:gzip。
壓縮:$ tar zcvf FileName.tar.gz DirName
解壓縮:$ tar zxvf FileName.tar.gz

.tar.tgz
套件名稱:gzip。
壓縮:$ tar zcvf FileName.tar.tgz FileName
解壓縮:$ tar zxvf FileName.tar.tgz

.tar.xz
套件名稱:xz-utils。
壓縮:$ tar Jcvf FileName.tar.xz DirName
解壓縮:$ tar Jxvf FileName.tar.xz

.tar.Z
壓縮:$ tar Zcvf FileName.tar.Z DirName
解壓縮:$ tar Zxvf FileName.tar.Z

.tgz
套件名稱:gzip。
壓縮:$ tar zcvf FileName.tgz FileName
解壓縮:$ tar zxvf FileName.tgz

.xz
套件名稱:xz-utils。
壓縮:$ xz -z FileName
解壓縮:$ xz -d FileName.xz

.Z
壓縮:compress FileName
解壓縮:$ uncompress FileName.Z

.zip
套件名稱:zip。
壓縮:$ zip FileName.zip DirName
解壓縮:$ unzip FileName.zip

2015-01-05

Intel, nVIDIA, AMD之GPU加速轉檔總覽及轉檔方案抉擇

首先釐清幾個關鍵OpenCL是什麼?NV的CUDA還是AMD的APP又是?為何要用GPU加速?
在評估速度之前必須先瞭解以上這些東西是什麼。


OpenCL是一種讓不同運算架構的處理器之間能夠協同運算或是溝通的平台。

CUDA與APP則是NV與AMD各自的圖形處理核心運算架構,自家設計好硬體,然後釋出能夠呼叫這些硬體資源的函式庫,讓工程師開發程式時知道用哪個函式可以調用記憶體、或指定多少顆CUDA或Stream核心來做什麼事情。

GPU加速的起源:

電腦的運算指令大概可分為兩類,一種是浮點運算、另一種是普通整數運算,通常普通軟體僅需要整數運算就能解決大部分的問題,但關於影像、多媒體、三維虛擬實境這類的處理卻必須有非常高的浮點運算能力才行,所以將浮點運算交給另個IC來處理的2D、3D加速卡概念就出來了,之後演變成如今這種局面,利用浮點運算能力非常強大的GPU核心來處理影像、圖形資訊,而CPU則專心負責通用運算處理,專才專用、可喜可賀。

正因為上述原因CPU與GPU的結構差異非常大,CPU因為要能夠快速處理所有電腦內的資訊所以單一核心的硬體元件數非常多,所以在製程上不太可能有太多個核心在同一個封裝上,因為元件數量太高所以會使發熱量提昇,在散熱能力有限的情況下,能容納的核心數非常有限。而GPU則相反,由於圖形處理有自己的規範(OpenGL與Direct X)GPU僅需要處理限定的指令,可以說硬體是專門為了支援這些規範而做了最佳化,所以單一核心的元件數量並不像CPU這樣肥大,導致GPU單一個封裝能容納的核心數量就遠高於CPU了,用我的電腦作為實際案例好了,CPU是X3 435如其型號有三個核心,顯示卡為AMD的R 5770有800個核心,三比上八百,GPU內的核心數量比CPU多了兩百多倍。

於是有人在比對這個數量差異之後突發奇想:如果讓這麼大量的核心一起幫我做運算,那效率豈不是等於有一個八百核的處理器?那Xeon或i7的12核算什麼?所以在得知這個構思後,NV覺得有搞頭,在2007年2月15日最早搶了頭香做出了GPU加速的雛型「CUDA」,想取得以自家顯卡加速的先機,而蘋果公司也對GPU加速起了興趣,在做了初步研究之後發現自己一家公司做可能沒搞頭,必須要結合各家廠商建立一個通用架構,所以在2008年6月16日時與 AMD, IBM, Intel, Nvidia共同向 Khronos Group這個開放運算架構組織提出了「OpenCL」的架構,起初僅支援類似CPU與GPU這種本來就在PC很普及的零件上,後來隨著ARM公司(手機處理器架構的創始者)的加入,如今OpenCL也壯大到能夠支援手機的ARM架構處理器了,如果你有能力開發系統,理論上甚至能把一堆手機核心並列起來組成超級運算雲,這是題外話...。

轉檔有兩個階段,一、將影片檔案「解碼」變成「影像」,二、將影像轉存成檔案則稱為「編碼」。而轉檔最慢的部份在於「編碼」上。目前GPU的運算從07年到現在才發展沒多久,在這短短幾年內很難開發出一個能夠「有效」利用GPU的核心數的「編碼器」。雖然利用到所有GPU核心幫你工作理論上是可行的,但實際上這種程式的撰寫非常之不易,因為工程師要將原本在CPU處理時是一整長串影片數據的大量指令,分解成許多個指令給不同核心各自去處理,最後再將所有處理完的資料同步組合起來,這些都很傷腦力,且需要影像方面的應用數學家來配合才能達成。另外,硬體上也是處處碰壁,主要難處在於資源分配的部份,尤其是分配記憶體的部份,工程師很難決定要如何分配資料要存放在主記憶體或顯示記憶體上,因為PCI-E介面卡要經過晶片組作為溝通橋樑DDR(主記憶)體與GDDR(顯卡記憶體)面間溝通非常緩慢),另外指令能夠分解的數量有限,並非所有指令都能夠分解成許多小單位給大量的顯示核心並行運算,總之目前由於硬體的限制,導致軟體的開發處處都是困難,但為了達到以往都沒想過的速度...這些是開發必經的過程。

結論:

簡單來說,是目前正處在軟體、硬體都還正在發展的「磨合期」,目前軟硬體兩方面都在急劇進步當中,像是AMD公司就非常具有前瞻性地收購下ATI然後將CPU與GPU融合產生了APU這種東西,且一直在修改架構準備將GPU部份能夠有效為通用運算進行加速,而AMD在下一代APU當中也提出了HSA架構的概念,讓GPU與CPU共享主記憶體,如此一來便沒有像是與PCI-E介面卡間還要經過晶片組的頻寬瓶頸了,可謂GPU加速的一大進步,相信Intel與Nvidia也會馬上跟進,這樣良性競爭下最終將會使軟體與硬體都將同步提昇轉檔效率,所以我們消費者與廠商都是雙贏的,但需要時間等待就是了,目前還享受不到「真正解放」的GPU加速轉檔或者加速運算...。

就算你買了有很多核心的顯卡,目前也沒有軟體能夠「有效」發揮它的效能,所以核心數目絕不會是你考慮買卡來轉檔的主因,但如果說你有其他運算需求(如3D算圖、Adobe CS6全),或者你是程式開發者,那你可以買張2~3千元的卡,不論AMD或NVIDIA都可,反正都支援OpenCL來加速運算。

如果你注重畫質,x264軟體編碼器將是最佳選擇,它擁有CPU上的最高速度,以及對H.264各層級的架構支援度非常高,還能搭配Avisynth的各種濾鏡來處理影片,另外如果你要利用FFT(沒聽過就略過吧...)來去除雜訊,Avisynth也提供了使用GPU加速的濾鏡DLL我自己測試時GPU Loading幾乎都在100%。目前這套x264軟體編碼器亦有人正將它搬往OpenCL上不過目前還不穩定,各位可以關注x264之後的動態。

如果你注重速度,但又不想失去太多畫質,那你可以考慮支援OpenCL的編碼器,像是MainConcept H.264 Encoder、Xilisoft Video Converter Ultimate 6、Handbrake(Beta測試版)等軟體來進行轉檔編碼。
我個人是建議使用MainConcept H.264 Encoder,雖然加速幅度不大,不過它所提供的的畫質與軟體編碼相差彷彿,使用上比較困難,需要一定專業知識。
如果MainConcept操作介面上的單字看不懂...請直接使用Xilisoft Video Converter Ultimate 6,它沒有很多複雜艱深的詞彙、有中文版本,但產出的檔案較大(壓縮率較低)。

關於上面提到更有效率的CPU+GPU協同機制,AMD端將會推出hUMA共享主記憶體,Intel端則是早早就已經實作了。

Intel的作法是從Sandy Bridge開始,就已經讓內顯跟CPU核心都掛到內部超高速Ring Bus上,內顯可以跟CPU核心處於同等地位、從比記憶體快得多的L3快取直接存取CPU/內顯之間共享的資料,盡量不透過比快取慢很多的記憶體。先把穩固地基打好後,接下來就是持續在IVB、Haswell、Broadwell、Skylake....繼續堆電晶體加強內顯本身遊戲跟異質計算的能力,並持續改進高速Ring Bus的頻寬跟運作。

下圖是Sandy Bridge的示意圖,Ivy Bridge/Haswell基本上也都是基於類似的Ring Bus架構讓CPU跟GPU可共享L3快取,但有持續改善效能跟效率:

2015-01-05_192553

AMD Kaveri APU會採用hUMA,Llano/Trinity/Richland APU是透過更傳統的Snooping跟記憶體複製的方式,但不管是Kaveri/Trinity/Richland/Llano APU,都還只是在較慢的記憶體階層下功夫,還不敢大刀闊斧把GPU直接連到內部快取上。畢竟AMD礙於製程問題,在APU上連L3快取都取消了,也無從透過L3讓CPU跟GPU共享資料;而擁有L3快取的FX系列,則是無法再有空間納入內顯。

下圖是hUMA的概念:

2015-01-05_192620

hUMA是用來解決AMD自家CPU/內顯溝通效率未最佳化的問題,而Intel除了在Sandy Bridge時已經把CPU跟GPU之間的溝通方式打掉重練過、可以共享L3快取之外,在Intel處理器上執行OpenCL的程式,CPU跟GPU也是已經可以用類似於uHMA的方式共享/存取相同的實體記憶體區塊的,可參考Intel的OpenCL白皮書跟OpenCL程式設計指南:

http://software.intel.com/en-us/articles/opencl-the-advantages-of-heterogeneous-approach
http://software.intel.com/en-us/forums/topic/277703

換個角度看,Intel要繼續改進記憶體共享的機制,不會比當初在Sandy Bridge上加入Ring Bus架構/並把GPU也掛上L3快取來得更有挑戰,畢竟最難的架構打掉重建工作已經熬過去了。但是AMD要大幅度敲掉架構、把內顯也掛到L3快取上面去,首先得要有能把L3快取加回APU、或是能在FX上加入內顯的製程餘裕,因此不管從架構設計面、生產製程面來看,都將會是工程浩大。

原來Intel早已有了先見之明,將記憶體設計成「直通共享」,Intel支脈已經貫通了,正在鍛鍊內息;AMD則是相反、內息很充盈,但因為支脈尚未貫通,沒法發出大招。

既然GPU都有能力即時處理一堆影像資訊了,沒道理不能操滿所有核心來共同演算,只缺在分散式軟體演算架構尚未成熟。