Hello Anton, I have made an EPICS7 implementation for RTEMS 5. Tested on the MVME6100 and with the QEMU-mvme3100 emulator from Michael Davidsaver (I currently have no free mvme3100).
Works well, will be available (hopefully) with EPICS 7.1 ;-) (But I am happy to share this with you already) For some days now I have been integrating cexp (and GeSys in a slimmed-down form) into EPICS rtemsInit. Still get exeptions when I call lkup. It seems to be very hardware depended. Yesterday I had a meeting with our colleagues from BESSY who also have many mvme3100 with Rtems4.9 and cexp+GeSys in use. We considered whether it would make sense that such a link-loader should generally be part of RTEMS. Heinz > On 14. Dec 2017, at 03:13, users-requ...@rtems.org wrote: > > Send users mailing list submissions to > users@rtems.org > > To subscribe or unsubscribe via the World Wide Web, visit > http://lists.rtems.org/mailman/listinfo/users > or, via email, send a message with subject or body 'help' to > users-requ...@rtems.org > > You can reach the person managing the list at > users-ow...@rtems.org > > When replying, please edit your Subject line so it is more specific > than "Re: Contents of users digest..." > > > Today's Topics: > > 1. RTEMS+Cexp+GeSys (Anton Derbenev) > > > ---------------------------------------------------------------------- > > Message: 1 > Date: Wed, 13 Dec 2017 21:13:18 -0500 > From: Anton Derbenev <aaderbe...@gmail.com> > To: users@rtems.org > Subject: RTEMS+Cexp+GeSys > Message-ID: > <CAPPOO76ZeQmRAN93Ay+kJP8KAthjpJ4qrFxoiiB5=of4ae1...@mail.gmail.com> > Content-Type: text/plain; charset="utf-8" > > Hello all, > > at NSLS-II, we have several dozen MVME3100 VME crates running RTEMS with > EPICS driver for various diagnostics and MRF timing hardware. The entire > setup was handily created quite some time ago by combining RTEMS 4.9 with > Cexp and GeSys to provide convenient booting and debugging capabilities. As > an effort to make the setup more up-to-date, I made an attempt to compose a > how-to which would describe how to successfully compile a bootable > RTEMS+Cexp+GeSys image. A nice "bonus" would be if that image also worked > when being run on a crate. > > It is not my first attempt as I already tried to do a similar thing for > RTEMS 4.10. While in both cases I found lots of work being put by the > community in helpful toolsets and documentation, the building process was > not as straightforward as one would imagine by reading the QuickStart > guide. There are many stumbles which, while probably being primitive in > most cases, could be annoying to a user who lacks core developer knowledge > and perspective. Some things can be mentioned _somewhere_ and can only be > found quickly by google-fu and/or luck. > > This time I reached for RTEMS 5 right away. Results which I achieved are > very similar to those which I had for RTEMS 4.10 - I can create a bootable > image which appears to have working GeSys and Cexp shell, but access to > "st.sys" fails along with other suspicious symptoms. > > Below is my "how-to" process which yields a bootable "rtems.ralf" file, and > results for our test MVME3100 system boot procedure. Some points > highlighted will probably be useful for further users' reference, and some > of them come from earlier conversations on the mailing list. My hope is > that someone knowledgeable will kindly review my steps and give some hint > why the image fails to work as expected. Perhaps it would be great to have > a step-by-step how-to as a part of documentation somewhere. > > ==================== > RTEMS 5 + Cexp + GeSys How-To > > 1. Get RTEMS source builder (rsb). As a part of its configuration, rsb will > try to fetch various sources from multiple locations. If rsb is being > configured in a protected environment (e.g. http proxy, firewalls, etc.), > source locations can be unavailable. Get rsb sources on a machine which can > freely download from git.rtems.org, github.com etc. with both http(s) and > git protocol: > > $ mkdir --parents ~/src/RTEMS > $ cd ~/src/RTEMS > $ git clone http://github.com/RTEMS/rtems-source-builder.git rsb > $ cd rsb/rtems > > Perform dry configuration and only download sources, as suggested here: > > https://lists.rtems.org/pipermail/users/2017-September/031647.html > > Choose profile as appropriate (rtems-powerpc for MVME3100): > > $ ../source-builder/sb-set-builder --dry-run --with-download > --without-error-report --without-release-url 5/rtems-powerpc > > 2. If firewalls and proxies are not a problem for you, skip this step. Even > though sources were pre-downloaded, rsb will try to fetch the rtems-tools > repository during the build process (even if --no-download is specified). > We need to make sure the repository is accessible or the lengthy build > process (~ hour on two cores) will fail. In our environment, git protocol > didn't work through http(s) proxy, so git config was modified: > > $ cd ~/src/RTEMS/rsb/rtems > $ nano sources/git/rtems-tools.git/.git/config > > Replace: > url = git://git.rtems.org/rtems-tools.git > with: > url = https://github.com/RTEMS/rtems-tools.git > > 3. rsb now has sources and patches downloaded. If you will build RTEMS on a > different host, move the entire folder to the build machine. > > My build setup: > > $ uname -a > Linux sandbox8 3.16.0-4-amd64 #1 SMP Debian 3.16.43-2+deb8u2 (2017-06-26) > x86_64 GNU/Linux > $ cat /etc/debian_version > 8.9 > > All further steps are performed on the build machine. > > 4. Run sb-check and install necessary packages if the check tool complains: > > $ cd ~/src/RTEMS/rsb > $ ./source-builder/sb-check > > Alas, sb-check doesn't check for everything. For example, the build process > can fail with something like: > > checking for python... /usr/bin/python > checking for python2.7... no > > This is resolved by being lucky in finding a similar issue discussed on the > mailing list. Additional packages may be needed, in the mentioned case it > was: > > $ sudo apt-get install python2.7-dev > > 5. Build rsb (takes a while, was an hour on my dual-core VM). Since sources > were pre-downloaded, specify "--no-download" (however rtems-tools will > still be fetched!): > > $ ../source-builder/sb-set-builder --no-download --prefix=$HOME/src/RTEMS/5 > 5/rtems-powerpc > > 6. Build rtems. First make sure rsb tools are in path: > > $ export PATH=$HOME/src/RTEMS/5/bin:$PATH > > Get RTEMS source: > > $ cd ~/src/RTEMS > $ mkdir kernel > $ cd kernel > $ git clone https://github.com/RTEMS/rtems.git > > Run bootstrap scripts to generate files which are missing in cloned > repository: > > $ cd rtems > $ ./bootstrap -c > $ ./bootstrap -p > $ ../../rsb/source-builder/sb-bootstrap > $ cd .. > > Configure and build RTEMS for the target: > > $ mkdir build-mvme3100 > $ cd build-mvme3100 > $ ../rtems/configure --enable-networking --enable-cxx --enable-rdbg > --enable-posix --prefix=$HOME/src/RTEMS/5 --target=powerpc-rtems5 > --enable-rtemsbsp=mvme3100 > $ make -j 8 > $ make install > > 7. Build Cexp. Two things which are not straightforward is getting all > submodules and running "make prep". > > $ cd ~/src/RTEMS > $ mkdir cexp > $ cd cexp > $ git clone https://github.com/till-s/cexpsh.git > $ cd cexpsh > $ git submodule update --init --recursive > > As with RTEMS bootstrap, we need to generate some missing files. > Stunningly, I didn't find it mentioned in cexpsh/INSTALL: > > $ make prep > > Now the code is ready to be configured and built. Use > "--enable-std-rtems-installdirs" > to perform installation on top of the previously built RTEMS tree: > > $ cd .. > $ mkdir build-mvme3100 > $ cd build-mvme3100 > $ ../cexpsh/configure --enable-std-rtems-installdirs > --with-rtems-top=$HOME/src/RTEMS/5 --host=powerpc-rtems5 > --enable-rtemsbsp=mvme3100 > $ make -j 8 > $ make install > > 8. Build GeSys. Another trickery here - before configuring, it is necessary > to build the ldep tool as mentioned in documentation. > > Get all GeSys sources and submodules: > > $ cd ~/src/RTEMS > $ mkdir gesys > $ cd gesys > $ git clone https://github.com/till-s/rtems-gesys.git > $ cd rtems-gesys > $ git submodule update --init --recursive > > As for other parts, generate missing files by running the bootstrap tool: > > $ ./bootstrap > > Another bootstrap is necessary for ldep: > > $ cd ldep > $ ./bootstrap > $ mkdir build > $ cd build > > Configure and install ldep to where all rsb stuff is: > > $ ../configure --prefix=$HOME/src/RTEMS/5 > $ make > $ make install > > Configure and install GeSys in the same tree where RTEMS and Cexp are by > using "--enable-std-rtems-installdirs". Note that $HOME/src/RTEMS/5/bin > must be in PATH: > > $ cd ~/src/RTEMS/gesys > $ mkdir build-mvme3100 > $ cd build-mvme3100 > $ ../rtems-gesys/configure --enable-std-rtems-installdirs > --with-rtems-top=$HOME/src/RTEMS/5 --host=powerpc-rtems5 > --enable-rtemsbsp=mvme3100 > $ make -j 8 > $ make install > > 9. Behold the build binaries: > > $ cd ~/src/RTEMS/5/powerpc-rtems5/bin > $ ls > ar ld nm objdump readelf rtems.ralf st.sys > as ld.bfd objcopy ranlib rtems.exe strip > > rtems.ralf is the thing. It worth mentioning that none of .obj files loaded > in the "st.sys" are present (telnetd.obj, monitor.obj etc.) > > ==================== > Boot the image > > I put the resulting image in our VME timing test setup which successfully > boots and runs RTEMS 4.9. Boot procedure is DHCP with MOTLoad netBoot. > "rtems.ralf" was renamed to "rtems.boot" for booting purposes. Boot > sequence: > > ******************** > Copyright(C)2008-2013,Emerson Network Power-Embedded Computing,Inc. > All Rights Reserved > Copyright Motorola Inc. 1999-2007, All Rights Reserved > MOTLoad RTOS Version 2.0, PAL Version 1.2 RM04 > Wed Nov 6 17:17:43 MST 2013 > > MPU-Type =MPC8540 > MPU-Int Clock Speed =666MHz > MPU-CCB Clock Speed =333MHz > MPU-DDR Clock Speed =166MHz > MPU-PCI Clock Speed =66MHz, PCI, 64-bit > MPU-Int Cache(L2) Enabled, 256KB, L2CTL =A8000300 > > Reset/Boot Vector =Flash0 > > Local Memory Found =10000000 (&268435456) > User Download Buffer =0159D000:0179CFFF > > MVME3100> bootmem=malloc 0x500000 > > return = 0193D000 (&26464256) > errno = 00000000 > MVME3100> netBoot -d/dev/enet0 -v -abootmem -p -h -u > Network Loading from: /dev/enet0 > > Locating BOOTP Server... Found It! > > Client IP Address = 10.0.1.104 > Server IP Address = 10.0.1.1 > Gateway IP Address = 0.0.0.0 > Subnet IP Address Mask = 255.255.255.0 > Boot File Name = rtems-5/rtems.boot > Load Address = 0193D000 > Buffer Size = ffffffff > > Network Boot File Load Start - Press <ESC> to Bypass, <SPC> to Continue > > Network Boot File Load in Progress - Press <CTRL-C> to Abort[]>>>> > ... > Bytes Received =&4886264, Bytes Loaded =&4886264 > Bytes/Second =&488626, Elapsed Time =10 Second(s) > > Execution Halted on Request > MV----------------------------------------- > Welcome to rtems-5.0.0 (PowerPC/Generic (no FPU)/mvme3100) > BSP: mvme3100, CVS Release ($Name$) > CPU 0x8020 - rev 0x20 > Additionnal boot options are H > Initial system stack at 14c9980 > Software IRQ stack starts at 14c9a90 with size 16384 > Going to start PCI buses scanning and initialization > Board Type: MVME3100-1152 (S/N E10EA0D) > External (=PCI Bus) Clock Freq : 66666666 Hz > Core Complex Bus (CCB) Clock Freq: 333333330 Hz > CPU Clock Freq: 133333332 Hz > Ethernet 0 EC:9E:CD:0E:16:5B > Ethernet 1 EC:9E:CD:0E:16:5C > Ethernet 2 EC:9E:CD:0E:16:5D > Number of PCI buses found is : 2 > BUS:SLOT:FUN VENDOR-DEV_ID: COMMAND STATUS BASE_ADDR0 BASE_ADDR1 IRQ_PIN > -> IRQ_LINE > 0:0x00:0 0x1057-0x0008: 0x0006 0x20b0 0x80000000 0x00000000 0 > -> 0 (=0x00) > 0:0x11:0 0x10e3-0x0148: 0x0146 0x02b0 0x80100004 0x00000000 1 > -> 0 (=0x00) > 0:0x12:0 0x10b5-0x6520: 0x0147 0x02b0 0x00000000 0x00000000 0 > -> 0 (=0x00) > 0:0x14:0 0x1095-0x3124: 0x01c7 0x02b0 0x80300004 0x00000000 1 > -> 2 (=0x02) > 1:0x00:0 0x10b5-0x9030: 0x0142 0x0290 0x80200000 0x00000000 1 > -> 4 (=0x04) > Memory: 268435456 bytes > Cleared PCI errors: pci_stat was 0x20b0 > OpenPIC Version 1.2 (1 CPUs and 56 IRQ sources) at 0x3775135744 > OpenPIC Vendor 0 (Unknown), Device 0 (Unknown), Stepping 0 > OpenPIC timer frequency is 41666666 Hz > MSR is 0x00001000, TCR 0x04000000 > ----------------------------------------- > Exit from bspstart > libi2c: Library not initialized > Registering mpc8540 i2c bus driver :No such file or directory > Tundra Tsi148 PCI-VME bridge detected at 0x80100000, IRQ 0 > Tsi148 Outbound Ports: > Port VME-Addr Size PCI-Adrs Mode: > 0: 0x20000000 0x0e000000 0xc0000000 A32, SUP, D32, SCT > 1: 0x00000000 0x00ff0000 0xcf000000 A24, SUP, D32, SCT > 2: 0x00000000 0x00010000 0xcfff0000 A16, SUP, D32, SCT > 7: 0x00000000 0x01000000 0xce000000 CSR, SUP, D32, SCT > Tsi148 Inbound Ports: > Port VME-Addr Size PCI-Adrs Mode: > 0: 0xc0000000 0x10000000 0x00000000 A32, PGM, DAT, SUP, USR, MBLT, BLT > vmeTsi148 IRQ manager: looking for registers on VME... > Trying to find CSR on VME... > vmeTsi148 - IRQ manager using VME CSR to flush FIFO > Registering /dev/console as minor 0 (==/dev/ttyS0) > Welcome to RTEMS 5.0.0 GeSys > This system was built on 20171213EST19:00:39 > Installing TIOCGWINSZ line discipline: ok. > To skip initialization, press a key now... > bootpc_init: using network interface 'tse1' > bootpc hw address is ec:9e:cd:e:16:5b > My ip address is 10 .0 .1 .104 > Time Server is 10 .0 .1 .1 > Domain name is cs.nsls2.local > Boot file is rtems-5/rtems.boot > Command line is IOCNAME=timing > Subnet mask is 255 .255 .255 .0 > Server ip address is 10 .0 .1 .1 > Gateway ip address is 0 .0 .0 .0 > Log server ip address is 10 .0 .1 .1 > bootpc_adjust_interface: add net route, error=114 > Trying to synchronize NTP...OK > Trying symfile 'BUILTIN', system script 'st.sys' > 'st.sys': > opening script file: No such file or directory > Type 'cexpsh.help()' for help (no quotes) > ******************** > > There are several suspicious points: PCI buses scanning not reporting > anything, i2c library/driver errors, bootpc_adjust_interface error, and of > course "st.sys" script not being found. Peculiar enough, I can perform NFS > mount and run a script from there. It doesn't work smoothly however and > nfsMountsShow output is odd: > > Cexp>nfsInit(0,0) > RTEMS-NFS, Till Straumann, Stanford/SLAC/SSRL 2002, See LICENSE file for > licensing info. > 0x00000000 (0) > Cexp>nfsMount("10.0.1.1","/srv/tftp/rtems-5","/common") > Trying to mount 10.0.1.1:/srv/tftp/rtems-5 on /common > RTEMS-RPCIOD, Till Straumann, Stanford/SLAC/SSRL 2002, See LICENSE file for > licensing info. > 0x00000000 (0) > Cexp>nfsMountsShow(0) > Currently Mounted NFS: > 10.0.1.1:/srv/tftp/rtems-5 on / > 0x00000000 (0) > > ==================== > Conclusion > > To conclude that, I'd be happy to hear any suggestions and insights to the > procedure described. It might be something as obvious as missing an option > somewhere. It would be also great if anyone who has a working > RTEMS+Cexp+GeSys setup would share instructions on how to make it work > properly. > > Best regards, > Anton A. Derbenev > NSLS-II > Brookhaven National Laboratory > -------------- next part -------------- > An HTML attachment was scrubbed... > URL: > <http://lists.rtems.org/pipermail/users/attachments/20171213/d3858adf/attachment.html> > > ------------------------------ > > Subject: Digest Footer > > _______________________________________________ > users mailing list > users@rtems.org > http://lists.rtems.org/mailman/listinfo/users > > ------------------------------ > > End of users Digest, Vol 135, Issue 3 > *************************************
smime.p7s
Description: S/MIME cryptographic signature
_______________________________________________ users mailing list users@rtems.org http://lists.rtems.org/mailman/listinfo/users