what data is contained in the s19 header?
Any good document on the S-record format should explain what goes into the file. See the attached document.
Codewarrior puts into S0 header full path to and the name of generated *.abs file. Full path can be quite long, also it can be way longer than specified 20 chars of module name field, like specified here http://forums.freescale.com/freescale/attachments/freescale/16BITCOMM/7249/1/S_RECORD.TXT
S0 Record The type of record is 'S0' (0x5330). The address field is unused and will be filled with zeros (0x0000). The header information within the data field is divided into the following subfields. mname is char and is the module name. ver is char and is the version number. rev is char and is the revision number. description is char[0-36] and is a text comment.
Is there simple way to set S0 fields in Codewarrior (for HC12)? Burner doesn't seem to have commands for this. If it's not possible to set ver, rev and description, then maybe it's possible to configure something so that S0 record length is reduced to carry only *.abs file name, without full path?
Have you looked at the S12(X) Build Tools Utilities manual, specifically the chapter on the Burner Utility? It sounds like you have. I would attempt the following, in no particular order, based on my read of the burner commands:
1) Try using the LEN = x command to restrict the size of all S-Record lines to x bytes per line.
2) If your S-Record file has only, say, that one S0 line and the rest of the lines are S1, trying forcing the suppression of the S0 record by using RECORD = S1, which will have the burner only generate only S1 records.
3) Use HEADER = "Your string here" to encode version information.
I have not tried these myself, YMMV, the usual caveats apply.
Thank you very much, Tom
Somehow I treated "No Path is S0-Record" option like it would not put anything into S0. Burner -Ns=p option is what I wanted. Now to put some useful information into S0, I can change linker output file name tp something meaningful, and S0 length doesn't have to be too long. Thanks.
Regarding "header = "filename"" command. I think it has nothing to do with S0. When I use it, burner complains with this message B1000, couldnt open header file. Looks like header command should be uend to some some commands to S-records files burner hardware.
I am sorry, but I have to reopen this thread.
I have a similar situatoion. I will write a simple PC-side bootloader application that will communicate with something similar to the "AN2295 bootlader"
The application will know the prevoius version in my MCU and will then open the new S19 file to check its version. Therefore, I want to be able to set eith er ver, rev and/or description in the S19 throu CW. How can this be accomplished?
As far as I know you can:
1) put into S0 record application file name + full path . You may change application file name from default Project.abs to something more useful in linker settings.
2) put to S0 record application file name, no path
3) turn off S0 record generation
If you need something else, I think you should use some additional tools.
You could try changing application name to something like myproject_ver9.9.9.
*.abs file name extension at the end seems to be not necessary. Debugger is able to load elf file even without file name extension.
If you change application name, then please don't forget *.map file name also will change. You should probably replace Project.map in Linker Files with new_application_name.map. Maybe there's an option to specify map file name, I don't know.
Hi and thanks for your response!
I searched for "S0 record application" both on this forum and on google and did not find anything useful.
I could of course write a simple application of my own to modify the S0 line, but I thought there already was a tool for this.
I thought it's obvious (sorry if it wasn't) that CodeWarrior Burner application is that one which takes ELF file (*.abs) and generates S records from it.
You can tell burner to not generate S0 records or generate S0 records with or without full path to ELF file. Please inspect all available Burner options. Project standrard settings -> Burner for HC12 -> Options. You may check Configure S-Records. Then uncheck all "No Sx-Record" options. Check "No S0-Record" to suppress S0 record. Or check/uncheck "No Path in S0-Record" to enable/disable full path in S0 record.
Hope it is more clear now.
I also don't know application that would manipulate S0 record contents. It is not hard to write one though.
Since the current version/revision information needs to be stored in flash, for future reference, this data would already be available within the new S19 file, within a S1 record. Assuming this data is placed at a specific flash address, the required record can be easily determined from the address information within the record.
With careful placement and linking order, maybe this record can become one of the first S1 records received during the download process.
I think burner can be told to put some S1/S2 addresses first or next, and linking order could be any. For example to force 0x4010..0xFFFF first, 0x4000..0x400F next, *.bbl file could have something like this inside:
len=0xBFF0origin = 0x004010
destination = 0x4010
SENDBYTE 1 "%ABS_FILE%"
len=0x10origin = 0x004000
destination = 0x4000
Retrieving data ...