Tool/software: Linux
Hi,all
I am developing PRU UART communication with another externel device on AM5728 industrial development kit,but I have some problems.
(1)When I coding my pru program,there are different bwtween PRU include file and AM572x sitara processors technical reference manual.In AM572X_TRM the PRUSS_UART register PRUSS_UART_RBR_THR_REGISTERS should have one valid address field DATA[7:0].It have both read and write function so I should read and write data in same address.And in
ti-processor-sdk-linux-rt-am57xx-evm-03.02.00.05/example-applications/pru-icss-5.1.0/include/am572x_2_0/pru_uart.h,there have not the PRUSS_UART_RBR_THR_REGISTERS,oppositely,there is a PRU_UART_RBR_TBR register and it have two valid adderss fields RBR_DATA[7:0] and TBR_DATA[17:8].When I debug my code using CCS,there is only one valid adderss filed DATA[7:0] of PRUSS_UART_RBR_THR_REGISTERS in register debug window.
So what did I do wrong? why are they different?
(2)According to the AM572X IDK EVM Hardware User's Guide,there have AM57XX_PR1_UART0_TXD and AM57XX_PRU1_UART0_RXD signal on the expansion connector-J21 #45 pin and #47 pin.When I connect these two pin to another device tx and rx pin respectively and run my pru program,I can write data from pru regularly but I can not read any data.So I use oscilloscope to analy the error.The electrical level change between 0 and 3.3V regularly when I write data from PRU.But when I read data the electrical level is pulled up and changed between 2V and 3.3V.I also find out AM57XX_PRU1_UART0_RXD have signal same as TXD but lag when I write data from PRU to another device.I think I use wrong configuration on pinmux and I edit ti-processor-sdk-linux-rt-am57xx-evm-03.02.00.05/board-support/u-boot-2016.05+gitAUTOINC+6c5519b6fc-g6c5519b6fc/board/ti/am57xx/mux_data.h,
const struct pad_conf_entry core_padconf_array_essential_am572x_idk[] = {
...
-{VIN2A_D0, (M11 | PIN_INPUT)}, /* vin2a_d0.pr1_uart0_rxd */
-{VIN2A_D1, (M11 | PIN_OUTPUT)}, /* vin2a_d1.pr1_uart0_txd */
+{VIN2A_D0, (M11 | PIN_INPUT_PULLDOWN)}, /* vin2a_d0.pr1_uart0_rxd */
+{VIN2A_D1, (M11 | PIN_OUTPUT_PULLDOWN)}, /* vin2a_d1.pr1_uart0_txd */
...
}
and also try
const struct pad_conf_entry core_padconf_array_essential_am572x_idk[] = {
...
-{VIN2A_D0, (M11 | PIN_INPUT)}, /* vin2a_d0.pr1_uart0_rxd */
-{VIN2A_D1, (M11 | PIN_OUTPUT)}, /* vin2a_d1.pr1_uart0_txd */
+{VIN2A_D0, (M11 | PIN_INPUT_PULLUP)}, /* vin2a_d0.pr1_uart0_rxd */
+{VIN2A_D1, (M11 | PIN_OUTPUT_PULLUP)}, /* vin2a_d1.pr1_uart0_txd */
...
}
and recompile u-boot.Using compiled u-boot.img and MLO to boot system,but nothing change.
So why cause this situation,what configuration I didn't do ?
(3)I create sdcard using create-sdcard.sh in ti-processor-sdk-linux-rt-am57xx-evm-03.02.00.05/bin,and when I insert sdcard and boot the board the kernel hangs.There is some boot message in attach file.I also recompile kernel and u-boot but nothing change.
So I don't know what go wrong.
Please help me.
Thank you.