This post talks about checking whether a variable is CDEFINED or not using #error macro
We have a file test.c under the path _TARGETPLATROOT\SRC\DRIVERS\test\
When we build test folder it generates test.dll which is present in NK.bin and also the registry entries which corresponds to this DLL are also available in NK.bin.
We have defined some macros as given below in test.c file
#ifdef BSP_TEST
#define SHARED_GPIO GPIO_81
#else
#define SHARED_GPIO GPIO_51
#endif
BSP_TEST was set in <Platform>.bat file and corresponding CDEFINE was done in sources.cmn
Issue: When we load the driver the interface which is controlled test.dll found not working.
The following debug steps are identified to know what is causing the issue
Tools used for the identified steps
#error "BSP_TEST is not enabled"
#endif
We have a file test.c under the path _TARGETPLATROOT\SRC\DRIVERS\test\
When we build test folder it generates test.dll which is present in NK.bin and also the registry entries which corresponds to this DLL are also available in NK.bin.
We have defined some macros as given below in test.c file
#ifdef BSP_TEST
#define SHARED_GPIO GPIO_81
#else
#define SHARED_GPIO GPIO_51
#endif
BSP_TEST was set in <Platform>.bat file and corresponding CDEFINE was done in sources.cmn
Issue: When we load the driver the interface which is controlled test.dll found not working.
The following debug steps are identified to know what is causing the issue
- Check if the driver is present or not in Active Registry
- Enable messages in all the functions of the driver (Test.DLL) if the driver is unloading
- Print SHARED_GPIO macro value using RETAILMSG
Tools used for the identified steps
- For the first one we have used Remote Tools from Compact 7 and searched for the test.dll in HKLM\Active path
- Used RETAIL Messages in all the functions
- For the third I had come to know a useful macro that is #error
- Use the below code to check BSP_TEST is enabled or not
- Include the following lines of code in test.c
#error "BSP_TEST is not enabled"
#endif
- With this if by chance the driver is not able to see the CDEFINE for BSP_TEST your build fails and you need not check by booting the system with the NK.bin
- using #error while preliminary testing of the BSP will save significant amount of your time