We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Hi
My µC is C8051F122.
In µVision2 (version V2.40a and C51 V7.50) i create 2 Lib files. One for code bank 1 and one for the common bank.
These .lib files are linked into a project in Silicon Laboratories IDE. During to the .M51 file the code is located correct in the selected code bank.
I use BL51 linker and with OC51+OH51 i generate .H1, .H2 and .H3 files. Is there any way to create a single hex file instead? According to the Keil homepage it can be done by using HEX2BIN + BIN2HEX. Here i get an error (unable to open hexfile). The file name is 1 character in length.
Then i tried to use the LX51 linker instead, but then i get the following error: L204 invalid keyword, POS 606 in one of the .lib files. When the error message appear a character in path is missing (please note that the path is identical to the one used when BL51 linker is used)
Any one with any ideas to creat either a single hex file from the 3 hex files, or how to get rid of the L204 error message when using LX51 linker?
> Is there any way to create a single hex file instead?
You can make a single HEX file all in one, but SiLabs FLASH utility doesn't accept it.
> One for code bank 1 and one for the common bank.
Then, you don't need to split it into code banks :-) Monolithic 64 Kbytes code space serves for the entire code, without any overhead to access to banked code.
Tsuneo
Actually the i manged to create a single Hex file. Data is located in bank 2 and 3 as well. Common and bank 1 holds the LIB files only.
My hex file contains the common area multiple times, but this will be no problem since I just ignore these except from one of course.
What is the purpose for you to make the HEX file? Isn't it burning it to SiLabs 'F122 ?
I once posted a related topic on SiLabs forum, www.cygnal.org/.../000735.html
Here is updated version (for USB debug adapter)
0) Apply BL51 linker - SiLabs IDE doesn't fully recognize object generated by LX51
1) OC51 - Convert original banked omf file into separated object files of each bank
> OC51 mycode.omf
mycode.B01, mycode.B02, mycode.B03 are generated.
2) OH51 - Convert each separated object file to HEX file
> OH51 mycode.B01 HEX (mycode_B01.hex) > OH51 mycode.B02 HEX (mycode_B02.hex) > OH51 mycode.B03 HEX (mycode_B03.hex)
3) SRecord - Split banked code area from common code
For Bank 2 and 3 > srec_cat mycode_B02.hex -intel -crop 0x8000 0x0000 -o mycode_B02_b.hex -intel > srec_cat mycode_B03.hex -intel -crop 0x8000 0x0000 -o mycode_B03_b.hex -intel
4) FlashUtilCl - Write them to the FLASH
> FLASHUtilCL downloadusb -E mycode_B01.hex "" 0 0 > FLASHUtilCL downloadusb -B2 mycode_B02_b.hex "" 0 0 > FLASHUtilCL downloadusb -B3 mycode_B03_b.hex "" 0 0
SRecord srecord.sourceforge.net/
Hey
I need the hex file for the bootloader.
By using HEX2BIN and BIN2HEX i have my hex file organised as:
0x00000-0x07FFF Common 0x08000-0x0FFFF Bank 1 0x10000-0x17FFF Common 0x18000-0x1FFFF Bank 2 0x20000-0x27FFF Common 0x28000-0x2FFFF Bank 3
I just will skip the 2nd and 3rd common area in the hex file