User Tools

Site Tools

Trace:

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
bare_metal [2015/11/29 18:34]
external edit
bare_metal [2016/11/12 15:17]
david_cary link to related pages.
Line 1: Line 1:
 ======What is 'Bare Metal'?​====== ======What is 'Bare Metal'?​======
  
-Your usual PC runs an operating system (OS). Often used OSs include //Linux//, //BSD//, //OS\_X//, //​Android//,​ //Windows// and many others. Main point of an OS is to cover hardware abstraction. As a result, an application no longer tells the hardware which bits to change to what, it simply tells the OS to write a file. Advantage of this is, the 'write to file' command is always the same for a given OS, no matter which hardware ​OS and application ​run on.+Your usual PC runs an operating system (OS). Often used OSs include //Linux//, //BSD//, //OS\_X//, //​Android//,​ //Windows// and many others. Main point of an OS is to cover hardware abstraction. As a result, an application no longer tells the hardware which bits to change to what, it simply tells the OS to write a file. Advantage of this is, the 'write to file' command is always the same for a given OS, no matter which hardware ​the application ​runs on.
  
 'Bare metal' means that there is no operating system, no standard library, no user management, much less a user privilege system. Whatever is done to hardware, the application does it directly (and has to know on how to do it). 'Bare metal' means that there is no operating system, no standard library, no user management, much less a user privilege system. Whatever is done to hardware, the application does it directly (and has to know on how to do it).
Line 23: Line 23:
  
 ======Strategies====== ======Strategies======
 +
 +People typically create a bare-metal application on a PC with a cross-compiler such as a [[compiler for arm]], and then transfer the executable to the target hardware using a bootloader such as the [[LPC1114 Bootloader]].
  
 Compilers usually support building for bare metal, but need additional parameters, like ''​--no-std-inc''​ and/or ''​--no-std-lib''​. Compilers usually support building for bare metal, but need additional parameters, like ''​--no-std-inc''​ and/or ''​--no-std-lib''​.
Line 29: Line 31:
  
 Precompiler-optimisations. It's a good idea to let the precompiler do one-time calculations as much as possible. Then only the result is stored in the binary, saving the calculation effort at runtime. [[Teacup Firmware]] uses this strategy a lot, making it about double as fast and half as big as compareable printing firmwares. Precompiler-optimisations. It's a good idea to let the precompiler do one-time calculations as much as possible. Then only the result is stored in the binary, saving the calculation effort at runtime. [[Teacup Firmware]] uses this strategy a lot, making it about double as fast and half as big as compareable printing firmwares.
 +
bare_metal.txt ยท Last modified: 2018/05/27 16:10 (external edit)