在 Mac 底下用 UART debug

MBP 又出新款, 感覺我的這台又貶值了許多. 總之, 今天的主題是, 怎樣在 MacBook 下透過 UART debug.

首先我們要買一條 USB 轉 RS232 的線, 它不算貴 (360 NTD), 所以還要多買幾樣東西才能達到 PCHOME 的免運費標準. 我買的這條是 Atake 的, driver 在這裡抓:rs232-newdriver-091031.zip.

接下來安裝 Mac OS 10 的 driver, 重新開機後, 上面會出現一個像是電話的 icon.

點選這個 icon, 會進入網路選項. 接著進入右下角的 “進階…". 莫驚慌, “進階" 裡面沒啥東西. 此時要選擇的 modem 是 null modem, 速率看狀況. 但撥號前等撥號音, 可以避免它亂撥號, 否則會收不到 QA board 傳回的 print, 也就是所謂的打印信息.

此外, 就是要記得把終端機打開, 終端機命令取消.

當然, 這有點投機取巧. 對 MBP 來說, 我開了視窗卻沒撥號, 只是一個暫態. 因此相關的視窗是以 “連線中" 的方式佔據了前景, 只能放大還不能縮小. 不過, 在沒有更高科技的解法之前, 大家也可以像我一樣湊合著用.

3GP 和 3G2 的音視頻格式差異

3GP 和 3G2 是手機上的錄影格式, 也用在 MMS (Multimedia Message Service), IMS (IP Multimedia Subsystem), MBMS (Multimedia Broadcast  / Multicast Service) 和 PSS (Personal Public Service) 的影音服務上. 他們主要的差異是用在不同的電話系統, 一個用在 GSM, 另一個用在 CDMA.

Video 的部份看起來是互通的, 但是 audio 看起來差很大.

分類
異同
3GP (for GSM) 3G2 (for CDMA)
video 共同 MPEG4, H263, H264
不同 ? ?
audio 共同 AMR-NB,AMR-WB,LC-AAC,HE-AAC V1
不同 AWR-WB+, HE-AAC V2

EVRC,EVRC-B,EVRC-WB,

13K (QCELP), SMV,VMR-WB

AIFF 小檔案

AIFF 全名 audio interchange file format, 我們沒說要支援, 結果播起來有聲音, 被客戶發 bug, 成了傷腦筋的問題.

為什麼沒有支援也可以播呢?因為它有時並沒有壓縮, 和純 PCM 的 wave 檔差不多.

如果名稱是 *.AIFF 或 *.AIF, 檔案是 little endian. 如果名稱是 *.AIFC, 則為 big endian.

不過 iTune 的 AIFF 內容其實是 AIFC. 這就是為何我們改口說 "乾脆支援 AIFF 算了!" 結果反而又被發 3 個 bug 的原因.

 AIFF 和 WAV (RIFF)  檔簡單比較一下:

RIFF Note AIFF Note
Chunk ID RIFF Chunk ID FORM
Chunk Size 4 Bytes Chunk Size 4 Bytes
RIFF DATA WAVE form data AIFF
 一到多個 chunk   各種 chunk 1
Offset Size Description Value
0x00 4 Chunk ID "fmt " (0x666D7420)
0x04 4 Chunk Data Size 16 + extra format bytes
0x08 2 Compression code 1 – 65,535
0x0a 2 Number of channels 1 – 65,535
0x0c 4 Sample rate 1 – 0xFFFFFFFF
0x10 4 Average bytes per second 1 – 0xFFFFFFFF
0x14 2 Block align 1 – 65,535
0x16 2 Significant bits per sample 2 – 65,535
0x18 2 Extra format bytes 0 – 65,535
0x1a Extra format bytes *
Common Chunk
Sound Data Chunk
Name Chunk
Author Chunk
Copyright Chunk
Annotation Chunk
Audio Recording Chunk
Application Chunk
ID3 Chunk
MIDI Data Chunk
未壓縮
Code Description
0 (0x0000) Unknown
1 (0x0001) PCM/uncompressed
2 (0x0002) Microsoft ADPCM
6 (0x0006) ITU G.711 a-law
7 (0x0007) ITU G.711 µ-law
17 (0x0011) IMA ADPCM
19 (0x0013) ADPCM (Sierra)
20 (0x0016) ITU G.723 ADPCM (Yamaha)
49 (0x0031) GSM 6.10
64 (0x0040) ITU G.721 ADPCM
80 (0x0050) MPEG
257 (0x0101) IBM µ-law
258 (0x0102) IBM a-law
259 (0x0103) IBM AVC Adaptive Differential PCM
65,536 (0xFFFF) Experimental

