This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

reading AM3703 register

Other Parts Discussed in Thread: AM3703

Team,

Customer is trying to read the AM3703 register 0x4800244C.  This should be the chip identification register.  Expecting something on the line of 0x5C00 or 0x5E00.  Getting out 0x00 instead.  When reading another of the ID registers, the control ID register (0x4830A204) is getting the expected results from the technical reference manual. 

 

Thanks,
Mike

  • Hi Michael,

    What is the silicon revision and package marking of the processor?
  • AM3703CUSA

    18ZC2H9

    173   CUS   G1

  • I will ask the factory team to comment.
  • I don't see that address as a valid register address in the TRM.  What is the register name you are trying to access?

    Regards,

    james

  • I think he is referring to Table 1-6 in the AM35X/37X TRM Rev. R. "Control Device Status Register 15:0 (Address 0x4800 244C)" is mentioned at the bottom of this table.

  • Yes. Its Control Device Status Register  Its referenced section 1.5.2.  In version R of the Technical Reference Manual, it is page 198.

  • Team,

    Do we have an update on this for the customer?

    Thanks,
    Mike

  • Michael, this is strange as that register should be a no-brainer read to identify the features of the device. The register is defined by e-fuses, so its possible that these fuses weren't blown correctly. I've seen this on pre-production devices, but it should not happen on production devices.
    I've got some questions:

    Do you see this problem across multiple devices?
    Can you read anything in 0x48002xxx range? You should be able to read/write the pad config registers in that range.
    Is the device going thru any sort of initialization or bootloader, or are you just powering up and reading thru JTAG?

    regards,
    James
  • James,


    Thanks for the detailed response. Customer
    swapped out the board with a different one.  They are still seeing  a read of 0 on register 0x48002442 on the new board.

     

    They haven’t done any significant poking in the 0x48002xxx range, but can read the temperature in the CONTROL_TEMP_SENSOR register at 0x48002524.

     

    They are using a bootloader and OS.  It is running Green Hills INTEGRITY.  Seeing the output on a RS-232 port and via breakpoints in the debugger after the OS has left kernel space.

     

    Hope this feedback helps. Please advise.


    Thanks,
    Mike

  • Is there any way they can run without the OS? Connect with debugger and do some bare metal init like is done with CCS GEL files? I just want to eliminate any possibility that the s/w is somehow blocking access to that register with firewalls or something similar. If it still reads 0x0, then unfortunately it is most likely an issue at production where the efuses weren't blown correctly.

    Regards,
    James
  • James,


    Thanks. If it’s a production fault, than we are assuming that the AM4703’s they are working with came from the same lot?  All are populated on custom boards in case that makes any potential difference.

    No access to CCS or a CCS supported pod.  The current design being worked with only uses the GHS compiler and pod. Impression of this processor was that it could not run bare metal. 

    Am directing customer here to follow up for further instructions. Please provide info on accessing device outside of OS via CCS or some other IDE.

    -Mike

  • Hello,


    How should we proceed with this?


    Ed

  • Ed, can you clarify if it is possible to connect any kind of debugger through JTAG? I'm not familiar with the Green Hills tools. Can you use those to do things like set breakpoints and read memory, or do you just build code with them? I assume up to this point you have just been reading raw registers through a console prompt thru a serial port.

    Regards,
    James
  • James,

    I am connecting to the board with a debugger over JTAG with, for the most part, full breakpoint debug capability.  Its just when I enter the kernel space, I lose the breakpoint capability.

    In the kernel space, I've built a pointer to the registers address, like I've done to others, such as the CONTROL_CONTROL_ID register.  Once the call exits kernel space, I printf the results to a console port or inspect them in the debugger. 

    Ed

  • OK, so can you breakpoint well before getting into the kernel. The ROM should be initially downloading code to internal RAM, so you can set a breakpoint in there, or even somewhere in your initial bootloader. Basically somewhere before all the MMU and virtual memory gets setup for the OS. Then take a look at the chip ID register.
    If it is still reading zero, then it may be a production issue as discussed earlier, and you would need to return the unit through TI's Quality Tracking System . It is possible that if it is number of units showing this problem, it may be a problem with a single lot of devices.

    Regards,
    James