When I create a hex file for a C file the addresses are not in order. Is there an option in uVision to make sure they are in order? The addresses are fine when I use an assembly file.
Specifying Flash Fill Byte (I set it to 0xFF) in the Output section of Target Options helps with my C166 tools. Maybe it works with C51 as well?
There is no requirement that the HEX file records be in address order. Jon
The author did not state that the addresses should be in order. He specifically asked if there was such an option. Please answer the question.
" There is no requirement that the HEX file records be in address order." Except for some PROM burners. Erik PS the file can be sorted as follows: Use your favorite editor (mine is CodeWright) to cut the columns before the address and relocate them at the end of the line. Then put XXX in front of the last line. Then use DOS sort to sort the file. Use the editor to bring the characters back to the front and remove the xxx.
Beware of the record types (e.g. 02) that change the segment. In such a case, you can split the hex file into subfiles and sort the subfiles. Also, some programmers allow output to a file. In such a case, the output hex file is sorted.
There is no requirement that the HEX file records be in address order." Except for some PROM burners. Please name these brands we can all avoid buying one of them. Who wants a PROM burner that is not compatible with the Intel HEX File standard? :-) Jon
The author did not state that the addresses should be in order. He specifically asked if there was such an option. Please answer the question. OK - Here's the original question. When I create a hex file for a C file the addresses are not in order. Is there an option in uVision to make sure they are in order? The addresses are fine when I use an assembly file. There is no option in uVision2 that checks the contents of a HEX file to determine if the records are in order. Jon
TaskLink software for Data I/O Optima won't take the hex file that addresses are no in the order.
As Jon said, the Intel Hex format makes no requirement about the ordering of records. You might want to review this discussion: http://www.8052.com/forum/read.phtml?id=12160
If you want to sort a HEX file, take a look at the following knowledgebase article: http://www.keil.com/support/docs/1236.htm Jon
I just did a lottle research and found a cool utility called the HEX Workshop. You can download an evaluation version with a 30-day evaluation period. This program does a bunch of cool stuff. * It imports Intel HEX and Motorola S-Record Files * It exports Intel HEX-80, HEX-286, and HEX-386 files * It exports Motorols S-Record files * It creates BINARY files * It can create a C file with the data entered into an array. This is kinda cool if you create fonts for an LCD panel or other similar stuff. * Oh yeah, it sorts Intel HEX files, as well. Take a look at the following knowledgebase article for more info: http://www.keil.com/support/docs/2217.htm Jon
I have a HexSort Utility to sort Intel Hex files. It takes unsorted Hex File, Sorts and then saves with a new name. If anybudy need it. email me at roboconsystems@yahoo.com. Its 100% free and more user friendly than HexWorkshop.
Or a simple batch file containing:
sort /+4 %1 | sed -e "/:000000/h" -e "/:000000/d" -e "$G"
SRecord is another useful utility for manipulating flash/PROM programmer files in a variety of formats. See http://srecord.sourceforge.net
horse and cart. Is it not putting the cart before the horse to change a file that adhere to the standard in order to use equipment that does not adhere to the standard. If a "programmer" (in quotes, because calling it that is an insult to other devices with that name) can not handle .hex files that adhere to the standard, but do not go beyond, then the programmer should be fixed or trashed, not the file sorted. Every extra step you add to the process makes failure more likely. Erik