Embedded hardware often contains an application processor and one or more additional processors attached to the printed circuit board. The firmware that resides on the adjacent processor(s) responds to a series of processor specific instructions.
High-volume, parallel testing of firmware can be achieved using function-like macros and arrays of function pointers, where function name lookup occurs in constant time. A fast scanner written in C using a finite automata in conjunction with a parser, also written in C, can be used for reading tests based on a custom context-free grammar. Dynamic arrays of function pointers can then be allocated at run-time and code within external object files or libraries can be executed in parallel using multiple processes or threads.
I wrote the following C code which is based on prior client work. The code uses arrays of function pointers for executing functions via their addresses.
https://github.com/brhinton/bcn
-----BEGIN PGP SIGNATURE----- iKkFABYKACkiIQXqqIvKb3w2I2gRpj+1e031vEXDfQTg+bTVZYLUx0jyBwUCY7M2 VAAArzMBxjGvmc97GYSHGpvO+hGBq+7JFg1bJJ5Rpu0DHIe9SWKzz7+DEhOJh5Ry DWdwV4gj9CI+IvGlkPeKgAHItNfeOL/rxG+PTfNPAEVn7qhhxBUmgFS2rHn3N4Lt aVhcl3+JjJP80hQCwTpNp8+LF2q8W6MjaA4A =bRZq -----END PGP SIGNATURE----- -----BEGIN PGP PUBLIC KEY BLOCK----- mEkFY65sghYAAAA/AytlcQHIqb41CJquBabOSLFttYTaBSPWPXAYsptm3CYX4F// 7ge6GdeVESRK9BfhzxrCjvLMW/K+5vBl7ycAtDJCcnlhbiBSLiBIaW50b24gPGNv bXB1dGVycHJvZ3JhbW1lcjE5NzZAZ21haWwuY29tPojGBRMWCgBGIiEF6qiLym98 NiNoEaY/tXtN9bxFw30E4Pm01WWC1MdI8gcFAmOubIICGwMFCwkIBwICIgIGFQoJ CAsCAxYCAQIeBwIXgAAArUwByNZk9YwXDDg6IgGGVGbiPiJa5ptTqb/stPCR0wdK czDfcF1fqJib6qUDWC7cJycRTJcjjMHVTToMgAHDBDBvwDdd7IIczspl//5yTlPP 0dYuGLL0IvJXRF2MMx+AjiMRY5vdpN28D+gxP0FXq2Pl4ui0mh4AuEwFY65sghIA AABCAytlbwG/Ut7euPNKzPiH/UV5OkHQLah/fOnOtx84g52fBXRMP9Zj+SSxuyar Zifwf1NvKMXXsHo9tFCi9vwDAQoJiKwFGBYKACwiIQXqqIvKb3w2I2gRpj+1e031 vEXDfQTg+bTVZYLUx0jyBwUCY65sggIbDAAAhwEBx2Smtwx2nvS1/4wS1cBKJ7He EUAMIJT4zjyi6sgdsa4A18pGy4cosu2uH8k/T/wYKbpsG/Rs3GNtgAHHSfVJIMtn ReWRQ7/L/x5RIpYU+PWeBVI8B07HJlzfjWeUYoQbCyDNl1EcVQDBWmvwmeL/jIkv 7jcA =KGqN -----END PGP PUBLIC KEY BLOCK-----
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.