This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

SMBus is not working with the bootloader

We have a product based on Si1000 chip. Recently we needed to add SMB functionality. Everything works fine in debug mode. However when I add the bootloader into the mix SMB stops functioning.

The product has been in production for some time now and been operating with the bootloader. We use SMB to initialize a chip on the bus and after that it is not used. When I troubleshoot SMB in regular mode I can see SCL and SDA signals on the scope. However when I try to troubleshoot everything with boot loader object file loaded (through LOAD ... INCREMENTAL command) and main app relocated to C:0x0400 SCL and SDA lines stay high all the time. I verified and made sure that SMB Interrupt vector is relocated correctly. SMB interrupt triggers properly and it detects start condition but the SCL line always stays high.

Basically if I add
INTVECTOR(0x400) INTERVAL(3) to MISC CONTROLS of C51 and
C:0x0000-C:0x03FF,C:0xF400-C:0xFBFE to LX51 Locater RESERVE and
change startup.a51 line CSEG AT 0x0400 to CSEG AT 0
then do LOAD ../bootloader/TrackerBL INCREMENTAL when debug is started and

set a breakpoint at the SMB interupt routine - breakpoint captures the program but SCL stays high. If I remove everything and debug just the application by itself then SCL line goes low when it gets to the breakpoint, as it should.

Any ideas as to what can be causing this?