When an example is brought into the IDE from Simplicity Studio > Software Examples, the standard SILABS_STARTUP.A51 startup file is automatically added to your project.
The standard startup file works for all software examples except the bootloader, because the bootloader source contains a customized startup file, boot_startup.asm.
The solution is to delete SILABS_STARTUP.A51 (right click the file > Delete) and rebuild.
Knowledge Base Articles
8-bit MCUs
I am having the same compile issues with bootloader example. I don't have SILABS_STARTUP.A51 in my bootloaded example but still getting the compile errors. See below for compile errors.
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT SEGMENT: ?PR?DOERASEWRITECMD?MAIN
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT SEGMENT: ?PR?DOVERIFYCMD?MAIN
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT SEGMENT: ?PR?MAIN?MAIN
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT SEGMENT: ?PR?_FLASH_READBYTE?FLASH
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT SEGMENT: ?PR?_WRITEBYTE?FLASH
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT SEGMENT: ?PR?_FLASH_ERASEPAGE?FLASH
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT SEGMENT: ?PR?_FLASH_WRITEBYTE?FLASH
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT SEGMENT: ?PR?_FLASH_ISVALIDRANGE?FLASH
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT SEGMENT: ?PR?_FLASH_UPDATECRC?FLASH
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT SEGMENT: ?PR?BOOT_INITDEVICE?BOOT_INIT
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT SEGMENT: ?PR?BOOT_NEXTRECORD?BOOT_USB0
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT SEGMENT: ?PR?BOOT_GETBYTE?BOOT_USB0
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT SEGMENT: ?PR?BOOT_GETWORD?BOOT_USB0
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT SEGMENT: ?PR?_BOOT_SENDREPLY?BOOT_USB0
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT SEGMENT: ?PR?BOOT_RUNAPP?BOOT_USB0
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT SEGMENT: ?PR?USB_INITMODULE?USB_MAIN
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT SEGMENT: ?PR?USB_SENDREPORT?USB_MAIN
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT SEGMENT: ?PR?USB_POLLMODULE?USB_MAIN
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT SEGMENT: ?PR?HANDLEUSBRESET?USB_MAIN
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT SEGMENT: ?PR?HANDLEUSBEP0?USB_MAIN
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT SEGMENT: ?PR?_USB_READINDIRECTREG?USB_MAIN
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT SEGMENT: ?PR?_USB_WRITEINDIRECTREG?USB_MAIN
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT SEGMENT: ?PR?_USB_WRITEADDRESSREG?USB_MAIN
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT SEGMENT: ?PR?USB_READDATAREG?USB_MAIN
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT SEGMENT: ?PR?READSETUPPACKET?USB_MAIN
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT SEGMENT: ?PR?WRITEREQUESTDATA?USB_MAIN
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT SEGMENT: ?PR?_READREPORTDATA?USB_MAIN
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT SEGMENT: ?PR?_WRITEREPORTDATA?USB_MAIN
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT SEGMENT: ?CO?USB_STD_REQUESTS
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT SEGMENT: ?PR?SENDONESPACKET?USB_STD_REQUESTS
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT SEGMENT: ?PR?SENDZEROPACKET?USB_STD_REQUESTS
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT SEGMENT: ?PR?GETSTATUS?USB_STD_REQUESTS
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT SEGMENT: ?PR?CLEARSETFEATURE?USB_STD_REQUESTS
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT SEGMENT: ?PR?SETADDRESS?USB_STD_REQUESTS
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT SEGMENT: ?PR?GETDESCRIPTOR?USB_STD_REQUESTS
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT SEGMENT: ?PR?GETCONFIGURATION?USB_STD_REQUESTS
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT SEGMENT: ?PR?SETCONFIGURATION?USB_STD_REQUESTS
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT SEGMENT: ?PR?GETINTERFACE?USB_STD_REQUESTS
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT SEGMENT: ?PR?USB_HANDLESTDREQUEST?USB_STD_REQUESTS
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT SEGMENT: ?CO?USB_DESCRIPTOR
Program Size: data=61.1 xdata=256 const=83 code=1341 LX51 RUN COMPLETE. 0 WARNING(S), 81 ERROR(S) make: *** [EFM8UB2_USB0_Bootloader.omf] Error 1
13:13:10 Build Finished (took 1s.252ms)
0
Hi,
I'm guessing you're building the bootloader for a 32KB flash UB2 variant. If so, you need to read AN945:
"By default, the imported project builds the SMBus bootloader for the EFM8LB12F64E_QFN32 device. To build for a different device, you must change the project properties to add the [EFM8LB1_DEVICE] symbol. This can be done by right-clicking the project in Simplicity Studio and selecting [Properties] from the pop-up menu. From there, navigate to [C/C++ General]>[Paths and Symbols] and select the [Symbols] tab. Then, add the [EFM8LB1_DEVICE] symbol settings the value to the desired device. The complete list of supported devices is in the SI_EFM8LB1_Devices.h header file. The following dialog shows how to configure to build for the [EFM8LB12F64E_QSOP24] device."
In my testing on EFM8UB20F32G_QFN32, I had to do some additional things not listed in the AN:
1. Under properties, remove UB2 STK from Boards
2. Change part to EFM8UB20F32G-A-QFN32
3. Add the following to C/C++ AND Assembler symbols:
EFM8UB2_DEVICE=EFM8UB20F32G_QFN32
4. Under Linker Miscellaneous, add the following to the end of Additional Flags:
There is a bug in Studio where it defines the wrong CLASSES directive. It defines an additional CODE and CONST name that shouldn't be defined for LX51 linker. I have reported this to our Studio team (reference: MCUAB-3390). Adding the line from #4 will override what Studio generates.
Don't forget to clean and rebuild and finally double check the .m51 file to make sure the segments are getting located properly. I was seeing it place them at 0xFBFE when I didn't add the #define for the assembler symbols.
Best regards,
Chris
0
Hi,
I'mtrying to compile the EFM8UB2_UART0_Bootloader project with the below result.
Can you help?
Thanks!
18:13:09 **** Incremental Build of configuration Keil 8051 v9.53 - Debug for project EFM8UB2_UART0_Bootloader ****
make all
...
Building file: ../src/boot_startup.asm
Invoking: Keil 8051 Assembler
A51 "@src/boot_startup.__ia" || test $? -lt 2
*** ERROR #A9 IN 574 (C:\Users\tobye\SimplicityStudio\v4_workspace\EFM8UB2_UART0_Bootloader\src\boot_startup.asm, LINE 21): SYNTAX ERROR
---- 589 RSEG ?BL_START
*** _____________________________________^
*** ERROR #A30 IN 589 (C:\Users\tobye\SimplicityStudio\v4_workspace\EFM8UB2_UART0_Bootloader\src\boot_startup.asm, LINE 36): SEGMENT SYMBOL EXPECTED
594 MOV DPTR,#00H
*** _____________________________^
*** ERROR #A37 IN 594 (C:\Users\tobye\SimplicityStudio\v4_workspace\EFM8UB2_UART0_Bootloader\src\boot_startup.asm, LINE 41): OPERATION INVALID IN THIS SEGMENT
595 CLR A
*** _____________________________^
*** ERROR #A37 IN 595 (C:\Users\tobye\SimplicityStudio\v4_workspace\EFM8UB2_UART0_Bootloader\src\boot_startup.asm, LINE 42): OPERATION INVALID IN THIS SEGMENT
596 MOVC A,@A+DPTR
*** _____________________________^
*** ERROR #A37 IN 596 (C:\Users\tobye\SimplicityStudio\v4_workspace\EFM8UB2_UART0_Bootloader\src\boot_startup.asm, LINE 43): OPERATION INVALID IN THIS SEGMENT
597 CPL A
*** _____________________________^
*** ERROR #A37 IN 597 (C:\Users\tobye\SimplicityStudio\v4_workspace\EFM8UB2_UART0_Bootloader\src\boot_startup.asm, LINE 44): OPERATION INVALID IN THIS SEGMENT
598 JZ boot_start
*** _____________________________^
*** ERROR #A37 IN 598 (C:\Users\tobye\SimplicityStudio\v4_workspace\EFM8UB2_UART0_Bootloader\src\boot_startup.asm, LINE 45): OPERATION INVALID IN THIS SEGMENT
601 MOV A,RSTSRC
*** _____________________________^
*** ERROR #A37 IN 601 (C:\Users\tobye\SimplicityStudio\v4_workspace\EFM8UB2_UART0_Bootloader\src\boot_startup.asm, LINE 48): OPERATION INVALID IN THIS SEGMENT
602 CJNE A,#010H,pin_test
*** _____________________________^
*** ERROR #A37 IN 602 (C:\Users\tobye\SimplicityStudio\v4_workspace\EFM8UB2_UART0_Bootloader\src\boot_startup.asm, LINE 49): OPERATION INVALID IN THIS SEGMENT
603 MOV A,R0
*** _____________________________^
*** ERROR #A37 IN 603 (C:\Users\tobye\SimplicityStudio\v4_workspace\EFM8UB2_UART0_Bootloader\src\boot_startup.asm, LINE 50): OPERATION INVALID IN THIS SEGMENT
604 XRL A,#0xA5
*** _____________________________^
*** ERROR #A37 IN 604 (C:\Users\tobye\SimplicityStudio\v4_workspace\EFM8UB2_UART0_Bootloader\src\boot_startup.asm, LINE 51): OPERATION INVALID IN THIS SEGMENT
605 JZ boot_start
*** _____________________________^
*** ERROR #A37 IN 605 (C:\Users\tobye\SimplicityStudio\v4_workspace\EFM8UB2_UART0_Bootloader\src\boot_startup.asm, LINE 52): OPERATION INVALID IN THIS SEGMENT
609 LJMP 00H
*** _____________________________^
*** ERROR #A37 IN 609 (C:\Users\tobye\SimplicityStudio\v4_workspace\EFM8UB2_UART0_Bootloader\src\boot_startup.asm, LINE 56): OPERATION INVALID IN THIS SEGMENT
613 ANL A,#03H ; A = RSTSRC
*** _____________________________^
*** ERROR #A37 IN 613 (C:\Users\tobye\SimplicityStudio\v4_workspace\EFM8UB2_UART0_Bootloader\src\boot_startup.asm, LINE 60): OPERATION INVALID IN THIS SEGMENT
614 JZ app_start ; POR or PINR only
*** _____________________________^
*** ERROR #A37 IN 614 (C:\Users\tobye\SimplicityStudio\v4_workspace\EFM8UB2_UART0_Bootloader\src\boot_startup.asm, LINE 61): OPERATION INVALID IN THIS SEGMENT
615 MOV R0,#((50 * 12 / 8) / 7)
*** _____________________________^
*** ERROR #A37 IN 615 (C:\Users\tobye\SimplicityStudio\v4_workspace\EFM8UB2_UART0_Bootloader\src\boot_startup.asm, LINE 62): OPERATION INVALID IN THIS SEGMENT
617 JB P3_B7,app_start ; +3
*** _____________________________^
*** ERROR #A37 IN 617 (C:\Users\tobye\SimplicityStudio\v4_workspace\EFM8UB2_UART0_Bootloader\src\boot_startup.asm, LINE 64): OPERATION INVALID IN THIS SEGMENT
618 DJNZ R0,?C0001 ; +4 = 7 cycles per loop
*** _____________________________^
*** ERROR #A37 IN 618 (C:\Users\tobye\SimplicityStudio\v4_workspace\EFM8UB2_UART0_Bootloader\src\boot_startup.asm, LINE 65): OPERATION INVALID IN THIS SEGMENT
622 MOV SP, #?BL_STACK-1
*** _____________________________^
*** ERROR #A37 IN 622 (C:\Users\tobye\SimplicityStudio\v4_workspace\EFM8UB2_UART0_Bootloader\src\boot_startup.asm, LINE 69): OPERATION INVALID IN THIS SEGMENT
623 LJMP ?C_START
*** _____________________________^
*** ERROR #A37 IN 623 (C:\Users\tobye\SimplicityStudio\v4_workspace\EFM8UB2_UART0_Bootloader\src\boot_startup.asm, LINE 70): OPERATION INVALID IN THIS SEGMENT
---- 626 RSEG ?BL_RSVD
*** _____________________________________^
*** ERROR #A30 IN 626 (C:\Users\tobye\SimplicityStudio\v4_workspace\EFM8UB2_UART0_Bootloader\src\boot_startup.asm, LINE 73): SEGMENT SYMBOL EXPECTED
628 DB 0x90
*** _____________________________^
*** ERROR #A37 IN 628 (C:\Users\tobye\SimplicityStudio\v4_workspace\EFM8UB2_UART0_Bootloader\src\boot_startup.asm, LINE 75): OPERATION INVALID IN THIS SEGMENT
630 DB 0xA5
*** _____________________________^
*** ERROR #A37 IN 630 (C:\Users\tobye\SimplicityStudio\v4_workspace\EFM8UB2_UART0_Bootloader\src\boot_startup.asm, LINE 77): OPERATION INVALID IN THIS SEGMENT
632 DB 0xFF
*** _____________________________^
*** ERROR #A37 IN 632 (C:\Users\tobye\SimplicityStudio\v4_workspace\EFM8UB2_UART0_Bootloader\src\boot_startup.asm, LINE 79): OPERATION INVALID IN THIS SEGMENT
EFM8 bootloader compile errors
I am having the same compile issues with bootloader example. I don't have SILABS_STARTUP.A51 in my bootloaded example but still getting the compile errors. See below for compile errors.
13:13:09 **** Incremental Build of configuration Keil 8051 v9.53 - Debug for project EFM8UB2_USB0_Bootloader ****
make all
PATH=/c/SiliconLabs/SimplicityStudio/v4/developer/toolchains/keil_8051/9.53/BIN:/c/SiliconLabs/SimplicityStudio/v4/support/8051:/bin:/c/SiliconLabs/SimplicityStudio/v4/features/com.silabs.external.java.windows.x86.feature_1.8.0.92/jre/bin/client:/c/SiliconLabs/SimplicityStudio/v4/features/com.silabs.external.java.windows.x86.feature_1.8.0.92/jre/bin:/c/SiliconLabs/SimplicityStudio/v4/features/com.silabs.external.java.windows.x86.feature_1.8.0.92/jre/lib/i386:/c/ProgramData/Oracle/Java/javapath:/c/WinAVR-20100110/bin:/c/WinAVR-20100110/utils/bin:/c/Program Files/Common Files/Microsoft Shared/Windows Live:/c/Program Files (x86)/Common Files/Microsoft Shared/Windows Live:/c/Windows/system32:/c/Windows:/c/Windows/System32/Wbem:/c/Windows/System32/WindowsPowerShell/v1.0/:/c/Program Files (x86)/Windows Live/Shared:/c/Program Files (x86)/QuickTime/QTSystem/:/c/Program Files/Intel/WiFi/bin/:/c/Program Files/Common Files/Intel/WirelessCommon/:/c/Program Files (x86)/IVI Foundation/VISA/WinNT/Bin/:/c/Program Files/IVI Foundation/VISA/Win64/Bin/:/c/Program Files (x86)/IVI Foundation/VISA/WinNT/Bin:/c/Program Files (x86)/Windows Kits/8.1/Windows Performance Toolkit/:/c/Program Files/Git/cmd:/c/Program Files (x86)/Bitvise SSH Client:/c/Program Files/Amazon/AWSCLI/:/c/Program Files/Intel/WiFi/bin/:/c/Program Files/Common Files/Intel/WirelessCommon/:/c/Program Files (x86)/Java/jre7/bin:/c/Program Files (x86)/Java/jre7/bin/client:/c/SiliconLabs/SimplicityStudio/v4
Building target: EFM8UB2_USB0_Bootloader.omf
Invoking: Keil 8051 Linker
LX51 "@EFM8UB2_USB0_Bootloader.lnp" || test $? -lt 2
LX51 LINKER/LOCATER V4.66.30.0 - SN: K1RLC-L03IRZ
COPYRIGHT ARM Germany GmbH 1995 - 2014
@EFM8UB2_USB0_Bootloader.lnp "./src/boot_startup.OBJ",
"./src/main.OBJ",
"./src/flash.OBJ",
"./src/boot_init.OBJ",
"./src/boot_USB0.OBJ",
"./src/USB_main.OBJ",
"./src/USB_std_requests.OBJ",
"./src/USB_descriptor.OBJ"
TO "EFM8UB2_USB0_BOOTLOADER.OMF.CRBUILD" REMOVEUNUSED PRINT(.\EFM8UB2_USB0_Bootloader.m51) PAGEWIDTH (120) PAGELENGTH (65) SEGMENTS(?BL_START, ?PR?_*BYTE?FLASH, ?BL_EXTRA, ?CO?*, ?PR?*) CLASSES( CODE(C:0x0 - C:0x7ffe), CONST(C:0x0 - C:0x7ffe), ECODE(C:0x0 - C:0x7ffe), HCONST(C:0x0 - C:0x7ffe), XDATA(X:0x0 - X:0x7ff), HDATA(X:0x0 - X:0x7ff))
*** ERROR L108: SEGMENT IN LOCATING CONTROL CANNOT BE ALLOCATED
SPACE: CODE
SEGMENT: ?PR?_FLASH_READBYTE?FLASH
LENGTH: 000008H
*** ERROR L108: SEGMENT IN LOCATING CONTROL CANNOT BE ALLOCATED
SPACE: CODE
SEGMENT: ?PR?_WRITEBYTE?FLASH
LENGTH: 000019H
*** ERROR L108: SEGMENT IN LOCATING CONTROL CANNOT BE ALLOCATED
SPACE: CODE
SEGMENT: ?PR?_FLASH_WRITEBYTE?FLASH
LENGTH: 000008H
*** ERROR L108: SEGMENT IN LOCATING CONTROL CANNOT BE ALLOCATED
SPACE: CONST
SEGMENT: ?CO?USB_STD_REQUESTS
LENGTH: 000004H
*** ERROR L108: SEGMENT IN LOCATING CONTROL CANNOT BE ALLOCATED
SPACE: CONST
SEGMENT: ?CO?USB_DESCRIPTOR
LENGTH: 00004FH
*** ERROR L108: SEGMENT IN LOCATING CONTROL CANNOT BE ALLOCATED
SPACE: CODE
SEGMENT: ?PR?DOERASEWRITECMD?MAIN
LENGTH: 000038H
*** ERROR L108: SEGMENT IN LOCATING CONTROL CANNOT BE ALLOCATED
SPACE: CODE
SEGMENT: ?PR?DOVERIFYCMD?MAIN
LENGTH: 000043H
*** ERROR L108: SEGMENT IN LOCATING CONTROL CANNOT BE ALLOCATED
SPACE: CODE
SEGMENT: ?PR?MAIN?MAIN
LENGTH: 000085H
*** ERROR L108: SEGMENT IN LOCATING CONTROL CANNOT BE ALLOCATED
SPACE: CODE
SEGMENT: ?PR?_FLASH_ERASEPAGE?FLASH
LENGTH: 000008H
*** ERROR L108: SEGMENT IN LOCATING CONTROL CANNOT BE ALLOCATED
SPACE: CODE
SEGMENT: ?PR?_FLASH_ISVALIDRANGE?FLASH
LENGTH: 000018H
*** ERROR L108: SEGMENT IN LOCATING CONTROL CANNOT BE ALLOCATED
SPACE: CODE
SEGMENT: ?PR?_FLASH_UPDATECRC?FLASH
LENGTH: 000022H
*** ERROR L108: SEGMENT IN LOCATING CONTROL CANNOT BE ALLOCATED
SPACE: CODE
SEGMENT: ?PR?BOOT_INITDEVICE?BOOT_INIT
LENGTH: 00000CH
*** ERROR L108: SEGMENT IN LOCATING CONTROL CANNOT BE ALLOCATED
SPACE: CODE
SEGMENT: ?PR?BOOT_NEXTRECORD?BOOT_USB0
LENGTH: 000011H
*** ERROR L108: SEGMENT IN LOCATING CONTROL CANNOT BE ALLOCATED
SPACE: CODE
SEGMENT: ?PR?BOOT_GETBYTE?BOOT_USB0
LENGTH: 00001CH
*** ERROR L108: SEGMENT IN LOCATING CONTROL CANNOT BE ALLOCATED
SPACE: CODE
SEGMENT: ?PR?BOOT_GETWORD?BOOT_USB0
LENGTH: 00000FH
*** ERROR L108: SEGMENT IN LOCATING CONTROL CANNOT BE ALLOCATED
SPACE: CODE
SEGMENT: ?PR?_BOOT_SENDREPLY?BOOT_USB0
LENGTH: 000012H
*** ERROR L108: SEGMENT IN LOCATING CONTROL CANNOT BE ALLOCATED
SPACE: CODE
SEGMENT: ?PR?BOOT_RUNAPP?BOOT_USB0
LENGTH: 000010H
*** ERROR L108: SEGMENT IN LOCATING CONTROL CANNOT BE ALLOCATED
SPACE: CODE
SEGMENT: ?PR?USB_INITMODULE?USB_MAIN
LENGTH: 00001DH
*** ERROR L108: SEGMENT IN LOCATING CONTROL CANNOT BE ALLOCATED
SPACE: CODE
SEGMENT: ?PR?USB_SENDREPORT?USB_MAIN
LENGTH: 00001CH
*** ERROR L108: SEGMENT IN LOCATING CONTROL CANNOT BE ALLOCATED
SPACE: CODE
SEGMENT: ?PR?USB_POLLMODULE?USB_MAIN
LENGTH: 000022H
*** ERROR L108: SEGMENT IN LOCATING CONTROL CANNOT BE ALLOCATED
SPACE: CODE
SEGMENT: ?PR?HANDLEUSBRESET?USB_MAIN
LENGTH: 00000DH
*** ERROR L108: SEGMENT IN LOCATING CONTROL CANNOT BE ALLOCATED
SPACE: CODE
SEGMENT: ?PR?HANDLEUSBEP0?USB_MAIN
LENGTH: 0000B6H
*** ERROR L108: SEGMENT IN LOCATING CONTROL CANNOT BE ALLOCATED
SPACE: CODE
SEGMENT: ?PR?_USB_READINDIRECTREG?USB_MAIN
LENGTH: 000012H
*** ERROR L108: SEGMENT IN LOCATING CONTROL CANNOT BE ALLOCATED
SPACE: CODE
SEGMENT: ?PR?_USB_WRITEINDIRECTREG?USB_MAIN
LENGTH: 00000AH
*** ERROR L108: SEGMENT IN LOCATING CONTROL CANNOT BE ALLOCATED
SPACE: CODE
SEGMENT: ?PR?_USB_WRITEADDRESSREG?USB_MAIN
LENGTH: 000008H
*** ERROR L108: SEGMENT IN LOCATING CONTROL CANNOT BE ALLOCATED
SPACE: CODE
SEGMENT: ?PR?USB_READDATAREG?USB_MAIN
LENGTH: 000008H
*** ERROR L108: SEGMENT IN LOCATING CONTROL CANNOT BE ALLOCATED
SPACE: CODE
SEGMENT: ?PR?READSETUPPACKET?USB_MAIN
LENGTH: 000026H
*** ERROR L108: SEGMENT IN LOCATING CONTROL CANNOT BE ALLOCATED
SPACE: CODE
SEGMENT: ?PR?WRITEREQUESTDATA?USB_MAIN
LENGTH: 000023H
*** ERROR L108: SEGMENT IN LOCATING CONTROL CANNOT BE ALLOCATED
SPACE: CODE
SEGMENT: ?PR?_READREPORTDATA?USB_MAIN
LENGTH: 000021H
*** ERROR L108: SEGMENT IN LOCATING CONTROL CANNOT BE ALLOCATED
SPACE: CODE
SEGMENT: ?PR?_WRITEREPORTDATA?USB_MAIN
LENGTH: 00001AH
*** ERROR L108: SEGMENT IN LOCATING CONTROL CANNOT BE ALLOCATED
SPACE: CODE
SEGMENT: ?PR?SENDONESPACKET?USB_STD_REQUESTS
LENGTH: 00000AH
*** ERROR L108: SEGMENT IN LOCATING CONTROL CANNOT BE ALLOCATED
SPACE: CODE
SEGMENT: ?PR?SENDZEROPACKET?USB_STD_REQUESTS
LENGTH: 00000AH
*** ERROR L108: SEGMENT IN LOCATING CONTROL CANNOT BE ALLOCATED
SPACE: CODE
SEGMENT: ?PR?GETSTATUS?USB_STD_REQUESTS
LENGTH: 000022H
*** ERROR L108: SEGMENT IN LOCATING CONTROL CANNOT BE ALLOCATED
SPACE: CODE
SEGMENT: ?PR?CLEARSETFEATURE?USB_STD_REQUESTS
LENGTH: 000036H
*** ERROR L108: SEGMENT IN LOCATING CONTROL CANNOT BE ALLOCATED
SPACE: CODE
SEGMENT: ?PR?SETADDRESS?USB_STD_REQUESTS
LENGTH: 00001EH
*** ERROR L108: SEGMENT IN LOCATING CONTROL CANNOT BE ALLOCATED
SPACE: CODE
SEGMENT: ?PR?GETDESCRIPTOR?USB_STD_REQUESTS
LENGTH: 00004FH
*** ERROR L108: SEGMENT IN LOCATING CONTROL CANNOT BE ALLOCATED
SPACE: CODE
SEGMENT: ?PR?GETCONFIGURATION?USB_STD_REQUESTS
LENGTH: 00000AH
*** ERROR L108: SEGMENT IN LOCATING CONTROL CANNOT BE ALLOCATED
SPACE: CODE
SEGMENT: ?PR?SETCONFIGURATION?USB_STD_REQUESTS
LENGTH: 000033H
*** ERROR L108: SEGMENT IN LOCATING CONTROL CANNOT BE ALLOCATED
SPACE: CODE
SEGMENT: ?PR?GETINTERFACE?USB_STD_REQUESTS
LENGTH: 000008H
*** ERROR L108: SEGMENT IN LOCATING CONTROL CANNOT BE ALLOCATED
SPACE: CODE
SEGMENT: ?PR?USB_HANDLESTDREQUEST?USB_STD_REQUESTS
LENGTH: 000050H
*** ERROR L121: IMPROPER FIXUP
MODULE: ./src/boot_startup.OBJ (BOOT_STARTUP)
SEGMENT: ?BL_START
OFFSET: 000024H
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT
SEGMENT: ?PR?DOERASEWRITECMD?MAIN
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT
SEGMENT: ?PR?DOVERIFYCMD?MAIN
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT
SEGMENT: ?PR?MAIN?MAIN
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT
SEGMENT: ?PR?_FLASH_READBYTE?FLASH
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT
SEGMENT: ?PR?_WRITEBYTE?FLASH
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT
SEGMENT: ?PR?_FLASH_ERASEPAGE?FLASH
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT
SEGMENT: ?PR?_FLASH_WRITEBYTE?FLASH
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT
SEGMENT: ?PR?_FLASH_ISVALIDRANGE?FLASH
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT
SEGMENT: ?PR?_FLASH_UPDATECRC?FLASH
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT
SEGMENT: ?PR?BOOT_INITDEVICE?BOOT_INIT
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT
SEGMENT: ?PR?BOOT_NEXTRECORD?BOOT_USB0
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT
SEGMENT: ?PR?BOOT_GETBYTE?BOOT_USB0
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT
SEGMENT: ?PR?BOOT_GETWORD?BOOT_USB0
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT
SEGMENT: ?PR?_BOOT_SENDREPLY?BOOT_USB0
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT
SEGMENT: ?PR?BOOT_RUNAPP?BOOT_USB0
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT
SEGMENT: ?PR?USB_INITMODULE?USB_MAIN
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT
SEGMENT: ?PR?USB_SENDREPORT?USB_MAIN
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT
SEGMENT: ?PR?USB_POLLMODULE?USB_MAIN
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT
SEGMENT: ?PR?HANDLEUSBRESET?USB_MAIN
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT
SEGMENT: ?PR?HANDLEUSBEP0?USB_MAIN
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT
SEGMENT: ?PR?_USB_READINDIRECTREG?USB_MAIN
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT
SEGMENT: ?PR?_USB_WRITEINDIRECTREG?USB_MAIN
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT
SEGMENT: ?PR?_USB_WRITEADDRESSREG?USB_MAIN
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT
SEGMENT: ?PR?USB_READDATAREG?USB_MAIN
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT
SEGMENT: ?PR?READSETUPPACKET?USB_MAIN
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT
SEGMENT: ?PR?WRITEREQUESTDATA?USB_MAIN
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT
SEGMENT: ?PR?_READREPORTDATA?USB_MAIN
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT
SEGMENT: ?PR?_WRITEREPORTDATA?USB_MAIN
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT
SEGMENT: ?CO?USB_STD_REQUESTS
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT
SEGMENT: ?PR?SENDONESPACKET?USB_STD_REQUESTS
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT
SEGMENT: ?PR?SENDZEROPACKET?USB_STD_REQUESTS
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT
SEGMENT: ?PR?GETSTATUS?USB_STD_REQUESTS
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT
SEGMENT: ?PR?CLEARSETFEATURE?USB_STD_REQUESTS
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT
SEGMENT: ?PR?SETADDRESS?USB_STD_REQUESTS
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT
SEGMENT: ?PR?GETDESCRIPTOR?USB_STD_REQUESTS
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT
SEGMENT: ?PR?GETCONFIGURATION?USB_STD_REQUESTS
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT
SEGMENT: ?PR?SETCONFIGURATION?USB_STD_REQUESTS
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT
SEGMENT: ?PR?GETINTERFACE?USB_STD_REQUESTS
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT
SEGMENT: ?PR?USB_HANDLESTDREQUEST?USB_STD_REQUESTS
*** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT
SEGMENT: ?CO?USB_DESCRIPTOR
Program Size: data=61.1 xdata=256 const=83 code=1341
LX51 RUN COMPLETE. 0 WARNING(S), 81 ERROR(S)
make: *** [EFM8UB2_USB0_Bootloader.omf] Error 1
13:13:10 Build Finished (took 1s.252ms)
Hi,
I'm guessing you're building the bootloader for a 32KB flash UB2 variant. If so, you need to read AN945:
"By default, the imported project builds the SMBus bootloader for the EFM8LB12F64E_QFN32 device. To build for a different device,
you must change the project properties to add the [EFM8LB1_DEVICE] symbol. This can be done by right-clicking the project in Simplicity
Studio and selecting [Properties] from the pop-up menu. From there, navigate to [C/C++ General]>[Paths and Symbols] and
select the [Symbols] tab. Then, add the [EFM8LB1_DEVICE] symbol settings the value to the desired device. The complete list of supported
devices is in the SI_EFM8LB1_Devices.h header file. The following dialog shows how to configure to build for the
[EFM8LB12F64E_QSOP24] device."
In my testing on EFM8UB20F32G_QFN32, I had to do some additional things not listed in the AN:
1. Under properties, remove UB2 STK from Boards
2. Change part to EFM8UB20F32G-A-QFN32
3. Add the following to C/C++ AND Assembler symbols:
EFM8UB2_DEVICE=EFM8UB20F32G_QFN32
4. Under Linker Miscellaneous, add the following to the end of Additional Flags:
CLASSES( ECODE(C:0x0 - C:0x7ffe), HCONST(C:0x0 - C:0x7ffe), XDATA(X:0x0 - X:0xfff), HDATA(X:0x0 - X:0xfff))
There is a bug in Studio where it defines the wrong CLASSES directive. It defines an additional CODE and CONST name that shouldn't be defined for LX51 linker. I have reported this to our Studio team (reference: MCUAB-3390). Adding the line from #4 will override what Studio generates.
Don't forget to clean and rebuild and finally double check the .m51 file to make sure the segments are getting located properly. I was seeing it place them at 0xFBFE when I didn't add the #define for the assembler symbols.
Best regards,
Chris
Hi,
I'mtrying to compile the EFM8UB2_UART0_Bootloader project with the below result.
Can you help?
Thanks!
18:13:09 **** Incremental Build of configuration Keil 8051 v9.53 - Debug for project EFM8UB2_UART0_Bootloader ****
make all
...
Building file: ../src/boot_startup.asm
Invoking: Keil 8051 Assembler
A51 "@src/boot_startup.__ia" || test $? -lt 2
A51 MACRO ASSEMBLER V8.02b - SN: K1RLC-004MPZ
COPYRIGHT KEIL ELEKTRONIK GmbH 1987 - 2008
"c:\SiliconLabs\SimplicityStudio\v4\developer\toolchains\keil_8051\9.53\BIN\A51.exe" "C:\Users\tobye\SimplicityStudio\v4_workspace\EFM8UB2_UART0_Bootloader\src\boot_startup.asm" ERRORPRINT SET (SMALL) DEBUG MACRO NOMOD51 INCDIR(C:\Users\tobye\SimplicityStudio\v4_workspace\EFM8UB2_UART0_Bootloader\inc;C:/SiliconLabs/SimplicityStudio/v4/developer/sdks/8051/v4.0.3//Device/shared/si8051base;C:/SiliconLabs/SimplicityStudio/v4/developer/sdks/8051/v4.0.3//Device/EFM8UB2/inc) PRINT(.\src\boot_startup.lst) COND SYMBOLS PAGEWIDTH (120) PAGELENGTH (65) OBJECT(.\src\boot_startup.OBJ)
MACRO ASSEMBLER A51 V8.02b
NO OBJECT MODULE REQUESTED
ASSEMBLER INVOKED BY: c:\SiliconLabs\SimplicityStudio\v4\developer\toolchains\keil_8051\9.53\BIN\A51.exe C:\Users\tobye\
SimplicityStudio\v4_workspace\EFM8UB2_UART0_Bootloader\src\boot_startup.asm ERRORPRINT SET(SMALL)
DEBUG MACRO NOMOD51 INCDIR(C:\Users\tobye\SimplicityStudio\v4_workspace\EFM8UB2_UART0_Bootloader\i
nc;C:/SiliconLabs/SimplicityStudio/v4/developer/sdks/8051/v4.0.3//Device/shared/si8051base;C:/Sili
conLabs/SimplicityStudio/v4/developer/sdks/8051/v4.0.3//Device/EFM8UB2/inc) PRINT(.\src\boot_start
up.lst) COND SYMBOLS PAGEWIDTH(120) PAGELENGTH(65) OBJECT(.\src\boot_startup.OBJ)
LOC OBJ LINE SOURCE
572 ?BL_EXTRA SEGMENT CODE AT (0xFC00 - (512 * 1))
*** __________________________________________________^
*** ERROR #A9 IN 572 (C:\Users\tobye\SimplicityStudio\v4_workspace\EFM8UB2_UART0_Bootloader\src\boot_startup.asm, LINE 19): SYNTAX ERROR
573 ?BL_START SEGMENT CODE AT (0xFC00 - 512)
*** __________________________________________________^
*** ERROR #A9 IN 573 (C:\Users\tobye\SimplicityStudio\v4_workspace\EFM8UB2_UART0_Bootloader\src\boot_startup.asm, LINE 20): SYNTAX ERROR
574 ?BL_RSVD SEGMENT CODE AT (0xFC00 - 1)-2
*** __________________________________________________^
*** ERROR #A9 IN 574 (C:\Users\tobye\SimplicityStudio\v4_workspace\EFM8UB2_UART0_Bootloader\src\boot_startup.asm, LINE 21): SYNTAX ERROR
---- 589 RSEG ?BL_START
*** _____________________________________^
*** ERROR #A30 IN 589 (C:\Users\tobye\SimplicityStudio\v4_workspace\EFM8UB2_UART0_Bootloader\src\boot_startup.asm, LINE 36): SEGMENT SYMBOL EXPECTED
594 MOV DPTR,#00H
*** _____________________________^
*** ERROR #A37 IN 594 (C:\Users\tobye\SimplicityStudio\v4_workspace\EFM8UB2_UART0_Bootloader\src\boot_startup.asm, LINE 41): OPERATION INVALID IN THIS SEGMENT
595 CLR A
*** _____________________________^
*** ERROR #A37 IN 595 (C:\Users\tobye\SimplicityStudio\v4_workspace\EFM8UB2_UART0_Bootloader\src\boot_startup.asm, LINE 42): OPERATION INVALID IN THIS SEGMENT
596 MOVC A,@A+DPTR
*** _____________________________^
*** ERROR #A37 IN 596 (C:\Users\tobye\SimplicityStudio\v4_workspace\EFM8UB2_UART0_Bootloader\src\boot_startup.asm, LINE 43): OPERATION INVALID IN THIS SEGMENT
597 CPL A
*** _____________________________^
*** ERROR #A37 IN 597 (C:\Users\tobye\SimplicityStudio\v4_workspace\EFM8UB2_UART0_Bootloader\src\boot_startup.asm, LINE 44): OPERATION INVALID IN THIS SEGMENT
598 JZ boot_start
*** _____________________________^
*** ERROR #A37 IN 598 (C:\Users\tobye\SimplicityStudio\v4_workspace\EFM8UB2_UART0_Bootloader\src\boot_startup.asm, LINE 45): OPERATION INVALID IN THIS SEGMENT
601 MOV A,RSTSRC
*** _____________________________^
*** ERROR #A37 IN 601 (C:\Users\tobye\SimplicityStudio\v4_workspace\EFM8UB2_UART0_Bootloader\src\boot_startup.asm, LINE 48): OPERATION INVALID IN THIS SEGMENT
602 CJNE A,#010H,pin_test
*** _____________________________^
*** ERROR #A37 IN 602 (C:\Users\tobye\SimplicityStudio\v4_workspace\EFM8UB2_UART0_Bootloader\src\boot_startup.asm, LINE 49): OPERATION INVALID IN THIS SEGMENT
603 MOV A,R0
*** _____________________________^
*** ERROR #A37 IN 603 (C:\Users\tobye\SimplicityStudio\v4_workspace\EFM8UB2_UART0_Bootloader\src\boot_startup.asm, LINE 50): OPERATION INVALID IN THIS SEGMENT
604 XRL A,#0xA5
*** _____________________________^
*** ERROR #A37 IN 604 (C:\Users\tobye\SimplicityStudio\v4_workspace\EFM8UB2_UART0_Bootloader\src\boot_startup.asm, LINE 51): OPERATION INVALID IN THIS SEGMENT
605 JZ boot_start
*** _____________________________^
*** ERROR #A37 IN 605 (C:\Users\tobye\SimplicityStudio\v4_workspace\EFM8UB2_UART0_Bootloader\src\boot_startup.asm, LINE 52): OPERATION INVALID IN THIS SEGMENT
609 LJMP 00H
*** _____________________________^
*** ERROR #A37 IN 609 (C:\Users\tobye\SimplicityStudio\v4_workspace\EFM8UB2_UART0_Bootloader\src\boot_startup.asm, LINE 56): OPERATION INVALID IN THIS SEGMENT
613 ANL A,#03H ; A = RSTSRC
*** _____________________________^
*** ERROR #A37 IN 613 (C:\Users\tobye\SimplicityStudio\v4_workspace\EFM8UB2_UART0_Bootloader\src\boot_startup.asm, LINE 60): OPERATION INVALID IN THIS SEGMENT
614 JZ app_start ; POR or PINR only
*** _____________________________^
*** ERROR #A37 IN 614 (C:\Users\tobye\SimplicityStudio\v4_workspace\EFM8UB2_UART0_Bootloader\src\boot_startup.asm, LINE 61): OPERATION INVALID IN THIS SEGMENT
615 MOV R0,#((50 * 12 / 8) / 7)
*** _____________________________^
*** ERROR #A37 IN 615 (C:\Users\tobye\SimplicityStudio\v4_workspace\EFM8UB2_UART0_Bootloader\src\boot_startup.asm, LINE 62): OPERATION INVALID IN THIS SEGMENT
617 JB P3_B7,app_start ; +3
*** _____________________________^
*** ERROR #A37 IN 617 (C:\Users\tobye\SimplicityStudio\v4_workspace\EFM8UB2_UART0_Bootloader\src\boot_startup.asm, LINE 64): OPERATION INVALID IN THIS SEGMENT
618 DJNZ R0,?C0001 ; +4 = 7 cycles per loop
*** _____________________________^
*** ERROR #A37 IN 618 (C:\Users\tobye\SimplicityStudio\v4_workspace\EFM8UB2_UART0_Bootloader\src\boot_startup.asm, LINE 65): OPERATION INVALID IN THIS SEGMENT
622 MOV SP, #?BL_STACK-1
*** _____________________________^
*** ERROR #A37 IN 622 (C:\Users\tobye\SimplicityStudio\v4_workspace\EFM8UB2_UART0_Bootloader\src\boot_startup.asm, LINE 69): OPERATION INVALID IN THIS SEGMENT
623 LJMP ?C_START
*** _____________________________^
*** ERROR #A37 IN 623 (C:\Users\tobye\SimplicityStudio\v4_workspace\EFM8UB2_UART0_Bootloader\src\boot_startup.asm, LINE 70): OPERATION INVALID IN THIS SEGMENT
---- 626 RSEG ?BL_RSVD
*** _____________________________________^
*** ERROR #A30 IN 626 (C:\Users\tobye\SimplicityStudio\v4_workspace\EFM8UB2_UART0_Bootloader\src\boot_startup.asm, LINE 73): SEGMENT SYMBOL EXPECTED
628 DB 0x90
*** _____________________________^
*** ERROR #A37 IN 628 (C:\Users\tobye\SimplicityStudio\v4_workspace\EFM8UB2_UART0_Bootloader\src\boot_startup.asm, LINE 75): OPERATION INVALID IN THIS SEGMENT
630 DB 0xA5
*** _____________________________^
*** ERROR #A37 IN 630 (C:\Users\tobye\SimplicityStudio\v4_workspace\EFM8UB2_UART0_Bootloader\src\boot_startup.asm, LINE 77): OPERATION INVALID IN THIS SEGMENT
632 DB 0xFF
*** _____________________________^
*** ERROR #A37 IN 632 (C:\Users\tobye\SimplicityStudio\v4_workspace\EFM8UB2_UART0_Bootloader\src\boot_startup.asm, LINE 79): OPERATION INVALID IN THIS SEGMENT
ASSEMBLY COMPLETE. 0 WARNING(S), 26 ERROR(S)
ASSEMBLY COMPLETE. 0 WARNING(S), 26 ERROR(S)
make: *** [src/boot_startup.OBJ] Error 1
18:13:10 Build Finished (took 883ms)