SOLVED,
I used a device to sniff UART between F133 and slave device,
Its RTS CTS line corrupted, so I removed it and everything ok now,
thanks for your kind help
SOLVED,
I used a device to sniff UART between F133 and slave device,
Its RTS CTS line corrupted, so I removed it and everything ok now,
thanks for your kind help
This is the output of your code, when the flow control enabled, there is no UART1 output even if CTS=0,
=============================================================
if I disable CRTSCTS flow control, it pushes data to UART1 but no RTS
SOLVED
I changed size from 504 to 11504 in the file,
then it pack the img file,
~/LC/Tina-Linux/device/config/chips/f133/configs/mq_r/sys_partition.fex
[partition]
name = boot-resource
size = 11504
downloadfile = "boot-resource.fex"
user_type = 0x8000
when I changed this bootlogo.bmp file from 200x120 to 800x480,
~/LC/Tina-Linux/target/allwinner/generic/boot-resource/boot-resource/bootlogo.bmp
pack command not pack the img file and the output was as;
test@test-virtual-machine:~/LC/Tina-Linux$ pack
--==========--
PACK_CHIP sun20iw1p1
PACK_PLATFORM tina
PACK_BOARD f133-mq_r
PACK_KERN
PACK_DEBUG uart0
PACK_SIG none
PACK_SECURE none
PACK_MODE normal
PACK_FUNC android
PACK_PROGRAMMER none
PACK_TAR_IMAGE none
PACK_TOPDIR /home/test/LC/Tina-Linux
--==========--
No kernel param, parse it from f133
copying tools file
copying configs file
storage_type value is 1
rm /home/test/LC/Tina-Linux/out/f133-mq_r/image/sys_partition_nor.fex
rm /home/test/LC/Tina-Linux/out/f133-mq_r/image/image_nor.cfg
copying boot resource
copying boot file
make user resource for : /home/test/LC/Tina-Linux/out/f133-mq_r/image/sys_partition.fex
handle partition user-res
no user resource partitions
APP_PART_DOWNLOAD_FILE = /home/test/LC/Tina-Linux/out/f133-mq_r/image/app.fex
Need size of filesystem
no data resource partitions
don't build dtbo ...
update_chip
sboot file Path=/home/test/LC/Tina-Linux/out/f133-mq_r/image/sboot.bin
script file Path=/home/test/LC/Tina-Linux/out/f133-mq_r/image/sys_config.bin
update:unable to open sboot file
script update sboot ok
pack boot package
GetPrivateProfileSection read to end
content_count=3
LICHEE_REDUNDANT_ENV_SIZE config in BoardConfig.mk
--mkenvimage create redundant env data!--
---redundant env data size 0x20000---
packing for tina linux
normal
mbr count = 4
partitation file Path=/home/test/LC/Tina-Linux/out/f133-mq_r/image/sys_partition.bin
mbr_name file Path=/home/test/LC/Tina-Linux/out/f133-mq_r/image/sunxi_mbr.fex
download_name file Path=/home/test/LC/Tina-Linux/out/f133-mq_r/image/dlinfo.fex
mbr size = 16384
mbr magic softw411
disk name=boot-resource
ERROR: dl file boot-resource.fex size too large
ERROR: filename = boot-resource.fex
ERROR: dl_file_size = 2336 sector
ERROR: part_size = 504 sector
update_for_part_info -1
ERROR: update mbr file fail
ERROR: update_mbr failed
Hi there
I can change the bootlogo.bmp with same size bmp picture,
But if I want to increase size to 5" lcd (800x480) its not works,
What should I do to increase its size?
Regards,
SOLVED,
I used a device to sniff UART between F133 and slave device,
Its RTS CTS line corrupted, so I removed it and everything ok now,
thanks for your kind help
This is the output of your code, when the flow control enabled, there is no UART1 output even if CTS=0,
=============================================================
if I disable CRTSCTS flow control, it pushes data to UART1 but no RTS
@q1215200171 在 【FAQ】全志D1芯片 uart测试用例(支持自发自收,板间收发,数据校验,收发时间统计) 中说:
ART_TES
How to test if RTS CTS lines working or not?
@kunyi
Thank you for your answer,
I am attaching board.dts file's relevant section, there is PG6 to PG9, Rx Tx RTS and CTS lines,
uart1_pins_a: uart1_pins@0 { /* For EVB1 board */
pins = "PG6", "PG7", "PG8", "PG9";
function = "uart1";
drive-strength = <10>;
bias-pull-up;
};
uart1_pins_b: uart1_pins { /* For EVB1 board */
pins = "PG6", "PG7", "PG8", "PG9";
function = "gpio_in";
};
Hi. I couldn't activate the RTS and CTS lines on the Mango pi sparrow F133 board. If I activate RTSCTS from the termios properties in the program (attr.c_cflag |= CRTSCTS;), it doesn't send data from the Tx line either.
If I deactivate RTSCTS (attr.c_cflag &= ~CRTSCTS;), it sends data but doesn't make the RTS line 0.
I'm watching the lines with a logic analyzer. I see that the CTS line is 0. But RTS doesn't change at all.
What am I missing?
board.dts
&uart1 {
uart-has-rtscts;
pinctrl-names = "default", "sleep";
pinctrl-0 = <&uart1_pins_a>;
pinctrl-1 = <&uart1_pins_b>;
status = "okay";
};
sun8iw20p1.dtsi
code uart1: uart@2500400 {
compatible = "allwinner,sun8i-uart";
device_type = "uart1";
reg = <0x0 0x02500400 0x0 0x400>;
interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
sunxi,uart-fifosize = <256>;
clocks = <&ccu CLK_BUS_UART1>;
clock-names = "uart1";
resets = <&ccu RST_BUS_UART1>;
uart1_port = <1>;
uart1_type = <4>;
status = "okay";_text
code
#include <stdio.h>
#include <stdlib.h>
#include <termios.h>
#include <unistd.h>
#include <sys/ioctl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
static struct termios oldterminfo;
void closeserial(int fd)
{
tcsetattr(fd, TCSANOW, &oldterminfo);
if (close(fd) < 0)
perror("closeserial()");
}
int openserial(char *devicename)
{
int fd;
struct termios attr;
if ((fd = open(devicename, O_RDWR)) == -1) {
perror("openserial(): open()");
return 0;
}
if (tcgetattr(fd, &oldterminfo) == -1) {
perror("openserial(): tcgetattr()");
return 0;
}
attr = oldterminfo;
attr.c_cflag |= B19200 | CRTSCTS | CLOCAL | CS7 | CSTOPB | PARENB;
attr.c_cflag &= ~PARODD;
//attr.c_cflag &= ~CRTSCTS;
attr.c_oflag = 0;
if (tcflush(fd, TCIOFLUSH) == -1) {
perror("openserial(): tcflush()");
return 0;
}
if (tcsetattr(fd, TCSANOW, &attr) == -1) {
perror("initserial(): tcsetattr()");
return 0;
}
return fd;
}
int setRTS(int fd, int level)
{
int status;
if (ioctl(fd, TIOCMGET, &status) == -1) {
perror("setRTS(): TIOCMGET");
return 0;
}
if (level)
status |= TIOCM_RTS;
else
status &= ~TIOCM_RTS;
if (ioctl(fd, TIOCMSET, &status) == -1) {
perror("setRTS(): TIOCMSET");
return 0;
}
return 1;
}
int main()
{
unsigned char msg1[] = { 'G','0','1', '\r', '\n' };
unsigned char msg0[] = { 'G','0','0', '\r', '\n' };
int fd;
char *serialdev = "/dev/ttyS1";
fd = openserial(serialdev);
if (!fd) {
fprintf(stderr, "Error while initializing %s.\n", serialdev);
return 1;
}
setRTS(fd, 0);
write(fd, &msg1, sizeof(msg1));
printf("1\r\n");
sleep(1); /* pause 1 second */
setRTS(fd, 1);
write(fd, &msg0, sizeof(msg0));
printf("0\r\n");
sleep(1); /* pause 1 second */
closeserial(fd);
return 0;
}