A2.Tool 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. A2 on ARM
  2. Author: Timothée Martiel
  3. For the A2 kernel, there are 2 ARM-specific modules: Machine and Objects.
  4. Files:
  5. ARM.Machine.Mod
  6. ARM.Objects.Mod
  7. Since the ARM backend now uses generic object files, the module Runtime is needed.
  8. Modules FPE64 and ARMRuntime are needed and were taken from Minos.
  9. For Zynq/ZedBoard targets, the compilation line is:
  10. Compiler.Compile -b=ARM --traceModule=Trace
  11. (* Zynq specific initialization *)
  12. basel/ARM.A2/Initializer.Zynq.Mod
  13. basel/ARM.A2/Runtime.Mod
  14. (* ARM runtime & early communication *)
  15. basel/ARM.A2/Zynq.ARM.Platform.Mod basel/ARM.A2/FPE64.Mod basel/ARM.A2/ARM.ARMRuntime.Mod basel/ARM.A2/Trace.Mod
  16. basel/ARM.A2/Zynq.Uart.Mod
  17. (* Core kernel *)
  18. (*basel/ARM.A2/ARM.Machine.Mod*)
  19. basel/ARM.A2/TrapHandling.ARM.Machine.Mod
  20. basel/ARM.A2/Heaps.Mod oc/Generic.Modules.Mod basel/ARM.A2/Objects.Mod basel/ARM.A2/Kernel.Mod
  21. ~
  22. Compiler.Compile -b=ARM --traceModule=Trace --initLocals
  23. (* Interactive shell on UART *)
  24. basel/ARM.A2/KernelLog.Mod basel/ARM.A2/ARM.Streams.Mod Commands.Mod basel/ARM.A2/ARM.Reals.Mod Clock.Mod Dates.Mod Strings.Mod Pipes.Mod Files.Mod Shell.Mod
  25. basel/ARM.A2/ShellController.Mod
  26. ~
  27. basel/ARM.A2/HeapTest.Mod
  28. (* RAM file system *)
  29. Caches.Mod UTF8Strings.Mod DynamicStrings.Mod XMLObjects.Mod XML.Mod XMLScanner.Mod XMLParser.Mod Configuration.Mod
  30. Options.Mod Plugins.Mod Disks.Mod (*basel/ARM.A2/*)DiskFS.Mod RAMVolumes.Mod FSTools.Mod
  31. basel/ARM.A2/RamFsController.Mod DiskVolumes.Mod
  32. (* Network: FTP server *)
  33. ActiveTimers.Mod
  34. basel/ARM.A2/ARM.Network.Mod basel/ARM.A2/Zynq.XEmac.Mod
  35. basel/ARM.A2/ARM.IP.Mod TCP.Mod basel/ARM.A2/ARM.IPv4.Mod IPv6.Mod ICMP.Mod basel/ARM.A2/StaticInterface.Mod
  36. basel/ARM.A2/TCPServices.Mod WebFTPServer.Mod
  37. (* Network: HTTP server *)
  38. (*TFLog.Mod WebHTTP.Mod TFClasses.Mod WebHTTPServer.Mod*)
  39. (* Dynamic Linking *)
  40. BitSets.Mod StringPool.Mod ObjectFile.Mod Diagnostics.Mod GenericLinker.Mod basel/ARM.A2/GenericLoader.Mod
  41. CRC.Mod ProcessInfo0.Mod Reflection.Mod ProcessInfo.Mod SystemVersion.Mod SystemTools.Mod
  42. (* FAT FS *)
  43. FATVolumes.Mod FATFiles.Mod
  44. (* Samba client *)
  45. UDP.Mod DNS.Mod Locks.Mod SambaClient.Mod basel/ARM.A2/SambaController.Mod
  46. (* Some tests *)
  47. (*basel/ARM.A2/Test.Mod
  48. basel/ARM.A2/Counter.Mod
  49. basel/ARM.A2/LLCounter.Mod*)
  50. ~
  51. Trap handling:
  52. Compiler.Compile -b=ARM --traceModule=Trace --initLocals (*--trace=* -i*)
  53. basel/ARM.A2/KernelLog.Mod basel/ARM.A2/ARM.Streams.Mod Reflection.Mod TrapWriters.Mod basel/ARM.A2/ARM.Traps.Mod
  54. ~
  55. Compiler.Compile -b=ARM --traceModule=Trace --initLocals basel/ARM.A2/GenericLoader.Mod Test.Mod ~
  56. Dynamically linked modules:
  57. Compiler.Compile -b=ARM --traceModule=Trace --initLocals (*--trace=* -i*)
  58. Trace.Mod
  59. KernelLog.Mod
  60. basel/ARM.A2/Test.Mod
  61. HeapTest.Mod
  62. ~
  63. Compiler.Compile -b=ARM --traceModule=Trace --initLocals (*--trace=* -i*)
  64. Test.Mod
  65. ~
  66. StaticLinker.Link --fileName=Test.Bin --displacement=100000H -a
  67. Initializer Runtime Platform FPE64 ARMRuntime Trace Uart
  68. Machine Heaps Modules Objects Kernel
  69. Test
  70. ~
  71. KernelLog Streams Commands Reals Clock Dates Strings Pipes Files Shell
  72. Options Plugins
  73. ActiveTimers
  74. Network XEmac IP TCP IPv4 IPv6 ICMP StaticInterface
  75. BitSets StringPool ObjectFile Diagnostics GenericLinker GenericLoader
  76. CRC ProcessInfo0 Reflection ProcessInfo SystemVersion SystemTools
  77. UTF8Strings DynamicStrings XML XMLObjects XMLScanner XMLParser
  78. UDP DNS Locks SambaClient SambaController
  79. UsbDebug Usbdi UsbHcdi UsbEhci UsbEhciZynq
  80. UsbDriverLoader UsbUtilities Usb UsbHubDriver UsbHid UsbInfo
  81. Disks UsbStorageBase UsbStorageCbi UsbStorageBot UsbStorageScm UsbStorage
  82. DriverDatabase
  83. ShellController
  84. ~
  85. UNzip Archives Inflate DiskVolumes Localization UTF8Strings FP1616 DynamicStrings Codecs Repositories Configuration Raster WMRectangles WMRasterScale UnicodeProperties Caches FATscavenger FATVolumes FATFiles Texts TextUtilities WMGraphics WMEvents OldDiskVolumes CLUTs Displays DisplayNull SoundDevices XML XMLScanner XMLParser XMLObjects ISO9660Volumes Partitions PartitionsLib
  86. UTF8Strings DynamicStrings XMLObjects XML XMLScanner XMLParser Configuration
  87. Options Plugins DiskFS FSTools RAMVolumes RamFsController
  88. ActiveTimers
  89. Network XEmac IP TCP IPv4 IPv6 ICMP StaticInterface
  90. BitSets StringPool ObjectFile Diagnostics GenericLinker GenericLoader
  91. CRC ProcessInfo0 Reflection ProcessInfo SystemVersion SystemTools
  92. UDP DNS Locks SambaClient SambaController
  93. ShellController
  94. ~
  95. ActiveTimers
  96. Network XEmac IP TCP IPv4 IPv6 ICMP StaticInterface
  97. TCPServices WebFTPServer
  98. BitSets StringPool ObjectFile Diagnostics GenericLinker GenericLoader
  99. CRC ProcessInfo0 Reflection ProcessInfo SystemVersion SystemTools
  100. ShellController
  101. ~
  102. V24.Scan
  103. WMV24Component.Open 15 115200 8 1 none ~
  104. /!\ NOTE that the Initializer module, which provides processor and chip initialization is linked before Runtime.
  105. The reason for that is that Initializer does some sensitive operations, like setting up a stack, that do not mix
  106. well with the automatic inclusion of a call to Runtime.Publish. Therefore Runtime IMPORTS Initializer.
  107. Moreover, the TCL initialization and interrupt vectors form a second, smaller executable for the Zynq/ZedBoard platforms,
  108. as the main image is loaded in external memory. You can generate it as follows:
  109. Compiler.Compile -b=ARM --metaData=simple
  110. basel/ARM.A2/Initializer.TCL.Zynq.Mod
  111. ~
  112. StaticLinker.Link --fileName=Init.Bin --displacement=0H -sa
  113. ZynqInitializer
  114. ~
  115. FoxARMInstructionSet.Disassemble Test.Bin -a=118F00H ~
  116. FoxARMInstructionSet.Disassemble Test.Bin ~
  117. Test.Log
  118. FoxARMInstructionSet.Disassemble ARMRuntime.Gof ~
  119. FoxARMInstructionSet.Disassemble Init.Bin ~
  120. SystemTools.FreeDownTo FoxARMInstructionSet ~
  121. FoxARMInstructionSet.Disassemble Initializer.Gof ~