Jump to content
    

Не работает UART под linux на Zynq`e

Добрый день.

Не могу вывести данные через uart . ls /dev выдаёт наличие 2 uart : ttyPS0 и ttyPS1.

echo "1" >/dev/ttyPS0  выводит данные , а echo "1" >/dev/ttyPS1 нет.

Может быть кто сталкивался или знает где копать?

Share this post


Link to post
Share on other sites

А можно скриншот, как настроена коммутация? Оно соответствует нужным позициям пинов? т.е. сначала надо убедиться что коммутация верна, и что оно идет на правильные позиции выводов

Share this post


Link to post
Share on other sites

On 2/20/2022 at 6:05 PM, AVR said:

А можно скриншот, как настроена коммутация? Оно соответствует нужным позициям пинов? т.е. сначала надо убедиться что коммутация верна, и что оно идет на правильные позиции выводов

В fsbl работают оба Uarta.

zynq.png

Share this post


Link to post
Share on other sites

8 minutes ago, карамболь said:

может, в DTB выключен ?

Вроде бы включен. Я не знаю есть ли возможность посмотреть , что включено на работающем ядре?

13 minutes ago, карамболь said:

может, в DTB выключен ?

[email protected] {
            clock-names = "uart_clk", "pclk";
            clocks = <0x1 0x17 0x1 0x28>;
            compatible = "xlnx,xuartps", "cdns,uart-r1p8";
            device_type = "serial";
            interrupts = <0x0 0x1b 0x4>;
            linux,phandle = <0x13>;
            phandle = <0x13>;
            port-number = <0x0>;
            reg = <0xe0000000 0x1000>;
            status = "okay";
        };

        [email protected] {
            clock-names = "uart_clk", "pclk";
            clocks = <0x1 0x18 0x1 0x29>;
            compatible = "xlnx,xuartps", "cdns,uart-r1p8";
            device_type = "serial";
            interrupts = <0x0 0x32 0x4>;
            linux,phandle = <0x14>;
            phandle = <0x14>;
            port-number = <0x1>;
            reg = <0xe0001000 0x1000>;
            status = "okay";
        };
 

Share this post


Link to post
Share on other sites

18.02.2022 в 19:34, usonic сказал:

Добрый день.

Не могу вывести данные через uart . ls /dev выдаёт наличие 2 uart : ttyPS0 и ttyPS1.

echo "1" >/dev/ttyPS0  выводит данные , а echo "1" >/dev/ttyPS1 нет.

Может быть кто сталкивался или знает где копать?

А console куда пристегнута?

Покажите эту часть dts.

Share this post


Link to post
Share on other sites

tree.dts

On 3/4/2022 at 6:47 PM, faa said:

А console куда пристегнута?

Покажите эту часть dts.

 

tree.dts

Share this post


Link to post
Share on other sites

2 часа назад, usonic сказал:

В dts оба UART присутствуют. console на ttyPS0, выводу не мешает.

Может скорость и режим на приемной стороне ttyPS1 не те установлены?

Для диагностики нужен вывод команд

dmesg

stty -F /dev/ttyPS0 -a

stty -F /dev/ttyPS1 -a

 

 

Share this post


Link to post
Share on other sites

8 minutes ago, faa said:

В dts оба UART присутствуют. console на ttyPS0, выводу не мешает.

Может скорость и режим на приемной стороне ttyPS1 не те установлены?

Для диагностики нужен вывод команд

dmesg

stty -F /dev/ttyPS0 -a

stty -F /dev/ttyPS1 -a

 

 

[email protected]:~# stty -F /dev/ttyPS0 -a
speed 115200 baud; rows 24; columns 80; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 hupcl -cstopb cread clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon ixoff
-iuclc -ixany -imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon -iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
echoctl echoke

[email protected]:~# stty -F /dev/ttyPS1 -a
speed 115200 baud; rows 0; columns 0; line = 0;
intr = <undef>; quit = <undef>; erase = <undef>; kill = <undef>; eof = <undef>;
eol = <undef>; eol2 = <undef>; swtch = <undef>; start = <undef>; stop = <undef>;
susp = <undef>; rprnt = <undef>; werase = <undef>; lnext = <undef>;
flush = <undef>; min = 1; time = 5;
-parenb -parodd cs8 -hupcl -cstopb cread clocal -crtscts
ignbrk -brkint ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl -ixon -ixoff
-iuclc -ixany -imaxbel iutf8
-opost -olcuc -ocrnl -onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
-isig -icanon -iexten -echo -echoe -echok -echonl -noflsh -xcase -tostop -echoprt
-echoctl -echoke

 

Приёмная сторона - осциллограф.

Share this post


Link to post
Share on other sites

Вывод

dmesg

будет? Или все заработало?

Share this post


Link to post
Share on other sites

On 3/15/2022 at 8:06 AM, faa said:

Вывод

dmesg

будет? Или все заработало?

Не заработало!

[email protected]:~# dmesg
Booting Linux on physical CPU 0x0
Linux version 4.4.0-xilinx ([email protected]) (gcc version 4.9.2 (Sourcery CodeBench Lite 2015.05-17) ) #41 SMP PREEMPT Tue Sep 18 15:52:56 MSK 2018
CPU: ARMv7 Processor [413fc090] revision 0 (ARMv7), cr=18c5387d
CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
Machine model: Xilinx Zynq
cma: Reserved 16 MiB at 0x3b000000
Memory policy: Data cache writealloc
On node 0 totalpages: 245760
free_area_init_node: node 0, pgdat c05c6600, node_mem_map ef878000
  Normal zone: 1536 pages used for memmap
  Normal zone: 0 pages reserved
  Normal zone: 196608 pages, LIFO batch:31
  HighMem zone: 49152 pages, LIFO batch:15
PERCPU: Embedded 12 pages/cpu @ef855000 s19264 r8192 d21696 u49152
pcpu-alloc: s19264 r8192 d21696 u49152 alloc=12*4096
pcpu-alloc: [0] 0 [0] 1
Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 244224
Kernel command line: console=ttyPS0,115200 root=/dev/mmcblk1p2 rw earlyprintk rootfstype=ext4 rootwait devtmpfs.mount=0
PID hash table entries: 4096 (order: 2, 16384 bytes)
Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
Memory: 951872K/983040K available (4052K kernel code, 199K rwdata, 1412K rodata, 244K init, 195K bss, 14784K reserved, 16384K cma-reserved, 180224K highmem)
Virtual kernel memory layout:
    vector  : 0xffff0000 - 0xffff1000   (   4 kB)
    fixmap  : 0xffc00000 - 0xfff00000   (3072 kB)
    vmalloc : 0xf0800000 - 0xff800000   ( 240 MB)
    lowmem  : 0xc0000000 - 0xf0000000   ( 768 MB)
    pkmap   : 0xbfe00000 - 0xc0000000   (   2 MB)
    modules : 0xbf000000 - 0xbfe00000   (  14 MB)
      .text : 0xc0008000 - 0xc055e398   (5465 kB)
      .init : 0xc055f000 - 0xc059c000   ( 244 kB)
      .data : 0xc059c000 - 0xc05cdea0   ( 200 kB)
       .bss : 0xc05cdea0 - 0xc05fee44   ( 196 kB)
Preemptible hierarchical RCU implementation.
        Build-time adjustment of leaf fanout to 32.
        RCU restricting CPUs from NR_CPUS=4 to nr_cpu_ids=2.
RCU: Adjusting geometry for rcu_fanout_leaf=32, nr_cpu_ids=2
NR_IRQS:16 nr_irqs:16 16
slcr mapped to f0800000
L2C: platform modifies aux control register: 0x72360000 -> 0x72760000
L2C: DT/platform modifies aux control register: 0x72360000 -> 0x72760000
L2C-310 erratum 769419 enabled
L2C-310 enabling early BRESP for Cortex-A9
L2C-310 full line of zeros enabled for Cortex-A9
L2C-310 ID prefetch enabled, offset 1 lines
L2C-310 dynamic clock gating enabled, standby mode enabled
L2C-310 cache controller enabled, 8 ways, 512 kB
L2C-310: CACHE_ID 0x410000c8, AUX_CTRL 0x76760001
zynq_clock_init: clkc starts at f0800100
Zynq clock init
clocksource: ttc_clocksource: mask: 0xffff max_cycles: 0xffff, max_idle_ns: 537538477 ns
sched_clock: 16 bits at 54kHz, resolution 18432ns, wraps every 603975816ns
timer #0 at f0808000, irq=16
sched_clock: 64 bits at 333MHz, resolution 3ns, wraps every 4398046511103ns
clocksource: arm_global_timer: mask: 0xffffffffffffffff max_cycles: 0x4ce07af025, max_idle_ns: 440795209040 ns
Console: colour dummy device 80x30
Calibrating delay loop... 1332.01 BogoMIPS (lpj=6660096)
pid_max: default: 32768 minimum: 301
Mount-cache hash table entries: 2048 (order: 1, 8192 bytes)
Mountpoint-cache hash table entries: 2048 (order: 1, 8192 bytes)
CPU: Testing write buffer coherency: ok
CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
Setting up static identity map for 0x8280 - 0x82d8
CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
Brought up 2 CPUs
SMP: Total of 2 processors activated (2664.03 BogoMIPS).
CPU: All CPU(s) started in SVC mode.
devtmpfs: initialized
VFP support v0.3: implementor 41 architecture 3 part 30 variant 9 rev 4
clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
pinctrl core: initialized pinctrl subsystem
NET: Registered protocol family 16
DMA: preallocated 256 KiB pool for atomic coherent allocations
cpuidle: using governor ladder
cpuidle: using governor menu
hw-breakpoint: found 5 (+1 reserved) breakpoint and 1 watchpoint registers.
hw-breakpoint: maximum watchpoint size is 4 bytes.
zynq-ocm f800c000.ocmc: ZYNQ OCM pool: 256 KiB @ 0xf0880000
zynq-pinctrl 700.pinctrl: zynq pinctrl initialized
SCSI subsystem initialized
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
pps_core: LinuxPPS API ver. 1 registered
pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <[email protected]>
PTP clock support registered
EDAC MC: Ver: 3.0.0
FPGA manager framework
clocksource: Switched to clocksource arm_global_timer
NET: Registered protocol family 2
TCP established hash table entries: 8192 (order: 3, 32768 bytes)
TCP bind hash table entries: 8192 (order: 4, 65536 bytes)
TCP: Hash tables configured (established 8192 bind 8192)
UDP hash table entries: 512 (order: 2, 16384 bytes)
UDP-Lite hash table entries: 512 (order: 2, 16384 bytes)
NET: Registered protocol family 1
RPC: Registered named UNIX socket transport module.
RPC: Registered udp transport module.
RPC: Registered tcp transport module.
RPC: Registered tcp NFSv4.1 backchannel transport module.
hw perfevents: enabled with armv7_cortex_a9 PMU driver, 7 counters available
futex hash table entries: 512 (order: 3, 32768 bytes)
bounce: pool size: 64 pages
io scheduler noop registered
io scheduler deadline registered
io scheduler cfq registered (default)
dma-pl330 f8003000.dmac: Loaded driver for PL330 DMAC-241330
dma-pl330 f8003000.dmac:        DBUFF-128x8bytes Num_Chans-8 Num_Peri-4 Num_Events-16
e0000000.serial: ttyPS1 at MMIO 0xe0000000 (irq = 26, base_baud = 6249999) is a xuartps
e0001000.serial: ttyPS0 at MMIO 0xe0001000 (irq = 27, base_baud = 6249999) is a xuartps
console [ttyPS0] enabled
xdevcfg f8007000.devcfg: ioremap 0xf8007000 to f0860000
brd: module loaded
loop: module loaded
m25p80 spi0.0: found w25q256, expected n25q128a11
m25p80 spi0.0: failed to read ear reg
m25p80 spi0.0: w25q256 (65536 Kbytes)
3 ofpart partitions found on MTD device spi0.0
Creating 3 MTD partitions on "spi0.0":
0x000000000000-0x000000080000 : "qspi-boot"
0x000000080000-0x0000000a0000 : "qspi-bootenv"
0x0000000a0000-0x000000500000 : "qspi-bitstream"
libphy: MACB_mii_bus: probed
macb e000b000.ethernet eth0: Cadence GEM rev 0x00020118 at 0xe000b000 irq 29 (00:0a:35:00:01:22)
macb e000b000.ethernet eth0: attached PHY driver [Micrel KSZ9031 Gigabit PHY] (mii_bus:phy_addr=e000b000.etherne:00, irq=-1)
ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
usbcore: registered new interface driver usb-storage
e0002000.usb supply vbus not found, using dummy regulator
ci_hdrc ci_hdrc.0: EHCI Host Controller
ci_hdrc ci_hdrc.0: new USB bus registered, assigned bus number 1
ULPI transceiver vendor/product ID 0x0424/0x0007
Found SMSC USB3320 ULPI transceiver.
ULPI integrity check: passed.
ci_hdrc ci_hdrc.0: USB 2.0 started, EHCI 1.00
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 1 port detected
mousedev: PS/2 mouse device common for all mice
EDAC MC: ECC not enabled
Xilinx Zynq CpuIdle Driver started
sdhci: Secure Digital Host Controller Interface driver
sdhci: Copyright(c) Pierre Ossman
sdhci-pltfm: SDHCI platform and OF driver helper
sdhci-arasan e0101000.sdhci: No vmmc regulator found
sdhci-arasan e0101000.sdhci: No vqmmc regulator found
mmc0: SDHCI controller on e0101000.sdhci [e0101000.sdhci] using ADMA
sdhci-arasan e0100000.sdhci: No vmmc regulator found
sdhci-arasan e0100000.sdhci: No vqmmc regulator found
mmc1: SDHCI controller on e0100000.sdhci [e0100000.sdhci] using ADMA
usbcore: registered new interface driver usbhid
usbhid: USB HID core driver
nf_conntrack version 0.5.0 (15129 buckets, 60516 max)
ipip: IPv4 over IPv4 tunneling driver
ip_tables: (C) 2000-2006 Netfilter Core Team
NET: Registered protocol family 17
Registering SWP/SWPB emulation handler
of_cfs_init
of_cfs_init: OK
Waiting for root device /dev/mmcblk1p2...
mmc0: MAN_BKOPS_EN bit is not set
mmc0: new high speed MMC card at address 0001
mmcblk0: mmc0:0001 S40004 3.64 GiB
mmcblk0boot0: mmc0:0001 S40004 partition 1 4.00 MiB
mmcblk0boot1: mmc0:0001 S40004 partition 2 4.00 MiB
mmcblk0rpmb: mmc0:0001 S40004 partition 3 4.00 MiB
 mmcblk0: p1
mmc1: new high speed SDHC card at address b368
mmcblk1: mmc1:b368 00000 3.67 GiB
 mmcblk1: p1 p2
EXT4-fs (mmcblk1p2): recovery complete
EXT4-fs (mmcblk1p2): mounted filesystem with ordered data mode. Opts: (null)
VFS: Mounted root (ext4 filesystem) on device 179:34.
Freeing unused kernel memory: 244K (c055f000 - c059c000)
random: init urandom read with 10 bits of entropy available
init: hwclock main process (632) terminated with status 1
init: ureadahead main process (633) terminated with status 5
udevd[729]: starting version 175
tarantula_trk_mod=[0x43c40000:0xf0b00000][v1.1.0][Oct 29 2018][20:39:59]
=== g_par_buff ok
init: failsafe main process (1164) killed by TERM signal
macb e000b000.ethernet eth0: link up (1000/Full)
init: tty1 main process (1339) killed by TERM signal
 

Share this post


Link to post
Share on other sites

Ну тогда начнем от печки.

Что за плата?

С железом все в порядке?

Share this post


Link to post
Share on other sites

6 hours ago, faa said:

Ну тогда начнем от печки.

Что за плата?

С железом все в порядке?

Плата MYIR: MYC-C7Z010-4E1D-667-C.

С железом всё в порядке, в FSBL работают оба порта.

Share this post


Link to post
Share on other sites

6 часов назад, usonic сказал:

Плата MYIR: MYC-C7Z010-4E1D-667-C.

С железом всё в порядке, в FSBL работают оба порта.

посмотрите в загруженной системе

cat /proc/interrupts

есть ли прерывания по второму уарту при попытках передачи

далее сравните по возможности свои настройки с этим FSBL, раз там работает, то железо исправно, т.е. проблема в настройках

может не на те пины настроили или не сделали полную пересборку проекта

при сомнениях можно замапить блок регистров, который отвечает за настройки пинов на определенные функции и посмотреть, что там реально прописано, цифры и биты д.б. в даташите

и вот этот момент уточните:

e0000000.serial: ttyPS1 at MMIO 0xe0000000 (irq = 26, base_baud = 6249999) is a xuartps
e0001000.serial: ttyPS0 at MMIO 0xe0001000 (irq = 27, base_baud = 6249999) is a xuartps

крест по нумерации, знаю, что альтера грешит подобным с блоками gpio

вот для сравнения выхлоп похожего xilinx 

 

Share this post


Link to post
Share on other sites

19 hours ago, usonic said:

Плата MYIR: MYC-C7Z010-4E1D-667-C.

С железом всё в порядке, в FSBL работают оба порта.

вы уверены, что правильный Fsbl засунули в Boot.bin ? 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...