Non-volatile memory 540 may be any suitable storage medium capable of permanent storage. Examples of non-volatile memory 540 can include flash memory, EEPROM, hard-disk drive memory, phase change memory, and 3D memory. As will be explained in further detail below, non-volatile memory 540 may store software used by system 500 and may also store software update packages received via port 528 or port 530. Non-volatile memory 540 may be a non-volatile memory that operates independently of any non-volatile storage contained within or associated with various processors of system 500. For example, both the system and safety processor may include their respective non-volatile memories and/or volatile memories that are separate and distinct from memory 540. For example, each processor and/or device operating within the hazard detection system may nm code from its own volatile and/or non-volatile memory when operating, and this code may be obtained from NVM 540. Volatile memory 550 may be any suitable volatile memory such as RAM, DRAM, or SDRAM.