NONE (未壓縮)

fl32 (32 bits floating)
fl64 (64 bits floating)
a-law
u-law
FL32 (32 bits floating)
ADP4 (4:1 Intel/DVI ADPCM)
ima4 (IMA 4:1)
ACE2 (ACE 2-to-1)
ACE8 (ACE 8-to-3)
DWVW(Delta With Variable Word Width)
MAC3 (MACE 3-to-1)
MAC6 (MACE 6-to-1)
Qclp (Qualcomm PureVoice)
QDMC (QDesign Music)
rt24 (RT24 50:1)
rt29 (RT29 50:1) 

壓縮格式, 寫在 Common chunk

 
 

TIFF 小檔案

TIFF 全名 Tagged Image File Format, 有時候檔名是 TIF 結尾.早期的 TIFF 只能用在二值化的影像 (binary image), 作為掃瞄器的儲存格式之用. 隨著掃瞄器的進步, TIFF 也可以儲存灰階影像 ( gray level image), 和彩色影像.

TIFF 並不是一種單純的影像格式, 它就像 audio 的 AIFF 一樣, 可以當做 container 來用. 包括把 JPEG 或是 Packbits (一種 lossless run-length 壓縮)當做 TIFF 的內容. TIFF 也可以封裝一個 LZW 壓縮的檔案, 當然它也是 lossless.

簡化的 TIFF 稱為 baseline TIFF, 沒有 layer 的觀念, 沒有 JPEG, 也沒有 LZW, 但是仍然有 Packbits.

TIFF 可以是 little endian 或是 big endian, 最前面的 2 bytes 是 'll' 表示前者, 如果是 'MM' 表示後者.

正常的 TIFF 只能支援 4GB 大小, 因為裡面的 offset 是 32 bits. BigTIFF 是 TIFF 的特大號版, 因為 offset 擴充到 64 bits, 所以可以支援到 2^64 bytes 這麼大.


SCMS 小註解

 

根據 Microsoft 的文件, Digital Audio Protection 可以分為在 HDMI 或是 SPDIF 兩種情況. 如果 audio 走 HDMI, 那麼應該以 HDCP 保護. 如果 audio 走 SPDIF, 應該以 SCMS 保護. SCMS  的全名是 Serial Copy Management System, 討厭它的人以諧音稱之為 SCUMS (廢物, 人渣).

那麼 SPDIF 要怎麼保護 SCMS 呢?SPDIF  有 192 bits 的 channel status, 其中 bit 2 就是 SCMS 了.

Byte 0

Bit 0: 0: S/PDIF
       1: AES/EBU (ignored by consumer equipment)

Bit 1: 0: Digital Audio
       1: Non-audio (ignored by consumer audio equipment)

Bit 2: 0: SCMS enabled (default state)
       1: SCMS disabled (this allows unlimited generation digital copying)

…. 等等!SCMS 不是應該有 2 bits 嗎?根據 WIKI:

SCMS copy protection looks for bits written in the subcode data in a digital link. There are three states of these bits: copy allowed (00), copy once (11) and copy prohibited (10). If the source has the copy bits 00, and a copy is made of the source, the copy itself will have the bit set as 00 as well, allowing copies to be made from copies. If the source has the copy bits set as 11, every copy of this material will have the bits set to 10, and making a copy from the copy would be prohibited.

 

對於 SPDIF 輸出端, 只要做好 SCMS = 0 還是挺容易的. 不過這樣還是不夠, 如果 bit 2 是 0, 還要再看 bit 15. 


L bit 不能 record 時的值 Note
DVD-R and DVR-RW 1
CD-R, CD-RW, and DVD 0
CD-DA 也就是俗稱的 CD 未定義, 要看 bit 2 bit 2 以 4-10 Hz 交替 0 與 1

完整的 2 bits 表示法, 會出現在 DAT 或 MiniDisc 的播放或錄製裝置上, 而不是定義在介面.