在這一篇文章中提及的 J1 被應用於 Camera,其 Forth 程式可以在以下目錄中找到:
https://github.com/chengchangwu/wge100_driver/blob/hydro-devel/wge100_camera_firmware/src/firmware
這個 Forth 以 Gforth 為 Host,J1 Forth CPU 為 Target。
首先,看看這個目錄裡最重要的幾個檔案:
- main.fs:這是主程式
- crossj1.fs:這是 J1 的 Cross compiler
- basewords.fs:在這兒,以 j1 的 assembler 來定義了基本的 Forth 指令。
- meta:執行 meta 後就可以開始定義 J1 的 Cross compiler (或稱為 metacompiler) 了。
- target:執行 target 後,之後定義的指令或是資料結構最後都會被放到 target 裡,也就是 j1 16k 的 RAM 裡。
- j1asm:執行 j1asm 後可以開始定義 j1 的 assembler。
- boot.fs:boot loader,它使用 spi 從 flash 載入整個 Forth 系統。它佔據了記憶體 3e00H 以後的空間,從檔案尾端的 h# 3e00 org 得知它從 3e00H 處開始執行。目前我還不清楚 boot loader 又是怎麼被誰放到 RAM 的 3e00H 後的空間中。這等待以後更瞭解時再向大家報告。
- 0jump:在 main.fs 尾端的 0jump 是主程式冷起動的位置。從之前的 0 org 可以知道它的 RAM 位址 是 0。由於有一行 h# 3e00 ubranch 被放在註解中,而 3e00H 是 boot loader 的開始位置,因此我們知道 boot loader 並沒有真的被使用。緊接在那行的是 main ubranch,所以,程式一開始會跳到 main,也就是這個 camera 的應用程式。
沒有留言:
張貼留言