'./configure' 的設定決定 root filesystem 的架構(architecture),即 software stack 的設計。以我們「Embedded Linux 的系統管理 (x86)」課程舉出的 Nano-X project 案例來說,我們可以規劃出 2 種架構:
1. 典型的 Desktop (PC) 使用的架構 - ffplay + SDL + x11。
2. 讓 ffplay 在 Nano-X 介面裡撥放影片 - ffplay + SDL + Nano-X。
其中第 2 點是最有趣的架構,可以讓同學練習 software stack 有關的 './configure' 設定。
首先,同學要先把 FFmpeg 在 x86 上編譯完成,然後我們透過不同的 SDL 管理觀念,讓 ffplay 能夠在 X11 與 Nano-X 的介面上撥放。
不管是在 X11 上撥放影片,或是在 Nano-X 上撥放,都不必動到 FFmpeg(ffplay)。(why?)
嵌入式 Linux 系統管理 - Software Stack 的設定
如果使用 Red Hat Linux 9 (or Fedora) 預設的 SDL,ffplay 的執行畫面如下圖。
圖一:在 X11 上執行的 ffplay
這時 SDL 的編譯設定 (configure) 應該是類似這樣的:
# ./configure --prefix=/usr --enable-video-x11 --disable-video-fbcon --disable-nano-direct-fb --disable-video-nanox --disable-nanox-share-memory --disable-alsatest --with-nanox-pixel-type=0888
我們修改 configure 參數如下:
# ./configure --prefix=/usr --disable-video-x11 --disable-video-fbcon --enable-nano-direct-fb --enable-video-nanox --enable-nanox-share-memory --disable-alsatest --with-nanox-pixel-type=0888
重新編譯並安裝 SDL 後,ffplay 就能在 Nano-X 的介面下撥放影片。如果 Nano-X 的設定是支援 X11 的話,執行後的結果會是下圖的畫面。
圖二:在 Nano-X 上執行的 ffplay (Nano-X with X11)
我們怎麼讓 ffplay 可以在開機後,直接透過 VGA framebuffer 來撥放影片,而不用再進入 X11 呢?做法是:把 Nano-X 設定成支援 VGA framebuufer 即可(Nano-X with VGA FB),至於 SDL 的話,是不用再做任何調整的了!(why?) 當然 ffplay 也不用變動。所以,關於第 2 點的架構做法,可以再細分成:
2.1 ffplay + SDL + Nano-X + X11
2.2 ffplay + SDL + Nano-X + VGA fb
很值得用來練習編譯設定與觀念討論的例子。
Embedded Linux 的考量
「ffplay + SDL + Nano-X」這個架構是適合 Embedded Linux 使用的,只要讓 Nano-X 能完整支援 target device,並把 SDL 與 FFmpeg 移植到 target device,便能在 target device 上撥放影片檔。
Jollen's Blog 使用 Github issues 與讀者交流討論。請點擊上方的文章專屬 issue,或 open a new issue
您可透過電子郵件 jollen@jollen.org,或是 Linkedin 與我連絡。更歡迎使用微信,請搜尋 WeChat ID:jollentw