Yes, Checksum as such is not stored in memory. It is a part of Hex File. In the Hex file, 0x9030 0000 is used for storing checksum.
For e.g., :0200000490303A
0C3F being the checkusm.
Alternatively, in your code you can sum up all flash elements to compute the checksum.
To check program memory means you want to confirm whether the CRC of program Flash in hex file is same as CRC of p-flash after downloading/ flashing hex into controller.
In this way you are checking the physical memory is damaged or not.
Things you need to do is.
Write down your own routine to calculate CRC of p flash with an algorithm (CRC-16 or CRC-32).
Calculate CRC of hex file using srec tool using same algorithm (CRC-16 or CRC-32).
Append CRC at particular address in hex file. (You can place calculated CRC at unused p flash area )
Now at run time your own routine will calculate CRC of p flash. You should have added a logic to compare calcilated CRC with stored CRC.
Refer below link for reference.
Hex file CRC calculation using Srecord tool :