embedded
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| embedded [2020/04/05 18:07] – jrseti | embedded [2020/04/05 18:57] (current) – [Tips] jrseti | ||
|---|---|---|---|
| Line 9: | Line 9: | ||
| - Power | - Power | ||
| - Processing power | - Processing power | ||
| + | |||
| + | =====Tips===== | ||
| + | |||
| + | On ARM Processors: | ||
| + | |||
| + | * Unordered List ItemGenerally local variables are allocated in registers. However if we take the address of a local variable, compiler will not allocate the variable to register. | ||
| + | * The compiler will never put the global variable into register. | ||
| + | * Try to ensure that small functions take four or fewer arguments. These will not use the stack for argument passing. It will copied into registers. | ||
| + | * If a function needs more than four arguments, try to ensure that it does a significant amount of work, so that the cost of passing the stacked arguments is outweighed. | ||
| + | * Pass pointers to structures instead of passing the structure itself. | ||
| + | * Put related arguments in a structure, and pass a pointer to the structure to functions. This will reduce the number of parameters and increase readability. | ||
| + | * Minimize the number of long long parameters, as these take two argument words. This also applies to doubles if software floating-point is enabled. | ||
| + | * Avoid functions with a parameter that is passed partially in a register and partially on the stack (split-argument). This is not handled efficiently by the current compilers: all register arguments are pushed on the stack. | ||
| + | * Avoid functions with a variable number of parameters. Varargs functions | ||
| + | |||
| + | On Arm there is the " | ||
| + | |||
| + | Example: | ||
| + | < | ||
| + | __pure int square(int x) | ||
| + | { return x * x; | ||
| + | } | ||
| + | </ | ||
| =====Integral Types====== | =====Integral Types====== | ||
| Line 134: | Line 157: | ||
| * Use fixed point when you can anticipate the range | * Use fixed point when you can anticipate the range | ||
| * Fixed point can be faster than float on processors without an FPU | * Fixed point can be faster than float on processors without an FPU | ||
| + | |||
| + | =====System Design = Elevator===== | ||
| + | |||
| + | Design an elevator. Think about it, there are some user controls and indicators that need to be implements, some sensors and auto controls, some for safety. | ||
| + | |||
| + | Process car calls | ||
| + | Process hall calls | ||
| + | Indicate direction | ||
| + | indicate current floor | ||
| + | |||
| + | Move and stop the car | ||
| + | Emergency brake | ||
| + | Open/close the door | ||
| + | |||
embedded.1586110025.txt.gz · Last modified: 2020/04/05 18:07 by jrseti