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?

Parents
  • Thank you. You are right in a sense. I did redefined the pins for the SMBus in the application and when I was debugging they were showing properly defined. However, in the bootloader they were not defined and bootloader left the crossbar on. So my guess is when I was trying to redefine those pins in the application the changes would not take affect but they would be displayed as if the changes already took affect in the debugger.

Reply
  • Thank you. You are right in a sense. I did redefined the pins for the SMBus in the application and when I was debugging they were showing properly defined. However, in the bootloader they were not defined and bootloader left the crossbar on. So my guess is when I was trying to redefine those pins in the application the changes would not take affect but they would be displayed as if the changes already took affect in the debugger.

Children
No data