Paradigm Locator (*.CFG) part 3

Posted by: 邱小新 at 下午3:50 in

※ INITCODE

INICODE 用來自動產生 reset vector,堆疊初始化,週邊初始化。

Syntax: INITCODE [BOOT386] [RESET|NORESET] [NOTHING] [STACK|NOSTACK] [ioport=data]
[OUTBYTE addr16=value8] [OUTWORD addr16=value16] [OUTDWORD addr16=value32]
[INBYTE addr16] [INWORD addr16] [INDWORD addr16]
[WRITEBYTE addr32=value8] [WRITEWORD addr32=value16] [WRITEDWORD addr32=value32]
[READBYTE addr32] [READWORD addr32] [READDWROD addr32]
[filename=file.ext CLASS=class_name]

  • BOOT386: 產生與 386 以後 cpu 的相容開機引導程式。
  • RESET: 在 FFFF0H 產生一段 far jump 到程式開始的位址。
  • NOTHING: 強制產生 class ??LOCATE。
  • STACK: 產生 SS:SP 初始化程式碼,會放在 class ??LOCATE 的 segment ??STACKINIT。
  • ioport: 允許週邊暫存器透過檔案初始化,會放在 class ??LOCATE 的 segment ??CPUINIT。
  • OUTBYTE/INBYTE: GPIO 的讀寫操作。
  • WRITEBYTE/READBYTE: 記憶體的讀寫操作。
  • INITCODE NOTHING: 建立一個 segment 包含一個 far jump 到程式進入點,沒有包含任何初始碼。
  • INITCODE filename=file.ext CLASS=class_name
    把 file.ext(binary) 放到 class_name,並把 code 放到 startup code execution list。

Examples 範例

  • cputype i80186
    initcode reset umcs=0xf038 lmcs=0x0ff8
  • initcode outbyte 0xfffe=0x11

※ LISTFILE

LISTFILE 用來設定 listing file 要包含那些資料。

Syntax: LISTFILE [SEGMENTS] [PUBLICS[BY ADDRESS|BY NAME] [COLUMNS=(1|2)] [WIDTH=(80|132)] [SYMBOLS] [LINES] [REGIONS] [CHECKSUMS] [FILENAME=file]

  • SEGMENTS: 建立一個 absolute segment map,包含 segment 的開始位置,結束位置,長度。
  • REGIONS: 包含一份由 MAP 所建立的記憶體空間配置
  • CHECKSUMS: 包含在程序中使用的 checksum 或 CRC。
  • PUBLICS: 輸出 public symbol,利用 BY ADDRESS/BY NAME 排序。
  • COLUMNS: 輸出 public symbol 的列數 1 or 2。
  • WIDTH: 輸出 public symbol 的寬度 80 or 132。
  • SYMBOLS: 輸出額外的除錯訊息,比如 local symbol。
  • LINES: 輸出行數。
  • FILENAME: 設定輸出的檔名,預設值為原始輸入檔案,副檔案改成 .LOC。

Examples 範例

  • listfile segments file=test.loc
  • listfile publics lines symbols segments

※ MAP

MAP 用來指定某塊記憶體的存取型態。

Syntax: MAP [name] addr TO addr AS memtype

  • name: 別名。
  • addr: 定義起始位址及終止位址。
  • memtype:
    • RDONLY: 唯讀。
    • RDWR: 可讀可寫。
    • RESERVED: 不可存取。
    • MMIO: Memory-mapped I/O。
    • IRAM: Internal RAM。
    • SFR: Special function registers。

Examples 範例

  • map my_data 0x00000 to 0x0ffff as rdwr
  • map 0x10000 to 0xEFFFF as reserved

※ ORDER

ORDER 用來連結 anchor

Syntax: ORDER anchor_class class_list

Examples 範例

  • order DATA BSS STACK
  • order DATA BSS
    order BSS STACK

Syntax:

Examples 範例

0 意見

張貼留言