Forums › Devices › OSD335x-SM › Custom board, first boot – UART0 baudrate 'off'?
Hello,
we started bringing up our custom board (OSD3358-SM, similar design as PocketBeagle, plus eMMC).
We confirmed DC voltages first, which I think look good:
1 2 3 4 5 6 7 | VIN_AC 5.110V VDDS_DDR 1.525V VDD_CORE 1.117V VDD_MPU 1.112V VDDS_PLL 1.822V PMIC_PGOOD 1.821V WARMRSTN 3.235V |
We then connected a serial terminal (115200 baud, 8N1) to UART0 (no uSD present, SYSBOOT[4..0]=11100) and periodically receive the character ‘Á’ (expectation: character ‘C’). The same serial setup gives the expected result (‘C’) on the PocketBeagle board.
Then we tried booting our board with a uSD card with the EEPROM board ID u-boot patch applied according to post 4733.
The result is lots of garbage on the serial terminal.
I then checked the serial signal on the oscilloscope. The voltage level looks good (3.3V), but the bit length is 7us, which means a baud rate of about 140900.
I set the serial terminal manually to 140900 baud and indeed see regular console output. I copy the boot console output below, but I don’t think that this is related to the image, since now (at 140900 baud) also the character ‘C’ appears as expected when starting up without Linux image.
The serial circuit is straight from balls A12, B12 to the FTDI board, so not much that can go wrong here…
What can cause the baud rate to be off like this?
Thanks,
Dusty.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | U-Boot SPL 2018.03-dirty (Jun 26 2018 - 12:35:27 -0400) Trying to boot from MMC1 Loading Environment from EXT4... ** File not found /boot/uboot.env ** ** Unable to read "/boot/uboot.env" from mmc0:1 ** Failed (-5) U-Boot 2018.03-dirty (Jun 26 2018 - 12:09:00 -0400) CPU : AM335X-GP rev 2.1 I2C: ready DRAM: 512 MiB No match for driver 'omap_hsmmc' No match for driver 'omap_hsmmc' Some drivers were not found Reset Source: Power-on reset has occurred. RTC 32KCLK Source: External. MMC: OMAP SD/MMC: 0, OMAP SD/MMC: 1 Loading Environment from EXT4... ** File not found /boot/uboot.env ** ** Unable to read "/boot/uboot.env" from mmc0:1 ** Failed (-5) not set. Validating first E-fuse MAC BeagleBone: cape eeprom: i2c_probe: 0x54: BeagleBone: cape eeprom: i2c_probe: 0x55: BeagleBone: cape eeprom: i2c_probe: 0x56: BeagleBone: cape eeprom: i2c_probe: 0x57: Net: eth0: RGMII MODE Could not get PHY for cpsw: addr 0 cpsw, usb_ether Press SPACE to abort autoboot in 2 seconds board_name=[A335BLNK] ... switch to partitions #0, OK mmc0 is current device SD/MMC found on device 0 ** Bad device 0:2 0x82000000 ** ** Bad device 0:2 0x82000000 ** switch to partitions #0, OK mmc0 is current device Scanning mmc 0:1... gpio: pin 56 (gpio 56) value is 0 gpio: pin 55 (gpio 55) value is 0 gpio: pin 54 (gpio 54) value is 0 gpio: pin 53 (gpio 53) value is 1 switch to partitions #0, OK mmc0 is current device gpio: pin 54 (gpio 54) value is 1 Checking for: /uEnv.txt ... Checking for: /boot.scr ... Checking for: /boot/boot.scr ... Checking for: /boot/uEnv.txt ... gpio: pin 55 (gpio 55) value is 1 2086 bytes read in 40 ms (50.8 KiB/s) Loaded environment from /boot/uEnv.txt Checking if uname_r is set in /boot/uEnv.txt... gpio: pin 56 (gpio 56) value is 1 Running uname_boot ... loading /boot/vmlinuz-4.14.49-ti-r54 ... 10453504 bytes read in 617 ms (16.2 MiB/s) unable to find [dtb=am335x-boneblack-emmc-overlay.dtb] did you name it correctly? ... FAILSAFE: U-Boot UMS (USB Mass Storage) enabled, media now available over the usb slave port ... Unknown command 'ums' - try 'help' uboot_overlays: [fdt_buffer=0x60000] ... (...) |
Dusty,
2 things here:
1. Please verify that the crystal clock input is 24MHz using an oscilloscope. You can probe OSC0_IN(P16) or OSC0_OUT(N16)
2. Please verify the SYSBOOT configuration on SYSBOOT[15:14]. These 2 most significant bits in the SYSBOOT pins set the clock speed configuration. So, a mismatch between the configuration here on the SYSBOOT pins and the clock input on OSC0_IN can cause a different clock to be set on the UART interface which by default is at 115200 setting. SYSBOOT[15] (MSB) should be pulled down and SYSBOOT[14] should be pulled high for the 24MHz setting. Please see ‘Table 26-7. SYSBOOT Configuration Pins’ in AM335x Technical Reference Manual (https://www.ti.com/lit/ug/spruh73p/spruh73p.pdf) for SYSBOOT configuration options.
Neeraj
Thank you Neeraj.
1) Both OSC0 pins show a nice 24MHz signal. The p-p voltage on OSC0_OUT is about 800mV, on OSC0_IN about 50mV. We’re using the 7A-24.000MAAJ-T crystal.
2) SYSBOOT[15] is pulled down with 100k, and SYSBOOT[14] is pulled up with 100k.
And by checking this I probably just answered my question…:
SYSBOOT pins [15] and [14] (as well as SYSBOOT[11..8]) are also connected to other hardware as GPIO (or rather MII0_PRU), due to the lack of other pinmux options. The plan was to hold that other chip in reset with a pulldown on it’s reset# line, until the OSD3358-SM actively takes it out of reset by setting this GPIO output to high after booting.
I guess the other chip still pulls SYSBOOT[14] too far down, although held in reset. SYSBOOT[15] shows 2.1mV (OK) and SYSBOOT[14] has 648mV (not OK).
I looked into buffer / line driver options to isolate the external signal during boot when designing the board, but ‘hoped’ the reset trick will work without further hardware.
Do you have any (proven) recommendations for this issue?
Thanks again,
Dusty.
Dusty,
Apart from isolation, you could try having a stronger pull up on SYSBOOT[14]. Looks like a 10K instead of the 100k pull up would push the pin over the digital threshold. However, you will need to make sure that the stronger pull up does not cause any timing issues on the communication signal on the pin and you would have to live with the additional power dissipation on the pin.
Neeraj
Thanks Neeraj,
the 10k pull up helped to recognize the correct SYSBOOT bits and the system boots with 115200 baud.
The next steps will tell if the stronger pull up messes with the external signal after boot. If that’s the case (or maybe anyway), we’ll add buffers for the shared signals on the next board spin…
Dusty.
Octavo Systems LLC all rights reserved
OCTAVO is registered in the U.S. Patent and Trademark Office. OSD, C-SiP, and the Octavo Logo are trademarks of Octavo Systems LLC.
"*" indicates required fields
"*" indicates required fields
"*" indicates required fields
"*" indicates required fields