Updated Building External Apps (markdown)

Mark Thompson 2024-04-03 14:12:32 -05:00
parent dba9b7e536
commit a0c9699173

@ -17,7 +17,7 @@ Baseband modules for external apps are created exactly the same as baseband imag
The checksum used for external app image files is simply a uint32 sum of all 32-bit values in the image file, with the sign finally inverted such that the total (including checksum) will sum to 0 if it's a valid image. This simple checksum method is used for speed (CRC32 would be slower).
## make_spi_image.py
The make_spi_image python script creates the firmware ROM image by appending the baseband images and a simple checksum, and also checks to make sure there are no references to the "fake" memory address regions mentioned above where external apps were linked. The checksum algorithm is the same as used for external apps, above. A warning message similar to the one below may be displayed if data values are found in the firmware image that _might_ be an attempt to access a "fake" memory address region:
The make_spi_image python script creates the firmware ROM image by appending the baseband images and a simple checksum, and also checks to make sure there are no references to the "fake" memory address regions used for external apps mentioned above. The checksum algorithm is the same as used for external apps, above. A warning message similar to the one below may be displayed if data values are found in the firmware image that _might_ be an attempt to access a "fake" memory address region:
` WARNING: Possible external code address 0xadb96ef0 at offset 0xb24a4 in portapack-h1_h2-mayhem.bin`
@ -25,4 +25,4 @@ To determine if a warning message such as that above is real or a false positive
` ram_external_app_lcr(rwx) : org = 0xADB90000, len = 32k`
To determine if it's real or a false positive, edit this line of the external.ld file to change the LCR app's address to another range that is unused such as "org = 0xADFF0000" and rebuild firmware. IF the address in the warning message changes to the new address range, then firmware really is trying to access code or data within that external app. If the address in the warning message stays the same, then it's a false positive and can safely be ignored.
To determine if it's real or a false positive, edit this line of the external.ld file to change the LCR app's address to another range that is unused such as "org = 0xADFF0000" and rebuild firmware. IF the address in the warning message changes to the new address range, then firmware really is trying to access code or data within that external app. If the address in the warning message stays the same, then it's a false positive and can safely be ignored. (Future updates to the python script will hopefully eliminate the bogus warnings.)