1) У Luminary/TI Stellaris подобное было реализовано. Там HAL сидит в ПЗУ и пользовательская прошивка его вызывает. https://github.com/yuvadm/stellaris/blob/master/driverlib/rom.h 2) Как вариант - повесить функции HAL на SVC.
Не надо делать мне как лучше, оставьте мне как хорошо