Experimental Physics and Industrial Control System
hi chengsn,
That doesn't look so bad. Unfortunately, I don't have an MVME2500 at the moment on which I can reproduce the whole thing.
I have built telnet access into the rtems_init:
#ifndef RTEMS_LEGACY_STACK
// setup own ntp-client to get time
/telnet
{
char line[LINE_SIZE];
int fid[3], save_fid[3];
printf("info: pty dev name = %s\n", name);
save_fid[1] = dup2(1,1);
fid[1] = dup2( fileno(stdout), 1);
if (fid[1] == -1 ) printf("Can't dup stdout\n");
save_fid[2] = dup2(2,2);
fid[2] = dup2( fileno(stderr), 2);
if (fid[2] == -1 ) printf("Can't dup stderr\n");
const char *prompt = "tIocSh> ";
while (1) {
fputs(prompt, stdout);
fflush(stdout);
/* telnet close not detected ??? tbd */
if (fgets(line, LINE_SIZE, stdin) == NULL) {
dup2(save_fid[1],1);
dup2(save_fid[2],2);
return;
}
if (line[strlen(line)-1] == '\n') line[strlen(line)-1] = 0;
if (!strncmp( line, "bye",3)) {
printf( "%s", "Will end session\n");
dup2(save_fid[1],1);
dup2(save_fid[2],2);
return;
}
iocshCmd(line);
}
}
You could try connecting to the system with "telnet 10.1.201.13" and you
should then be in an EPICS shell.
To exit, type "bye" (not CTRL-], otherwise the shell is blocked).
Viele Grüße
Heinz Junkes
--
Experience directly varies with equipment ruined.
> On 16. Jun 2022, at 12:14, chengsn via Tech-talk <tech-talk at aps.anl.gov> wrote:
>
> Sorry, I got something wrong, the EPICS 7 version I used was downloaded from github, and just now I re-tryed the base-7.0.6.1 version: $ wget https://epics.anl.gov/download/base/base-7.0.6.1.tar.gz.
>
> Then, I ran the exampleApp :
>
> ...
>
> ***** Until now no NTP support in RTEMS 5 with rtems-libbsd *****
>
> ***** Ask ntp server once... *****
> time from ntp : 06/16/22 09:59:35.000001019 UTC
>
> ***** Setting up file system *****
> ***** Initializing NFS *****
> nfsMount("10.1.201.31", "/tftpboot", "/tftpboot")
> Mount 10.1.201.31:/tftpboot on /tftpboot
> check for time registered , C++ initialization ...
> ***** Preparing EPICS application *****
> chdir("/tftpboot/mv2500/")
> ***** Starting EPICS application *****
> #< envPaths
> ## Register all support components
> dbLoadDatabase("dbd/test.dbd")
> test_registerRecordDeviceDriver(pdbbase)
> ## Load record instances
> dbLoadTemplate("db/user.substitutions")
> dbLoadRecords("db/testVersion.db", "user=chengsn")
> dbLoadRecords("db/dbSubExample.db", "user=chengsn")
> #var mySubDebug 1
> #traceIocInit
> iocInit
> Starting iocInit
> ############################################################################
> ## EPICS R7.0.6.1
> ## Rev. 2022-06-16T17:52+0800
> ############################################################################
> iocRun: All initialization complete
> ## Start any sequence programs
> #seq(sncExample, "user=chengsn")
> >
> ***** Primary Network interface : tsec0 *****
> all out ---> interface = tsec2
> all out ---> reason = IPV4LL
> all out ---> pid = 1
> all out ---> ifmetric = 203
> all out ---> ifwireless = 0
> all out ---> ifflags = 4294936643
> all out ---> ifmtu = 1500
> all out ---> interface_order = tsec0 tsec2 tsec1
> all out ---> if_up = true
> all out ---> if_down = false
> all out ---> new_ip_address = 169.254.57.184
> all out ---> new_subnet_cidr = 16
> all out ---> new_network_number = 169.254.0.0
> all out ---> new_subnet_mask = 255.255.0.0
> all out ---> new_broadcast_address = 169.254.255.255
>
> ***** Primary Network interface : tsec0 *****
> all out ---> interface = tsec0
> all out ---> reason = RENEW
> all out ---> pid = 1
> all out ---> ifmetric = 201
> all out ---> ifwireless = 0
> all out ---> ifflags = 4294936643
> all out ---> ifmtu = 1500
> all out ---> interface_order = tsec0 tsec2 tsec1
> all out ---> if_up = true
> all out ---> if_down = false
> all out ---> old_ip_address = 10.1.201.13
> all out ---> old_subnet_cidr = 24
> all out ---> old_broadcast_address = 10.1.201.255
> all out ---> old_network_number = 10.1.201.0
> all out ---> old_server_name = 10.1.201.31
> all out ---> old_subnet_mask = 255.255.255.0
> all out ---> old_routers = 10.1.201.1
> all out ---> old_dhcp_lease_time = 600
> all out ---> old_dhcp_message_type = 5
> all out ---> old_dhcp_server_identifier = 10.1.201.31
> all out ---> old_dhcp_renewal_time = 300
> all out ---> old_dhcp_rebinding_time = 525
> all out ---> new_ip_address = 10.1.201.13
> all out ---> new_subnet_cidr = 24
> all out ---> new_broadcast_address = 10.1.201.255
> all out ---> new_network_number = 10.1.201.0
> all out ---> new_server_name = 10.1.201.31
> all out ---> new_subnet_mask = 255.255.255.0
> all out ---> new_routers = 10.1.201.1
> all out ---> new_dhcp_lease_time = 600
> all out ---> new_dhcp_message_type = 5
> all out ---> new_dhcp_server_identifier = 10.1.201.31
> all out ---> new_dhcp_renewal_time = 300
> all out ---> new_dhcp_rebinding_time = 525
>
>
> But I cannot input anything in the shell.
>
> Is this normal?
>
>
>
> -----原始邮件-----
> 发件人:chengsn at ihep.ac.cn
> 发送时间:2022-06-16 17:14:33 (星期四)
> 收件人: "tech-talk at aps.anl.gov" <tech-talk at aps.anl.gov>
> 抄送:
> 主题: Some Questions With RTEMS 5 in MVME2502
>
> Hello All,
>
> I followed the steps at EPICS with RTEMS, compiled RTEMS 5, and ran an example hello on MVME2502. The dtb file was generated from the linux source file: $ dtc -I dts -O dtb linux/arch/powerpc/boot/dts/fsl/mvme2500.dts -o mvme2500.dtb
>
> If I didn't change the macro definition #define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER to #define CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER in the file test.c, the OUTPUT is:
>
>
>
> Bytes transferred = 12331 (302b hex)
> WARNING: adjusting available memory to 30000000
> ## Booting kernel from Legacy Image at 01000000 ...
> Image Name: hello
> Created: 2022-06-09 15:06:14 UTC
> Image Type: PowerPC Linux Kernel Image (gzip compressed)
> Data Size: 51612 Bytes = 50.4 KiB
> Load Address: 00004000
> Entry Point: 00004000
> Verifying Checksum ... OK
> ## Flattened Device Tree blob at 00c00000
> Booting using the fdt blob at 0xc00000
> Uncompressing Kernel Image ... OK
> ft_fixup_l2cache: FDT_ERR_NOTFOUND
> ?H?@?LR???r????I?C?=GC?c?
>
>
> Then, I compiled EPICS base 7.0.6.1, made a EPICS exampleApp test, ran the image file bin/RTEMS-qoriq_e500/test.img. The OUTPUT is:
>
>
>
> WARNING: adjusting available memory to 30000000
>
> ## Booting kernel from Legacy Image at 01000000 ...
> Image Name: test
> Created: 2022-06-08 16:51:21 UTC
> Image Type: PowerPC Linux Kernel Image (gzip compressed)
> Data Size: 2734725 Bytes = 2.6 MiB
> Load Address: 00004000
> Entry Point: 00004000
> Verifying Checksum ... OK
> ## Flattened Device Tree blob at 00c00000
> Booting using the fdt blob at 0xc00000
> Uncompressing Kernel Image ... OK
> ft_fixup_l2cache: FDT_ERR_NOTFOUND
> ?C???)???G?}[k???C8V?o?????????????k???J?G&k)?J?gb!?CruB??????g?s ?C1H?cbjR?C?b???c??=?????????C1H?cbjR?C?b???c??=???????? ?C1H?cbjR?C?b???c??=?????????C1H?cbjR?C?b???c??=???????? ?C1H?cbjR?C?b???c??=????????1b?R?W?jR?C?b???c?????gb
>
>
>
> So, I had to change the macro definition #define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER to #define CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER in the file base/modules/libcom/RTEMS/posix/rtems_config.c.
>
> Did I do something wrong?
>
> After recompiling EPICS and making the exampleApp, the IOC started to get the ip through DHCP. I set some file paths in the rtems_init.c file, but there was some other information after the IOC initialization was completed:
>
>
>
> diff --git a/modules/libcom/RTEMS/posix/rtems_init.c b/modules/libcom/RTEMS/posix/rtems_init.c
> index 403cd0785..d7886b6ab 100644
> --- a/modules/libcom/RTEMS/posix/rtems_init.c
> +++ b/modules/libcom/RTEMS/posix/rtems_init.c
> @@ -97,10 +97,10 @@ epicsEventId dhcpDone;
> * may provide by dhcp/bootp
> * or environments from the "BIOS" like u-boot, motboot etc.
> */
> -char rtemsInit_NTP_server_ip[16] = "";
> -char bootp_server_name_init[128] = "[email protected]:/epics";
> -char bootp_boot_file_name_init[128] = "/epics/myExample/bin/RTEMS-beatnik/myExample.boot";
> -char bootp_cmdline_init[128] = "/epics/myExample/iocBoot/iocmyExample/st.cmd";
> +char rtemsInit_NTP_server_ip[16] = "10.1.201.31";
> +char bootp_server_name_init[128] = "10.1.201.31:/tftpboot";
> +char bootp_boot_file_name_init[128] = "/tftpboot/mv2500/bin/RTEMS-qoriq_e500/test.img";
> +char bootp_cmdline_init[128] = "/tftpboot/mv2500/iocBoot/ioctest/st.cmd";
>
> struct in_addr rtems_bsdnet_bootp_server_address;
> /* TODO check rtems_bsdnet_bootp_cmdline */
>
>
>
> some OUTPUT:
>
> MVME2500=> run epicsTest
>
> Speed: 1000, full duplex
> Using eTSEC1 device
> TFTP from server 10.1.201.31; our IP address is 10.1.201.125
> Filename 'mv2500/bin/RTEMS-qoriq_e500/test.img'.
> Load address: 0x1000000
> Loading: #################################################################
> #################################################################
> #######
> done
> Bytes transferred = 1997059 (1e7903 hex)
> Speed: 1000, full duplex
> Using eTSEC1 device
> TFTP from server 10.1.201.31; our IP address is 10.1.201.125
> Filename 'mvme2500.dtb'.
> Load address: 0xc00000
> Loading: #
> done
> Bytes transferred = 12331 (302b hex)
> WARNING: adjusting available memory to 30000000
> ## Booting kernel from Legacy Image at 01000000 ...
> Image Name: test
> Created: 2022-06-08 14:23:06 UTC
> Image Type: PowerPC Linux Kernel Image (gzip compressed)
> Data Size: 1996995 Bytes = 1.9 MiB
> Load Address: 00004000
> Entry Point: 00004000
> Verifying Checksum ... OK
> ## Flattened Device Tree blob at 00c00000
> Booting using the fdt blob at 0xc00000
> Uncompressing Kernel Image ... OK
> ft_fixup_l2cache: FDT_ERR_NOTFOUND
> WARNING: OS Clock time was read before being set.
> Using 1990-01-02 00:00:00.000000 UTC
>
> initConsole --- Info ---
> stdin: fileno: 0, ttyname: /dev/console
> stdout: fileno: 1, ttyname: /dev/console
> stderr: fileno: 2, ttyname: /dev/console
> tcgetattr failed: Not a character device
> time set to : 04/14/14 07:30:06.000000839 UTC
> Startup.
> epicsThreadSetPriority called by non epics thread
>
> ***** RTEMS Version: rtems-5.0.0 (PowerPC/Generic (E500/float-gprs/SPE)/qoriq_e500) *****
>
> ***** Initializing network (libbsd, dhcpcd) *****
> nexus0: <RTEMS Nexus device>
> ofwbus0: <Open Firmware Device Tree> on nexus0
> ...
>
> -------------- IFCONFIG -----------------
> tsec0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
> options=8000b<RXCSUM,TXCSUM,VLAN_MTU,LINKSTATE>
> ether ec:9e:cd:13:47:66
> inet6 fe80::ee9e:cdff:fe13:4766%tsec0 prefixlen 64 scopeid 0x1
> inet 10.1.201.13 netmask 0xffffff00 broadcast 10.1.201.255
> nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
> media: Ethernet autoselect (1000baseT <full-duplex>)
> status: active
> tsec1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
> options=8000b<RXCSUM,TXCSUM,VLAN_MTU,LINKSTATE>
> ether ec:9e:cd:13:47:67
> inet6 fe80::ee9e:cdff:fe13:4767%tsec1 prefixlen 64 scopeid 0x2
> nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
> media: Ethernet autoselect (none)
> status: no carrier
> tsec2: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
> options=b<RXCSUM,TXCSUM,VLAN_MTU>
> ether ec:9e:cd:13:47:68
> inet6 fe80::ee9e:cdff:fe13:4768%tsec2 prefixlen 64 scopeid 0x3
> nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
> lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
> options=680003<RXCSUM,TXCSUM,LINKSTATE,RXCSUM_IPV6,TXCSUM_IPV6>
> inet 127.0.0.1 netmask 0xffffff00
> inet6 ::1 prefixlen 128
> inet6 fe80::1%lo0 prefixlen 64 scopeid 0x4
> nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
> groups: lo
> -------------- NETSTAT ------------------
> Routing tables
>
> Internet:
> Destination Gateway Flags Netif Expire
> default 10.1.201.1 UGS tsec0
> 10.1.201.0/24 link#1 U tsec0
> 10.1.201.13 link#1 UHS lo0
> 127.0.0.1 link#4 UH lo0
>
> Internet6:
> Destination Gateway Flags Netif Expire
> ::1 link#4 UH lo0
> fe80::%tsec0/64 link#1 U tsec0
> fe80::ee9e:cdff:fe13:4766%tsec0 link#1 UHS lo0
> fe80::%tsec1/64 link#2 U tsec1
> fe80::ee9e:cdff:fe13:4767%tsec1 link#2 UHS lo0
> fe80::%tsec2/64 link#3 U tsec2
> fe80::ee9e:cdff:fe13:4768%tsec2 link#3 UHS lo0
> fe80::%lo0/64 link#4 U lo0
> fe80::1%lo0 link#4 UHS lo0
>
> ***** Until now no NTP support in RTEMS 5 with rtems-libbsd *****
>
> ***** Ask ntp server once... *****
> debug: tsec0: sending ARP announce (2 of 2)
> debug: tsec2: sending DISCOVER (xid 0xa096e1f), next in %0.1f seconds
> time from ntp : 06/15/22 06:51:49.000000839 UTC
>
> ***** Setting up file system *****
> ***** Initializing NFS *****
> nfsMount("10.1.201.31", "/tftpboot", "/tftpboot")
> Mount 10.1.201.31:/tftpboot on /tftpboot
> check for time registered , C++ initialization ...
> ***** Preparing EPICS application *****
> chdir("/tftpboot/mv2500/iocBoot/ioctest/")
> ***** Starting EPICS application *****
> #< envPaths
> ## Register all support components
> dbLoadDatabase("../../dbd/test.dbd")
> test_registerRecordDeviceDriver(pdbbase)
> ## Load record instances
> #dbLoadTemplate("db/user.substitutions")
> dbLoadRecords("../../db/testVersion.db", "user=chengsn")
> dbLoadRecords("../../db/circle.db", "user=chengsn")
> dbLoadRecords("../../db/dbSubExample.db", "user=chengsn")
> #var mySubDebug 1
> #traceIocInit
> iocInit
> Starting iocInit
> ############################################################################
> ## EPICS R7.0.6.2-DEV
> ## Rev. R7.0.6.1-103-g3fadf4a26cfe33dcb9eb-dirty
> ############################################################################
> iocRun: All initialization complete
> ## Start any sequence programs
> #seq(sncExample, "user=chengsn")
> RTEMShost> tsec2: sending DISCOVER (xid 0xa096e1f), next in 31.1 secondstimed outallowing 8 seconds for IPv4LL timeouttsec2: probing for an IPv4LL addresstsec2: checking for 169.254.92.20tsec2: sending ARP probe (1 of 3), next in 1.6 secondstsec2: sending ARP probe (2 of 3), next in 1.7 secondstsec2: sending ARP probe (3 of 3), next in 2.0 secondstsec2: using IPv4LL address 169.254.92.20tsec2: adding IP address 169.254.92.20/16tsec0: adding host route to 10.1.201.13 via 127.0.0.1tsec0: ipv4_addroute: mtsec0: adding route to 10.1.201.0/24tsec0: ipv4_addroute: mtsec2: adding host route to 169.254.92.20 via 127.0.0.1tsec2: ipv4_addroute: mtsec2: adding route to 169.254.0.0/16tsec2: ipv4_addroute: mtsec2: writing lease `/var/db/dhcpcd-tsec2.lease'tsec2: executing `ioc boot' IPV4LL
> dhcpcd ---> 'interface=tsec2'
> 'interface' = 'tsec2'
> dhcpcd ---> 'reason=IPV4LL'
> 'reason' = 'IPV4LL'
> dhcpcd ---> 'pid=1'
> dhcpcd ---> 'ifmetric=203'
> dhcpcd ---> 'ifwireless=0'
> dhcpcd ---> 'ifflags=4294936643'
> dhcpcd ---> 'ifmtu=1500'
> dhcpcd ---> 'interface_order=tsec0 tsec2 tsec1'
> dhcpcd ---> 'if_up=true'
> dhcpcd ---> 'if_down=false'
> dhcpcd ---> 'new_ip_address=169.254.92.20'
> dhcpcd ---> 'new_subnet_cidr=16'
> dhcpcd ---> 'new_network_number=169.254.0.0'
> dhcpcd ---> 'new_subnet_mask=255.255.0.0'
> dhcpcd ---> 'new_broadcast_address=169.254.255.255'
> tsec2: sending ARP announce (1 of 2), next in 2.0 secondstimed outtsec2: sending ARP announce (2 of 2)tsec2: soliciting a DHCP leasetsec2: sending DISCOVER (xid 0x614c417a), next in 3.6 secondstsec2: sending DISCOVER (xid 0x614c417a), next in 7.3 secondstsec2: sending DISCOVER (xid 0x614c417a), next in 15.5 secondstsec2: sending DISCOVER (xid 0x614c417a), next in 32.5 secondstsec2: sending DISCOVER (xid 0x614c417a), next in 63.6 secondstsec2: sending DISCOVER (xid 0x614c417a), next in 63.5 secondstsec2: sending DISCOVER (xid 0x614c417a), next in 63.6 secondstsec2: sending DISCOVER (xid 0x614c417a), next in 63.9 secondstsec0: renewing lease of 10.1.201.13tsec0: rebind in 225 seconds, expire in 300 secondstsec0: sending REQUEST (xid 0x504868fd), next in 4.5 secondstsec0: acknowledged 10.1.201.13 from 10.1.201.31 `10.1.201.31'tsec0: leased 10.1.201.13 for 600 secondstsec0: renew in 300 seconds, rebind in 525 secondstsec0: IP address 10.1.201.13/24 already existstsec0: adding host route to 10.1.201.13 via 127.0.0.1tsec0: ipv4_addroute: mtsec0: adding route to 10.1.201.0/24tsec0: ipv4_addroute: mtsec2: adding host route to 169.254.92.20 via 127.0.0.1tsec2: ipv4_addroute: mtsec2: adding route to 169.254.0.0/16tsec2: ipv4_addroute: mtsec0: writing lease `/var/db/dhcpcd-tsec0.lease'tsec0: executing `ioc boot' RENEW
>
>
> Then, the IOC will keep restarting...
>
> What should I do to get the IOC working properly?
>
>
>
> Best regards,
>
> chengsn
>
>
- Replies:
- Re: Re: Some Questions With RTEMS 5 in MVME2502 chengsn via Tech-talk
- References:
- Some Questions With RTEMS 5 in MVME2502 chengsn via Tech-talk
- Re: Some Questions With RTEMS 5 in MVME2502 chengsn via Tech-talk
- Navigate by Date:
- Prev:
Re: ADEiger R3-4 EIGER1 param=high_voltage/state Mark Rivers via Tech-talk
- Next:
EPICS Collaboration Meeting September 2022 in Ljubljana Rok Šabjan via Tech-talk
- Index:
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
<2022>
2023
2024
- Navigate by Thread:
- Prev:
Re: Some Questions With RTEMS 5 in MVME2502 chengsn via Tech-talk
- Next:
Re: Re: Some Questions With RTEMS 5 in MVME2502 chengsn via Tech-talk
- Index:
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
<2022>
2023
2024